Y_COMMANDS TUTORIAL
Eto ne bi puno pisao niti filozofirao ali bi htio samo da kažem moje miÅ¡ljenje i par korisnih savjeta Å¡to se tiÄe y_cmd's -a i ZCMD - a
Vidim veći dio foruma sada koristi ZCMD što je super gledajući da prije pol godine svi još bili na strcmp-u svako pitanje pitali su i postali komande u strcmp-u dok sada vidim prevladao je ZCMD.
Htio bi reći da je po mome mišljenju ZCMD u usporedbi sa Y_CMD - om ČISTA NULA!
Ima nekoliko razloga:
- Brzina, YCMD je brži od ZCMD-a
- YCMD ima PUNO više mogućnosti od bilo kojeg procesora komandi ( bar ja nisam vidio neki koji ima više mogućnosti )
Da preÄ'emo na usporedu, napravit ću neke komande u ZCMD-u i u YCMD-u razlika nije uopće velika samo Å¡to YCMD ima viÅ¡e mogućnosti:
/*
KOMANDA ZCMD /givemoney [id] [money]
*/
COMMAND:givemoney(playerid,params[])
{
new
id,
money;
if(sscanf(params,"ud",id,money)) return ERROR_PORUKA([5]);
else if(id == INVALID_PLAYER_ID) return ERROR_PORUKA([2]);
else
{
GivePlayerMoney(playerid, money);
}
return true;
}
A ovako bi to izgledalo sa YCMD-om
/*
YCMD KOMANDA /givemoney [id] [money]
*/
YCMD:givemoney(playerid,params[],help)
{
new
id,
money;
if(help)
{
SCM(playerid, BOJA_PLAVA, "[ >> ] Komanda /givemoney služi za dodavanje novaca nekom igraÄu!");
}
else
{
if(sscanf(params,"ud",id,money)) return ERROR_PORUKA([5]);
else if(id == INVALID_PLAYER_ID) return ERROR_PORUKA([2]);
else
{
GiveMoney(playerid, money);
}
}
return true;
}
Objašnjenje help parametra:
- help parametar služi za koriÅ¡tenje pomoći igraÄa npr. ako napravite komandu /commands igraÄ može proÄitati na /help commands ono Å¡to ste vi napisali ispod if(help) blocka! Ako nećete to koristiti onda morate na vrh komande staviti #pragma unused help > isto tako i za params ili playerid ako se neće koristiti u komandi.
Još jednu bitnu stvar ću napomenuti:
ZCMD:
COMMAND:cc(playerid,params[]) return cmd_clearchat(playerid,params); // drugim imenom komande se poziva već postojeća > zcmd naÄin
YCMD:
Command_AddAltNamed("clearchat", "cc"); // YCMD naÄin
LINK DO Y_COMMAND's : http://forum.sa-mp.com/showthread.php?t=169029
Moj izbor je YCMD, sada je na vama da odluÄite prelaženje sa ZCMD na YCMD je jednostavno samo morate malo vremena odvojiti ;)
lijepo je to ali ZCMD je puno jednostavniji mislim nes ti sto imas u YCMD stavis onu funkciju ERROR_MESAGE to isto kao i SCM :S
Definitivno YCMD zato sto je ipak to Yless uradio a on zna sta radi!
A i ZCMD je dobar upocetku mi se cini da je bio brzi od YCMD?
Dobra tutorial. :)
Citat: _eXtreme_ poslato Jun 09, 2011, 18:36:08 POSLE PODNE
A i ZCMD je dobar upocetku mi se cini da je bio brzi od YCMD?
I joÅ¡ je brži, ali sa manje komandi. YCMD je brži od ZCMD-a u sluÄaju kad ima puno komandi.
Citat: Paradox poslato Jun 09, 2011, 18:47:13 POSLE PODNE
I joÅ¡ je brži, ali sa manje komandi. YCMD je brži od ZCMD-a u sluÄaju kad ima puno komandi.
ToÄno, a mislim da svatko tko drži ili radi RP mode sigurno će imati preko 250/300 komandi.
Citat: [AG] System32 poslato Jun 09, 2011, 17:56:42 POSLE PODNE
lijepo je to ali ZCMD je puno jednostavniji mislim nes ti sto imas u YCMD stavis onu funkciju ERROR_MESAGE to isto kao i SCM :S
ERROR_PORUKA > NIJE isto kao i SCM, SCM je samo skraćenica od SendClientMessage. ERROR_PORUKA je moja funkcija kojom si kratim muke. npr.
Ako je
ERROR_PORUKA[5] onda će pisati - KORISTI: 'komdanda' [paramtertri].
ERROR_PORUKA[2] onda će pisati - [SERVER]: IgraÄ sa tim ID-em nije online na serveru.
itd itd.
Citat: _eXtreme_ poslato Jun 09, 2011, 18:36:08 POSLE PODNE
A i ZCMD je dobar upocetku mi se cini da je bio brzi od YCMD?
ZCMD je još uvijek dobar ali zašto kad YCMD ima puno više mogućnosti. npr. update komandi BEZ restarta servera
Nije los ni ZCMD a ni YCMD,ali i sam si rekao da YCMD ima vise mogucnosti sto mi se veoma svidja.. ;)
YCMD jeste bolji i brži ali takoÄ'er iziskuje dodatno uÄenje i vježbanje. Za sada ostajem na ZCMD, ali abd sljedeći mod koji budem radio prelazim na YCMD.
Naravno savjet novim skripterima, koji tek poÄinju da odmah krenu od YCMD.
koji je brzi? YCMD ili ZCMD?
Citat: Mario Velickovski poslato Jun 18, 2011, 17:09:19 POSLE PODNE
koji je brzi? YCMD ili ZCMD?
Ako imaš puno komandi u skripti YCMD je brži, kod manje komandi je ZCMD nešto malo brži ali to je skoro pa zanemarivo...
Ali poÅ¡to tu prevladavaju RPG serveri/skripte a one imaju preko 300+ komandi znaÄi u tom sluÄaju je brži YCMD od ZCMD-a
a dali mora da se koristi to help ?
Citat: [IF] mariomako poslato Jun 19, 2011, 15:59:35 POSLE PODNE
a dali mora da se koristi to help ?
Ne moraš. Samo onda u svakoj komandi dodaj:
#pragma unused help
Ma vi se sad mozete jebat, al meni je najbolji strcmp ;D ;D
Citat: JuustyGe poslato Jun 19, 2011, 18:47:22 POSLE PODNE
Ma vi se sad mozete jebat, al meni je najbolji strcmp ;D ;D
ma ti neznas sta valja, vi se mucite sa strcmp dok napravite komandu recimo /givegun oko 1 sat a j a sa ZCMD i sscanf za 5 minuta ;)
Citat: System32 poslato Jun 19, 2011, 19:02:31 POSLE PODNE
Citat: JuustyGe poslato Jun 19, 2011, 18:47:22 POSLE PODNE
Ma vi se sad mozete jebat, al meni je najbolji strcmp ;D ;D
ma ti neznas sta valja, vi se mucite sa strcmp dok napravite komandu recimo /givegun oko 1 sat a j a sa ZCMD i sscanf za 5 minuta ;)
Ma ja se salim, nego kad sam ja ucio bio je samo strcmp, i tad sam pravio te komande, a sad mi ih mrsko pretvarat u zcmd :P ;D
Pa i ne moraš, pola-pola.
ma jebat cu YCMD ostajem ja na ZCMD jel nekako mnogo glupo ovo Y_CMD, inace koliko ms je razlika ?
Citat: [H]265 poslato Jun 20, 2011, 00:06:41 PRE PODNE
Citat: bake_pg poslato Jun 20, 2011, 00:02:34 PRE PODNE
Pa i ne moraš, pola-pola.
Å ta to?
Kaže mrsko mu prebacivat komande iz strcmp u ZCMD, pa mu kažem da ih ne mora prebacivat sve, nek nove radi u ZCMD/YCMD a stare nek ostanu u strcmp a neke nek prebaci. 8)
S time nije onda niÅ¡ta dobio onda raÄ'e neka ostane na strcmp jer će doÄi do konflikata
Dobar je ovaj YCMD(mora valjati kad je od Y_Less-a :P), ja sam prebacio preko 100 komandi neki dan iz ZCMD-a u YCMD, pa sam testirao prije i poslije skriptu kakvi su rezultati i mogu reci da je brzi ali za 1,5 milisekundu xD
Ovo je vazno kada se uzme u obzir kada ima preko 200/300 komandi...
Citat: EM|Pacino poslato Jun 24, 2011, 17:21:54 POSLE PODNE
i mogu reci da je brzi ali za 1,5 milisekundu
Tu se ne radi o brzini, za one koji znaju što žele od svog moda... Oni koji koriste YSI naravno da će koristiti YCMD jer je KOMPAKTIBILAN sa CIJELIM YSI INC-om
Ima veze, jer kako raste broj komandi (npr 100+), zcmd je sporiji, a osim toga YCMD ima dinamicni sistem preimenovanja komandi, izlist svih dostupnih komandi i 10x vise mogucnosti i komandi(funkcija) od zcmd-a...
iii da, zaboravio si napomenuti da kod nekih kompajlera ima greska, izbaca
error 036: empty statement
(ovo je Quincy i za SciTe-koji ja koristim)
Samo treba u pwn.properties u SciTe promijeniti pawncc na standardu
u
pawncc pawncc -v2 -d2 -;+ i radit ce vam...
a za Quincy ne znam, nisam ga nikad ni koristio...
S time nisam upoznat, niti je ovo tut o YCMD - u nego samo usporedba. Rekao sam, nije važno toliko brzina koliko je ta kompaktibilnost sa YSI-om.
aha, u redu onda...
SRY refresh
Da pitam nesto
Moze li netko staviti primjer jednog YCMD-a i sscanf-a da vidim samo kako izgleda... neka jednostavna komanda
I koju zapravo ulogu u svemu ima sscanf a koju YCMD
I kada skinem Yless taj njegov file
Sta mi tocno treba za skriptanje od INC fileova
jer vidio sam ima i y_colors i take stvari
Edit: ovo drugo sam nasao .. a prvo?
YCMD:makeadmin(playerid, params[], help)
{
if (help) SCM(playerid, -1, "Postavlja igracu administrator razinu.");
else
{
new
saMsg[119],
pID,
aLvl;
if (sscanf(params, "ui", pID, aLvl)) return SCM(playerid, 0xAADD00AA, "{FFFFFF}Koristi:{AADD00} /makeadmin <igracev ID> <administrator razina>");
else if (pID == INVALID_PLAYER_ID) return SCM(playerid, 0xFF0000AA, "Pogresan igracev ID.");
else
{
SetPVarInt(pID, "AdminLevel", aLvl);
if (aLvl == 0)
{
format(saMsg, sizeof(saMsg), "Administator razine %i %s ti je maknuo administrator razinu.", GetPVarInt(playerid, "Admin"), GetName(playerid));
SCM(pID, -1, saMsg);
format(saMsg, sizeof(saMsg), "Maknuo si igracu {FF7F24}%s {FFFFFF}adminstator razinu.", GetName(pID));
SCM(playerid, -1, saMsg);
}
else
{
format(saMsg, sizeof(saMsg), "Administator razine %i %s ti je postavio administrator razinu {FF7F24}%i{FFFFFF}. Cestitke!", GetPVarInt(playerid, "Admin"), GetName(playerid), aLvl);
SCM(pID, -1, saMsg);
format(saMsg, sizeof(saMsg), "Postavio si igracu {FF7F24}%s {FFFFFF}adminstator razinu {EEEE00}%i{FFFFFF}.", GetName(pID), aLvl);
SCM(playerid, -1, saMsg);
}
}
}
return 1;
}
To je moja jedna starija komanda, ali je oke. I sscanf ti je string spliter.
Citat: [GG] Paradox poslato Jul 22, 2011, 10:33:29 PRE PODNE
YCMD:makeadmin(playerid, params[], help)
{
if (help) SCM(playerid, -1, "Postavlja igracu administrator razinu.");
else
{
new
saMsg[119],
pID,
aLvl;
if (sscanf(params, "ui", pID, aLvl)) return SCM(playerid, 0xAADD00AA, "{FFFFFF}Koristi:{AADD00} /makeadmin <igracev ID> <administrator razina>");
else if (pID == INVALID_PLAYER_ID) return SCM(playerid, 0xFF0000AA, "Pogresan igracev ID.");
else
{
SetPVarInt(pID, "AdminLevel", aLvl);
if (aLvl == 0)
{
format(saMsg, sizeof(saMsg), "Administator razine %i %s ti je maknuo administrator razinu.", GetPVarInt(playerid, "Admin"), GetName(playerid));
SCM(pID, -1, saMsg);
format(saMsg, sizeof(saMsg), "Maknuo si igracu {FF7F24}%s {FFFFFF}adminstator razinu.", GetName(pID));
SCM(playerid, -1, saMsg);
}
else
{
format(saMsg, sizeof(saMsg), "Administator razine %i %s ti je postavio administrator razinu {FF7F24}%i{FFFFFF}. Cestitke!", GetPVarInt(playerid, "Admin"), GetName(playerid), aLvl);
SCM(pID, -1, saMsg);
format(saMsg, sizeof(saMsg), "Postavio si igracu {FF7F24}%s {FFFFFF}adminstator razinu {EEEE00}%i{FFFFFF}.", GetName(pID), aLvl);
SCM(playerid, -1, saMsg);
}
}
}
return 1;
}
To je moja jedna starija komanda, ali je oke. I sscanf ti je string spliter.
Jel mos neku jednostavnu .. recimo /m4 i da ti server da M4
Heal me .. da te sethp 100 samo da vidim kako radi .. jer ovo mi je malo komplicirano ja inace radim stunt mod ...
YCMD:kill(playerid, params[], help)
{
if(help) return SendClientMessage(playerid, -1, "Ova komanda vas ubija.");
else
{
SetPlayerHealth(playerid, 0);
}
return 1;
}
Evo ti najjednostavnija. :D
Citat: [GG] Paradox poslato Jul 22, 2011, 10:40:20 PRE PODNE
YCMD:kill(playerid, params[], help)
{
if(help) return SendClientMessage(playerid, -1, "Ova komanda vas ubija.");
else
{
SetPlayerHealth(playerid, 0);
}
return 1;
}
D:\SAMP\StuntHeaven\gamemodes\StuntHeaven.pwn(102) : error 017: undefined symbol "@yC_kill" meni izbaci ovo
Evo ti najjednostavnija. :D
Da li imaš ovako includano:
#include <YSI\y_commands>
#include <YSI\y_master>
?
Citat: [GG] Paradox poslato Jul 22, 2011, 10:43:07 PRE PODNE
Da li imaš ovako includano:
#include <YSI\y_commands>
#include <YSI\y_master>
?
naravno
moji includi:
#include <a_samp>
#include <YSI\y_commands>
#include <YSI\y_ini>
#include <YSI\y_master>
Sve je isto kao sa ZCMD samo je stvar šta imate parametar 'help' i on služi npr. ako imate komandu /pomoc
YCMD:pomoc(playerid, params[], help)
{
#pragma unused params
if(help) return SCM(playerid, ""#hex_boja"INFO: "#hex_boja"Lista komandi na serveru.");
else
{
// efekt
}
return true;
}
i ako netko koristi /help pomoc vidjet ce poruku "INFO: Lista komandi na serveru"
ZnaÄi sve je isto samo ako ne želite koristiti help parametar ili params koristite
#pragma unused help
#pragma unused params
a kada ne koristite niti playerid onda stavite i playerid
#pragma unused playerid
A jel to help daje neku prednost sem sto ispise taj text?
pa to jest prednost igraÄ može saznati Å¡ta koja komanda radi bez da Å¡alje pitanje adminu
/help imekomande
Ja se ispricavam za refresh,ali :
http://i53.tinypic.com/ao6yaw.png
moze netko pomoc??
Citat: SlicK poslato Avgust 05, 2011, 19:28:38 POSLE PODNE
Ja se ispricavam za refresh,ali :
http://i53.tinypic.com/21j2na1.png
moze netko pomoc??
kad trebas pomoc mozes refreshat...
provjeri jeli je u YSI folderu i ako je onda otvori pawno, lociraj gm i onda f5
Hvala,morao sam samo locirat jer imam oko 10 pawna na kompu :D