mirror of
https://github.com/EpochModTeam/Epoch.git
synced 2024-08-30 18:22:13 +00:00
Merge pull request #859 from Ignatz-HeMan/experimental
Fixes and Cleanups for VehRepair + ServicePoint
This commit is contained in:
commit
a3a2de0841
@ -116,7 +116,7 @@ if (_object isKindOf "Constructions_static_F") then {
|
|||||||
_canUpgradePartCount = _canUpgradePartCount + _req;
|
_canUpgradePartCount = _canUpgradePartCount + _req;
|
||||||
} forEach _upgradeParts;
|
} forEach _upgradeParts;
|
||||||
|
|
||||||
_doors = ["WoodLargeWallDoorL_EPOCH","WoodWall4_EPOCH"];
|
_doors = ["WoodLargeWallDoorL_EPOCH","WoodWall4_EPOCH","CinderWallDoorwHatch_EPOCH"];
|
||||||
_gates = ["CinderWallGarage_EPOCH"];
|
_gates = ["CinderWallGarage_EPOCH"];
|
||||||
if (_canUpgrade) then {
|
if (_canUpgrade) then {
|
||||||
_upgradeto = _upgrade select 0;
|
_upgradeto = _upgrade select 0;
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
//[[[cog import generate_private_arrays ]]]
|
//[[[cog import generate_private_arrays ]]]
|
||||||
private ["_allHitPointsDamage","_allRepaired","_line","_partName","_pos","_repaired","_vehName","_vehtype"];
|
private ["_PreventRepairs","_allHitPointsDamage","_allRepaired","_line","_partName","_pos","_repaired","_vehName","_vehtype"];
|
||||||
//[[[end]]]
|
//[[[end]]]
|
||||||
params [['_vehicle',objnull],['_args',[]] ];
|
params [['_vehicle',objnull],['_args',[]] ];
|
||||||
_args params [['_costs',0],['_updateInterval',1.2]];
|
_args params [['_costs',0],['_updateInterval',1.2]];
|
||||||
@ -36,22 +36,31 @@ _vehicle engineOn false;
|
|||||||
_repaired = [];
|
_repaired = [];
|
||||||
_allRepaired = true;
|
_allRepaired = true;
|
||||||
_allHitPointsDamage = getAllHitPointsDamage _vehicle;
|
_allHitPointsDamage = getAllHitPointsDamage _vehicle;
|
||||||
|
_PreventRepairs = ["CfgServicePoint", "PreventRepairs", []] call EPOCH_fnc_returnConfigEntryV2;
|
||||||
{
|
{
|
||||||
if ((vehicle player != _vehicle) || (!local _vehicle) || speed _vehicle < -2 || speed _vehicle > 2) exitWith {
|
if ((vehicle player != _vehicle) || (!local _vehicle) || speed _vehicle < -2 || speed _vehicle > 2) exitWith {
|
||||||
_allRepaired = false;
|
_allRepaired = false;
|
||||||
_line = format ['Repairing of %1 stopped', _vehName];
|
_line = format ['Repairing of %1 stopped', _vehName];
|
||||||
[_line,5] call Epoch_message;
|
[_line,5] call Epoch_message;
|
||||||
};
|
};
|
||||||
if (!(_x in _repaired) && !(_x isequalto "") && (_allHitPointsDamage select 2 select _foreachindex) > 0) then {
|
_HitPointName = _x;
|
||||||
|
if (!(_HitPointName in _repaired) && !(_HitPointName isequalto "") && (_allHitPointsDamage select 2 select _foreachindex) > 0) then {
|
||||||
_partName = toarray _x;
|
_partName = toarray _x;
|
||||||
_partName set [0,20];
|
_partName set [0,20];
|
||||||
_partName set [1,45];
|
_partName set [1,45];
|
||||||
_partName set [2,20];
|
_partName set [2,20];
|
||||||
_partName = toString _partName;
|
_partName = toString _partName;
|
||||||
_vehicle setHitPointDamage [_x,0];
|
if (({_HitPointName == (_x select 0) && (_vehicle getHitPointDamage _HitPointName) >= (_x select 1)} count _PreventRepairs) > 0) then {
|
||||||
|
_line = format ['Can not Repair full damaged %1', _partName];
|
||||||
|
[_line,5] call Epoch_message;
|
||||||
|
_allRepaired = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
_vehicle setHitPointDamage [_HitPointName,0];
|
||||||
_line = format ['Repairing%1 ...', _partName];
|
_line = format ['Repairing%1 ...', _partName];
|
||||||
[_line,5] call Epoch_message;
|
[_line,5] call Epoch_message;
|
||||||
_repaired pushback _x;
|
};
|
||||||
|
_repaired pushback _HitPointName;
|
||||||
uisleep _updateInterval;
|
uisleep _updateInterval;
|
||||||
};
|
};
|
||||||
} foreach (_allHitPointsDamage select 0);
|
} foreach (_allHitPointsDamage select 0);
|
||||||
@ -64,4 +73,8 @@ if (_allRepaired) then {
|
|||||||
_vehicle setposatl _pos;
|
_vehicle setposatl _pos;
|
||||||
_line = format ['%1 full Repaired', _vehName];
|
_line = format ['%1 full Repaired', _vehName];
|
||||||
[_line,5] call Epoch_message;
|
[_line,5] call Epoch_message;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
_line = format ['%1 not full Repaired', _vehName];
|
||||||
|
[_line,5] call Epoch_message;
|
||||||
};
|
};
|
||||||
|
@ -12,10 +12,10 @@
|
|||||||
Github:
|
Github:
|
||||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/vehicles/EPOCH_client_VehicleMaintananceCheck.sqf
|
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/vehicles/EPOCH_client_VehicleMaintananceCheck.sqf
|
||||||
*/
|
*/
|
||||||
private ["_veh","_config","_VehicleRepairs","_repairs","_removes","_replaces","_wheels","_wheelcounter","_torepair","_HitPointName","_Hit","_wheel","_repairarrays"];
|
private ["_veh","_VehicleRepairs","_EnableRemoveParts","_repairs","_removes","_replaces","_wheels","_wheelcounter","_torepair","_HitPointName","_Hit","_wheel","_repairarrays"];
|
||||||
_veh = _this;
|
_veh = _this;
|
||||||
_config = 'CfgEpochClient' call EPOCH_returnConfig;
|
_VehicleRepairs = ["CfgEpochClient", "VehicleRepairs", []] call EPOCH_fnc_returnConfigEntryV2;
|
||||||
_VehicleRepairs = getArray (_config >> "VehicleRepairs");
|
_EnableRemoveParts = ["CfgEpochClient", "EnableRemoveParts", true] call EPOCH_fnc_returnConfigEntryV2;
|
||||||
_repairs = [];
|
_repairs = [];
|
||||||
_removes = [];
|
_removes = [];
|
||||||
_replaces = [];
|
_replaces = [];
|
||||||
@ -42,7 +42,7 @@ _torepair = (getAllHitPointsDamage _veh) select 0;
|
|||||||
if (_Hit >= _limit1) exitwith {
|
if (_Hit >= _limit1) exitwith {
|
||||||
_repairs pushback _searchedhit;
|
_repairs pushback _searchedhit;
|
||||||
};
|
};
|
||||||
if !((_veh getvariable ["vehicle_slot","-1"]) isequalto "-1") then {
|
if (!((_veh getvariable ["vehicle_slot","-1"]) isequalto "-1") && _EnableRemoveParts) then {
|
||||||
if (_searchedhit in ["HitLFWheel","HitLF2Wheel","HitLMWheel","HitLBWheel","HitRFWheel","HitRF2Wheel","HitRMWheel","HitRBWheel","HitEngine"]) then {
|
if (_searchedhit in ["HitLFWheel","HitLF2Wheel","HitLMWheel","HitLBWheel","HitRFWheel","HitRF2Wheel","HitRMWheel","HitRBWheel","HitEngine"]) then {
|
||||||
_removes pushback _searchedhit;
|
_removes pushback _searchedhit;
|
||||||
};
|
};
|
||||||
|
@ -19,13 +19,9 @@ params ["_vehicle","_value"];
|
|||||||
if (local _vehicle) then {
|
if (local _vehicle) then {
|
||||||
{
|
{
|
||||||
if ((_x select 0) isequaltype 0) then {
|
if ((_x select 0) isequaltype 0) then {
|
||||||
// _currentDMG = _vehicle getHitIndex (_x select 0);
|
|
||||||
// _vehicle setHitIndex [_x select 0, (_currentDMG - 0.5) max 0];
|
|
||||||
_vehicle setHitIndex [_x select 0, _x select 1];
|
_vehicle setHitIndex [_x select 0, _x select 1];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// _currentDMG = _vehicle getHitPointDamage (_x select 0);
|
|
||||||
// _vehicle setHitPointDamage [_x select 0, (_currentDMG - 0.5) max 0];
|
|
||||||
_vehicle setHitPointDamage [_x select 0, _x select 1];
|
_vehicle setHitPointDamage [_x select 0, _x select 1];
|
||||||
};
|
};
|
||||||
} foreach _value;
|
} foreach _value;
|
||||||
|
@ -289,7 +289,7 @@ class CfgBaseBuilding
|
|||||||
class CinderWallHalf_Ghost_EPOCH : CinderWallHalf_SIM_EPOCH {};
|
class CinderWallHalf_Ghost_EPOCH : CinderWallHalf_SIM_EPOCH {};
|
||||||
class CinderWall_EPOCH : Default
|
class CinderWall_EPOCH : Default
|
||||||
{
|
{
|
||||||
upgradeBuilding[] = {{"CinderWallGarage_EPOCH",{{"ItemCorrugatedLg",1},{"CircuitParts",1}}}};
|
upgradeBuilding[] = {{"CinderWallGarage_EPOCH",{{"ItemCorrugatedLg",1},{"CircuitParts",1}}},{"CinderWallDoorwHatch_EPOCH",{{"ItemCorrugatedLg",1},{"CircuitParts",1}}}};
|
||||||
removeParts[] = {{"CinderBlocks",4},{"ItemRock",2}};
|
removeParts[] = {{"CinderBlocks",4},{"ItemRock",2}};
|
||||||
simulClass = "CinderWall_SIM_EPOCH";
|
simulClass = "CinderWall_SIM_EPOCH";
|
||||||
staticClass = "CinderWall_EPOCH";
|
staticClass = "CinderWall_EPOCH";
|
||||||
@ -305,6 +305,14 @@ class CfgBaseBuilding
|
|||||||
upgradeBuilding[] = {};
|
upgradeBuilding[] = {};
|
||||||
removeParts[] = {};
|
removeParts[] = {};
|
||||||
};
|
};
|
||||||
|
class CinderWallDoorwHatch_EPOCH : Default
|
||||||
|
{
|
||||||
|
removeParts[] = {{"CinderBlocks",4},{"ItemCorrugatedLg",1},{"CircuitParts",1}};
|
||||||
|
staticClass = "CinderWallDoorwHatch_EPOCH";
|
||||||
|
snapType = "snapPointsPara";
|
||||||
|
snapPointsPara[] = {"N","E","W"};
|
||||||
|
allowedSnapPoints[] = {"N","S","E","W"};
|
||||||
|
};
|
||||||
class WoodLargeWall_EPOCH : Default
|
class WoodLargeWall_EPOCH : Default
|
||||||
{
|
{
|
||||||
upgradeBuilding[] = {{"WoodWall1_EPOCH",{{"ItemPlywoodPack",1}}},{"WoodLargeWallCor_EPOCH",{{"ItemCorrugated",1}}}};
|
upgradeBuilding[] = {{"WoodWall1_EPOCH",{{"ItemPlywoodPack",1}}},{"WoodLargeWallCor_EPOCH",{{"ItemCorrugated",1}}}};
|
||||||
|
@ -160,6 +160,7 @@ class CfgEpochClient
|
|||||||
|
|
||||||
// Advanced Vehicle Repair
|
// Advanced Vehicle Repair
|
||||||
UseAdvancedVehicleRepair = "true"; // Switch On / Off Advanced Vehicle Repair (Does not effect SuppressedCraftingItems !)
|
UseAdvancedVehicleRepair = "true"; // Switch On / Off Advanced Vehicle Repair (Does not effect SuppressedCraftingItems !)
|
||||||
|
EnableRemoveParts = "true"; // Enable removing Tires / Engines from Vehicles
|
||||||
DisallowSellOnDamage = "false"; // Prevent from selling Vehicles with one or more fully damaged wheel or engine
|
DisallowSellOnDamage = "false"; // Prevent from selling Vehicles with one or more fully damaged wheel or engine
|
||||||
SuppressedCraftingItems[] = {"VehicleRepairLg"}; // These Items can not be crafted (but can be used in recipe) - for usage of "Advanced Vehicle Repair"
|
SuppressedCraftingItems[] = {"VehicleRepairLg"}; // These Items can not be crafted (but can be used in recipe) - for usage of "Advanced Vehicle Repair"
|
||||||
VehicleRepairs[] = { // {Hitpoint, dmg to repair, dmg to replace, mat to repair, mat to replace}
|
VehicleRepairs[] = { // {Hitpoint, dmg to repair, dmg to replace, mat to repair, mat to replace}
|
||||||
|
@ -58,6 +58,17 @@ class CfgServicePoint {
|
|||||||
// "Land_fs_feed_F",
|
// "Land_fs_feed_F",
|
||||||
// "Land_fs_roof_F"
|
// "Land_fs_roof_F"
|
||||||
};
|
};
|
||||||
|
PreventRepairs[] = { // These Hitpints will not be repaired, if damage >= value (Prevent from Duping Tires / Engines)
|
||||||
|
{"HitLFWheel",1}, // {"HitPoint",value}
|
||||||
|
{"HitLF2Wheel",1},
|
||||||
|
{"HitLMWheel",1},
|
||||||
|
{"HitLBWheel",1},
|
||||||
|
{"HitRFWheel",1},
|
||||||
|
{"HitRF2Wheel",1},
|
||||||
|
{"HitRMWheel",1},
|
||||||
|
{"HitRBWheel",1},
|
||||||
|
{"HitEngine",1}
|
||||||
|
};
|
||||||
ServicePointDist = 40;
|
ServicePointDist = 40;
|
||||||
refuel_updateInterval = 1;
|
refuel_updateInterval = 1;
|
||||||
refuel_amount = 0.1;
|
refuel_amount = 0.1;
|
||||||
|
@ -367,14 +367,13 @@ class CfgCrafting
|
|||||||
};
|
};
|
||||||
class VehicleRepair : Part
|
class VehicleRepair : Part
|
||||||
{
|
{
|
||||||
usedIn[] = {"VehicleRepairLg","EngineParts","SpareTire"};
|
usedIn[] = {"VehicleRepairLg","EngineParts","SpareTire","KitVehicleUpgradeI_200_EPOCH"};
|
||||||
previewPosition[] = {0.787659,1,0.30098};
|
previewPosition[] = {0.787659,1,0.30098};
|
||||||
previewScale = 0.45;
|
previewScale = 0.45;
|
||||||
previewVector = 1.5;
|
previewVector = 1.5;
|
||||||
};
|
};
|
||||||
class VehicleRepairLg : Item
|
class VehicleRepairLg : Item
|
||||||
{
|
{
|
||||||
usedIn[] = {"KitVehicleUpgradeI_200_EPOCH"};
|
|
||||||
recipe[] = {"VehicleRepair","ItemCorrugated"};
|
recipe[] = {"VehicleRepair","ItemCorrugated"};
|
||||||
previewPosition[] = {0.798742,1,0.317871};
|
previewPosition[] = {0.798742,1,0.317871};
|
||||||
previewScale = 0.25;
|
previewScale = 0.25;
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
Github:
|
Github:
|
||||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_repairVehicle.sqf
|
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_repairVehicle.sqf
|
||||||
*/
|
*/
|
||||||
|
private ["_god"];
|
||||||
params ["_vehicle","_value","_player",["_token","",[""]]];
|
params ["_vehicle","_value","_player",["_token","",[""]]];
|
||||||
if (isNull _vehicle) exitWith{};
|
if (isNull _vehicle) exitWith{};
|
||||||
if !([_player, _token] call EPOCH_server_getPToken) exitWith{};
|
if !([_player, _token] call EPOCH_server_getPToken) exitWith{};
|
||||||
@ -22,6 +23,10 @@ if ((_value select 0) isEqualTo "ALL") then {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (local _vehicle) then {
|
if (local _vehicle) then {
|
||||||
|
_god = !(isDamageAllowed _vehicle);
|
||||||
|
if (_god) then {
|
||||||
|
_vehicle allowdamage true;
|
||||||
|
};
|
||||||
{
|
{
|
||||||
if ((_x select 0) isequaltype 0) then {
|
if ((_x select 0) isequaltype 0) then {
|
||||||
_vehicle setHitIndex _x;
|
_vehicle setHitIndex _x;
|
||||||
@ -30,6 +35,9 @@ else {
|
|||||||
_vehicle setHitPointDamage _x;
|
_vehicle setHitPointDamage _x;
|
||||||
};
|
};
|
||||||
} foreach _value;
|
} foreach _value;
|
||||||
|
if (_god) then {
|
||||||
|
_vehicle allowdamage false;
|
||||||
|
};
|
||||||
} else {
|
} else {
|
||||||
[_vehicle, _value] remoteExec ['EPOCH_client_repairVehicle',_vehicle];
|
[_vehicle, _value] remoteExec ['EPOCH_client_repairVehicle',_vehicle];
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user