Page 1 of 1

A3 ajoneuvojen huoltoskripti

Posted: 23 May 2015, 01:45
by TugeX
Skripti lisää valitun objektin (ACE) interaction valikkoon kohdan "Vehicle service" ja suorittaa ammusten täydennyksen, korjauksen, sekä polttoaineen täydennyksen mikäli seuraavat ehdot täyttyvät:

1. Suorittavan pelaajan ympärillä on maa-ajoneuvoja korkeintaan 20m etäisyydellä tai ilma-ajoneuvoja korkeintaan 100m etäisyydellä
2. Jokin em. ajoneuvoista on lokaali pelaajalle, eli pelaaja on ollut näissä viimeisin ajaja tai pilotti
3. Ajoneuvossa ei ole sisällä muuta miehistöä
4. Ajoneuvo ei ole parhaillaan huollossa

Huollon alkamisesta, kestosta, ajoneuvojen nimistä ja huollon päättymisestä näytetään viesti pelaajalle. Ajoneuvo(t) ovat lukossa huollon aikana ja avautuvat kun määritetty aika on kulunut. Etäisyyksiä ja kestoa on tällä hetkellä mahdollista muuttaa itse skriptissä. Skriptin alussa voidaan myös määrittää lista ajoneuvoista, joiden huolto kestää normaalista poikkeavan ajan. Vakio aika on 5 minuuttia ja erikoistapauksille 15 minuuttia.

Lisää editorissa haluamasi objektin (esim. Warfare VehicleServicePoint, voi olla myös ajoneuvo) init kenttään seuraava skripti:

Code: Select all

if (local player) then {_act1 = ["ace_MainActions", "Vehicle Service", "", {execVM "vehicleService.sqf"}, {true}, {}, [], [0,0,0], 7] call ace_interact_menu_fnc_createAction; [this, 0, [], _act1] call ace_interact_menu_fnc_addActionToObject;};
Lisää vehicleService.sqf tehtäväkansioon.

Code: Select all

//if (local player) then {_act1 = ["ace_MainActions", "Vehicle Service", "", {execVM "vehicleService.sqf"}, {true}, {}, [], [0,0,0], 7] call ace_interact_menu_fnc_createAction; [this, 0, [], _act1] call ace_interact_menu_fnc_addActionToObject;};

//defines
_defaultTime = 5; //default service time in minutes
_specialTime = 15; //service time for specially defined vehicles
_specialClasses = [];//add vehicle classnames to this array ["class1","class2",...]

//script
_nearLandVehs = player nearEntities ["LandVehicle", 20];
_nearAirVehs = player nearEntities ["Air", 100];
_allNearVehs = _nearLandVehs + _nearAirVehs;

hint "NOTE: Vehicle must be empty and the latest driver/pilot has to start the service!\n(LAND < 20m, AIR < 100m)";

_startServiceVehs = [];
_inServiceDefault = [];
_inServiceSpecial = [];

{
if(local _x) then {
	if(isNil {_x getVariable "_notInService"}) then {
		_x setVariable ["_notInService","true",false];
	};

	_noCrew = true;
	_driver = driver _x;
	_gunner = gunner _x;
	_commander = commander _x;

	if!(isNull _driver) then{
		_noCrew = false;
	};
	if!(isNull _gunner) then {
		_noCrew = false;
	};
	if!(isNull _commander) then {
		_noCrew = false;
	};
	
	if(_x getVariable "_notInService" == "true") then {
		_time = 0;
		_x setVariable ["_notInService","false",false];
		_vehClass = typeOf _x;
		_dspName = getText (configFile >> "CfgVehicles" >> _vehClass >> "Displayname");

		_x lock true;
		_x setFuel 1;
		_x setDamage 0;
		_x setVehicleAmmoDef 1;

		if(_vehClass in _specialClasses) then {
			_time = _specialTime;
			_startServiceVehs pushBack [_dspName,_time];
			_inServiceSpecial pushBack [_dspName, _x];
		} else {
			_time = _defaultTime;
			_startServiceVehs pushBack [_dspName,_time];
			_inServiceDefault pushBack [_dspName, _x];
		};
	};
};
} forEach _allNearVehs;

if(count _startServiceVehs > 0) then {

	{
		[_x select 0, _x select 1] spawn {
			if(count (_this select 0) > 0) then {
				private["_strEndService"];
				_strEndService = "";

				[[[_this select 1, _this select 0], {uiSleep ((_this select 0)*60); {(_x select 1) lock false;}forEach (_this select 1);}],"BIS_fnc_spawn",false] call BIS_fnc_MP;

				uiSleep ((_this select 1)*60);

				for [{_i=0}, {_i < count (_this select 0)}, {_i=_i+1}] do {
					_strEndService = _strEndService + format ["\n(%1)",(((_this select 0) select _i) select 0)];
					(((_this select 0) select _i) select 1) setVariable ["_notInService","true",false];
				};
				titleText [format["SERVICE COMPLETE!\n%1", _strEndService], "PLAIN", 2];
			};
		};
	} forEach [[_inServiceDefault, _defaultTime], [_inServiceSpecial, _specialTime]];


	_strStartService = "";

	for [{_i=0}, {_i < count _startServiceVehs}, {_i=_i+1}] do {
		_strStartService = _strStartService + format ["\n%1   (%2 MINUTES)",((_startServiceVehs select _i) select 0), ((_startServiceVehs select _i) select 1)];
	};

	titleText [format["SERVICING\n%1", _strStartService], "PLAIN", 2];
};
Testailua kaivataan ja palautetta, bugeja sekä kehitysideoita otetaan vastaan.

Re: A3 ajoneuvojen huoltoskripti

Posted: 17 Jun 2015, 10:18
by Saunatyyny
Pystyisikö tämän päivitää ACE yhteensopivaksi?

Re: A3 ajoneuvojen huoltoskripti

Posted: 17 Jun 2015, 12:25
by Bummeri
Ei ole vielä olemassa acelle vastaava APIa tuolle interactionille.

Re: A3 ajoneuvojen huoltoskripti

Posted: 17 Jun 2015, 12:33
by Tuntematon
Itse laitoin yhteen tehtävään mikä työn alla niin kokeeksi tämän http://www.armaholic.com/page.php?id=19735

Re: A3 ajoneuvojen huoltoskripti

Posted: 04 Sep 2015, 20:35
by TugeX
Päivitetty ACE:lle.

Re: A3 ajoneuvojen huoltoskripti

Posted: 09 Sep 2015, 22:11
by Nummi
Löytyy MISC78 ZEUS VDV-tehtävästäni. Bugireportteja löytää tulevaisuudessa mahdollisesti sen tehtävän awats-sivulta.

https://armafinland.fi/awats/index.php?page=MO&mid=175

Re: A3 ajoneuvojen huoltoskripti

Posted: 05 Dec 2015, 12:04
by Nummi
Kannattaa varmaan Tuge pitää näitä silmällä jatkoa ajatellen, josko olisi jotain hyötyä.

Vehicle rearming (#2164)

Vehicle refueling (#2141)