Szerző Téma: [Lecke]strtok() + Magyarázat!  (Megtekintve 7071 alkalommal)

Nem elérhető Epsilon

  • 1854
    • Profil megtekintése
[Lecke]strtok() + Magyarázat!
« Dátum: 2009. április 12. - 20:11:46 »
0 Show voters
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
« Utoljára szerkesztve: 2009. május 09. - 19:25:36 írta Epsilon »

[Lecke]strtok() + Magyarázat!
« Válasz #1 Dátum: 2009. április 13. - 08:03:08 »
0 Show voters
-.-\"
strk a parancsokhoz használható...
most már érted? :D
U.I: szép TuT

Nem elérhető shanyi

  • 171
    • Profil megtekintése
[Lecke]strtok() + Magyarázat!
« Válasz #2 Dátum: 2009. április 13. - 11:14:38 »
0 Show voters
<---komment törölve, mert lámaság volt...--->  ::)
« Utoljára szerkesztve: 2009. július 07. - 16:56:39 írta shanyi »

ComputerMaster

  • Vendég
[Lecke]strtok() + Magyarázat!
« Válasz #3 Dátum: 2009. április 13. - 15:44:32 »
0 Show voters
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

[GRL]FREDDY[CL]

  • Vendég
[Lecke]strtok() + Magyarázat!
« Válasz #4 Dátum: 2009. április 13. - 19:03:57 »
0 Show voters
Szerintem pontosan ilyen egy igazi tutorial, amely mindent elmagyarázz, szép lett, grat!

[Lecke]strtok() + Magyarázat!
« Válasz #5 Dátum: 2009. április 13. - 19:09:21 »
0 Show voters
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

Donovan

  • Vendég
[Lecke]strtok() + Magyarázat!
« Válasz #6 Dátum: 2009. április 13. - 21:18:00 »
0 Show voters
Sztem jó kis Tut grat!

[Lecke]strtok() + Magyarázat!
« Válasz #7 Dátum: 2009. április 13. - 21:26:13 »
0 Show voters
if(IsPlayerAdmin(playerid))
if[gTeam] = TEAM_POLICE;
« Utoljára szerkesztve: 2009. április 13. - 21:27:56 írta ]ReHtafDoG »

Nem elérhető Epsilon

  • 1854
    • Profil megtekintése
[Lecke]strtok() + Magyarázat!
« Válasz #8 Dátum: 2009. április 14. - 08:00:47 »
0 Show voters
Szépes sorjában haladjatka kérdésekkel. Mi az amit legelõszõr nem értetek?
Epsilon

[DrM]Spatrik

  • Vendég
[Lecke]strtok() + Magyarázat!
« Válasz #9 Dátum: 2009. április 14. - 08:36:53 »
0 Show voters
ezt minek kezdõknek elmagyarázni? ha még rendes parancsot se tudnak egymaguk megírni akkor ezt hogy fogják? :D

Nem elérhető Epsilon

  • 1854
    • Profil megtekintése
[Lecke]strtok() + Magyarázat!
« Válasz #10 Dátum: 2009. április 14. - 11:50:26 »
0 Show voters
Ha elmondják hol akadt el a tudomány én még parancsok észíteni is megtanítom õket :)
Epsilon

[Lecke]strtok() + Magyarázat!
« Válasz #11 Dátum: 2009. április 14. - 15:48:26 »
0 Show voters
shanyi nem akarlak piszkálni de sztem többet értek hozzá..
és régebben tolom mint te ;)

Nem elérhető Epsilon

  • 1854
    • Profil megtekintése
[Lecke]strtok() + Magyarázat!
« Válasz #12 Dátum: 2009. április 14. - 16:14:28 »
0 Show voters
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

Baliboy

  • Vendég
[Lecke]strtok() + Magyarázat!
« Válasz #13 Dátum: 2009. április 14. - 16:22:05 »
0 Show voters
Ebbõl nehogy veszekedés legyen :O

Nem elérhető Epsilon

  • 1854
    • Profil megtekintése
[Lecke]strtok() + Magyarázat!
« Válasz #14 Dátum: 2009. április 14. - 16:23:49 »
0 Show voters
Egy kis magyarázás hozzáadva a tuthoz.
Epsilon

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal