Habe Problem, dass wenn ich mich selber kicke angezeigt wird, "Spieler nicht online !" und "Unknown Command !"
dcmd_kick(playerid,params[])
{
new pID;
new Grund;
if(sscanf(params,"us",pID,Grund))
{
return SendClientMessage(playerid,Weiss,"Benutzung: /kick [ID] [Grund]");
}
if(SpielerInfo[playerid][AdminLevel] >= 2)
{
if(IsPlayerConnected(pID))
{
new name[MAX_PLAYER_NAME];
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
GetPlayerName(pID,pname,sizeof(pname));
new string[128];
format(string,sizeof(string),"%s wurde von %s gekickt. Grund: %s",pname,name,Grund);
SendClientMessageToAll(Weiss,string);
Kick(pID);
}
else
{
SendClientMessage(playerid,Weiss,"Der Spieler ist nicht online !");
}
}
else
{
SendClientMessage(playerid,Weiss,"Du bist kein Administrator !");
}
return 1;
}
Hoffe ihr könnt mir helfen.
MFG
Federal
-
-
Meintest du das so? Ich habe es dir auch direkt etwas verkürzt.
dcmd_kick(playerid,params[])
{
new pID, Grund;
if(sscanf(params,"us",pID,Grund)) return SendClientMessage(playerid,Weiss,"Benutzung: /kick [ID] [Grund]");if(SpielerInfo[playerid][AdminLevel] <= 2) return SendClientMessage(playerid,Weiss,"Du bist kein Administrator !");
if(!IsPlayerConnected(pID) || pID == playerid) return SendClientMessage(playerid,Weiss,"Der Spieler ist nicht online !");
new name[MAX_PLAYER_NAME];
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
GetPlayerName(pID,pname,sizeof(pname));
new string[128];
format(string,sizeof(string),"%s wurde von %s gekickt. Grund: %s",pname,name,Grund);
SendClientMessageToAll(Weiss,string);
Kick(pID);return 1;
}//E: Denkfehler
-
Nein ich meine es so, wie ich es geschrieben habe Wenn er AdminLevel 2 oder höher ist soll die Funktion ausgeführt werden.^^
//edit R
//edit: Mein Problem besteht weiterhin. -
hier ganz anders:
ocmd:kick(playerid,params[])
{
new pID, str[128];
if(sscanf(params, "uz",pID,str))return SendClientMessage(playerid,0xB0AFB0FF,"/kick [ID/Name] [Grund]");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,0xB0AFB0FF,"Dieser Spieler ist nicht online");
if (pID == playerid)return SendClientMessage(playerid,0xB0AFB0FF,"Du kannst dich nicht selber kicken");
if(IsPlayerAdmin(playerid) CallRemoteFunction("PlayerIsAdmin","i",playerid))
{
new str2[128];
format(str2,sizeof(str2),"%s wurde gekickt! Grund: %s",playername[pID],str[0] ? str : "Kein Grund");
SendClientMessageToAll(0xB0AFB0FF,str2);
Kick(pID);
}
else return SendClientMessage(playerid, 0xB0AFB0FF, "Dein Adminrank reicht nicht aus!");
return 1;
} -
Nein ich meine es so, wie ich es geschrieben habe Wenn er AdminLevel 2 oder höher ist soll die Funktion ausgeführt werden.^^
//edit R
//edit: Mein Problem besteht weiterhin.if(SpielerInfo[playerid][AdminLevel] < 2) return SendClientMessage(playerid,Weiss,"Du bist kein Administrator !");
Dieser Code fragt ab, ob das Adminlevel des Spielers unter 2 ist.
Grüße,
tonyalva -
ocmd:kick(playerid,params[])
{
if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,ROT,"Du bist kein Admin.");
new pID, reason[128],string[128];
if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,BLAU,"/kick [id] [grund]");
format(string,sizeof(string),"AdmCmd: %s wurde von %s gekickt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
SendClientMessageToAll(ROT,string);
Kick(pID);
return 1;
} -
Das hilft mir nicht weiter.
-
Mein Post sollte dir allerdings in Bezug auf dies im Zitat helfen.
Grüße,
tonyalva -
dcmd.inc drin bei includes ??
-
dcmd.inc wäre mal was neues.
@Federal: Hast du meinen Code überhaupt getestet bzw. versucht zu verstehen? Ich denke weniger, dann braucht man auch keine Hilfe von mir oder anderen mehr erwarten.
-
-
Dein Code funktioniert leider nicht, habe ihn schon ausprobiert.
-
Was funktioniert nicht? Verrate uns das lieber, als uns im Dunkeln tappen zu lassen.
-
Das gleiche, wie ich in meinem Ersten Post geschrieben habe.
-
if(!IsPlayerConnected(pID) || pID == playerid) return SendClientMessage(playerid,Weiss,"Der Spieler ist nicht online !");
Das lässt sich ja auch daraus schließen, du kannst dich nicht selbst kicken, warum sollte man das auch?..
Wenn du möchtest, dass du dich selbst kicken kannst, entferne die hintere Abfrage.Grüße,
tonyalva -
Das habe ich auch, das Problem besteht weiterhin.
-
Mal nebenbei:
new Grund;
muss ein string sein, ansonsten wird der Grund nicht angezeigt.
Debuge den Befehl mal, und sag uns, was dabei rausgekommen ist.
Eine Alternative:if(pID == INVALID_PLAYER_ID) return SendClientMessage(playerid,Weiss,"Der Spieler ist nicht online!");
Grüße,
tonyalva -
Welches Problem?
ZitatHabe Problem, dass wenn ich mich selber kicke angezeigt wird, "Spieler nicht online !"[...]
Wenn er AdminLevel 2 oder höher ist soll die Funktion ausgeführt werden.
Das ist beides in meinem Beispiel abgedeckt, also erkläre uns doch bitte erneut dein Problem.//E: tonyalva: Tatsächlich, das hatte ich wohl übersehen... Ich denke aber eher weniger, dass das das Problem ist.
-
"Du bist kein Administrator !"
"Unknown Command"
-.- -
Dann fragen wir mal anders:
-Welches Adminlevel hast du?
-Welchen Code benutzt du, um das Adminlevel abzufragen
-Wird der Spieler denn trotzdem gekickt?Allerdings kannst du dich wohl auch nicht so recht entscheiden, das Problem mit dem Spieler, der laut ClientMessage "nicht online" ist, ist dann doch laut deiner Aussage behoben.
@dead: Nein, das wird wohl eher nicht das Problem sein, wollte es allerdings trotzdem mal anmerken, damit Federal sich später nicht über eine verbuggte ClientMessage wundert.
Grüße,
tonyalva -
Ich bin AdminLevel 6, ich frage ab "if(SpielerInfo[playerid][AdminLevel] >= 2)" Ob er Level 2 oder höher ist.
Nein der Spieler wird nicht trotzdem gekickt.