GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: folnoraa - 2016. Március 14. - 11:51:49

Cím: Warn parancs hibás
Írta: folnoraa - 2016. Március 14. - 11:51:49
Ü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;
}
Cím: Warn parancs hibás
Írta: BackUP - 2016. Március 14. - 12:33:50
Nem magadat figyelmezteted csak a te neved írja ki. Mikor formázod a szöveget a nev, és a nev2 változót összekeverted. :)
Cím: Warn parancs hibás
Írta: folnoraa - 2016. Március 14. - 12:57:35
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.\"
Cím: Warn parancs hibás
Írta: BackUP - 2016. Március 14. - 13:50:27
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);
Cím: Warn parancs hibás
Írta: folnoraa - 2016. Március 14. - 14:16:55
í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;
}
Cím: Warn parancs hibás
Írta: BackUP - 2016. Március 14. - 14:24:17
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.
Cím: Warn parancs hibás
Írta: Haewyr - 2016. Március 14. - 14:39:04
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);
Cím: Warn parancs hibás
Írta: folnoraa - 2016. Március 14. - 15:03:18
Í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
Cím: Warn parancs hibás
Írta: BackUP - 2016. Március 14. - 15:12:08
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.
Cím: Warn parancs hibás
Írta: Haewyr - 2016. Március 14. - 15:13:28
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!\"); }
Cím: Warn parancs hibás
Írta: BackUP - 2016. Március 14. - 15:19:56
Az előtt is ez volt akkor nem az a hiba, és elvileg azt ár javította, ha figyelt arra amit írtam :/
Cím: Warn parancs hibás
Írta: folnoraa - 2016. Március 14. - 15:30:51
Megcsináltam, most sem jó. Beírok akármilyen id-t pl legyen a 9999999 akkor is magamat figyelmeztetem :(  :@
Cím: Warn parancs hibás
Írta: BackUP - 2016. Március 14. - 15:35:59
Idézetet írta: Haewyr date=1457964808\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"59842\" data-ipsquote-contentclass=\"forums_Topic
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!\");
Cím: Warn parancs hibás
Írta: folnoraa - 2016. Március 14. - 15:43:04
Feladom. Azért köszönöm, hogy próbáltatok segíteni :)  :(
Cím: Warn parancs hibás
Írta: BackUP - 2016. Március 14. - 15:53:05
Nem szabad feladni, csináld meg amit írtam. :) Irasd ki az értékeket és minden kiderül.
Cím: Warn parancs hibás
Írta: folnoraa - 2016. Március 14. - 16:00:16
Azt nem tudom, hogy kell.  :D ;D ;D :laugh: :hmmm:
Cím: Warn parancs hibás
Írta: BackUP - 2016. Március 14. - 16:23:18
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);
Cím: Warn parancs hibás
Írta: folnoraa - 2016. Március 14. - 17:14:11
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:
Cím: Warn parancs hibás
Írta: BackUP - 2016. Március 14. - 17:16:50
Ezért írtam h irasd ki, azzal is ez kiderült volna. :) De azért örülök hogy sikerült! :)
Cím: Warn parancs hibás
Írta: folnoraa - 2016. Március 14. - 17:20:56
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?
Cím: Warn parancs hibás
Írta: blackdog476 - 2016. Március 14. - 17:33:40
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.
Cím: Warn parancs hibás
Írta: folnoraa - 2016. Március 14. - 17:35:03
Köszönöm!
Cím: Warn parancs hibás
Írta: CMike - 2016. Március 14. - 18:53:40
Amúgy Uval is kellene működnie nemde?
Cím: Warn parancs hibás
Írta: BackUP - 2016. Március 14. - 18:58:19
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. :)