A3 ajoneuvojen huoltoskripti

Post Reply
TugeX
Posts: 293
Joined: 26 Jul 2013, 18:49

A3 ajoneuvojen huoltoskripti

Post 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.
Last edited by TugeX on 04 Sep 2015, 20:44, edited 2 times in total.
User avatar
Saunatyyny
Posts: 532
Joined: 07 Jan 2015, 18:47
Location: PKS

Re: A3 ajoneuvojen huoltoskripti

Post by Saunatyyny »

Pystyisikö tämän päivitää ACE yhteensopivaksi?
"Johnson ajoi autollaan päin rekkaa ja kuoli heti. Miksi Johnson kuoli? "
-Warren Bennis
Bummeri
Posts: 3009
Joined: 09 Nov 2013, 14:35

Re: A3 ajoneuvojen huoltoskripti

Post by Bummeri »

Ei ole vielä olemassa acelle vastaava APIa tuolle interactionille.
"Dataa on saatava." -DataNummi
"Toteutus on pilalla, pelkkää paskaa tilalla." -MyösNummi
TugeX
Posts: 293
Joined: 26 Jul 2013, 18:49

Re: A3 ajoneuvojen huoltoskripti

Post by TugeX »

Päivitetty ACE:lle.
User avatar
Nummi
Posts: 1589
Joined: 26 Nov 2013, 01:52
Location: Stadi

Re: A3 ajoneuvojen huoltoskripti

Post 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
Furean wrote:Pitää muistaa, että ruotsalaisethan pani melkein koko Suomen kansaa.
ruoste wrote:Dataa on saatava.
User avatar
Nummi
Posts: 1589
Joined: 26 Nov 2013, 01:52
Location: Stadi

Re: A3 ajoneuvojen huoltoskripti

Post by Nummi »

Kannattaa varmaan Tuge pitää näitä silmällä jatkoa ajatellen, josko olisi jotain hyötyä.

Vehicle rearming (#2164)

Vehicle refueling (#2141)
Furean wrote:Pitää muistaa, että ruotsalaisethan pani melkein koko Suomen kansaa.
ruoste wrote:Dataa on saatava.
Post Reply