Решил вырезать из своего мода три команды. [/ban] - забанить игрока, [/unban] - разбанить игрока, [/deleteacc] - удалить аккаунт прямо из игры. Приступим.
В public OnPlayerCommandText:
Также в public OnPlayerCommandText:
Опять же в public OnPlayerCommandText:
Есть вопросы или ошибки? Пиши всё сюда!
В public OnPlayerCommandText:
- Код:
//==============================================================================
if(strcmp("/ban", cmd, true) == 0)
{
if(IsPlayerAdmin(playerid) || PlayerInfo[playerid][pAdmin] >= 3)
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp) || strlen(tmp) > 5)
{
return SendClientMessage(playerid,COLOR_ISPOLZUY,"{33AA33}[Использование]{FFFFFF}: /ban [id] [кол-во дней] [причина]");
}
new id = strval(tmp);
if(!IsPlayerConnected(id))
{
return SendClientMessage(playerid,COLOR_ISPOLZUY,"{33AA33}[Использование]{FFFFFF}: /ban [id] [кол-во дней] [причина]");
}
if(PlayerInfo[id][pAdmin] >= 5)
{
return SendClientMessage(playerid,COLOR_ISPOLZUY,"{FF0000}[Ошибка]{FFFFFF}: Администратора забанить нельзя.");
}
new days = strval(strtok(cmdtext,idx));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
// new banstring[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, "{33AA33}[Использование]{FFFFFF}: /ban [id_игрока/ЧастьИмени] [причина]");
return 1;
}
GetPlayerName(id,giveplayer,sizeof(giveplayer)) ;
GetPlayerName(playerid,sendername,sizeof(sendername));
if(days < 1 || days > 91) { SendClientMessage(playerid, COLOR_RED, "{FF0000}[Ошибка]{FFFFFF}: Не ниже 1 и не выше 91."); return 1; }
new arank[64];
if(PlayerInfo[playerid][pAdmin] == 6) { arank = "Гл. Администратором"; }
else if(PlayerInfo[playerid][pAdmin] == 5) { arank = "Администратором"; }
else if(PlayerInfo[playerid][pAdmin] == 4) { arank = "Гл. Модератором"; }
else if(PlayerInfo[playerid][pAdmin] == 3) { arank = "Модератором 3ур."; }
else if(PlayerInfo[playerid][pAdmin] == 2) { arank = "Модератором 2ур."; }
else if(PlayerInfo[playerid][pAdmin] == 1) { arank = "Модератором 1ур."; }
else { arank = "Модератор"; }
new unbandate = GetTimeStamp() + days*60*60*24;
new playern[16];
GetPlayerName(id, playern, sizeof(playern));
AddInTimeBanList(playern, unbandate);
PlayerInfo[id][pBanned] = 1;
PlayerInfo[id][pBlocks] += 1;
PlayerInfo[playerid][pBans] += 1;
//KickBan(id);
new TBanStr[256];
format(TBanStr,sizeof(TBanStr),"AgelonG: %s был(а) забанен(а) %s %s на %d дней. Причина: %s",giveplayer,arank,sendername,days, (result));
SendClientMessageToAll(COLOR_LIGHTRED, TBanStr);
format(string, sizeof(string), "Ты забанил(а) %s на %d дней. Причина: %s", giveplayer, days, (result));
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "Ты был(а) забанен(а) %s %s на %d дней. Причина: %s", arank, sendername, days, (result));
SendClientMessage(id, COLOR_LIGHTBLUE, string);
Kick(id);
return 1;
}
else
{
SendClientMessage(playerid,COLOR_WHITE,"{FF0000}[Ошибка]{FFFFFF}: Ты не авторизован для этой команды.");
return 0;
}
}
Также в public OnPlayerCommandText:
- Код:
//------------------------------------------------------------------------------
if(strcmp(cmd, "/unban", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pAdmin] < 5)
{
format(string, sizeof(string), "У Вас недостаточно прав, чтобы испольозовать эту команду.");
SendClientMessage(playerid, COLOR_GRAD1, string);
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, "AgelonG: /unban [PartOfName]");
return 1;
}
format(string, sizeof(string), "%s.ini", tmp);
if(fexist(string))
{
format(string, sizeof(string), "Аккаунт был успешно разбанен.");
SendClientMessage(playerid, COLOR_WHITE, string);
format(string, sizeof(string), "%s.ini", tmp);
dini_IntSet(string, "Banned", 0);
/* format(string,sizeof(string),"unbanip %s",tmp);
SendRconCommand(string);
SendRconCommand("reloadbans");
*/
}
else
{
format(string, sizeof(string), "Аккаунта с таким именем не существует.");
SendClientMessage(playerid, COLOR_GRAD1, string);
}
}
return 1;
}
Опять же в public OnPlayerCommandText:
- Код:
//==============================================================================
if (strcmp(cmd, "/deleteacc", true)==0)
{
if ((IsPlayerAdmin(playerid)) || PlayerInfo[playerid][pAdmin] >= 6)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_ISPOLZUY, "{33AA33}[Использование]{FFFFFF}: /deleteaccount [ник игрока]");
return 1;
}
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, 256, "AgelonG: Администратор: %s удалил игровой аккаунт '%s'", sendername,tmp);
// ABroadCast(COLOR_LIGHTRED,string,1);
//------------------------------------------------------------------------------
format(string, 256, "AgelonG: Администратор: %s удалил игровой аккаунт '%s'", sendername,tmp);
printf(string);
format(string,sizeof(string),"%s.ini",tmp);
fremove(string);
format(string, sizeof(string), "Вы удалили аккаунт: '%s", tmp);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
}
return 1;
}
Есть вопросы или ошибки? Пиши всё сюда!