stuzer05
61de8f76f3
Closes #15 Reviewed-on: #16 Co-authored-by: stuzer05 <stuzer05@stuzer.link> Co-committed-by: stuzer05 <stuzer05@stuzer.link>
78 lines
3.3 KiB
Plaintext
Executable File
78 lines
3.3 KiB
Plaintext
Executable File
/*
|
|
changeCode - Safe, Lockbox and Door code changing script by salival (https://github.com/oiad)
|
|
*/
|
|
|
|
private ["_isZSC","_backpacks","_charID","_characterID","_clientID","_coins","_dir","_holder","_inventory","_key","_lockedClass","_magazines","_message","_name","_object","_objectID","_objectUID","_ownerID","_ownerPUID","_player","_playerUID","_pos","_typeOf","_vector","_weapons","_worldSpace","_clientKey","_exitReason"];
|
|
|
|
if (count _this < 4) exitWith {diag_log "server_changeCode error: Improper parameter format";};
|
|
|
|
_player = _this select 0;
|
|
_object = _this select 1;
|
|
_characterID = _this select 2;
|
|
_clientKey = _this select 3;
|
|
|
|
_typeOf = typeOf _object;
|
|
if !(_typeOf in DZE_unlockedStorage) exitWith {diag_log "server_changeCode called with invalid storage object!"};
|
|
|
|
_lockedClass = getText (configFile >> "CfgVehicles" >> _typeOf >> "lockedClass");
|
|
_pos = getPosATL _object;
|
|
_dir = getDir _object;
|
|
_vector = [vectorDir _object, vectorUp _object];
|
|
_charID = _object getVariable ["CharacterID","0"];
|
|
_objectID = _object getVariable ["ObjectID","0"];
|
|
_objectUID = _object getVariable ["ObjectUID","0"];
|
|
_ownerID = _object getVariable ["ownerPUID","0"];
|
|
_name = ["unknown player",name _player] select (alive _player);
|
|
_clientID = owner _player;
|
|
_playerUID = getPlayerUID _player;
|
|
|
|
if (isNull _player) then {diag_log "ERROR: server_changeCode called with Null player object";};
|
|
if (isNull _object) exitWith {diag_log format["ERROR: server_changeCode called with Null object by %1 (%2).",_name,_playerUID];};
|
|
|
|
_exitReason = [_this,"changeCode",_pos,_clientKey,_PlayerUID,_player] call server_verifySender;
|
|
if (_exitReason != "") exitWith {diag_log _exitReason};
|
|
|
|
_weapons = getWeaponCargo _object;
|
|
_magazines = getMagazineCargo _object;
|
|
_backpacks = getBackpackCargo _object;
|
|
_isZSC = false;
|
|
if (Z_singleCurrency) then {
|
|
_isZSC = _typeOf in DZE_MoneyStorageClasses && _lockedClass in DZE_MoneyStorageClasses;
|
|
};
|
|
if (_isZSC) then {_coins = _object getVariable ["cashMoney",0];};
|
|
|
|
[_objectID,_objectUID,_object] call server_deleteObjDirect;
|
|
|
|
_holder = _lockedClass createVehicle [0,0,0];
|
|
//_holder setDir _dir; // setdir is incompatible with setVectorDirAndUp and should not be used together on the same object https://community.bistudio.com/wiki/setVectorDirAndUp
|
|
_holder setVariable ["memDir",_dir,true];
|
|
_holder setVectorDirAndUp _vector;
|
|
_holder setPosATL _pos;
|
|
_holder setVariable ["CharacterID",_characterID,true];
|
|
|
|
_ownerPUID = if (_charID == "0000" || _charID == "10000") then {_playerUID} else {_ownerID};
|
|
_worldSpace = [_dir,_pos,_ownerPUID,_vector];
|
|
_holder setVariable ["ownerPUID",_ownerPUID,true];
|
|
|
|
|
|
if (_isZSC) then {_holder setVariable ["cashMoney",_coins,true];};
|
|
|
|
_objectUID = _worldSpace call dayz_objectUID2;
|
|
_holder setVariable ["ObjectUID",_objectUID];
|
|
|
|
deleteVehicle _object;
|
|
|
|
_inventory = [_weapons,_magazines,_backpacks];
|
|
_holder setVariable ["WeaponCargo",_weapons,false];
|
|
_holder setVariable ["MagazineCargo",_magazines,false];
|
|
_holder setVariable ["BackpackCargo",_backpacks,false];
|
|
|
|
[_characterID,_holder,_worldSpace,_inventory,_player,_clientKey] call server_publishObj;
|
|
|
|
if (_isZSC) then {
|
|
_key = format["CHILD:309:%1:",_objectUID] + str _inventory + ":" + str _coins + ":";
|
|
_key call server_hiveWrite;
|
|
};
|
|
|
|
_message = format ["CHANGE CODE: %1 (%2) changed the code for %3 to %4 @%5 %6",_name,_playerUID,_lockedClass,_characterID,mapGridPosition _player,_pos];
|
|
diag_log _message; |