I name Alex
Умник
Доброго времени суток, хочу сделать ограничение на команды /ban, /warn, /kick, /offban, а незнаю куда что вставлять. Например: Администратор хочет забанить другого администратора, а ему это не удасца, ему напишет этому администратору который хочет забанить "Администратора банить запрещено", а всем остальным администраторам (* попытался забанить администратора *)
Помогите пожалуйста.
Помогите пожалуйста.
PHP:
if(strcmp(cmd, "/ban", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp) && PlayerInfo[playerid][pAdmin] >= 4) return SendClientMessage(playerid, COLOR_GRAD2, "Используйте: /ban [id игрока] [срок в днях] [причина]");
new playa;
new money;
playa = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
money = strval(tmp);
if (PlayerInfo[playerid][pAdmin] >= 4)
if(FD1 || FD2 || FD4)
{
if(IsPlayerConnected(playa))
{
if(playa != INVALID_PLAYER_ID)
{
if(money > 30 || money < 3)
{
SendClientMessage(playerid, COLOR_GRAD1, "Используй /ban [id игрока] [срок в днях (3-30)] [причина]");
return 1;
}
if(Logged[playa] == false) return SendClientMessage(playerid, COLOR_GRAD1, "");
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;
new day , month,year;
getdate(day,month,year);
new monthtext[24];
switch(month)
{
case 1: monthtext = "января";
case 2: monthtext = "февраля";
case 3: monthtext = "марта";
case 4: monthtext = "апреля";
case 5: monthtext = "мая";
case 6: monthtext = "июня";
case 7: monthtext = "июля";
case 8: monthtext = "августа";
case 9: monthtext = "сентября";
case 10: monthtext = "октября";
case 11: monthtext = "ноября";
case 12: monthtext = "декабря";
}
new curdate = getdate();
format(query, sizeof(query), "Администратор %s забанил игрока %s на %i дней. Причина: %s", PlayerInfo[playerid][pName],PlayerInfo[playa][pName], money, (result));
if(!strlen(result)) format(query, sizeof(query), "Администратор %s забанил игрока %s на %i дней.", PlayerInfo[playerid][pName],PlayerInfo[playa][pName], money);
SendClientMessageToAll(COLOR_LIGHTRED, query);
format(query, sizeof(query), "{FFFFFF}Дата: %d %s %d г.\nВаш ник: %s\nНик администратора: %s\nКоличество дней: %i\nПричина: %s\n\n{b2ff66}Если вы не согласны с наказанием, сделайте скриншот (f8)\nи оставьте жалобу на форуме (rp.ru)", year, monthtext, day, PlayerInfo[playa][pName],PlayerInfo[playerid][pName],money,(result));
ShowPlayerDialog(playa,27,DIALOG_STYLE_MSGBOX,"{ff5555}Бан аккаунта",query,"Закрыть","");
PlayerInfo[playa][pBan] = 1;
PlayerInfo[playa][pUnBanTime] = curdate+money;
PlayerInfo[playa][pAdmin] = 0;
PlayerInfo[playa][pMember] = 0;
PlayerInfo[playa][pLeader] = 0;
PlayerInfo[playa][pRang] = 0;
PlayerInfo[playa][pSetSpawn] = 0;
PlayerInfo[playa][pSkinOrg] = 0;
SetPlayerSkin(playa,PlayerInfo[playa][pSkin]);
AdminCombo[playerid][pBan] ++;
if(AdminCombo[playerid][pTimer] < 1) AdminCombo[playerid][pTimer] = 60;
AdminLog("Ban",result,playerid,playa);
BanIP(PlayerInfo[playa][pLastIP], money);
KickEx(playa);
}
}
}
else
{
}
}
return 1;
}
PHP:
if(strcmp(cmd, "/warn", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp) && PlayerInfo[playerid][pAdmin] >= 3) return SendClientMessage(playerid, COLOR_GRAD2, "Используй /warn [id игрока] [причина]");
giveplayerid = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] >= 3)
{
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
if(Logged[giveplayerid] == false) return SendClientMessage(playerid, COLOR_GRAD1, "Данный игрок еще не авторизовался");
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;
PlayerInfo[giveplayerid][pWarn] += 1;
AdminCombo[playerid][pWarn] ++;
if(AdminCombo[playerid][pTimer] < 1) AdminCombo[playerid][pTimer] = 60;
if(PlayerInfo[giveplayerid][pWarn] >= 4)
{
new curdate = getdate();
format(query, sizeof(query), "Администратор %s выдал предупреждение игроку %s [3|3]. Причина: %s.Акк.заблок.на 10 дней", PlayerInfo[playerid][pName], PlayerInfo[giveplayerid][pName], (result));
if(!strlen(result)) format(query, sizeof(query), "Администратор %s выдал предупреждение игроку %s [3|3].Акк.заблок.на 10 дней", PlayerInfo[playerid][pName], PlayerInfo[giveplayerid][pName]);
SendClientMessageToAll(ADM, query);
SendClientMessage(giveplayerid, 0xff6600AA, "Для снятия предупреждений используйте команду {00cc00}/unwarn");
SendClientMessage(giveplayerid, 0xff6600AA, "До снятия всех предупреждений Вам запрещено вступать в организации.");
PlayerInfo[giveplayerid][pAdmin] = 0;
PlayerInfo[giveplayerid][pMember] = 0;
PlayerInfo[giveplayerid][pLeader] = 0;
PlayerInfo[giveplayerid][pRang] = 0;
PlayerInfo[giveplayerid][pSkinOrg] = 0;
SetPlayerSkin(giveplayerid,PlayerInfo[giveplayerid][pSkin]);
PlayerInfo[giveplayerid][pWarn] = 0;
PlayerInfo[giveplayerid][pUnWarn] = 0;
PlayerInfo[giveplayerid][pUnWarntest] = 0;
PlayerInfo[giveplayerid][pUnBanTime] = curdate+7;
PlayerInfo[giveplayerid][pBan] = 1;
AdminLog("Warn",result,playerid,giveplayerid);
BanIP(PlayerInfo[giveplayerid][pLastIP],7);
KickEx(giveplayerid);
return 1;
}
new warne = PlayerInfo[giveplayerid][pWarn];
format(query, sizeof(query), "Администратор %s выдал предупреждение игроку %s [%i|3]. Причина: %s", PlayerInfo[playerid][pName], PlayerInfo[giveplayerid][pName], warne, (result));
if(!strlen(result)) format(query, sizeof(query), "Администратор %s выдал предупреждение игроку %s [%i|3].", PlayerInfo[playerid][pName], PlayerInfo[giveplayerid][pName], warne);
SendClientMessageToAll(ADM, query);
SendClientMessage(giveplayerid, 0xff6600AA, "Для снятия предупреждений используйте команду {00cc00}/unwarn");
SendClientMessage(giveplayerid, 0xff6600AA, "До снятия всех предупреждений Вам запрещено вступать в организации.");
PlayerInfo[giveplayerid][pAdmin] = 0;
PlayerInfo[giveplayerid][pMember] = 0;
PlayerInfo[giveplayerid][pRang] = 0;
PlayerInfo[giveplayerid][pSkinOrg] = 0;
PlayerInfo[giveplayerid][pUnWarn] = 0;
PlayerInfo[giveplayerid][pUnWarntest] = 0;
PlayerInfo[giveplayerid][pSetSpawn] = 0;
SetPlayerSkin(giveplayerid,PlayerInfo[giveplayerid][pSkin]);
if(PlayerInfo[giveplayerid][pLeader] >= 1)
{
new infoleadersgo[64];
format(infoleadersgo, sizeof(infoleadersgo), "SELECT * FROM leaders WHERE idorg = '%i'", PlayerInfo[giveplayerid][pLeader]);
mysql_query(dbHandle,infoleadersgo,true);
new rows,fields;
cache_get_data(rows, fields, dbHandle);
if(rows)
{
new juasc[80];
format(juasc, sizeof(juasc), "DELETE FROM leaders WHERE idorg = '%i' LIMIT 1", PlayerInfo[giveplayerid][pLeader]);
mysql_query(dbHandle,juasc,false);
}
}
PlayerInfo[giveplayerid][pLeader] = 0;
AdminLog("Warn",result,playerid,giveplayerid);
KickEx(giveplayerid);
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "[{FF0000}Ошибка{B4B5B7}] Неверный id.");
}
}
return 1;
}
PHP:
if(strcmp(cmd, "/kick", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp) && PlayerInfo[playerid][pAdmin] >= 2) return SendClientMessage(playerid, COLOR_GRAD2, "Используй /kick [id игрока] [причина (не обязательно)]");
giveplayerid = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] >= 2)
{
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
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;
format(query, sizeof(query), "Администратор %s кикнул игрока %s. Причина: %s", PlayerInfo[playerid][pName], PlayerInfo[giveplayerid][pName], (result));
if(!strlen(result)) format(query, sizeof(query), "Администратор %s кикнул игрока %s.", PlayerInfo[playerid][pName], PlayerInfo[giveplayerid][pName]);
SendClientMessageToAll(ADM,query);
AdminCombo[playerid][pKick] ++;
if(AdminCombo[playerid][pTimer] < 1) AdminCombo[playerid][pTimer] = 60;
AdminLog("Kick",result,playerid,giveplayerid);
KickEx(giveplayerid);
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "[{FF0000}Ошибка{B4B5B7}] Неверный id.");
}
}
return 1;
}
PHP:
if(strcmp(cmd, "/offban", true) == 0)
{
if (PlayerInfo[playerid][pAdmin] >= 4)
{
new akk[128];
new leader,ban,money;
akk = strtok(cmdtext, idx);
if(!strlen(akk) && PlayerInfo[playerid][pAdmin] >= 4) return SendClientMessage(playerid, COLOR_GRAD2, "Используй /offban [ник игрока] [срок] [причина]");
tmp = strtok(cmdtext, idx);
money = strval(tmp);
new newstring[40];
mysql_real_escape_string(akk, newstring);
new getuninv[80];
format(getuninv, sizeof(getuninv), "SELECT * FROM "TABLE_ACCOUNT" WHERE name = '%s'", newstring);
new Cache: ljasdasdg = mysql_query(dbHandle,getuninv,true);
if(cache_num_rows() == 0) return SendClientMessage(playerid,COLOR_GRAD1,"Такого игрока нет.");
if(cache_num_rows() > 0)
{
new sts[90],rows,fields;
format(sts,sizeof(sts), "SELECT leader,ban FROM "TABLE_ACCOUNT" WHERE name = '%s' LIMIT 1",akk);
new Cache: uninviteoffs = mysql_query(dbHandle,sts,true);
cache_get_data ( rows, fields, dbHandle) ;
if ( rows )
{
leader = cache_get_field_content_int(0, "leader");
ban = cache_get_field_content_int(0, "ban");
}
cache_delete(uninviteoffs);
new target;
target = ReturnUser(akk);
new squery[120];
format(squery, sizeof(squery), "Данный игрок сейчас в игре. Вы можете наказать его его используя {FFCC00}/ban %d [причина]", target);
if(target >= 0 && target != 65535) SendClientMessage(playerid, 0x66CC00AA, squery);
if(leader >= 1)
{
new delleaderunvinv[80];
format(delleaderunvinv, sizeof(delleaderunvinv), "SELECT * FROM leaders WHERE nickname = '%s'", akk);
new Cache: lokasd = mysql_query(dbHandle,delleaderunvinv,true);
if(cache_num_rows() > 0)
{
new kakak[80];
format(kakak, sizeof(kakak), "DELETE FROM leaders WHERE nickname = '%s' LIMIT 1", akk);
mysql_query(dbHandle,kakak,false);
}
cache_delete(lokasd);
}
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(ban == 0)
{
if(money > 30 || money < 2) { SendClientMessage(playerid, COLOR_GRAD1, "Используй /offban [id игрока] [срок в днях (2-30)] [причина]"); return 1; }
new lakers;
new curdate = getdate();
lakers = curdate+money;
new justicemoore[256];
format(justicemoore, sizeof(justicemoore), "update accounts set member = '0',unit = '0',leader = '0',rang = '0',skinorg = '0',admin = '0',rang = '0',warn = '0',ban = '1',unbantime = '%d',skinorg = '0',setspawn = '0' where name = '%s'", lakers, akk);
mysql_query(dbHandle,justicemoore,false);
format(query, sizeof(query), "Администратор %s забанил оффлайн игрока %s на %i дней. Причина: %s", PlayerInfo[playerid][pName], akk, money, (result));
SendClientMessageToAll(ADM, query);
}
}
cache_delete(ljasdasdg);
return 1;
}
}
