[Tutorial] NPC kйszнtйs -
[RKS]Ricsi - 05.12.2009
kc wrote this topic, I translated the topic into a Hungarian language. Source topic:
http://forum.sa-mp.com/index.php?topic=119947.0
A leнrбst "kc" нrta. Magyarosнtбs: [RKS]Ricsi. Forrбs:
Creating NPCs
NPC kйszнtйs
Ebben a leнrбsban bemutatom nektek, hogyan kell "NPC", botokat, szerver бltal vezйnyelt jбtйkosokat kйszнteni.
Felvenni a lejбtszуfбjlt
Előszцr nekьnk fel kell venni az NPC hasznбlatбt a .rec fбjlt. A szervereden jelentkezz be RCON adminisztrбtornak. Ha megvan, tцltsd be a NPC felvйtel szkriptet: "/rcon loadfs npc_record". Itt most tudunk hбrom parancsot hasznбlni, melyek az NPC felvйtelйhez szьksйgesek.
- /vrecord [fбjlnйv] - Elindнt egy felvйtelt, amikor az NPC jбrműt vezet.
- /ofrecord [fбjlnйv] - Elindнt egy felvйtelt, amikor az NPC gyalog kцzlekedik.
- /stoprecord - Leбllнtja az aktuбlisan futу felvйtelt.
Ebben a leнrбsban, kйszнtьnk egy NPC-t, mely jбrműt vezet. A szervereden, gйpeld a /vrecord [fбjlnйv] parancsot: /vrecord mynpc.
Vedd fel azt az ъtvonalat, ahol szeretnйd, hogy az NPC jбtйkosod mozogjon. Ha megvan, gйpeld a /stoprecord parancsot. A szervermappбd, szkriptfбjljai mappбban lesz egy "fбjlnйv.rec" fбjl. Esetьnkben "mynpc.rec". Helyezd бt ezt a fбjlt, a szervermappa/npcmodes/recordings mappбba.
Eddig felvettьk az NPC-d ъtvonalбt, йs бthelyeztьk a megfelelő mappбba.
Irбnyнtani az NPC-t
Az npcmodes mappбban sok fбjlt vehettйl йszre, ezek az NPC viselkedйsйt szolgбljбk. Most hozzunk lйtre egy NPC-t!
Hozz lйtre egy ъj Pawn szkript fбjlt, йs нrd bele ( йrdemes az elejйhez нrni ):
Code:
#define RECORDING "mynpc" // Ez az NPC-d neve, melyet felvettйl
#define RECORDING_TYPE 1 // Az NPC kцzlekedйse, 1 ha jбrműt vezet, 2 ha gyalogol
#include <a_npc> // Az NPC fьggvйnykцnyvtбr beбgyazбsa
public OnRecordingPlaybackEnd ( )
{
StartRecordingPlayback ( RECORDING_TYPE, RECORDING );
return 0;
}
#if RECORDING_TYPE == 1 // Ha az NPC tнpusa jбrműves vezető
public OnNPCEnterVehicle ( vehicleid, seatid )
{
StartRecordingPlayback ( RECORDING_TYPE, RECORDING );
return 0;
}
public OnNPCExitVehicle ( )
{
StopRecordingPlayback ( );
return 0;
}
#else // Viszont ha gyalogos
public OnNPCSpawn ( )
{
StartRecordingPlayback ( RECORDING_TYPE, RECORDING );
return 0;
}
#endif
Most vegyьk бt hogy a kуdban szereplő algoritmusoknak mi a szerepe!
Code:
#define RECORDING "mynpc" // Ez annak a fбjlnak a neve, melyet te felvettйl a szerveren a .rec fбjl
A .rec fбjl neve amit felvettьnk a szerveren. Itt a neve "mynpc", йs ezйrt lett a neve "mynpc".
Code:
#define RECORDING_TYPE 1 // Az NPC jбtйkos tнpusa, ha 1 autуt vezet, ha 2 gyalogos
Az NPC tнpus definiбlбsa
SA-MP, NPC fьggvйnykцnyvtбrak beбgyazбsa.
Code:
public OnRecordingPlaybackEnd ( )
{
StartRecordingPlayback ( RECORDING_TYPE, RECORDING );
return 1;
}
Ez a kуd sor elйri, hogy elindнtja az NPC feladatait. Ha az NPC befejezte a neki felvett feladatokat, elkezdi ъjra.
Code:
public OnNPCEnterVehicle ( vehicleid, seatid )
{
StartRecordingPlayback ( RECORDING_TYPE, RECORDING );
return 1;
}
Ez elindнtja a paramйterek kцzt megadott felvйtelt, amikor az NPC egy jбrműbe ьl.
Code:
public OnNPCExitVehicle ( )
{
StopRecordingPlayback ( );
return 1;
}
Ha az NPC elhagyja az egyik jбrműt, abbahagyja a felvйtelt.
Code:
public OnNPCSpawn ( )
{
StartRecordingPlayback ( RECORDING_TYPE, RECORDING );
return 1;
}
Amikor az NPC elkezdi a jбtйkot, a paramйterek kцzt megadott NPC fбjl nevйt meghнvja (elindнtja ).
Mint lбtod ez egyszerű. Ha megvan, fordнtsd le a szkriptet.
Ha valamilyen hibбt нr ki, akkor nйzd бt a forrбskуdot, nem-e hagytбl el valahonnan zбrуjelet, stb.
Ezt a szkriptet tedd be a szervermappa/npcmodes mappбba.
Csatlakoztatni az NPC-t
A ConnectNPC ( ) fьggvйny csatlakoztatja az NPC-nket a szerverhez.
Code:
ConnectNPC ( "Dave", "mynpc" );
- "Dave" - Az NPC jбtйkos neve. Az NPC jбtйkosokat a nevьk alapjбn lehet megkьlцnbцztetni.
- "mynpc" - Az NPC jбtйkos .AMX szkriptje, melyet behelyeztьnk a szervermappa/npcmodes mappбba.
Code:
public OnGameModeInit ( )
{
print ( "my gamemode" );
ConnectNPC ( "MyFirstNPC", "mynpc" );
return 1;
}
NPC jбtйkos hozzбadбsa a jбtйkhoz, OnGameModeInit ( ) fьggvйnyben.
Code:
public OnFilterScriptInit ( )
{
print ( "my filterscript" );
ConnectNPC ( "MyFirstNPC", "mynpc" );
return 1;
}
Most, hogy meghatбroztuk, hogy a NPC jбtйkos jбrműt vezessen, mбr csak adni kell neki egy eszkцzt, amit vezethet.
Ha az NPC jбtйkosod nincs jбrműben, hagyd ki ezt a rйszt!
Code:
new MyFirstNPCVehicle; // Globбlis vбltozу
public OnGameModeInit ( )
{
print ( "my gamemode" );
ConnectNPC ( "MyFirstNPC", "mynpc" );
MyFirstNPCVehicle = AddStaticVehicle ( 400, 0.0, 0.0, 5.0, 0.0, 3, 3 );
return 1;
}
A NPC jбtйkosnak adunk egy jбrműt.
Code:
new MyFirstNPCVehicle; // Globбlis vбltozу
public OnFilterScriptInit ( )
{
print ( "my filterscript" );
ConnectNPC ( "MyFirstNPC", "mynpc" );
MyFirstNPCVehicle = CreateVehicle ( 400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000 );
return 1;
}
Ha az NPC jбrműve nem az NPC jбtйkos helyzetйnйl van, akkor a jбrmű az NPC jбtйkoshoz kerьl.
Most, hogy az NPC jбrműve az NPC jбtйkosnбl van, mбr csak bele kell őt tenni. Ha az NPC jбtйkosod gyalogos, hagyd ki ezt a lйpйst!
Code:
public OnPlayerSpawn ( playerid )
{
if ( IsPlayerNPC ( playerid ) ) // Ellenőrzi a szerver, hogy a jбtйkos NPC jбtйkos-e
{
new npcname [ MAX_PLAYER_NAME ]; // Lйtrehozunk egy vбltozуt, ami az NPC jбtйkos nevйt tбrolja
GetPlayerName ( playerid, npcname, sizeof ( npcname ) ); // A szerver lekйri az NPC jбtйkos nevйt, eltбrolja a vбltozуba
if ( !strcmp ( npcname, "MyFirstNPC", true ) ) // Цsszehasonlнtja a jбtйkos nevйt a "MyFirstNPC" nйvvel
{
PutPlayerInVehicle ( playerid, MyFirstNPCVehicle, 0 ); // Beletesszьk a jбtйkost az NPC jбtйkos jбrművйbe
}
return 1;
}
// Ha a jбtйkos normбlis jбtйkos, azaz nem NPC jбtйkos, azok funkciуi itt lesznek
return 1;
}
Ha kettő, vagy tцbb NPC-t akarsz a szerveredre, akkor kьlцn neveket kell adni, йs vigyбzni rб, hogy ne keveredjenek egymбs funkciуi. Itt egy pйlda, ami kettő NPC jбtйkost hoz lйtre:
Code:
public OnPlayerSpawn ( playerid )
{
if ( IsPlayerNPC ( playerid ) ) // Ellenőrzi a szerver, hogy a jбtйkos NPC jбtйkos-e
{
new npcname [ MAX_PLAYER_NAME ]; // Lйtrehozunk egy vбltozуt
GetPlayerName ( playerid, npcname, sizeof ( npcname ) ); // Megkeressьk az NPC jбtйkos nevйt
if ( !strcmp ( npcname, "MyFirstNPC", true ) ) // Цsszehasonlнtsuk a jбtйkos nevйt a "MyFirstNPC" nйvvel
{
PutPlayerInVehicle ( playerid, MyFirstNPCVehicle, 0 ); // Beletesszьk a jбtйkost, a jбrműbe
return 1; // Visszatйrйsi йrtйk
}
if ( !strcmp ( npcname, "MySecondNPC", true ) ) // Ellenőrzik a kцvetkező nйvvel
{
PutPlayerInVehicle(playerid, AnotherVehicleID, 0); // Betesszьk őt a jбrműbe
return 1; // Visszatйrйsi йrtйk
}
return 1; // Visszatйrйsi йrtйk
}
// Azok a jбtйkosok, melyek nem NPC-k, azok funkciуi ide jцnnek
return 1;
}
Fordнtsd le a szkriptet, йs kйszen vagy!
Problйmбk
- Az NPC elhagyja a szervert:
Valami tцrli, vagy kбrt okoz az NPC-dben.
Code:
if ( IsPlayerNPC ( playerid ) ) return 1;
- Az NPC-d egyбtalбn nem csatlakozik a szerverhez:
Lehetsйges, hogy a szervered jelszуval van vйdve, ezйrt nem tud felcsatlakozni.
- Nem tцlti be a felvйtelt kйszнtő szkriptet:
Prуbбld meg ъjra betцlteni a szkriptet, vagy szerezd be ъjra.
- Az NPC-m бll a kezdőhelyйn, йs nem csinбl semmit.
Menny vissza az OnPlayerSpawn ( ) fьggvйnyhez, йs nйzd meg hogy mindent rendben нrtбl-e meg.
- Az NPC-t RC5 verziуban kйszнtettem, йs most nem műkцdik:
A server.cfg-nйl egy vбltozу:
Code:
maxnpc number_goes_here
Ezt нrd be a server.cfg-be, ha nem lett volna ott, йs az йrtйkйt нrd 0-ra:
Code:
maxnpc number_goes_here 0
kc wrote this topic, I translated the topic into a Hungarian language. Source topic:
http://forum.sa-mp.com/index.php?topic=119947.0
A leнrбst "kc" нrta. Magyarosнtбs: [RKS]Ricsi. Forrбs:
Creating NPCs
Re: [Tutorial] NPC kйszнtйs -
MPKaboose - 08.12.2009
ezt csak most vettem йszre jу munka ezt ki is stickyzem (kicsit furбn hangzik lol)
Re: [Tutorial] NPC kйszнtйs -
[RKS]Ricsi - 08.12.2009
Quote:
Originally Posted by Coli
Quote:
A leнrбst "kc" нrta. Magyarosнtбs: [RKS]Ricsi. Forrбs: Creating NPCs
|
Ezt szerintem нrd oda angolul is, nehogy "kc" fйlreйrtse
Ьdv:Coli
|
Kцsz amъgy azйrt нrtam hogy "kc" mert az volt a neve.
Quote:
Originally Posted by Kaboose
ezt csak most vettem йszre jу munka ezt ki is stickyzem (kicsit furбn hangzik lol)
|
Kцsz.
Re: [Tutorial] NPC kйszнtйs -
[RKS]Ricsi - 10.12.2009
Quote:
Originally Posted by Coli
tudom h az a neve....
|
Csak furcsбlltam hogy idйzőjelbe tetted, bбr йn is mind1. xD
Re: [Tutorial] NPC kйszнtйs -
[HUN]Gamestar - 11.12.2009
Jу-jу lett,de most nem azйrt minden magyar a kc fйle leнrбst fordнtja,nem нr цnnбllуt,
ez olyan snazz...(Ez a 3. fordнtбs tudomбsom szerint...)
Re: [Tutorial] NPC kйszнtйs -
[RKS]Ricsi - 12.12.2009
Quote:
Originally Posted by .:: ZeX ::.
Jу-jу lett,de most nem azйrt minden magyar a kc fйle leнrбst fordнtja,nem нr цnnбllуt,
ez olyan snazz...(Ez a 3. fordнtбs tudomбsom szerint...)
|
Mйg annak idejйn amikor kiadtбk a sa-mp 0.3a -s verziуt, a Magyar fуrumon kellett egy felhasznбlуnak egy Magyar nyelvű leнrбs az NPC kйszнtйsről (mert nem tudott Angolul). Ezйrt segнtettem neki annyiban hogy lefordнtottam neki ezt a leнrбst Magyar nyelvre (Azйrt fordнtottam mert mйg nem йrtettem olyan szinten az NPC-khez hogy leнrбst нrjak hozzбjuk. Nem voltam biztos benne hogy mindent jуl tudok rуluk.).
Aztбn a hбla az volt hogy kitцrцltйk az egйszet a Magyar fуrumrуl.. azуta se jбrok nagyon rб.
Majd нrok egy sajбtot.
Re: [Tutorial] NPC kйszнtйs -
M1K1 - 26.12.2009
Hy!
Йn mindent ъgy csinбltam ahogy kell (Gondolom йn ) a jбrműves NPC-nйl de lбthatatlan a jбrműve...
Beleraktam Script -be is ( mert ugyanis йn gmodba raktam előszцr ) de akkor is lбthatatlan neki
PLS Help!
Re: [Tutorial] NPC kйszнtйs -
[RKS]Ricsi - 26.12.2009
Quote:
Originally Posted by M1K1
Йn mindent ъgy csinбltam ahogy kell (Gondolom йn ) a jбrműves NPC-nйl de lбthatatlan a jбrműve...  Beleraktam Script -be is ( mert ugyanis йn gmodba raktam előszцr ) de akkor is lбthatatlan neki
|
Lehet hogy a jбrmű nem abban az interiorban van amiben te vagy йs nйzed.
Йs a jбrmű ott van a szerveren, vezeti a jбtйkos йs nem lehet lбtni, vagy egyбltalбn nincs jбrmű?
Itt van az egyik NPC szkriptem, hбtha segнt:
Code:
#include <a_samp>
new BotVehicle;
new Tram;
public OnFilterScriptInit ( )
{
ConnectNPC ( "SanAndreasTrain", "Bot" );
ConnectNPC ( "SanFierroTram", "Tram" );
BotVehicle = AddStaticVehicle(537,0.0,0.0,0.0,0.0,1,1);
Tram = AddStaticVehicle(449,0.0,0.0,0.0,0.0,1,74);
return 1;
}
public OnPlayerSpawn ( playerid )
{
if ( IsPlayerNPC ( playerid ) )
{
new npcname [ MAX_PLAYER_NAME ];
GetPlayerName ( playerid, npcname, sizeof ( npcname ) );
if ( !strcmp ( npcname, "SanAndreasTrain", true ) )
{
PutPlayerInVehicle ( playerid, BotVehicle, 0 );
return 1;
}
if ( !strcmp ( npcname, "SanFierroTram", true ) )
{
PutPlayerInVehicle ( playerid, Tram, 0 );
return 1;
}
return 1;
}
return 1;
}
Re: [Tutorial] NPC kйszнtйs -
M1K1 - 27.12.2009
Kцsz.
De sokat ondolkoztam mitől lehetne lбthatatlan йs нgy eszembe jutott hogy egy arйnбba raktam kocsikat... йs gondoltam annak a LinkVehicleInterior -ja nem engedi... нgy hбt "zцldbe raktam" йs mбr lбtszуdik az NPC-m
Re: [Tutorial] NPC kйszнtйs -
Hun_Norberto - 17.02.2010
Nбlam nem műkцdik.
Egyбltalбn nem csinбl semmit a szerver.
Quote:
Originally Posted by [RKS
|
Re: [Tutorial] NPC kйszнtйs -
[RKS]Ricsi - 18.02.2010
Quote:
Originally Posted by Hun_Norberto
Nбlam nem műkцdik.
Egyбltalбn nem csinбl semmit a szerver.
Quote:
Originally Posted by [RKS
|
|
A server.cfg -ben a maxnpc sor mцgй mi van нrva?
Re: [Tutorial] NPC kйszнtйs -
ddani99 - 12.03.2010
na szуval mindet hibбtlanul megcsinбltam .. elvileg.. legalбbb is mйg csak 1 warningom se volt.. minde a helyбn van de nem lбtom az NPC-t ..

nincsen bent vagy nem tudom nem jelenнti meg pedig elvileg minden jу.
Re: [Tutorial] NPC kйszнtйs -
Shark23 - 25.05.2010
Szevasztok!
Fogjuk rб egy kicsikйt kezdő scripter vagyok йrtek egy pбr dologhoz
De most kifejezetten az NPC йrdekel autу nйlkьl, nekem :
(32) : warning 235: public function lacks forward declaration (symbol "OnGameModeInit")
(35) : error 017: undefined symbol "ConnectNPC"
(39) : warning 235: public function lacks forward declaration (symbol "OnFilterScriptInit")
(42) : error 017: undefined symbol "ConnectNPC"
Ezeket нrja ki foggalmam nincs, hogy mit kйne velьk csinбlni, totбlisan elrontottam XD
Valaki leнrnб nekem a teljes NPCs dolgot hogy hogy kell egy gyalogos NPCt megcsinбlni?
Kцssz
Re: [Tutorial] NPC kйszнtйs -
[Hun]SnicKerS - 27.05.2010
Frissнtsd a 0.3 szervercsomagra a fбjljaidat.
Re: [Tutorial] NPC kйszнtйs -
[HUN]Gamestar - 31.05.2010
Kicsit fordнtуprogram hangulatъ...
Meg nem бrtana frissнteni...
Egyйbkйnt jу
Re: [Tutorial] NPC kйszнtйs -
winczek1 - 13.07.2010
HElp plz valaki! Azt нrja ki, mikor beнrom, hogy /vrecord, hogy Unknown command. Prуbбltam leszedni ъj npc_record-ot, de mйg mindig semmi. VAlaki segнtsen
Re: [Tutorial] NPC kйszнtйs -
csedddsz - 31.10.2010
Ha talбn бtnйzznйd a dripduulsokat akor lehet menne mert hнbбt talбlni nem nehйz ha figyelsz, valamit nem jуl csinбltбl.
Re : [Tutorial] NPC kйszнtйs -
asdfjkle - 07.01.2011
nem akar felcsatlakozni a szerverre az npc :S
Re: [Tutorial] NPC kйszнtйs -
norbee0170 - 22.05.2011
Csatlakoztatni az npc-t a mod-ba kell? o.O