Jump to content


Photo

Удаление лишних ботов AI


Best Answer dos622 , 27 October 2016 - 16:24

(player distance position _list > 400)

ты пытаешься измерить растояние до массива, а это невозможно.

 

deletevehicle _list;

тоже самое, не получится, т.к. переменная _list у тебя это массив.

 

как вариант:

{
if (player distance position _x > 400) then
		{
			deletevehicle _x;
			sleep 10;
		};
} forEach _list;

Go to the full post


  • Please log in to reply
6 replies to this topic

#1 OFFLINE   Targon

Targon

    Ефрейтор

  • Пользователи
  • 36 posts

Posted 27 October 2016 - 14:55

Доброго времени суток.

Возник вопрос.

Хочу для оптимизации удалят лишних ботов, которые находятся на радиусе больше 400 метров от игрока.

 

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

Прошу помочи. Спасибо.

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

while {true} do {
	waitUntil {editzombies};
	sleep 0.1;
	_list = (position player) nearEntities [["RyanZombieCrawler1", "RyanZombieCrawler2", "RyanZombieCrawler3", "RyanZombieCrawler4", "RyanZombieCrawler5", "RyanZombieCrawler6", "RyanZombieCrawler7", "RyanZombieCrawler8", "RyanZombieCrawler9", "RyanZombieCrawler10", "RyanZombieCrawler11", "RyanZombieCrawler12", "RyanZombieCrawler13", "RyanZombieCrawler20", "RyanZombieCrawler21", "RyanZombieCrawler22", "RyanZombieCrawler23", "RyanZombieCrawler24", "RyanZombieCrawler25","RyanZombieCrawler26","RyanZombieCrawler27","RyanZombieCrawler28","RyanZombieCrawler29","RyanZombieCrawler30","RyanZombieCrawler31","RyanZombieCrawler32","RyanZombie20medium","RyanZombie21medium","RyanZombie22medium","RyanZombie23medium","RyanZombie25medium","RyanZombie26medium","RyanZombie27medium","RyanZombie28medium","RyanZombie29medium","RyanZombie30medium","RyanZombie31medium","RyanZombieC_man_1medium","RyanZombieC_man_polo_1_Fmedium","RyanZombieC_man_polo_2_Fmedium","RyanZombieC_man_polo_4_Fmedium","RyanZombieB_Soldier_02_f_1_1medium","RyanZombieB_Soldier_05_fmedium","RyanZombieB_Soldier_02_fmedium","RyanZombie32medium","RyanZombieC_scientist_Fmedium","RyanZombieC_man_hunter_1_Fmedium","RyanZombieC_man_pilot_Fmedium","RyanZombieC_journalist_Fmedium","RyanZombieC_Orestesmedium","RyanZombieB_Soldier_02_f_1medium","RyanZombieC_man_polo_5_Fmedium","RyanZombieC_man_polo_6_Fmedium","RyanZombieC_man_p_fugitive_Fmedium","RyanZombieC_man_w_worker_Fmedium","RyanZombieSpider1","RyanZombieSpider2","RyanZombieSpider3","RyanZombieSpider4","RyanZombieSpider5","RyanZombieSpider6","RyanZombieSpider7","RyanZombieSpider8","RyanZombieSpider9","RyanZombieSpider10","RyanZombieSpider11","RyanZombieSpider12","RyanZombieSpider13","RyanZombieSpider20","RyanZombieSpider21","RyanZombieSpider22","RyanZombieSpider23","RyanZombieSpider25","RyanZombieSpider26","RyanZombieSpider27","RyanZombieSpider28","RyanZombieSpider29","RyanZombieSpider30","RyanZombieSpider31","RyanZombieSpider32","RyanZombieC_man_1walker","RyanZombieC_man_polo_1_Fwalker","RyanZombieC_man_polo_2_Fwalker","RyanZombieC_man_polo_4_Fwalker","RyanZombieC_man_polo_5_Fwalker","RyanZombieC_man_polo_6_Fwalker","RyanZombieC_man_p_fugitive_Fwalker","RyanZombieC_man_w_worker_Fwalker","RyanZombieC_scientist_Fwalker","RyanZombieC_man_hunter_1_Fwalker","RyanZombieC_man_pilot_Fwalker","RyanZombieC_journalist_Fwalker","RyanZombieC_Oresteswalker","RyanZombie20walker","RyanZombie21walker","RyanZombie23walker","RyanZombie25walker","RyanZombie26walker","RyanZombie27walker","RyanZombie28walker","RyanZombie29walker","RyanZombie30walker","RyanZombie31walker","RyanZombie32walker","RyanZombieB_Soldier_02_fwalker","RyanZombieB_Soldier_02_f_1walker","RyanZombieB_Soldier_02_f_1_1walker","RyanZombie25slow","RyanZombie26slow","RyanZombie27slow","RyanZombie28slow","RyanZombie29slow","RyanZombie30slow","RyanZombie31slow","RyanZombie20slow","RyanZombie21slow","RyanZombie22slow","RyanZombie23slow","RyanZombieC_man_1slow","RyanZombieC_man_hunter_1_Fslow","RyanZombieC_man_pilot_Fslow","RyanZombieC_journalist_Fslow","RyanZombieC_Orestesslow","RyanZombieB_Soldier_05_fslow","RyanZombieB_Soldier_02_fslow","RyanZombie32slow","RyanZombieB_Soldier_02_f_1_1slow","RyanZombieB_Soldier_02_f_1slow","RyanZombieC_man_polo_5_Fslow","RyanZombieC_man_polo_6_Fslow", "RyanZombieC_man_p_fugitive_Fslow","RyanZombieC_man_w_worker_Fslow","RyanZombie25","RyanZombie26","RyanZombie27","RyanZombie28","RyanZombie29","RyanZombie30","RyanZombie31","RyanZombie20","RyanZombie21","RyanZombie22","RyanZombie23","RyanZombieC_man_1","RyanZombieC_man_polo_1_F","RyanZombieC_man_polo_2_F","RyanZombieC_man_polo_4_F","RyanZombieB_Soldier_02_f_1_1","RyanZombieB_Soldier_05_f","RyanZombieB_Soldier_02_f","RyanZombie32","RyanZombieC_scientist_F","RyanZombieC_man_hunter_1_F","RyanZombieC_man_pilot_F","RyanZombieC_journalist_F","RyanZombieC_Orestes","RyanZombieB_Soldier_02_f_1","RyanZombieC_man_polo_5_F","RyanZombieC_man_p_fugitive_F","RyanZombieC_man_w_worker_F","RyanZombieboss1","RyanZombieboss2","RyanZombieboss3","RyanZombieboss4","RyanZombieboss5","RyanZombieboss6","RyanZombieboss7","RyanZombieboss8","RyanZombieboss9","RyanZombieboss10","RyanZombieboss11","RyanZombieboss12","RyanZombieboss13","RyanZombieboss14","RyanZombieboss15","RyanZombieboss16","RyanZombieboss17","RyanZombieboss18","RyanZombieboss19","RyanZombieboss20","RyanZombieboss21","RyanZombieboss22","RyanZombieboss23","RyanZombieboss24","RyanZombieboss25","RyanZombieboss26","RyanZombieboss27","RyanZombieboss28","RyanZombieboss29","RyanZombieboss30","RyanZombieboss31","RyanZombieboss32"], 1000];
	if (player distance position _list > 400) then
		{
			deletevehicle _list;
			sleep 10;
		};
	sleep 10;
};

  • 0

#2 OFFLINE   dos622

dos622

    Ст. Прапорщик

  • Пользователи
  • 702 posts

Posted 27 October 2016 - 16:24   Best Answer

(player distance position _list > 400)

ты пытаешься измерить растояние до массива, а это невозможно.

 

deletevehicle _list;

тоже самое, не получится, т.к. переменная _list у тебя это массив.

 

как вариант:

{
if (player distance position _x > 400) then
		{
			deletevehicle _x;
			sleep 10;
		};
} forEach _list;


  • 0

#3 OFFLINE   Targon

Targon

    Ефрейтор

  • Пользователи
  • 36 posts

Posted 27 October 2016 - 16:52

 

(player distance position _list > 400)

ты пытаешься измерить растояние до массива, а это невозможно.

 

deletevehicle _list;

тоже самое, не получится, т.к. переменная _list у тебя это массив.

 

как вариант:

{
if (player distance position _x > 400) then
		{
			deletevehicle _x;
			sleep 10;
		};
} forEach _list;

Спасибо!


  • 0

#4 OFFLINE   susamin

susamin

    Сержант

  • Пользователи
  • 245 posts

Posted 27 October 2016 - 17:46

Есть модуль. Который обрабатывает ии на установленном игроком расстоянии. Авиацию можно исключить.
  • 0

#5 OFFLINE   dos622

dos622

    Ст. Прапорщик

  • Пользователи
  • 702 posts

Posted 27 October 2016 - 20:03

Есть модуль. Который обрабатывает ии на установленном игроком расстоянии. Авиацию можно исключить.

 

да ему зомбей с карты убрать:)


  • 1

#6 OFFLINE   Ignatlg

Ignatlg

    Рядовой

  • Пользователи
  • 2 posts

Posted 12 November 2021 - 10:29

Как добавить в скрипт Created by SteelRat модуль на удаление заспавленных групп, если расстояние от игрока больше определенного значения ?

 

PTm_fnc_deleteGroup = {
                       
    if ((_x distance player) > 2000) then {deleteGroup _group};
   

};

 

Attached Files


  • 0

#7 OFFLINE   Ignatlg

Ignatlg

    Рядовой

  • Пользователи
  • 2 posts

Posted 14 November 2021 - 16:03

Нашел вот такое решение. Скрипт удаляет заспавленных модулем ATR_fnc_RespawnNPC юнитов при достижении максимального количества групп и на определенном расстоянии от игрока :

 

while {true} do {

if (count allUnits > GROUP_MAX) then {

    {
    if (_x isKindOf "Man") then {
        _zombie = _x;
        if (({(_zombie distance _x) < 70 AND isPlayer _x} count switchableUnits) == 0) then {
            deleteVehicle _zombie;
        };
    };
    } foreach allUnits;
    sleep 5;

} else {
   
    for "_i" from 1 to GROUP_MAX do {
    [] spawn ATR_fnc_RespawnNPC;
    sleep 5;
    };
   
};
};

Edited by Ignatlg, 14 November 2021 - 16:07.

  • 0




Яндекс.Метрика