-
Heló, az lenne az elsõ kérdésem, hogy mi lehet ebben a scriptben a hiba, mert hiába írom be, hogy /felsz 5 nem arra a játékosra írja ki, hanem id0-ra mindig.
if(strcmp(cmd, \"/felsz\", true) == 0) {
{
IsPlayerAdmin(playerid == 1);
}
if(!strlen(tmp)) {
SendClientMessage(playerid, COLOR_WHITE, \"<HASZNÁLAT>:/a [játékosid]\");
if (IsPlayerConnected(giveplayerid)) {
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), \"%s(ID:%d)! Adja meg magát!\", giveplayer,giveplayerid);
SendClientMessageToAll(COLOR_ORANGE, string);
}
} else {
SendClientMessage(playerid, COLOR_RED,\"HIBA: A beírt azonosító(ID) nem található!\");
}
return 1;
}
---------------------------------------------------------------------------------------------------------------------------------------------
A másik az, pedig, hogy be rakok egy radio dialogot, és egy színválasztó dialogot a szeróra, és ha ez a kettõ megy akkor a színválasztó nem jó, vagyis bejön a dialog de nem változtatja meg kattintásra a player színt. Ha kiveszem a radio filterscriptet a cfg-bõl, egybõl megjavul. Mi lehet e összeférhetetlenségnek az oka?
- Error-t vagy warn -t nem ír ki egyébként sem a felszólítás id hiba, sem a szín fs, sem a radio fs.
-
1.
if(!strlen(tmp)) {
SendClientMessage(playerid, COLOR_WHITE, \"<HASZNÁLAT>:/a [játékosid]\");
helyett így:
if(sscanf(params, \"u\", giveplayer)) return SendClientMessage(playerid, -1, \"Használat: /felsz [Playerid/Név]\");
2. szerintem ütköznek a dialog ID-k.
-
if(strcmp(cmd, \"/felsz\", true) == 0)
{
new tmp[256],
giveplayerid;
tmp = strtok(cmdtext, idx);
giveplayerid = strval(tmp);
if(!IsPlayerAdmin(playerid)) return SendclientMessage(playerid, COLOR_RED, \"Nem vagy RCON admin!\");;
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, \"<HASZNÁLAT>:/a [játékosid]\");
if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, COLOR_RED,\"HIBA: A beírt azonosító(ID) nem található!\");
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), \"%s(ID:%d)! Adja meg magát!\", giveplayer,giveplayerid);
SendClientMessageToAll(COLOR_ORANGE, string);
return 1;
}
-
TengeriMalac - nem jó, mert azt írja [függetlenül attól, hogy admin vagyok-e vagy sem] hogy \"nem vagy admin\" illetve még ha ezt ki is szedem [//-el] akkor meg felmegyek szeróra, beírom, hogy /felsz vagy /felsz 1 és ugyan azt írja ki mindig: \"<HASZNÁLAT: /felsz [id]\" fehérrel.
Ráadásként 2 warn-ot is kiír:
(60) : warning 219: local variable \"tmp\" shadows a variable at a preceding level
(61) : warning 219: local variable \"giveplayerid\" shadows a variable at a preceding level
-
Tedd egybe a 2 fst.
-
[1.]
Flash - Átírtam a dialogidket, mégsem jó :unsure:
Színek fs-nél: #define DIALOG_SZINEK 9800
Radio fs-nél: #define DIALOG_RADIO 5500
És mindkettõben ezenkívül még ugye 2 helyen van feltüntetve a dialogid, (ShowPlayerDialog és OnDialogResponse résznél) ami így itt is különbözik egymástól, nem tudom miért zavarja egymást a kettõ.
[2.]
TengeriMalac - nem jó, mert azt írja [függetlenül attól, hogy admin vagyok-e vagy sem] hogy \"nem vagy admin\" illetve még ha ezt ki is szedem [//-el] akkor meg felmegyek szeróra, beírom, hogy /felsz vagy /felsz 1 és ugyan azt írja ki mindig: \"<HASZNÁLAT: /felsz [id]\" fehérrel.
Ráadásként 2 warn-ot is kiír:
(60) : warning 219: local variable \"tmp\" shadows a variable at a preceding level
(61) : warning 219: local variable \"giveplayerid\" shadows a variable at a preceding level
A tmp és a giveplayerid változók magasabb szinteken (pl. globális változó, callback elején) már deklarálva vannak. Gondolom tengerimalac nem ismeri a gf-et. Itt a jó kód:
if(strcmp(cmd, \"/felsz\", true) == 0)
{
if(!IsPlayerAdmin(playerid)) return SendclientMessage(playerid, COLOR_RED, \"Nem vagy RCON admin!\");;
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, \"<HASZNÁLAT>:/a [játékosid]\");
if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, COLOR_RED,\"HIBA: A beírt azonosító(ID) nem található!\");
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), \"%s(ID:%d)! Adja meg magát!\", giveplayer,giveplayerid);
SendClientMessageToAll(COLOR_ORANGE, string);
return 1;
}
-
N@rbirock - Valóban! Köszönöm szépen, mûködik egy fs alatt. ++ ::|
Viszont a felszólítási id hiba még mindig fenn áll. Hiába vagyok ki-be jelentkezve adminnal a szerón, ugyanazt írja ki: \"Nem vagy RCON admin\"
Nem tudná valaki leírni a jó parancsot? Tehát, hogy /felsz [id] - és kiírja mindenkinek, hogy pl. \"Laci ID1 álljon meg!\"
És ezt persze csak admin tudná használni a parancsot. :cry3:
-
Ahogy nézem, kódilag nincs benne hiba.
zcmd + sscanf?
nem igazán bírom az strcmp + strtok párosítást.