02.07.2013, 12:16
I got a problem in my script, when i kick or ban the player. It doest show the message to the player that got ban or kick it just say "server closed the connection"
How to fix that?
How to fix that?
Kick(playerid); => SetTimerEx("KickPlayer",500,false,"i",playerid); Kick(giveplayerid); => SetTimerEx("KickGPlayer",500,false,"i",giveplayerid);
forward KickPlayer(playerid); public KickPlayer(playerid) { Kick(playerid); return 1; } forward KickGPlayer(giveplayerid); public KickGPlayer(giveplayerid) { Kick(giveplayerid); return 1; }
CMD:kick(playerid, params[]) { if (PlayerInfo[playerid][pAdmin] >= 2 || PlayerInfo[playerid][pHelper] >= 2 || PlayerInfo[playerid][pBanAppealer] >= 1 || PlayerInfo[playerid][pShopTech] >= 1 || PlayerInfo[playerid][pUndercover] >= 1 || PlayerInfo[playerid][pFactionModerator] >= 1 || PlayerInfo[playerid][pGangModerator] >= 1) { new string[128], giveplayerid, reason[64]; if(sscanf(params, "us[64]", giveplayerid, reason)) return SendClientMessageEx(playerid, COLOR_WHITE, "USAGE: /kick [playerid] [reason]"); if(IsPlayerConnected(giveplayerid)) { if(PlayerInfo[giveplayerid][pAdmin] >= PlayerInfo[playerid][pAdmin] && (PlayerInfo[giveplayerid][pHelper] >= 2 || PlayerInfo[giveplayerid][pAdmin] > 0) && playerid != giveplayerid) { format(string, sizeof(string), "AdmCmd: %s has been auto-kicked, reason: Trying to /kick a higher admin.", GetPlayerNameEx(playerid)); ABroadCast(COLOR_YELLOW,string, (PlayerInfo[playerid][pAdmin] == 1) ? (1) : (2)); Kick(playerid); return 1; } else { new year, month,day; getdate(year, month, day); new playerip[32]; GetPlayerIp(giveplayerid, playerip, sizeof(playerip)); format(string, sizeof(string), "AdmCmd: %s (IP:%s) was kicked by %s, reason: %s (%d-%d-%d)", GetPlayerNameEx(giveplayerid), playerip, GetPlayerNameEx(playerid), reason,month,day,year); Log("logs/kick.log", string); if(PlayerInfo[playerid][pAdmin] == 1) Log("logs/moderator.log", string); format(string, sizeof(string), "AdmCmd: %s was kicked by %s, reason: %s", GetPlayerNameEx(giveplayerid), GetPlayerNameEx(playerid), reason); SendClientMessageToAllEx(COLOR_LIGHTRED, string); Kick(giveplayerid); } return 1; } } else SendClientMessageEx(playerid, COLOR_GRAD1, "Invalid player specified."); return 1; }
Replace all
Код:
Kick(playerid); => SetTimerEx("KickPlayer",500,false,"i",playerid); Kick(giveplayerid); => SetTimerEx("KickGPlayer",500,false,"i",giveplayerid); Код:
forward KickPlayer(playerid); public KickPlayer(playerid) { Kick(playerid); return 1; } forward KickGPlayer(giveplayerid); public KickGPlayer(giveplayerid) { Kick(giveplayerid); return 1; } |
forward KickPlayer(playerid);//This set's up the timer, or forward's it.
public KickPlayer(playerid)//This is the actual kick timer.
{
Kick(playerid);//Here it kicks the playerid you specified in the timer start.
return 1;
}
CMD:kick(playerid, params[])
{
if (PlayerInfo[playerid][pAdmin] >= 2 || PlayerInfo[playerid][pHelper] >= 2 || PlayerInfo[playerid][pBanAppealer] >= 1 || PlayerInfo[playerid][pShopTech] >= 1 || PlayerInfo[playerid][pUndercover] >= 1 || PlayerInfo[playerid][pFactionModerator] >= 1 || PlayerInfo[playerid][pGangModerator] >= 1)
{
new string[128], giveplayerid, reason[64];
if(sscanf(params, "us[64]", giveplayerid, reason)) return SendClientMessageEx(playerid, COLOR_WHITE, "USAGE: /kick [playerid] [reason]");
if(IsPlayerConnected(giveplayerid))
{
if(PlayerInfo[giveplayerid][pAdmin] >= PlayerInfo[playerid][pAdmin] && (PlayerInfo[giveplayerid][pHelper] >= 2 || PlayerInfo[giveplayerid][pAdmin] > 0) && playerid != giveplayerid)
{
format(string, sizeof(string), "AdmCmd: %s has been auto-kicked, reason: Trying to /kick a higher admin.", GetPlayerNameEx(playerid));
ABroadCast(COLOR_YELLOW,string, (PlayerInfo[playerid][pAdmin] == 1) ? (1) : (2));
SetTimerEx("KickPlayer",500,false,"i",playerid);//Here it starts a 1/2 second timer to kick the player that typed the command to kick an admin.
return 1;
}
else
{
new year, month,day;
getdate(year, month, day);
new playerip[32];
GetPlayerIp(giveplayerid, playerip, sizeof(playerip));
format(string, sizeof(string), "AdmCmd: %s (IP:%s) was kicked by %s, reason: %s (%d-%d-%d)", GetPlayerNameEx(giveplayerid), playerip, GetPlayerNameEx(playerid), reason,month,day,year);
Log("logs/kick.log", string);
if(PlayerInfo[playerid][pAdmin] == 1) Log("logs/moderator.log", string);
format(string, sizeof(string), "AdmCmd: %s was kicked by %s, reason: %s", GetPlayerNameEx(giveplayerid), GetPlayerNameEx(playerid), reason);
SendClientMessageToAllEx(COLOR_LIGHTRED, string);
SetTimerEx("KickPlayer",500,false,"i",giveplayerid););//Here it starts a 1/2 second timer to kick the player defined by the admin.
}
return 1;
}
}
else SendClientMessageEx(playerid, COLOR_GRAD1, "Invalid player specified.");
return 1;
}