Jump to content

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


Recommended Posts

  • Replies 311
  • Created
  • Last Reply

Top Posters In This Topic

potřebuju poradit. Zacal jsme nahravat chuzi bota (/ofrecordp potom ji zastavil (//stoprecord) Potom jsem šel do složky: samp03asvr_R7_win32\npcmodes\recordings a ten rec co jsem dělal tam není. Tak pls help

Link to comment
Share on other sites

potřebuju poradit. Zacal jsme nahravat chuzi bota (/ofrecordp potom ji zastavil (//stoprecord) Potom jsem šel do složky: samp03asvr_R7_win32\npcmodes\recordings a ten rec co jsem dělal tam není. Tak pls help

ScriptFiles...

Link to comment
Share on other sites

  • 2 weeks later...
Guest martanius105

Caw , pls heslp mám stejný problém jako ATomas :( nahraju 2 boty jak jezdí ve vlaku (každýho jsem samozřejmě nahrál zvlášť) no a tak sem to napawnil pole návodu a podle pawna je všechno OK (bez warnignu bez erroru) , ale když zapnu server tak se mi napíše :

 

Incoming connection a nějaká ip (příchozí připojení)

[Npc] Trainworker has joined to server a ta ip (trainworker se připojil na server , ale jen jsem si změnil názvy)

No ten se připoní , ale pak ten druhej takže :

 

Incoming connection stejná ip jako u prvního (příchozí připojení)

No a to je vše . Nikdo se už nepřipojí (myslím bota)

 

Když jsem se teda připojil na server tak tam ten jeden jen tak stál a čuměl . Nic nedělal .

 

Jo a když jsou u mě 2 boti tak každý má jeden vlak takže musím udělat 2 vlaky , ale mě se udělají 4 (nevím ale kde) .

 

V čem je problém pls ? :(

 

Nahrávku mám v npcmodes/recordings

mini script mám v npcmodes v .pwn i .amx

 

Přikládám script :

 

nahrávka 1 :

 

 

#define RECORDING "tram" //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);
public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
public OnNPCExitVehicle() StopRecordingPlayback();

 

 

nahrávka 2 :

 

[spoiler]#define RECORDING "tram2" //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);
public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
public OnNPCExitVehicle() StopRecordingPlayback();[/spoiler]

 

V modě :

 

OnGameModeInit :

 

[spoiler]	print("***---Trainworkers---***");
   ConnectNPC("Trainworker 1","bot");
   ConnectNPC("Trainworker 2","bot2");
worker1 = AddStaticVehicleEx(538, 0.0, 0.0, 5.0, 3, 1, 2, 5000);
   worker2 = AddStaticVehicleEx(537, 0.0, 0.0, 5.0, 3, 1, 2, 5000);[/spoiler]

 

OnPlayerSpawn :

 

[spoiler]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, "Trainworker 1", true)) //Zjišťuje, jestli je jméno bota Trainworker 1
      {
          PutPlayerInVehicle(playerid, worker1, 0); //Strčí NPC do auta, které sme vytvořili
      }
      if(!strcmp(npcname, "Trainworker 2", true)) //Zjišťuje, jestli je jméno bota Trainworker 2
      {
          PutPlayerInVehicle(playerid, worker2, 0); //Strčí NPC do auta, které sme vytvořili
      }
   }[/spoiler]

 

 

PS : když dám CreateVehicle tak mi to napíše , že musí být pouze AddStaticVehicle nebo AddStaticVehicleEx (jinak mi to žádné auto nevytvoří ... ,,vlak")

 

Všem budu vděčný za odpovědi ..

Link to comment
Share on other sites

  ConnectNPC("Trainworker 1","tram");
   ConnectNPC("Trainworker 2","tram2");

 

Btw nevim jestli SA:MP podporuje v nicku mezery tak pak zkus Trainworker_1 Train_2...

Link to comment
Share on other sites

Guest martanius105

Díky... ale i tak to nešlo , ale už jsem na to přišel . A na icq , skype mi už píše dost lidí , že jak sem to vyřešil . Tak to sem napíšu , protože to mám jinak sestavené než v tom tutu . :

 

Takže zase to samé nahrajeme nahrávku , ale musíme nejdřív načíst script . Takže jděte na svůj server a přihlašte se jako rcon /rcon login [heslo] (místo [heslo] napište své rcon heslo)

 

Dejte příkaz /rcon loadfs npc_record pak si vemte auto a napište /vrecord [jmeno_souboru] a namísto [jmeno_souboru] napište jak si chcete tu nahrávku pojmenovat ... třeba /vrecord autobusak . Tak a pokud chcete udělat bota který chodí tak bez auta napište /ofrecord [jmeno_souboru] zase si pojmenujte nahrávku jako u /vrecord . A příkazem /stoprecord zastavíte jakoukoliv nahrávku .

 

Tady i popíši jak udělat chodícího bota + bota jako řidiče .

 

 

Nahrávky jsou uložené ve složce scriptfiles tak složku otevřete a nahrávku (třeba náš autobusak bude mít jméno autobusak.rec) přesuňte do složky npcmodes/recordings .

 

Bot jako řidič :

 

Tak a teŤ si uděláme ten mini script . Otevřeme pawno a v něm dáme nový soubor (New) a všechno smažeme ať tam nic není a vložte tam tohle :

 

 

#include 

//------------------------------------------

main(){}

//------------------------------------------

NextPlayback()
{
StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER,"autobusak");
}


//------------------------------------------

public OnRecordingPlaybackEnd()
{
   NextPlayback();
}

//------------------------------------------

public OnNPCEnterVehicle(vehicleid, seatid)
{
   NextPlayback();
}

//------------------------------------------

public OnNPCExitVehicle()
{
   StopRecordingPlayback();
}

//------------------------------------------

 

 

Teť to popíši :

 

NextPlayback() //další nahrávka

{

StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER,"autobusak"); //začne přehrávat nahrávku autobusak . Pokud máte jiný název tak namísto autobusak dejte své jméno souboru . Který je ve složce recordings . Ale bez přípony .rec

}

 

public OnRecordingPlaybackEnd() //pokud nahrávka skončí

{

NextPlayback(); //spustí public NextPlayback kde máme nastaveno , že to bude přehrávat nahrávku autobusak

}

 

public OnNPCEnterVehicle(vehicleid, seatid) //když NPC nastoupí do vozidla

{

NextPlayback(); //spustí public NextPlayback

}

 

public OnNPCExitVehicle() //když NPC vstoupí z vozidla

{

StopRecordingPlayback(); //zastaví přehrávání

}

 

Pokud jste však při nahrávání jen jezdili s autem tak se Vás netýkají poslední 2 publici (OnNPCEnterVehicle a OnNPCExitVehicle)

 

Tak teť si mini script uložíme a můžete si ho jakkoliv pojmenovat . A uložte ho do složky npcmodes . My si ho uložíme jako bot . A hlavně ve formátu .pwn .

 

Tak a teť si v pawnu otevřeme svůj mod a v publicu OnGameModeInit napíšeme :

 

ConnectNPC("autobusak1","bot");

 

Popíši tuto funkci :

 

ConnectNPC("autobusak1","bot"); //Namísto autobusak1 si dejte svůj libovolný náztev jak se bude bot ve hře jmenovat . A namísto bot si dejte název jaký jste dali tomu mini scriptu . Já jsme dal bot takže je tam bot . Samozřejmě to píište bez .pwn

 

Ták a teť dáme botovi auto . Takže si nahoře ve scriptu vytvořte

 

new autobota1;

 

Tak a teť zase do OnGameModeInit :

 

autobota1=AddStaticVehicleEx(idauta, x, y, z, rotace, barva1, barva2, respawncas);

 

Popíši :

 

idauta : Dejte id auta které chcete aby bot měl . Nezáleží na tom s jakým jste nahrávali .

 

x, y, z : tu je jedno jaké souřadnice mu dáte .. třeba 1, 2, 3

 

barva1, barva2 : Nastavte si v jaké barvě chcete aby bylo auto bota .

 

respawncas : Není nějak důležité . Auto se respawn i s botem po skončení nahrávky takže já dávám 5000 .

 

Teť do OnPlayerSpawn :

 

if(IsPlayerNPC(playerid)) return SpawnPlayer(playerid); //pokud je hráč NPC spawne ho to

 

Tak a teť do OnPlayerConnect :

 

if(!IsPlayerNPC(playerid)) return 0;

new playername[64];
GetPlayerName(playerid,playername,64);

if(!strcmp(playername,"autobusak1",true)) {
    SetSpawnInfo( playerid, 0, 255, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0 );
	PutPlayerInVehicle(playerid, autobota1, 0);
	SetPlayerColor(playerid,barva);
	}

 

 

TeŤ popísi :

 

if(!IsPlayerNPC(playerid)) return 0; // pokud je hráč NPC

 

new playername[64]; // vytvoříme si new playername s max počtem znaků 64

 

GetPlayerName(playerid,playername,64); // Zjistí jméno bota

 

if(!strcmp(playername,"autobusak1",true)) { // pokud je jeho jméno autobusak1

 

SetSpawnInfo( playerid, 0, 255, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0 ); //nastaví spawninfo , ale to není důležité . Nahrávka se začne přehrávat a script ho už spawne tam kde nahrávka začíná . Takže si můžete nastavit jakákoliv čísla .

 

PutPlayerInVehicle(playerid, autobota1, 0); //dá hráče (v našem případě bota) do auta autobota1 , které jsem definovali v OnGameModeInit

 

SetPlayerColor(playerid,barva); //nastaví hráčovi (botovi) barvu . Pokud chcete tak si místo barva dejte svou definici barvy nebo kod barvy

 

Tak a je to měl by Vám bot jezdit tam kde jste ho nahrávali .

 

Bot při chůzi :

 

Takže si uděláme nový mini script . Takže zase otevřeme pawno a dáme new a vše smažeme a vložíme toto ( v našem případě se bot jmenuje cj) :

 

//
//

#include 

//------------------------------------------

main(){}

//------------------------------------------

NextPlayback()
{
   StartRecordingPlayback(PLAYER_RECORDING_TYPE_ONFOOT,"cj");
}

//------------------------------------------

public OnRecordingPlaybackEnd()
{
   NextPlayback();
}

//------------------------------------------

public OnNPCSpawn()
{
   NextPlayback();
}

//------------------------------------------

public OnNPCExitVehicle()
{
   StopRecordingPlayback();
}

//------------------------------------------

 

 

Popíši jen nové věci :

 

NextPlayback() //další nahrávka

{

StartRecordingPlayback(PLAYER_RECORDING_TYPE_ONFOOT,"cj"); //začne přehrávat nahrávku ve složce recordings (pište bez .rec)

}

 

public OnNPCSpawn() //když se NPC spawne

{

NextPlayback(); //spustí public NextPlayback kde začne přehrávat nahrávku

}

 

Uložíme v .pwn .

OK a v modu je to stejné jako u řidiče . Ale nevytváříme žádné auto . Jen v OnPlayerConnect smažeme PutPlayerInVehicle .

 

 

Tak doufám , že to Vám kterým stojí postava na jednom mstě pomohlo .

Link to comment
Share on other sites

OMG zase chyby:

 

 

C:\Documents and Settings\Administrator\Plocha\server\npcmodes\busSF.pwn(11) : warning 235: public function lacks forward declaration (symbol "OnRecordingPlaybackEnd")
C:\Documents and Settings\Administrator\Plocha\server\npcmodes\busSF.pwn(11) : error 017: undefined symbol "StartRecordingPlayback"
C:\Documents and Settings\Administrator\Plocha\server\npcmodes\busSF.pwn(14) : warning 235: public function lacks forward declaration (symbol "OnNPCEnterVehicle")
C:\Documents and Settings\Administrator\Plocha\server\npcmodes\busSF.pwn(14) : error 017: undefined symbol "StartRecordingPlayback"
C:\Documents and Settings\Administrator\Plocha\server\npcmodes\busSF.pwn(15) : warning 235: public function lacks forward declaration (symbol "OnNPCExitVehicle")
C:\Documents and Settings\Administrator\Plocha\server\npcmodes\busSF.pwn(15) : error 017: undefined symbol "StopRecordingPlayback"
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


3 Errors.

Link to comment
Share on other sites

  • 2 weeks later...
OMG zase chyby:

 

 

C:\Documents and Settings\Administrator\Plocha\server\npcmodes\busSF.pwn(11) : warning 235: public function lacks forward declaration (symbol "OnRecordingPlaybackEnd")
C:\Documents and Settings\Administrator\Plocha\server\npcmodes\busSF.pwn(11) : error 017: undefined symbol "StartRecordingPlayback"
C:\Documents and Settings\Administrator\Plocha\server\npcmodes\busSF.pwn(14) : warning 235: public function lacks forward declaration (symbol "OnNPCEnterVehicle")
C:\Documents and Settings\Administrator\Plocha\server\npcmodes\busSF.pwn(14) : error 017: undefined symbol "StartRecordingPlayback"
C:\Documents and Settings\Administrator\Plocha\server\npcmodes\busSF.pwn(15) : warning 235: public function lacks forward declaration (symbol "OnNPCExitVehicle")
C:\Documents and Settings\Administrator\Plocha\server\npcmodes\busSF.pwn(15) : error 017: undefined symbol "StopRecordingPlayback"
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


3 Errors.

 

Nesmieš tam mať #include

Link to comment
Share on other sites

  • 3 weeks later...
pls poradíte ja nechápu tuto vetu. zavřete "mini" script, a a otevřete váš mód, nebo filterscript v pawnu.

Je čas, zasvětit vás do funkce ConnectNPC.

tak pls poradte na muj email [email protected]

delas to na 2 scrtipty 1 je na to ze dane NPC bude delat to a to.. napr po dokonceni prehravky se to zacne delat od zacatku atd..

a to druhy je na to aby se ti to NPC pripojilo, spawnulo, muzes nastavovat skin, penize, atd; k tomu pouzivas bud FS ( FilterScript ) nebo GM ( GameMod ) a to zaveseni do funkce ConnectNPC je takovi jen rozebrani.. v poctate o nic nejde.. jen jde o to ze NPC se pripoji ( podle nahravky ) a potom mu nastavis jmeno..

Link to comment
Share on other sites

  • 2 weeks later...

Dobrý den, byl bych rád kdybiste mi poradili jak mám vlastně udělat npc postavi, myslim to tak když mám rze8 z netu stahlou tak jak ji mám prevést na rze8.pwn abych to mohl editovat a dat tam ty npc postavi a navíc taky to trochu nechápu editovat filterscript a kde ho najdu ??? ve složce filterscript ?? když tak pomůže mi stím někdo dám mu ty soubory .rec byl bych mu velice vděčnej opravdu moc kdybi to udělal za mě já v tom mám zmatek učím se dělat v pawnu pracuju na jednom svim modu jmenem Realna parba 1 tak plsky mohl by mi to nekdo udelat zame ??? diky moc když tak se ozvěte... ;) "help"

Link to comment
Share on other sites

Dobrý den, byl bych rád kdybiste mi poradili jak mám vlastně udělat npc postavi, myslim to tak když mám rze8 z netu stahlou tak jak ji mám prevést na rze8.pwn abych to mohl editovat a dat tam ty npc postavi a navíc taky to trochu nechápu editovat filterscript a kde ho najdu ??? ve složce filterscript ?? když tak pomůže mi stím někdo dám mu ty soubory .rec byl bych mu velice vděčnej opravdu moc kdybi to udělal za mě já v tom mám zmatek učím se dělat v pawnu pracuju na jednom svim modu jmenem Realna parba 1 tak plsky mohl by mi to nekdo udelat zame ??? diky moc když tak se ozvěte... ;) "help"

co máš z češtiny??? :d :D

Z amx do pwn dat nejde, pokud si chceš přidávat npc postavy na server a mít tam rze, tak to jedině FS.Pokud se učíš v pawnu, tak nezačínej s NPC! Hned první příspěvek na tvorbu NPC, uč se pomalu od začatku ;)

Link to comment
Share on other sites

Dobrý den, byl bych rád kdybiste mi poradili jak mám vlastně udělat npc postavi, myslim to tak když mám rze8 z netu stahlou tak jak ji mám prevést na rze8.pwn abych to mohl editovat a dat tam ty npc postavi a navíc taky to trochu nechápu editovat filterscript a kde ho najdu ??? ve složce filterscript ?? když tak pomůže mi stím někdo dám mu ty soubory .rec byl bych mu velice vděčnej opravdu moc kdybi to udělal za mě já v tom mám zmatek učím se dělat v pawnu pracuju na jednom svim modu jmenem Realna parba 1 tak plsky mohl by mi to nekdo udelat zame ??? diky moc když tak se ozvěte... ;) "help"

co máš z češtiny??? :d :D

Z amx do pwn dat nejde, pokud si chceš přidávat npc postavy na server a mít tam rze, tak to jedině FS.Pokud se učíš v pawnu, tak nezačínej s NPC! Hned první příspěvek na tvorbu NPC, uč se pomalu od začatku ;)

 

 

Z češtiny 4 proč ? :d

 

-- čtv 01. črc 2010 14:45:49 --

 

amx to pwn = DeAmx ale RZE ma ochranu :d

 

No jo ale já na RZE 8 nemám ochranu ja jsi ji vymazal...

Link to comment
Share on other sites

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