Здравствуйте, уважаемые форумчане.
Сегодня я решил все-таки выложить работу Derzilla.
Примерное время написания: 20-30 минут
Версия команды для ZCMD
Описание: Проверяет игрока на ГМ, сравнивая HP до и после использования команды. Если HP изменено (не читер), то ему будет возвращено его старое HP.
[spoiler="Скриншоты:"]
[/spoiler]
Цитата
Добавляем ко всем forward's:
Код
forward Gmtest(playerid);
Код
new GmtestTimer[MAX_PLAYERS];
new AdmGM[MAX_PLAYERS] = 0;
new Float:AdmGMHP[MAX_PLAYERS];
new AdmGMID[MAX_PLAYERS] = INVALID_PLAYER_ID;
Цитата
Далее ищем в public OnPlayerCommandText свою команду /gm и заменяем на эту (P.S. Спасибо Block. за оптимизацию)
Код
if(strcmp(cmd, "/gm", true) == 0)
{
PlayerInfo[playerid][pAdmin] < 2) return SendClientMessage(playerid, COLOR_GRAD1, "Вам не доступна данная функция");
GetPlayerName(playerid, sendername, sizeof(sendername));
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /gm [id]");
giveplayerid = strval(tmp);
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Игрок не найден!");
new Float:boomx, Float:boomy, Float:boomz;
GetPlayerPos(giveplayerid,boomx, boomy, boomz);
GetPlayerHealth(giveplayerid,AdmGMHP[playerid]);
AdmGM[playerid] = 1;
AdmGMID[playerid] = giveplayerid;
CreateExplosion(boomx, boomy , boomz, 5, 0.5);
GmtestTimer[playerid] = SetTimerEx("Gmtest",1000,true,"d",playerid);
return true;
}
Цитата
Далее создадим паблик:
Код
public Gmtest(playerid)
{
new string[128], Float:nowhealth[MAX_PLAYERS];
if(AdmGM[playerid] == 1)
{
GetPlayerHealth(AdmGMID[playerid],nowhealth[AdmGMID[playerid]]);
}
if((AdmGMHP[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[playerid],nowhealth[AdmGMID[playerid]],(AdmGMHP[playerid]-nowhealth[AdmGMID[playerid]]));
ShowPlayerDialog(playerid,8888,DIALOG_STYLE_MSGBOX, "Проверка на God Mode",string, "Закрыть", "");
SetPlayerHealthAC(AdmGMID[playerid], AdmGMHP[playerid]);
AdmGM[playerid] = 0;
AdmGMHP[playerid] = 0;
AdmGMID[playerid] = INVALID_PLAYER_ID;
}
else if((AdmGMHP[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[playerid],nowhealth[AdmGMID[playerid]]);
ShowPlayerDialog(playerid,8888,DIALOG_STYLE_MSGBOX, "Проверка God Mode",string, "Закрыть", "");
AdmGM[playerid] = 0;
AdmGMHP[playerid] = 0;
AdmGMID[playerid] = INVALID_PLAYER_ID;
}
KillTimer(GmtestTimer[playerid]);
}
Вот и все!