mirror of
https://github.com/EpochModTeam/Epoch.git
synced 2024-08-30 18:22:13 +00:00
commit
01eabacf75
Binary file not shown.
Binary file not shown.
@ -88,6 +88,7 @@ forceRestartTime = 14400; // 4 hour restarts
|
||||
// BaseBuilding
|
||||
StorageSlotsLimit = 1500; // Max storage slots allowed. Warning! Higher the number lower performance.
|
||||
BuildingSlotsLimit = 1500; // Max building slots allowed. Warning! Higher the number lower performance.
|
||||
AutoLockStorages = "false"; // Auto Lock Lockable Storages on Server Start / Restart (if true, unlocked storages will get locked after restarts)
|
||||
UseIndestructible = "false"; // Enable / Disable Indestructible BaseObjects
|
||||
IndestructibleBaseObjects[] = { // Can be Names or Classes
|
||||
"Constructions_static_F",
|
||||
@ -107,6 +108,8 @@ forceRestartTime = 14400; // 4 hour restarts
|
||||
UseDeSimulateObjects = "true"; // Disable Simulation for specifed Base Objects
|
||||
DeSimulateObjects[] = { // Base Objects to disable Simulation. Can be Names or Classes
|
||||
"PlotPole_EPOCH",
|
||||
"PlotPole_L_EPOCH",
|
||||
"PlotPole_XL_EPOCH",
|
||||
"WoodFoundation_EPOCH","Foundation_EPOCH",
|
||||
"WoodQuarterFloor_EPOCH","WoodHalfFloor_EPOCH","WoodFloor_EPOCH",
|
||||
"MetalQuarterFloor_EPOCH","MetalHalfFloor_EPOCH","MetalFloor_EPOCH",
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1 +1 @@
|
||||
5 "" !="bis_fnc_execvm \[\[.+\],\"initPlayerServer.sqf\"]" !="bis_fnc_effectkilled(airdestruction|secondaries) \[.+\]" !="epoch_server_(checkplayer|save(_vehicles|building)|(lock|pack)Storage|(upgrade|remove|paint|maint)build) \[.+\]" !="epoch_server_((load|respawn|dead|invite|revive|teleport)Player) \[.+\]" !="epoch_server_((upgrade|updateplayer|inviteplayer|create|delete)(Temp|)Group) \[.+\]" !="epoch_server_(deadplayerdetonate|triggerantagonist|playersetvariable|missioncomms|make(marker|SP)|removemarker) \[.+\]" !="epoch_server_(upgrade_vehicle|knockDownTree|mineRocks|lootAnimal|handle_(say3d|switchmove|sapperObjs)) \[.+\]" !="epoch_server_((repair|fill|lock)Vehicle|(loot|fill)Container|(store|take)Crypto|make(NPC|)Trade) \[.+\]" !="epoch_server_(paycrypto|tradeRequest|equippeditem|packJack|create(object|AirDrop)|airDropCrate|destroytrash|unpackBackpack) \[.+\]" !="epoch_(localcleanup|fnc_saveplayer|client_bitePlayer|serverlootobject|fnc_updateplayerstats) \[.+\]" !="cup_fnc_handletow \[.+\]" !="bis_fnc_reviveinitaddplayer \[.+\]" !="epoch_server_(setfinalplayerpos|defusebomb) \[.+\]"
|
||||
5 "" !="bis_fnc_execvm \[\[.+\],\"initPlayerServer.sqf\"]" !="bis_fnc_effectkilled(airdestruction|secondaries) \[.+\]" !="epoch_server_(checkplayer|save(_vehicles|building)|(lock|pack)Storage|(upgrade|remove|paint|maint)build) \[.+\]" !="epoch_server_((load|respawn|dead|invite|revive|teleport)Player) \[.+\]" !="epoch_server_((upgrade|updateplayer|inviteplayer|create|delete)(Temp|)Group) \[.+\]" !="epoch_server_(deadplayerdetonate|triggerantagonist|playersetvariable|missioncomms|make(marker|SP)|removemarker) \[.+\]" !="epoch_server_(upgrade_vehicle|knockDownTree|mineRocks|lootAnimal|handle_(say3d|switchmove|sapperObjs)) \[.+\]" !="epoch_server_((repair|fill|lock)Vehicle|(loot|fill)Container|(store|take)Crypto|make(NPC|)Trade) \[.+\]" !="epoch_server_(paycrypto|tradeRequest|equippeditem|packJack|create(object|AirDrop)|airDropCrate|destroytrash|unpackBackpack) \[.+\]" !="epoch_(localcleanup|fnc_saveplayer|client_bitePlayer|serverlootobject|fnc_updateplayerstats) \[.+\]" !="cup_fnc_handletow \[.+\]" !="bis_fnc_reviveinitaddplayer \[.+\]" !="epoch_server_(setfinalplayerpos|defusebomb|putcrypto) \[.+\]"
|
||||
|
@ -2,12 +2,12 @@
|
||||
5 "BIS_fnc_dynamictext" !="\"BIS_fnc_dynamictext\"" !="'BIS_fnc_dynamictext'"
|
||||
5 forceRespawn !="ForceRespawnDuration" !="reviveHandleForceRespawnAction" !="forcerespawn player;"
|
||||
5 setWeaponReloadingTime !="_unit setWeaponReloadingTime [_unit,_weapon,1];" !="_unit setWeaponReloadingTime [_unit,_weapon,1];" !="player fire [_muzzle, _muzzle, _item];\nplayer setWeaponReloadingTime [player, _muzzle, 0];"
|
||||
5 allMissionObjects !="[\"Epoch_Plotpoles\",allmissionobjects 'PlotPole_EPOCH']" !="allMissionObjects \"Timeline_F\""
|
||||
5 allMissionObjects !="[\"Epoch_Plotpoles\",allmissionobjects 'PlotPole_EPOCH']" !="allMissionObjects \"Timeline_F\"" !="_allplots append (allmissionobjects _x)"
|
||||
5 showCommandingMenu !="showCommandingMenu '';" !="showCommandingMenu '#USER:"
|
||||
5 setvelocity !="setVelocityTarget" !="_bolt setPosATL _pos;\n_bolt setVelocity [0, 0, -10];" !="EPOCH_target setvelocitytransformation" !="_currentTarget setVelocity [0,0,-0.01];" !="_head setVelocity [\n(sin _dir * _speed), \n(cos _dir * _speed)" !="_vel = velocity this; _dir = getDir player; this setVelocity[(_vel select 0)+(sin _dir * 2),(_vel select 1)+(cos _dir * 2),(_vel select 2)];" !="_head setVelocity [random 2,random 2,10];" !="_bobber setVelocity [0,-1,-10];" !="_x setvelocity [0,0,0.1];" !="_veh setVelocity [0,0,0];" !="_this select 0 setvelocity (_this select 1)" !="_zombie setVelocityTransformation [_aslPos,_aslPos,_unitV,_unitV,_unitvDir,_vDir,_unitvUp,_unitvUp,2];" !="_smokeg setVelocity _Gvel;"
|
||||
5 assignAs !"assignAsCargo" !="_unit assignAsGunner _axeCopter;" !="_driver assignAsDriver _axeCopter;" !="axeVIP assignAsDriver vehicle axeVIP;"
|
||||
5 assignAsCargo !="_x assignAsCargo axeGeneralsBoat;" !="axeVIP assignAsCargo vehicle player;" !="axeVIP assignAsCargo vehicle axeVIP;"
|
||||
5 allowDamage !="_unit allowDamage false;" !="_unit allowDamage true;" !="player allowDamage true;" !="vehicle player allowDamage true;" !="player allowDamage false;" !="_target allowDamage true;" !="_cargo allowDamage false;"
|
||||
5 allowDamage !="_unit allowDamage false;" !="_unit allowDamage true;" !="player allowDamage true;" !="vehicle player allowDamage true;" !="player allowDamage false;" !="_target allowDamage true;" !="_cargo allowDamage false;" !="if (_god) then {_vehicle allowdamage"
|
||||
5 addWeaponCargo !="_acceptHolder addWeaponCargo [_wWeapon, 1] ;" !="CBA_fnc_addWeaponCargo" !="\\fnc_addWeaponCargo" !="\"addWeaponCargo" !="cba_fAddWeaponCargo"
|
||||
5 onMapSingleClick !="onMapSingleClick '';" !="\"onmapsingleclick\""
|
||||
5 addMagazine !"addMagazineCargo" !="player addMagazine [_item,_count];" !="player addMagazine \"sledge_swing\";" !="player addMagazine \"Hatchet_swing\";" !="player addMagazine \"stick_swing\";" !="_wh addMagazineAmmoCargo[_item, 1, _count];" !="CBA_fnc_addMagazine" !="\\fnc_addMagazine" !="\"addMagazine" !="vehicle player addMagazineTurret" !="vehicle player addMagazineTurret" !="EPOCH_fnc_addMagazineOverflow" !="_vehicle addMagazineTurret [_ammotype, _turret, _ammocount]"
|
||||
@ -23,16 +23,16 @@
|
||||
5 createVehicleLocal !="\"Sign_Arrow_Direction_Yellow_F\" createVehicleLocal" !="\"#particlesource\" createVehicleLocal" !="\"#lightpoint\" createVehicleLocal" !="\"BloodSplat\" createVehicleLocal" !="[\"lightning1_F\", \"lightning2_F\"] call BIS_fnc_selectRandom;\n_lighting = _class createVehicleLocal" !="SLX_XEH_DUMMY createVehicleLocal [0, 0, 0];" !="CBA_eventHandlers = \"Logic\" createVehicleLocal [0, 0];"
|
||||
5 createUnit !="_driver = _grp createUnit[\"I_UAV_AI\", position _unit, [], 0, \"CAN_COLLIDE\"];" !="axeGeneral = grpVIPGeneral createUnit [\"I_officer_F\", axeGeneralPos, [], 1, \"CAN_COLLIDE\"];" !="bis_functions_mainscope = _grpLogic createunit [\"Logic\",[9,9,9],[],0,\"none\"];" !="_unit = _grp createUnit[selectRandom _arrUnits, _pos, [], 0, \"FORM\"];" !="_driver = (group player) createUnit[\"I_UAV_AI\", position axeUAV, [], 0, \"CAN_COLLIDE\"];"
|
||||
5 createAgent !="bis_revive_ratioLethal = createAgent [\"Logic\", [10,10,0], [], 0, \"CAN_COLLIDE\"];" !="_unit = createAgent[_unitClass, _targetPos, [], 256, \"FORM\"];" !="_unit = createAgent [_unitClass, _targetPos, [], 120, \"FORM\"];" !="_animal = createAgent[_randomAIClass, _animalPos, [], 5, \"NONE\"];" !="_unit = createAgent [\"Epoch_Cloak_F\", _pos, [], 0, \"CAN_COLLIDE\"];" !="_unit = createAgent [\"Epoch_Sapper_F\", _targetPos, [], 180, \"FORM\"];" !="_sapper = createAgent [\"Epoch_Sapper_F\", getPos _cage2, [], 0, \"FORM\"];" !="_unit = createAgent[_unitClass, position player, [], _zRange, \"FORM\"];" !="_animal = createAgent[_randomAIClass, _animalPos, [], 0, \"CAN_COLLIDE\"];" !="_axeSapper = createAgent [\"Epoch_Sapper_F\", _pos, [], 12, \"FORM\"];" !="_nestMate = createAgent [\"Epoch_Sapper_F\", _garrPos, [], 0, \"FORM\"];"
|
||||
5 createDialog !="createDialog 'server_info_picture'" !="createdialog 'epoch_tablet_gui'" !="createdialog 'Epoch_CamDialog'" !="createDialog \"rmx_dynamenu\";" !="createDialog \"rmx_craftingUI\";" !="createDialog \"QuickUpgrade\";" !="createDialog \"QuickTake\";" !="createDialog \"InteractBank\";" !="createdialog \"SelectGender\";" !="_handled = createdialog _dialog;" !="if !(createdialog \"InteractItem\") exitWith {};" !="createDialog _tapDiag;" !="if !(createdialog \"Trade\") exitWith {};" !="_ok = createdialog \"Interact\";" !="_ok = createdialog \"TradeNPCMenu\";" !="createDialog \"Epoch_myGroup\";" !="createDialog (if ((Epoch_my_GroupUID == \"\") && (Epoch_my_Group isEqualTo [])) then {\"EPOCH_createGrp\"} else {\"Epoch_myGroup\"});" !="createDialog \"GroupRequests\";" !="_ok = createdialog \"MissionSelect\";" !="createDialog 'Skaronator_AdminMenu';" !="createDialog \"Epoch_myTempGroup\";" !="createDialog (if ((Epoch_my_tempGroupUID == \"\") && (Epoch_my_tempGroup isEqualTo [])) then {\"EPOCH_createTempGrp\"} else {\"Epoch_myTempGroup\"});" !="createDialog \"tempGroupRequests\";"
|
||||
5 createDialog !="createDialog 'server_info_picture'" !="createdialog 'epoch_tablet_gui'" !="createdialog 'Epoch_CamDialog'" !="createDialog \"rmx_dynamenu\";" !="createDialog \"rmx_craftingUI\";" !="createDialog \"QuickUpgrade\";" !="createDialog \"QuickTake\";" !="createDialog \"InteractBank\";" !="createdialog \"SelectGender\";" !="_handled = createdialog _dialog;" !="if !(createdialog \"InteractItem\") exitWith {};" !="createDialog _tapDiag;" !="if !(createdialog \"Trade\") exitWith {};" !="_ok = createdialog \"Interact\";" !="_ok = createdialog \"TradeNPCMenu\";" !="createDialog \"Epoch_myGroup\";" !="createDialog (if ((Epoch_my_GroupUID == \"\") && (Epoch_my_Group isEqualTo [])) then {\"EPOCH_createGrp\"} else {\"Epoch_myGroup\"});" !="createDialog \"GroupRequests\";" !="_ok = createdialog \"MissionSelect\";" !="createDialog 'Skaronator_AdminMenu';" !="createDialog \"Epoch_myTempGroup\";" !="createDialog (if ((Epoch_my_tempGroupUID == \"\") && (Epoch_my_tempGroup isEqualTo [])) then {\"EPOCH_createTempGrp\"} else {\"Epoch_myTempGroup\"});" !="createDialog \"tempGroupRequests\";" !="createdialog 'EPOCH_SimpleInput';"
|
||||
5 createDisplay !="createDisplay \"rmx_dynamenu\";" !="createDisplay \"rmx_moveDynamicHUD\";" !="_parent createdisplay _displayClass;" !="finddisplay 151 createdisplay 'RscDisplayOptionsLayout'" !="_display createdisplay \"RscDisplayDLCPreview\";"
|
||||
5 deleteMarker !="deleteMarkerLocal _mName;"
|
||||
5 setMarker !="CBA_fnc_setMarkerPersistent\"" !="\\fnc_setMarkerPersistent" !="\"setMarkerPersistent" !="_mName setMarkerShapeLocal _mShape;" !="_mName setMarkerTypeLocal _mType;" !="(_x select 0) setMarkerPosLocal (position player);" !="_zoomMarker setMarkerSizeLocal"
|
||||
5 createMarker !="CBA_fnc_createMarker\"" !="\\fnc_createMarker" !="\"createMarker" !="cba_fCreateMarker" !="createMarkerLocal [_mName, _mPos];"
|
||||
5 assignItem !="axeVIP assignItem _item;" !="unassignItem"
|
||||
5 ctrlSetEventHandler !="ctrlSetEventHandler [\"mouseButtonDown\", _action];" !="_ctrlButtonOK ctrlseteventhandler [\"buttonclick\"," !="ctrlSetEventHandler ['LBDblClick', '_this call" !="_buttonRespawn ctrlseteventhandler [\"buttonclick\",\"with uinamespace do {['buttonRespawn'," !="_ctrl ctrlSetEventHandler [\"mouseEnter\"" !="_ctrlBtn ctrlSetEventHandler [\"MouseButtonDblClick\", _verAct];" !="_button_gen ctrlSetEventHandler [\"ButtonClick\",_btn_code + \"(uiNamespace getVariable [\"" !="t \"#(rgb,8,8,3)color(1,1,1,0.1)\";\n_c ctrlCommit 0;\n_c ctrlSetEventHandler [\"MouseButtonUp\",format[\"['remove',%1,(_this select 1)"
|
||||
5 ctrlSetEventHandler !="ctrlSetEventHandler [\"mouseButtonDown\", _action];" !="_ctrlButtonOK ctrlseteventhandler [\"buttonclick\"," !="ctrlSetEventHandler ['LBDblClick', '_this call" !="_buttonRespawn ctrlseteventhandler [\"buttonclick\",\"with uinamespace do {['buttonRespawn'," !="_ctrl ctrlSetEventHandler [\"mouseEnter\"" !="_ctrlBtn ctrlSetEventHandler [\"MouseButtonDblClick\", _verAct];" !="_button_gen ctrlSetEventHandler [\"ButtonClick\",_btn_code + \"(uiNamespace getVariable [\"" !="t \"#(rgb,8,8,3)color(1,1,1,0.1)\";\n_c ctrlCommit 0;\n_c ctrlSetEventHandler [\"MouseButtonUp\",format[\"['remove',%1,(_this select 1)" !="ctrlSetEventHandler [\"ButtonClick\",\"_slider = ((finddisplay 602) displayCtrl 654001);"
|
||||
5 addEventHandler !"displayAddEventHandler" !"ctrlAddEventHandler" !="player addeventhandler [\"PostReset\",{BIS_EnginePPReset = true;} ];" !="player addEventHandler [_x,([\"CfgEpochClient\", _x, \"\"] call EPOCH_fnc_returnConfigEntryV2)];" !="\"CBA_fnc_addEventHandler\"" !="\\fnc_addEventHandler" !="\"addEventHandler" !="_eventFunc = _eventFunc + \"(_this select 0) addEventHandler ['Respawn', \" + str _eventFunc + \"];\";" !="_unit addEventHandler [\"hitpart\"," !="CBA_fnc_addEventHandler" !="_unit addEventHandler [_x, format ['call cba_xeh_fnc_%1', _x]];" !="_ship addEventHandler [\"AttributesChanged3DEN\"" !="addEventHandler [\"HandleDamage\",bis_fnc_reviveOnPlayerHandleDamage];" !="_unit addEventHandler [\"FiredNear\"" !="_smokeEH = _plyr addEventHandler [\"FiredNear\", \"airDropHandle setFSMVariable" !="_onContactEH = _currentTarget addEventHandler[\"EpeContactStart"" !="_object addeventhandler [\"local\",{[[_this select 0],\"bis_fnc_objectVar\""
|
||||
5 displayAddEventHandler !="(findDisplay 46) displayAddEventHandler [\"KeyDown\",\"true\"];" !="displayAddEventHandler [_x,([\"CfgEpochClient\", _x, \"\"] call EPOCH_fnc_returnConfigEntryV2)];" !="displayaddeventhandler [\"mousemoving\"," !="_display displayaddeventhandler [\"unload\",\"uinamespace setvariable ['BIS_fnc_guiMess" !="findDisplay -1337 displayAddEventHandler ['Unload'" !="_display displayaddeventhandler [\"keydown\",\"with uinamespace do {['keyDown'" !="_display displayaddeventhandler [_x,_fnc_animate];" !="Development\") then\n{\n_display displayaddeventhandler [\n\"keydown\"" !="CBA_fnc_addDisplayHandler" !="_display displayAddEventHandler [\"MouseMoving" !="private _handler = _display displayAddEventHandler [_key, _code];" !="_display displayAddEventHandler [\"KeyDown\", \"_this call cba_keybinding_fnc_onKeyDown\"" !="isplay 602};\n\n_display = (findDisplay 602);\n_display displayAddEventHandler [\"MouseButtonUp\",\"[] spawn {rmx_var_fav_selected = f" !="displayaddeventhandler\n[\n\"mousemoving\""
|
||||
5 ctrlAddEventHandler !="_control = _display displayctrl 37305; \n_control ctrladdeventhandler" !="_ctrlMap = _display displayctrl 101;\n_ctrlMap ctrladdeventhandler" !="_display displayctrl 21995;\n_assetsButton ctrladdeventhandler [\"buttonclick\"," !="_display displayctrl 2406; \n_control ctrladdeventhandler [\"buttonclick\"," !="_display displayctrl 2400;\n_control ctrladdeventhandler [\"buttonclick\"," !="ctrladdeventhandler [\"lbselchanged\"," !="ctrladdeventhandler [\n\"lbselchanged\"," !="_ButtonGeneral ctrladdeventhandler [\"buttonclick\"," !="_ctrlExecuteLocal ctrladdeventhandler [\"buttonclick\"," !="_bg ctrlAddEventHandler [\"MouseEnter\"," !="_container ctrlAddEventHandler [\"LBDblClick\",\"_this call EPOCH_itemInteractClick\"];" !="(uiNamespace getVariable 'ESP_map') ctrlAddEventHandler['Draw', '_esp_targets = EPOCH_ESPMAP_TARGETS;" !="ctrlAddEventHandler ['MouseButtonDown'" !="_ctrl ctrlSetEventHandler [\"mouseEnter\", (format [\"_c = _this select 0;" !="_ctrl ctrlSetEventHandler [\"mouseExit\", (format [\"_c = _this select 0;" !="_ctrl ctrlSetEventHandler [\"mouseButtonDown\", (format [\"call %1;\",(_buttonSettings select _e select 2)])];" !="_prevButton ctrlAddEventHandler [\"MouseButtonUp\", {_this call cba_diagnostic_fnc_debug" !="BIS_RscRespawnControlsMap_ctrlHeaderRespawnButton ctrlAddEventhandler [\"ButtonDown\"" !="_control = _display displayctrl 105;\n_control ctrladdeventhandler [\"MouseButtonUp\"" !="ctrlHeaderRespawnButton\", controlNull]) ctrlAddEventhandler [\"ButtonDown\"" !="_selected = false;\n{\n_c = _display displayCtrl _x;\n_c ctrlAddEventHandler [\"LBDrag\",\"rmx_var_favBar_Item = (_this call epoch_fav" !="_ctrlMouseArea ctrladdeventhandler [\"setfocus\",{with uinamespace do {[\"dlcClear\",[ctrlpar" !="13484 ctrlAddEventHandler [\"ButtonClick\", {[\"executeButton\","
|
||||
5 displayAddEventHandler !="(findDisplay 46) displayAddEventHandler [\"KeyDown\",\"true\"];" !="displayAddEventHandler [_x,([\"CfgEpochClient\", _x, \"\"] call EPOCH_fnc_returnConfigEntryV2)];" !="displayaddeventhandler [\"mousemoving\"," !="_display displayaddeventhandler [\"unload\",\"uinamespace setvariable ['BIS_fnc_guiMess" !="findDisplay -1337 displayAddEventHandler ['Unload'" !="_display displayaddeventhandler [\"keydown\",\"with uinamespace do {['keyDown'" !="_display displayaddeventhandler [_x,_fnc_animate];" !="Development\") then\n{\n_display displayaddeventhandler [\n\"keydown\"" !="CBA_fnc_addDisplayHandler" !="_display displayAddEventHandler [\"MouseMoving" !="private _handler = _display displayAddEventHandler [_key, _code];" !="_display displayAddEventHandler [\"KeyDown\", \"_this call cba_keybinding_fnc_onKeyDown\"" !="isplay 602};\n\n_display = (findDisplay 602);\n_display displayAddEventHandler [\"MouseButtonUp\",\"[] spawn {rmx_var_fav_selected = f" !="displayaddeventhandler\n[\n\"mousemoving\"" !="_ctrlBohemia ctrlcommit 0;\n\n\n_display displayaddeventhandler"
|
||||
5 ctrlAddEventHandler !="_control = _display displayctrl 37305; \n_control ctrladdeventhandler" !="_ctrlMap = _display displayctrl 101;\n_ctrlMap ctrladdeventhandler" !="_display displayctrl 21995;\n_assetsButton ctrladdeventhandler [\"buttonclick\"," !="_display displayctrl 2406; \n_control ctrladdeventhandler [\"buttonclick\"," !="_display displayctrl 2400;\n_control ctrladdeventhandler [\"buttonclick\"," !="ctrladdeventhandler [\"lbselchanged\"," !="ctrladdeventhandler [\n\"lbselchanged\"," !="_ButtonGeneral ctrladdeventhandler [\"buttonclick\"," !="_ctrlExecuteLocal ctrladdeventhandler [\"buttonclick\"," !="_bg ctrlAddEventHandler [\"MouseEnter\"," !="_container ctrlAddEventHandler [\"LBDblClick\",\"_this call EPOCH_itemInteractClick\"];" !="(uiNamespace getVariable 'ESP_map') ctrlAddEventHandler['Draw', '_esp_targets = EPOCH_ESPMAP_TARGETS;" !="ctrlAddEventHandler ['MouseButtonDown'" !="_ctrl ctrlSetEventHandler [\"mouseEnter\", (format [\"_c = _this select 0;" !="_ctrl ctrlSetEventHandler [\"mouseExit\", (format [\"_c = _this select 0;" !="_ctrl ctrlSetEventHandler [\"mouseButtonDown\", (format [\"call %1;\",(_buttonSettings select _e select 2)])];" !="_prevButton ctrlAddEventHandler [\"MouseButtonUp\", {_this call cba_diagnostic_fnc_debug" !="BIS_RscRespawnControlsMap_ctrlHeaderRespawnButton ctrlAddEventhandler [\"ButtonDown\"" !="_control = _display displayctrl 105;\n_control ctrladdeventhandler [\"MouseButtonUp\"" !="ctrlHeaderRespawnButton\", controlNull]) ctrlAddEventhandler [\"ButtonDown\"" !="_selected = false;\n{\n_c = _display displayCtrl _x;\n_c ctrlAddEventHandler [\"LBDrag\",\"rmx_var_favBar_Item = (_this call epoch_fav" !="_ctrlMouseArea ctrladdeventhandler [\"setfocus\",{with uinamespace do {[\"dlcClear\",[ctrlpar" !="13484 ctrlAddEventHandler [\"ButtonClick\", {[\"executeButton\"," !="_ctrlButtonPurchase ctrladdeventhandler"
|
||||
5 removeAllEventHandlers !"ctrlRemoveAllEventHandlers" !"displayRemoveAllEventHandlers" !="_vehicle removeAllEventHandlers \"GetOut\";" !="_sapper removeAllEventHandlers \"Hit\";\n_sapper removeAllEventHandlers \"FiredNear\";" !="_unit removeAllEventHandlers \"Hit\";\n_unit removeAllEventHandlers \"FiredNear\";" !="{_ship removeAllEventHandlers _x;} forEach [\"AttributesChanged3DEN\"" !="_zombie removeAllEventHandlers \"Hit\";" !="_zombie removeAllEventHandlers \"FiredNear\";"
|
||||
5 displayRemoveAllEventHandlers !="_display displayRemoveAllEventHandlers _x;" !="if !(isMultiplayer) then { { (findDisplay 46) displayRemoveAllEventHandlers _x } forEach [\"KeyUp\", \"KeyDown\"] };"
|
||||
5 removeAllMissionEventHandlers
|
||||
|
@ -109,7 +109,6 @@ class FSM
|
||||
"_checkFreq = getNumber (getMissionConfig ""CfgEpochRyanZombie"" >> ""reflexSpeed"");" \n
|
||||
"_welcomeWait = random 4;" \n
|
||||
"_config = 'CfgEpochClient' call EPOCH_returnConfig;" \n
|
||||
"_jammerRange = getNumber(_config >> ""buildingJammerRange"");" \n
|
||||
"_zSmell = getArray (getMissionConfig ""CfgEpochRyanZombie"" >> ""smell"");" \n
|
||||
"_zSight = getArray (getMissionConfig ""CfgEpochRyanZombie"" >> ""sight"");" \n
|
||||
"_zHear = getArray (getMissionConfig ""CfgEpochRyanZombie"" >> ""hearing"");" \n
|
||||
@ -251,7 +250,6 @@ class FSM
|
||||
"axeDebug = _doDebug ;" \n
|
||||
"if(_doDebug)then{" \n
|
||||
"axeDebug = true;" \n
|
||||
"_jammerRange = 75;" \n
|
||||
"axeZed = _zombie;" \n
|
||||
"_debugDo = ""START"";" \n
|
||||
"_mkrName = """";" \n
|
||||
|
@ -1076,7 +1076,7 @@ class FSM
|
||||
"if (_playerCheck) then {" \n
|
||||
" _PlayerPosCheck = !((_playerObject getVariable [""FinalDest"",[]]) isequalto []);" \n
|
||||
" if (_PlayerPosCheck) then {" \n
|
||||
" _playerCheckMass = (_loadabs == (loadabs _playerObject));" \n
|
||||
" _playerCheckMass = ((_loadabs toFixed 2) isEqualTo ((loadabs _playerObject) toFixed 2));" \n
|
||||
" if (_playerCheckMass) then {" \n
|
||||
" _state = true;" \n
|
||||
" };" \n
|
||||
|
@ -12,12 +12,15 @@
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/EPOCH_CamUse.sqf
|
||||
*/
|
||||
|
||||
private ["_mycams","_buildingJammerRange","_curcam"];
|
||||
private ["_mycams","_curcam"];
|
||||
|
||||
_mycams = EPOCH_BaseCams select {(_x getVariable["BUILD_OWNER", "-1"]) in [getPlayerUID player, Epoch_my_GroupUID]};
|
||||
if (["CfgEpochClient", "BaseCamOnlyHome",true] call EPOCH_fnc_returnConfigEntryV2) then {
|
||||
_buildingJammerRange = ["CfgEpochClient", "buildingJammerRange",75] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_mycams = _mycams select {!(((nearestobjects [_x,["Plotpole_EPOCH"],_buildingJammerRange]) select {(_x getVariable["BUILD_OWNER", "-1"]) in [getPlayerUID player, Epoch_my_GroupUID]}) isequalto [])};
|
||||
_mycams = _mycams select {
|
||||
_cam = _x;
|
||||
_jammer = (nearestObjects[player, call EPOCH_JammerClasses, call EPOCH_MaxJammerRange]) select {_cam distance _x < (getnumber (getmissionconfig "CfgEpochClient" >> "CfgJammers" >> (typeof _x) >> "buildingJammerRange"))};
|
||||
!((_jammer select {(_x getVariable["BUILD_OWNER", "-1"]) in [getPlayerUID player, Epoch_my_GroupUID]}) isequalto [])
|
||||
};
|
||||
};
|
||||
if !(_mycams isequalto []) then {
|
||||
_curcam = _mycams find Epoch_ActiveCam;
|
||||
|
@ -13,7 +13,7 @@
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/EPOCH_consumeItem.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_buildClass","_buildingCountLimit","_buildingJammerRange","_canCapacity","_cfgBaseBuilding","_cfgItemInteractions","_color","_currentDMG","_currentFuel","_currentHIT","_fuelCapacity","_ghostClass","_highestDMG","_inputCount","_interactAttributes","_interactOption","_interactReturnOnUse","_isOk","_isStorage","_magazineSize","_magazineSizeMax","_magazinesAmmoFull","_msg","_newDMG","_newFuel","_object","_otherObjects","_output","_paintCanColor","_paintCanIndex","_partCheck","_pos","_removeItem","_transportFuel","_unifiedInteract","_vehicle","_vehicles"];
|
||||
private ["_buildClass","_buildingCountLimit","_canCapacity","_cfgBaseBuilding","_cfgItemInteractions","_color","_currentDMG","_currentFuel","_currentHIT","_fuelCapacity","_ghostClass","_highestDMG","_inputCount","_interactAttributes","_interactOption","_interactReturnOnUse","_isOk","_isStorage","_magazineSize","_magazineSizeMax","_magazinesAmmoFull","_msg","_newDMG","_newFuel","_object","_otherObjects","_output","_paintCanColor","_paintCanIndex","_partCheck","_pos","_removeItem","_transportFuel","_unifiedInteract","_vehicle","_vehicles"];
|
||||
//[[[end]]]
|
||||
|
||||
EPOCH_InteractedItem params ["_text","_item","_pic"];
|
||||
@ -114,8 +114,6 @@ switch _interactOption do {
|
||||
case 2: _unifiedInteract; //Drink 2
|
||||
case 3: { // Build 3
|
||||
closeDialog 0;
|
||||
_buildingJammerRange = ["CfgEpochClient", "buildingJammerRange", 75] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_buildingCountLimit = ["CfgEpochClient", "buildingCountLimit", 200] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_partCheck = _item in (magazines player);
|
||||
|
||||
_buildClass = getText(_cfgItemInteractions >> "buildClass");
|
||||
@ -141,7 +139,7 @@ switch _interactOption do {
|
||||
|
||||
if (_buildClass isKindOf "ThingX") then {
|
||||
// prevent spawning if another simulated object exists still
|
||||
_otherObjects = nearestObjects[player, [_buildClass], _buildingJammerRange];
|
||||
_otherObjects = nearestObjects[player, [_buildClass], 100];
|
||||
if (_otherObjects isEqualTo []) then {
|
||||
_object=createVehicle[_buildClass,_pos,[],0,"CAN_COLLIDE"];
|
||||
_object setDir ((getDir player) - 180);
|
||||
|
@ -91,8 +91,7 @@ if (diag_tickTime - EPOCH_lastTrash > 2) then {
|
||||
};
|
||||
if (!isNull _bankTerminal) then {
|
||||
_AtmBlockedAtPlot = ["CfgEpochClient", "AtmBlockedAtPlot", false] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_buildingJammerRange = getNumber(_config >> "buildingJammerRange");
|
||||
_jammer = nearestObjects[player, ["PlotPole_EPOCH"], _buildingJammerRange];
|
||||
_jammer = (nearestObjects[player, call EPOCH_JammerClasses, call EPOCH_MaxJammerRange]) select {player distance _x < (getnumber (getmissionconfig "CfgEpochClient" >> "CfgJammers" >> (typeof _x) >> "buildingJammerRange"))};
|
||||
if (!(_jammer isequalto []) && _AtmBlockedAtPlot) exitwith {
|
||||
["Bank Terminal blocked by Jammer Signal",5] call Epoch_Message;
|
||||
};
|
||||
|
@ -13,7 +13,7 @@
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/EPOCH_unitSpawn.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_aiskill","_arrSkills","_arrUnits","_arrVals","_bomb","_config","_currentLimit","_disableAI","_driver","_grp","_index","_jammerRange","_jammers","_loop","_minAISkill","_missionConfig","_nonJammer","_nonTrader","_nonTraderAIRange","_playerSpawnArray","_playerSpawnArrayKeyFinal","_pos","_restricted","_sapperHndl","_sapperNum","_spawnLimit","_targetPos","_unit","_units"];
|
||||
private ["_aiskill","_arrSkills","_arrUnits","_arrVals","_bomb","_config","_currentLimit","_disableAI","_driver","_grp","_index","_jammers","_loop","_minAISkill","_missionConfig","_nonJammer","_nonTrader","_nonTraderAIRange","_playerSpawnArray","_playerSpawnArrayKeyFinal","_pos","_restricted","_sapperHndl","_sapperNum","_spawnLimit","_targetPos","_unit","_units"];
|
||||
//[[[end]]]
|
||||
params ["_unitClass",["_trgt",player],["_doVariable",false],["_unitCount",1],["_extraData",[]] ];
|
||||
|
||||
@ -41,9 +41,7 @@ _unit = objNull;
|
||||
_targetPos = getPosATL _trgt;
|
||||
_targetPos set [2,0];
|
||||
|
||||
_config = 'CfgEpochClient' call EPOCH_returnConfig;
|
||||
_jammerRange = getNumber(_config >> "buildingJammerRange");
|
||||
_jammers = nearestObjects[_targetPos, ["PlotPole_EPOCH"], _jammerRange];
|
||||
_jammers = (nearestObjects[_targetPos, call EPOCH_JammerClasses, call EPOCH_MaxJammerRange]) select {_targetPos distance _x < (getnumber (getmissionconfig "CfgEpochClient" >> "CfgJammers" >> (typeof _x) >> "buildingJammerRange"))};
|
||||
if(!(_jammers isEqualTo []) && (_unitClass in _nonJammer))exitWith{};
|
||||
|
||||
_restricted = nearestObjects [_targetPos, ["ProtectionZone_Invisible_F"], _nonTraderAIRange];
|
||||
|
@ -23,7 +23,7 @@
|
||||
BOOL
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_StorageClasses","_BuildingClasses","_CamCountLimit","_alljammer","_buildingAllowed","_buildingCountLeader","_buildingCountLimit","_buildingCountPerMember","_buildingJammerRange","_bypassJammer","_c","_cfgBaseBuilding","_config","_ghostClass","_isAllowed","_jammer","_jammerGLOnly","_jammerPerGroup","_limitNearby","_maxBuildingHeight","_membercount","_minJammerDistance","_myPosATL","_nearestJammer","_obj","_objType","_objectscount","_ownedJammerExists","_range","_restricted","_restrictedArray","_restrictedLocations","_restrictedLocationsArray","_restrictedLocationsRange","_simulClass","_staticClass","_storageCountLeader","_storageCountLimit","_storageCountPerMember","_useGroupCountLimits","_useSplitCountLimits"];
|
||||
private ["_StorageClasses","_BuildingClasses","_CamCountLimit","_alljammer","_buildingAllowed","_buildingCountLeader","_buildingCountLimit","_buildingCountPerMember","_buildingJammerRange","_bypassJammer","_c","_cfgBaseBuilding","_config","_ghostClass","_isAllowed","_jammer","_jammerGLOnly","_jammerPerGroup","_limitNearby","_maxBuildingHeight","_membercount","_myPosATL","_nearestJammer","_obj","_objType","_objectscount","_ownedJammerExists","_range","_restricted","_restrictedArray","_restrictedLocations","_restrictedLocationsArray","_restrictedLocationsRange","_simulClass","_staticClass","_storageCountLeader","_storageCountLimit","_storageCountPerMember","_useGroupCountLimits","_useSplitCountLimits"];
|
||||
//[[[end]]]
|
||||
|
||||
_buildingAllowed = true;
|
||||
@ -38,32 +38,21 @@ if (vehicle player != player)exitWith{["Building Disallowed: Inside Vehicle", 5]
|
||||
|
||||
// defaults
|
||||
_config = 'CfgEpochClient' call EPOCH_returnConfig;
|
||||
_JammerConfig = (_config >> "CfgJammers");
|
||||
_cfgBaseBuilding = 'CfgBaseBuilding' call EPOCH_returnConfig;
|
||||
_buildingJammerRange = getNumber(_config >> "buildingJammerRange");
|
||||
_buildingCountLimit = getNumber(_config >> "buildingCountLimit");
|
||||
_storageCountLimit = getNumber(_config >> "storageCountLimit");
|
||||
_buildingCountLeader = getNumber(_config >> "buildingCountLeader");
|
||||
_buildingCountPerMember = getNumber(_config >> "buildingCountPerMember");
|
||||
_storageCountLeader = getNumber(_config >> "storageCountLeader");
|
||||
_storageCountPerMember = getNumber(_config >> "storageCountPerMember");
|
||||
_minJammerDistance = getNumber(_config >> "minJammerDistance");
|
||||
_maxBuildingHeight = getNumber(_config >> "maxBuildingHeight");
|
||||
_jammerPerGroup = getNumber(_config >> "jammerPerGroup");
|
||||
_CamCountLimit = getNumber(_config >> "maxCams");
|
||||
if(getNumber(_config >> "useGroupCountLimits") == 0)then{_useGroupCountLimits=false};
|
||||
if(getNumber(_config >> "splitCountLimits") == 1)then{_useSplitCountLimits=true};
|
||||
if(getNumber(_config >> "jammerGLOnly") == 0)then{_jammerGLOnly=false};
|
||||
if(_buildingJammerRange == 0)then{_buildingJammerRange = 75};
|
||||
if(_buildingCountLimit == 0)then{_buildingCountLimit = 200};
|
||||
if(_buildingCountLeader == 0)then{_buildingCountLeader = _buildingCountLimit};
|
||||
if(_storageCountLeader == 0)then{_storageCountLeader = 100};
|
||||
if(_minJammerDistance == 0)then{_minJammerDistance = _buildingJammerRange*3};
|
||||
if(_maxBuildingHeight == 0)then{_maxBuildingHeight = 100};
|
||||
if(_jammerPerGroup == 0)then{_jammerPerGroup = 2};
|
||||
if(_CamCountLimit == 0)then{_CamCountLimit = 2};
|
||||
|
||||
_StorageClasses = ["Buildable_Storage","Buildable_Storage_SIM","Buildable_Storage_Ghost","Constructions_lockedstatic_F","Secure_Storage_Temp"];
|
||||
_BuildingClasses = ["Constructions_static_F","Constructions_foundation_F","Const_Ghost_EPOCH"];
|
||||
_StorageClasses = ["CfgEpochClient", "StorageClasses", ["Buildable_Storage","Buildable_Storage_SIM","Buildable_Storage_Ghost","Constructions_lockedstatic_F","Secure_Storage_Temp"]] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_BuildingClasses = ["CfgEpochClient", "BuildingClasses", ["Constructions_static_F","Constructions_foundation_F","Const_Ghost_EPOCH"]] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_minJammerDistance = ["CfgEpochClient", "minJammerDistance", 650] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_maxBuildingHeight = ["CfgEpochClient", "maxBuildingHeight", 100] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_jammerPerGroup = ["CfgEpochClient", "jammerPerGroup", 1] call EPOCH_fnc_returnConfigEntryV2;
|
||||
|
||||
_JammerClasses = call EPOCH_JammerClasses;
|
||||
_JammerGhosts = call EPOCH_JammerGhosts;
|
||||
_JammerCheckClasses = _JammerClasses + _JammerGhosts;
|
||||
|
||||
// input
|
||||
params ["_objType"];
|
||||
@ -79,9 +68,9 @@ _ghostClass = getText(_cfgBaseBuilding >> _objType >> "GhostPreview");
|
||||
_bypassJammer = getNumber(_cfgBaseBuilding >> _staticClass >> "bypassJammer");
|
||||
|
||||
// Jammer
|
||||
_jammer = nearestObjects[player, ["PlotPole_EPOCH"], _minjammerdistance];
|
||||
_jammer = (nearestObjects[player, _JammerCheckClasses, _minJammerDistance]-[_obj]);
|
||||
if !(_jammer isEqualTo []) then {
|
||||
if (_objType in ["PlotPole_EPOCH", "PlotPole_SIM_EPOCH"]) then {
|
||||
if (_objType in _JammerCheckClasses) then {
|
||||
{
|
||||
if (alive _x) exitWith{
|
||||
_buildingAllowed = false;
|
||||
@ -91,8 +80,9 @@ if !(_jammer isEqualTo []) then {
|
||||
}
|
||||
else {
|
||||
{
|
||||
if (alive _x && (_x distance player) <= _buildingJammerRange) exitWith{
|
||||
if (alive _x && player distance _x < (getnumber (_JammerConfig >> (typeof _x) >> "buildingJammerRange"))) exitWith{
|
||||
_nearestJammer = _x;
|
||||
_JammerConfig = (_JammerConfig >> (typeof _nearestJammer));
|
||||
};
|
||||
} foreach _jammer;
|
||||
if !(isNull _nearestJammer) then {
|
||||
@ -101,19 +91,20 @@ if !(_jammer isEqualTo []) then {
|
||||
["Building Disallowed: Frequency Blocked", 5] call Epoch_message;
|
||||
};
|
||||
_ownedJammerExists = true;
|
||||
if(_useGroupCountLimits)then{
|
||||
_membercount = 0;
|
||||
Epoch_my_Group params [
|
||||
["_groupName",""],
|
||||
["_leaderName",""],
|
||||
["_groupSize",0],
|
||||
["_modArray",[]],
|
||||
["_memberArray",[]]
|
||||
];
|
||||
_membercount = count _modArray + count _memberArray;
|
||||
_storageCountLimit = _storageCountLeader + (_storageCountPerMember * _membercount);
|
||||
_buildingCountLimit = _buildingCountLeader + (_buildingCountPerMember * _membercount);
|
||||
};
|
||||
_membercount = 0;
|
||||
Epoch_my_Group params [
|
||||
["_groupName",""],
|
||||
["_leaderName",""],
|
||||
["_groupSize",0],
|
||||
["_modArray",[]],
|
||||
["_memberArray",[]]
|
||||
];
|
||||
_membercount = count _modArray + count _memberArray;
|
||||
_buildingJammerRange = getnumber (_JammerConfig >> "buildingJammerRange");
|
||||
_storageCountLimit = (getnumber (_JammerConfig >> "storageCountLimit")) + ((getnumber (_JammerConfig >> "storageCountPerMember")) * _membercount);
|
||||
_buildingCountLimit = (getnumber (_JammerConfig >> "buildingCountLimit")) + ((getnumber (_JammerConfig >> "buildingCountPerMember")) * _membercount);
|
||||
_CamCountLimit = getnumber (_JammerConfig >> "maxCams");
|
||||
|
||||
if (_useSplitCountLimits) then {
|
||||
if({_objType iskindof _x} count _StorageClasses > 0) then {
|
||||
if ((count (nearestObjects[_nearestJammer,_StorageClasses,_buildingJammerRange]-[_obj])) >= _storageCountLimit) exitwith {
|
||||
@ -148,7 +139,7 @@ if !(_jammer isEqualTo []) then {
|
||||
};
|
||||
}
|
||||
else {
|
||||
if (_objType in ["PlotPole_EPOCH", "PlotPole_SIM_EPOCH"]) then {
|
||||
if (_objType in _JammerCheckClasses) then {
|
||||
if (!(EPOCH_my_groupUID isequalto "") && !((getplayeruid player) isequalto EPOCH_my_groupUID) && _jammerGLOnly) exitwith {
|
||||
_buildingAllowed = false;
|
||||
["The Group Leader must place the Jammer!", 5] call Epoch_message;
|
||||
@ -158,7 +149,7 @@ else {
|
||||
if ((_x getVariable["BUILD_OWNER", "-1"]) in[getPlayerUID player, Epoch_my_GroupUID]) then {
|
||||
_c = _c+1;
|
||||
};
|
||||
} foreach (missionnamespace getvariable ["Epoch_Plotpoles",allmissionobjects 'PlotPole_EPOCH']);
|
||||
} foreach (missionnamespace getvariable ["Epoch_Plotpoles",call {_allplots = [];{_allplots append (allmissionobjects _x)} foreach (call EPOCH_JammerClasses);_allplots}]);
|
||||
if (_c >= _jammerPerGroup) then {
|
||||
_buildingAllowed = false;
|
||||
[format["Building Disallowed: Max %1 Jammer per Group!", _jammerPerGroup], 5] call Epoch_message;
|
||||
@ -173,7 +164,7 @@ if (!_ownedJammerExists) then{
|
||||
|
||||
if (_limitNearby > 0) then{
|
||||
// remove current target from objects
|
||||
_objectscount = count (nearestObjects[player, [_staticClass, _simulClass], _buildingJammerRange]-[_obj]);
|
||||
_objectscount = count (nearestObjects[player, [_staticClass, _simulClass], 100]-[_obj]);
|
||||
if (_objectscount >= _limitNearby) then{
|
||||
_buildingAllowed = false;
|
||||
[format["Building Disallowed: Limit %1", _limitNearby], 5] call Epoch_message;
|
||||
@ -184,7 +175,7 @@ if !(_buildingAllowed)exitWith{ false };
|
||||
|
||||
// require jammer check if not found as owner of jammer
|
||||
if (getNumber(_config >> "buildingRequireJammer") == 1 && _bypassJammer == 0) then{
|
||||
if !(_objType in ["PlotPole_EPOCH", "PlotPole_SIM_EPOCH"]) then {
|
||||
if !(_objType in _JammerCheckClasses) then {
|
||||
_buildingAllowed = _ownedJammerExists;
|
||||
if !(_buildingAllowed) then {
|
||||
["Building Disallowed: Frequency Jammer Needed", 5] call Epoch_message;
|
||||
|
@ -22,14 +22,10 @@
|
||||
BOOL
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_buildingJammerRange","_config","_jammed","_jammer"];
|
||||
private ["_jammed","_jammer"];
|
||||
//[[[end]]]
|
||||
|
||||
_config = "CfgEpochClient" call EPOCH_returnConfig;
|
||||
_buildingJammerRange = getNumber(_config >> "buildingJammerRange");
|
||||
if (_buildingJammerRange == 0) then { _buildingJammerRange = 75; };
|
||||
|
||||
_jammer = nearestObjects[cameraon, ["PlotPole_EPOCH"], _buildingJammerRange];
|
||||
_jammer = (nearestObjects[player, call EPOCH_JammerClasses, call EPOCH_MaxJammerRange]) select {player distance _x < (getnumber (getmissionconfig "CfgEpochClient" >> "CfgJammers" >> (typeof _x) >> "buildingJammerRange"))};
|
||||
_jammed = false;
|
||||
if !(_jammer isEqualTo[]) then {
|
||||
{
|
||||
|
@ -22,13 +22,12 @@
|
||||
NOTHING
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_buildingJammerRange","_config","_maintainCount","_rnd"];
|
||||
private ["_buildingJammerRange","_maintainCount","_rnd"];
|
||||
//[[[end]]]
|
||||
|
||||
if !(isNil "EPOCH_maintainLockout") exitWith {["Already Maintaining a base.", 5] call Epoch_message;};
|
||||
if (EPOCH_playerCrypto > 0) then {
|
||||
_config = "CfgEpochClient" call EPOCH_returnConfig;
|
||||
_buildingJammerRange = getNumber(_config >> "buildingJammerRange");
|
||||
_buildingJammerRange = getnumber (getmissionconfig "CfgEpochClient" >> "CfgJammers" >> (typeof _this) >> "buildingJammerRange");;
|
||||
if (_buildingJammerRange == 0) then { _buildingJammerRange = 75; };
|
||||
|
||||
_maintainCount = {(damage _x) > 0} count nearestObjects[_this, ["Constructions_static_F","Constructions_foundation_F","Buildable_Storage","Constructions_lockedstatic_F"], _buildingJammerRange];
|
||||
|
@ -22,19 +22,12 @@
|
||||
BOOL - true if removed
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_buildingAllowed","_buildingCountLimit","_buildingJammerRange","_config","_jammer","_nearestJammer","_objType","_ownedJammerExists","_removeParts","_return","_stability","_targeter"];
|
||||
private ["_buildingAllowed","_jammer","_nearestJammer","_objType","_ownedJammerExists","_removeParts","_return","_stability","_targeter"];
|
||||
//[[[end]]]
|
||||
|
||||
_buildingAllowed = true;
|
||||
_ownedJammerExists = false;
|
||||
_nearestJammer = objNull;
|
||||
_config = 'CfgEpochClient' call EPOCH_returnConfig;
|
||||
_buildingJammerRange = getNumber(_config >> "buildingJammerRange");
|
||||
_buildingCountLimit = getNumber(_config >> "buildingCountLimit");
|
||||
|
||||
// defaults
|
||||
if (_buildingJammerRange == 0) then { _buildingJammerRange = 75; };
|
||||
if (_buildingCountLimit == 0) then { _buildingCountLimit = 200; };
|
||||
|
||||
EPOCH_buildOption = 0;
|
||||
|
||||
@ -57,14 +50,14 @@ if (_stability > 0) exitWith{
|
||||
};
|
||||
};
|
||||
|
||||
if (_objType == "PlotPole_EPOCH") then {
|
||||
if (_objType in (call EPOCH_JammerClasses)) then {
|
||||
if ((_object getVariable["BUILD_OWNER", "-1"]) != getPlayerUID player) then{
|
||||
_buildingAllowed = false;
|
||||
["Remove Disallowed: Frequency Blocked", 5] call Epoch_message;
|
||||
};
|
||||
}
|
||||
else {
|
||||
_jammer = nearestObjects[player, ["PlotPole_EPOCH"], _buildingJammerRange];
|
||||
_jammer = (nearestObjects[player, call EPOCH_JammerClasses, call EPOCH_MaxJammerRange]) select {player distance _x < (getnumber (getmissionconfig "CfgEpochClient" >> "CfgJammers" >> (typeof _x) >> "buildingJammerRange"))};
|
||||
if !(_jammer isEqualTo[]) then{
|
||||
{
|
||||
if (alive _x) exitWith{
|
||||
|
@ -23,7 +23,7 @@
|
||||
NOTHING
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_buildingAllowed","_buildingCountLimit","_buildingJammerRange","_canUpgrade","_canUpgradePartCount","_config","_config2","_countdoors","_countgates","_doors","_gates","_jammer","_maxdoors","_maxgates","_missingCount","_missingParts","_nearestJammer","_ownedJammerExists","_part","_partCheck","_removedPartCount","_req","_return","_stability","_targeter","_upgrade","_upgradeParts","_upgrades","_upgradeto"];
|
||||
private ["_buildingAllowed","_canUpgrade","_canUpgradePartCount","_config","_config2","_countdoors","_countgates","_doors","_gates","_jammer","_maxdoors","_maxgates","_missingCount","_missingParts","_nearestJammer","_ownedJammerExists","_part","_partCheck","_removedPartCount","_req","_return","_stability","_targeter","_upgrade","_upgradeParts","_upgrades","_upgradeto","_buildingJammerRange","_JammerConfig","_CryptoCosts"];
|
||||
//[[[end]]]
|
||||
params [
|
||||
["_object",objNull,[objNull]],
|
||||
@ -37,13 +37,6 @@ if (isNull _object) exitWith {false};
|
||||
_buildingAllowed = true;
|
||||
_ownedJammerExists = false;
|
||||
_nearestJammer = objNull;
|
||||
_config = 'CfgEpochClient' call EPOCH_returnConfig;
|
||||
_buildingJammerRange = getNumber(_config >> "buildingJammerRange");
|
||||
_buildingCountLimit = getNumber(_config >> "buildingCountLimit");
|
||||
|
||||
// defaults
|
||||
if (_buildingJammerRange == 0) then { _buildingJammerRange = 75; };
|
||||
if (_buildingCountLimit == 0) then { _buildingCountLimit = 200; };
|
||||
|
||||
EPOCH_buildOption = 1;
|
||||
|
||||
@ -58,38 +51,25 @@ if (_stability > 0) exitWith{
|
||||
};
|
||||
};
|
||||
|
||||
_jammer = nearestObjects[player, ["PlotPole_EPOCH"], _buildingJammerRange];
|
||||
_jammer = (nearestObjects[_object, call EPOCH_JammerClasses, call EPOCH_MaxJammerRange]) select {alive _x && {_object distance _x < (getnumber (getmissionconfig "CfgEpochClient" >> "CfgJammers" >> (typeof _x) >> "buildingJammerRange"))}};
|
||||
|
||||
if !(_jammer isEqualTo[]) then {
|
||||
{
|
||||
if (alive _x) exitWith{
|
||||
_nearestJammer = _x;
|
||||
};
|
||||
} foreach _jammer;
|
||||
|
||||
if !(isNull _nearestJammer) then {
|
||||
if ((_nearestJammer getVariable["BUILD_OWNER", "-1"]) in[getPlayerUID player, Epoch_my_GroupUID]) then {
|
||||
_ownedJammerExists = true;
|
||||
}
|
||||
else {
|
||||
_buildingAllowed = false;
|
||||
["Upgrade Disallowed: Frequency Blocked", 5] call Epoch_message;
|
||||
};
|
||||
};
|
||||
_nearestJammer = _jammer select 0;
|
||||
if ((_nearestJammer getVariable["BUILD_OWNER", "-1"]) in[getPlayerUID player, Epoch_my_GroupUID]) then {
|
||||
_ownedJammerExists = true;
|
||||
}
|
||||
else {
|
||||
_buildingAllowed = false;
|
||||
["Upgrade Disallowed: Frequency Blocked", 5] call Epoch_message;
|
||||
};
|
||||
};
|
||||
if !(_buildingAllowed)exitWith{ false };
|
||||
|
||||
if (_object isKindOf "Constructions_static_F") then {
|
||||
if (_object isKindOf "Constructions_static_F" || {(typeof _object) in (call EPOCH_JammerClasses)}) then {
|
||||
|
||||
// take upgrade item from player here
|
||||
_config = 'CfgBaseBuilding' call EPOCH_returnConfig;
|
||||
_config2 = 'CfgEpochClient' call EPOCH_returnConfig;
|
||||
_buildingJammerRange = getNumber(_config2 >> "buildingJammerRange");
|
||||
_maxdoors = getNumber(_config2 >> "maxdoors");
|
||||
_maxgates = getNumber(_config2 >> "maxgates");
|
||||
if (_buildingJammerRange == 0) then {_buildingJammerRange = 150};
|
||||
if (_maxdoors == 0) then {_maxdoors = 12};
|
||||
if (_maxgates == 0) then {_maxgates = 10};
|
||||
_config2 = getmissionconfig "CfgEpochClient" >> "CfgJammers" >> (typeof _object);
|
||||
|
||||
_upgrades = getArray(_config >> (typeOf _object) >> "upgradeBuilding");
|
||||
if !(_upgrades isEqualTo []) then {
|
||||
@ -102,10 +82,17 @@ if (_object isKindOf "Constructions_static_F") then {
|
||||
_canUpgrade = true;
|
||||
_canUpgradePartCount = 0;
|
||||
_missingParts = "Missing: ";
|
||||
_CryptoCosts = 0;
|
||||
{
|
||||
_part = _x select 0;
|
||||
_req = _x select 1;
|
||||
_partCheck = {_x == _part} count (magazines player);
|
||||
_partCheck = if (_part IsEqualTo "Krypto") then {
|
||||
_CryptoCosts = _CryptoCosts + _req;
|
||||
EPOCH_PlayerCrypto
|
||||
}
|
||||
else {
|
||||
{_x == _part} count (magazines player)
|
||||
};
|
||||
|
||||
if (_partCheck < _req) then {
|
||||
_missingCount = _req - _partCheck;
|
||||
@ -116,9 +103,16 @@ if (_object isKindOf "Constructions_static_F") then {
|
||||
_canUpgradePartCount = _canUpgradePartCount + _req;
|
||||
} forEach _upgradeParts;
|
||||
|
||||
_doors = ["WoodLargeWallDoorL_EPOCH","WoodWall4_EPOCH","CinderWallDoorwHatch_EPOCH","WoodStairs3_EPOCH","JailWallDoor_EPOCH"];
|
||||
_gates = ["CinderWallGarage_EPOCH","WoodWallGarage_EPOCH","MetalWallGarage_EPOCH"];
|
||||
if (_canUpgrade) then {
|
||||
_doors = ["CfgEpochClient", "DoorClasses", ["WoodLargeWallDoorL_EPOCH","WoodWall4_EPOCH","CinderWallDoorwHatch_EPOCH","WoodStairs3_EPOCH","JailWallDoor_EPOCH"]] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_gates = ["CfgEpochClient", "GateClasses", ["CinderWallGarage_EPOCH","WoodWallGarage_EPOCH","MetalWallGarage_EPOCH"]] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_JammerConfig = getmissionconfig "CfgEpochClient" >> "CfgJammers" >> (typeof _nearestJammer);
|
||||
_buildingJammerRange = getnumber (_JammerConfig >> "buildingJammerRange");
|
||||
_maxdoors = getnumber (_JammerConfig >> "maxdoors");
|
||||
_maxgates = getnumber (_JammerConfig >> "maxgates");
|
||||
if (_maxdoors == 0) then {_maxdoors = 12};
|
||||
if (_maxgates == 0) then {_maxgates = 10};
|
||||
|
||||
_upgradeto = _upgrade select 0;
|
||||
if (_upgradeto in _doors) then {
|
||||
_countdoors = count (nearestobjects [_nearestJammer,_doors,_buildingJammerRange]);
|
||||
@ -139,17 +133,23 @@ if (_object isKindOf "Constructions_static_F") then {
|
||||
_removedPartCount = 0;
|
||||
if (_canUpgrade) then {
|
||||
{
|
||||
for "_i" from 1 to (_x select 1) do {
|
||||
if ((_x select 0) in (magazines player)) then {
|
||||
player removeMagazine (_x select 0);
|
||||
_removedPartCount = _removedPartCount + 1;
|
||||
_x params ["_part","_req"];
|
||||
if !(_part IsEqualTo "Krypto") then {
|
||||
for "_i" from 1 to _req do {
|
||||
if (_part in (magazines player)) then {
|
||||
player removeMagazine _part;
|
||||
_removedPartCount = _removedPartCount + 1;
|
||||
};
|
||||
};
|
||||
}
|
||||
else {
|
||||
_removedPartCount = _removedPartCount + _req;
|
||||
};
|
||||
} forEach _upgradeParts;
|
||||
|
||||
if (_canUpgradePartCount == _removedPartCount) then {
|
||||
// send to server for upgrade
|
||||
[_object,player,Epoch_upgradeIndex,Epoch_personalToken] remoteExec ["EPOCH_server_upgradeBUILD",2];
|
||||
[_object,player,Epoch_upgradeIndex,Epoch_personalToken,_CryptoCosts] remoteExec ["EPOCH_server_upgradeBUILD",2];
|
||||
Epoch_upgradeIndex = nil;
|
||||
_return = true;
|
||||
["Upgraded", 5] call Epoch_message;
|
||||
|
@ -52,14 +52,17 @@ else {
|
||||
_savecontainer = _sec;
|
||||
};
|
||||
};
|
||||
if (!isnull _savecontainer && !_blocked) then {
|
||||
if (!_blocked) then {
|
||||
_savecontainer spawn {
|
||||
waituntil {!isnull (findDisplay 602)};
|
||||
while {!isnull (findDisplay 602)} do {
|
||||
_stored = [itemcargo _this, magazinecargo _this, backpackcargo _this];
|
||||
waituntil {uisleep 0.5; !(_stored isequalto [itemcargo _this, magazinecargo _this, backpackcargo _this]) || isnull (findDisplay 602)};
|
||||
if !(_stored isequalto [itemcargo _this, magazinecargo _this, backpackcargo _this]) then {
|
||||
_this call EPOCH_interact;
|
||||
call EPOCH_CryptoButtons;
|
||||
if (!isnull _this) then {
|
||||
while {!isnull (findDisplay 602)} do {
|
||||
_stored = [itemcargo _this, magazinecargo _this, backpackcargo _this];
|
||||
waituntil {uisleep 0.5; !(_stored isequalto [itemcargo _this, magazinecargo _this, backpackcargo _this]) || isnull (findDisplay 602)};
|
||||
if !(_stored isequalto [itemcargo _this, magazinecargo _this, backpackcargo _this]) then {
|
||||
_this call EPOCH_interact;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -29,4 +29,9 @@ if (_unit == player) then {
|
||||
1 fadeSound 0.15;
|
||||
};
|
||||
};
|
||||
if (_vehicle getvariable ["Vehicle_Slot","-1"] isequalto "-1") then {
|
||||
if (!(_vehicle iskindof "Paraglide") && !(_vehicle iskindof "Ejection_Seat_Base_F")) then {
|
||||
['WARNING! This is a temp Vehicle and will despawn after Restart!',5] call Epoch_Message;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -0,0 +1,47 @@
|
||||
/*
|
||||
Author: Aaron Clark - EpochMod.com
|
||||
|
||||
Contributors:
|
||||
|
||||
Description:
|
||||
Run scheduled animations on objects
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/functions/EPOCH_fnc_AnimateScheduled.sqf
|
||||
|
||||
Example:
|
||||
[
|
||||
_object, // object
|
||||
[ // animationarray
|
||||
['door1',1],
|
||||
['door2',1],
|
||||
['handle1',1],
|
||||
['handle2',1]
|
||||
],
|
||||
[0,1,0] // delays
|
||||
] remoteexec ['EPOCH_fnc_AnimateScheduled',_player];
|
||||
|
||||
Parameter(s):
|
||||
_this select 0: OBJ - Object for the animations
|
||||
_this select 1: ARRAY - Array of animations and their final state
|
||||
_this select 2: ARRAY - Array of delays between each animation
|
||||
|
||||
Returns:
|
||||
NOTHING
|
||||
*/
|
||||
|
||||
private ["_ins","_target"];
|
||||
params [["_object",objnull], ["_animarray",[]], ["_delays",[]]];
|
||||
if (isnull _object) exitwith {};
|
||||
if !(_animarray isEqualType []) exitwith {};
|
||||
if !(_delays isEqualType []) exitwith {};
|
||||
{
|
||||
if (_x isEqualType []) then {
|
||||
_x params [["_animation",""],["_state",0]];
|
||||
_object animate [_animation,_state];
|
||||
uisleep (_delays param [_foreachindex,0]);
|
||||
};
|
||||
} foreach _animarray;
|
82
Sources/epoch_code/compile/inventory/EPOCH_CryptoButtons.sqf
Normal file
82
Sources/epoch_code/compile/inventory/EPOCH_CryptoButtons.sqf
Normal file
@ -0,0 +1,82 @@
|
||||
/*
|
||||
Author: He-Man - EpochMod.com
|
||||
|
||||
Contributors:
|
||||
|
||||
Description: Adds a Slider into the inventory to put Crypto on the Ground
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/inventory/EPOCH_CryptoButtons.sqf
|
||||
|
||||
Usage:
|
||||
on opened Inventory: call EPOCH_CryptoButtons
|
||||
|
||||
RETURNS: NOTHING
|
||||
*/
|
||||
|
||||
|
||||
private ["_display","_ctrl_ground","_ContainerBG","_PlayerBg","_ContainerBgPos","_ctrl_groundPos","_PlayerBgPos","_KryptoButton","_border","_slider1","_KryptoText"];
|
||||
_display = finddisplay 602;
|
||||
_ctrl_ground = _display displayCtrl 6321;
|
||||
_ContainerBG = _display displayCtrl 1001;
|
||||
_PlayerBg = _display displayCtrl 1002;
|
||||
_ContainerBgPos = ctrlPosition _ContainerBG;
|
||||
_ctrl_groundPos = ctrlPosition _ctrl_ground;
|
||||
_PlayerBgPos = ctrlPosition _PlayerBG;
|
||||
|
||||
_KryptoButton = _display ctrlCreate['RSCButton', -1];
|
||||
_KryptoButton ctrlSetPosition [
|
||||
(_PlayerBgPos select 0)+(_PlayerBgPos select 2) + (_ctrl_groundPos select 3)/2,
|
||||
(_ContainerBgPos select 1) + (_ctrl_groundPos select 3)*1.5 + (_ctrl_groundPos select 3)/2*0,
|
||||
(_ContainerBgPos select 2)/2,
|
||||
(_ctrl_groundPos select 3)*1.5
|
||||
];
|
||||
_KryptoButton ctrlCommit 0;
|
||||
_KryptoButton ctrlSetText 'Crypto to Ground';
|
||||
_KryptoButton ctrlsettextcolor [1,1,0,1];
|
||||
_KryptoButton ctrlEnable true;
|
||||
_KryptoButton ctrlSetEventHandler ["ButtonClick","_slider = ((finddisplay 602) displayCtrl 654001);_sliderPos = sliderPosition _slider;_value = round (epoch_playercrypto * (_sliderPos/10)); if (_value > 0 && _value <= Epoch_PlayerCrypto) then {finddisplay 602 closedisplay 0; [player,_value,Epoch_personalToken] remoteexec ['EPOCH_server_PutCrypto',2]};"];
|
||||
_border = _display ctrlCreate['RscFrame', -1];
|
||||
_border ctrlSetPosition [
|
||||
(_PlayerBgPos select 0)+(_PlayerBgPos select 2) + (_ctrl_groundPos select 3)/2,
|
||||
(_ContainerBgPos select 1) + (_ctrl_groundPos select 3)*1.5 + (_ctrl_groundPos select 3)/2*0,
|
||||
(_ContainerBgPos select 2)/2,
|
||||
(_ctrl_groundPos select 3)*1.5
|
||||
];
|
||||
_border ctrlCommit 0;
|
||||
|
||||
_slider1 = _display ctrlCreate['RscXSliderH', 654001];
|
||||
_slider1 ctrlSetPosition [
|
||||
(_PlayerBgPos select 0)+(_PlayerBgPos select 2) + (_ctrl_groundPos select 3)/2,
|
||||
(_ContainerBgPos select 1) + (_ctrl_groundPos select 3)*1.5*2,
|
||||
(_ContainerBgPos select 2)/2,
|
||||
(_ctrl_groundPos select 3)*0.75
|
||||
];
|
||||
_slider1 ctrlCommit 0;
|
||||
|
||||
_KryptoText = _display ctrlCreate['RSCText', 654002];
|
||||
_KryptoText ctrlSetPosition [
|
||||
(_PlayerBgPos select 0)+(_PlayerBgPos select 2) + (_ctrl_groundPos select 3)/2,
|
||||
(_ContainerBgPos select 1) + (_ctrl_groundPos select 3)*1.5*2 + (_ctrl_groundPos select 3)*0.75,
|
||||
(_ContainerBgPos select 2)/2,
|
||||
(_ctrl_groundPos select 3)*0.75
|
||||
];
|
||||
_KryptoText ctrlSetBackgroundColor [0,0,0,1];
|
||||
|
||||
[] spawn {
|
||||
disableSerialization;
|
||||
_display = finddisplay 602;
|
||||
_slider1 = (_display displayCtrl 654001);
|
||||
_KryptoText = (_display displayCtrl 654002);
|
||||
_slider1 sliderSetPosition 0;
|
||||
while {!isNull _display} do {
|
||||
_sliderPos = sliderPosition _slider1;
|
||||
_value = round (epoch_playercrypto * (_sliderPos/10));
|
||||
_KryptoText ctrlSetText format['Put %1 Crypto',_value];
|
||||
_KryptoText ctrlCommit 0;
|
||||
uiSleep 0.1;
|
||||
};
|
||||
};
|
@ -62,6 +62,10 @@ if !(alive player && alive _playerObject && !isPlayer _playerObject) then {
|
||||
if !(isNil "_playerBloodPKey") then {_playerBloodPKeyFinal = _playerBloodPKey};
|
||||
missionNamespace setVariable [_playerBloodPKeyFinal, 120];
|
||||
|
||||
_playerToxicityKeyFinal = "EPOCH_playerToxicity";
|
||||
if !(isNil "_playerToxicityKey") then {_playerToxicityKeyFinal = _playerToxicityKey};
|
||||
missionNamespace setVariable [_playerToxicityKeyFinal, 0];
|
||||
|
||||
// Wait until _playerObject is local before adding Rating and EH's
|
||||
waituntil {local _playerObject};
|
||||
|
||||
|
@ -31,7 +31,7 @@ if (!isNull _cursorTarget && {!(EPOCH_target isEqualTo _cursorTarget)}) then {
|
||||
if (_cursorTarget isKindOf "AllVehicles") then {
|
||||
_currentTarget = _cursorTarget;
|
||||
} else {
|
||||
if (_cursorTarget isKindOf "Constructions_modular_F" || _cursorTarget isKindOf "Constructions_static_F") then {
|
||||
if (_cursorTarget isKindOf "Constructions_modular_F" || {_cursorTarget isKindOf "Constructions_static_F"} || {(typeof _cursorTarget) in (call Epoch_JammerClasses)}) then {
|
||||
_currentTargetMode = 1;
|
||||
_currentTarget = _cursorTarget;
|
||||
};
|
||||
|
@ -206,7 +206,6 @@ missionNamespace setVariable [_playerSpawnArrayKey, _playerSpawnArray];
|
||||
} forEach assignedItems player;
|
||||
|
||||
// lootBubble Init
|
||||
_buildingJammerRange = ["CfgEpochClient", "buildingJammerRange", 75] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_masterConfig = 'CfgBuildingLootPos' call EPOCH_returnConfig;
|
||||
|
||||
_lootClasses = [];
|
||||
@ -276,7 +275,7 @@ _lootBubble = {
|
||||
_objects resize 4;
|
||||
};
|
||||
// diag_log format["DEBUG: loot objects %1",_objects];
|
||||
_jammer = (_lootLoc nearObjects ["PlotPole_EPOCH", _buildingJammerRange + 50]) + (_lootLoc nearObjects ["ProtectionZone_Invisible_F", 25]);
|
||||
_jammer = ((nearestObjects [_lootLoc, call EPOCH_JammerClasses, ((call EPOCH_MaxJammerRange) + 50)]) select {_x distance _lootLoc < ((getnumber (getmissionconfig "cfgEpochClient" >> "CfgJammers" >> (typeof _x) >> "buildingJammerRange"))+50)}) + (_lootLoc nearObjects ["ProtectionZone_Invisible_F", 25]);
|
||||
if (!(_objects isEqualTo[]) && (_jammer isEqualTo[])) then {
|
||||
_building = selectRandom _objects;
|
||||
if (_building getvariable ["EPOCH_Skiploot",false]) exitwith {};
|
||||
|
@ -1,17 +1,27 @@
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_getCrypto"];
|
||||
private ["_nearCrypto","_CryptoItems","_getCrypto","_addmoney"];
|
||||
//[[[end]]]
|
||||
if !(isNil "EPOCH_takeCryptoLock") exitWith {};
|
||||
EPOCH_takeCryptoLock = true;
|
||||
if (!isNull _this) then {
|
||||
_getCrypto = _this getVariable["Crypto", 0];
|
||||
if (_getCrypto > 0) then {
|
||||
[player, Epoch_personalToken, _this] remoteExec ["EPOCH_server_takeCrypto",2];
|
||||
[format["You found %1 Crypto", _getCrypto], 5] call Epoch_message;
|
||||
} else {
|
||||
["No Crypto found", 5] call Epoch_message;
|
||||
_nearCrypto = (nearestobjects [player,[],5]) select {(_x getvariable ["Crypto",0]) > 0};
|
||||
_CryptoItems = [];
|
||||
_getCrypto = 0;
|
||||
{
|
||||
_addmoney = (_x getvariable ['Crypto',0]);
|
||||
if (_addmoney > 0) then {
|
||||
_CryptoItems pushback _x;
|
||||
};
|
||||
_getCrypto = _getCrypto + _addmoney;
|
||||
} foreach _nearCrypto;
|
||||
|
||||
if (_getCrypto > 0) then {
|
||||
[player, Epoch_personalToken, _CryptoItems] remoteExec ["EPOCH_server_takeCrypto",2];
|
||||
[format['You found %1 Crypto', _getCrypto], 5] call Epoch_message;
|
||||
}
|
||||
else {
|
||||
['No Crypto found', 5] call Epoch_message;
|
||||
};
|
||||
|
||||
[] spawn{
|
||||
uiSleep 2;
|
||||
EPOCH_takeCryptoLock = nil;
|
||||
|
@ -13,10 +13,12 @@
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/vehicles/EPOCH_client_repairVehicle.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_currentDMG"];
|
||||
private ["_currentDMG","_god"];
|
||||
//[[[end]]]
|
||||
params ["_vehicle","_value"];
|
||||
if (local _vehicle) then {
|
||||
_god = !(isDamageAllowed _vehicle);
|
||||
if (_god) then {_vehicle allowdamage true;};
|
||||
{
|
||||
if ((_x select 0) isequaltype 0) then {
|
||||
_vehicle setHitIndex [_x select 0, _x select 1];
|
||||
@ -25,6 +27,7 @@ if (local _vehicle) then {
|
||||
_vehicle setHitPointDamage [_x select 0, _x select 1];
|
||||
};
|
||||
} foreach _value;
|
||||
if (_god) then {_vehicle allowdamage false;};
|
||||
|
||||
if !({_x > 0} count ((getAllHitPointsDamage _vehicle) select 2) > 0) then {
|
||||
[_vehicle,["ALL",0],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];
|
||||
|
@ -0,0 +1,35 @@
|
||||
/*
|
||||
Author: He-Man - EpochMod.com
|
||||
|
||||
Contributors:
|
||||
|
||||
Description:
|
||||
change license plates from Vehicles
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/vehicles/EPOCH_vehicle_ChangeLicensePlate.sqf
|
||||
*/
|
||||
|
||||
private ["_display","_maintxt","_txt","_bottomtxt","_savebutton"];
|
||||
params ['_vehicle',['_player',player]];
|
||||
if (isnull _vehicle) exitwith {};
|
||||
if (_player distance _vehicle > 10) exitwith {};
|
||||
if (!alive _vehicle) exitwith {};
|
||||
if (!local _vehicle) exitwith {
|
||||
['Go in as driver first',5] call Epoch_Message;
|
||||
};
|
||||
Epoch_PlateVehicle = _vehicle;
|
||||
createdialog 'EPOCH_SimpleInput';
|
||||
waituntil {!isnull (finddisplay -1200)};
|
||||
disableSerialization;
|
||||
_display = (finddisplay -1200);
|
||||
_maintxt = _display displayctrl 20;
|
||||
_txt = _display displayctrl 23;
|
||||
_bottomtxt = _display displayctrl 22;
|
||||
_savebutton = _display displayctrl 30;
|
||||
_maintxt ctrlSetText (format ['Change Licenseplate for %1',(typeof _vehicle) call Epoch_ItemDisplayName]);
|
||||
_txt ctrlSetText 'New Plate:';
|
||||
_savebutton buttonSetAction 'if (player distance Epoch_PlateVehicle > 10) exitwith {}; Epoch_PlateVehicle setPlateNumber (ctrlText (finddisplay -1200 displayctrl 21)); closedialog 0; Epoch_PlateVehicle call EPOCH_interact; Epoch_PlateVehicle = nil';
|
@ -13,7 +13,7 @@
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/init/both_init.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_communityStatsInit","_customVarsInit","_dynSimToggle"];
|
||||
private ["_communityStatsInit","_customVarsInit","_dynSimToggle","_JammerConfig","_JammerClass","_preview"];
|
||||
//[[[end]]]
|
||||
|
||||
// Check if Advanced Vehicle Repair is enabled
|
||||
@ -71,3 +71,34 @@ EPOCH_group_upgrade_lvl = ["CfgEpochClient", "group_upgrade_lvl", [4,"100",6,"30
|
||||
// disable remote sensors on server and client as all Epoch AI is local to the side controlling it.
|
||||
disableRemoteSensors (["CfgEpochClient", "disableRemoteSensors", true] call EPOCH_fnc_returnConfigEntryV2);
|
||||
|
||||
// preload multiple used Jammer Configs
|
||||
EPOCH_JammerClasses = [];
|
||||
EPOCH_JammerGhosts = [];
|
||||
EPOCH_MaxJammerRange = 75;
|
||||
_JammerConfig = (getmissionconfig "CfgEpochClient" >> "CfgJammers");
|
||||
if !(isclass _JammerConfig) exitwith {
|
||||
diag_log "EPOCH_debug: Error: No Jammerclasses defined in CfgEpochClient";
|
||||
};
|
||||
{
|
||||
private ["_JammerRangeX"];
|
||||
EPOCH_JammerClasses pushback (configname _x);
|
||||
_JammerRangeX = getnumber (_x >> "buildingJammerRange");
|
||||
if (_JammerRangeX > EPOCH_MaxJammerRange) then {
|
||||
EPOCH_MaxJammerRange = _JammerRangeX;
|
||||
};
|
||||
} foreach ("true" configClasses _JammerConfig);
|
||||
if (EPOCH_JammerClasses isEqualTo []) then {
|
||||
diag_log "EPOCH_debug: Error: Jammerconfig in CfgEpochClient seems to be wrong";
|
||||
};
|
||||
{
|
||||
_JammerClass = _x;
|
||||
{
|
||||
_preview = gettext (getmissionconfig "CfgBaseBuilding" >> _JammerClass >> _x);
|
||||
if !(_preview isEqualTo "" || _preview isEqualTo _JammerClass) then {
|
||||
EPOCH_JammerGhosts pushBackUnique _preview;
|
||||
};
|
||||
} foreach ["GhostPreview","simulClass"];
|
||||
} foreach EPOCH_JammerClasses;
|
||||
EPOCH_JammerClasses = compilefinal (str EPOCH_JammerClasses);
|
||||
EPOCH_MaxJammerRange = compilefinal (str EPOCH_MaxJammerRange);
|
||||
EPOCH_JammerGhosts = compilefinal (str EPOCH_JammerGhosts)
|
@ -49,7 +49,7 @@ class CfgActionMenu
|
||||
dyna_deathMarkerAvail = "!(dyna_deathMarker isEqualTo [])";
|
||||
dyna_mapDeathMarker = "(((getArray(('CfgMarkerSets' call EPOCH_returnConfig) >> 'DeathMarker' >> 'markerArray') select 0) select 0) in allMapMarkers)";
|
||||
|
||||
dyna_AtHome = "call {_config = 'CfgEpochClient' call EPOCH_returnConfig;_buildingJammerRange = getNumber(_config >> 'buildingJammerRange');_nearjammers = nearestobjects [player,['Plotpole_EPOCH'],_buildingJammerRange];if (_nearjammers isEqualTo []) exitwith {false};_nearestJammer = _nearjammers select 0;((_nearestJammer getVariable['BUILD_OWNER', '-1']) in[getPlayerUID player, Epoch_my_GroupUID])}";
|
||||
dyna_AtHome = "call {_nearjammers = (nearestObjects[player, call EPOCH_JammerClasses, call EPOCH_MaxJammerRange]) select {player distance _x < (getnumber (getmissionconfig 'cfgEpochClient' >> 'CfgJammers' >> (typeof _x) >> 'buildingJammerRange'))};if (_nearjammers isEqualTo []) exitwith {false};_nearestJammer = _nearjammers select 0;((_nearestJammer getVariable['BUILD_OWNER', '-1']) in[getPlayerUID player, Epoch_my_GroupUID])}";
|
||||
dyna_Watersource = "call {_nearObjects = nearestObjects [player, [], 2];_check = 'water';_ok = false;{if (alive _x) then {_ok = [_x, _check] call EPOCH_worldObjectType;};if (_ok) exitWith {};} forEach _nearObjects;_ok}";
|
||||
};
|
||||
|
||||
|
@ -78,7 +78,7 @@ class tra_shop
|
||||
|
||||
class player_takeCrypto
|
||||
{
|
||||
condition = "dyna_isDeadPlayer || (dyna_cursorTarget getVariable [""Crypto"",0]) > 0";
|
||||
condition = "dyna_isDeadPlayer || !(((nearestobjects [player,[],5]) select {(_x getvariable ['Crypto',0]) > 0}) isEqualTo [])";
|
||||
action = "dyna_cursorTarget call EPOCH_takeCrypto;";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\krypto.paa";
|
||||
tooltip = "Take Crypto";
|
||||
@ -101,14 +101,14 @@ class player_trade_accept
|
||||
//User action replacement
|
||||
class maintain_jammer
|
||||
{
|
||||
condition = "dyna_cursorTargetType isEqualTo 'PlotPole_EPOCH' && (damage dyna_cursorTarget < 1)";
|
||||
condition = "dyna_cursorTargetType in (call EPOCH_JammerClasses) && (damage dyna_cursorTarget < 1)";
|
||||
action = "dyna_cursorTarget call EPOCH_maintainIT;";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_maintain.paa";
|
||||
tooltip = "Maintain";
|
||||
};
|
||||
class select_jammer
|
||||
{
|
||||
condition = "dyna_cursorTargetType isEqualTo 'PlotPole_EPOCH' && (damage dyna_cursorTarget < 1)";
|
||||
condition = "dyna_cursorTargetType in (call EPOCH_JammerClasses) && (damage dyna_cursorTarget < 1)";
|
||||
action = "[dyna_cursorTarget,player,Epoch_personalToken] remoteExec [""EPOCH_server_makeSP"",2];";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\spawnpoint.paa";
|
||||
tooltip = "Make Spawnpoint";
|
||||
@ -131,14 +131,14 @@ class lock_lockbox
|
||||
};
|
||||
class unlock_safe
|
||||
{
|
||||
condition = "(dyna_cursorTargetType in ['Safe_EPOCH','SafeProxy_EPOCH']) && (dyna_cursorTarget getVariable ['EPOCH_Locked',false])";
|
||||
condition = "(dyna_cursorTargetType in ['Safe_EPOCH','SafeProxy_EPOCH','GunSafe_EPOCH']) && (dyna_cursorTarget getVariable ['EPOCH_Locked',false])";
|
||||
action = "dyna_cursorTarget call Epoch_secureStorageHandler";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\pad_can_unlock.paa";
|
||||
tooltip = "Unlock Safe";
|
||||
};
|
||||
class lock_safe
|
||||
{
|
||||
condition = "(dyna_cursorTargetType in ['Safe_EPOCH','SafeProxy_EPOCH']) && !(dyna_cursorTarget getVariable ['EPOCH_Locked',false])";
|
||||
condition = "(dyna_cursorTargetType in ['Safe_EPOCH','SafeProxy_EPOCH','GunSafe_EPOCH']) && !(dyna_cursorTarget getVariable ['EPOCH_Locked',false])";
|
||||
action = "dyna_cursorTarget call Epoch_secureStorageHandler";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\pad_cannot_lock.paa";
|
||||
tooltip = "Lock Safe";
|
||||
@ -154,7 +154,7 @@ class pack_lockbox
|
||||
};
|
||||
class pack_safe
|
||||
{
|
||||
condition = "(dyna_cursorTargetType in ['Safe_EPOCH','SafeProxy_EPOCH']) && (dyna_cursorTarget getVariable ['EPOCH_Locked',false])";
|
||||
condition = "(dyna_cursorTargetType in ['Safe_EPOCH','SafeProxy_EPOCH','GunSafe_EPOCH']) && (dyna_cursorTarget getVariable ['EPOCH_Locked',false])";
|
||||
action = "[dyna_cursorTarget,player,Epoch_personalToken] remoteExec ['EPOCH_server_packStorage',2];";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_pack.paa";
|
||||
tooltip = "Pack Safe";
|
||||
@ -530,6 +530,13 @@ class VehMaintanance
|
||||
tooltipcode = "format ['Upgrade to %1 - %2',(Ignatz_VehicleUpgradeArray select 4 select 2),(Ignatz_VehicleUpgradeArray select 4 select 3)]";
|
||||
};
|
||||
};
|
||||
class ChangePlate
|
||||
{
|
||||
condition = "{dyna_cursorTarget iskindof _x} count ['Van_01_base_F','Van_02_base_F','SUV_01_base_F','Hatchback_01_base_F','Offroad_01_base_F','Offroad_02_base_F'] > 0";
|
||||
action = "[dyna_cursorTarget,player] spawn EPOCH_vehicle_ChangeLicensePlate";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Epoch_LicensePlate.paa";
|
||||
tooltip = "Change License Plate";
|
||||
};
|
||||
};
|
||||
|
||||
//Groups
|
||||
|
@ -187,6 +187,7 @@ class CfgBaseBuilding
|
||||
};
|
||||
class PlotPole_EPOCH : Default
|
||||
{
|
||||
upgradeBuilding[] = {{"PlotPole_M_EPOCH",{{"ItemCorrugatedLg",5},{"EnergyPackLg",2},{"CircuitParts",3},{"ItemBattery",3},{"ItemPipe",1}}}};
|
||||
removeParts[] = {{"KitPlotPole",1}};
|
||||
GhostPreview = "PlotPole_EPOCH";
|
||||
staticClass = "PlotPole_EPOCH";
|
||||
@ -195,6 +196,63 @@ class CfgBaseBuilding
|
||||
};
|
||||
class PlotPole_SIM_EPOCH : PlotPole_EPOCH
|
||||
{
|
||||
upgradeBuilding[] = {};
|
||||
removeParts[] = {};
|
||||
};
|
||||
class PlotPole_M_EPOCH : Default
|
||||
{
|
||||
upgradeBuilding[] = {{"PlotPole_L_EPOCH",{{"ItemCorrugatedLg",5},{"EnergyPackLg",2},{"CircuitParts",3},{"ItemBattery",3},{"ItemPipe",1}}}};
|
||||
removeParts[] = {{"KitPlotPole_M",1}};
|
||||
GhostPreview = "PlotPole_M_EPOCH";
|
||||
staticClass = "PlotPole_M_EPOCH";
|
||||
simulClass = "PlotPole_M_SIM_EPOCH";
|
||||
bypassJammer = 1;
|
||||
};
|
||||
class PlotPole_M_SIM_EPOCH : PlotPole_M_EPOCH
|
||||
{
|
||||
upgradeBuilding[] = {};
|
||||
removeParts[] = {};
|
||||
};
|
||||
class PlotPole_L_EPOCH : Default
|
||||
{
|
||||
upgradeBuilding[] = {{"PlotPole_XL_EPOCH",{{"ItemCorrugatedLg",5},{"EnergyPackLg",2},{"CircuitParts",3},{"ItemBattery",3},{"ItemPipe",1}}}};
|
||||
removeParts[] = {{"KitPlotPole_L",1}};
|
||||
GhostPreview = "PlotPole_L_EPOCH";
|
||||
staticClass = "PlotPole_L_EPOCH";
|
||||
simulClass = "PlotPole_L_SIM_EPOCH";
|
||||
bypassJammer = 1;
|
||||
};
|
||||
class PlotPole_L_SIM_EPOCH : PlotPole_L_EPOCH
|
||||
{
|
||||
upgradeBuilding[] = {};
|
||||
removeParts[] = {};
|
||||
};
|
||||
class PlotPole_XL_EPOCH : Default
|
||||
{
|
||||
upgradeBuilding[] = {{"PlotPole_XXL_EPOCH",{{"ItemCorrugatedLg",5},{"EnergyPackLg",2},{"CircuitParts",3},{"ItemBattery",3},{"ItemPipe",1}}}};
|
||||
removeParts[] = {{"KitPlotPole_XL",1}};
|
||||
GhostPreview = "PlotPole_XL_EPOCH";
|
||||
staticClass = "PlotPole_XL_EPOCH";
|
||||
simulClass = "PlotPole_XL_SIM_EPOCH";
|
||||
bypassJammer = 1;
|
||||
};
|
||||
class PlotPole_XL_SIM_EPOCH : PlotPole_XL_EPOCH
|
||||
{
|
||||
upgradeBuilding[] = {};
|
||||
removeParts[] = {};
|
||||
};
|
||||
class PlotPole_XXL_EPOCH : Default
|
||||
{
|
||||
upgradeBuilding[] = {};
|
||||
removeParts[] = {{"KitPlotPole_XXL",1}};
|
||||
GhostPreview = "PlotPole_XXL_EPOCH";
|
||||
staticClass = "PlotPole_XXL_EPOCH";
|
||||
simulClass = "PlotPole_XXL_SIM_EPOCH";
|
||||
bypassJammer = 1;
|
||||
};
|
||||
class PlotPole_XXL_SIM_EPOCH : PlotPole_XXL_EPOCH
|
||||
{
|
||||
upgradeBuilding[] = {};
|
||||
removeParts[] = {};
|
||||
};
|
||||
class WoodRamp_EPOCH : Default
|
||||
@ -1356,6 +1414,36 @@ class CfgBaseBuilding
|
||||
{
|
||||
returnOnPack[] = {};
|
||||
};
|
||||
class Safe_s_EPOCH : Default
|
||||
{
|
||||
returnOnPack[] = {{"ItemSafe_s",1}};
|
||||
simulClass = "Safe_s_SIM_EPOCH";
|
||||
staticClass = "Safe_s_EPOCH";
|
||||
weaponHolderProxy = "SafeProxy_EPOCH";
|
||||
GhostPreview = "Safe_s_EPOCH";
|
||||
bypassJammer = 1;
|
||||
limitNearby = 2;
|
||||
isSecureStorage = 1;
|
||||
};
|
||||
class Safe_s_SIM_EPOCH : Safe_EPOCH
|
||||
{
|
||||
returnOnPack[] = {};
|
||||
};
|
||||
class GunSafe_EPOCH : Default
|
||||
{
|
||||
returnOnPack[] = {{"ItemGunSafe",1}};
|
||||
simulClass = "GunSafe_SIM_EPOCH";
|
||||
staticClass = "GunSafe_EPOCH";
|
||||
weaponHolderProxy = "SafeProxy_EPOCH";
|
||||
GhostPreview = "GunSafe_EPOCH";
|
||||
bypassJammer = 1;
|
||||
limitNearby = 2;
|
||||
isSecureStorage = 1;
|
||||
};
|
||||
class GunSafe_SIM_EPOCH : GunSafe_EPOCH
|
||||
{
|
||||
returnOnPack[] = {};
|
||||
};
|
||||
class Jack_EPOCH : Default
|
||||
{
|
||||
simulClass = "Jack_SIM_EPOCH";
|
||||
|
@ -171,6 +171,7 @@ class CfgClientFunctions
|
||||
class fnc_setVariableLimited {};
|
||||
class fnc_createLocalMarkerSet {};
|
||||
class fnc_deleteLocalMarkerSet {};
|
||||
class fnc_AnimateScheduled {};
|
||||
};
|
||||
class environment
|
||||
{
|
||||
@ -192,6 +193,7 @@ class CfgClientFunctions
|
||||
class client_VehicleMaintananceDo {};
|
||||
class vehicle_checkTurretAmmo {};
|
||||
class vehicle_removeTurretAmmo {};
|
||||
class vehicle_ChangeLicensePlate {};
|
||||
};
|
||||
class missions
|
||||
{
|
||||
@ -213,6 +215,7 @@ class CfgClientFunctions
|
||||
class equip {};
|
||||
class itemTypeSlot {};
|
||||
class usedItemRepack {};
|
||||
class CryptoButtons {};
|
||||
};
|
||||
class servicepoint
|
||||
{
|
||||
|
@ -14,7 +14,7 @@
|
||||
/*[[[cog from arma_config_tools import *; json_to_arma()]]]*/
|
||||
class CfgEpochClient
|
||||
{
|
||||
epochVersion = "1.3.0";
|
||||
epochVersion = "1.3.1";
|
||||
ArmAVersion = 176;
|
||||
debug = "true"; // true = enable extra rpt debug lines, false to disable
|
||||
|
||||
@ -40,24 +40,55 @@ class CfgEpochClient
|
||||
restrictedLocations[] = {"NameCityCapital"};
|
||||
restrictedLocationsRange = 300;
|
||||
buildingRequireJammer = 1; //1 = require jammer to build
|
||||
buildingJammerRange = 75; // jammer range in meters
|
||||
buildingJammerRange = 125; // Unused by Epoch, but leave it to prevent issues with custom scripts (should be set to the max possible JammerRange from cfgJammers)
|
||||
jammerPerGroup = 1; // allowed number of jammers per group.
|
||||
jammerGLOnly = 1; // allow only group leader to place Jammer
|
||||
minJammerDistance = 650; // min distance to next Jammer
|
||||
maxBuildingHeight = 100; // Max Height, building is allowed.
|
||||
buildingCountLimit = 200; //overall building limit in range of jammer (overridden if "useGroupCountLimits=1")
|
||||
storageCountLimit = 100; //overall storage limit in range of jammer (triggers only if "splitCountLimits=1" & "useGroupCountLimits=0")
|
||||
splitCountLimits = 0; //1 = distinguish buildingCountLimit from storageCountLimit (ex.: buildingCountLimit=100, storageCountLimit=100 >> you can build 100 baseparts AND additional 100 storage objects like safes, lockboxes...)
|
||||
useGroupCountLimits = 1; //1 = enable leader and member counts (doesn´t affect "splitCountLimits")
|
||||
buildingCountLeader = 250; //ignore if "useGroupCountLimits=0"
|
||||
buildingCountPerMember = 5; //ignore if "useGroupCountLimits=0"
|
||||
storageCountLeader = 10; //ignore if "splitCountLimits=0" & "useGroupCountLimits=0"
|
||||
storageCountPerMember = 5; //ignore if "splitCountLimits=0" & "useGroupCountLimits=0"
|
||||
maxdoors = 10; // Max allowed doors per Group
|
||||
maxgates = 5; // Max allowed Gates per Group
|
||||
maxCams = 2; // Max allowed BaseCams per Group
|
||||
|
||||
MaxBuildingTilt = 180; // Max degrees players can tilt building elements
|
||||
|
||||
class CfgJammers {
|
||||
class PlotPole_EPOCH // Jammer Classname
|
||||
{
|
||||
buildingJammerRange = 75; // jammer range in meters
|
||||
buildingCountLimit = 200; // Max Building Elements per Base
|
||||
storageCountLimit = 100; // Max Storage Elements per Base
|
||||
buildingCountPerMember = 5; // Additional Building elements per Member
|
||||
storageCountPerMember = 5; // Additional Storage elements per Member
|
||||
maxdoors = 10; // Max Doors per Base
|
||||
maxgates = 5; // Max Gates per Base
|
||||
maxCams = 2; // Max Cams per Base
|
||||
};
|
||||
class PlotPole_M_EPOCH : PlotPole_EPOCH // inherits from "PlotPole_EPOCH" (not defined values will be taken from PlotPole_EPOCH)
|
||||
{
|
||||
buildingJammerRange = 100; // jammer range in meters
|
||||
buildingCountLimit = 215; // Max Building Elements per Base
|
||||
storageCountLimit = 115; // Max Storage Elements per Base
|
||||
};
|
||||
class PlotPole_L_EPOCH : PlotPole_M_EPOCH
|
||||
{
|
||||
buildingJammerRange = 125; // jammer range in meters
|
||||
buildingCountLimit = 230; // Max Building Elements per Base
|
||||
storageCountLimit = 130; // Max Storage Elements per Base
|
||||
};
|
||||
class PlotPole_XL_EPOCH : PlotPole_L_EPOCH
|
||||
{
|
||||
buildingJammerRange = 150; // jammer range in meters
|
||||
buildingCountLimit = 245; // Max Building Elements per Base
|
||||
storageCountLimit = 145; // Max Storage Elements per Base
|
||||
};
|
||||
class PlotPole_XXL_EPOCH : PlotPole_XL_EPOCH
|
||||
{
|
||||
buildingJammerRange = 175; // jammer range in meters
|
||||
buildingCountLimit = 260; // Max Building Elements per Base
|
||||
storageCountLimit = 160; // Max Storage Elements per Base
|
||||
};
|
||||
};
|
||||
StorageClasses[] = {"Buildable_Storage","Buildable_Storage_SIM","Buildable_Storage_Ghost","Constructions_lockedstatic_F","Secure_Storage_Temp"};
|
||||
BuildingClasses[] = {"Constructions_static_F","Constructions_foundation_F","Const_Ghost_EPOCH"};
|
||||
DoorClasses[] = {"WoodLargeWallDoorL_EPOCH","WoodWall4_EPOCH","CinderWallDoorwHatch_EPOCH","WoodStairs3_EPOCH","JailWallDoor_EPOCH"};
|
||||
GateClasses[] = {"CinderWallGarage_EPOCH","WoodWallGarage_EPOCH","MetalWallGarage_EPOCH"};
|
||||
|
||||
AtmBlockedAtPlot = "true"; // Block ATM's in Plotpole-Range
|
||||
disableRemoteSensors = "true"; // disableRemoteSensors true/false
|
||||
|
@ -249,6 +249,14 @@ class CfgItemInteractions
|
||||
{
|
||||
buildClass = "Safe_SIM_EPOCH";
|
||||
};
|
||||
class ItemSafe_s : Item_Build_base
|
||||
{
|
||||
buildClass = "Safe_s_SIM_EPOCH";
|
||||
};
|
||||
class ItemGunSafe : Item_Build_base
|
||||
{
|
||||
buildClass = "GunSafe_SIM_EPOCH";
|
||||
};
|
||||
class JackKit : Item_Build_base
|
||||
{
|
||||
buildClass = "Jack_SIM_EPOCH";
|
||||
@ -499,6 +507,22 @@ class CfgItemInteractions
|
||||
{
|
||||
buildClass = "PlotPole_SIM_EPOCH";
|
||||
};
|
||||
class KitPlotPole_M : Item_Build_base
|
||||
{
|
||||
buildClass = "PlotPole_M_SIM_EPOCH";
|
||||
};
|
||||
class KitPlotPole_L : Item_Build_base
|
||||
{
|
||||
buildClass = "PlotPole_L_SIM_EPOCH";
|
||||
};
|
||||
class KitPlotPole_XL : Item_Build_base
|
||||
{
|
||||
buildClass = "PlotPole_XL_SIM_EPOCH";
|
||||
};
|
||||
class KitPlotPole_XXL : Item_Build_base
|
||||
{
|
||||
buildClass = "PlotPole_XXL_SIM_EPOCH";
|
||||
};
|
||||
class KitCinderWall : Item_Build_base
|
||||
{
|
||||
buildClass = "CinderWallHalf_EPOCH";
|
||||
|
@ -726,7 +726,6 @@ class CfgItemSort
|
||||
"20Rnd_762x51_DMR",
|
||||
"20Rnd_762x51_FNFAL",
|
||||
"30Rnd_556x45_G36",
|
||||
"a2_akyellow_mag_EPOCH",
|
||||
"10Rnd_303",
|
||||
"100Rnd_556x45_BetaCMag",
|
||||
"10Rnd_762x54_SVD",
|
||||
@ -1132,6 +1131,10 @@ class CfgItemSort
|
||||
"KitWoodFoundation",
|
||||
"KitFoundation",
|
||||
"KitPlotPole",
|
||||
"KitPlotPole_M",
|
||||
"KitPlotPole_L",
|
||||
"KitPlotPole_XL",
|
||||
"KitPlotPole_XXL",
|
||||
"KitCinderWall",
|
||||
"KitSolarGen",
|
||||
"KitSolarCharger",
|
||||
@ -1152,6 +1155,8 @@ class CfgItemSort
|
||||
"ItemLockbox",
|
||||
"Pelt_EPOCH",
|
||||
"ItemSafe",
|
||||
"ItemSafe_s",
|
||||
"ItemGunSafe",
|
||||
"ItemSolar",
|
||||
"ItemCables",
|
||||
"ItemBattery",
|
||||
|
@ -330,6 +330,16 @@ class CfgPricing
|
||||
price = 1250;
|
||||
tax = 0.5;
|
||||
};
|
||||
class ItemSafe_s
|
||||
{
|
||||
price = 1250;
|
||||
tax = 0.5;
|
||||
};
|
||||
class ItemGunSafe
|
||||
{
|
||||
price = 1250;
|
||||
tax = 0.5;
|
||||
};
|
||||
class ItemCompass
|
||||
{
|
||||
price = 3;
|
||||
@ -2766,11 +2776,6 @@ class CfgPricing
|
||||
price = 5;
|
||||
tax = 0.9;
|
||||
};
|
||||
class a2_akyellow_mag_EPOCH
|
||||
{
|
||||
price = 5;
|
||||
tax = 0.9;
|
||||
};
|
||||
class 10Rnd_303
|
||||
{
|
||||
price = 5;
|
||||
@ -3434,6 +3439,22 @@ class CfgPricing
|
||||
{
|
||||
price = 250;
|
||||
};
|
||||
class KitPlotPole_M
|
||||
{
|
||||
price = 350;
|
||||
};
|
||||
class KitPlotPole_L
|
||||
{
|
||||
price = 450;
|
||||
};
|
||||
class KitPlotPole_XL
|
||||
{
|
||||
price = 550;
|
||||
};
|
||||
class KitPlotPole_XXL
|
||||
{
|
||||
price = 650;
|
||||
};
|
||||
class KitSolarGen
|
||||
{
|
||||
price = 325;
|
||||
|
@ -26,6 +26,11 @@ class CfgRemoteExec
|
||||
{
|
||||
mode = 1;
|
||||
jip = 0;
|
||||
class EPOCH_server_PutCrypto
|
||||
{
|
||||
allowedTargets=2;
|
||||
jip = 0;
|
||||
};
|
||||
class EPOCH_server_SetFinalPlayerPos
|
||||
{
|
||||
allowedTargets=2;
|
||||
|
@ -13,7 +13,7 @@
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_bases/EPOCH_server_loadBuildings.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_Simulated","_DamageAllowed","_ExceptedBaseObjects","_IndestructibleBaseObjects","_UseIndestructible","_VAL","_ammoClass","_ammoObj","_anims","_animsData","_arr","_arrCount","_baseObj","_buildingJammerRange","_cfgBaseBuilding","_cfgEpochClient","_class","_color","_damage","_location","_marker","_maxTTL","_owner","_response","_serverSettingsConfig","_storageSlot","_textureSlot","_ttl","_vehHiveKey","_worldspace"];
|
||||
private ["_Simulated","_DamageAllowed","_ExceptedBaseObjects","_IndestructibleBaseObjects","_UseIndestructible","_VAL","_ammoClass","_ammoObj","_anims","_animsData","_arr","_arrCount","_baseObj","_cfgBaseBuilding","_class","_color","_damage","_location","_marker","_maxTTL","_owner","_response","_serverSettingsConfig","_storageSlot","_textureSlot","_ttl","_vehHiveKey","_worldspace"];
|
||||
//[[[end]]]
|
||||
EPOCH_BaseCams = [];
|
||||
EPOCH_Plotpoles = [];
|
||||
@ -27,10 +27,7 @@ _UseDeSimulateObjects = [_serverSettingsConfig, "UseDeSimulateObjects", true] ca
|
||||
_DeSimulateObjects = [_serverSettingsConfig, "DeSimulateObjects", []] call EPOCH_fnc_returnConfigEntry;
|
||||
_ExceptedDeSymObjects = [_serverSettingsConfig, "ExceptedDeSymObjects", []] call EPOCH_fnc_returnConfigEntry;
|
||||
_DisableDoorsOnObj = [_serverSettingsConfig, "DisableDoorsOnObj", []] call EPOCH_fnc_returnConfigEntry;
|
||||
_cfgEpochClient = 'CfgEpochClient' call EPOCH_returnConfig;
|
||||
_cfgBaseBuilding = 'CfgBaseBuilding' call EPOCH_returnConfig;
|
||||
_buildingJammerRange = getNumber(_cfgEpochClient >> "buildingJammerRange");
|
||||
if (_buildingJammerRange == 0) then { _buildingJammerRange = 75; };
|
||||
|
||||
_VAL = ["", [], "", "", 0, []];
|
||||
|
||||
@ -154,7 +151,7 @@ for "_i" from 0 to _this do {
|
||||
};
|
||||
|
||||
// Handle Jammers and create marker if EPOCH_SHOW_JAMMERS set true.
|
||||
if (_class in ["PlotPole_EPOCH","BaseCam_EPOCH"]) then {
|
||||
if (_class in ((call EPOCH_JammerClasses) + ["BaseCam_EPOCH"])) then {
|
||||
if (_owner != "-1") then {
|
||||
_baseObj setVariable ["BUILD_OWNER", _owner, true];
|
||||
};
|
||||
@ -165,7 +162,7 @@ for "_i" from 0 to _this do {
|
||||
// Set PubVar later after all Cams are loaded in
|
||||
};
|
||||
|
||||
if (_class isequalto "PlotPole_EPOCH") then {
|
||||
if (_class in (call EPOCH_JammerClasses)) then {
|
||||
EPOCH_Plotpoles pushbackunique _baseObj;
|
||||
if (EPOCH_SHOW_JAMMERS) then {
|
||||
_marker = createMarker [str(_location), _location];
|
||||
|
@ -26,7 +26,7 @@
|
||||
NOTHING
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_buildingJammerRange","_cIndex","_cfgEpochClient","_counter","_current_crypto","_objSlot","_playerCryptoLimit","_playerUID","_storSlot","_vars"];
|
||||
private ["_cIndex","_counter","_current_crypto","_objSlot","_playerCryptoLimit","_playerUID","_storSlot","_vars"];
|
||||
//[[[end]]]
|
||||
params [["_object",objNull],"_player","_maintCount",["_token","",[""]] ];
|
||||
|
||||
@ -34,14 +34,10 @@ if !([_player, _token] call EPOCH_server_getPToken) exitWith{};
|
||||
if (isNull _object) exitWith{};
|
||||
if (_player distance _object > 20) exitWith{};
|
||||
|
||||
_cfgEpochClient = 'CfgEpochClient' call EPOCH_returnConfig;
|
||||
_buildingJammerRange = getNumber(_cfgEpochClient >> "buildingJammerRange");
|
||||
if (_buildingJammerRange == 0) then { _buildingJammerRange = 75; };
|
||||
|
||||
_playerUID = getPlayerUID _player;
|
||||
_counter = 0;
|
||||
|
||||
if (typeOf _object == "PlotPole_EPOCH") then {
|
||||
if (typeOf _object in (call EPOCH_JammerClasses)) then {
|
||||
|
||||
_objSlot = _object getVariable["BUILD_SLOT", -1];
|
||||
if (_objSlot != -1) then {
|
||||
@ -76,7 +72,7 @@ if (typeOf _object == "PlotPole_EPOCH") then {
|
||||
};
|
||||
};
|
||||
if (_counter > _maintCount) exitWith{};
|
||||
} forEach nearestObjects[_object, ["Constructions_static_F","Constructions_foundation_F","Buildable_Storage","Constructions_lockedstatic_F"], _buildingJammerRange];
|
||||
} forEach nearestObjects[_object, ["Constructions_static_F","Constructions_foundation_F","Buildable_Storage","Constructions_lockedstatic_F"], call EPOCH_MaxJammerRange];
|
||||
|
||||
// effect crypto
|
||||
_playerCryptoLimit = EPOCH_customVarLimits select _cIndex;
|
||||
|
@ -53,6 +53,11 @@ if (isText _staticClassConfig) then {
|
||||
|
||||
if (getNumber(_cfgBaseBuilding >> _staticClass >> "isSecureStorage") == 1) then{
|
||||
_storageObj setVariable["EPOCH_Locked", false, true];
|
||||
if (_storageObj isKindOf "GunSafe_EPOCH") then {
|
||||
{
|
||||
_storageObj animate [_x,1];
|
||||
} foreach ["door1","door2","handle1","handle2"];
|
||||
};
|
||||
};
|
||||
|
||||
_storageObj setVariable["STORAGE_OWNERS", [_playerUID]];
|
||||
@ -69,7 +74,7 @@ if (isText _staticClassConfig) then {
|
||||
} else {
|
||||
|
||||
// TODO: optimize by using config var
|
||||
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 _x} count (call EPOCH_JammerClasses) > 0)) then {
|
||||
|
||||
_objSlot = _vehicle getVariable["BUILD_SLOT", -1];
|
||||
if (_objSlot == -1) then{
|
||||
@ -100,7 +105,8 @@ if (isText _staticClassConfig) then {
|
||||
else {
|
||||
_newVehicle setVariable["BUILD_OWNER", _playerUID, true];
|
||||
};
|
||||
if (_newVehicle isKindOf "PlotPole_EPOCH") then {
|
||||
if ({_newVehicle isKindOf _x} count (call EPOCH_JammerClasses) > 0) then {
|
||||
EPOCH_Plotpoles = EPOCH_Plotpoles - [ObjNull];
|
||||
EPOCH_Plotpoles pushBackUnique _newVehicle;
|
||||
publicvariable "EPOCH_Plotpoles";
|
||||
};
|
||||
|
@ -13,13 +13,30 @@
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_bases/EPOCH_server_upgradeBUILD.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_cfgBaseBuilding","_class","_newObj","_objSlot","_objType","_upgrade","_upgrades"];
|
||||
private ["_cfgBaseBuilding","_class","_newObj","_objSlot","_objType","_upgrade","_upgrades","_Skip"];
|
||||
//[[[end]]]
|
||||
params ["_object","_player",["_index",0],["_token","",[""]] ];
|
||||
params ["_object","_player",["_index",0],["_token","",[""]],["_CryptoCosts",0]];
|
||||
|
||||
if (isNull _object) exitWith{};
|
||||
if !([_player, _token] call EPOCH_server_getPToken) exitWith{};
|
||||
|
||||
_Skip = false;
|
||||
if (_CryptoCosts > 0) then {
|
||||
_cIndex = EPOCH_customVars find "Crypto";
|
||||
_vars = _player getVariable["VARS", call EPOCH_defaultVars_SEPXVar];
|
||||
_current_crypto = _vars select _cIndex;
|
||||
if (_current_crypto < _CryptoCosts) Exitwith {
|
||||
_Skip = true;
|
||||
};
|
||||
_playerCryptoLimit = EPOCH_customVarLimits select _cIndex;
|
||||
_playerCryptoLimit params ["_playerCryptoLimitMax","_playerCryptoLimitMin"];
|
||||
_current_crypto = ((_current_crypto - _CryptoCosts) min _playerCryptoLimitMax) max _playerCryptoLimitMin;
|
||||
_current_crypto remoteExec ['EPOCH_effectCrypto',_player];
|
||||
_vars set[_cIndex, _current_crypto];
|
||||
_player setVariable["VARS", _vars];
|
||||
};
|
||||
if (_Skip) exitwith {};
|
||||
|
||||
_objSlot = _object getVariable["BUILD_SLOT", -1];
|
||||
_cfgBaseBuilding = 'CfgBaseBuilding' call EPOCH_returnConfig;
|
||||
if (_objSlot != -1) then {
|
||||
|
@ -1,13 +1,29 @@
|
||||
// _newObj = [_class,_object] call EPOCH_swapBuilding;
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_newObj","_objectPos"];
|
||||
private ["_newObj","_objectPos","_owner","_UpdatePlots"];
|
||||
//[[[end]]]
|
||||
params [["_class",""],["_object",objNull],["_method",0]];
|
||||
params [["_class",""],["_object",objNull],["_method",1]];
|
||||
_newObj = objNull;
|
||||
if (!isNull _object && !(_class isEqualTo "")) then {
|
||||
_objectPos = getPosWorld _object;
|
||||
_newObj = createVehicle [_class, ASLtoAGL _objectPos, [], 0, "CAN_COLLIDE"];
|
||||
if (!isNull _newObj) then {
|
||||
_owner = _object getvariable ["Build_Owner",""];
|
||||
if !(_owner isEqualTo "") then {
|
||||
_newObj setVariable ["BUILD_OWNER", _owner, true];
|
||||
};
|
||||
_UpdatePlots = false;
|
||||
if (_object in EPOCH_Plotpoles) then {
|
||||
EPOCH_Plotpoles = EPOCH_Plotpoles - [_object];
|
||||
_UpdatePlots = true;
|
||||
};
|
||||
if (_class in (call EPOCH_JammerClasses)) then {
|
||||
EPOCH_Plotpoles pushback _newObj;
|
||||
_UpdatePlots = true;
|
||||
};
|
||||
if (_UpdatePlots) then {
|
||||
publicvariable 'EPOCH_Plotpoles';
|
||||
};
|
||||
_object hideObjectGlobal true;
|
||||
switch (_method) do {
|
||||
case 0: {
|
||||
@ -17,6 +33,7 @@ if (!isNull _object && !(_class isEqualTo "")) then {
|
||||
};
|
||||
case 1: {
|
||||
_newObj attachTo [_object,[0,0,0]];
|
||||
detach _newObj;
|
||||
};
|
||||
/*
|
||||
case 2: {
|
||||
|
@ -143,7 +143,7 @@ if (!isNull _player) then {
|
||||
if (surfaceiswater _newLocation) then {
|
||||
_CheckLocation = ATLToASL _newLocation;
|
||||
};
|
||||
_jammers = nearestObjects[_CheckLocation, ["PlotPole_EPOCH"], 6];
|
||||
_jammers = nearestObjects[_CheckLocation, call EPOCH_JammerClasses, 6];
|
||||
if !(_jammers isEqualTo[]) then {
|
||||
// get nearby object
|
||||
_jammer = _jammers param [0,objNull];
|
||||
|
@ -0,0 +1,46 @@
|
||||
/*
|
||||
Author: He-Man - EpochMod.com
|
||||
|
||||
Contributors:
|
||||
|
||||
Description: Puts Crypto Items on the Ground
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server\compile\epoch_server\EPOCH_server_PutCrypto.sqf
|
||||
|
||||
Usage:
|
||||
[player,_value,Epoch_personalToken] remoteexec ['EPOCH_server_PutCrypto',2]
|
||||
|
||||
RETURNS: NOTHING
|
||||
*/
|
||||
|
||||
private ["_cIndex","_vars","_current_crypto","_pos","_dist","_direction","_randomPos","_itemclass","_var","_item"];
|
||||
params ["_player","_Putcrypto",["_token","",[""]]];
|
||||
diag_log format ["PutCrypto Server Side - %1",_this];
|
||||
if !([_player, _token] call EPOCH_server_getPToken) exitWith{};
|
||||
_cIndex = EPOCH_customVars find 'Crypto';
|
||||
_vars = _player getVariable['VARS', call EPOCH_defaultVars_SEPXVar];
|
||||
_current_crypto = _vars select _cIndex;
|
||||
if (_current_crypto < _Putcrypto) exitwith {
|
||||
["Not enough money",5] remoteexec ["Epoch_Message",_player];
|
||||
};
|
||||
_current_crypto = _current_crypto - _Putcrypto;
|
||||
_vars set[_cIndex, _current_crypto];
|
||||
_player setVariable['VARS', _vars];
|
||||
_current_crypto remoteExec ['EPOCH_effectCrypto',_player];
|
||||
[format ["You put %1 Crypto on the Ground",_Putcrypto],5] remoteexec ["Epoch_Message",_player];
|
||||
[_player,_vars,_token] call EPOCH_fnc_savePlayer;
|
||||
_pos = getposatl _player;
|
||||
while {_Putcrypto > 0} do {
|
||||
_itemclass = if (_Putcrypto >= 1000) then {"Land_Suitcase_F"} else {"Land_Money_F"};
|
||||
_var = if (_Putcrypto >= 1000) then {1000} else {_Putcrypto min 100};
|
||||
_Putcrypto = _Putcrypto - _var;
|
||||
_item = createVehicle [_itemclass,_pos,[],1,"CAN_COLLIDE"];
|
||||
_item setvariable ["RemoveOnTake",true];
|
||||
_item allowdamage false;
|
||||
_item enablesimulationglobal false;
|
||||
_item setvariable ["Crypto",_var,true];
|
||||
};
|
@ -8,7 +8,7 @@
|
||||
|
||||
_position - position on map
|
||||
_traderCheck - BOOL - check _position distance near ProtectionZone_Invisible_F
|
||||
_jammerCheck - BOOL - check _position distance near PlotPole_EPOCH
|
||||
_jammerCheck - BOOL - check _position distance near PlotPoles
|
||||
_playerCheck - BOOL - check _position distance near other Players
|
||||
_others - ARRAY - positions to check with _distFromOthers
|
||||
_distFromOthers - NUMBER - How far away from _others array in meters
|
||||
@ -30,7 +30,7 @@ if(_traderCheck)then{
|
||||
|
||||
//CHECK FOR JAMMERS IN THE AREA WITHIN CONFIG RANGE
|
||||
if(_jammerCheck)then{
|
||||
_jammers = nearestObjects[_position, ["PlotPole_EPOCH"], _distFromJammers];
|
||||
_jammers = nearestObjects[_position, call EPOCH_JammerClasses, _distFromJammers];
|
||||
if(count _jammers > 0) then {
|
||||
_return = false;
|
||||
};
|
||||
|
@ -16,7 +16,7 @@
|
||||
private [ "_TraderGodMode","_StaticTraderItemPurge","_DynamicTraderRespawnCount","_TraderItemsDeleteRestart","_TraderInit","_TraderItemsClean","_newstock","_agent","_aiTables",
|
||||
"_arr","_config","_currentStock","_existingStock","_indexStock","_markers","_objHiveKey","_pos","_randomAIUniform","_response","_response2","_schedule",
|
||||
"_serverSettingsConfig","_staticTrader","_staticTradersArrCount","_staticTradersArray","_storedVehicleLimit","_traderSlotIndex","_work","_arrchanged","_deleteat","_maxrnd",
|
||||
"_WinterDeco","_HelloweenDeco","_buildingJammerRange","_TraderDeco"
|
||||
"_WinterDeco","_HelloweenDeco","_TraderDeco"
|
||||
];
|
||||
//[[[end]]]
|
||||
params [["_maxTraderLimit",0]];
|
||||
@ -35,7 +35,6 @@ _DynamicTraderRespawnCount = [_serverSettingsConfig, "DynamicTraderRespawnCount"
|
||||
_TraderItemCountPerItem = [_serverSettingsConfig, "TraderItemCountPerItem", [100,100]] call EPOCH_fnc_returnConfigEntry;
|
||||
_TraderItemsDeleteRestart = [_serverSettingsConfig, "TraderItemsDeleteRestart", []] call EPOCH_fnc_returnConfigEntry;
|
||||
_TraderDeco = [_serverSettingsConfig, "TraderDeco", true] call EPOCH_fnc_returnConfigEntry;
|
||||
_buildingJammerRange = ["CfgEpochClient", "buildingJammerRange", 75] call EPOCH_fnc_returnConfigEntryV2;
|
||||
|
||||
_WinterDeco = (Epoch_ServerRealtime select 1) == 12 && (Epoch_ServerRealtime select 2) > 20 && _TraderDeco;
|
||||
_HelloweenDeco = (((Epoch_ServerRealtime select 1) == 10 && (Epoch_ServerRealtime select 2) >= 24) || ((Epoch_ServerRealtime select 1) == 11 && (Epoch_ServerRealtime select 2) <= 3)) && _TraderDeco;
|
||||
@ -200,7 +199,7 @@ for "_i" from 0 to (_maxTraderLimit-1) do {
|
||||
if (daytime > (_schedule select 0) && daytime < (_schedule select 1)) then {
|
||||
_pos = (_work select 0);
|
||||
};
|
||||
if (!(count (_arr select 0) >= _DynamicTraderRespawnCount) && (nearestobjects [_pos,["Plotpole_EPOCH"],_buildingJammerRange]) isequalto []) then {
|
||||
if (!(count (_arr select 0) >= _DynamicTraderRespawnCount) && (nearestobjects [_pos,call EPOCH_JammerClasses,call EPOCH_MaxJammerRange]) isequalto []) then {
|
||||
EPOCH_TraderSlots deleteAt _traderSlotIndex;
|
||||
_agent = createAgent [_class, _pos, [], 0, "NONE"];
|
||||
if !(EPOCH_forceStaticTraders) then {
|
||||
|
@ -15,7 +15,7 @@
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private [ "_serverSettingsConfig","_acceptableBlds","_agent","_aiClass","_aiTables","_buildingHome","_buildingWork","_buildings","_checkBuilding","_config","_endTime","_home",
|
||||
"_homes","_markers","_objHiveKey","_pos","_position","_randomAIUniform","_return","_schedule","_slot","_spawnCount","_startTime","_traderHomes","_usedBuildings","_work",
|
||||
"_WinterDeco","_HelloweenDeco","_buildingJammerRange","_TraderDeco","_TraderMinDistance","_traderblockblds","_Traderblocks"
|
||||
"_WinterDeco","_HelloweenDeco","_TraderDeco","_TraderMinDistance","_traderblockblds","_Traderblocks"
|
||||
];
|
||||
//[[[end]]]
|
||||
_serverSettingsConfig = configFile >> "CfgEpochServer";
|
||||
@ -30,11 +30,10 @@ if (_TraderMinDistance isEqualto 0) then {
|
||||
};
|
||||
_traderblockblds = getArray(_config >> "traderblockblds");
|
||||
if (_traderblockblds isEqualto []) then {
|
||||
_traderblockblds = ["pier","bridge","fireescape","medevac_house","pillboxbunker"];
|
||||
_traderblockblds = ["pier","bridge","fireescape","medevac_house","pillboxbunker","containerine"];
|
||||
};
|
||||
_traderHomes = getArray(_config >> "traderHomes");
|
||||
_TraderDeco = [_serverSettingsConfig, "TraderDeco", true] call EPOCH_fnc_returnConfigEntry;
|
||||
_buildingJammerRange = ["CfgEpochClient", "buildingJammerRange", 75] call EPOCH_fnc_returnConfigEntryV2;
|
||||
|
||||
_WinterDeco = (Epoch_ServerRealtime select 1) == 12 && (Epoch_ServerRealtime select 2) > 20 && _TraderDeco;
|
||||
_HelloweenDeco = (((Epoch_ServerRealtime select 1) == 10 && (Epoch_ServerRealtime select 2) >= 24) || ((Epoch_ServerRealtime select 1) == 11 && (Epoch_ServerRealtime select 2) <= 3)) && _TraderDeco;
|
||||
@ -74,7 +73,7 @@ for "_i" from 1 to _spawnCount do {
|
||||
_usedBuildings pushBack _buildingWork;
|
||||
_home = selectRandom (_buildingHome buildingPos -1);
|
||||
_work = selectRandom (_buildingWork buildingPos -1);
|
||||
if ((nearestobjects [_home,["Plotpole_EPOCH"],_buildingJammerRange]) isequalto [] && (nearestobjects [_work,["Plotpole_EPOCH"],_buildingJammerRange]) isequalto []) then {
|
||||
if ((nearestobjects [_home,call EPOCH_JammerClasses, call EPOCH_MaxJammerRange]) isequalto [] && (nearestobjects [_work,call EPOCH_JammerClasses, call EPOCH_MaxJammerRange]) isequalto []) then {
|
||||
_startTime = floor(random 16);
|
||||
_endTime = _startTime + 8;
|
||||
_schedule = [_startTime, _endTime];
|
||||
|
@ -15,21 +15,21 @@
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_getCrypto"];
|
||||
//[[[end]]]
|
||||
params ["_player",["_token","",[""]],"_object"];
|
||||
params ["_player",["_token","",[""]],["_CryptoItems",[]]];
|
||||
|
||||
if !([_player,_token] call EPOCH_server_getPToken) exitWith {};
|
||||
if (isNull _object) exitWith {};
|
||||
if (_player distance _object > 10) exitWith {};
|
||||
|
||||
_getCrypto = _object getVariable["Crypto", 0];
|
||||
if (_getCrypto > 0) then {
|
||||
// remove crypto from object
|
||||
_object setVariable["Crypto", nil, true];
|
||||
if (_object getvariable ["RemoveOnTake",false]) then {
|
||||
deletevehicle _object;
|
||||
_getCrypto = 0;
|
||||
{
|
||||
if (_player distance _x < 10) then {
|
||||
_getCrypto = _getCrypto + (_x getVariable ["Crypto", 0]);
|
||||
_x setVariable ["Crypto", nil, true];
|
||||
if (_x getvariable ["RemoveOnTake",false]) then {
|
||||
deletevehicle _x;
|
||||
};
|
||||
};
|
||||
// send data back to player
|
||||
} foreach _CryptoItems;
|
||||
if (_getCrypto > 0) then {
|
||||
[_player,_getCrypto] call EPOCH_server_effectCrypto;
|
||||
// debug and logging.
|
||||
diag_log format["Epoch: ADMIN: %1 picked up %2 Crypto from object %3 with puid %4 at %5", getPlayerUID _player, _getCrypto, [_object, typeOf _object],_object getVariable['PUID', ''],getposATL _object];
|
||||
};
|
||||
diag_log format["Epoch: ADMIN: %1 picked up %2 Crypto at %3", getPlayerUID _player, _getCrypto, getposATL _player];
|
||||
};
|
@ -13,7 +13,7 @@
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_storage.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_ExceptedBaseObjects","_IndestructibleBaseObjects","_UseIndestructible","_arr","_attachments","_availableColorsConfig","_cfgBaseBuilding","_class","_class_raw","_color","_colors","_count","_damage","_diag","_dir","_inventory","_location","_magazineName","_magazineSize","_magazineSizeMax","_marker","_objQty","_objType","_objTypes","_qty","_response","_selections","_serverSettingsConfig","_storageSlotIndex","_textureSelectionIndex","_textures","_vehHiveKey","_vehicle","_wMags","_wMagsArray","_worldspace","_wsCount"];
|
||||
private ["_ExceptedBaseObjects","_AutoLockStorages","_IndestructibleBaseObjects","_UseIndestructible","_arr","_attachments","_availableColorsConfig","_cfgBaseBuilding","_class","_class_raw","_color","_colors","_count","_damage","_diag","_dir","_inventory","_location","_magazineName","_magazineSize","_magazineSizeMax","_marker","_objQty","_objType","_objTypes","_qty","_response","_selections","_serverSettingsConfig","_storageSlotIndex","_textureSelectionIndex","_textures","_vehHiveKey","_vehicle","_wMags","_wMagsArray","_worldspace","_wsCount"];
|
||||
//[[[end]]]
|
||||
params [["_maxStorageLimit",0]];
|
||||
|
||||
@ -21,6 +21,7 @@ _serverSettingsConfig = configFile >> "CfgEpochServer";
|
||||
_UseIndestructible = [_serverSettingsConfig, "UseIndestructible", false] call EPOCH_fnc_returnConfigEntry;
|
||||
_IndestructibleBaseObjects = [_serverSettingsConfig, "IndestructibleBaseObjects", []] call EPOCH_fnc_returnConfigEntry;
|
||||
_ExceptedBaseObjects = [_serverSettingsConfig, "ExceptedBaseObjects", []] call EPOCH_fnc_returnConfigEntry;
|
||||
_AutoLockStorages = [_serverSettingsConfig, "AutoLockStorages", false] call EPOCH_fnc_returnConfigEntry;
|
||||
|
||||
_diag = diag_tickTime;
|
||||
EPOCH_StorageSlots = [];
|
||||
@ -136,8 +137,16 @@ for "_i" from 1 to _maxStorageLimit do {
|
||||
if (count _arr >= 6) then {
|
||||
if (_class isKindOf 'Constructions_lockedstatic_F') then{
|
||||
// set locked state of secure storage
|
||||
if ((_arr select 6) != -1) then {
|
||||
if (((_arr select 6) != -1) || _AutoLockStorages) then {
|
||||
_vehicle setVariable["EPOCH_Locked", true, true];
|
||||
}
|
||||
else {
|
||||
_vehicle setVariable["EPOCH_Locked", false, true];
|
||||
if (_vehicle iskindof "GunSafe_EPOCH") then {
|
||||
{
|
||||
_vehicle animate _x;
|
||||
} foreach [['handle1',1],['handle2',1],['door1',1],['door2',1]];
|
||||
};
|
||||
};
|
||||
_vehicle setVariable ["STORAGE_OWNERS", _arr select 5];
|
||||
};
|
||||
|
@ -13,7 +13,7 @@
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_vehicles.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_actualHitpoints","_allHitpoints","_allVehicles","_allowDamage","_arr","_arrNum","_availableColorsConfig","_cfgEpochVehicles","_check","_class","_colors","_config","_count","_dataFormat","_dataFormatCount","_diag","_disableVehicleTIE","_dmg","_found","_immuneIfStartInBase","_jammerOwner","_jammerRange","_jammers","_location","_lockedOwner","_marker","_nearestJammer","_removemagazinesturret","_removeweapons","_response","_selections","_serverSettingsConfig","_textureSelectionIndex","_textures","_vehHiveKey","_vehLockHiveKey","_vehicle","_vehicleDynamicSimulationSystem","_vehicleSlotIndex"];
|
||||
private ["_actualHitpoints","_allHitpoints","_allVehicles","_allowDamage","_arr","_arrNum","_availableColorsConfig","_cfgEpochVehicles","_check","_class","_colors","_count","_dataFormat","_dataFormatCount","_diag","_disableVehicleTIE","_dmg","_found","_immuneIfStartInBase","_jammerOwner","_jammers","_location","_lockedOwner","_marker","_nearestJammer","_removemagazinesturret","_removeweapons","_response","_selections","_serverSettingsConfig","_textureSelectionIndex","_textures","_vehHiveKey","_vehLockHiveKey","_vehicle","_vehicleDynamicSimulationSystem","_vehicleSlotIndex"];
|
||||
//[[[end]]]
|
||||
params [["_maxVehicleLimit",0]];
|
||||
|
||||
@ -23,10 +23,6 @@ _dataFormatCount = count _dataFormat;
|
||||
EPOCH_VehicleSlots = [];
|
||||
_allVehicles = [];
|
||||
|
||||
|
||||
_config = 'CfgEpochClient' call EPOCH_returnConfig;
|
||||
_jammerRange = getNumber(_config >> "buildingJammerRange");
|
||||
|
||||
_serverSettingsConfig = configFile >> "CfgEpochServer";
|
||||
_immuneIfStartInBase = [_serverSettingsConfig, "immuneIfStartInBase", true] call EPOCH_fnc_returnConfigEntry;
|
||||
_vehicleDynamicSimulationSystem = [_serverSettingsConfig, "vehicleDynamicSimulationSystem", true] call EPOCH_fnc_returnConfigEntry;
|
||||
@ -191,7 +187,7 @@ for "_i" from 1 to _maxVehicleLimit do {
|
||||
// allow damage
|
||||
_allowDamage = true;
|
||||
if (_immuneIfStartInBase) then {
|
||||
_jammers = nearestObjects[_vehicle, ["PlotPole_EPOCH"], _jammerRange];
|
||||
_jammers = nearestObjects[_vehicle, call EPOCH_JammerClasses,call EPOCH_MaxJammerRange];
|
||||
if!(_jammers isEqualTo [])then {
|
||||
// get jammer owner
|
||||
_nearestJammer = _jammers select 0;
|
||||
|
@ -27,6 +27,10 @@ _playerGroup = _player getVariable["GROUP", ""];
|
||||
_fnc_Lock_Unlock = {
|
||||
_locked = !_locked;
|
||||
_unit setVariable ["EPOCH_Locked", _locked, true];
|
||||
if (_unit iskindof "GunSafe_EPOCH") then {
|
||||
_animations = if (_locked) then {[['door1',0],['door2',0],['handle1',0],['handle2',0]]} else {[['handle1',1],['handle2',1],['door1',1],['door2',1]]};
|
||||
[_unit,_animations,[0,1,0]] remoteexec ['EPOCH_fnc_AnimateScheduled',_player];
|
||||
};
|
||||
_LockStateChanged = true;
|
||||
};
|
||||
|
||||
|
@ -34,7 +34,7 @@ if (!isNull _building) then {
|
||||
EPOCH_BaseCams = EPOCH_BaseCams - [_building];
|
||||
publicvariable "EPOCH_BaseCams";
|
||||
};
|
||||
if (_building iskindof "PlotPole_EPOCH") then {
|
||||
if (_building in (call EPOCH_JammerClasses)) then {
|
||||
EPOCH_Plotpoles = EPOCH_Plotpoles - [_building];
|
||||
publicvariable "EPOCH_Plotpoles";
|
||||
};
|
||||
|
@ -21,7 +21,7 @@ if (!isNull _vehicle) then {
|
||||
if (_vehSlot != "ABORT") then {
|
||||
_vehHiveKey = format ["%1:%2", (call EPOCH_fn_InstanceID), _vehSlot];
|
||||
["Vehicle", _vehHiveKey] call EPOCH_fnc_server_hiveDEL;
|
||||
EPOCH_VehicleSlots pushBack _vehSlot;
|
||||
EPOCH_VehicleSlots pushBackUnique _vehSlot;
|
||||
|
||||
missionNamespace setVariable ['EPOCH_VehicleSlotCount', count EPOCH_VehicleSlots, true];
|
||||
|
||||
|
@ -129,6 +129,7 @@ class CfgServerFunctions
|
||||
class server_deleteGlobalMarkerSet {};
|
||||
class server_isNearChecks {};
|
||||
class server_DefuseBomb {};
|
||||
class server_PutCrypto {};
|
||||
};
|
||||
class epoch_missions {
|
||||
class Server_createObject {};
|
||||
@ -148,7 +149,7 @@ class CfgServerFunctions
|
||||
};
|
||||
class CfgServerVersion
|
||||
{
|
||||
client = "1.3.0";
|
||||
config = "1.3.0";
|
||||
client = "1.3.1";
|
||||
config = "1.3.1";
|
||||
hive = "0.6.0.0";
|
||||
};
|
||||
|
@ -289,14 +289,13 @@ if ([_serverSettingsConfig, "disableAutoRefuel", false] call EPOCH_fnc_returnCon
|
||||
else {
|
||||
// Remove Auto-Refuel in PlotPole-Range
|
||||
if ([_serverSettingsConfig, "disableFuelNearPlots", true] call EPOCH_fnc_returnConfigEntry) then {
|
||||
_buildingJammerRange = ["CfgEpochClient", "buildingJammerRange", 75] call EPOCH_fnc_returnConfigEntryV2;
|
||||
_staticFuelSources = [];
|
||||
{
|
||||
{
|
||||
_staticFuelSources pushback _x;
|
||||
} foreach (((_x nearObjects ['Building',_buildingJammerRange]) select {getFuelCargo _x > 0}));
|
||||
} foreach (((_x nearObjects ['Building',call EPOCH_MaxJammerRange]) select {getFuelCargo _x > 0}));
|
||||
|
||||
} foreach (missionnamespace getvariable ["Epoch_Plotpoles",allmissionobjects 'PlotPole_EPOCH']);
|
||||
} foreach (missionnamespace getvariable ["Epoch_Plotpoles",call {_allplots = [];{_allplots append (allmissionobjects _x)} foreach (call EPOCH_JammerClasses);_allplots}]);
|
||||
missionNamespace setVariable ["EPOCH_staticFuelSources", _staticFuelSources, true];
|
||||
};
|
||||
};
|
||||
@ -309,7 +308,7 @@ missionNamespace setVariable ["EPOCH_taxRate", [_serverSettingsConfig, "taxRate"
|
||||
|
||||
// pick random radioactive locations
|
||||
_radioactiveLocations = getArray(_epochConfig >> worldName >> "radioactiveLocations");
|
||||
_blacklist = getArray(_epochConfig >> worldName >> "radioactiveLocBLObjects");
|
||||
_blacklist = (call EPOCH_JammerClasses) + (getArray(_epochConfig >> worldName >> "radioactiveLocBLObjects"));
|
||||
_distance = getNumber(_epochConfig >> worldName >> "radioactiveLocBLDistance");
|
||||
_radioactiveLocationsTmp = [];
|
||||
if !(_radioactiveLocations isEqualTo []) then {
|
||||
|
@ -49,7 +49,7 @@ _skn_badAnimations = [_cfg_blacklistConfig, "animations", ['AmovPercMstpSnonWnon
|
||||
_cfg_variablesConfig = (_config >> "variables");
|
||||
_skn_badVarCheckArray = [_cfg_variablesConfig, "badVars", ['EPOCH_GMODE','ESP_map','ESP_mainMap','ESP_adminMap','AntiAntiAntiAntiHax','fnc_usec_damageHandler','fnc_usec_unconscious','VAGINA_secret','yolo','VERSION','life_fnc_handleDamage','EPOCH_spawnVehicle_PVS','CLASS911_Menu','nuke_vars','JJMMEE_INIT_MENU','PLAYERON','PLAYERNEXT2','ALTISLIFEON','LY_Menu','PLAY','LY_SwaggerLikeUs','BIS_fnc_dbg_reminder_value','BIS_fnc_dbg_reminder']] call EPOCH_fnc_returnConfigEntry;
|
||||
_skn_nilVarCheckArray = [_cfg_variablesConfig, "nilVars", ['EPOCH_antiWallCount','EPOCH_playerEnergy','EPOCH_playerHunger','EPOCH_playerStamina','EPOCH_playerCrypto','EPOCH_target','EPOCH_ESP_TARGETS','EPOCH_ESPMAP_TARGETS','EPOCH_taxRate','EPOCH_ESP_VEHICLEPLAYER','EPOCH_ESP_PLAYER','EPOCH_ESP_VEHICLES']] call EPOCH_fnc_returnConfigEntry;
|
||||
_skn_commandMenuArray = [(_config >> "commandMenu"), "menus",['','RscSelectTeam','RscTeam','RscMenuTeam','RscMoveHigh','#GETIN','#RscStatus','#WATCH0','RscCombatMode','RscMenuReply','RscCallSupport','#CUSTOM_RADIO','#User:BIS_fnc_addCommMenuItem_menu','RscRadio','RscReply','#ACTION','RscMenuFormations','#WATCH','RscGroupRootMenu','RscMainMenu','RscMenuMove','RscWatchDir','RscWatchMoveDir','#User:BIS_Menu_GroupCommunication','RscMenuStatus','RscFormations']] call EPOCH_fnc_returnConfigEntry;
|
||||
_skn_commandMenuArray = [(_config >> "commandMenu"), "menus",['','RscMenuEngage','RscSelectTeam','RscTeam','RscMenuTeam','RscMoveHigh','#GETIN','#RscStatus','#WATCH0','RscCombatMode','RscMenuReply','RscCallSupport','#CUSTOM_RADIO','#User:BIS_fnc_addCommMenuItem_menu','RscRadio','RscReply','#ACTION','RscMenuFormations','#WATCH','RscGroupRootMenu','RscMainMenu','RscMenuMove','RscWatchDir','RscWatchMoveDir','#User:BIS_Menu_GroupCommunication','RscMenuStatus','RscFormations']] call EPOCH_fnc_returnConfigEntry;
|
||||
|
||||
_skn_addEHConfig = (_config >> "addEventHandler");
|
||||
_skn_displayAddEHChecks = [_skn_addEHConfig, "checks",[]] call EPOCH_fnc_returnConfigEntry;
|
||||
@ -422,7 +422,7 @@ for "_i" from 1 to 3 do {
|
||||
};
|
||||
if ("MAP-BASEBUILDING" in _case) then {
|
||||
_temp = _temp + "
|
||||
,[' Base Building Marker', [], {"+_skn_tg_map_basebuilding+" = !"+_skn_tg_map_basebuilding+"; if ("+_skn_tg_map_basebuilding+") then {waitUntil {"+_skn_mapBasesArray+" = ([worldSize/2,worldSize/2,0]) nearObjects['PlotPole_EPOCH', 12500];uiSleep 15;!"+_skn_tg_map_basebuilding+"};"+_skn_mapBasesArray+" = []}; ['Base Building MARKER',if ("+_skn_tg_map_basebuilding+") then [{2},{1}]] call "+_skn_adminLog_PVC+"}, '2', []]
|
||||
,[' Base Building Marker', [], {"+_skn_tg_map_basebuilding+" = !"+_skn_tg_map_basebuilding+"; if ("+_skn_tg_map_basebuilding+") then {waitUntil {"+_skn_mapBasesArray+" = (Epoch_PlotPoles - [objnull]);uiSleep 15;!"+_skn_tg_map_basebuilding+"};"+_skn_mapBasesArray+" = []}; ['Base Building MARKER',if ("+_skn_tg_map_basebuilding+") then [{2},{1}]] call "+_skn_adminLog_PVC+"}, '2', []]
|
||||
";
|
||||
};
|
||||
};
|
||||
|
@ -20,7 +20,7 @@ class CfgPatches {
|
||||
units[] = {};
|
||||
weapons[] = {};
|
||||
requiredVersion = 0.1;
|
||||
epochVersion = "1.3.0";
|
||||
epochVersion = "1.3.1";
|
||||
requiredAddons[] = {};
|
||||
#include "build.hpp"
|
||||
};
|
||||
@ -66,7 +66,7 @@ class CfgEpoch
|
||||
radioactiveLocationsCount = 3;
|
||||
|
||||
// BlackList radioactive locations spawn by object and distance
|
||||
radioactiveLocBLObjects[] = {"PlotPole_EPOCH"};
|
||||
radioactiveLocBLObjects[] = {}; // PlotPoles are already blacklisted by script
|
||||
radioactiveLocBLDistance = 500;
|
||||
|
||||
// Custom Locations for Radiation
|
||||
@ -81,7 +81,7 @@ class CfgEpoch
|
||||
traderHomes[] = {"Building"};
|
||||
traderUniforms[] = {"U_OG_leader", "U_C_Poloshirt_stripped", "U_C_Poloshirt_blue", "U_C_Poloshirt_burgundy", "U_C_Poloshirt_tricolour", "U_C_Poloshirt_salmon", "U_C_Poloshirt_redwhite", "U_C_Poor_1", "U_C_WorkerCoveralls", "U_C_Journalist", "U_C_Scientist", "U_OrestesBody", "U_Chav_EPOCH"};
|
||||
// TraderMinDistance = 1500; // Min distance between Traders. If not defined, Server will calculate it by MapSize
|
||||
traderblockblds[] = {"pier","bridge","fireescape","medevac_house","pillboxbunker"}; // If a building include this chars in the classname (tolower!!!) they will be blocked for Traders
|
||||
traderblockblds[] = {"pier","bridge","fireescape","medevac_house","pillboxbunker","containerine"}; // If a building include this chars in the classname (tolower!!!) they will be blocked for Traders
|
||||
|
||||
// Debug Box
|
||||
telePos[] = {};
|
||||
|
@ -80,6 +80,14 @@ class CfgLootTable
|
||||
{ { "FAK", "magazine" }, 20 }
|
||||
};
|
||||
};
|
||||
class Safes
|
||||
{
|
||||
items[] = {
|
||||
{ { "ItemSafe", "magazine" }, 1 },
|
||||
// { { "ItemSafe_s", "magazine" }, 1 }, // Variant with less Load than the normal Safe
|
||||
{ { "ItemGunSafe", "magazine" }, 1 }
|
||||
};
|
||||
};
|
||||
class Repairs
|
||||
{
|
||||
items[] = {
|
||||
@ -331,7 +339,7 @@ class CfgLootTable
|
||||
{ { "ItemBattery", "magazine" }, 5 },
|
||||
{ { "ItemCables", "magazine" }, 5 },
|
||||
{ { "ItemPipe", "magazine" }, 5 },
|
||||
{ { "ItemSafe", "magazine" }, 1 },
|
||||
{ { "Safes", "CfgLootTable" }, 1 },
|
||||
{ { "ItemBarrelE", "magazine" }, 1 }
|
||||
|
||||
|
||||
@ -342,7 +350,7 @@ class CfgLootTable
|
||||
{
|
||||
items[] = {
|
||||
{ { "VehicleDocs", "CfgLootTable" }, 4 },
|
||||
{ { "ItemSafe", "magazine" }, 1 },
|
||||
{ { "Safes", "CfgLootTable" }, 1 },
|
||||
{ { "ItemLockbox", "magazine" }, 4 },
|
||||
{ { "jerrycan_epoch", "magazine" }, 5 },
|
||||
{ { "CircuitParts", "magazine" }, 6 },
|
||||
@ -1001,7 +1009,7 @@ class CfgLootTable
|
||||
{ { "KitCinderWall", "magazine" }, 5 },
|
||||
{ { "KitFoundation", "magazine" }, 5 },
|
||||
{ { "KitWoodFoundation", "magazine" }, 14 },
|
||||
{ { "ItemSafe", "magazine" }, 1 }
|
||||
{ { "Safes", "CfgLootTable" }, 1 }
|
||||
};
|
||||
};
|
||||
|
||||
@ -1014,7 +1022,7 @@ class CfgLootTable
|
||||
{ { "BaseBuilding", "CfgLootTable" }, 20 },
|
||||
{ { "GenericLarge", "CfgLootTable" }, 24 },
|
||||
{ { "ItemLockbox", "magazine" }, 4 },
|
||||
{ { "ItemSafe", "magazine" }, 1 },
|
||||
{ { "Safes", "CfgLootTable" }, 1 },
|
||||
{ { "Generic", "CfgLootTable" }, 10 },
|
||||
{ { "Tools", "CfgLootTable" }, 19 }
|
||||
};
|
||||
|
@ -80,6 +80,14 @@ class CfgLootTable_CUP
|
||||
{ { "FAK", "magazine" }, 20 }
|
||||
};
|
||||
};
|
||||
class Safes
|
||||
{
|
||||
items[] = {
|
||||
{ { "ItemSafe", "magazine" }, 1 },
|
||||
// { { "ItemSafe_s", "magazine" }, 1 }, // Variant with less Load than the normal Safe
|
||||
{ { "ItemGunSafe", "magazine" }, 1 }
|
||||
};
|
||||
};
|
||||
class Repairs
|
||||
{
|
||||
items[] = {
|
||||
@ -424,7 +432,7 @@ class CfgLootTable_CUP
|
||||
{ { "ItemBattery", "magazine" }, 5 },
|
||||
{ { "ItemCables", "magazine" }, 5 },
|
||||
{ { "ItemPipe", "magazine" }, 5 },
|
||||
{ { "ItemSafe", "magazine" }, 1 },
|
||||
{ { "Safes", "CfgLootTable" }, 1 },
|
||||
{ { "ItemBarrelE", "magazine" }, 1 }
|
||||
};
|
||||
};
|
||||
@ -433,7 +441,7 @@ class CfgLootTable_CUP
|
||||
{
|
||||
items[] = {
|
||||
{ { "VehicleDocs", "CfgLootTable" }, 4 },
|
||||
{ { "ItemSafe", "magazine" }, 1 },
|
||||
{ { "Safes", "CfgLootTable" }, 1 },
|
||||
{ { "ItemLockbox", "magazine" }, 4 },
|
||||
{ { "jerrycan_epoch", "magazine" }, 5 },
|
||||
{ { "CircuitParts", "magazine" }, 6 },
|
||||
@ -1550,7 +1558,7 @@ class CfgLootTable_CUP
|
||||
{ { "KitCinderWall", "magazine" }, 5 },
|
||||
{ { "KitFoundation", "magazine" }, 5 },
|
||||
{ { "KitWoodFoundation", "magazine" }, 14 },
|
||||
{ { "ItemSafe", "magazine" }, 1 }
|
||||
{ { "Safes", "CfgLootTable" }, 1 }
|
||||
};
|
||||
};
|
||||
|
||||
@ -1563,7 +1571,7 @@ class CfgLootTable_CUP
|
||||
{ { "BaseBuilding", "CfgLootTable" }, 20 },
|
||||
{ { "GenericLarge", "CfgLootTable" }, 24 },
|
||||
{ { "ItemLockbox", "magazine" }, 4 },
|
||||
{ { "ItemSafe", "magazine" }, 1 },
|
||||
{ { "Safes", "CfgLootTable" }, 1 },
|
||||
{ { "Generic", "CfgLootTable" }, 10 },
|
||||
{ { "Tools", "CfgLootTable" }, 19 }
|
||||
};
|
||||
|
@ -80,6 +80,14 @@ class CfgLootTable_MAD
|
||||
{ { "FAK", "magazine" }, 20 }
|
||||
};
|
||||
};
|
||||
class Safes
|
||||
{
|
||||
items[] = {
|
||||
{ { "ItemSafe", "magazine" }, 1 },
|
||||
// { { "ItemSafe_s", "magazine" }, 1 }, // Variant with less Load than the normal Safe
|
||||
{ { "ItemGunSafe", "magazine" }, 1 }
|
||||
};
|
||||
};
|
||||
class Repairs
|
||||
{
|
||||
items[] = {
|
||||
@ -329,7 +337,7 @@ class CfgLootTable_MAD
|
||||
{ { "ItemBattery", "magazine" }, 5 },
|
||||
{ { "ItemCables", "magazine" }, 5 },
|
||||
{ { "ItemPipe", "magazine" }, 5 },
|
||||
{ { "ItemSafe", "magazine" }, 1 },
|
||||
{ { "Safes", "CfgLootTable" }, 1 },
|
||||
{ { "ItemBarrelE", "magazine" }, 1 }
|
||||
|
||||
|
||||
@ -340,7 +348,7 @@ class CfgLootTable_MAD
|
||||
{
|
||||
items[] = {
|
||||
{ { "VehicleDocs", "CfgLootTable" }, 4 },
|
||||
{ { "ItemSafe", "magazine" }, 1 },
|
||||
{ { "Safes", "CfgLootTable" }, 1 },
|
||||
{ { "ItemLockbox", "magazine" }, 4 },
|
||||
{ { "jerrycan_epoch", "magazine" }, 5 },
|
||||
{ { "CircuitParts", "magazine" }, 6 },
|
||||
@ -990,7 +998,7 @@ class CfgLootTable_MAD
|
||||
{ { "KitCinderWall", "magazine" }, 5 },
|
||||
{ { "KitFoundation", "magazine" }, 5 },
|
||||
{ { "KitWoodFoundation", "magazine" }, 14 },
|
||||
{ { "ItemSafe", "magazine" }, 1 }
|
||||
{ { "Safes", "CfgLootTable" }, 1 }
|
||||
};
|
||||
};
|
||||
|
||||
@ -1003,7 +1011,7 @@ class CfgLootTable_MAD
|
||||
{ { "BaseBuilding", "CfgLootTable" }, 20 },
|
||||
{ { "GenericLarge", "CfgLootTable" }, 24 },
|
||||
{ { "ItemLockbox", "magazine" }, 4 },
|
||||
{ { "ItemSafe", "magazine" }, 1 },
|
||||
{ { "Safes", "CfgLootTable" }, 1 },
|
||||
{ { "Generic", "CfgLootTable" }, 10 },
|
||||
{ { "Tools", "CfgLootTable" }, 19 }
|
||||
};
|
||||
|
@ -80,6 +80,14 @@ class CfgLootTable_MADCUP
|
||||
{ { "FAK", "magazine" }, 20 }
|
||||
};
|
||||
};
|
||||
class Safes
|
||||
{
|
||||
items[] = {
|
||||
{ { "ItemSafe", "magazine" }, 1 },
|
||||
// { { "ItemSafe_s", "magazine" }, 1 }, // Variant with less Load than the normal Safe
|
||||
{ { "ItemGunSafe", "magazine" }, 1 }
|
||||
};
|
||||
};
|
||||
class Repairs
|
||||
{
|
||||
items[] = {
|
||||
@ -424,7 +432,7 @@ class CfgLootTable_MADCUP
|
||||
{ { "ItemBattery", "magazine" }, 5 },
|
||||
{ { "ItemCables", "magazine" }, 5 },
|
||||
{ { "ItemPipe", "magazine" }, 5 },
|
||||
{ { "ItemSafe", "magazine" }, 1 },
|
||||
{ { "Safes", "CfgLootTable" }, 1 },
|
||||
{ { "ItemBarrelE", "magazine" }, 1 }
|
||||
};
|
||||
};
|
||||
@ -433,7 +441,7 @@ class CfgLootTable_MADCUP
|
||||
{
|
||||
items[] = {
|
||||
{ { "VehicleDocs", "CfgLootTable" }, 4 },
|
||||
{ { "ItemSafe", "magazine" }, 1 },
|
||||
{ { "Safes", "CfgLootTable" }, 1 },
|
||||
{ { "ItemLockbox", "magazine" }, 4 },
|
||||
{ { "jerrycan_epoch", "magazine" }, 5 },
|
||||
{ { "CircuitParts", "magazine" }, 6 },
|
||||
@ -1557,7 +1565,7 @@ class CfgLootTable_MADCUP
|
||||
{ { "KitCinderWall", "magazine" }, 5 },
|
||||
{ { "KitFoundation", "magazine" }, 5 },
|
||||
{ { "KitWoodFoundation", "magazine" }, 14 },
|
||||
{ { "ItemSafe", "magazine" }, 1 }
|
||||
{ { "Safes", "CfgLootTable" }, 1 }
|
||||
};
|
||||
};
|
||||
|
||||
@ -1570,7 +1578,7 @@ class CfgLootTable_MADCUP
|
||||
{ { "BaseBuilding", "CfgLootTable" }, 20 },
|
||||
{ { "GenericLarge", "CfgLootTable" }, 24 },
|
||||
{ { "ItemLockbox", "magazine" }, 4 },
|
||||
{ { "ItemSafe", "magazine" }, 1 },
|
||||
{ { "Safes", "CfgLootTable" }, 1 },
|
||||
{ { "Generic", "CfgLootTable" }, 10 },
|
||||
{ { "Tools", "CfgLootTable" }, 19 }
|
||||
};
|
||||
|
28
changelog.md
28
changelog.md
@ -1,6 +1,34 @@
|
||||
# Change Log
|
||||
All changes for [Arma 3](https://arma3.com/) [Epoch Mod](https://epochmod.com) are listed in this changelog.
|
||||
|
||||
## [1.3.1.0] - 2019-03-28
|
||||
### Added
|
||||
- Upgradeable PlotPoles (S/M/L/XL/XXL) with different Range / Limits
|
||||
- https://plays.tv/video/5c9925a6770ac037e4
|
||||
- On entering temp Vehicles, Payers will get a hint "Vehicle will despawn after restart"
|
||||
- 2nd Variant of a lockable Safe "GunSafe_EPOCH"
|
||||
- https://plays.tv/video/5c9926466b9589c5c6
|
||||
- License Plates of Vehicles can now be changed by Dyna-Menu (Space-Menu)
|
||||
- https://plays.tv/video/5c99293fdea086f319
|
||||
- Put Krypto to ground (within Inventory)
|
||||
- https://plays.tv/video/5c992604c58e543366
|
||||
### Fixed
|
||||
- Prevent Traders from spawning on containers
|
||||
- Advanced Vehicle Repair was not working as expected within custom "SafeZones"
|
||||
- Reset Toxic after revive
|
||||
- Delay for accurate position on swap building while basebuilding
|
||||
### Changed
|
||||
### Server Owners
|
||||
- Configs for upgradeable PlotPoles are located in ("CfgEpochclient" >> "CfgJammers")
|
||||
- Fixed BE-Kicks in DLC Shop
|
||||
- Another login stuck fix (Loadabs-Check)
|
||||
- Added possibility the usage of "Krypto" as needed material for building upgrades
|
||||
- Example CfgBaseBuilding:
|
||||
- upgradeBuilding[] = {{"PlotPole_L_EPOCH",{{"Krypto",1500}}}};
|
||||
- Fixed Ban for "commandMenu - RscMenuEngage"
|
||||
- New var "AutoLockStorages" in epochconfig.hpp to auto-lock storages on server start
|
||||
- Added optional safe variant with less Load than the normal Safe "ItemSafe_s"
|
||||
|
||||
## [1.3.0.0] - 2019-01-31
|
||||
### Added
|
||||
- Several A2 Vehicles ported into Epoch
|
||||
|
Loading…
Reference in New Issue
Block a user