mirror of
https://github.com/EpochModTeam/Epoch.git
synced 2024-08-30 18:22:13 +00:00
Merge pull request #399 from EpochModTeam/experimental
Server build 0.3.4.049
This commit is contained in:
commit
37cb5d8727
@ -13,6 +13,7 @@ Client:
|
|||||||
[Fixed] Being unable to remove a solar generator.
|
[Fixed] Being unable to remove a solar generator.
|
||||||
[Fixed] Angry Pumpkin mask was incorrectly visible in first person.
|
[Fixed] Angry Pumpkin mask was incorrectly visible in first person.
|
||||||
[Fixed] Issue with Headless clients being treated as players. @dayzai/Face
|
[Fixed] Issue with Headless clients being treated as players. @dayzai/Face
|
||||||
|
[Changed] Fixed boats spawning on land and added 3d waypoint to purchased vehicle location.
|
||||||
[Changed] Removed debug hint text for 3d rotation of objects as it was not needed.
|
[Changed] Removed debug hint text for 3d rotation of objects as it was not needed.
|
||||||
[Changed] Re-enable Move button, this system will stay and be refined in the next few patches.
|
[Changed] Re-enable Move button, this system will stay and be refined in the next few patches.
|
||||||
**Improved Dog AI Dog Brain by Axeman**
|
**Improved Dog AI Dog Brain by Axeman**
|
||||||
|
Binary file not shown.
@ -17,37 +17,77 @@ _plyrUID = getPlayerUID _plyr;
|
|||||||
if (!isNull ropeAttachedTo _vehicle) exitWith{};
|
if (!isNull ropeAttachedTo _vehicle) exitWith{};
|
||||||
|
|
||||||
_oemType = typeOf _vehicle;
|
_oemType = typeOf _vehicle;
|
||||||
|
|
||||||
_config = (configFile >> "CfgVehicles" >> _oemType >> "staticClass");
|
_config = (configFile >> "CfgVehicles" >> _oemType >> "staticClass");
|
||||||
if (isText _config) then {
|
if (isText _config) then {
|
||||||
|
|
||||||
_staticClass = getText(_config);
|
_staticClass = getText(_config);
|
||||||
|
|
||||||
if (_staticClass isKindOf "Buildable_Storage") then {
|
if (_staticClass isKindOf "Buildable_Storage" || _staticClass isKindOf "Constructions_lockedstatic_F") then{
|
||||||
|
|
||||||
if !(EPOCH_StorageSlots isEqualTo[]) then {
|
if !(EPOCH_StorageSlots isEqualTo[]) then {
|
||||||
|
|
||||||
_config = (configFile >> "CfgVehicles" >> _oemType >> "staticClass");
|
_slot = EPOCH_StorageSlots deleteAt 0;
|
||||||
if (isText(_config)) then {
|
EPOCH_StorageSlotsCount = count EPOCH_StorageSlots;
|
||||||
|
publicVariable "EPOCH_StorageSlotsCount";
|
||||||
|
|
||||||
_slot = EPOCH_StorageSlots select 0;
|
// Secure storage
|
||||||
EPOCH_StorageSlots = EPOCH_StorageSlots - [_slot];
|
if (getNumber(configFile >> "CfgVehicles" >> _staticClass >> "isSecureStorage") == 1) then{
|
||||||
|
|
||||||
|
// remove sim
|
||||||
_vehiclePos = getposATL _vehicle;
|
_vehiclePos = getposATL _vehicle;
|
||||||
_worldspace = [(_vehiclePos call EPOCH_precisionPos), vectordir _vehicle, vectorup _vehicle];
|
_vectorDirAndUp = [vectordir _vehicle, vectorup _vehicle];
|
||||||
deleteVehicle _vehicle;
|
deleteVehicle _vehicle;
|
||||||
|
|
||||||
_storageObj = createVehicle[_staticClass, _vehiclePos, [], 0, "CAN_COLLIDE"];
|
// create static dummy placeholder for secure storage
|
||||||
_storageObj setVariable["STORAGE_SLOT", _slot, true];
|
_newVehicle = createVehicle[_staticClass, _vehiclePos, [], 0, "CAN_COLLIDE"];
|
||||||
|
_newVehicle setVectorDirAndUp _vectorDirAndUp;
|
||||||
|
_newVehicle setposATL _vehiclePos;
|
||||||
|
|
||||||
_storageObj setVectorDirAndUp[_worldspace select 1, _worldspace select 2];
|
if (!isNull _newVehicle) then{
|
||||||
|
|
||||||
|
_buildClass = getText(configFile >> "CfgVehicles" >> _staticClass >> "weaponHolderProxy");
|
||||||
|
if (_buildClass != "") then{
|
||||||
|
|
||||||
|
// TODO need some sanity checks here
|
||||||
|
_storageObj = createVehicle[_buildClass, _vehiclePos, [], 0.0, "CAN_COLLIDE"];
|
||||||
|
_storageObj setVectorDirAndUp _vectorDirAndUp;
|
||||||
|
_storageObj setposATL _vehiclePos;
|
||||||
|
|
||||||
|
// set reference to storage object on dummy object
|
||||||
|
_newVehicle setVariable["EPOCH_secStorParent", _storageObj];
|
||||||
|
|
||||||
|
_storageObj setVariable["EPOCH_Locked", false, true];
|
||||||
|
_storageObj setVariable["STORAGE_OWNERS", [_plyrUID]];
|
||||||
|
_storageObj setVariable["STORAGE_SLOT", _slot, true];
|
||||||
|
|
||||||
|
_storageObj call EPOCH_server_save_storage;
|
||||||
|
_storageObj call EPOCH_server_storageInit;
|
||||||
|
|
||||||
|
diag_log format["STORAGE: %1 created storage %2 at %3", _plyrUID, _buildClass, _pos];
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// insecure storage
|
||||||
|
} else {
|
||||||
|
|
||||||
|
_vehiclePos = getposATL _vehicle;
|
||||||
|
_vectorDirAndUp = [vectordir _vehicle, vectorup _vehicle];
|
||||||
|
deleteVehicle _vehicle;
|
||||||
|
|
||||||
|
_storageObj = createVehicle[_staticClass, _vehiclePos, [], 0, "CAN_COLLIDE"];
|
||||||
|
_storageObj setVectorDirAndUp _vectorDirAndUp;
|
||||||
_storageObj setposATL _vehiclePos;
|
_storageObj setposATL _vehiclePos;
|
||||||
|
|
||||||
|
_storageObj setVariable["STORAGE_OWNERS", [_plyrUID]];
|
||||||
|
_storageObj setVariable["STORAGE_SLOT", _slot, true];
|
||||||
|
|
||||||
_storageObj call EPOCH_server_save_storage;
|
_storageObj call EPOCH_server_save_storage;
|
||||||
_storageObj call EPOCH_server_storageInit;
|
_storageObj call EPOCH_server_storageInit;
|
||||||
|
|
||||||
diag_log format["STORAGE: %1 created storage %2 at %3", getPlayerUID _plyr, _staticClass, _vehiclePos];
|
diag_log format["STORAGE: %1 created storage %2 at %3", _plyrUID, _staticClass, _vehiclePos];
|
||||||
|
|
||||||
EPOCH_StorageSlotsCount = count EPOCH_StorageSlots;
|
|
||||||
publicVariable "EPOCH_StorageSlotsCount";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -57,81 +97,22 @@ if (isText _config) then {
|
|||||||
if (_vehicle isKindOf "ThingX" || _vehicle isKindOf "Const_Ghost_EPOCH" || _vehicle isKindOf "PlotPole_EPOCH") then {
|
if (_vehicle isKindOf "ThingX" || _vehicle isKindOf "Const_Ghost_EPOCH" || _vehicle isKindOf "PlotPole_EPOCH") then {
|
||||||
|
|
||||||
_objSlot = _vehicle getVariable["BUILD_SLOT", -1];
|
_objSlot = _vehicle getVariable["BUILD_SLOT", -1];
|
||||||
if (_objSlot == -1) then {
|
if (_objSlot == -1) then{
|
||||||
_findnextslot = EPOCH_BuildingSlots find 0;
|
_findnextslot = EPOCH_BuildingSlots find 0;
|
||||||
if (_findnextslot != -1) then {
|
if (_findnextslot != -1) then{
|
||||||
_objSlot = _findnextslot;
|
_objSlot = _findnextslot;
|
||||||
EPOCH_BuildingSlots set [_findnextslot,1];
|
EPOCH_BuildingSlots set[_findnextslot, 1];
|
||||||
_vehicle setVariable["BUILD_SLOT", _findnextslot, true];
|
_vehicle setVariable["BUILD_SLOT", _findnextslot, true];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
// get texture slot index
|
|
||||||
_textureSlot = _vehicle getVariable["TEXTURE_SLOT", 0];
|
|
||||||
|
|
||||||
EPOCH_BuildingSlotCount = { _x == 0 } count EPOCH_BuildingSlots;
|
EPOCH_BuildingSlotCount = { _x == 0 } count EPOCH_BuildingSlots;
|
||||||
publicVariable "EPOCH_BuildingSlotCount";
|
publicVariable "EPOCH_BuildingSlotCount";
|
||||||
|
|
||||||
|
|
||||||
if (_objSlot != -1) then {
|
if (_objSlot != -1) then {
|
||||||
_vehiclePos = getposATL _vehicle;
|
|
||||||
// _worldspace = [(_vehiclePos call EPOCH_precisionPos), vectordir _vehicle, vectorup _vehicle];
|
|
||||||
// _objHiveKey = format["%1:%2", (call EPOCH_fn_InstanceID), _objSlot];
|
|
||||||
|
|
||||||
_newVehicle = [_vehicle, false] call EPOCH_server_simulSwap;
|
_newVehicle = [_vehicle, false] call EPOCH_server_simulSwap;
|
||||||
|
|
||||||
_newVehicle setVariable["BUILD_OWNER", _plyrUID, true];
|
_newVehicle setVariable["BUILD_OWNER", _plyrUID, true];
|
||||||
|
_newVehicle call EPOCH_fnc_saveBuilding;
|
||||||
_slot = "-1";
|
|
||||||
if (getNumber(configFile >> "CfgVehicles" >> _staticClass >> "isSecureStorage") == 1) then{
|
|
||||||
|
|
||||||
//diag_log format["building lockbox %1", _oemType];
|
|
||||||
|
|
||||||
_buildClass = getText(configFile >> "CfgVehicles" >> _staticClass >> "weaponHolderProxy");
|
|
||||||
|
|
||||||
if (!isNull _newVehicle) then {
|
|
||||||
|
|
||||||
//diag_log format["building lockbox !isnull %1", _newVehicle];
|
|
||||||
|
|
||||||
if !(EPOCH_StorageSlots isEqualTo []) then {
|
|
||||||
|
|
||||||
//diag_log format["building lockbox findslot %1", _newVehicle];
|
|
||||||
if (_buildClass != "") then{
|
|
||||||
|
|
||||||
// TODO need some sanity checks here
|
|
||||||
_storageObj = createVehicle[_buildClass, _vehiclePos, [], 0.0, "CAN_COLLIDE"];
|
|
||||||
|
|
||||||
_slot = EPOCH_StorageSlots select 0;
|
|
||||||
EPOCH_StorageSlots = EPOCH_StorageSlots - [_slot];
|
|
||||||
|
|
||||||
//diag_log format["building lockbox found slot %1", _slot];
|
|
||||||
|
|
||||||
// missionNamespace setVariable[format["EPOCH_STORAGE_%1", _slot], _storageObj];
|
|
||||||
|
|
||||||
_newVehicle setVariable["EPOCH_secureStorage", _slot];
|
|
||||||
|
|
||||||
_newVehicle setVariable["EPOCH_Locked", false, true];
|
|
||||||
|
|
||||||
_storageObj setVariable["STORAGE_OWNERS", [_plyrUID]];
|
|
||||||
|
|
||||||
// _storageObj setVariable["EPOCH_secStorParent", _objSlot];
|
|
||||||
_storageObj setVariable["STORAGE_SLOT", _slot, true];
|
|
||||||
|
|
||||||
_storageObj call EPOCH_server_save_storage;
|
|
||||||
|
|
||||||
_storageObj call EPOCH_server_storageInit;
|
|
||||||
|
|
||||||
diag_log format["STORAGE: %1 created storage %2 at %3", _plyrUID, _buildClass, _pos];
|
|
||||||
|
|
||||||
EPOCH_StorageSlotsCount = count EPOCH_StorageSlots;
|
|
||||||
publicVariable "EPOCH_StorageSlotsCount";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
_newVehicle call EPOCH_fnc_saveBuilding;
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user