ZCMD PARANCSFELDOLGOZÓ
A zcmd elõnyei a dcmd-hez viszonítva: - SEBESSÉG - Több parancs esetén a szerveren a sebesség nem elhanyagolható.
- EGYSZERÛSÉG - A zcmd szerintem a parancsok írásának talán legegyszerûbb módja. Persze, ezt nekted kell eldöntenetek.
Miért gyorsabb a zcmd, mint a dcmd?Gyorsabb, mivel a dcmd OnPlayerCommandText(), a zcmd pedig a CallLocalFunction() segítségével hívja a parancsokat. Illetve, amikor a játékos meghívja a parancsot, a dcmd végigfut az összes parancson, ellenõrizve, hogy azt keresi-e. Ez nem éppen szerencsés, ha a parancs (amely akár 300 körül is lehet, nagyobb munkákban), amelyet keres, nem létezik, és õ mégis végignézi mindegyiket (hiszen nem találta még meg) a szkriptben, ezzel pedig feleslegesen használja az erõforrásokat.
Használat:A használata nagyon egyszerû. Töltsétek le a függvénykönyvtárat a lenti linkrõl!
>>> LETÖLTÉS <<<A letöltött függvénykönyvtárat helyezzétek a pawno \"include\" mappájába.
A szkript elejére írjátok be a(z) \"#include <zcmd>\" szöveget, majd kövessétek a lenti utasításokat egy parancs kidolgozásához.
A parancs kidolgozása zcmd-vel nagyon egyszerû. Az alábbi példán minden be van mutatva:
CMD:parancsneve(playerid, params[]){ // A \"CMD:\" elõtag után írd a parancsot, vagyis, amit a játékosnak a parancs futtatásához be kell írnia (ebben az esetben ez: /parancsneve)
// a parancs hívása esetén lefutó kód
return 1;
}
Az ilyen parancsot mindenen kívül rakjátok, például:
public OnPlayerText(playerid, text[]){
return 1;
}
CMD:parancsneve(playerid, params[]){ // A \"CMD:\" elõtag után írd a parancsot, vagyis, amit a játékosnak a parancs futtatásához be kell írnia (ebben az esetben ez: /parancsneve)
// a parancs hívása esetén lefutó kód
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[]){
return 0;
}
playerid - a parancsot beíró játékos azonosítója
params[] - a szóköz után rakott egyéb szövegek
A szkriptekben két visszahívás is használható.
OnPlayerCommandReceived(playerid, cmdtext[]) - Meghívódik, amikor a szerver megkapja a parancsot a játékostól. Ha itt return 0; szerepel, nem fut le a parancs.
OnPlayerCommandPerformed(playerid, cmdtext[], success) - Meghívódik, amikor a parancs lefut. Ha itt return 0; szerepel, \"Unknown command\" üzenet fog megjelenni.
Ezeket a visszahívásokat nem kell feltétlenül használni, csak, ha szükség van rá.
Ha zcmd-t szeretnél használni filterszriptben, ne felejtsd ki az alábbiakat, különben nem fog mûködni (alapismeret)
#define FILTERSCRIPT
Ha szeretnéd ellenõrizni, hogy a játékos írt-e valamit a parancs után, használd ezt:
if (isnull(params))
Ha sscanf-et is használsz, az ellenõrzés nem szükséges, az magától megteszi azt.
Írta: LordShigi (http://balkan-samp.com/forum/index.php?topic=10516.0)
Köszönet: ZeeX-nek a zcmd feldolgozó kidolgozásáért, és az útmutató angol nyelvû változatáért, melyet bõvítettünk
Fordította: Y2K (2010. augusztus 1.)