arma2-epoch-server/MPMissions/DayZ_Epoch_24.Napf/scripts/virtualGarage/virtualGarage.sqf
2022-04-21 16:15:41 +03:00

91 lines
3.6 KiB
Plaintext
Executable File

// Developed by [GZA] David for German Zombie Apocalypse Servers (https://zombieapo.eu/)
// Rewritten by salival (https://github.com/oiad)
private ["_class","_control","_displayName","_heliPad","_isNearPlot","_itemText","_localVehicles","_plotCheck","_storedVehicles","_vgDisplCtl"];
if (isNil "vg_init") then {
player_getVehicle = compile preprocessFileLineNumbers "scripts\virtualGarage\player_getVehicle.sqf";
player_removePad = compile preprocessFileLineNumbers "scripts\virtualGarage\player_removePad.sqf";
player_storeVehicle = compile preprocessFileLineNumbers "scripts\virtualGarage\player_storeVehicle.sqf";
Player_MaintainVG = compile preprocessFileLineNumbers "scripts\virtualGarage\player_MaintainVG.sqf";
vehicleInfo = compile preprocessFileLineNumbers "scripts\virtualGarage\vehicleInfo.sqf";
vg_maintainSetText = {
disableSerialization;
waituntil {!isNull (findDisplay 2800)};
_vgDisplCtl = (findDisplay 2800) displayCtrl 2854;
if (vg_maintainCost > 0) then {
_itemText = if (Z_SingleCurrency) then {CurrencyName} else {[vg_maintainCost,true] call z_calcCurrency};
if (Z_SingleCurrency) then {
_vgDisplCtl ctrlSetText format["%1 (%2 %3)",localize "STR_CL_VG_MAINTAIN_GARAGE",vg_maintainCost,_itemText];
} else {
_vgDisplCtl ctrlSetText format["%1 (%2)",localize "STR_CL_VG_MAINTAIN_GARAGE",_itemText];
};
} else {
_vgDisplCtl ctrlSetText format["%1 (%2)",localize "STR_CL_VG_MAINTAIN_GARAGE",localize "strwffree"];
};
};
vg_init = true;
};
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
dayz_actionInProgress = true;
disableSerialization;
vg_hasRun = false;
createDialog "virtualGarage";
{ctrlShow [_x,false]} count [2803,2830,2850,2851,2852,2853];
_plotCheck = [player,false] call FNC_find_plots;
_isNearPlot = (_plotCheck select 1) > 0;
PVDZE_queryVehicle = if (vg_tiedToPole) then {
[player,if (_isNearPlot) then {(_plotCheck select 2) getVariable ["ownerPUID","0"]} else {dayz_playerUID}]
} else {
[player]
};
publicVariableServer "PVDZE_queryVehicle";
waitUntil {!isNil "PVDZE_queryVehicleResult"};
_storedVehicles = PVDZE_queryVehicleResult;
PVDZE_queryVehicle = nil;
PVDZE_queryVehicleResult = nil;
_localVehicles = ([player] call FNC_getPos) nearEntities [["Air","LandVehicle","Ship"],Z_VehicleDistance];
_heliPad = nearestObjects [if (_isNearPlot) then {_plotCheck select 2} else {player},vg_heliPads,if (_isNearPlot) then {DZE_maintainRange} else {Z_VehicleDistance}];
if (count _heliPad > 0 && {_isNearPlot}) then {ctrlShow[2853,true];};
_control = ((findDisplay 2800) displayCtrl 2802);
lbClear _control;
if (count _storedVehicles == 0 && {isNull DZE_myVehicle || {!(alive DZE_myVehicle)} || {!(local DZE_myVehicle)}}) exitWith {ctrlSetText[2811,localize "STR_CL_VG_NO_VEHICLES"];};
vg_vehicleList = [];
{
_displayName = getText(configFile >> "CfgVehicles" >> (_x select 1) >> "displayName");
_control lbAdd _displayName;
_control lbSetData [(lbSize _control)-1,str(_x)];
vg_vehicleList set [count vg_vehicleList,_x];
} count _storedVehicles;
{
if (!isNull DZE_myVehicle && {local DZE_myVehicle} && {alive DZE_myVehicle} && {DZE_myVehicle == _x}) then {
_class = typeOf _x;
_displayName = getText(configFile >> "CfgVehicles" >> _class >> "displayName");
_control lbAdd _displayName;
_control lbSetData [(lbSize _control)-1,_class];
_control lbSetColor [(lbSize _control)-1,[0, 1, 0, 1]];
vg_vehicleList set [count vg_vehicleList,_x];
};
} count _localVehicles;
ctrlShow[2810,false];
ctrlShow[2811,false];
ctrlSetText [2804, format ["%1 (%2 %3)",localize "STR_CL_VG_YOUR_VEHICLES",count (_storedVehicles),localize "STR_CL_VG_VEHICLES"]];