Jump to content

návod Jak vytvořit NPC - překlad ze SA-MP fóra [*]


Recommended Posts

Jak vytvořit NPC - překlad ze SA-MP fóra

Obtížnost: award_star_gold_2.pngaward_star_silver_2.pngaward_star_silver_2.pngaward_star_silver_2.pngaward_star_silver_2.png



Překlad a úprava: StarsCream
Původní autor: kc
Link na původni topic: http://forum.sa-mp.com/index.php?topic=119947.0

Na tuto věc se bude ptát hodně lidí, takže kc udělal TUT, jak pracovat s NPC, tedy neehratelnými postavami, nebo-li také "boti".

Obsah
1) Nahrávka pohybu NPC
2) Trovba scriptu
3) Import do módu


1) Nahrávka pohybu NPC
Nejdříve potřebujeme zapsat pohyb a všechno okolo toho pro NPC. K tomu slouží nahrávka, která se pak přehrává v postavě NPC.
   Spusťte SA-MP 0.3 server s jakýmkoli módem.
   Přihlašte se pod rcon. (Napište "/rcon login " ) a nahrajte filterscript npc_record (Napište "/rcon loadfs npc_record" )
   Po úspěšném nahrání npc_record nás zajímají 3 základní příkazy.
       /vrecord - Začíná nahrávat vaše pohyby a akce vozidla, ve kterém sedíte do souboru jmeno_souboru.
       /ofrecord - Začíná nahrávat vaše pohyby postavy pěšky do souboru jmeno_souboru.
       /stoprecord - Ukončuje jakékoli nahrávání
   
   V tomto tutorialu programujeme bota, který řídí auto, takže jděte do vozidla a napište /vrecord mujbot (Pzn: musíte být pod RCONem) pro začátek nahrávání.
   Ujedte trasu, kterou má bot vykonávat a pak napiště /stoprecord.
   Ukončete hru a jděte do složky ScriptFiles ve vašem SA-MP 0.3 serveru, tam by měl být soubor mujbot.rec. Přesuňte jej do /npcmodes/recordings/še>
   Hotovo? Super, máte nahrané pohyby NPC a umístěné je v požadované složce.

2) Tvorba scriptu
Pokračujeme ve scriptu:
   Ve složce npcmodes máte spoustu příkladů jak na boty, tyto "mini" scripty určují chování NPC.
   takže pojďme si vytvořit další.
       Zapněte pawno, dejte nový soubor a přepiště všechen obsah tímto   

#define RECORDING "mujbot" //Název souboru, který jsme nahrávali bez přípony .rec
#define RECORDING_TYPE 1 //1 pokud je v autě, pěšky je to 2

#include 
main(){}
public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);

#if RECORDING_TYPE == 1
public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
public OnNPCExitVehicle() StopRecordingPlayback();
#else
public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
#endif

       Toto může vaypadat nesrozumitelně, proto to vezmu po řádcích:

#define RECORDING "mujbot" //Název souboru, který jsme nahrávali bez přípony .rec
       Komentář již napovídá, že se jedná o jméno souboru, který má přehrávat, akorát bez přípony .rec. takže pokud se váš soubor mujbot jmenuje alfonz, musíte mít v /npcmodes/recordings/ soubor alfonz.rec
Pak by to vypadalo takto:
#define RECORDING "alfonz" //Název souboru, který jsme nahrávali bez přípony .rec

#define RECORDING_TYPE 1 //1 pokud je v autě, pěšky je to 2
       Jak opět naznačuje komentář, jde o typ přehrávání. Pokud je tvůj NPC ve vozidle, je tam 1, pokud je pěšky 2.

#include 
       Základní include pro boty.

public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
       OnRecordingPlaybackEnd je callback forwardovaný v NPC includu. Tento řádek říká, že jakmile nahrávka končí, začíná opět odznova, takže jee to nekonečná smyčka.

public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
       Toto je zase callback, také z includu NPC. Způsobuje, že se začne přehrávat, když bot sedne do auta.

public OnNPCExitVehicle() StopRecordingPlayback();
       A zase další callback opět z includu NPC. Tento zastavuje přehrávání, kdyykoli je jakkoli bot vyndán z auta.

public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
       A zase další callback opět z includu NPC. Tento spustí nahrávku NPC pokud se spawne a NPC má byt pěšího typu a ne v autě.

       Jak vidíte, jee to velmi jednoduché. Nyní uložte vás NPC "mini" script jako "mujbot.pwn" do /npcmodes/še> a zkompilujte jej.
      Pokud máte hotovo, přesuneme se k dalšímu, poslednímu kroku tohoto tutorialu, pokud vám to vyhodilo errror, ujistěte se, že máte aktualizované includy u pawna na ty u SA-MP 0.3

3) Import do módu
Poslední krok...
   Takže, vytvořili jsme "mini" script pro kontrolu NPC postavy, ale teď potřebujeme bota nahrát na server. Použijeme k mód/filterscipt.
    zavřete "mini" script, a a otevřete váš mód, nebo filterscript v pawnu.
   Je čas, zasvětit vás do funkce ConnectNPC.
Jak už název napovídá, jde o připojení NPC na server.
       Podívejme se na parametry funkce a co znamenají...
ConnectNPC("Michal","mujbot");
       "Michal" - První parametr je jméno bota. Takto rozeznáte různé boty navzájem od sebe.
       "mujbot" - Toto je jméno souboru (bez přípony) našeho dříve vytvořeného "mini" scriptu.
   Nyní známe parametry funkce ConnectNPC. Připojme vašeho prvního bota!
   S vaší novou znalostí funkce ConnectNPC, zkusíme vytvořit NPC připojení při loadu módu/filterscriptu.
   
   Vyzkoušeli? OK, dal jsem to do OnGameModeInit...
public OnGameModeInit()
{
   print("my gamemode");
   ConnectNPC("Michal","mujbot");
   return 1;
}
   
   Nyní, pokud sme vytvářeli bota, co řídí vozidlo, tak mu ho taky musíme dát.
   Takže script upravíme takto:
new AutoBota; //Global variable!
public OnGameModeInit()
{
   print("my gamemode");
   ConnectNPC("Michal","mujbot");
   AutoBota = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
   return 1;
}
   Pzn: je jedno, kde auto vytvoříte, při začátku přehrávání bota se auto přesune na požadovanou pozici.

   ještě poslední věc, než začnete testovat svého bota. Musíme ho nějak dát do auta.
   Já používám OnPlayerSpawn...
public OnPlayerSpawn(playerid)
{
   if(IsPlayerNPC(playerid)) //Kontrola, pokud je spawnutý NPC.
   {
       new npcname[MAX_PLAYER_NAME];
       GetPlayerName(playerid, npcname, sizeof(npcname)); //Zjišťuje jméno NPC.
       if(!strcmp(npcname, "Michal", true)) //Zjišťuje, jestli je jméno bota Michal
       {
           PutPlayerInVehicle(playerid, AutoBota, 0); //Strčí NPC do auta, které sme vytvořili
       }
   }
   return 1;
}

   Nyní zkompilujte mód/filterscript a hurá na server.
   S trochou štěstí uvidíte bota jezdit v autě přesně tak, jak jste nastavili.
   Gratuluju! Vytvořili jste svého 1. robota
   Nefunguje něco? Napište sem, a společně to opravíme
 

Návod upraven tak, aby odpovídal šabloně pro "Nové návody"

 

Návod označen jako platný

Ten to návod byl označen jako platný.Návod může být kdykoli označen jako nevhodný či neplatný

Link to comment
Share on other sites

  • Replies 311
  • Created
  • Last Reply

Top Posters In This Topic

dobre napsany este sem to neskousel ale mam dotaz s tim spawnem GetPlayerName(playerid to zjistuje jmeno hrace a ne boti co kdyz na serveru bude hrac jmenem Michal a bot se taky bude jmenoval michal?

este dotaz ja se na sa-mpforum moc nevyznam kde sezenu sa-mp 0.3 a pawno 0.3 nebo aspon beta proste neco aby sem ty "boti" mohl vyskouset docela mne to zajima XD

potom este dotaz kdyz nahrajes jizdu toho bota a treba do nej narazis tak ho projedes nebo ti spadne server neco co se stane?

Link to comment
Share on other sites

ATomasi už sem to skoušel nějáký LVDM nebo jak to je já se moc v těch zahraničních modech neviznam ale vim že jeden NPC kdyš sem do něj narazil jel rychlejc a pak odjetěl jako by ten NPC měl S0Beit :d:lol: .

Link to comment
Share on other sites

aha diky a kdyz uz si to skousel kde sezenu pawno+ windows ci linux server 0.3(beta) klienta uz mam :d

mimochodem ty NPC vypadaji jako hraci zejo to az do nic hnekdo narazi tak budou povazovani za cheatery :d:d

Link to comment
Share on other sites

Je to možný že je budou považovat za cheatery xD

Server seženeš na SA-MP Forku nebo jestli chceš pošlu ti ho xD...

// - Edit: Jako cheateři mno skoušel si někdy dát v normal GTA SA cheat rypazha (nebo jak...) tak tak něják že jen odletí prostě něco jako letadlo ale jinak to jezdilo jako vozembouch..... :d

Link to comment
Share on other sites

Michal byl jen příkaldový název bota, klidně se může jmenovat T1000_Arnie.

A je sranda, když si nahrajete let letadla a pak bota posadíte do auta....pak je to cheater. Jinak když jsem chtěl mou policejní hlídku zastavit, tak v klidu proejl 10 erampami a tank mi rozbil :d

Link to comment
Share on other sites

Je to možný že je budou považovat za cheatery xD

Server seženeš na SA-MP Forku nebo jestli chceš pošlu ti ho xD...

// - Edit: Jako cheateři mno skoušel si někdy dát v normal GTA SA cheat rypazha (nebo jak...) tak tak něják že jen odletí prostě něco jako letadlo ale jinak to jezdilo jako vozembouch..... :d

cau no na sa-mp forum mam nejaky ucet neznam heslo a nejde se mi regnou tak jestli by si mi to pls mohl poslat?

ICQ

 

416455073

 

nejsem tam moc online protoze kdyz mam zaply icq tak mam co delat abych si zahral gta sa njn vista vsak vis :d kdyz tak napis ze mne cekas nebo tak neco rad by sem si s tim botem dal zavod :d

Link to comment
Share on other sites

Lidi skousel sem to asi 30x ale nepodarilo se mi rozjet chodícího Bota spawne se a stojí na místě a kdyz do neho naburam motorkou tak se posune ale za par sekund o5 vrati.

muzete mi helpnut

Link to comment
Share on other sites

Velmi užitečný TuT, rozhodně vyzkouším a doufám že nakonec uvidím svého prvního bota dělat první krůčky xD

 

Zajímalo by mne, kdyz nahravam toho bota tak:

1. Jestly k tomu potrebuju ten filterscript nekde stahnout

2. Kdyz uz nahravam bota, tak kdyz se nekam portnu jestly on pak udela to same x)

Link to comment
Share on other sites

Lidi skousel sem to asi 30x ale nepodarilo se mi rozjet chodícího Bota spawne se a stojí na místě a kdyz do neho naburam motorkou tak se posune ale za par sekund o5 vrati.

muzete mi helpnut

 

 

a ma chodit nebo jezdit??

 

... zkus to znova ... kdyžtak to doma zkusim a dam ti vedet.. zatim sem delal jen bus :d a s cheatem :DD on jel tak funny rychle :d

Link to comment
Share on other sites

FreeWall":2r2c4uh2]kokoti ze sa-mp, hůř ty boty ani udělat nemohli, nedá se s nima skoro nic dělat, zlatá beta verza 0.2.5 :evil: ( a zlaté funkce ActorMoveTo a ActorDriveVehicleTo )

 

 

Tohjle jak sem si taky myslel .... tak se mi to začina libit, i když je to trochu složitejší ... tak ja je chapu podle mě v 0.2.5 beta leaked nebyla zmapovana cela mapa nebo aspon ne tak dobře .. takhle mužeš udělat bota co uděla přesně to co nahraješ ... a navic umi i troubit :d ale lol je když nahrajete andromadu a pak to změnite třeba na auto :d

Link to comment
Share on other sites

lol to nasere uz se mi povedlo zprovoznit ucet na sa-mp forku stahl sem si vsechno 0.3 beta pawno windows server a klienta ale mam dotaz?

to pawno 0.3beta vypada jako pawno01b ?? proste jako yt velke pismena jako to bylo na 01b a nacic to je nejaky divny on oto pawno nezna ty funkce s botama je to nejaky divny to pawno0.3 je k sehnani jenom na sa-mp forku?

Link to comment
Share on other sites

lol to nasere uz se mi povedlo zprovoznit ucet na sa-mp forku stahl sem si vsechno 0.3 beta pawno windows server a klienta ale mam dotaz?

to pawno 0.3beta vypada jako pawno01b ?? proste jako yt velke pismena jako to bylo na 01b a nacic to je nejaky divny on oto pawno nezna ty funkce s botama je to nejaky divny to pawno0.3 je k sehnani jenom na sa-mp forku?

 

 

 

omg PAWNO je furt to samy ... akorat je tohle jinak nastaveny .... nastav si to v menu pawna to pismo ... verze je myslim furt 1.0 ... nikdo ji neměni jen se přidavaj includy ... a ty funkce s botama divny nejsou ... ty jsou prostě NPC ne jako v leaked...prostě playback :d

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...