Hallöschen,
Bei meinem script edit funktioniert der /kick Befehl nicht:
/kick : You are not an admin
Den grund habe ich gefunden, waurm auch immer benutzt der server die base.amx
if(strcmp("/kick", cmd, true) == 0)
{
if(IsPlayerAdmin(playerid)) {
tmp = strtok(cmdtext,idx);
if(!strlen(tmp) || strlen(tmp) > 5) {
return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Usage: /kick (id) [reason]");
}
new id = strval(tmp);
if(!IsPlayerConnected(id)) {
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/kick : Bad player ID");
return 1;
}
gMessage = strrest(cmdtext,idx);
GetPlayerName(id,iName,sizeof(iName));
SendClientMessage(id,ADMINFS_MESSAGE_COLOR,"-- You have been kicked from the server.");
if(strlen(gMessage) > 0) {
format(Message,sizeof(Message),"Reason: %s",gMessage);
SendClientMessage(id,ADMINFS_MESSAGE_COLOR,Message);
}
format(Message,sizeof(Message),">> %s(%d) has been kicked.",iName,id);
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,Message);
Kick(id);
return 1;
} else {
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/kick : You are not an admin");
return 1;
}
}
Kann mir jemand sagen wie ich das problem weg bekomme?
der /makeadmin Befehl:
if(strcmp(cmd, "/makeadmin", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 1339)
{
//if(strcmp("[FoD]Fabio",GetName(playerid),false) && strcmp("[FoD][FoD]Suppenhuhn",GetName(playerid),false))
if(PlayerInfo[playerid][pAdmin] < 1339)
{
SendClientMessage(playerid,COLOR_GRAD2," Das Vergeben und Entziehen von Adminrechten ist nur für die ServerOwner möglich!");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /makeadmin [ID] [Level]");
return 1;
}
new para1 = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
new level = strval(tmp);
if(IsPlayerConnected(para1))
{
if(para1 != INVALID_PLAYER_ID)
{
GetPlayerName(para1, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
if(PlayerInfo[para1][pAdmin] < level)
{
printf("AdmCmd: %s hat %s zu einem Level %d Admin befördert.", sendername, giveplayer, level);
format(string, sizeof(string), " Du wurdest durch %s zu einem Level %d Admin befördert", sendername, level);
SendClientMessage(para1, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), " Du hast %s zu einem Level %d Admin befördert.", giveplayer,level);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
}
else
{
printf("AdmCmd: %s hat %s zu einem Level %d Admin degradiert.", sendername, giveplayer, level);
format(string, sizeof(string), " Du wurdest durch %s zu einem Level %d Admin degradiert", sendername, level);
SendClientMessage(para1, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), " Du hast %s zu einem Level %d Admin degradiert.", giveplayer,level);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
}
PlayerInfo[para1][pAdmin] = level;
}
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " Du bist nicht befugt diesen Befehl zu nutzen! ");
}
return 1;
}
Der eigendliche /kick befehl, wie er sein soll:
if(strcmp(cmd, "/kick", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "FEHLER: /kick [playerid] [Grund]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pSupporter] >= 1)
{
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "FEHLER: /kick [playerid] [Grund]");
return 1;
}
if(PlayerInfo[giveplayerid][pAdmin] > PlayerInfo[playerid][pAdmin])
{
SendClientMessage(playerid, COLOR_GRAD2, "Du kannst diesen Spieler nicht kicken, da er ein höheres Adminlevel hat als du!");
return 1;
}
new year, month,day;
getdate(year, month, day);
format(string, sizeof(string), "AdmCmd: %s wurde von %s gekickt, Grund: %s (%d-%d-%d)", giveplayer, sendername, (result),month,day,year);
KickLog(string);
format(string, sizeof(string), "AdmCmd: %s wurde von %s gekickt, Grund: %s", giveplayer, sendername, (result));
SendClientMessageToAll(COLOR_LIGHTRED, string);
Kick(giveplayerid);
return 1;
}
}
}
else
{
format(string, sizeof(string), " %d ist kein aktiver Spieler.", giveplayerid);
SendClientMessage(playerid, COLOR_GRAD1, string);
}
}
return 1;
}