Update safehandlegear

This commit is contained in:
A Man
2020-04-03 14:47:02 +02:00
parent 838e4a066a
commit ad41a9a7f4
3 changed files with 50 additions and 52 deletions

View File

@@ -0,0 +1,18 @@
private ["_color","_code"];
if (_this == "") exitWith {0};
_code = [_this,parseNumber _this] select (typeName _this == "STRING");
if (_code < 10000 || {_code > 10299}) exitWith {0};
_color = "";
_code = _code - 10000;
if (_code <= 99) then {_color = "Red";};
if (_code >= 100 && {_code <= 199}) then {_color = "Green"; _code = _code - 100;};
if (_code >= 200) then {_color = "Blue"; _code = _code - 200;};
if (_code <= 9) then {_code = format["0%1", _code];};
_code = format ["%1%2",_color,_code];
_code

View File

@@ -1,11 +1,10 @@
private ["_backpacks","_charID","_clientID","_dir","_holder","_lockCode","_lockColor","_lockedClass","_magazines","_name","_obj","_objectID","_objectUID","_ownerID","_packedClass","_player","_playerUID","_pos","_status","_statusText","_type","_unlockedClass","_vector","_weapons","_message","_suppliedCode","_fnc_lockCode"]; private ["_backpacks","_charID","_clientID","_dir","_holder","_lockCode","_lockedClass","_magazines","_name","_obj","_objectID","_objectUID","_ownerID","_packedClass","_player","_playerUID","_pos","_status","_statusText","_type","_unlockedClass","_vector","_weapons","_message","_suppliedCode"];
_player = _this select 0; _player = _this select 0;
_obj = _this select 1; _obj = _this select 1;
_status = _this select 2; _status = _this select 2;
_name = if (alive _player) then {name _player} else {"Dead Player"}; _name = ["Dead Player",name _player] select (alive _player);
_type = typeOf _obj; _type = typeOf _obj;
_pos = _obj getVariable ["OEMPos",getPosATL _obj]; _pos = _obj getVariable ["OEMPos",getPosATL _obj];
_dir = direction _obj; _dir = direction _obj;
@@ -27,14 +26,14 @@ if (isNull _player) then {diag_log "ERROR: server_handleSafeGear called with Nul
_clientID = owner _player; _clientID = owner _player;
_playerUID = getPlayerUID _player; _playerUID = getPlayerUID _player;
_statusText = switch (_status) do { _statusText = call {
case 0: {"UNLOCKED"}; // unlock safe/lockbox if (_status == 0) exitwith {"UNLOCKED"}; // unlock safe/lockbox
case 1: {"LOCKED"}; // lock safe/lockbox if (_status == 1) exitwith {"LOCKED"}; // lock safe/lockbox
case 2: {"PACKED"}; // pack safe/lockbox if (_status == 5) exitwith {"UNLOCKED"}; // unlock door
case 3: {"FAILED unlocking"}; // failed unlock safe/lockbox if (_status == 4) exitwith {"LOCKED"}; // lock door
case 4: {"LOCKED"}; // lock door if (_status == 3) exitwith {"FAILED unlocking"}; // failed unlock safe/lockbox
case 5: {"UNLOCKED"}; // unlock door if (_status == 6) exitwith {"FAILED unlocking"}; // failed unlocking door
case 6: {"FAILED unlocking"}; // failed unlocking door if (_status == 2) exitwith {"PACKED"}; // pack safe/lockbox
}; };
if (isNull _obj) exitWith { if (isNull _obj) exitWith {
@@ -45,15 +44,14 @@ if (isNull _obj) exitWith {
}; };
}; };
switch (_status) do { call {
case 0: { //Unlocking if (_status == 0) exitwith { //Unlocking
_unlockedClass = getText (configFile >> "CfgVehicles" >> _type >> "unlockedClass"); _unlockedClass = getText (configFile >> "CfgVehicles" >> _type >> "unlockedClass");
_weapons = _obj getVariable ["WeaponCargo",[]]; _weapons = _obj getVariable ["WeaponCargo",[]];
_magazines = _obj getVariable ["MagazineCargo",[]]; _magazines = _obj getVariable ["MagazineCargo",[]];
_backpacks = _obj getVariable ["BackpackCargo",[]]; _backpacks = _obj getVariable ["BackpackCargo",[]];
// Create new unlocked safe, then delete old locked safe // Create new unlocked safe, then delete old locked safe
//_holder = createVehicle [_unlockedClass,_pos,[],0,"CAN_COLLIDE"];
_holder = _unlockedClass createVehicle [0,0,0]; _holder = _unlockedClass createVehicle [0,0,0];
_holder setDir _dir; _holder setDir _dir;
_holder setVariable ["memDir",_dir,true]; _holder setVariable ["memDir",_dir,true];
@@ -65,20 +63,19 @@ switch (_status) do {
_holder setVariable ["OEMPos",_pos,true]; _holder setVariable ["OEMPos",_pos,true];
if (DZE_permanentPlot) then {_holder setVariable ["ownerPUID",_ownerID,true];}; if (DZE_permanentPlot) then {_holder setVariable ["ownerPUID",_ownerID,true];};
deleteVehicle _obj; deleteVehicle _obj;
[_weapons,_magazines,_backpacks,_holder] call fn_addCargo; [_weapons,_magazines,_backpacks,_holder] call fn_addCargo;
}; };
case 1: { //Locking if (_status == 1) exitwith { //Locking
_lockedClass = getText (configFile >> "CfgVehicles" >> _type >> "lockedClass"); _lockedClass = getText (configFile >> "CfgVehicles" >> _type >> "lockedClass");
// Save to database (also happens if a player is within 10m in server_playerSync and server_onPlayerDisconnect) // Save to database (also happens if a player is within 10m in server_playerSync and server_onPlayerDisconnect)
[_obj,"gear"] call server_updateObject; [_obj,"gear"] call server_updateObject;
_weapons = getWeaponCargo _obj; _weapons = getWeaponCargo _obj;
_magazines = getMagazineCargo _obj; _magazines = getMagazineCargo _obj;
_backpacks = getBackpackCargo _obj; _backpacks = getBackpackCargo _obj;
// Create new locked safe, then delete old unlocked safe // Create new locked safe, then delete old unlocked safe
//_holder = createVehicle [_lockedClass,_pos,[],0,"CAN_COLLIDE"];
_holder = _lockedClass createVehicle [0,0,0]; _holder = _lockedClass createVehicle [0,0,0];
_holder setDir _dir; _holder setDir _dir;
_holder setVariable ["memDir",_dir,true]; _holder setVariable ["memDir",_dir,true];
@@ -88,63 +85,45 @@ switch (_status) do {
_holder setVariable ["ObjectID",_objectID,true]; _holder setVariable ["ObjectID",_objectID,true];
_holder setVariable ["ObjectUID",_objectUID,true]; _holder setVariable ["ObjectUID",_objectUID,true];
_holder setVariable ["OEMPos",_pos,true]; _holder setVariable ["OEMPos",_pos,true];
if (DZE_permanentPlot) then {_holder setVariable ["ownerPUID",_ownerID,true];}; if (DZE_permanentPlot) then {_holder setVariable ["ownerPUID",_ownerID,true];};
deleteVehicle _obj; deleteVehicle _obj;
// Local setVariable gear onto new locked safe for easy access on next unlock // Local setVariable gear onto new locked safe for easy access on next unlock
// Do not send big arrays over network! Only server needs these // Do not send big arrays over network! Only server needs these
_holder setVariable ["WeaponCargo",_weapons,false]; _holder setVariable ["WeaponCargo",_weapons,false];
_holder setVariable ["MagazineCargo",_magazines,false]; _holder setVariable ["MagazineCargo",_magazines,false];
_holder setVariable ["BackpackCargo",_backpacks,false]; _holder setVariable ["BackpackCargo",_backpacks,false];
}; };
case 2: { //Packing if (_status == 2) exitwith { //Packing
_packedClass = getText (configFile >> "CfgVehicles" >> _type >> "packedClass"); _packedClass = getText (configFile >> "CfgVehicles" >> _type >> "packedClass");
if (_packedClass == "") exitWith {diag_log format["Server_HandleSafeGear Error: invalid object type: %1",_type];}; if (_packedClass == "") exitWith {diag_log format["Server_HandleSafeGear Error: invalid object type: %1",_type];};
_weapons = getWeaponCargo _obj; _weapons = getWeaponCargo _obj;
_magazines = getMagazineCargo _obj; _magazines = getMagazineCargo _obj;
_backpacks = getBackpackCargo _obj; _backpacks = getBackpackCargo _obj;
//_holder = createVehicle [_packedClass,_pos,[],0,"CAN_COLLIDE"];
_holder = _packedClass createVehicle [0,0,0]; _holder = _packedClass createVehicle [0,0,0];
deleteVehicle _obj; deleteVehicle _obj;
_holder setDir _dir; _holder setDir _dir;
_holder setPosATL _pos; _holder setPosATL _pos;
_holder addMagazineCargoGlobal [getText(configFile >> "CfgVehicles" >> _packedClass >> "seedItem"),1]; _holder addMagazineCargoGlobal [getText(configFile >> "CfgVehicles" >> _packedClass >> "seedItem"),1];
[_weapons,_magazines,_backpacks,_holder] call fn_addCargo; [_weapons,_magazines,_backpacks,_holder] call fn_addCargo;
// Delete safe from database // Delete safe from database
[_objectID,_objectUID] call server_deleteObjDirect; [_objectID,_objectUID,_obj] call server_deleteObjDirect;
}; };
}; };
_fnc_lockCode = {
private ["_color","_code"];
if (_this == "") exitWith {0};
_code = if (typeName _this == "STRING") then {parseNumber _this} else {_this};
if (_code < 10000 || {_code > 10299}) exitWith {0};
_color = "";
_code = _code - 10000;
if (_code <= 99) then {_color = "Red";};
if (_code >= 100 && _code <= 199) then {_color = "Green"; _code = _code - 100;};
if (_code >= 200) then {_color = "Blue"; _code = _code - 200;};
if (_code <= 9) then {_code = format["0%1", _code];};
_code = format ["%1%2",_color,_code];
_code
};
if (_status < 4) then { if (_status < 4) then {
_type = switch _type do { _type = call {
case "VaultStorage"; if (_type == "VaultStorageLocked" || {_type == "VaultStorage"}) exitwith {
case "VaultStorageLocked": {
"Safe" "Safe"
}; };
case "LockboxStorage"; if (_type == "LockboxStorage") exitwith {
case "LockboxStorageLocked": { "LockBox"
_lockCode = _charID call _fnc_lockCode; };
if (_status == 3) then {_suppliedCode = _suppliedCode call _fnc_lockCode;}; if (_type == "LockboxStorageLocked" || {_type == "LockboxStorage"}) exitwith {
_lockCode = _charID call server_fnc_lockCode;
if (_status == 3) then {_suppliedCode = _suppliedCode call server_fnc_lockCode;};
"LockBox" "LockBox"
}; };
}; };

View File

@@ -44,6 +44,7 @@ server_tradeObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compi
server_deaths = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerDeaths.sqf"; server_deaths = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerDeaths.sqf";
server_maintainArea = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_maintainArea.sqf"; server_maintainArea = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_maintainArea.sqf";
server_checkIfTowed = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_checkIfTowed.sqf"; server_checkIfTowed = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_checkIfTowed.sqf";
server_fnc_lockCode = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_fnc_lockCode.sqf";
server_handleSafeGear = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_handleSafeGear.sqf"; server_handleSafeGear = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_handleSafeGear.sqf";
spawn_ammosupply = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\spawn_ammosupply.sqf"; spawn_ammosupply = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\spawn_ammosupply.sqf";
spawn_mineveins = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\spawn_mineveins.sqf"; spawn_mineveins = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\spawn_mineveins.sqf";