Szerző Téma: Kick parancs segítségkérés  (Megtekintve 890 alkalommal)

Nem elérhető Blez

  • 202
    • Profil megtekintése
Kick parancs segítségkérés
« Dátum: 2015. Március 18. - 14:23:01 »
0 Show voters
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;
}
« Utoljára szerkesztve: 2015. Március 18. - 14:31:31 írta ƒlaﻛh »

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
Kick parancs segítségkérés
« Válasz #1 Dátum: 2015. Március 18. - 14:30:07 »
0 Show voters
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á..

Nem elérhető gbr333

  • 670
    • Profil megtekintése
Kick parancs segítségkérés
« Válasz #2 Dátum: 2015. Március 18. - 14:34:39 »
0 Show voters

SetTimerEx(\"DelayedKick\", 1000, false, \"i\", playerid2);//ezt használd a kick-hez!
 
forward DelayedKick(playerid);
public DelayedKick(playerid)
{
    Kick(playerid);
    return 1;
}

Nem elérhető P3ti

  • 321
    • Profil megtekintése
Kick parancs segítségkérés
« Válasz #3 Dátum: 2015. Március 18. - 14:34:47 »
+2 Show voters

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);
}
« Utoljára szerkesztve: 2015. Március 29. - 08:11:42 írta anGeL »

Nem elérhető Blez

  • 202
    • Profil megtekintése
Kick parancs segítségkérés
« Válasz #4 Dátum: 2015. Március 18. - 14:38:15 »
0 Show voters
Köszönöm szépen a segítséget! Megoldódott a probléma!  :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal