Tanóra anyaga: Bevezetés a Zcmd-be és az Sscanf-ba
Szükséges Pluginok/Includeok: Zcmd parancsfeldolgozó és Y_Less sscanf2 pluginja, valamint az sscanf2 include.
Sziasztok!
Zcmd és Sscanf!
Egy kezdõ Scripternek ijesztõen hangozhat ez a két szavacska, pedig ha sikerül megérteni õket, pofonegyszerû tud lenni
A Mód elejére felírjuk a szükséges Includeokat:
#include <a_samp> // A függvénykönyvtárunk, ami mindenhova kötelezõ
#include <zcmd> // A \"zcmd\" amely tartalmazza a parancsfeldolgozót
#include <sscanf2> // És az sscanf2.
Következõ lépés -> Parancsok létrehozása Zcmd-ben.
Többféleképpen lehet:
CMD:
COMMAND:
command:
Szóval, akkor nézzük meg egy parancs elejét.
Én mindenhol a \"CMD\" Rövidítést használom, de ti természetesen használhattok mást is!
CMD:parancs(playerid, params[])
Egyszerûbben néz ki, mint az strcmp, és egyszerûbb is.
Különszedve a részei:
\"CMD\" -> Ezzel fejezzük ki a pawnonak, hogy Zcmd-t használunk.
\"parancs\" -> A Parancs neve. A Játékos ezt fogja beírni \"per\" jellel. (/parancs)
\"playerid\" -> A Játékos, aki beírta a parancsot.
\"params[]\" -> A Parancs paraméterei
Szóval, akkor csináljunk egy parancsot, és kezdjünk vele bele az sscanf rejtelmeibe is
CMD:kick(playerid, params[])
{
new aldozat, indok[24], string[125], JatekosNev[24], AdminNev[24]; // Létrehozzuk a változókat
if(IsPlayerAdmin(playerid)) // Megkérdezzük, hogy Rcon admin-e.
{
if(sscanf(params, \"us[24]\", aldozat, indok)) return SendClientMessage(playerid,0x0FFF,\"Használat: /kick id indok\");
else if(aldozat == INVALID_PLAYER_ID) return SendClientMessage(playerid,0x0FFF,\"Nem Online\");
else
{
GetPlayerName(aldozat, JatekosNev, sizeof(JatekosNev));
GetPlayerName(playerid, AdminNev, sizeof(AdminNev));
format(string, sizeof(string), \"%s kirúgta a %s(%d) nevû játékost. Indok: %s\", AdminNev, JatekosNev, aldozat, indok);
SendClientMessageToAll(0x0FFF, string);
Kick(aldozat); // Kickeljük az áldozatot
}
}
else return SendClientMessage(playerid, 0x0FFF, \"Nem használhatod\"); // Ha nem Rcon admin, nem engedjük használni
return 1;
}
Bõvebben:
aldozat: A Parancs egyik paramétere
indok: Szintén a parancs egyik paramétere
string: Létrehozunk egy stringet, amit a késõbbiekben használtunk a parancs során
JatekosNev: A bannolt játékos neve
AdminNev: A Bannoló admin neve
Nézzük ezt a sort:
if(sscanf(params, \"us[24]\", aldozat, indok)) return SendClientMessage(playerid,0x0FFF,\"Használat: /kick id indok\");
Ebben a részben sscanfot használunk, hogy kifejtsük a parancs paramétereit.
Az \"u\" kifejezi, hogy a parancsban szereplõ elsõ paraméter egy Játékos neve, vagy id-je lesz.
A Következõ karakter az \"s\". Kifejezi, hogy egy String következik.
Ezek után változókat láthattok. Késõbb láthattok egy visszatérést. Ha a Paraméterek nem lettek megadva, vagy hibásan lettek megadva, akkor ez lép érvénybe.
Ennyi lett volna. Ugye nem is volt nehéz?