Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Ограничение на команды

Статус
В этой теме нельзя размещать новые ответы.

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;
		}
	}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу