AndreY.eXe
Специалист
Привет!
Кто играл или играет на Arizona RP, то знают, что на ней присутствует необычная система Анти ДМ зон. Если Вы вдруг попытаетесь стрельнуть в ЗЗ, то у Вас появится диалог с отсчетом секунд, после чего Вы сможете продолжить играть. Вот Вам такая фича!
Приступим:
В начало мода:
В OnPlayerConnect:
В любое место:
В OnPlayerKeyStateChange:
В любое место:
Вот и все! Можете посмотреть все по скринам:
Если Вам понравилась данная работа, или Вы взяли её себе на сервер, то поблагодарите автора нажав кнопку "Спасибо"
Кто играл или играет на Arizona RP, то знают, что на ней присутствует необычная система Анти ДМ зон. Если Вы вдруг попытаетесь стрельнуть в ЗЗ, то у Вас появится диалог с отсчетом секунд, после чего Вы сможете продолжить играть. Вот Вам такая фича!
Приступим:
В начало мода:
PHP:
new GetPlayerPointDMZZ[MAX_PLAYERS]; // Счетчик секунд
new PlayerDMZZ[MAX_PLAYERS]; // Для таймера
PHP:
GetPlayerPointDMZZ[playerid] = 5;
KillTimer(PlayerDMZZ[playerid]);
PHP:
stock GreenZones(playerid) // Сами зеленые зоны, я от себя добавил зону на вокзале ЛС.
{
if(PlayerToPoint(50.0, playerid, 1791.2559,-1907.3040,13.3976))return true; // SPAWN LS
return false;
}
stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z) // Функция (Выше)
{
if(IsPlayerConnected(playerid))
{
new Float:oldposx;
new Float:oldposy;
new Float:oldposz;
new Float:tempposx;
new Float:tempposy;
new Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if(((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))) return true;
}
return false;
}
PHP:
if(!IsPlayerInAnyVehicle(playerid))
{
if((newkeys & KEY_FIRE || (oldkeys & 128 && newkeys & 16)))
{
if(GetPlayerWeapon(playerid) != 43 && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DRINK_SPRUNK && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DRINK_WINE && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_SMOKE_CIGGY && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DRINK_BEER) // Проверка на фотик и спец. анимки (Типо курит, пьет и тд)
{
if(GetPVarInt(playerid, "antiflooddm") > gettime())return true;
if(GreenZones(playerid))
{
ShowPlayerDialog(playerid, 0, 0, "Зеленая зона", "\n\nВ этом месте запрещено {48EF95}драться/стрелять.{ffffff}\n\nВы продолжите играть через {FF6347}5{ffffff} секунд!\n\n", "Закрыть", "");
PlayerDMZZ[playerid] = SetTimerEx("AntiDMZZ", 1000, true, "i", playerid);
SetPVarInt(playerid, "antiflooddm", gettime()+6); // Специально сделал, чтобы ЗЗ не срабатывало дважды
ApplyAnimation(playerid, "FAT", "IDLE_tired", 4.1, 0, 0, 0, 1, 0);
}
}
}
}
PHP:
forward AntiDMZZ(playerid);
public AntiDMZZ(playerid)
{
new string[128];
GetPlayerPointDMZZ[playerid]--;
format(string, sizeof(string), "\n\nВ этом месте запрещено {48EF95}драться/стрелять.{ffffff}\n\nВы продолжите играть через {FF6347}%d{ffffff} секунд!\n\n", GetPlayerPointDMZZ[playerid]);
ShowPlayerDialog(playerid, 0, 0, "Зеленая зона", string, "Закрыть", "");
ApplyAnimation(playerid, "FAT", "IDLE_tired", 4.1, 0, 0, 0, 1, 0);
if(GetPlayerPointDMZZ[playerid] <= 0)
{
ShowPlayerDialog(playerid, 0, 0, "Зеленая зона", "\n\nВ этом месте запрещено {48EF95}драться/стрелять.{ffffff}\n\nНажмите {FF6347}ENTER{ffffff}, чтобы продолжить играть.\n\n", "Закрыть", "");
KillTimer(PlayerDMZZ[playerid]);
GetPlayerPointDMZZ[playerid] = 6;
ApplyAnimation(playerid, "PED", "facanger", 4.1, 0, 1, 1, 1, 1);
}
return true;
}
Если Вам понравилась данная работа, или Вы взяли её себе на сервер, то поблагодарите автора нажав кнопку "Спасибо"
Последнее редактирование:
