-
Sziasztok! Ahhoz szeretnék segítséget kérni, hogy készítek egy saját adminrendszert, melyben épp a kick parancsnál merűlt fel az a probléma, hogy hogyan tudnám megoldani azt, hogy egy admin ne tudjon kickelni nála nagyobb admint. Illetve még azt, hogyha kickelek valakit, akkor mindenkinek elküldi az üzenetet, kivéve a kickelt játékosnak. Ne értsetek félre, én azt szeretném ebből kihozni, hogy a SendClientMessageToAll miért nem küldi el a kirúgandó játékosnak is az üzenetet kirúgás előtt ?
Illetve még egy probléma, hogy amikor kirúgok valakit, akkor a kirúgott játékosnál az admin nevét írja, holott nem azt kéne, és ismét ne értsetek félre, nézzétek meg a kódban, ahogyan látható, ott nem az admin nevét kéne írnia, hanem a kirúgott játékos nevét.
CMD:kick(playerid, params[])
{
if(PlayerInfo[playerid][aLevel] >= 2)
{
new playerid2;
new reason[64];
new message[256];
new pName[MAX_PLAYER_NAME], aName[MAX_PLAYER_NAME];
GetPlayerName(playerid, aName, sizeof(aName));
GetPlayerName(playerid2, pName, sizeof(pName));
if(sscanf(params, \"us\", playerid2, reason)) return SendClientMessage(playerid, NARANCS, \"Használat: {FFFFFF}/kick [JátékosID] [indok]\");
if(!IsPlayerConnected(playerid2))
return SendClientMessage(playerid, PIROS, \"Hiba: {FFFFFF}Ez a játékos nem elérhető.\");
format(message, sizeof(message), \"%s {696969}ki lett rúgva a szerverről {FFFF00}%s {696969}által! Indok: {FFFF00}%s\", pName, aName, reason);
SendClientMessageToAll(CITROM, message);
Kick(playerid2);
}
else SendClientMessage(playerid, PIROS, \"Hiba: {FFFFFF}Ennek a parancsnak a használatához legalább 2-es szintű adminnak kell lenned!\");
return 1;
}
-
Alap hiba az hogy a SendClientMessageToAll-t nem írja a kickelt játékosnak, mert késik az üzenet neki. Nem tudom pontosan miért, és hogy miért nem javítják..
A másik kérdésedre a válasz:
if(PlayerInfo[playerid][aLevel] < PlayerInfo[playerid2][aLevel]) return SendClientMessage(playerid, -1, \"Magasabb admint nem rúghatsz ki!\");
Illetve még egy probléma, hogy amikor kirúgok valakit, akkor a kirúgott játékosnál az admin nevét írja, holott nem azt kéne[/quote]
A 2 GetPlayerName-t rakd az sscanf-os lekérdezés alá..
-
SetTimerEx(\"DelayedKick\", 1000, false, \"i\", playerid2);//ezt használd a kick-hez!
forward DelayedKick(playerid);
public DelayedKick(playerid)
{
Kick(playerid);
return 1;
}
-
CMD:kick(playerid, params[])
{
if(PlayerInfo[playerid][aLevel] >= 2)
{
new playerid2;
new reason[64];
if(sscanf(params, \"us\", playerid2, reason))
return SendClientMessage(playerid, NARANCS, \"Használat: {FFFFFF}/kick [JátékosID] [indok]\");
if(!IsPlayerConnected(playerid2))
return SendClientMessage(playerid, PIROS, \"Hiba: {FFFFFF}Ez a játékos nem elérhető.\");
if(PlayerInfo[playerid2][aLevel] > PlayerInfo[playerid][aLevel])
return SendClientMessage(playerid, PIROS, \"Hiba: {FFFFFF}Nálad magasabb szintű admint nem rúghatsz ki!\");
new pName[MAX_PLAYER_NAME], aName[MAX_PLAYER_NAME];
GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
GetPlayerName(playerid2, pName, MAX_PLAYER_NAME);
new message[256];
format(message, 256, \"%s {696969}ki lett rúgva a szerverről {FFFF00}%s {696969}által! Indok: {FFFF00}%s\", pName, aName, reason);
SendClientMessageToAll(CITROM, message);
SetTimerEx(\"DelayedKick\", 1000, false, \"i\", playerid2);
}
else
SendClientMessage(playerid, PIROS, \"Hiba: {FFFFFF}Ennek a parancsnak a használatához legalább 2-es szintű adminnak kell lenned!\");
return 1;
}
forward DelayedKick(playerid);
public DelayedKick(playerid)
{
Kick(playerid);
}
-
Köszönöm szépen a segítséget! Megoldódott a probléma! :)