144 lines
5.5 KiB
Plaintext
144 lines
5.5 KiB
Plaintext
|
// Vehicle Service Point (Rearm) by Axe Cop
|
||
|
// Rewritten for single currency, gems, briefcase support and 1.0.7 epoch compatibility by salival - https://github.com/oiad/
|
||
|
// Requires DayZ Epoch 1.0.7 for gem support.
|
||
|
|
||
|
private ["_vehicle","_costs","_fuel","_magazineCount","_weapon","_type","_name","_weaponType","_weaponName","_turret","_magazines","_ammo","_textMissing","_pos","_message","_action","_damage","_selection","_strH","_disabled","_amount","_enoughMoney","_moneyInfo","_wealth","_success","_reason","_cmpt"];
|
||
|
|
||
|
_vehicle = _this select 0;
|
||
|
|
||
|
_ammo = "";
|
||
|
_reason = "";
|
||
|
|
||
|
_action = (_this select 3) select 0;
|
||
|
|
||
|
_type = typeOf _vehicle;
|
||
|
_disabled = false;
|
||
|
_name = getText(configFile >> "cfgVehicles" >> _type >> "displayName");
|
||
|
|
||
|
_amount = (_this select 3) select 1;
|
||
|
|
||
|
if (_action == "rearm") then {
|
||
|
_magazineCount = (_this select 3) select 2;
|
||
|
_weapon = (_this select 3) select 3;
|
||
|
|
||
|
_weaponType = _weapon select 0;
|
||
|
_weaponName = _weapon select 1;
|
||
|
_turret = _weapon select 2;
|
||
|
};
|
||
|
|
||
|
if (typeName _amount == "STRING") then {
|
||
|
if (_amount == (localize "str_temp_param_disabled")) then {
|
||
|
if (_action == "rearm") then {_reason = format[localize "STR_CL_SP_UNABLE_REARM",_weaponName]; _disabled = true};
|
||
|
if (_action == "repair") then {_reason = format[localize "STR_CL_SP_UNABLE_REPAIR",_name]; _disabled = true};
|
||
|
if (_action == "refuel") then {_reason = format[localize "STR_CL_SP_UNABLE_REFUEL",_name]; _disabled = true};
|
||
|
};
|
||
|
if (_amount == (localize "strwffree")) then {_amount = 0};
|
||
|
};
|
||
|
|
||
|
if (_disabled) exitWith {[_reason,1] call dayz_rollingMessages};
|
||
|
|
||
|
_enoughMoney = false;
|
||
|
_moneyInfo = [false, [], [], [], 0];
|
||
|
_wealth = player getVariable [(["cashMoney","globalMoney"] select Z_persistentMoney),0];
|
||
|
|
||
|
if (Z_SingleCurrency) then {
|
||
|
_enoughMoney = (_wealth >= _amount);
|
||
|
} else {
|
||
|
Z_Selling = false;
|
||
|
if (Z_AllowTakingMoneyFromVehicle) then {false call Z_checkCloseVehicle};
|
||
|
_moneyInfo = _amount call Z_canAfford;
|
||
|
_enoughMoney = _moneyInfo select 0;
|
||
|
};
|
||
|
|
||
|
_success = if (Z_SingleCurrency) then {true} else {[player,_amount,_moneyInfo,true,0] call Z_payDefault};
|
||
|
|
||
|
if (!_success && _enoughMoney) exitWith {systemChat localize "STR_EPOCH_TRADE_GEAR_AND_BAG_FULL"}; // Not enough room in gear or bag to accept change
|
||
|
|
||
|
if (_enoughMoney) then {
|
||
|
_success = if (Z_SingleCurrency) then {_amount <= _wealth} else {[player,_amount,_moneyInfo,false,0] call Z_payDefault};
|
||
|
if (_success) then {
|
||
|
if (Z_SingleCurrency) then {
|
||
|
player setVariable [(["cashMoney","globalMoney"] select Z_persistentMoney),(_wealth - _amount),true];
|
||
|
};
|
||
|
|
||
|
[player,(getPosATL player),50,"refuel"] spawn fnc_alertZombies;
|
||
|
_vehicle engineOn false;
|
||
|
if (_action == "refuel") then {
|
||
|
[format[localize "STR_CL_SP_REFUELING",_name],1] call dayz_rollingMessages;
|
||
|
|
||
|
while {vehicle player == _vehicle} do {
|
||
|
if ([0,0,0] distance (velocity _vehicle) > 1) exitWith {[format[localize "STR_CL_SP_REFUELING_STOPPED",_name],1] call dayz_rollingMessages};
|
||
|
_fuel = (fuel _vehicle) + ((_this select 3) select 3);
|
||
|
if (_fuel > 0.99) exitWith {
|
||
|
_vehicle setFuel 1;
|
||
|
[format[localize "STR_CL_SP_REFUEL_OK",_name],1] call dayz_rollingMessages;
|
||
|
};
|
||
|
_vehicle setFuel _fuel;
|
||
|
uiSleep ((_this select 3) select 2);
|
||
|
};
|
||
|
};
|
||
|
if (_action == "repair") then {
|
||
|
[_vehicle,"repair",0,false] call dayz_zombieSpeak;
|
||
|
|
||
|
_hitpoints = _vehicle call vehicle_getHitpoints;
|
||
|
_allRepaired = true;
|
||
|
{
|
||
|
if ((vehicle player != _vehicle) || {[0,0,0] distance (velocity _vehicle) > 1}) exitWith {
|
||
|
_allRepaired = false;
|
||
|
[format[localize "STR_CL_SP_REPAIRING_STOPPED",_name],1] call dayz_rollingMessages;
|
||
|
};
|
||
|
_hits = [_vehicle,_x] call object_getHit;
|
||
|
_damage = _hits select 0;
|
||
|
if (_damage > 0) then {
|
||
|
_cmpt = [];
|
||
|
{
|
||
|
if (_forEachIndex > 2) then {_cmpt set [count _cmpt,_x]};
|
||
|
} forEach toArray (_x);
|
||
|
_cmpt = toString _cmpt;
|
||
|
[format[localize "STR_CL_SP_REPAIRING",_cmpt],1] call dayz_rollingMessages;
|
||
|
_selection = getText(configFile >> "cfgVehicles" >> _type >> "HitPoints" >> _x >> "name");
|
||
|
_strH = "hit_" + (_selection);
|
||
|
_vehicle setHit[_selection,0];
|
||
|
_vehicle setVariable [_strH,0,true];
|
||
|
uiSleep ((_this select 3) select 2);
|
||
|
};
|
||
|
} forEach _hitpoints;
|
||
|
PVDZ_veh_Save = [_vehicle,"repair",true];
|
||
|
publicVariableServer "PVDZ_veh_Save";
|
||
|
|
||
|
if (_allRepaired) then {
|
||
|
_vehicle setDamage 0;
|
||
|
_vehicle setVelocity [0,0,1];
|
||
|
[format[localize "STR_CL_SP_REPAIR_OK",_name],1] call dayz_rollingMessages;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
if (_action == "rearm") then {
|
||
|
_magazines = getArray (configFile >> "CfgWeapons" >> _weaponType >> "magazines");
|
||
|
_ammo = _magazines select 0;
|
||
|
|
||
|
if (_weaponType == "CMFlareLauncher") then {
|
||
|
_vehicle removeWeaponTurret ["CMFlareLauncher",_turret];
|
||
|
for "_i" from 1 to _magazineCount do {_vehicle addMagazineTurret [_ammo,_turret];};
|
||
|
_vehicle addWeaponTurret ["CMFlareLauncher",_turret];
|
||
|
} else {
|
||
|
{_vehicle removeMagazinesTurret [_x,_turret];} forEach _magazines;
|
||
|
|
||
|
for "_i" from 1 to _magazineCount do {_vehicle addMagazineTurret [_ammo,_turret];};
|
||
|
};
|
||
|
|
||
|
[format[localize "STR_CL_SP_REARMED",_weaponName,_name],1] call dayz_rollingMessages;
|
||
|
};
|
||
|
call player_forceSave;
|
||
|
} else {
|
||
|
systemChat localize "STR_EPOCH_TRADE_DEBUG";
|
||
|
};
|
||
|
} else {
|
||
|
_itemText = if (Z_SingleCurrency) then {CurrencyName} else {[_amount,true] call z_calcCurrency};
|
||
|
if (Z_SingleCurrency) then {
|
||
|
systemChat format[localize "STR_CL_SP_FAIL_COINS",[_amount] call BIS_fnc_numberText,_itemText,_action,_name];
|
||
|
} else {
|
||
|
systemChat format[localize "STR_CL_SP_FAIL_BRIEFCASES",_itemText,_action,_name];
|
||
|
};
|
||
|
};
|