Very bugged command -
hydravink - 12.01.2013
Hey,
My warn command is very bugged. For example I warn somebody and he has 1/3 warnings, then I warn myself and I have 2/3 warnings. I warn somebody else and he has 3/3 warnings and he gets kicked even if he was warned one time. Or, everybody has 1/3 warnings at the text but still gets kicked when the count reaches 3. Example:
Код:
x has warned y (1/3)
x has warned y (1/3)
x has warned y (1/3)
y has been kicked
This is the command, I feel like warnid gets saved for everybody but I'm not sure how to fix it:
pawn Код:
CMD:warn(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] > 1)
{
new warnid, reason[256], wNumber,
aName[MAX_PLAYER_NAME],
wName[MAX_PLAYER_NAME],
string[512];
wNumber = PlayerInfo[playerid][pWarns];
if(sscanf(params, "us[256]", warnid, reason)) return
SendClientMessage(playerid, COLOR_ORANGE, "[USAGE]{FFFFFF} /warn <playerid/name> <reason>");
if(!IsPlayerConnected(warnid)) return
SendClientMessage(playerid, COLOR_ERROR, "[ERROR]{FFFFFF} The playerid/name you have typen isn't connected.");
GetPlayerName(playerid, aName, sizeof(aName));
GetPlayerName(warnid, wName, sizeof(wName));
format(string, sizeof(string), "[WARN]{FFFFFF} Admin {33CFFF}'%s' {FFFFFF}has warned {33CFFF}'%s'{FF66A3}[ %s ( %d/3 ) ]", aName, wName, reason, wNumber);
SendClientMessageToAll(COLOR_LIGHTBLUE, string);
PlayerInfo[warnid][pWarns] += 1;
}else{
SendClientMessage(playerid, COLOR_ERROR, "[ERROR]{FFFFFF} Only level 2,3,4,5 admins can use this command.");
}
return 1;
}
Re: Very bugged command -
DaRk_RaiN - 12.01.2013
pawn Код:
CMD:warn(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] > 1)
{
new warnid, reason[256], wNumber,
aName[MAX_PLAYER_NAME],
wName[MAX_PLAYER_NAME],
string[512];
wNumber = PlayerInfo[playerid][pWarns];
if(sscanf(params, "us[256]", warnid, reason)) return
SendClientMessage(playerid, COLOR_ORANGE, "[USAGE]{FFFFFF} /warn <playerid/name> <reason>");
if(!IsPlayerConnected(warnid)) return
SendClientMessage(playerid, COLOR_ERROR, "[ERROR]{FFFFFF} The playerid/name you have typen isn't connected.");
GetPlayerName(playerid, aName, sizeof(aName));
GetPlayerName(warnid, wName, sizeof(wName));
format(string, sizeof(string), "[WARN]{FFFFFF} Admin {33CFFF}'%s' {FFFFFF}has warned {33CFFF}'%s'{FF66A3}[ %s ( %d/3 ) ]", aName, wName, reason, wNumber);
SendClientMessageToAll(COLOR_LIGHTBLUE, string);
PlayerInfo[warnid][pWarns] ++;
}else{
SendClientMessage(playerid, COLOR_ERROR, "[ERROR]{FFFFFF} Only level 2,3,4,5 admins can use this command.");
}
return 1;
}
Re: Very bugged command -
hydravink - 12.01.2013
But won't that warn me? Hmm...
EDIT: can you explain a little, too, please? I kinda didn't understand
Re: Very bugged command -
DaRk_RaiN - 12.01.2013
Replace
pawn Код:
PlayerInfo[warnid][pWarns] += 1;
With
pawn Код:
PlayerInfo[warnid][pWarns] ++;
Else i see nothing wrong.
Re: Very bugged command - Riddy - 12.01.2013
pawn Код:
CMD:warn(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] > 1)
{
new targetid, reason[124], aName[MAX_PLAYER_NAME], wName[MAX_PLAYER_NAME], string[124], cWarnings; // Warning player
if(sscanf(params,"us", targetid, reason)) // SSCANF
{
SendClientMessage(playerid, COLOR_ORANGE, "[USAGE]{FFFFFF} /warn <playerid/name> <reason>");
}
if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, COLOR_ERROR, "[ERROR]{FFFFFF} The playerid/name you have typen isn't connected."); // Check if player is on
cWarnings = PlayerInfo[targetid][pWarns]; // Set the cWarnings to the current warnings of the target player
GetPlayerName(playerid, aName, sizeof(aName));
GetPlayerName(targetid, wName, sizeof(wName));
format(string, sizeof(string), "[WARN]{FFFFFF} Admin {33CFFF}'%s' {FFFFFF}has warned {33CFFF}'%s'{FF66A3}[ %s ( %d/3 ) ]", aName, wName, reason, cWarnings);
SendClientMessageToAll(COLOR_LIGHTBLUE, string); // Tell everyone that this guys been warned
PlayerInfo[targetid][pWarns]++; // Add 1 to the warnings.
if(cWarnings == 3) // Kick player if wanring at 3
{
format(string, sizeof(string), "[KICKED]{FFFFFF} Player '%s' has been kicked from the server, Reason: Enough warnings", wName);
SendClientMessageToAll(COLOR_LIGHTBLUE, string);
Kick(targetid);
}
}
else {
SendClientMessage(playerid, COLOR_ERROR, "[ERROR]{FFFFFF} Only administrators above level 2 can use this"); // Error if not required level
}
return 1;
}
Should work how you want it too.