Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • Не хотите БАН?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок
  • Загляните на рынок

    Там вы можете продать или купить
    Всё что касается игровых серверов
NoNameUltima

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

Рекомендованные сообщения

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

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

 

 

/*
Удаление зомби в заданом секторе
*/
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 секунд, скрипт ищет зомби в указанном секторе. Можно увеличить, или уменьшить по желанию(не ставьте слишком низкое значение - это ни к чему, и увеличит нагрузку на сервер).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Забронировать это рекламное место


Мне такая вещь больше нравится. Без внесений координат, просто убирает зомби от 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";

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Еще интересная вещица: http://patriots.freeforums.org/fred-s-anti-zombie-frequency-emitter-aka-zombie-shield-t68.html

Добавить некоторого реализма, если так можно выразиться. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

 

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

 

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

 

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

Изменено пользователем NoNameUltima (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
 

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

 

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

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

];

 

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

 

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

Изменено пользователем Golgofinyanin (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

_x setPos[0,0,0];

На эту

deletevehicle _x;

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
 

 

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

 

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

_x setPos[0,0,0];

На эту

deletevehicle _x;

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
 
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];
};
    };

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
 

 

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

 

 _sectors =             [                 [R,X,Y],                 [R,X,Y]             ];
Что то до меня не доходит, где взять вторые координаты?
  
Изменено пользователем AndrewMacreall (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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 поста в теме по ссылке.

Изменено пользователем NoNameUltima (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

×
×
  • Создать...