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

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

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

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

Тест на ГМ [ZCMD][Advance-rp]

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

Andrey[]

Умник
Не любитель я делать, что-либо для паблика, поэтому и писать уроки не умею, но сегодня всё же поробую.

Многие видели тему Версия команды для RLS
Я решил эту "команду" перевести на ZCMD (Engine-rp, United-rp и т.п) и кое-что исправить, а именно:
  1. Заменил SetTimer на SetTimerEx
    [*]Уменьшил количество отнимаемого HP у игрока.
    [*]Увеличил скорость срабатывания паблика (с 2000 до 1000)
    [*]Огонь у игрока не видно

Ко всем new:
PHP:
new GmtestTimer[MAX_PLAYERS];
new AdmGM[MAX_PLAYERS] = 0;
new Float:AdmGMHP[MAX_PLAYERS];
new AdmGMID[MAX_PLAYERS];
new Float:AdmGMArm[MAX_PLAYERS];
Вставляем туда где ваши команды:
PHP:
CMD:gm(playerid, params[])
{
	if(PlayerLogged[playerid] == 0) return 1;
    if(PlayerInfo[playerid][pAdmin] < 1 || AdminLogged[playerid] == false) return 1;
    if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /gm [id игрока]");
	if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_GREY, "Игрок оффлайн");
	if(PlayerLogged[params[0]] == 0) return SendClientMessage(playerid, COLOR_GREY, "Игрок не зашёл");
    new Float:boomx, Float:boomy, Float:boomz;
    GetPlayerPos(params[0],boomx, boomy, boomz);
    GetPlayerHealth(params[0],AdmGMHP[params[0]]);
    AdmGM[playerid] = 1;
    AdmGMID[playerid] = params[0];
    GetPlayerArmour(params[0], AdmGMArm[playerid]);
    SetArmour(params[0], 0);
    CreateExplosion(boomx, boomy , boomz+7.5, 5, 0.5);
    GmtestTimer[playerid] = SetTimerEx("Gmtest",1000,true,"d",playerid);
    return 1;
}
Следующий шаг, это создание public:
PHP:
forward Gmtest(playerid);
public Gmtest(playerid)
{
    new string[128], Float:nowhealth[MAX_PLAYERS];
	if(AdmGM[AdmGMID[playerid]] == 1)
	{
		GetPlayerHealth(AdmGMID[playerid],nowhealth[AdmGMID[playerid]]);
	}
	if((AdmGMHP[AdmGMID[playerid]]-nowhealth[AdmGMID[playerid]]) > 0)
	{
		format(string, sizeof(string), "До: \t\t\t\t%.0f.0 HP\nПосле: \t\t\t%.0f.0 HP\nHP уменьшилось на: \t\t%.0f.0\n\n{7FB151}ГМ не обнаружено. HP игрока восстановлено.",AdmGMHP[AdmGMID[playerid]],nowhealth[AdmGMID[playerid]],(AdmGMHP[AdmGMID[playerid]]-nowhealth[AdmGMID[playerid]]));
		ShowPlayerDialog(playerid,888,DIALOG_STYLE_MSGBOX  , "Проверка на God Mode",string, "Закрыть", "");
		SetHealth(AdmGMID[playerid], AdmGMHP[AdmGMID[playerid]]);
	    SetArmour(AdmGMID[playerid], AdmGMArm[playerid]);
        AdmGMArm[playerid] = 0;
		SetHealth(AdmGMID[playerid], AdmGMHP[AdmGMID[playerid]]);
		AdmGM[AdmGMID[playerid]] = 0;
		AdmGMHP[AdmGMID[playerid]] = 0;
		AdmGMID[playerid] = INVALID_PLAYER_ID;
 	}
 	else if((AdmGMHP[AdmGMID[playerid]]-nowhealth[AdmGMID[playerid]]) == 0)
 	{
		format(string, sizeof(string), "До: \t\t\t%.0f.0 HP\nПосле: \t\t%.0f.0 HP\nHP не уменьшилось\n\n{CD5A5A}Возможно этот игрок использует ГМ.",AdmGMHP[AdmGMID[playerid]],nowhealth[AdmGMID[playerid]]);
		ShowPlayerDialog(playerid,888,DIALOG_STYLE_MSGBOX  , "Проверка God Mode",string, "Закрыть", "");
		AdmGM[AdmGMID[playerid]] = 0;
                AdmGMArm[playerid] = 0; 
		AdmGMHP[AdmGMID[playerid]] = 0;
		AdmGMID[playerid] = INVALID_PLAYER_ID;
	}
	KillTimer(GmtestTimer[playerid]);
}
P.s в планах сделать так же учёт и на броню, оптимизировать.Обо всех ошибках писать ниже.
Автор:Derzilla
Редактировал:Andrey[]

Делаем кнопку наказания если игрок оказался гм

Находим в паблике Gmtest:
PHP:
        format(string, sizeof(string), "До: \t\t\t%.0f.0 HP\nПосле: \t\t%.0f.0 HP\nHP не уменьшилось\n\n{CD5A5A}Возможно этот игрок использует ГМ.",AdmGMHP[AdmGMID[playerid]],nowhealth[AdmGMID[playerid]]);
        ShowPlayerDialog(playerid,888,DIALOG_STYLE_MSGBOX  , "Проверка God Mode",string, "Закрыть", "");
и заменяем на:
PHP:
format(string, sizeof(string), "До: \t\t\t%.0f.0 HP\nПосле: \t\t%.0f.0 HP\nHP не уменьшилось\n\n{CD5A5A}Возможно этот игрок использует ГМ.",AdmGMHP[AdmGMID[playerid]],nowhealth[AdmGMID[playerid]]);
        SPD(playerid,888, 0, "Проверка God Mode",string, "Наказать", "Закрыть");
Там где все ваши case: добавляем
PHP:
	case 888:
		{
			if(response)
			{
    		 	format(totalstring, 128, "Администратор %s выдал варн %s.Причина: ГМ", sendername(playerid), sendername(AdmGMID[playerid]));
				SendClientMessageToAll(COLOR_LIGHTRED,totalstring)  ;
				PlayerInfo[AdmGMID[playerid]][pWarn]++;
				Kick(AdmGMID[playerid]);
			}
		}
P.s Добавлена проверка на броню
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу