Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
NoNameUltima

Защита баз от зомби

Recommended Posts

Кто то спрашивал скрипт, на защиту от зомби.

Вот вам мой небольшой вклад -

 

 

/*
Удаление зомби в заданом секторе
*/
if (isServer) then
    {
        private ["_sectors"];
        diag_log ( "#Ultima: Загрузка секторов защищенных от зомби." );
        _sectors =
            [
                [R,X,Y],
                [R,X,Y]
            ];
        diag_log ( "#Ultima: Сектора загружены. Идет создание потоков..." );
        {
            [_x] spawn
                {
                    private ["_pos","_radius","_zombies","_sector"];
                    _sector = (_this select 0);
                    //diag_log (format["#Ultima: Создан поток сектора: %1,%2. Радиусом: %3",(_sector select 1),(_sector select 2),(_sector select 0)]);
                    _radius = (_sector select 0);
                    _pos = [(_sector select 1),(_sector select 2),0];
                    while { true } do
                        {
                            //diag_log (format["#Ultima: Отработка цикла WHILE сектора: %1,%2. Радиусом: %3",(_pos select 0),(_pos select 1),(_radius)]);
                            _zombies = _pos nearEntities ["zZombie_Base",_radius];
                                {
                                    //diag_log (format["#Ultima: Перемещение объекта из сектора: %1,%2. Радиусом: %3",(_pos select 0),(_pos select 1),(_radius)]);
                                    _x setPos[0,0,0];
                                } forEach _zombies;
                            sleep 10;//Пауза
                        };
                };
        } forEach _sectors;
        diag_log ( "#Ultima: Все потоки созданы." );
    };
 

Чтобы в лог выводилась информация на русском, сохраните данный код в кодировке UTF8 без BOM

Подключение в init.sqf

 [] execVM "Zombie_Protect_Sectors.sqf";

Добавление сектора -

 

_sectors =
            [
                [R,X,Y],
                [R,X,Y]
            ];

Вместо R - вписываем радиус поиска зомби от центра.

Центр задается двумя координатами X и Y

*После последнего сектора, запятая не нужна.

**sleep 10;//Пауза

-Пауза в работе скрипта - раз в 10 секунд, скрипт ищет зомби в указанном секторе. Можно увеличить, или уменьшить по желанию(не ставьте слишком низкое значение - это ни к чему, и увеличит нагрузку на сервер).

Share this post


Link to post
Share on other sites



Мне такая вещь больше нравится. Без внесений координат, просто убирает зомби от 30м столба.

 

while {true} do {
  sleep 10;


  // No Zeds near Plot Poles
  _playerPos = getPos player;
  _nearPole = nearestObject [_playerPos, "Plastic_Pole_EP1_DZ"];
  if (!isNull _nearPole) then {
    _pos2 = getPos _nearPole;
    _zombies2 = _pos2 nearEntities ["zZombie_Base", dayz_poleSafeArea];
    _count2 = count _zombies2;
    for "_i" from 0 to (_count2 -1) do
    {
      _zombie2 = _zombies2 select _i;
      _zombie2 setpos [-3367.739,-120.84577,-8247.0625];
    };
  };
};

 

init.sqf

 

dayz_poleSafeArea = 30; // Default = 30m, the buildable distance
[] execVM "custom\base_SafeArea.sqf";

Share this post


Link to post
Share on other sites

Тут как бэ вопрос в том, что в твоем примере скрипт убирает зм от всех столбов_)

 

А  если надо выборочно ставить?_)

 

Ну можно лопатить sql чтоб найти нужные столбы....

 

К тому же, это не только для баз применимо. Без привязки к объекту)

 

Ну и можно перенести координату высоты переброски зомби _) чтоб он разбивался) Типа подбрасывает))))

Edited by NoNameUltima (see edit history)

Share this post


Link to post
Share on other sites

Ахаха, представляю себе зомбаков возникающих из ниоткуда и прыгающих в небо :D

А по факту заголовок темы "защита БАЗ от зомби". Так что я предложил такой вариант :)

Ну и в предпоследней версии патча еще ввели такую вещицу, как режим бога при строительстве базы.

Каждому по вкусу, в общем.

Share this post


Link to post
Share on other sites

По чему "из не откуда"

 

Нене, по высоте ты не понял)

 

Ониж бегут к базе)

Просто у поднимать вверх когда добегут, метров на 10) Не перенося в другие координаты)

Share this post


Link to post
Share on other sites

Что то не получается. Как правильно задавать, координаты? У меня вот так - [200,017,102]. Ориентир под Зеленогорском район 2-х амбаров V -образной формы. Должны ли при загрузке появляться сообщения? У меня ошибок не выдает, но и сообщений тоже.

Share this post


Link to post
Share on other sites

Что то не получается. Как правильно задавать, координаты? У меня вот так - [200,017,102]. Ориентир под Зеленогорском район 2-х амбаров V -образной формы. Должны ли при загрузке появляться сообщения? У меня ошибок не выдает, но и сообщений тоже.

Коорды из редактора берутся. Сделай триггер, сохрани миссию и потом посмотри в файле координаты твоего триггера. Потом эти коорды в скрипт вставь.

Share this post


Link to post
Share on other sites

 

Что то не получается. Как правильно задавать, координаты? У меня вот так - [200,017,102]. Ориентир под Зеленогорском район 2-х амбаров V -образной формы. Должны ли при загрузке появляться сообщения? У меня ошибок не выдает, но и сообщений тоже.

Коорды из редактора берутся. Сделай триггер, сохрани миссию и потом посмотри в файле координаты твоего триггера. Потом эти коорды в скрипт вставь.

Спасибо, понял.

Share this post


Link to post
Share on other sites

А нельзя ли данный скрипт переделать так, чтобы вместо удаления зомби в данном секторе, зомби спавнились, передвигались, но не агрилились на игроков, как это сделано в примере скрипта сэйфзон?

Share this post


Link to post
Share on other sites
 

Решил через данный скрипт убрать зомби из сейф зон.  Скрипт на сейфзону использовал Safe Zone Commander

 

Координаты вот эти.

_sectors =
[
[100,11447.91,11364.536],
[100,4064.2258,11665.938],
[100,6294.6509,7773.7847]

];

 

Собственно зомби как бегали так и бегают толпами.

 

Собственно куда копать. Может быть есть другой способ избавится от зомбей. 

Edited by Golgofinyanin (see edit history)

Share this post


Link to post
Share on other sites

В сторону антихака наверное.

 

Или попробуй заменить строку

_x setPos[0,0,0];

На эту

deletevehicle _x;

 

Правда тогда наверное нужен цикл for.... не уверен.

Share this post


Link to post
Share on other sites
 

 

В сторону антихака наверное.

 

Или попробуй заменить строку

_x setPos[0,0,0];

На эту

deletevehicle _x;

 

Правда тогда наверное нужен цикл for.... не уверен.

заменил, эффект нулевой.

Share this post


Link to post
Share on other sites
 
while {true} do {
  sleep 10;
 _pos2 = [6294.6509,7773.7847,0];
    dayz_poleSafeArea = 100;
    _zombies2 = _pos2 nearEntities ["zZombie_Base", dayz_poleSafeArea];
    _count2 = count _zombies2;
    for "_i" from 0 to (_count2 -1) do
    {
      _zombie2 = _zombies2 select _i;
      _zombie2 setpos [-3367.739,-120.84577,-8247.0625];
};
    };

Заработал только такой код. хз в чем дело было, может название переменных конфликтовали...

Share this post


Link to post
Share on other sites

1. Конфликтовать ExecVM по идее не может, т.к. запущен в виртуальной среде.(Если ты конечно не добавлял сам, что либо).

2. Принципиальных отличий в твоем примере не вижу, за исключением цикла for вместо foreach

3. Зачем каждый раз выполнять в теле скрипта присвоение _pos2 ? Это можно  нужно сделать до входа в цикл while

4. Посмотрел бы логи RPT - я же для этого и оставлял diag_log

Share this post


Link to post
Share on other sites
 

 

1. Конфликтовать ExecVM по идее не может, т.к. запущен в виртуальной среде.(Если ты конечно не добавлял сам, что либо).

2. Принципиальных отличий в твоем примере не вижу, за исключением цикла for вместо foreach

3. Зачем каждый раз выполнять в теле скрипта присвоение _pos2 ? Это можно  нужно сделать до входа в цикл while

4. Посмотрел бы логи RPT - я же для этого и оставлял diag_log

3. на скорую руку скрипт  maxpayne25 переписал, не до красоты было. 

4. знал бы как посмотрел бы)

Share this post


Link to post
Share on other sites

Подскажите пожалуйста как именно брать координаты?

Я создал в редакторе тригер:

_this = createTrigger ["EmptyDetector", [12141.03, 12659.672]];
_this setTriggerArea [500, 100, 18.43935, true];
_trigger_1 = _this;
 
А в скрипте координаты так надо прописывать:

 

 _sectors =             [                 [R,X,Y],                 [R,X,Y]             ];
Что то до меня не доходит, где взять вторые координаты?
  
Edited by AndrewMacreall (see edit history)

Share this post


Link to post
Share on other sites

Какие вторые?

Там для примера 2 триггера.

Если тебе нужен 1, так и пиши только одни координаты.

 _sectors =  [[R,X,Y]];

И это не все координаты.

R - Радиус триггера.

X, Y - координаты.

Высота не нужна.

Share this post


Link to post
Share on other sites

Отличный скрипт! Все работает прекрасно! Убрал зомборей с торговых зонах!

Share this post


Link to post
Share on other sites

спасибо! помогли! 

Скрипт давным давно обновлен.

http://rnrportal.ru/forum/index.php?/topic/40-%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B7%D0%BE%D0%BC%D0%B1%D0%B8-%D0%B2-%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D1%8B%D1%85-%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82%D0%B0%D1%85/

P.S. Лучше использовать вариант из 2 поста в теме по ссылке.

Edited by NoNameUltima (see edit history)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.