Mega Alex001

Как сделать чтобы на сейфзонах небыло зомби

Вопрос

10 ответов на этот вопрос

 

zombiefree.sqf

 

if (isNil "zombiefree") then {
    zombiefree = false;
};

while {zombiefree} do {
            _entity_array = (getPos player) nearEntities ["CAManBase",110];
            {
                if (_x isKindof "zZombie_Base") then {
                    deletevehicle _x;
                };
            } forEach _entity_array;
            sleep 3;
        };

 

 

Вместо этого, правильней и проще:

private ["_Zombies"];
while {true} do
    {
        _Zombies = (getPos player) nearEntities ["zZombie_Base", 50];
            {
                _x setPos [0,0,0];
            } forEach _Zombies;
        sleep 3;
    };
 

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


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


Поддерживаю тоже интересует этот вопрос

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


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

Они всё равно не бьют и не агрятся, зачем от них избавляться?

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


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

в mission.sqm находим class sensors там триггеры на торговые города, и туда добавлеям
 

expCond="(player distance zonestary) < 100;";
expActiv="zombiefree = true; zombiefreezone = [] execVM ""scripts\zombiefree.sqf""; canbuild = false; inTraderCity = ""Stary"";";
expDesactiv="terminate zombiefreezone; TitleText[""Вы покинули торговую зону Старый"", ""PLAIN DOWN"", 3]; canbuild = true; inTraderCity = ""Any"";";

 


zombiefree.sqf
 

if (isNil "zombiefree") then {
    zombiefree = false;
};

while {zombiefree} do {
            _entity_array = (getPos player) nearEntities ["CAManBase",110];
            {
                if (_x isKindof "zZombie_Base") then {
                    deletevehicle _x;
                };
            } forEach _entity_array;
            sleep 3;
        };

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


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

 

 

zombiefree.sqf

 

if (isNil "zombiefree") then {
    zombiefree = false;
};

while {zombiefree} do {
            _entity_array = (getPos player) nearEntities ["CAManBase",110];
            {
                if (_x isKindof "zZombie_Base") then {
                    deletevehicle _x;
                };
            } forEach _entity_array;
            sleep 3;
        };

 

 

Вместо этого, правильней и проще:

private ["_Zombies"];
while {true} do
    {
        _Zombies = (getPos player) nearEntities ["zZombie_Base", 50];
            {
                _x setPos [0,0,0];
            } forEach _Zombies;
        sleep 3;
    };
 

ну а смысл крутить цикл когда никого там нету? А так они гуляют по трейду когда никого нет, пришел игрок всех удалило.

Тут уже дело каждого, кому то нравится что бы их выкидывало кому то что б убивало, мне например что б удаляло

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


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

Ты что за бред написал? Сам понял?

в чем бред то?

я думал ты имеешь ввиду вешать его не на триггер и типо тогда будет все время скрипт работать даже когда никого нет.

 _x setPos [0,0,0]; - будет тпшить зомбаков зомбаков в море, понятно если там никого нет то они просто задеспавнятся, а прикинь я такой катаюсь на катере и тут на тебе зомбаки прилетели откуда не возьмись

 

Имхо лучше удалять их

И вешать следует на триггер, зашел - активировал скрипт который раз в 3 сек удаляет зомби в радиусе пока ты там находишься, вышел - отключил скрипт

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


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

1. Я написал что на что поменять. - Это и есть скрипт триггера.

2. В твоем скрипте, лишнее:

 

if (isNil "zombiefree") then {
zombiefree = false;
}; 
 

 

Это не нужно.

 

3. Лишняя и ненужная проверка:

_entity_array = (getPos player) nearEntities ["CAManBase",110];
{
if (_x isKindof "zZombie_Base") then {
 

Ищется все равно zZombie_Base

 

4. deletevehicle _x;

Удаляет объект, со стороны клиента, включи себе отображение ошибок скриптов, и увидишь, что любой такой скрипт со стороны клиента вызывает ошибку. Хоть и работает.

 

5. Переноси не в 0,0,0 раз ты там на катере катаешся, а в 15000,15000,15000 (думаю там точно никого нет?)

 

6. Метраж 110 метров - это от границы тред зоны ЗМ будут еще на 110метров удалятся. Хорошая зона безопасности....))) стоит чел на границе трейда и получаем 330 метров в диаметре) Уж пусть будет 20-30-40 куда ни шло...

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


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

а разве спаун не на стороне клиента происходит?
ну можно и тпшить
в идеале еще передавать в скрипт thistrigger а условие активации делать (vehicle player) in thislist
а в скрипте получать _triger = _this select 0; 
и искать заедов не от координат игрока а от центра триггера (getPosATL _trigger)
и по хорошему бы еще делать проверку if (count _zombies > 0)
 

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


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

Ниче в скрипт не надо передавать и проверок так же лишних не нужено.

 

В sqm у тебя правильно написаны условия активации и деактивации. Их более чем достаточно, для работы скрипта.

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас