Mein kick Befehl ist verbugggt.
ocmd:kick(playerid,params[])
{
new pID,grund,string[128];
if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid,rot,"Benutzung: /kick [ID] [Grund]");
if(GetPVarInt(playerid,"Adminlevel") >= 1)
{
if(IsPlayerConnected(pID))
{
format(string,128,"Der Spieler %s wurde vom Admin %s gekickt Grund: %s",SpielerName(pID),SpielerName(playerid),grund);
SendClientMessageToAll(rot,string);
FreezePlayer(pID);
Kick(pID);
}
else
{
SendClientMessage(playerid,rot,"Dieser Spieler ist nicht Online");
}
}
else
{
SendClientMessage(playerid,rot,"Sie sind kein Admin level 1");
}
return 1;
}
Mein Kick befehl geht nicht ich werde nicht gekickt
- Deathman
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Wieso FreezePlayer(pID);?
-
return 1;
-
-
Hier mal verkürzt
ocmd:kick(playerid,params[])
{
new pID,grund,string[128];
if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid,rot,"Benutzung: /kick [ID] [Grund]");
if(GetPVarInt(playerid,"Adminlevel") == 0)return SendClientMessage(playerid,rot,"Sie sind kein Admin level 1");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,rot,"Dieser Spieler ist nicht Online");
format(string,128,"Der Spieler %s wurde vom Admin %s gekickt Grund: %s",SpielerName(pID),SpielerName(playerid),grund);
SendClientMessageToAll(rot,string);
FreezePlayer(pID);
Kick(pID);
return 1;
}@Fragende wegen Freeze
Er will den Spieler freezen, damit er nicht weiter rumlaufen kann
-
Ja super
-
Nein jetzt immernochnicht.
Jetzt steht da nur
Spieler ist nicht Online -
Das
new pID,grund,string[128];
zu
new pID,grund[128],string[128]; -
Hier mal mein Befehl:
ocmd:kick(playerid,params[])
{
new pID,string[128],grund[128];
if(GetPVarInt(playerid,"Eingeloggt") <= 0)return SendClientMessage(playerid,COLOR_RED,"Fehler: Du bist nicht eingeloggt und kannst daher diesen Befehl nicht verwenden!");
if(GetPVarInt(playerid,"pAdmin") <= 0)return SendClientMessage(playerid,COLOR_RED,"- Du bist kein Administrator");
if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid,COLOR_SILVER,"Hinweis: /kick [ID] [Grund]");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,COLOR_RED,"Hinweis: Der Spieler ist offline");
//if(pID == playerid)return SendClientMessage(playerid,0xF0F0F0FF,"Du kannst dich nicht selbst kicken!");
format(string,sizeof string,"AdmCmd: %s wurde von %s gekickt. Grund: %s.",PlayerName(pID),PlayerName(playerid),grund);
SendClientMessageToAll(0xFF0000FF,string);
TogglePlayerControllable(pID,0);
Kick(pID);
return 1;
} -
Code
Alles anzeigenocmd:kick(playerid, params[]) { new pID,reason[128]; new s1[180]; if(!isPlayerAnAdmin(playerid, 1)) return SendClientMessage(playerid, 0xFF0000AA, "Dieser Befehl existiert nicht! {FFFFFF} Benutze /help oder /commands für Hilfe"); if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Der angegebene Spieler ist nicht verbunden!"); if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,ROT,"Benutzung: /kick [ID] [Grund]"); if(isPlayerDirectAdmin(playerid, 4)) return format(s1,sizeof(s1),"{FF0000}Projektleiter {FFFFFF}%s hat %s gekickt! [Grund: %s]", SpielerName(playerid), SpielerName(pID),reason) && SendClientMessageToAll(WEISS,s1); if(isPlayerDirectAdmin(playerid, 3)) return format(s1,sizeof(s1),"{F05956}Administrator {FFFFFF}%s hat %s gekickt! [Grund: %s]", SpielerName(playerid), SpielerName(pID),reason) && SendClientMessageToAll(WEISS,s1); if(isPlayerDirectAdmin(playerid, 1)) return format(s1,sizeof(s1),"{1E52FC}Supporter {FFFFFF}%s hat %s gekickt! [Grund: %s]", SpielerName(playerid), SpielerName(pID),reason) && SendClientMessageToAll(WEISS,s1); if(isPlayerDirectAdmin(playerid, 2)) return format(s1,sizeof(s1),"{E1FF21}Moderator {FFFFFF}%s hat %s gekickt! [Grund: %s]", SpielerName(playerid), SpielerName(pID),reason) && SendClientMessageToAll(WEISS,s1); Kick(pID); return 1; }
bei mir wird der spieler nicht gekickt. hilfe
-
-
Also erstmal solltest du dashier machen:
if(sscanf(params,"us[128]",pID,reason))return SendClientMessage(playerid,ROT,"Benutzung: /kick [ID] [Grund]");
Seit dem neusten SSCANF Update muss man die Größe des Strings dort immer angeben.
##edit
Kommt denn irgendeine Meldung oder passiert nichts ? -
Wir haben nicht das neuste sscanf. Bei allen anderen befehlen z.b /gw 0 1 test (givewanted id anzahl grund)
Es kommt die Meldung Projektleiter Shut_Out08 hat Shut_Out08 gekickt. [Grund: test]
-
Ah klar du hast return SendClientMessageToAll....
Mach das so:
ocmd:kick(playerid, params[])
{
new pID,reason[128];
new s1[180];
if(sscanf(params,"us[128]",pID,reason))return SendClientMessage(playerid,ROT,"Benutzung: /kick [ID] [Grund]");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Der angegebene Spieler ist nicht verbunden!");
if(isPlayerDirectAdmin(playerid, 4)) { format(s1,sizeof(s1),"{FF0000}Projektleiter {FFFFFF}%s hat %s gekickt! [Grund: %s]", SpielerName(playerid), SpielerName(pID),reason) && SendClientMessageToAll(WEISS,s1); }
if(isPlayerDirectAdmin(playerid, 3)) { format(s1,sizeof(s1),"{F05956}Administrator {FFFFFF}%s hat %s gekickt! [Grund: %s]", SpielerName(playerid), SpielerName(pID),reason) && SendClientMessageToAll(WEISS,s1); }
if(isPlayerDirectAdmin(playerid, 1)) { format(s1,sizeof(s1),"{1E52FC}Supporter {FFFFFF}%s hat %s gekickt! [Grund: %s]", SpielerName(playerid), SpielerName(pID),reason) && SendClientMessageToAll(WEISS,s1); }
if(isPlayerDirectAdmin(playerid, 2)) { format(s1,sizeof(s1),"{E1FF21}Moderator {FFFFFF}%s hat %s gekickt! [Grund: %s]", SpielerName(playerid), SpielerName(pID),reason) && SendClientMessageToAll(WEISS,s1); }
Kick(pID);
return 1;
} -
Wo ist jetzt die sscanf abfrage?
-
Wo ist jetzt die sscanf abfrage?
Die machste einfach oben rein, sieht so aus als hätte er diese Vergessen
-
gut der spieler wird jetzt gekickt aber die msg kommt nicht mehr
-
Das kommt durch 0.3x. Du musst einen Timer einbauen womit der Spieler später gekickt wird.
-
Das kommt durch 0.3x. Du musst einen Timer einbauen womit der Spieler später gekickt wird.
ich schaffs ned... kann mir jmd das schicken?^^ -
Zuerst wird ein Public erstellt, indem der Spieler dann gekickt wird.
forward KickTimer(playerid);
public KickTimer(playerid)
{
Kick(playerid);
return 1;
}Dann im Befehl den Timer
SetTimerEx("KickTimer",200,false,"i",playerid);
Und dann sollte das klappen. -
ja okay danke aber wo kommt jetzt die msg?
/edit also einfach bei ocmd:kick den SetTimerEx rein?