29.06.2013, 20:53
(
Последний раз редактировалось _Khaled_; 29.06.2013 в 23:25.
)
I'm trying to make a ban system with IP banning..
I need to configure if there is IP in the .ini, then player is banned
and also the BanReason isn't written correctly..
Any help?
pawn Код:
enum pInfo
{
pPass,
pIP[16],
pCash,
pScore,
pDonator,
pAdmin,
pHeals,
pKills,
pDeaths,
pBanned,
pBanReason,
}
new PlayerInfo[MAX_PLAYERS][pInfo];
forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
INI_Int("Password",PlayerInfo[playerid][pPass]);
INI_Int("Cash",PlayerInfo[playerid][pCash]);
INI_Int("Score",PlayerInfo[playerid][pScore]);
INI_Int("Donator",PlayerInfo[playerid][pDonator]);
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
INI_Int("Heals",PlayerInfo[playerid][pHeals]);
INI_Int("Kills",PlayerInfo[playerid][pKills]);
INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
INI_Int("Banned",PlayerInfo[playerid][pBanned]);
return 1;
}
//On Player Connect
public OnPlayerConnect(playerid)
{
new string[128];
new pname[24];
if(PlayerInfo[playerid][pBanned] == 1)
{
format(string,sizeof(string),"[BANNED] You are currently banned from the server. [Reason: %s]",PlayerInfo[playerid][pBanReason]);
SendClientMessage(playerid, COLOR_RED,string);
SendClientMessage(playerid, COLOR_RED,"[BANNED] Please Ban Appeal on our forums at www.trd.com");
SetTimerEx("KickPlayer",1000,false,"i",playerid);
return 1;
}
//OTHER CODES
return 1;
}
//On Player Disconnect.
public OnPlayerDisconnect(playerid, reason)
{
new string[128];
new pname[24];
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"Player's Data");
INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
INI_WriteInt(File,"Score",GetPlayerScore(playerid));
INI_WriteInt(File,"Donator",PlayerInfo[playerid][pDonator]);
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
INI_WriteInt(File,"Heals",PlayerInfo[playerid][pHeals]);
INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
INI_WriteInt(File,"Banned",PlayerInfo[playerid][pBanned]);
INI_Close(File);
//OTHER CODES
return 1;
}
//Ban command
dcmd_ban(playerid,params[])
{
new string[128];
new ID;
new cmdreason[100];
new pname[MAX_PLAYER_NAME];
new tname[MAX_PLAYER_NAME];
if(sscanf(params,"us[100]",ID,cmdreason))
{
SendClientMessage(playerid,COLOR_ERROR,"[USAGE] /Ban (Player Name/ID) (Reason)");
return 1;
}
if(!IsPlayerConnected(ID))
{
format(string,sizeof(string),"[ERROR] The player ID you entered is not connected to the server.");
SendClientMessage(playerid,COLOR_RED,string);
return 1;
}
if(PlayerInfo[ID][pAdmin] > PlayerInfo[playerid][pAdmin])
{
format(string,sizeof(string),"[ERROR] You cannot use this command on a higher administration level.");
SendClientMessage(playerid,COLOR_RED,string);
return 1;
}
GetPlayerName(playerid,pname,sizeof(pname));
GetPlayerName(ID,tname,sizeof(tname));
if(PlayerInfo[ID][pBanned] == 1)
{
format(string,sizeof(string),"[ERROR] %s(%d) is already banned from the server. [Reason: %s]",tname,ID,PlayerInfo[ID][pBanReason]);
SendClientMessage(playerid,COLOR_RED,string);
return 1;
}
if(InAdminMode[ID] == 1)
{
format(string,sizeof(string),"[ERROR] Admin %s(%d) is currently in admin mode.",tname,ID);
SendClientMessage(playerid,COLOR_RED,string);
return 1;
}
format(string, sizeof(string), "~r~BANNED!");
GameTextForPlayer(ID, string, 3000, 1);
new pIPp[16];
GetPlayerIp(playerid, pIPp, sizeof(pIPp));
PlayerInfo[ID][pIP] =pIPp;
new INI:File = INI_Open(UserPath(ID));
INI_SetTag(File,"Player's Data");
INI_WriteString(File,"IP",pIPp);
INI_WriteString(File,"BanReason",cmdreason);
INI_WriteInt(File,"Banned",1);
INI_Close(File);
PlayerInfo[ID][pBanned] =1;
format(string,sizeof(string),"[BANNED] An Administrator has banned you from the server. [Reason: %s]",cmdreason);
SendClientMessage(ID,COLOR_RED,string);
format(string,sizeof(string),"[ADMIN BAN] Administrator has banned %s(%d). [Reason: %s]",tname,ID,cmdreason);
SendClientMessageToAll(COLOR_PINK,string);
format(string,sizeof(string),"1[ADMIN BAN] Administrator has kicked banned. [Reason: %s]",tname,ID,cmdreason);
IRC_GroupSay(gGroupID,IRC_CHANNEL,string);
format(string,sizeof(string),"[ADMIN RADIO] Administrator %s(%d) has banned %s(%d). [Reason: %s]",pname,playerid,tname,ID,cmdreason);
SendAdminMessage(COLOR_PINK,string);
IRC_GroupSay(gGroupID,IRC_ADMINCHANNEL,string);
SetTimerEx("KickPlayer",1000,false,"i",ID);
return 1;
}
Код:
[Player's Data] Password = 310641585 Cash = 0 Score = 0 Donator = 0 Admin = 0 Heals = 0 Kills = 0 Deaths = 0 IPBanned = 0 NameBanned = 0 IP = 41.130.xx.xx BanReason = Banned = 1
and also the BanReason isn't written correctly..
Any help?