Most ügye még semmit nem jelent.
PlayerInfoval: Elõször is csináljunk egy enumot!
enum pInfo
{
rendor
}
new PlayerInfo[MAX_PLAYERS][pInfo];
Magyarázat: enum pInfo
- Létre hozunk egy tömböt! (igazábol fingom sincs :( )
}
- Megnyitjuk
rendor
- Ez a tömbünk!
}
- Zárjuk
new PlayerInfo[MAX_PLAYERS][pInfo];
- Ez egy változó!
És most vegyük fel a munkát!
ZCMD:
CMD:rendor(playerid,params[])
{
PlayerInfo[playerid][rendor] = 1;
SendClientMessage(playerid,COLOR_VALAMI,\"Gratulálunk, az új munkád rendõr!\");\"
return 1;
}
Magyarázat: CMD:rendor(playerid, params[])
- Létre hozzuk a parancsot!
{
- Megnyitjuk a parancsot!
PlayerInfo[playerid][rendor] = 1;
- Kinevezzük rendörré azaz a változó értéke nála már 1 !
SendClientMessage(playerid,COLOR_VALAMI,\"Gratulálunk, az új munkád rendõr!\");\"
-Kiirjuk neki, hogy felvette a munkát!
return 1
- visszatérünk!
}
- lezárjuk a parancsot!
STRCMP:
if(strcmp(cmd, \"/rendor\", true) == 0)
{
PlayerInfo[playerid][rendor] = 1;
SendClientMessage(playerid,COLOR_VALAMI,\"Gratulálunk, az új munkád rendõr!\");\"
return 1;
}
Magyarázat: if(strcmp(cmd, \"/rendor\", true) == 0)
- Létre hozzuk a parancsot!
{
- Megnyitjuk a parancsot!
PlayerInfo[playerid][rendor] = 1;
- Kinevezzük rendörré azaz a változó értéke nála már 1 !
SendClientMessage(playerid,COLOR_VALAMI,\"Gratulálunk, az új munkád rendõr!\");\"
-Kiirjuk neki, hogy felvette a munkát!
Jó, most mondassuk fel!
ZCMD:
CMD:felmond(playerid,params[])
{
PlayerInfo[playerid][rendor] = 0;
SendClientMessage(playerid,COLOR_VALAMI,\"Gratulálunk, sikeresen felmodntál!\");\"
return 1;
}
Magyarázat: CMD:felmond(playerid, params[])
- Létre hozzuk a parancsot!
{
- Megnyitjuk a parancsot!
PlayerInfo[playerid][rendor] = 1;
- Kinevezzük rendörré azaz a változó értéke nála már 1 !
SendClientMessage(playerid,COLOR_VALAMI,\"Gratulálunk, sikeresen felmondtál!\");\"
-Kiirjuk neki, hogy felmondott!
return 1
- visszatérünk!
}
- lezárjuk a parancsot!
if(strcmp(cmd, \"/felmond\", true) == 0)
{
PlayerInfo[playerid][rendor] = 0;
SendClientMessage(playerid,COLOR_VALAMI,\"Gratulálunk, sikeresen felmodntál!\");\"
return 1;
}
Magyarázat: if(strcmp(cmd, \"/felmond\", true) == 0)
- Létre hozzuk a parancsot!
{
- Megnyitjuk a parancsot!
PlayerInfo[playerid][rendor] = 1;
- Kinevezzük rendörré azaz a változó értéke nála már 1 !
SendClientMessage(playerid,COLOR_VALAMI,\"Gratulálunk, sikeresen felmondtál!\");\"
-Kiirjuk neki, hogy felmondott!
Na most, hozzunk létre egy parancsot!
CMD:proba(playerid,params[])
{
if(PlayerInfo[playerid][rendor] == 1)
{
SendClientMessage(playerid,COLOR_VALAMI,\"Te rendõr vagy!\");
}
else if(PlayerInfo[playerid][rendor] == 0)
{
SendClientMessage(playerid,COLOR_VALAMI,\"Te nem vagy rendõr\");
return 1;
}
return 1;
}
Magyarázat:code]CMD:proba(playerid, params[])[/code] - Létre hozzuk a parancsot!
{
- Megnyitjuk a parancsot!
if(PlayerInfo[playerid][rendor] == 1)
- Ha az játékos változójának értéke 1 akkor kiirjuk hogy rendõr!
return 1;
- vissza térünk!
}
- Lezárjuk ezt a részt!
[colde]else if(PlayerInfo[playerid][rendor] == 0)[/code] - De ha nem...
{
- Megnyitjuk
SendClientMessage(playerid,COLOR_VALAMI,\"Te nem vagy rendõr!\");
- És kiirjuk hogy nem rendõr!
return 1;
- visszatérünk!
}
- lezárjuk!
return 1;
- visszatérünk!
}
- lezárjuk a parancsot!
STRCMP:
if(strcmp(cmd, \"/proba\", true) == 0)
{
if(rendor[playerid] == 1)
{
SendClientMessage(playerid,COLOR_VALAMI,\"Te rendõr vagy!\");
}
else if(rendor[playerid] == 0)
{
SendClientMessage(playerid,COLOR_VALAMI,\"Te nem vagy rendõr!\");
return 1;
}
return 1;
}
Magyarázat:code]if(strcmp(cmd, \"/proba\", true) == 0) [/code] - Létre hozzuk a parancsot!
{
- Megnyitjuk a parancsot!
if(PlayerInfo[playerid][rendor] == 1)
- Ha az játékos változójának értéke 1 akkor kiirjuk hogy rendõr!
return 1;
- vissza térünk!
}
- Lezárjuk ezt a részt!
else if(PlayerInfo[playerid][rendor] == 0)
- De ha nem...
{
- Megnyitjuk
SendClientMessage(playerid,COLOR_VALAMI,\"Te nem vagy rendõr!\");
- És kiirjuk hogy nem rendõr!
return 1;
- visszatérünk!
}
- lezárjuk!
return 1;
- visszatérünk!
}
- lezárjuk a parancsot!
bool használatával! Lássuk:
Elõször is létrehozunk egy változót!
new bool:rendor[MAX_PLAYERS];
Ez lesz a változónk!
Most ügye még semmit nem jelent.
De például, csináljunk egy rendõr munkát!
Zcmd:
CMD:rendor(playerid, params[])
{
rendor[playerid] = true;
SendClientMessage(playerid,COLOR_VALAMI, \"Gratulálunk az új munkádhoz! Mostantól rendõr vagy!\");
return 1;
}
Magyarázat: CMD:rendor(playerid, params[])
- Létre hozzuk a parancsot!
{
- Megnyitjuk a parancsot!
rendor[playerid] = true;
- Kinevezzük rendörré azaz mostmár true (1)!
SendClientMessage(playerid,COLOR_VALAMI, \"Gratulálunk az új munkádhoz! Mostantól rendõr vagy!\");
-Kiirjuk neki, hogy felvette a munkát!
return 1
- visszatérünk!
}
- lezárjuk a parancsot!
STRCMP:
if(strcmp(cmd, \"/rendor\", true) == 0)
{
rendor[playerid] = true;
SendClientMessage(playerid,COLOR_VALAMI, \"Gratulálunk az új munkádhoz! Mostantól rendõr vagy!\");
return 1;
}
Magyarázat: if(strcmp(cmd, \"/rendor\", true) == 0)
- létrehozzuk a parancsot!
{
- Megnyitjuk a parancsot!
rendor[playerid] = true;
- Kinevezzük rendörré azaz mostmár true (1)!
SendClientMessage(playerid,COLOR_VALAMI, \"Gratulálunk az új munkádhoz! Mostantól rendõr vagy!\");
-Kiirjuk neki, hogy felvette a munkát!
return 1
- visszatérünk!
}
- lezárjuk a parancsot!
Na most a kinevezéssel készen vagyunk! Most mondasuk is fel ! :)
ZCMD:
CMD:felmond(playerid,params[])
{
rendor[playerid] = false;
SendClientMessage(playerid,COLOR_VALAMI,\"Gratulálok, sikeresen felmondtál!Jelenleg nincs munkád!\");
return 1;
}
Magyarázat: CMD:felmond(playerid, params[])
- Létre hozzuk a parancsot!
{
- Megnyitjuk a parancsot!
rendor[playerid] = false;
- Felmondattuk szóval már a változó értéke nála false(0) !
SendClientMessage(playerid,COLOR_VALAMI, \"Gratulálunk, sikeresen felmondtál!Jelenleg nincs munkád!\");
-Kiirjuk neki, hogy felmondott!
return 1
- visszatérünk!
}
- lezárjuk a parancsot!
STRCMP:
strcmp(cmd, \"/felmond\", true) == 0)
{
rendor[playerid] = false;
SendClientMessage(playerid,COLOR_VALAMI, \"Gratulálunk , sikeresen felmondtál!Jelenleg nincs munkád!\");
return 1;
}
Magyarázat: if(strcmp(cmd, \"/felmond\", true) == 0)
- létrehozzuk a parancsot!
{
- Megnyitjuk a parancsot!
rendor[playerid] = false;
- Felmondattuk szóval mostmár a változó értéke nála false(0) !
SendClientMessage(playerid,COLOR_VALAMI, \"Gratulálunk, sikeresen felmondtál!Jelenleg nincs munkád!!\");
-Kiirjuk neki, hogy felmondott!
return 1
- visszatérünk!
}
- lezárjuk a parancsot!
Na most csináljunk neki egy parancsot!
ZCMD:
CMD:proba(playerid,params[])
{
if(rendor[playerid] == true)
{
SendClientMessage(playerid,COLOR_VALAMI,\"Te rendõr vagy!\");
}
else if(rendor[playerid] == false)
{
SendClientMessage(playerid,COLOR_VALAMI,\"Te nem vagy rendõr!\");
return 1;
}
return 1;
}
Magyarázat: CMD:proba(playerid, params[])
- Létre hozzuk a parancsot!
{
- Megnyitjuk a parancsot!
if(rendor[playerid] == true)
- Ha az játékos változójának értéke true(1) akkor kiirjuk hogy rendõr!
return 1;
- vissza térünk!
}
- Lezárjuk ezt a részt!
else if(rendor[playerid] == false)
- De ha nem...
{
- Megnyitjuk
SendClientMessage(playerid,COLOR_VALAMI,\"Te nem vagy rendõr!\");
- És kiirjuk hogy nem rendõr!
return 1;
- visszatérünk!
}
- lezárjuk!
return 1;
- visszatérünk!
}
- lezárjuk a parancsot!
STRCMP:
if(strcmp(cmd, \"/proba\", true) == 0)
{
if(rendor[playerid] == true)
{
SendClientMessage(playerid,COLOR_VALAMI,\"Te rendõr vagy!\");
}
else if(rendor[playerid] == false)
{
SendClientMessage(playerid,COLOR_VALAMI,\"Te nem vagy rendõr!\");
return 1;
}
return 1;
}
Magyarázat: if(strcmp(cmd, \"/proba\", true) == 0)
- Létre hozzuk a parancsot!
{
- Megnyitjuk a parancsot!
if(rendor[playerid] == true)
- Ha az játékos változójának értéke true(1) akkor kiirjuk hogy rendõr!
return 1;
- vissza térünk!
}
- Lezárjuk ezt a részt!
else if(rendor[playerid] == false)
- De ha nem...
{
- Megnyitjuk
SendClientMessage(playerid,COLOR_VALAMI,\"Te nem vagy rendõr!\");
- És kiirjuk hogy nem rendõr!
return 1;
- visszatérünk!
}
- lezárjuk!
return 1;
- visszatérünk!
}
- lezárjuk a parancsot!
Tessék egy példa script:
#include <a_samp>
#include <zcmd>
#include <colors>
#define munka 1
new bool:rendor[MAX_PLAYERS];
new bool:mentos[MAX_PLAYERS];
new bool:bunozo[MAX_PLAYERS];
CMD:munka(playerid, params[])
{
ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST, \"Munkák\", \"Rendõr\\nMentõs\\nBûnözõ\",\"Kiválaszt\",\"Mégse\");
return 1;
}
CMD:felmond(playerid, params[])
{
rendor[playerid] = false;
mentos[playerid] = false;
bunozo[playerid] = false;
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == munka) // Ez lehetne most if(dialogid == 1) is ...
{
if(response)
{
if(listitem == 0)
{
rendor[playerid] = true;
}
if(listitem == 1)
{
mentos[playerid] = true;
}
if(listitem == 2)
{
bunozo[playerid] = true;
}
}
}
return 1;
}
Ööö.. Én látom hogy 2x vannak a dolgok?:D
Igen mert, megcsináltam ZCMD parancsformába és STRCMP ... azon belöl megcsináltam bool használatábal és Playerinfoval és saima változóval.. 3órámba került :)
enum pInfo
- Létre hozunk egy tömböt! (igazábol fingom sincs :( )
De akkor miért írsz leírást, ha még te sem érted? :neutral: Egyébként ez egy felsorolt adattípus( enumeráció ), és ha létrehozol egy mátrixot( a te példádban PlayerInfo ), akkor annak az elemeivel tudsz hivatkozni minden játékosra vonatkoztatva( vagy ha nem MAX_PLAYERS értéket adsz neki, akkor nyilván valami más dologra ). És nem csak ez volt benne az egyetlen pontatlan/hibás megfogalmazás, még nézegesd át azért.
De a munkát becsülni kell, és az, hogy dolgoztál vele, az figyelemreméltó. ;) Egyébként szép. ;)
Szia!
Csak átfutottam a tutorialt. Amit \"playerinfos\" megoldásnak nevezel, az enumeráció, az elején, mivel csak 2 értéket használsz a rendor változónak, érdemes logikai változóként létrehozni (bool), mert kevesebbet eszik. De ami a legfontosabb: sokkal egyszerûbb, ha a Per Player Variable Systemet használod! ->
http://wiki.sa-mp.com/wiki/Per-player_variable_system
Írhatnál egy részt ezzel is. Am grat, egész szép tutorial.
Köszi.. ez a pvar dolog nekem magas :(
Köszi.. ez a pvar dolog nekem magas :(
Aki keres az talál. :D http://sampforum.hu/index.php?topic=7895.0
Egyébként nem rossz. :)
Köszi.. ez a pvar dolog nekem magas :(
Egyszerûbb, mint a Te megoldasaid, csak azért találod nehéznek, mert még nem ismered.
nem tudom ez most ide tartozik vagy sem, de halvány gõzöm sincs arról mit jelent az a return 0; return 1; mer mindig azt mondjátok hogy \"visszatér egy értékkel\" vagy mi, de milyen értékkel? valaki el tudná magyarázni úgy hogy én is értsem? :D
egyébként szép leírás :)
Elvileg a return 1; azt jelzi hogyha hibásan megy végig a feladat akkor is lemegy. return 0; viszont ha hibás a parancs akkor leállítja a parancsot.. magyarul unknow... :)
nem tudom ez most ide tartozik vagy sem, de halvány gõzöm sincs arról mit jelent az a return 0; return 1; mer mindig azt mondjátok hogy \"visszatér egy értékkel\" vagy mi, de milyen értékkel? valaki el tudná magyarázni úgy hogy én is értsem? :D
egyébként szép leírás :)
public OnPlayerText(playerid, text[])
{
// if pl. átirod, hogy kiirja az üzeneted elõtt az id-t
return 0; // hamissal (false) tér vissza, vagyis nem küldi el az alap szöveget, mert 2 lenne (a módosított+alap)
}
return --- visszatérés
értékek: 1,0
true/false = igaz/hamis
igaz, akkor lefut, ha hamis, nem.
return --- visszatérés
értékek: 1,0
true/false = igaz/hamis
igaz, akkor lefut, ha hamis, nem.
Ez nem teljesen igaz( abban az egy példában igen, de általánosítva nem ), ugyanis akármennyi lehet a visszatérés értéke. Vegyük például a következõ függvényt( semmi értelme, de a a visszatérési értéket jól szemlélteti ):
stock GetPlayerMoneyEx( playerid ) { //Visszatérés a megadott azonosítójú játékos pénzével
return GetPlayerMoney( playerid );
}
Bizonyos függvényeknek( leginkább a sztingkezelõknek ) fontos tudni a visszatérési értékét, hiszen akkor tudod meg, hogy lefutott-e vagy sem, vagy volt-e egyezés, vagy sem ( Errõl részletesebben itt olvashatsz ).
Sõt, olyan is elõfordulhat, hogy nincs szükségünk visszatérésre; Mondjuk egy idõzítõ leállításánál:
public OnPlayerExitFromZonePoint( playerid ) {
KillTimer( zoneTimer[ playerid ] );
//NINCS return
}