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

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

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

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

Голосование за кик

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

Sam_Fisher_Gta

Специалист
♣Если был такой урок то не Орите а просто скажите ОК!
♣Суть этой системы в том если на сервере есть читер а нету админов то люди могут проголосовать за кик читера.
♣Минусы том что для кика нужно собрать половину голосов сервера,и есть люди которые захотят побаловаться.
♣Вырезал из Fortune
♣+ / - не нужны

Ко всем NEW^

PHP:
new votecount[MAX_PLAYERS];//счётчик кол-ва голосов за кик
new gVote[MAX_PLAYERS][MAX_PLAYERS];//для уже проголосовавшиx
В public OnPlayerConnect(playerid)

PHP:
votecount[playerid] = 0;//счётчик кол-ва голосов за кик
Ко всем командам

PHP:
if(strcmp(cmd, "/votekick", true) == 0)
	{
		for(new i = 0; i < GetMaxPlayers(); i++)//сканируем всех
		{
			if(IsPlayerConnected(i))
			{   //если игрок подключен
			}
		}
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))
		{
			SendClientMessage(playerid,COLOR_WHITE, "/votekick [id] [причина]");
			SendClientMessage(playerid,COLOR_WHITE, "Внимание: Запрещенно писать в причине оскорбительные слова!");
			return true;
		}
		giveplayerid = ReturnUser(tmp);
		if(IsPlayerConnected(giveplayerid))
		{
			if(giveplayerid != INVALID_PLAYER_ID)
			{
				if(gVote[playerid][giveplayerid] == 1)
				{
					format(string, sizeof(string), "Ты уже голосовал за этого игрока. Всего за него голосов %d.",votecount[giveplayerid]);
					SendClientMessage(playerid,COLOR_WHITE,string);
					return true;
				}
				if(PlayerInfo[playerid][pLevel] < 2) return SendClientMessage(playerid,COLOR_LIGHTGREEN,"Голосовать разрешено с 3 лвл");
				if(giveplayerid == playerid) return SendClientMessage(playerid,COLOR_LIGHTGREEN,"Вы не можете голосовать за самого себя");
				GetPlayerName(playerid, name, sizeof(name));
				GetPlayerName(giveplayerid, pname, sizeof(pname));
				new length = strlen(cmdtext);
				while ((idx < length) && (cmdtext[idx] <= ' '))
				{
					idx++;
				}
				new offset = idx;
				new result[128];
				while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
				{
					result[idx - offset] = cmdtext[idx];
					idx++;
				}
				result[idx - offset] = EOS;
				gVote[playerid][giveplayerid] = 1;
				votecount[giveplayerid]++;
				format(string, sizeof(string), "%d/7: {00ff00}%s {FFFFFF}проголосовал(а) за кик {00ff00}%s [id: %d]. {FFFFFF}Причина: {FF0000}%s ",votecount[giveplayerid],name,pname,playerid,(result));
				SendMeToAll(COLOR_WHITE, string);
				if(votecount[giveplayerid] >= 7)
				{   //если проголосовало больше половины игроков
					format(string, sizeof(string), "{00ff00}%s {FFFFFF}был(а) кикнут(а), Причина: {00ff00}%s",pname, (result));
					new lH, lM, lS;	gettime(lH,lM,lS);
					format(string, sizeof(string), "[%d:%02d:%02d] %s", lH,lM,lS, string);
					SendMeToAll(COLOR_PINK,string);
					for(new i=0; i<GetMaxPlayers(); i++)
					{
						gVote[i][giveplayerid] = 0;//обнуляем для следующего голосования
						votecount[giveplayerid] = 0;
					}
					Kick(giveplayerid);
				}
			}
		}
		else SendClientMessage(playerid, COLOR_GREY, "   Этого игрока нету на сервере !");
		return true;
	}
Вроде бы всё!
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу