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

70 lines
3.1 KiB
Plaintext
Executable File

// Developed by [GZA] David for German Zombie Apocalypse Servers (https://zombieapo.eu/)
// Rewritten by salival (https://github.com/oiad)
private ["_backPack","_charID","_dir","_heliPad","_inventory","_isNearPlot","_keyID","_keyName","_location","_plotCheck","_sign","_vehicle"];
closeDialog 0;
_vehicle = (call compile format["%1",lbData[2802,(lbCurSel 2802)]]);
if (vg_removeKey && {_vehicle select 3 != 0} && {({getNumber (configFile >> "CfgWeapons" >> _x >> "type") == 131072} count (weapons player)) == 12}) exitWith {localize "str_epoch_player_107" call dayz_rollingMessages;};
_dir = round(random 360);
_backPack = [];
_plotCheck = [player,false] call FNC_find_plots;
_isNearPlot = (_plotCheck select 1) > 0;
_heliPad = nearestObjects [if (_isNearPlot) then {_plotCheck select 2} else {player},vg_heliPads,if (_isNearPlot) then {DZE_maintainRange} else {Z_VehicleDistance}];
if ((count _heliPad == 0) && ((_vehicle select 1) isKindOf "Air")) exitWith {localize "STR_CL_VG_NEED_HELIPAD" call dayz_rollingMessages;};
if (count _heliPad > 0) then {
_location = [(_heliPad select 0)] call FNC_GetPos;
} else {
_location = [(position player),0,400,10,0,2000,0] call BIS_fnc_findSafePos;
_location set [2,0];
};
_sign = "Sign_arrow_down_large_EP1" createVehicleLocal [0,0,0];
_sign setPos _location;
if (surfaceIsWater _location && {count (_location nearEntities ["Ship",8]) > 0}) then {
deleteVehicle _sign;
localize "STR_EPOCH_TRADE_OBSTRUCTED" call dayz_rollingMessages;
} else {
[_vehicle select 1,_sign] call fn_waitForObject;
};
PVDZE_spawnVehicle = [[_dir,_location],player,_vehicle select 0];
publicVariableServer "PVDZE_spawnVehicle";
waitUntil {!isNil "PVDZE_spawnVehicleResult"};
if (PVDZE_spawnVehicleResult != "0") then {
_keyID = "";
_charID = parseNumber PVDZE_spawnVehicleResult;
if ((_charID > 0) && (_charID <= 2500)) then {_keyID = format["ItemKeyGreen%1",_charID];};
if ((_charID > 2500) && (_charID <= 5000)) then {_keyID = format["ItemKeyRed%1",_charID-2500];};
if ((_charID > 5000) && (_charID <= 7500)) then {_keyID = format["ItemKeyBlue%1",_charID-5000];};
if ((_charID > 7500) && (_charID <= 10000)) then {_keyID = format["ItemKeyYellow%1",_charID-7500];};
if ((_charID > 10000) && (_charID <= 12500)) then {_keyID = format["ItemKeyBlack%1",_charID-10000];};
_keyName = getText(configFile >> "CfgWeapons" >> _keyID >> "displayName");
if (vg_removeKey) then {
_inventory = weapons player;
dayz_myBackpack = unitBackpack player;
if (!isNull dayz_myBackpack) then {_backPack = (getWeaponCargo dayz_myBackpack) select 0;};
if (_keyID in (_inventory+_backPack)) then {
if (_keyID in _inventory) then {format[localize "STR_CL_VG_IN_INVENTORY",_keyName] call dayz_rollingMessages;};
if (_keyID in _backPack) then {format[localize "STR_CL_VG_IN_BACKPACK",_keyName] call dayz_rollingMessages;};
} else {
player addWeapon _keyID;
format[localize "STR_CL_VG_ADDED_INVENTORY",_keyName] call dayz_rollingMessages;
};
};
};
PVDZE_spawnVehicle = nil;
PVDZE_spawnVehicleResult = nil;
vg_vehicleList = nil;
localize "STR_CL_VG_VEHICLE_SPAWNED" call dayz_rollingMessages;