Перейти к содержимому


Фотография

Скрипт на авто реарм всех ботов на карте


Лучший Ответ Ibragim , 30 December 2021 - 15:42

private fn_ammoRefill = {
	uiSleep 600;

	{
		private _primaryWeapon = primaryWeapon _x;
		private _handgunWeapon = handgunWeapon _x;
		private _secondaryWeapon = secondaryWeapon _x;

		if ( _primaryWeapon != "" ) then { [_x, _primaryWeapon, 8] call BIS_fnc_addWeapon };
		if ( _handgunWeapon != "" ) then { [_x, _handgunWeapon, 3] call BIS_fnc_addWeapon };
		if ( _secondaryWeapon != "" ) then { [_x, _secondaryWeapon, 2] call BIS_fnc_addWeapon };
	} forEach (allUnits - allPlayers);

	[] spawn fn_ammoRefill;
};

[] spawn fn_ammoRefill;

Этот скрипт добавит новое оружие в рюкзак, не удалив старое. И добавит еще один пистолет и еще в добавок 3 лишних магазина к нему. Плюс все может кончится быстрее, чем за 10 минут и юнит все равно заявит о нехватке патронов.

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

{
	_x addEventHandler 
		[
			"FiredMan", 
			{
				params ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_vehicle"];
				
				if (_unit ammo _weapon == 0) then 
					{
						_unit addMagazine [_magazine, 9999];
					};
			}
		];		
} forEach (allUnits - allPlayers);
Перейти к сообщению


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 OFFLINE   ArMoc

ArMoc

    Рядовой

  • Пользователи
  • 3 сообщений

Отправлено 29 December 2021 - 11:46

Помогите пожалуйста со скриптом, который будет раз 10-20 минут добавлять амуницию всем ботам чтобы они не переставали сражаться когда у них кончаются патроны.

 

Я нашел этот скрип на английском форуме Армы но у меня не получилось его активировать через триггер.

f_server_Refill_Ammo = {
    // refill all AI ammo (keeps engagements going)
    0 = [] spawn {
        {
            if !(isPlayer _x) then {
                if ((handgunWeapon _x) != "") then {
                    _mag = (getArray (configFile >> "CfgWeapons" >> (handgunWeapon _x) >> "magazines")) select 0;
                    _x addMagazines [_mag,3];
                };
                if ((primaryWeapon _x) != "") then {
                    _mag = (getArray (configFile >> "CfgWeapons" >> (primaryWeapon _x) >> "magazines")) select 0;
                    _x addMagazines [_mag,8];
                };
                if ((secondaryWeapon _x) != "") then {
                    _mag = (getArray (configFile >> "CfgWeapons" >> (secondaryWeapon _x) >> "magazines")) select 0;
                    _x addMagazines [_mag,2];
                };
            };
            sleep 0.5;
        } forEach allUnits;
        (true);
    };
    (true);
};

Простите за глупость, я очень плохо разбираюсь в скриптах. Надеюсь на вашу помощь, спасибо !

 

 


  • 0

#2 OFFLINE   Denispetrov123

Denispetrov123

    Ефрейтор

  • Пользователи
  • 82 сообщений
  • Откуда:Москва

Отправлено 30 December 2021 - 12:00

fn_ammoRefill = {
	uiSleep 600;

	{
		private _primaryWeapon = primaryWeapon _x;
		private _handgunWeapon = handgunWeapon _x;
		private _secondaryWeapon = secondaryWeapon _x;

		if ( _primaryWeapon != "" ) then { [_x, _primaryWeapon, 8] call BIS_fnc_addWeapon };
		if ( _handgunWeapon != "" ) then { [_x, _handgunWeapon, 3] call BIS_fnc_addWeapon };
		if ( _secondaryWeapon != "" ) then { [_x, _secondaryWeapon, 2] call BIS_fnc_addWeapon };
	} forEach (allUnits - allPlayers);

	[] spawn fn_ammoRefill;
};

[] spawn fn_ammoRefill;

Сообщение отредактировал Denispetrov123: 30 December 2021 - 15:32

  • 0

#3 OFFLINE   Ibragim

Ibragim

    Сержант

  • Пользователи
  • 161 сообщений

Отправлено 30 December 2021 - 15:42   Лучший Ответ

private fn_ammoRefill = {
	uiSleep 600;

	{
		private _primaryWeapon = primaryWeapon _x;
		private _handgunWeapon = handgunWeapon _x;
		private _secondaryWeapon = secondaryWeapon _x;

		if ( _primaryWeapon != "" ) then { [_x, _primaryWeapon, 8] call BIS_fnc_addWeapon };
		if ( _handgunWeapon != "" ) then { [_x, _handgunWeapon, 3] call BIS_fnc_addWeapon };
		if ( _secondaryWeapon != "" ) then { [_x, _secondaryWeapon, 2] call BIS_fnc_addWeapon };
	} forEach (allUnits - allPlayers);

	[] spawn fn_ammoRefill;
};

[] spawn fn_ammoRefill;

Этот скрипт добавит новое оружие в рюкзак, не удалив старое. И добавит еще один пистолет и еще в добавок 3 лишних магазина к нему. Плюс все может кончится быстрее, чем за 10 минут и юнит все равно заявит о нехватке патронов.

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

{
	_x addEventHandler 
		[
			"FiredMan", 
			{
				params ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_vehicle"];
				
				if (_unit ammo _weapon == 0) then 
					{
						_unit addMagazine [_magazine, 9999];
					};
			}
		];		
} forEach (allUnits - allPlayers);

  • 1

#4 OFFLINE   ArMoc

ArMoc

    Рядовой

  • Пользователи
  • 3 сообщений

Отправлено 04 January 2022 - 19:24

Спасибо за ответы. Всех с наступившим новым годом !

 

 

 

 

private fn_ammoRefill = {
	uiSleep 600;

	{
		private _primaryWeapon = primaryWeapon _x;
		private _handgunWeapon = handgunWeapon _x;
		private _secondaryWeapon = secondaryWeapon _x;

		if ( _primaryWeapon != "" ) then { [_x, _primaryWeapon, 8] call BIS_fnc_addWeapon };
		if ( _handgunWeapon != "" ) then { [_x, _handgunWeapon, 3] call BIS_fnc_addWeapon };
		if ( _secondaryWeapon != "" ) then { [_x, _secondaryWeapon, 2] call BIS_fnc_addWeapon };
	} forEach (allUnits - allPlayers);

	[] spawn fn_ammoRefill;
};

[] spawn fn_ammoRefill;

Этот скрипт добавит новое оружие в рюкзак, не удалив старое. И добавит еще один пистолет и еще в добавок 3 лишних магазина к нему. Плюс все может кончится быстрее, чем за 10 минут и юнит все равно заявит о нехватке патронов.

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

{
	_x addEventHandler 
		[
			"FiredMan", 
			{
				params ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_vehicle"];
				
				if (_unit ammo _weapon == 0) then 
					{
						_unit addMagazine [_magazine, 9999];
					};
			}
		];		
} forEach (allUnits - allPlayers);

Спасибо, работает идеально !


Извините за беспокойство, не могли бы вы мне еще помочь с простым скриптом который будет постоянно добавлять для всех ботов в технике топливо и амуницию каждые 15-20 минут, но который будет игнорировать технику в которой были игроки, даже если там есть боты  _x setFuel 1; _x setVehicleAmmoDef 1

Еще пара вопросов - есть группа АИ, которая синхронизирована в редакторе с одним модулем, можно ли с помощью скрипта или кода в init отряда позволить этой группе зареспавниться на маркере или на месте где она была поставлена в редакторе через некоторое время после того как она была уничтожена и сохранить синхронизацию с модулями, а не заспавнить её копию.

Есть код который добавляет авиацию в виртуальный аэродром для мода Drongos Air Operations:
[1,WEST,["B_Plane_Fighter_01_F","B_Plane_Fighter_01_F","B_Plane_CAS_01_dynamicLoadout_F"]]call dao_fnc_AddToVAM;
Подскажите пожалуйста как должен выглядеть скрипт, который будет который будет выполнять это код каждые 15-20 минут.

Спасибо вам большое за ответы ! И простите за такое количество глупых вопросов.


 


Сообщение отредактировал ArMoc: 04 January 2022 - 19:35

  • 0

#5 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1780 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 09 January 2022 - 13:53

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

while { true } do {
    sleep (15 * 60);

    {
        _crew = (crew _x) select { alive _x };

        if (((_crew findIf { !(isPlayer _x) }) >= 0) and { (_crew findIf { isPlayer _x }) < 0 }) then {
            _x setFuel 1;
            _x setVehicleAmmoDef 1;
        };
    } forEach vehicles;
};

Еще пара вопросов - есть группа АИ, которая синхронизирована в редакторе с одним модулем, можно ли с помощью скрипта или кода в init отряда позволить этой группе зареспавниться на маркере или на месте где она была поставлена в редакторе через некоторое время после того как она была уничтожена и сохранить синхронизацию с модулями, а не заспавнить её копию.

Можно попробовать добавлять юниты в группу, а не создавать новую.
 

Есть код который добавляет авиацию в виртуальный аэродром для мода Drongos Air Operations: [1,WEST,["B_Plane_Fighter_01_F","B_Plane_Fighter_01_F","B_Plane_CAS_01_dynamicLoadout_F"]]call dao_fnc_AddToVAM; Подскажите пожалуйста как должен выглядеть скрипт, который будет который будет выполнять это код каждые 15-20 минут.

Аналогично приведённому выше.


  • 1

#6 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1780 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 09 January 2022 - 13:58

Легче всего просто добавить обработчик выстрела

Если юнитов довольно много, то я бы всё-таки добавлял боезапас в цикле.


  • 0




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