MOD: MultiPlayer Boti - Manuál
30.01.2007 - 21:48,
(Autor: tomoxm)
MANUÁL - MULTIPLAYEROVÍ BOTI



I. ÚVOD

1.1 Předmluva

Toto je manuál pro jv_map’s multiplayer boty do hry MOHAA, verze 1.0. Tento manuál popisuje, jak je umožněna podpora botů ve vašich mapách, jak používat konzole ke kontrole botů, a jak je možno použít vlastní modifokace. Když se vám bude zdát tento manuál nesrozumitelný nebo budete mýt nějaké otázky, (prozkoumejte řádky skriptu jv_map.)

1.2 Kompatibilita botů

Multiplayeroví boti jsou vyvýjeni pro MOHAA, ne pro Spearhead a podobné hry. Ikdyž některé testy se Spearheadem dopadly dobře, tato verze zůstává nepodporována. Boti mohou být přidáni do kterékoli mapy, pokud máte soubor .map. Tím se myslí, že mohou být přidáni do (vašich) uživatelských map, ne do původních, které jsou ve hře.

1.2 Ve vývoji

Pamatujte, že tento manuál je ještě ve vývoji. V současnosti je to základní návod, který vám pomůže dostat boty do vašich map. Pozdější manuál bude zahrnovat hlavně informace o tom, jak si udělat vlastní přídavky a modifikace botů. Mimoto bude pozornost věnována technickým aspektům skriptů.

II. BOTI VE VAŠICH MAPÁCH

Tato kapitola popisuje základní modifikace, které musíte udělat ve vašich mapách k získání botů.

2.1 Přidání spawn bodů pro boty

Můžete spawnovat boty v jakékoli entitě, která ma origin. Použijte script_origin entity. Nespawnujte boty v místě, kde se spawnuje hráč. Když vytváříte script_origin(y), zadejte targetname “alliesspawn” pro pozice spawnu allies botů, a “axisspawn” pro axis boty. Bot script z nich bude náhodně vybírat.

2.2 Vytvoření spawn šablon

Mimo spawn pozic, bot script také potřebuje mít list modelů, které budou použity pro boty. Bot script umožňuje je umístit kdekoli ve vaší mapě, potom nahraje dostupný mdel. Můžete jednoduše přidat všechny obecné modely (using the prefab supplied in the bot SDK), které jsou dostupné z netu Freebrief. Jestliže chcete přidat více modelů, jednoduše umístěte do mapy požadovaný model (ai ? multiplayer menu) a zadejte targetname “alliesspawnpreset” pro šablonu allies bota nebo “axisspawnpreset”. Můžete přidat jakékoli množství spawn šablon.

III. CESTOVNÍ UZLY

3.1 Navigační uzly

1
Příklad umístění navigačních uzlů


Za účelem navigace botů musí být vaše mapa přešně protkána info_pathnode entitami. Všechny info_pathnody jsou obsaženy v navigačním souboru (.pth), který se generuje, když poprvé nahrajete svou mapu. To je také důvod, proč je nemožné přidat boty do původních map: tyto mapy nemají pathnodes (cestovní uzly). Poněvadž hra vytvoří navigační soubor z vašich cestovních uzlů, jejich rozmístění musí být pečlivé a musí vyhovovat několika požadavkům. Za prvé, cestovní uzly nesmí být více než 320 jednotek vzdáleny od sebe. Takže tu má být volný “tunel”(místo) mezi cestovními uzly alespoň 320 jednotek široké a 116 jednotek vysoké. Tím se míní, že nemůžete přidat cestovní uzly na malé cestě nebo ve ventilačních šachtách; boti nejsou schopni tudy jít. A konečně, boti nemůžou vyjít svah prudší než 45 stupňů. Když potřebujete, zkuste přidat malý “common/monster“ (´botclip´) bruš (plochu) k naklonění (uhlazení) svahu. Budete hotovi teprve až budou uzly přes celou vaši mapu, tak aby se boti mohli dostat všude k (pro) následování lidských hráčů. Můžete označit uzel spawnflagem ´dont_link´. To vám dovoluje redukovat počet cest a takto zvýšit zajímavost pohybu botů. Když tedy chcete odstranit cestu meti dvěma uzly, přidejte uzel dont_link mezi ně. Stejně, tato funkce nabízí malé použití pro boty.

3.2 Skryté uzly

Aby boti vypydaly čilejší, je možné označit určité uzly jako `cover` nebo `concealment`. Tato označení mohou být použita pro jakýkoli uzel. Cover znamená, že bot pude považovat tuto lokaci za dobré místo ke schování (například k dobíjení), pokud nepřítel nevidí tuto lokaci. Uzel Concealment je vždy považován za dobrou schovku, tak to používejte jen u ploch nebo objektů, které boty ukryjí ve 360-ti stupních. Mimoto můžete taktéž použít nastavení `duck`, `corner_left`, `corner_right` and `crate`. Duck znamená, že se bot v této lokaci skrčí, když je pod palbou. To obvykle vypadá stupidně. Corner_left a Corner_right jsou používány k určení dobrých lokací, kde se dá střílet z poza rohu. Nicméně tyto dva poslední spawnflagy jsou příčinou toho, že hra používá animace singlplayerové-střílení-z poza-rohu, při které boti vypadají méně lidsky v multiplayerových hrách. Crate je dokonce horší. Používá se k tomu, aby AI střílela z poza vrchu bedny, ale to je často příčinou, že jejich útoky jsou (eratic). Takže je nejlepší nepoužívat tyto speciální spawnflagy.

3.3 Odstraňování závad uzlů

3.3.1 Nástroje

Nehledě na vaši dovednost, uděláte možná několik chyb v nákresu uzlů. Naštěstí Mohaa spolupracuje s velmi užitečným, chyby ukazujícími nástroji. V konzoli napište `togglemenu leveldesign`, což otevře malé designerské menu. Nyní klikněte ne button `routes`. Uvidíte množství zelených linek. Tyto linky ukazují všechny cesty, kde se boti pohybují k dosažení svého určení.

2
Příklad znázornění cest


3.3.2 Chybné uzly

Budete nejspíš taktéž vidět několik symbolů, které jsou popsány níže. Možná uvidíte červené kříže v některých lokacích. To upozorňuje na (boty) nedosažitelný uzel. Takový uzel je buď příliš daleko od jiných uzlů, nebo příliš blízko ke komlikované architektuře. Je důležité opravit všechny červeným křížem označené uzly, než spustíte vaši mapu nebo budou mýt boti problémy s navigací. Také můžete najít několik červených šipek. Toto indikuje jednocestné uzly, čímž se myslý, že boti mohou následovat tuto cestu pouze ve směru šipky. Tyto šipky uvidíte, když uděláte cesty na strmém svahu nebo blízko architektury. Konečně můžete spatřit malá modrá kolečka. Ty prezentují cesty opatřené štítkem (flag) `dont_link`.

3.3.3 Chyby v průběhu chodu

Když hrajete, testujíc svou mapu, můžete zaznamenat chyby `Couldn’t find end node` nebo `Unreachable path`. To znamená, že boti mají problémy s doasažením svého určení. Je velmi těžké předcházet všem těmto chybám, ale když si všimnete velkého množství chyb, je dobré znovu se podívat na cestovní uzly (path nodes) a opravit chyby jak jen to jen možné. Je to práce, ale výsledkem budou chytřejší boti v budoucnu.

IV. BOMBY

4.1 Úvod

Potenciálně budete potřebovat bomby ve svých obj mapách. Proto byl napsán speciální bomb script, který umožňuje jak živým hráčům, tak botům naplánovat nebo bránit bombu. Mimoto umžňuje připravit různé bomby pro oba týmy, vybrat model bomby a odpočítávací čas. Tato kapitola obsahuje instrukce, jak nastavit bomby , aby je mohli boti najít, spustit, nebo chránit.

4.2 Tvorba bomby

Abyste přidali bombu, nejprve potřebujete umístit script_model kdekoli na vaší mapě. Přidělte tomuto modelu klíč (key) ‘model‘ a hodnotu (value) ‘items/pulse_explosive.tik’. Tento model bude použit jako kryt (pláštˇ) bomby. Až toto uděláte, přidělte bombě targetname jaké chcete (např. mybomb) aby ji script poznal. Potom nastavte klíč $plantteam na tým, který bude bombu spouštět (value allies/axis). Když nenastavíte tento klíč, nastaví se tým, který je v ‘level.planting_team’. Když tam není žádný tým, nastaví se allies. Dále přidejte trigger_use, který budou používat hráči jako spouštěč bomby. Udělejte trochu větší než je bomba a dejte mu targetname (např. bomb_trigger). Potom udělte následující klíč a hodnotu vašemu bomb modelu: key [trigger_name] a value targetname triggeru_use (takže např. bomb_trigger). Hráči (živí) tu nyní můžou spouštět bombu.

4.3 Boti a bomby
3
Příklad umístění bomby


4.3.1 „Cestovní uzel“ (node) pro spuštění bomby

Jistě chcete povolit botům, aby také mohli spouštět bomby. Proto musíte říct botům, kde je vaše bomba. Uděláte to přidáním info_pathnode před vaši bombu. Označte ji targetname bombnode. K propojení bomby s touto node označte nejprve node (shift + levé tlačítko myši), potom označte i bombu a stiskněte ctrl + k.

4.3.2 Obránci

Taktéž budete chtít, aby vaši boti bránili bombu, kdekoli je to možné. Obrana pracuje s tzv. nodem ‘bombcamp’; info_pathnode a targetname bombcamp. Přidejte několik pathnode okolo vaší bomby na místech, která se zdají být dobrá pro ochranu bomby. Podle oka jich tedy přidáte nejméně osm pro jednu bombu. Pamatujte, že čím více bombcamp pathnode přidáte, tím rozmanitější bude chování botů.
Nyní potřebujete propojit všechny bombcampnody k bombě. To se dělá s použitím klíče #set. Klíče všech bombcampnodů budou mýt stejnou hodnotu (jde o jednu a tu samou bombu). Tak např. pužijte klíč #set s hodnotou 1 pro všechny bombcampnody blízko vaší první bomby. A nakonec přidejte vaší bombě klíč #campset s hodnotou 1 pro korespondenci bomby a bombcampnodů. Když všechno dopadne dobře, boti jsou schopni spouštět nebo bránit bombu.

4.3.3 Aby se boti chovali chytře

Kkyž chcete boty nasměrovat k určité lokaci, kde mají bránit bombu (zabránit jejímu spuštění) – např. k chodbě, která útočníkům umožňuje přístup k bombě, vytvořte scrip_oringinY v těchto místech. Potom vyberte jeden (nebo více) vašich bombcamp nodů a spojte ho se script_originem s použitím metody ctrl+k, která byla popsána výše (označit node, potom script_origin a ctrl+k). Bot bude nyní směřovat k určenému originu, kde bude bránit bombu v korespondujících nodech. V případě, že nebudete chtít, aby spojenečtí boti použili nějaký campnode, můžete nastavit klíč #noallies s hodnotou 1. A naopak, abyste znemožnili axis botům bránit bombu v určitěm campnode, nestavte key #noaxis, value 1. Toto nastavení klíče a hodnoty má být aplikováno na info_pathnode, ne na bombu.

4.3.4 Script

Je tu ještě poslední věc, aby bomba fungovala. Tzv. ‘bomb thinker’ má být spuštěn pro každou bombu. Řekněme, že jste udělali bombu s targetname mybomb, pak tedy přidejte do vašeho script souboru nasledující řádek pod ‘level waittil spawn‘:

$mybomb thread global/jv_obj_dm scr::bomb_thinker.

Tento řádek musíte přidat pro každou bombu na vaši mapě.

Nastavení bomby:
#defuse_time / 60
#set_time / 50
#tick_time / 45


V. KULOMETY

Multiplayer bot scrip umožňuje snadnou implementaci kulemetných věží do vašich map. Kulomety útočí na případné uhrožení uvnitř nastaveného rozsahu. Můžou zaměřovat cíl v rozsahu plných 360 stupňů. Jestliže útočník nemůže být zameřen z kulometné věže, ‘kulometčík’ použije zbraň, kterou má v ruce, nebo jiný bot zahájí palbu na cíl.

5.1 Nastavení věže

5.1.1 Zbraň

Není zvlášť těžké nastavit věže, aby je boti mohli používat. Je tu pár věcí, na které si musíte dát pozor. Zaprvé, vložte do mapy věž - turret gun (addon-turretweapon-german-mg42) s targetname ‘mg’ a nastavte klíč #maxyawoffset. Nezapomeňte na ‘#’, to je důležité pro script. Za další nastavíme klíč #range (rozsah), který určuje maximální rozsah prohledávaného okolí (v herních jednotkách). Nastaveno je 4000, ale nastavení vhodného rozsahu je velmi důležité (to save CPU usage). Nakonec přidáte klíč #set, to bude vždy jiná hodnota pro každý kulomet na mapě.

5.1.2 Navigace

Teď musíte přidat nějakou navigaci, aby se boti mohli dostat ke zbrani. Přidejte nejméně dva pathnody pro kulomet. První je node přibližování, ten botům řekne, kde je kulomet. Když je kulomet už požíván, bot jde pryč a plní jiny úkol. Takže umístěte tento node v malé vzdálenosti od kulometu (asi 64 jednotek). Bude to tedy info_pathnode s targetname mg_node a klíčem #set s hodnotou stejnou jako u klíče korespondujícího kulometu. Ještě jeden pathnode musí být vytvořen. Je to node, kde bude kulometčík stát při střílení. Takže ho umístěte přímo za zbraň. Targetname bude mg_gunner, klíč #set opět s hodntou stejnou jako u kulometu.

5.1.3 Spouštěč kulometu Nakonec vytvoř ‘trigger_multiple’ okolo kulometu. Spoušteč (trigger) má zahalovat území za zbraní, kde kulometčík stojí. Spouštěč je užívan k určení, jestli hráč užívá zbraň. Targetname je ‘mg_gunnertrigger’. Taktéž nastavte správnou hodnotu pro klíč #set. Nyní je vaše zbraň připracená.

5.2 Naváděči

Bot skript také umožňuje použít jednoho „naváděčě“ pro každý kulomet. Tento bot bude zpravovat kulometčíka o novém cíly, a když je kulometčík zasažen, sám vleze za kulomet. Tak bude váš kulomet efektivnější. Takže přidejte info_pathnode a umístěte ho nalevo (asi 32 jednotek) od node mg_gunner . Dejte mu targetname mg_spotter. Klíč #set a hodnotu stejnou jakou má klíč #set u kulometu.

5.3 Možnosti nastavení kulometné vížky

Podle vaší potřeby může být nastaveno několik proměnnych upravujícíh fungování věžě. Zde je kompletní výpis. Aplikujte všecny dvojice klíčů a hodnot.

5.3.1 Informace o kulometčíku

Zaprvé můžete nastavit kíče #noallies a #noaxis. Hodnota vždy bude 1. Tento klíč zakazuje jednomu či druhému botu používat kulomet. Můžete také přidat klíč #weight („zátěž“), který určuje, tendenci s jakou budou boti kulomet používat. #weight je nastavena na 1. Když nastavíte vyšší hodnotu, boti budou používat kulomet častěji.

5.3.2 Střílení

Navíc může zbraň vypadat realističtěji, když nastavíte klíč ‘burstfiresetting’. Tento klčí je implementován ve hře, bot skript nijak nemění. Umožňuje specifikovat nastavení času střelby a prodlevy mezi jednotlivými „salvami“. Potřebujete nastavit čtyři hodnoty: mintime, maxtime, mindelay, maxdelay. Takže tyto klíče kontrolují dobu střelby, stejně jako čas prodlevy.

5.3.3 Přesnost

Dále můžete nastavi klíč #accurracy, který může mít hodnotu od 0 do 100. Ve hře je nastaven na 95. Přesnost se automaticky mění, když server změní úroveň (skill level) botů. Přesnost 0 znamená střelbu ve výseči úhlu 45 stupnů, což je extrémní.

5.3.4 Dobíjení Je nastaveno, aby boti používajicí kulomet pokaždé dobíjely náboje. Pro zastavení tohoto chování použijte klíč #noreload s hodnotou 1.
4
Příklad nastavení kulometu


VI. SPECIÁLNÍ LOKACE

6.1 Uzly sniperů

Skript botů jv_map rovněž dovoluje rozmístění uzlů sniper kdekoli na mapě. Boti budou stát na místě v této lokaci a zaměřovat daný cíl. Pro přidání těchto uzlů jednoduše vytvořte kdekoli info_pathnode a označte je target name ‚sniper‘. Potom přidejte (about 256 jednotek off) script_origin, kde chcete, aby bot zaměřoval. Nejprve vyberte snipr uzel, potom script_origin a potom ctrl+K. Váš sniper uzel je hotov.
Můžete však modifikovat sniper uzly podle vašich požadavků. Zaprvé můžete zabránit botům, aby si klekali, nastavením klíče #nocrouch s hodnotou (value) 1. Také můžete nastavit správné klíče #noallies a #noaxis. Nakonec můžete nastavit klíč #weight ke zvýšení důležitosti určitého uzle – value 1.

6.2 Uzly zálohy (camper)

Spolu se sniper uzly jsou možné i uzly záložníků. Pracují velmi podobně. Zásedně používejte sniper uzly pro velké vzdálenosti a uzly táborníků jako zálohu, léčku např. při nějakém krytu. Boti se zbraněmi krátkého dostřelu (brokovnice, samopal) požijí tento uzel.
Camper uzel vytvoříte stejně jako uzel předchozí. Přidejte info_pathnode s targetname camper a script_origin. Můžete opět použít všechny klíče k modifikaci jako u předchozího s výjimkou #crouch.

VII. TRASY

Když boti běží, vždy to borou nejkratší cestou k cíli jejich určení. Tato tendence činí jejich chování velmi předvídatelným. Proto byl vytvořen systém tras – tak můžete nastavit překvapivé útoky a zvýšit rozmanitost hry. Takže, systém tras dovoluje botům používat speciální cesty k dosažení jejich cíle, např. šplhání po žebříku.

7. 1 Uzly tras

Uzly jsou tvořeny několika ‚info_pathnody‘. Můžete vytvořit cestu k čemukoli chcete, např. k bombám nebo kulometům. Jednoduše přidejte info_pathnody podél cesty, kam chcete, aby boti došli. Nepotřebujete jich přidávat mnoho, jen několik, definujících základní plán trasy.
Když vytvoříte pathnody, je čas na to, označit je jako trasy. Abyste tak učinily, označte je a dejte jim targetname ‚route‘. Mimoto, všechny uzly, které vytvářejí trasu, musí mýt stejný klíč ‚$name‘, který je použit jako jméno trasy. Nastavte tedy jméno trasy jaké chcete mít.
Také definujte směr pohybu. To pracuje s klíčem ‚#id‘. Přidejte tento klíč a value 1 pro uzel, který je nejblíže určení trasy. A počítejte až k poslednímu uzlu. Takže jestliže vytvoříte trasu se čtyřmi uzly k bombě, uzel nejblíž bombě bude mýt #id 1, a poslední #id 4.
Nyní je vaše trasa připravena k použití, za předpokladu, že řeknete botům, kdy tutot trasu mohou užít. Musíte také definovat cíl trasy. To pracuje s klíčem ‚$route‘, který se nastaví na node, která je nejblíže cíle trasy (např. ke kulometu, k bombě). Takže, jesti je cíl vaší cesty $bombnode entita, přidejte ‚$route‘ klíč k pathnode bombnode (poslední node před bombou). Hodnota má být stejná jako u klíče $name, čili jméno vašich rout nodů. Můžete nastavit jakýkoli počet cílů jedné cesty (route), tak např. můžete přidat stejný klíč $route všem $bombcamp nodům. Přečtěte si další část manuálu (List tras), kde se dozvíte, jak nastavit více cest k jednomu cíli.
Poslední připomínka k prvnímu nodu (nejnižší, největší #id): Boti nikdy nebudou chodit do tohoto nodu. Je používán k určení směru cesty. Takže když navrhujete cestu, je dobrý nápad přidat jiný node s niším #id hned pře něj. Tak bude první nod cesty stále používáný. (Udělejte tedy na startu trasy dva routenode hned za sebou. První k určení směru například s #id 6, a druhý s #id 5).

7.2 LIST TRAS

Tak jako systém s klíčem $rout umožňuje pouze jednu cestu k entitám, tak je tu jiný klíč k použití (více cest k jedné entitě). Zahrnuje script, ale udělá vaše boty chytřejšími. Pracuje to s klíčem ‘routlist’, což je výpis všech cest, které vedou k entitě.
Jestliže ho plánujete použít, musíte to nastavit ve vašem skriptu. Ještě před řádkou, která povoluje boty. Nejprve vyberte jméno pro váš list tras. Každý musí mýt jedinečné jméno, ale můžete použít stejný list tras pro mnoho cílů. Jméno proměnné pro váš list cest bude level.routelist [jméno]. Všechno, co musíte udělat, je přidat správná jména tras do řady. Takže, řekněme například, že jste vytvořili list tras se jménem ‘trasy_k_bombě’, který zahrnuje trasy s $name klíči sever, nižší východ a jih. Řádek ve scriptu bude následující:

level.routelist[trasy_k_bombě] = “sever”::”jihovýchod”::”jih”
nebo

level.routelist[trasy_k_bombě] = “sever”
level.routelist[trasy_k_bombě] = ”jihovýchod”
level.routelist[trasy_k_bombě] = ”jih”


Nakonec přidejte klíč $routelist s hodnotou jména vašeho roulistu, k entitě, na kterou chcete tento routlist aplikovat. Například jestliže roulist trasy_k_bombě z prvního příkladu by zahrnoval všechny cesty k entitě bombnode, přidejte jí klíč $routelist a hodnotu trasy_k_bombě.

7.3 SPECIÁLANÍ AKCE

Systém tras umžňuje botů cpeciální akce ve kterémkoli nodu trasy. Tyto akce udělají vaše boty chytřejší a reralističtější. Jádro systému je to, že není nutná žádná pravidelná navigace, prorože je to vše uloženo v trasách a listech tras. To umožňuje botům pohybovat se mimo oblast pathnode navigace, kterou používa AI ve hře.
Pro nastavení speciální akce potřebujete přidat klíč $action k route node. Kterýkoli bot jdoucí po trase, který dorazí k tomuto nodu, provede definovanou akci. Všechny speciální akce by měly být v samostatném souboru special_(action).scr a nacházet se uvnitř adresáře botů (jv_bot01.pk3). Hodnota klíče $action by měla být přípona action skriptu. Například pro použití scriptu special_crouch.scr (možné aplikovat route systém) bude hodnota crouch. Skript žebříku je nyní dostupný pouze jako skript special action.
Navíc je dovolený jeden přídavný parametr. Nastavuje se klíčem #actionset. Důležité je, že musí mít jako hodnotu jedinečné číslo pro rozeznání, který node spouští akci. Npříklad může určovat, který žebřík může bot použít. Můžete použít stejný klíče #actionset pro různé akce. Stejně jako první node trase je boty nepoužíván, tak také se k němu nemůže přidat klíč #actionset. Jestli to ale potřebujete, udělejte před prvním node trasy, jiný s vyšším #id.

7.3.1 Žebříky

V této části bude vysvětleno, jak vytvořit žebřík použitelný boty. Nejprve musíte definovat trasu a “akční node”. Umístěte jeden node před žebřík. Dejte mu klíč $action a hodnotu ladder. Také nastevte klíč #actionset s jinou (jedinečnou hodnotou) pro každý váš žebřík. Za předpokladu, že je to váš první žebřík, hodnota bude 1.
Nastavení samotného žebříku bude trochu komplikovanější. Vytvořte dva script_originY, jeden na zem, dolu k žebříku a jeden nahoru na úroveň nejvyššího poschodí. (maximálně 32 jednotek od povrchu žebříku). Dolnímu scrip_originU dejte targetname ladderbottom a hornímu laddertop. U obou nastavte stejný klíč #set s hodnotou korespondující s #actionset route nodu. V našem případě to bude 1 (první žebřík).
Nakonec musíte nastavit úhel u obou script_originŮ (klíčem angle), pod kterým budou boti lézt po žebříku. Nejprve tam nechte nastavený úhel. Když nebude správný, nastavte jiný úhel. Toto nastavení se skládá ze tří čísel: stoupání (stupeň, svah), úhel (odchýlení) a rolování. První a poslední číslice musí být nula. Takže zadejte například hodnoty 0 90 0 pro úhel 90 stupňů. Váš žebřík je nyní připraven k používání. Boti po něm budou vylézat i slézat, kdykoli tudy povede jejich trasa (route), definovaná rout nody. Jestli uvidíte, že chování botů na žebříků není dobré, můžete to opravit malým posunutím horních nebo dolních nodů. Také můžete otestovat správnost jejich chování na žebříku tím, že je zastřelíte, když lezou nahoru. Když vyletí nahoru, potom,co je zastřelíte, je potřeba zvětšit vzdálenost horní a dolní node od povrchu žebříku.

VIII. KONEČNÁ ÚPRAVA BOTŮ

8.1 Soubor script

Abyste dostali pracující boty do vaší mapy, potřebujete přidat řádek do vašeho script souboru. Díky snadnému interfaci scriptu botů, to není těžké. Přidejte následující řádek pod level waittill spawn

WAITHREAD GLOBAL/JV_BOTS/JV_MP_AI.SCR: :ENABLE

Můžete tktéž chtít spawnovat několik botů, když vaše mapa startuje. Jinak můžete přidávat boty příkazem z konzole (viz následující kapitola IX). Pro nastavení počtu botů když se vaše mapa spustí napište do scr:

LEVEL.ALLIESBOTS = (počet)
LEVEL.AXISBOTS = (počet)

Vložte tyto dva řádky nad POVOLUJÍCÍ (ENABLE) řádek, který je popsán výše.

8.2 Dokončování vaší mapy

Nakonec je nutné začlenit několi souborů, když dokončujte mapu. Všechny potřebné soubory jsou v jv_botx.pk3 souboru, kde x je číslo verze. Poslední verzi si můžete vždy stáhnout z netu Freebrief. Váš map.pk3 soubor musí obsahovat bot pk3 soubor. V readme.txt, doprovázejíci vaší mapu, uveďte, ať si uživatel rozbalí soubory bot pk3 do svého mahaa/main adresáře. Nepřejmenovávete bot pk3 soubor. Pokud butete měnit script uvnitř, rozšiřujte pak bot pk3 pod ůplně jiným jménem. Zabrání to konfliktu verzí v budoucnu.

8.2.1 Budoucí Bot Pak

Pravděpodobně boudou vytvořeny nové verze bot pk3. Vývojářův cíl je, aby byly všechny kompatibilní. Jestli chcet vědět více o nových verzích, pošlete jv_map e-mail. Ten naleznete na stránkách http://www.planetmedalofhonor.com/freebrief.

IX. PŘÍKAZY KONZOLE

Bot script spolupracuje s několika příkazy, které se zadávají do konzole. Žádný z nich ovšem není skutečný příkaz, je to pouze cvar (proměnná). To znamená, že nemůžete napsat samotný příkaz, ale musíte přidat hodnotu. Například:

jvbot_status 1

Všechny příkazy kozole jsou ovládány ze souboru lib_console.scr a mají prefix (předponu) jvbot_. Pouze server může dávat tyto příkazy, a to buď z konzole serveru nebo přes rcon. Například:

rcon jvbot_kickbot_team allies

Mimo tyto ‘cvar příkazy‘ používá skript také tři ‘skutečné’ cvar, které jsou níže rověž popsány.

9.1 Přidání botů

jv_bot_addbot_spawn 4 přidá 4 boty, tedy dva na každou stranu
jvbot_addbot_team allies
jvbot_addbot_spawn 6 přidá 6 botů na stranu allies
jvbot_addbot_name „Major Terazky“
jvbot_addbot_team allies
jvbot_addbot_spawn 1 přidá bota jménem M.T. na stranu allies
Modely vojáků a jejich zbraně jsou vybírány náhodně a je možné je měnit během hry.

9.2 Vkopnutí botů

K tomu potřebujete znát ID bota. Zadejte na konzoli jvbot_status 1. Objeví se tabulka. ID je číslo bota.

jvbot_kickbot_id 4 vykopne bota s ID 4
jvbot_kickbot_team aliies vykopne všechny boty týmu allies
jvbot_kickbot_all 1 vykopne všechny boty


9.3 Vypnutí

jvbot_shutdown 1

9.4 Restart

jvbot_restart 1

9.5 Statistika

jvbot_status 1
Po zadání tohoto příkazu uvidíte ID, tým, stav, jméno, druh činnosti všech botů a jak byli spawnuti do hry (auto- to je ze skriptu, manual – to je z konzole).

9.6 Skill level To je úroveň schopností botů (hlavně v přesnosti střelby). Nastavena je úroveň dva. 4 je maximum.

jvbot_skill 4 - nastaví boty na maximální úroveň

9.7 Team avatars

Jsou to znaky nad hlavami hráčů. Když je tam nechcete, napište do konzole:
jvbot_show_avatar 0
Jestli je chcete vidět npište:
jvbot_show_avatar 1
Toto se dá měnit i ve skript souboru pro vaši mapu:
jetcvar “jvbot_showavatar” “0”
Vložit pod level waittill spawn a před řádek povolující boty.


9.8 Uniformy

jvbot_forcemodels 1 – všichni boti budou mýt stejnou uniformu (redukuje počet užívaných textur)
jvbot_forcemodels 0 – uživatelem nastavené uniformy

9.9 Prefix před jmény botů

Normálně je nastaveno [BOT]. Když to chcete změnit, napište například:

jvbot_prefix “-clan-“
K vynechání prefixu napište:

jvbot_prefix “NULL”
Tyto dvě věci můžete měnit i ve skriptu:

setcvar “jvbot_prefix” “-clan-“
setcvar “jvbot_prefix” “NULL”


9.10 Prodleva u respawnování botů

Například
jvbot_loopdelay 0.8
Nastavené je 0.4. Minimum je nula, což znamená respawnování každy frame (okamžitě).
Nastavení ve skriptu:
setcvar “jvbot_loopdelay” “0.8”

9.11 Zakázání botů Píše se do skriptu:

sets “jvbot_allowed” “0”


9.12 Proměnné pouze ke čtení

Jsou dvě:
1.
jvbot_running
Ukáže se buď 1 – když bot skript běží, nebo 0, kdy nepracuje.
2.
jvbot_version

X. POKROČILÉ NASTAVENÍ BOTŮ

10.1 Priority u chování botů

Například můžete chtít více botů sniperů:
level.jvbot_tasks_priority[sniper] = 2 - píše se do skriptu


Přednastavené priority:
attackbomb nastavení a obrana nastavené bomby 1
defendbomb vypnutí a obrana bomby 1
follow následování hráče 15
machinegun použití kulometu 0.5
sniper sniper 0.1
camp „záloha“ v $camper nodech 0.1
health sběr medikitů 10


Nastavuje se před tím, než je volán bot skript.

10.2 Priority u zbraní

Například:
level.jvbot_weapon_priority[“m1 garand”] = 50


Přednastavené priority:
m1 garand 10
springfield ’03 sniper 20
thompson 40
bar 25
shot gun 5
high standard 0
colt 45 0
bazooka 0
mauser kar 98k 5
mauser kar 98d sniper 20
mp 40 30
stg44 40
walter p38 0
panzerschrek 0
Priorita 0 znamená, že zbraň se nebude vůbec používat.
Nastavuje se před tím, než je volán bot skript.


10.3 Časový limit

V obj match hra končí když na jedné ze starn není už žádný hráč (když je nastaveno dmrespawning na 0). Nicméně hra nerozeznává boty od hráčů. To je důvod proč byl napsán speciální tilelimit skript. Tento nastartuje jinou časomíru pod normálně běžící. Když chcete změnit timelimit botů, napište do konzole:

Timelimit -1
Jestliže nehcete používat timelimit skript, napište do skriptu nad řádek povolující boty:
Level.jvbot_notimehandler = 1


10.4 Start kola

Někdy budete chtít zabránit jednomu týmu ve vítězství, kdž druhý tým nebude mýt žádného hráče. Pro to je tu level.roundstart. Nastaví se na 1 jakmile oba týmy mají alespoň jedno bota nebo hráče. Příklad:

while !(level.roundstart)
waitframe


 

Napísať otázku k tutoriálu

Meno: Dátum:
Kontrolný kód : 5 + sedem =