GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Tanuljunk PAWN nyelvet => A témát indította: Epsilon - 2009. április 12. - 20:11:46

Cím: [Lecke]strtok() + Magyarázat!
Írta: Epsilon - 2009. április 12. - 20:11:46
Példaképp lassacskán elkészítünk egy parancsot minden részt elmagyarázva.
A parancs az /murder parancs lesz.
Az strtok kód elérhető itt
Ez a kód szükséges hogy később használhassuk az strtokot.
 
new cmd[128], idx;
cmd = strtok(cmdtext, idx);

 
Ezt az OnPlayerCommandText() alá tegyük
Kód magyarázata:
A cmd az a cmdtext szétbontott változatának egyik része, az idx pedig a segédváltozó.
A szétbontást az strtok() függvény végzi el.
Kezdjük el a parancs elkészítését:
 
if(!strcmp(cmd, \"/murder\", true))
{

 
Ez lecsekkolja hogy a játékos által beírt parancs első része megegyezik-e az általunk megadott karakterlánccal azaz a /murder-rel.
Hozzunk létre egy új karakter láncot ami azt fogja eltárolni ami a /murder után lett beírva.
 
new params[128];

 
Tároljuk el benne az infót:
 
params = strtok(cmdtext, idx);

 
Ha a játékos nem ír be semmit akkor szólunk neki kegyesen h tévedett. pl. így:
 
if(!strlen(params)) return SendClientMessage(playerid, 0xFFFFFFFF, \"pfff... használat: /murder [id]\");

 
Ha kényelmesebbé akarjuk tenni későbbiekben a beírt ID kezelését akkor ezt is adjuk parancsunkhoz:
 
new givenid = strval(params);

 
És akkor dolgozzunk vele:
 

if(IsPlayerConnected(givenid)) SetPlayerHealth(givenid,-50);
   else SendClientMessage(playerid,szín,\"A megadott ID nincs a szerveren.\");

 
Ezek után állítsuk be a visszatérési értéket és az előbb kinyított {-eket zárju be.
Ha mindent így csináltunk akkor a parancsunk készen van:
 
if(!strcmp(cmd, \"/murder\", true))
{
   new params[128];
params = strtok(cmdtext, idx);
if(!strlen(params)) return SendClientMessage(playerid, 0xFFFFFFFF, \"pfff... használat: /murder [id]\");
new givenid = strval(params);
if(IsPlayerConnected(givenid)) SetPlayerHealth(givenid,-50);
   else SendClientMessage(playerid,szín,\"A megadott ID nincs a szerveren.\");
return 1;
}

 
Bocs az indentációért. Ti majd rendesen megcsináljátok:)
Jöhetnek kérdések,kommentek,kritikák,problémák!
Plusz magyarázás:
 
if(!strlen(params)) return SendClientMessage(playerid, 0xFFFFFFFF, \"pfff... használat: /murder [id]\");

 
Minden függvénynek saját visszatérési értéke van. Álatlában 1 ha végbe ment és 0 vagy -1 ha nem.
Ha valahova odaírjuk h return 1; akkor az alatta lévő dolgok nem fognak megtörténni.
Lásd: Admin Skinek
Ennél a callbacknél ha a visszatérési érték(e a callbacknek) 0 akkor nem enged spawnolni ha egy akkor pedig igen.
A végén ottvan a return 1; szóval alapból engedi spawnolni a játékosokat de ha a játékos skine xy és nem Admin akkor a callback visszatérési értke 0 azaz nem spanwolhat és a szerver nem jut el a return 1; beolvasásához --> enm engedi spanwolni.
Így a mi parancsunk így nézne ki ha csak adminok használhatják:
 
if(!strcmp(cmd, \"/murder\", true))
{
   new params[128];
params = strtok(cmdtext, idx);
if(!IsPlayerAdmin(playerid)) return 0; // Unkown Command, ha nem admin
if(!strlen(params)) return SendClientMessage(playerid, 0xFFFFFFFF, \"pfff... használat: /murder [id]\");
new givenid = strval(params);
if(IsPlayerConnected(givenid)) SetPlayerHealth(givenid,-50);
   else SendClientMessage(playerid,szín,\"A megadott ID nincs a szerveren.\");
return 1;
}

 


Epsilon
Cím: [Lecke]strtok() + Magyarázat!
Írta: ]ReHtafDoG - 2009. április 13. - 08:03:08
-.-\"
strk a parancsokhoz használható...
most már érted? :D
U.I: szép TuT
Cím: [Lecke]strtok() + Magyarázat!
Írta: shanyi - 2009. április 13. - 11:14:38
<---komment törölve, mert lámaság volt...--->  ::)
Cím: [Lecke]strtok() + Magyarázat!
Írta: ComputerMaster - 2009. április 13. - 15:44:32
Igen lécci írd le a kezdõk nyelvén is :D me én sem nagyon értem :S de amúgy jó lenne ha értelmesebb kölyök lennék xD
Üdv: CM
Cím: [Lecke]strtok() + Magyarázat!
Írta: [GRL]FREDDY[CL] - 2009. április 13. - 19:03:57
Szerintem pontosan ilyen egy igazi tutorial, amely mindent elmagyarázz, szép lett, grat!
Cím: [Lecke]strtok() + Magyarázat!
Írta: ]ReHtafDoG - 2009. április 13. - 19:09:21
Idézetet írta: ComputerMaster date=1239630272\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"22\" data-ipsquote-contentclass=\"forums_Topic
Igen lécci írd le a kezdõk nyelvén is :D me én sem nagyon értem :S de amúgy jó lenne ha értelmesebb kölyök lennék xD
Üdv: CM
 
Olyan parancsokhoz való ahol beileszük a \"[iD]\" hogy ki lehesen választani kinek a részere hason a parancs...
Ezt egy kúkás is megérti.. ;D
Cím: [Lecke]strtok() + Magyarázat!
Írta: Donovan - 2009. április 13. - 21:18:00
Sztem jó kis Tut grat!
Cím: [Lecke]strtok() + Magyarázat!
Írta: ]ReHtafDoG - 2009. április 13. - 21:26:13
if(IsPlayerAdmin(playerid))
if[gTeam] = TEAM_POLICE;
Cím: [Lecke]strtok() + Magyarázat!
Írta: Epsilon - 2009. április 14. - 08:00:47
Szépes sorjában haladjatka kérdésekkel. Mi az amit legelõszõr nem értetek?
Epsilon
Cím: [Lecke]strtok() + Magyarázat!
Írta: [DrM]Spatrik - 2009. április 14. - 08:36:53
ezt minek kezdõknek elmagyarázni? ha még rendes parancsot se tudnak egymaguk megírni akkor ezt hogy fogják? :D
Cím: [Lecke]strtok() + Magyarázat!
Írta: Epsilon - 2009. április 14. - 11:50:26
Ha elmondják hol akadt el a tudomány én még parancsok észíteni is megtanítom õket :)
Epsilon
Cím: [Lecke]strtok() + Magyarázat!
Írta: ]ReHtafDoG - 2009. április 14. - 15:48:26
shanyi nem akarlak piszkálni de sztem többet értek hozzá..
és régebben tolom mint te ;)
Cím: [Lecke]strtok() + Magyarázat!
Írta: Epsilon - 2009. április 14. - 16:14:28
Idézetet írta: shanyi date=1239709151\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"22\" data-ipsquote-contentclass=\"forums_Topic

ReHtafDoG link=topic=862.msg10059#msg10059 date=1239650773]
 if(IsPlayerAdmin(playerid))
if[gTeam] = TEAM_POLICE;
 
Fú istenem de pro vagy gyerek -.- Ezt már régen tudom,de ezt hogy illesztem bele az strtok-os parancsba?? Engem ez érdekel,meg figyelj,ha valakivel beszélsz,úgy beszélj vele hogy az a valaki nem hülyébb mint te -.-
 
[/quote]
Ha veszekedni akartok tegyétek ott de itt moderáljátok magatok légyszíves..
 


________________________

 
 

Igen,ezt még megérterrem,de az egyes részek \"miért\" -jét még nem,tehát mért pont \"params\" meg mért pont azt kell odaírni,(jó ez most hülye példa volt,de akkor is ...)
Ja és egy kérdés: Hogyan tudnám azt hozzáadni hogy pl csak a TEAM_POLICE használhassa,vagy csak admin,tehát ezt hogy írjam bele? mert ahogy most írtam úgy nem ment,de amit leírtál,azt bemásoltam/átírtam és remekül mûködik,a tut szép,félre ne értsd,csak nem a leg részlegesebb,amiennek egy szép tutnak kéne lenni -legalábbis szerintem- ,de jó lett!
 
[/quote]
Mit részletezzek még?
Minden le van írva, az hogy az alapfogalmakat nem ismered te bajod, de ha elmonod mit nem rétesz segítek/segítünk ;)
 


________________________

 
 

Hát erre a rövid kommentem :            He?!                   
Ebbõl semmit sem értettem,csak amennyit eddig tudtam;másold be és írd át ...
 
[/quote]
 

Igen lécci írd le a kezdõk nyelvén is :D me én sem nagyon értem :S de amúgy jó lenne ha értelmesebb kölyök lennék xD
Üdv: CM
 
[/quote]

Tudom hogy mire használható,csak még mindig nem tudom hogy kell ÍRNI,tehát nem bemásolni,hanem megírni azt,vagyis .. namindegy,majd légyszi írd le a kezdõk nyelvén is...
És hogy lehet beszúrni még egy téyezõt? mondjuk hogy \"gTeam[playerid] == TEAM_NEV\" ??
 
[/quote]
Válasz:
 

Szépes sorjában haladjatka kérdésekkel. Mi az amit legelõszõr nem értetek?
 
[/quote]
 


________________________

 
 
ReHtafDoG link=topic=862.msg10004#msg10004 date=1239602588]
-.-\"
strk a parancsokhoz használható...
most már érted? :D
U.I: szép TuT
 
[/quote]

Szerintem pontosan ilyen egy igazi tutorial, amely mindent elmagyarázz, szép lett, grat!
 
[/quote]
SsG[]Donovan link=topic=862.msg10053#msg10053 date=1239650280]
Sztem jó kis Tut grat!
 
[/quote]
Kössz!
 

Epsilon
Cím: [Lecke]strtok() + Magyarázat!
Írta: Baliboy - 2009. április 14. - 16:22:05
Ebbõl nehogy veszekedés legyen :O
Cím: [Lecke]strtok() + Magyarázat!
Írta: Epsilon - 2009. április 14. - 16:23:49
Egy kis magyarázás hozzáadva a tuthoz.
Epsilon
Cím: [Lecke]strtok() + Magyarázat!
Írta: shanyi - 2009. április 14. - 17:27:00
<---komment törölve, mert lámaság volt...--->  ::)
Cím: [Lecke]strtok() + Magyarázat!
Írta: Epsilon - 2009. április 14. - 18:25:03
Idézetet írta: shanyi date=1239722820\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"22\" data-ipsquote-contentclass=\"forums_Topic
Hát az lehet,de akkor ne olyan függvényeket írj oda amiker mikor kezdtem már tudtam ...
 
Ezt most nem vágom..
Epsilon
Cím: [Lecke]strtok() + Magyarázat!
Írta: shanyi - 2009. április 14. - 21:39:54
<---komment törölve, mert lámaság volt...--->  ::)
Cím: [Lecke]strtok() + Magyarázat!
Írta: Baliboy - 2009. április 14. - 21:49:53
shanyi megtudhatom hogy az elõzõ hozzászólásod mire volt jó??? :D
idéztél egyet azt kész.. lol
Cím: [Lecke]strtok() + Magyarázat!
Írta: ►ѕтa - 2009. április 28. - 10:16:54
Xd hát ja
amúgy jó TuT!Grat
Cím: [Lecke]strtok() + Magyarázat!
Írta: Epsilon - 2009. április 28. - 14:55:20
kössz
Epsilon
Cím: [Lecke]strtok() + Magyarázat!
Írta: Kowalski - 2009. május 01. - 16:23:50
A cmd az a cmdtext szétbontott változatának egyik része, az idx pedig a másik.[/quote]
Az \'idx\' a \"cmdtext szétbontott változatának másik része\"? Az \'idx\' szimbólum egy egész típusú változót jelöl és semmiképp sem karakterláncot. Ennek a leckének pedig jobb lenne, ha mondjuk a \"strtok() függvény alkalmazása parancsoknál\" címet adnád, mert a függvény mûködésérõl semmit sem írsz.
 
strk a parancsokhoz használható...
most már érted? Vigyorog
[/quote]
Nem feltétlenül. Lehet parancsot írni strtok() használata nélkül is, és az strtok() függvényt is fel lehet használni más téren is, például fájlmûveleteknél.
Ковалски
Cím: [Lecke]strtok() + Magyarázat!
Írta: Alpha - 2009. szeptember 12. - 14:07:30
Amúgy ha valakinek van egy kicsi angol tudása meg józan esze akkor nagyon sok mindent megtud csinálni pawnoba én is így vok vele
nagyon jó tutorial :D
Cím: [Lecke]strtok() + Magyarázat!
Írta: BencEE - 2009. szeptember 12. - 15:27:36
Szép TuT.
Cím: [Lecke]strtok() + Magyarázat!
Írta: Prof3]sSoR - 2009. szeptember 12. - 16:49:29
nem volt ertelme most egy 4 honapos temahoz hozzaszolni
Cím: [Lecke]strtok() + Magyarázat!
Írta: Iceaac - 2009. november 27. - 18:51:28
Azt is elárulod, hogy lehet például egy olyan parancsot, hogy:
/parancs ID SZÁM -> pl a megadott játéos csapatát állítja, ha 1 akkor piros csapat, ha 2 az érték, zöld csapat. :)
Cím: [Lecke]strtok() + Magyarázat!
Írta: Rapidhand - 2010. február 02. - 20:32:03
Bocs h közbeszólok,de vki (Zsobo) eltüntette az strtok makrót.
Nem láttam sehol a fórumon szal felraktam (remélem nem baj...)
Itt megtalálhatjátok a kódot.
Szerk:A tut meg cool ^^ Grat
Cím: [Lecke]strtok() + Magyarázat!
Írta: Gamestar - 2010. február 09. - 21:57:42
Idézetet írta: Rapidhand date=1265139123\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"22\" data-ipsquote-contentclass=\"forums_Topic
Bocs h közbeszólok,de vki (Zsobo) eltüntette az strtok makrót.
Nem láttam sehol a fórumon szal felraktam (remélem nem baj...)
Itt megtalálhatjátok a kódot.
Szerk:A tut meg cool ^^ Grat
 
Makrót? Ebben biztos vagy?
Egyébkét nem mondanám strtok leírásnak. Egy ilyen parancs létrehozásához van a dcmd és az sscanf.
Cím: [Lecke]strtok() + Magyarázat!
Írta: Epsilon - 2010. február 10. - 09:36:06
Idézetet írta: Gamestar date=1265749062\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"22\" data-ipsquote-contentclass=\"forums_Topic
Egyébkét nem mondanám strtok leírásnak. Egy ilyen parancs létrehozásához van a dcmd és az sscanf.
 
Talán én annak mondtam? A téma megírásakor az strtok sokkal elterjedtebb volt mind a DCMD és akkor már volt DCMD-s tut.
Cím: [Lecke]strtok() + Magyarázat!
Írta: ALIEN - 2010. február 17. - 14:04:01
Szerintem Eplison te vagy a legjobb scripter a fórumon.
Nem kell mondanom de azé elmondom hogy Jó TuT!
Cím: [Lecke]strtok() + Magyarázat!
Írta: Epsilon - 2010. február 17. - 15:16:09
Ízlések és pofonok, am kössz.
Cím: [Lecke]strtok() + Magyarázat!
Írta: Rapidhand - 2010. február 20. - 22:57:47
Idézetet írta: Gamestar date=1265749062\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"22\" data-ipsquote-contentclass=\"forums_Topic


Bocs h közbeszólok,de vki (Zsobo) eltüntette az strtok makrót.
Nem láttam sehol a fórumon szal felraktam (remélem nem baj...)
Itt megtalálhatjátok a kódot.
Szerk:A tut meg cool ^^ Grat
 
Makrót? Ebben biztos vagy?
Egyébkét nem mondanám strtok leírásnak. Egy ilyen parancs létrehozásához van a dcmd és az sscanf.
 
[/quote]
Igen biztos vagyok benne