-
Üdv! Van egy warn parancsom, és ha beírom, pl, hogy /warn 1 hülye vagy, akkor magamat figyelmeztetem, közbe nekem az id-m 0-s. Valaki tudna segíteni? Előre is köszönöm szépen!
CMD:warn(playerid, params[])
{
new id, nev[MAX_PLAYER_NAME], indok[128], nev2[MAX_PLAYER_NAME], str2[128];
if(sscanf(params,\"us[128]\",id,indok)) return SendClientMessage(playerid, hiba, \"Használat: /warn [playerid/névrészlet] [indok]\");
if(Info[playerid][admin] <= 1 ) return SendClientMessage(playerid, hiba, \"A parancs használatához legalább 1-es adminnak kellene lenned!\");
GetPlayerName(playerid, nev2, sizeof(nev2));
GetPlayerName(id, nev, sizeof(nev));
format(str2, sizeof(str2), \"[ADMIN]%s figyelmeztette %s-t. Indok: %s Warnjai száma: %d\",nev ,nev2,indok,Info[id][warn]);
SendClientMessageToAll(-1, str2);
Info[id][warn] = Info[id][warn]+1;
if(Info[id][warn] == 3)
{
SendClientMessage(id, hiba, \"Összegyűlt a három warnod! Ki lettél bannolva!\");
BanEx(id, \"3 warn\");
}
return 1;
}
-
Nem magadat figyelmezteted csak a te neved írja ki. Mikor formázod a szöveget a nev, és a nev2 változót összekeverted. :)
-
De, magamat, mert megnézem a stats-ban, és ott van, hogy warnok száma: 1
Dupla hozzászólás automatikusan összefûzve. ( 2016. március 14. - 13:03:01 )
idézem. \"GsR]DeLL_1899 figyelmeztette GsR]DeLL_1899 játékost.\"
-
Attól még felcserélted a neveket formázásnál, mert a playerid(aki beírja a parancsot) van a nev2-ben, te pedig a figyelmeztetést kapó játékoshoz formáztad be, a játékost pedig az admin helyére.
Kód szerint az \'id\' kapja a warnt.
Tegyél bele egy ellenőrzést, hogy a játékos, akinek IDjét beírod a szerveren tartózkodik e:
IsPlayerConnected(id);
-
így most jónak kéne lennie?
CMD:warn(playerid, params[])
{
new id, nev[MAX_PLAYER_NAME], indok[128], nev2[MAX_PLAYER_NAME], str2[128];
if(sscanf(params,\"us[128]\",id,indok)) return SendClientMessage(playerid, hiba, \"Használat: /warn [playerid/névrészlet] [indok]\");
IsPlayerConnected(id);
if(Info[playerid][admin] <= 1 ) return SendClientMessage(playerid, hiba, \"A parancs használatához legalább 1-es adminnak kellene lenned!\");
GetPlayerName(playerid, nev, sizeof(nev));
GetPlayerName(id, nev2, sizeof(nev2));
format(str2, sizeof(str2), \"[ADMIN]%s figyelmeztette %s-t. Indok: %s Warnjai száma: %d\",nev ,nev2,indok,Info[id][warn]);
SendClientMessageToAll(-1, str2);
Info[id][warn] = Info[id][warn]+1;
if(Info[id][warn] == 3)
{
SendClientMessage(id, hiba, \"Összegyűlt a három warnod! Ki lettél bannolva!\");
BanEx(id, \"3 warn\");
}
return 1;
}
-
Ránézésre igen.
Dupla hozzászólás automatikusan összefûzve. ( 2016. március 14. - 14:25:20 )
Illetve nem. Az IsPlayerConnected függvényt azért írtam, hogy ezzel csináld, nézz utána, hogy hogyan tudod azt alkalmazni. :) Abból tanulsz.
-
Ez helyett:
format(str2, sizeof(str2), \"[ADMIN]%s figyelmeztette %s-t. Indok: %s Warnjai száma: %d\",nev ,nev2,indok,Info[id][warn]);
SendClientMessageToAll(-1, str2);
Info[id][warn] = Info[id][warn]+1;
Írd be ezt:
Info[id][warn]++;
format(str2, sizeof(str2), \"[ADMIN]%s figyelmeztette %s-t. Indok: %s Warnjai száma: %d\",nev ,nev2,indok,Info[id][warn]);
SendClientMessageToAll(-1, str2);
-
Így sem jó... Nem értem, hogy mi a baja :( Linkelek egy képet is, nézzétek meg. :( :crybaby:
http://kephost.com/images/2016/03/14/sa-mp-083.png
-
Ha nem a saját IDdet ütötted be, és jó szkriptet töltöttél be akkor nem lehet ebből gáz.
De lehet h sscanfod hibázik, irasd ki chatbe a playerid és az ID értékét pontban az sscanf lefutása után.
-
Ez szúrja a szememet.
IsPlayerConnected(id);
Próbáld meg ezt az if-es változatót a sima IsPlayerConnected helyett:
if(!IsPlayerConnected(id)) { SendClientMessage(playerid, hiba, \"Hibás ID!\"); }
-
Az előtt is ez volt akkor nem az a hiba, és elvileg azt ár javította, ha figyelt arra amit írtam :/
-
Megcsináltam, most sem jó. Beírok akármilyen id-t pl legyen a 9999999 akkor is magamat figyelmeztetem :( :@
-
Ez szúrja a szememet.
IsPlayerConnected(id);
Próbáld meg ezt az if-es változatót a sima IsPlayerConnected helyett:
if(!IsPlayerConnected(id)) { SendClientMessage(playerid, hiba, \"Hibás ID!\"); }
Javítom a kódodat, ezt tedd be az sscanfos részed alá:
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, hiba, \"Hibás ID!\");
-
Feladom. Azért köszönöm, hogy próbáltatok segíteni :) :(
-
Nem szabad feladni, csináld meg amit írtam. :) Irasd ki az értékeket és minden kiderül.
-
Azt nem tudom, hogy kell. :D ;D ;D :laugh: :hmmm:
-
alap dolog, nem RP móddal kell akkor kezdeni, itt rengeteg ilyen formázást kell neked megírnod. :)
new stringem[30];
format(stringem, 30, \"playerid értéke: %d | ID értéke: %d\", playerid, id);
SendClientMessage(playerid, stringem, -1);
-
Végül sikerült megoldanom! :)
Ezt:
if(sscanf(params,\"us[128]\",id,indok)) return SendClientMessage(playerid, hiba, \"Használat: /warn [playerid/névrészlet] [indok]\");
kicseréltem erre:
if(sscanf(params, \"ds\", id, indok)) return SendClientMessage(playerid, hiba, \"Használat: /warn [playerid] [indok]\");
Mindenesetre nagyon-nagyon köszönöm szépen a segítségét! :) :thumbsup:
-
Ezért írtam h irasd ki, azzal is ez kiderült volna. :) De azért örülök hogy sikerült! :)
-
Lehetne egy kérdésem így a végére? :D :angel:
Ugye van ez a 2 nem tudom hogy hívják : if(sscanf(params,\"us[128]\",id,indok)) és az if(sscanf(params,\"ds\",id,indok))
Na most ebbe a kettőbe mi a különbség? Leginkább az us és a ds-re lennék kíváncsi. Tudsz valami leírást hozzá adni?
-
folnoraa[/member]
Az U operátor az a játékosnevet átalakítja játékos azonosítóvá: például /kick <játékosnév/id> - itt az U-t kell használni.
A D és az I operátor csak számokat érzékel.
-
Köszönöm!
-
Amúgy Uval is kellene működnie nemde?
-
De, viszont valószínűleg nála az sscanf rosszalkodik, mint egy másik témájában/kérdésében is sscanf volt a baj. Amúgy illene zárni a témát, ha sikerült megoldani, a \'Téma Megoldva\' gombbal. :)