Merge pull request #477 from EpochModTeam/experimental

Release 0.3.7
This commit is contained in:
vbawol 2016-01-28 14:25:22 -06:00
commit 41a7c87a7a
245 changed files with 63541 additions and 4017 deletions

View File

@ -1,7 +1,72 @@
WIP **Client**
[Added] Hotwire Kit [Added] Drinking a Soda now returns a Empty Soda Can (ItemSodaEmpty).
[Added] Key Makers Kit [Added] Eating a can of food now returns a Empty Tin Can (ItemEmptyTin).
[Added] Keys in colors: (Black,Red,Green,Blue,Yellow) [Added] Repack magazines feature. Simply select a magazine and press the "Repack" button.
[Added] 55 Gallon Fuel Barrel (Full/Empty) [Added] 55 Gallon (210 liters) Fuel Barrel that can be used to refill/siphon vehicles. (Full - ItemBarrelF,Empty - ItemBarrelE).
[Added] Metal Pipes [Added] Ability to siphon fuel from other fuel sources like gas stations and gas tanks (transportFuel > 0).
[Added] Documents (Trash,Vehicle Upgrades) [Added] Crafting Burlap (ItemBurlap) from 2x Hemp (ItemKiloHemp) while at a workbench.
[Added] Crafting of Plywood sheets (ItemPlywoodPack) from 3x Wood Log (WoodLog_EPOCH).
[Added] Crafting of Aluminum Bars (ItemAluminumBar) from 6x Empty Soda Cans (ItemSodaEmpty) and one jar of water (water_epoch). Also requires a fire nearby.
[Added] Crafting of Tin Bars (ItemTinBar) from 6x Empty Soda Cans (ItemEmptyTin) and one jar of water (water_epoch). Also requires a fire nearby.
[Added] Copper Bars (ItemCopperBar) that can be crafted from cables (ItemCables) nearby a fire. Cables can also be made from Copper Bars at a workbench.
[Added] Briefcase Full (ItemBriefcaseGold100oz) crafted from ten 10oz Gold bars and a Empty Briefcase (ItemBriefcaseE).
[Added] Crafting of Bars (ItemGoldBar and ItemSilverBar) from Gold (PartOreGold) and Silver (PartOreSilver) Ores.
[ADDED-WIP] Pack/unpack empty backpacks into carryable magazine items.
[ADDED-WIP] Hotwire Kit (ItemHotwire).
[ADDED-WIP] Key Makers Kit (ItemKeyKit).
[ADDED-WIP] Keys in colors: (Black ItemKey,ItemKeyRed,ItemKeyGreen,ItemKeyBlue,ItemKeyYellow).
[ADDED-WIP] Metal Pipes (ItemPipe).
[ADDED-WIP] Documents (Trash,Books,Vehicle Upgrades) (ItemDoc1-8, ItemVehDoc1-4).
[ADDED-WIP] Light Bulb (ItemBulb).
[Changed] Upgrading wood Stud wall and Tower to Plywood covered versions requires Plywood (ItemPlywoodPack).
[Changed] Debug monitor now shows all custom stats dynamically based on 'customVarsDefaults' config.
[Changed] Increased angle that the player is able to aim up.
[Changed] Drinking Alcohol increases the new "Alcohol" stat instead of directly effecting blood pressure.
[Changed] Crafting Hesco barrier now require 3x Burlap.
[Changed] Crafting wood and metal spike traps now also require Sticks and a Hydraulic Jack.
[Changed] Change all publicVariableServer calls to use remoteExec calls for better performance.
[Fixed] Previous patch had incorrectly reduced armor values of the Cultist.
[Fixed] Male(Female) characters lose vest items after equipping opposite sex's vest.
[Fixed] Secure storage locking mechanism improvements should prevent any unwanted intrusions.
[Fixed] Reworked login to prevent getting stuck at "waiting for inventory".
[Fixed] Prevented death just after revive due still having high blood pressure.
[Fixed] Incorrectly being able to sell/buy items from a dead trader.
[Fixed] Snakes now require line of sight to bite player.
[Fixed] Custom epoch swing animations for Hatchet and sledge now work correctly.
[Fixed] Boss Sapper incorrectly cleaned up before detonation.
**Server**
[Added] Newly world spawned vehicles now have randomized damage.
[Added] if 5th array element is true 'telePos' config array can now use world position for teleport pads location.
[Added] Setting to control random magazine ammo counts in loot spawner. CfgEpochClient -> randomizeMagazineAmmoCount (default: true)
[Added] Debug box now dynamically spawns with flood lights to help players see inside the box at night.
[Added] CfgEpochClient 'WorldInteractions' config now stores all environmental loot classes and types for all supported maps.
[Added] CUP terrain pack support added:
- Sahrani
- Southern Sahrani
- United Sahrani
- Porto
- Utes
- Chernarus
- Chernarus Summer
- Desert
- Takistan
- Zargabad
- Shapur
- Proving Grounds
- Bukovina
- Bystrica
- Takistan Mountains
[Info] For CUP, use double quotes around mod for spaces in folder Example: -mod="@Epoch;@CUP Terrains - Core;@CUP Terrains - Maps;"
[Changed] Removed support for AIA terrain pack in favor of CUP terrain pack.
[Changed] Empty fuel barrel added to large trash and vehicle loot tables.
[Changed] Earthquakes with mineral veins spawn chances increased with less players.
[Changed] Driver or passengers of a driverless can now control vehicle locks. Also only the owner can control locks from outside of a occupied vehicle.
[Changed] Commented out Halloween masks from loot tables.
[Changed] Player positions in database now use Epoch precision position functions.
[Updated] New Battleye remoteExec.txt for added remoteExec calls.
[Fixed] Admin tools map AI markers not working.
[Fixed] Static propPos campfires not working on Takistan due to disabled simulation.
[Fixed] When killed instead of saving blank array delete (object,trader,vehicle) data from database.
[Info] Removed old .bikey and added new one for 0370.

View File

@ -1,2 +1,9 @@
Arma 3: Epoch Mod is licensed under: Epoch Mod for Arma 3
http://creativecommons.org/licenses/by-nc-nd/4.0/ http://epochmod.com
by Epoch Mod Team
https://github.com/EpochModTeam/Epoch
The contents of this github are under the following license:
http://www.bistudio.com/community/licenses/arma-public-license-share-alike
Keep this file and file headers with attribution intact for proper use.

View File

@ -10,8 +10,8 @@ https://github.com/EpochModTeam/Epoch/releases
License: License:
===== =====
Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. Arma Public License Share Alike (APL-SA).
http://creativecommons.org/licenses/by-nc-nd/4.0/ http://www.bistudio.com/community/licenses/arma-public-license-share-alike
Developers Developers
===== =====

File diff suppressed because one or more lines are too long

View File

@ -5,7 +5,7 @@ StorageSlotsLimit = 1500; // Max storage slots allowed. Warning! Higher the numb
BuildingSlotsLimit = 1500; // Max building slots allowed. Warning! Higher the number lower performance. BuildingSlotsLimit = 1500; // Max building slots allowed. Warning! Higher the number lower performance.
// Time based // Time based
StaticDateTime[] = {2035,6,10,7,0}; // {0,0,0,8,0} would forces the server to start at 8am each time it is started while allowing the year, month and day to stay real time. Any values left at 0 will result in no change. StaticDateTime[] = {}; // {0,0,0,8,0} would forces the server to start at 8am each time it is started while allowing the year, month and day to stay real time. Any values left at 0 will result in no change.
timeDifference = 0; // Server uses real time this will allow you to offset just the hour. timeDifference = 0; // Server uses real time this will allow you to offset just the hour.
timeMultiplier = 4; // Sets a time multiplier for in-game time. The command range is now capped at 0.1 - 120 to avoid performance problems. timeMultiplier = 4; // Sets a time multiplier for in-game time. The command range is now capped at 0.1 - 120 to avoid performance problems.
lootMultiplier = 0.5; // 1 = max loot bias. This controls how much loot can payout per Epoch loot container. lootMultiplier = 0.5; // 1 = max loot bias. This controls how much loot can payout per Epoch loot container.

View File

@ -0,0 +1,17 @@
@ECHO OFF
SET STEAMUN=admin@youremail.net
SET STEAMPW=chamgeme
SET ARMASVRPATH=C:\Arma3Server
::(Full client\server package)
SET ARMAAPPID=107410
::(Dedicated server package)
::SET ARMAAPPID=233780
::(Development version)
::SET ARMAAPPID=107410 -beta development
:: more info https://community.bistudio.com/wiki/Arma_3_Dedicated_Server
steamcmd.exe +login %STEAMUN% %STEAMPW% +force_install_dir "%ARMASVRPATH%" "+app_update %ARMAAPPID%" validate +quit

View File

@ -0,0 +1,22 @@
@ECHO OFF
SET STEAMUN=admin@youremail.net
SET STEAMPW=chamgeme
SET ARMASVRPATH=C:\Arma3Server
SET ARMAAPPID=107410
:: Use -mod line with quotes to support spaces in folder
:: Example: -mod=@Epoch;@bornholm;
:: Install Bornholm
SET MODFOLDER=@bornholm
SET ARMAWORKSHOPID=428181330
:: remove old folder
rd /s/q "%ARMASVRPATH%\%MODFOLDER%"
:: update workshop mod
START "" /WAIT steamcmd.exe +login %STEAMUN% %STEAMPW% +workshop_download_item %ARMAAPPID% %ARMAWORKSHOPID% +quit
:: copy files back to server
xcopy /s/e/y/q/i "steamapps\workshop\content\%ARMAAPPID%\%ARMAWORKSHOPID%" "%ARMASVRPATH%\%MODFOLDER%"

View File

@ -0,0 +1,37 @@
@ECHO OFF
SET STEAMUN=admin@youremail.net
SET STEAMPW=chamgeme
SET ARMASVRPATH=C:\Arma3Server
SET ARMAAPPID=107410
:: Use -mod line with quotes to support spaces in folder
:: Example: -mod="@Epoch;@CUP Terrains - Core;@CUP Terrains - Maps;"
:: Install CUP CORE
SET MODFOLDER=@CUP Terrains - Core
SET ARMAWORKSHOPID=583496184
:: remove old folder
rd /s/q "%ARMASVRPATH%\%MODFOLDER%"
:: update workshop mod
START "" /WAIT steamcmd.exe +login %STEAMUN% %STEAMPW% +workshop_download_item %ARMAAPPID% %ARMAWORKSHOPID% +quit
:: copy files back to server
xcopy /s/e/y/q/i "steamapps\workshop\content\%ARMAAPPID%\%ARMAWORKSHOPID%" "%ARMASVRPATH%\%MODFOLDER%"
:: Install CUP MAPS
SET MODFOLDER=@CUP Terrains - Maps
SET ARMAWORKSHOPID=583544987
:: remove old folder
rd /s/q "%ARMASVRPATH%\%MODFOLDER%"
:: update workshop mod
START "" /WAIT steamcmd.exe +login %STEAMUN% %STEAMPW% +workshop_download_item %ARMAAPPID% %ARMAWORKSHOPID% +quit
:: copy files back to server
xcopy /s/e/y/q/i "steamapps\workshop\content\%ARMAAPPID%\%ARMAWORKSHOPID%" "%ARMASVRPATH%\%MODFOLDER%"

View File

@ -3,12 +3,17 @@ SET STEAMUN=admin@youremail.net
SET STEAMPW=chamgeme SET STEAMPW=chamgeme
SET ARMASVRPATH=C:\Arma3Server SET ARMASVRPATH=C:\Arma3Server
SET ARMAAPPID=107410 SET ARMAAPPID=107410
:: Workshop IDs:
:: EpochExperimental = 455221958
:: Normal Epoch = 421839251
SET ARMAWORKSHOPID=421839251 SET ARMAWORKSHOPID=421839251
:: remove mod folder :: remove mod folder
rd /s/q "%ARMASVRPATH%\@Epoch" rd /s/q "%ARMASVRPATH%\@Epoch"
:: update workshop mod :: update workshop mod
START "" /WAIT steamcmd.exe +login %STEAMUN% %STEAMPW% +workshop_download_item %ARMAAPPID% %ARMAWORKSHOPID% validate +quit START "" /WAIT steamcmd.exe +login %STEAMUN% %STEAMPW% +workshop_download_item %ARMAAPPID% %ARMAWORKSHOPID% validate +quit
:: copy files back to server
:: copy mod from steamcmd cache to server
xcopy /s/e/y/q/i "steamapps\workshop\content\%ARMAAPPID%\%ARMAWORKSHOPID%" "%ARMASVRPATH%\@Epoch" xcopy /s/e/y/q/i "steamapps\workshop\content\%ARMAAPPID%\%ARMAWORKSHOPID%" "%ARMASVRPATH%\@Epoch"
:: steamcmd.exe +login %STEAMUN% %STEAMPW% +force_install_dir "%ARMASVRPATH%" "+app_update %ARMAAPPID%" validate +quit

View File

@ -0,0 +1,23 @@
@ECHO OFF
SET STEAMUN=admin@youremail.net
SET STEAMPW=chamgeme
SET ARMASVRPATH=C:\Arma3Server
SET ARMAAPPID=107410
:: Requires CUP CORE and MAPS!
:: Use -mod line with quotes to support spaces in folder
:: Example: -mod="@Epoch;@CUP Terrains - Core;@CUP Terrains - Maps;@esseker"
:: Install Esseker
SET MODFOLDER=@esseker
SET ARMAWORKSHOPID=498101407
:: remove old folder
rd /s/q "%ARMASVRPATH%\%MODFOLDER%"
:: update workshop mod
START "" /WAIT steamcmd.exe +login %STEAMUN% %STEAMPW% +workshop_download_item %ARMAAPPID% %ARMAWORKSHOPID% +quit
:: copy files back to server
xcopy /s/e/y/q/i "steamapps\workshop\content\%ARMAAPPID%\%ARMAWORKSHOPID%" "%ARMASVRPATH%\%MODFOLDER%"

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.

View File

@ -1 +1 @@
5 "" !="epoch_server_save_vehicles \[.+\]" 5 "" !="epoch_server_checkplayer [A-Z]{1} [A-Za-z]{4,10} [0-9]{1,3}-[0-9]{1,3}:[0-9]{1,3} \(.+\) REMOTE" !="epoch_server_(save(_vehicles|building)|(lock|pack)Storage|(upgrade|remove|paint|maint)build) \[.+\]" !="epoch_server_((load|respawn|dead|invite|revive|teleport)Player|(upgrade|updateplayer|create|delete)Group) \[.+\]" !="epoch_server_(knockDownTree|mineRocks|lootAnimal|handle_(say3d|switchmove|sapperObjs)) \[.+\]" !="epoch_server_((repair|fill|lock)Vehicle|(loot|fill)Container|(store|take)Crypto|make(NPC|)Trade) \[.+\]" !="epoch_server_(tradeRequest|equippeditem|packJack|create(object|AirDrop)|airDropCrate|destroytrash|unpackBackpack) \[.+\]" !="epoch_(localcleanup|fnc_saveplayer) \[.+\]"

View File

@ -1,8 +1,7 @@
//new2 //new2
7 EPOCH_C_SET !="!isNil \"EPOCH_C_SET\"" !="_array = EPOCH_C_SET;" !="EPOCH_C_SET = nil;" 7 EPOCH_C_SET !="!isNil \"EPOCH_C_SET\"" !="_array = EPOCH_C_SET;" !="EPOCH_C_SET = nil;"
7 EPOCH_GROUP_Delete_PVS !="EPOCH_GROUP_Delete_PVS = [player,Epoch_personalToken];"
7 "BIS_fnc_dynamictext" !="\"BIS_fnc_dynamictext"\" !", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;" !", 0, 0.4, 5, 2, 0, 2] spawn bis_fnc_dynamictext;" !", 0, 1, 6, 2, 0, 1] spawn bis_fnc_dynamictext;" !"snil '_fnc_scriptName') then {_fnc_scriptName}" 7 "BIS_fnc_dynamictext" !="\"BIS_fnc_dynamictext"\" !", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;" !", 0, 0.4, 5, 2, 0, 2] spawn bis_fnc_dynamictext;" !", 0, 1, 6, 2, 0, 1] spawn bis_fnc_dynamictext;" !"snil '_fnc_scriptName') then {_fnc_scriptName}"
7 forceRespawn 7 forceRespawn !="reviveHandleForceRespawnAction"
7 setFriend 7 setFriend
7 setAmmo 7 setAmmo
7 RscDebugConsole_watch !="RscDebugConsole_watchSave = [true,true,true,true];" 7 RscDebugConsole_watch !="RscDebugConsole_watchSave = [true,true,true,true];"
@ -22,9 +21,9 @@
7 allowDamage !="_unit allowDamage false;" !="_unit allowDamage true;" !="player allowDamage true;" !="vehicle player allowDamage true;" !="player allowDamage false;" 7 allowDamage !="_unit allowDamage false;" !="_unit allowDamage true;" !="player allowDamage true;" !="vehicle player allowDamage true;" !="player allowDamage false;"
7 addWeaponCargo !="_acceptHolder addWeaponCargo [_wWeapon, 1] ;" 7 addWeaponCargo !="_acceptHolder addWeaponCargo [_wWeapon, 1] ;"
7 onMapSingleClick !="onMapSingleClick '';" 7 onMapSingleClick !="onMapSingleClick '';"
7 addMagazine !"addMagazineCargo" !="player addMagazine _craftItem;" !="player addMagazine \"jerrycanE_epoch\";" !="player addMagazine \"emptyjar_epoch\";" !="player addMagazine \"jerrycan_epoch\";" !="player addMagazine \"Hatchet_swing\";" !="player addMagazine [(_x select 0),(_x select 1)]" !="player addMagazine _x;" !="if !(player canAdd (_x select 0)) exitWith {};\nplayer addMagazine[_x select 0, _x select 1];" 7 addMagazine !"addMagazineCargo" !="player addMagazine [_item, _magazineSizeMax];" !="player addMagazine [_item, floor (_magazineSize % _magazineSizeMax)];" !="player addMagazine [(_x select 0),(_x select 1)]" !="player addMagazine \"sledge_swing\";" !="player addMagazine \"Hatchet_swing\";" !="player addMagazine \"stick_swing\";"
7 addMagazineCargo !"_dogHolder addMagazineCargo [\"RabbitCarcass_EPOCH\", 1]" !"_dogHolder addMagazineCargo [\"Pelt_EPOCH\", 1]" !"_dogHolder addMagazineCargo [\"Venom_EPOCH\", 1]" !"_dogHolder addMagazineCargo [\"SnakeCarcass_EPOCH\", 1]" !"_dogHolder addMagazineCargo [\"ChickenCarcass_EPOCH\", 1]" !="_acceptHolder addMagazineCargo [_wAmmo, 1] ;" 7 addMagazineCargo !"_dogHolder addMagazineCargo [\"RabbitCarcass_EPOCH\", 1]" !"_dogHolder addMagazineCargo [\"Pelt_EPOCH\", 1]" !"_dogHolder addMagazineCargo [\"Venom_EPOCH\", 1]" !"_dogHolder addMagazineCargo [\"SnakeCarcass_EPOCH\", 1]" !"_dogHolder addMagazineCargo [\"ChickenCarcass_EPOCH\", 1]" !="_acceptHolder addMagazineCargo [_wAmmo, 1] ;"
7 addItem !="player addItem _item;" !="player addItem _craftItem;" !="player addItem _x;" !="_plyr addItemToVest _missionItem;" !="axeVIP addItemToVest _item;" !="_plyr addItemToVest _missionItem;" !="EPOCH_fnc_addItemOverflow" 7 addItem !="{player addItemToVest _x} forEach _vestItems;" !="player addItem _item;" !="_plyr addItemToVest _missionItem;" !="axeVIP addItemToVest _item;" !="_plyr addItemToVest _missionItem;" !="EPOCH_fnc_addItemOverflow"
7 addBackPack 7 addBackPack
7 addMissionEventHandler !="addMissionEventHandler ['Draw3D',_var + \"call Epoch_gui3DCooldownEH;\"];" !="addMissionEventHandler ['Draw3D',_var + \"call epoch_gui3dModelPosEH;\"];" !="addMissionEventHandler ['Draw3D',_var + \"call epoch_gui3dWorldPosEH;\"];" !="addMissionEventHandler [\n"ended",\n{\n\nBIS_fnc_missionHandlers_end = _this;" 7 addMissionEventHandler !="addMissionEventHandler ['Draw3D',_var + \"call Epoch_gui3DCooldownEH;\"];" !="addMissionEventHandler ['Draw3D',_var + \"call epoch_gui3dModelPosEH;\"];" !="addMissionEventHandler ['Draw3D',_var + \"call epoch_gui3dWorldPosEH;\"];" !="addMissionEventHandler [\n"ended",\n{\n\nBIS_fnc_missionHandlers_end = _this;"
7 removeMissionEventHandler !="removeMissionEventHandler [\"Draw3D\", _id];" 7 removeMissionEventHandler !="removeMissionEventHandler [\"Draw3D\", _id];"
@ -32,7 +31,7 @@
7 removeAllItems 7 removeAllItems
7 removeAllActions 7 removeAllActions
7 setViewDistance !"setViewDistance 1600" 7 setViewDistance !"setViewDistance 1600"
7 createGroup !="_grp = createGroup RESISTANCE;" !="if (isserver) then {\n_group = creategroup sidelogic;" !="grpVIPGeneral = createGroup RESISTANCE;" !="_grp = createGroup side _plyr;" !="_grp = createGroup side player;" !="_grp = createGroup _side;" !="_grp = createGroup (side _plyr);" !="createcenter sidelogic;\n_grpLogic = creategroup sidelogic;\nbis_functions_mainscope" 7 createGroup !="EPOCH_server_createGroup" !="_grp = createGroup RESISTANCE;" !="if (isserver) then {\n_group = creategroup sidelogic;" !="grpVIPGeneral = createGroup RESISTANCE;" !="_grp = createGroup side _plyr;" !="_grp = createGroup side player;" !="_grp = createGroup _side;" !="_grp = createGroup (side _plyr);" !="createcenter sidelogic;\n_grpLogic = creategroup sidelogic;\nbis_functions_mainscope"
7 createVehicleCrew 7 createVehicleCrew
7 createVehicleLocal !"\"#particlesource\" createVehicleLocal" !"\"#lightpoint\" createVehicleLocal" !"\"BloodSplat\" createVehicleLocal" !"[\"lightning1_F\", \"lightning2_F\"] call BIS_fnc_selectRandom;\n_lighting = _class createVehicleLocal" 7 createVehicleLocal !"\"#particlesource\" createVehicleLocal" !"\"#lightpoint\" createVehicleLocal" !"\"BloodSplat\" createVehicleLocal" !"[\"lightning1_F\", \"lightning2_F\"] call BIS_fnc_selectRandom;\n_lighting = _class createVehicleLocal"
7 createUnit !="_unit = _grp createUnit[(_arrUnits select _i), _pos, [], 0, \"FORM\"];" !="_driver = _grp createUnit[\"I_UAV_AI\", position _unit, [], 0, \"CAN_COLLIDE\"];" !="axeGeneral = grpVIPGeneral createUnit ["I_officer_F", axeGeneralPos, [], 1, "CAN_COLLIDE"];" 7 createUnit !="_unit = _grp createUnit[(_arrUnits select _i), _pos, [], 0, \"FORM\"];" !="_driver = _grp createUnit[\"I_UAV_AI\", position _unit, [], 0, \"CAN_COLLIDE\"];" !="axeGeneral = grpVIPGeneral createUnit ["I_officer_F", axeGeneralPos, [], 1, "CAN_COLLIDE"];"
@ -51,8 +50,8 @@
7 displaySetEventHandler 7 displaySetEventHandler
7 ctrlSetEventHandler !"BIS_fnc_guiMessage_status" !"ctrlSetEventHandler ['LBDblClick', '_this call" !="_buttonRespawn ctrlseteventhandler [\"buttonclick\",\"with uinamespace do {['buttonRespawn'," !="_ctrl ctrlSetEventHandler [\"mouseEnter\"" 7 ctrlSetEventHandler !"BIS_fnc_guiMessage_status" !"ctrlSetEventHandler ['LBDblClick', '_this call" !="_buttonRespawn ctrlseteventhandler [\"buttonclick\",\"with uinamespace do {['buttonRespawn'," !="_ctrl ctrlSetEventHandler [\"mouseEnter\""
7 addMPEventHandler 7 addMPEventHandler
7 addEventHandler !"displayAddEventHandler" !"ctrlAddEventHandler" !"FiredNear" !"EpeContactStart" !"InventoryClosed" !"GetOut" !"InventoryOpened" !"local" !"Respawn" !"Put" !"Take" !"Fired" !"Killed" !" [\"PostReset\",{BIS_EnginePPReset = true;} ];" !"_logic addeventhandler [\n\"local\"" 7 addEventHandler !"displayAddEventHandler" !"ctrlAddEventHandler" !"[\"FiredNear"\" !"[\"EpeContactStart"\" !"[\"GetOut"\" !"[\"local"\" !"[\"PostReset"\" !"[\"TaskSetAsCurrent"\" !="player addEventHandler [_x,([\"CfgEpochClient\", _x, \"\"] call EPOCH_fnc_returnConfigEntryV2)];"
7 displayAddEventHandler !"[_display] call _fnc_animate;" !"tVersion select 4) == \"Development\") then" !"_display displayaddeventhandler\n[\n\"mousemoving\"," !"(findDisplay 46) displayAddEventHandler [\"KeyDown\",\"true\"];" !"(findDisplay 46) displayAddEventHandler [\"KeyDown\",\"_this call EPOCH_KeyDown\"];" !="_addCase = _display46 displayAddEventHandler ['KeyDown',{_this call EPOCH_KeyDown;}];" !"_display displayaddeventhandler [\"unload\",\"uinamespace setvariable ['BIS_fnc_guiMess" !="findDisplay -1337 displayAddEventHandler ['Unload'" !="_display displayaddeventhandler [\"keydown\",\"with uinamespace do {['keyDown'" 7 displayAddEventHandler !="(findDisplay 46) displayAddEventHandler [\"KeyDown\",\"true\"];" !="_display displayAddEventHandler [_x,([\"CfgEpochClient\", _x, \"\"] call EPOCH_fnc_returnConfigEntryV2)];" !"[_display] call _fnc_animate;" !"tVersion select 4) == \"Development\") then" !"_display displayaddeventhandler\n[\n\"mousemoving\"," !="_addCase = _display46 displayAddEventHandler ['KeyDown',{_this call EPOCH_KeyDown;}];" !"_display displayaddeventhandler [\"unload\",\"uinamespace setvariable ['BIS_fnc_guiMess" !="findDisplay -1337 displayAddEventHandler ['Unload'" !="_display displayaddeventhandler [\"keydown\",\"with uinamespace do {['keyDown'"
7 ctrlAddEventHandler !"rCfg >> \"refreshDelay\");" !" [\n\"draw\"," !" [\"buttonclick\"," !="(uiNamespace getVariable 'ESP_map') ctrlAddEventHandler['Draw', '_esp_targets = EPOCH_ESPMAP_TARGETS;" !="ctrlAddEventHandler ['MouseButtonDown'" !="(_display displayctrl _idc) ctrlAddEventHandler [\"LBSelChanged\"," !="_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)])];" 7 ctrlAddEventHandler !"rCfg >> \"refreshDelay\");" !" [\n\"draw\"," !" [\"buttonclick\"," !="(uiNamespace getVariable 'ESP_map') ctrlAddEventHandler['Draw', '_esp_targets = EPOCH_ESPMAP_TARGETS;" !="ctrlAddEventHandler ['MouseButtonDown'" !="(_display displayctrl _idc) ctrlAddEventHandler [\"LBSelChanged\"," !="_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)])];"
7 removeAllEventHandlers !="ctrlRemoveAllEventHandlers" !="_vehicle removeAllEventHandlers \"GetOut\";" !="_sapper removeAllEventHandlers \"Hit\";\n_sapper removeAllEventHandlers \"FiredNear\";" !="_unit removeAllEventHandlers \"Hit\";\n_unit removeAllEventHandlers \"FiredNear\";" !="_display46 displayRemoveAllEventHandlers 'KeyDown';" 7 removeAllEventHandlers !="ctrlRemoveAllEventHandlers" !="_vehicle removeAllEventHandlers \"GetOut\";" !="_sapper removeAllEventHandlers \"Hit\";\n_sapper removeAllEventHandlers \"FiredNear\";" !="_unit removeAllEventHandlers \"Hit\";\n_unit removeAllEventHandlers \"FiredNear\";" !="_display46 displayRemoveAllEventHandlers 'KeyDown';"
7 removeAllMissionEventHandlers 7 removeAllMissionEventHandlers

View File

@ -1,14 +1,14 @@
// EPOCH SERVER CONFIG // EPOCH SERVER CONFIG
// GLOBAL SETTINGS // GLOBAL SETTINGS
hostname = "EpochMod.com (0.3.6|1.54) ID02 YourHost"; hostname = "EpochMod.com (0.3.7|1.54) ID02 YourHost";
password = ""; password = "";
passwordAdmin = "!CHANGE_THIS_PASSWORD!"; passwordAdmin = "!CHANGE_THIS_PASSWORD!";
serverCommandPassword = "!CHANGE_THIS_PASSWORD!"; serverCommandPassword = "!CHANGE_THIS_PASSWORD!";
logFile = "A3Master.log"; logFile = "A3Master.log";
verifySignatures = 2; verifySignatures = 2;
BattlEye = 1; BattlEye = 1;
requiredBuild = 133570; requiredBuild = 133741;
// WHITELIST FILE TYPES // WHITELIST FILE TYPES
allowedLoadFileExtensions[] = {:}; allowedLoadFileExtensions[] = {:};

View File

@ -222,7 +222,7 @@ class FSM
" _sound = _sounds select (floor (random (count _sounds)));" \n " _sound = _sounds select (floor (random (count _sounds)));" \n
" _animalAgent say3D _sound;" \n " _animalAgent say3D _sound;" \n
" EPOCH_say3D_PVS = [player, _animalAgent, (EPOCH_sounds find _sound),Epoch_personalToken];" \n " EPOCH_say3D_PVS = [player, _animalAgent, (EPOCH_sounds find _sound),Epoch_personalToken];" \n
" publicVariableServer ""EPOCH_say3D_PVS"";" \n " EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
" };" \n " };" \n
"};" \n "};" \n
"" \n "" \n
@ -358,7 +358,7 @@ class FSM
" if (_isDog) then {" \n " if (_isDog) then {" \n
" _animalAgent say3D ""dog_cry"";" \n " _animalAgent say3D ""dog_cry"";" \n
" EPOCH_say3D_PVS = [player, _animalAgent, 3,Epoch_personalToken];" \n " EPOCH_say3D_PVS = [player, _animalAgent, 3,Epoch_personalToken];" \n
" publicVariableServer ""EPOCH_say3D_PVS"";" \n " EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
" };" \n " };" \n
" };" \n " };" \n
" _courageTest = false;" \n " _courageTest = false;" \n
@ -369,7 +369,7 @@ class FSM
" if (_isDog) then {" \n " if (_isDog) then {" \n
" _animalAgent say3D ""dog_bark"";" \n " _animalAgent say3D ""dog_bark"";" \n
" EPOCH_say3D_PVS = [player, _animalAgent, 2,Epoch_personalToken];" \n " EPOCH_say3D_PVS = [player, _animalAgent, 2,Epoch_personalToken];" \n
" publicVariableServer ""EPOCH_say3D_PVS"";" \n " EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
" _animalAgent playMoveNow ""Dog_Bark""; " \n " _animalAgent playMoveNow ""Dog_Bark""; " \n
" };" \n " };" \n
" _animalAgent setDir _dirTo; " \n " _animalAgent setDir _dirTo; " \n
@ -379,7 +379,7 @@ class FSM
" if (random 1 < 0.5) then { " \n " if (random 1 < 0.5) then { " \n
" _animalAgent say3D ""dog_bark"";" \n " _animalAgent say3D ""dog_bark"";" \n
" EPOCH_say3D_PVS = [player, _animalAgent, 2,Epoch_personalToken];" \n " EPOCH_say3D_PVS = [player, _animalAgent, 2,Epoch_personalToken];" \n
" publicVariableServer ""EPOCH_say3D_PVS"";" \n " EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
" };" \n " };" \n
" };" \n " };" \n
"};"/*%FSM</STATEINIT""">*/; "};"/*%FSM</STATEINIT""">*/;

View File

@ -451,7 +451,7 @@ class FSM
"" \n "" \n
"_copter say3D ""drone_alert0"";" \n "_copter say3D ""drone_alert0"";" \n
"EPOCH_say3D_PVS = [player, _copter, 10,Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player, _copter, 10,Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"" \n "" \n
"_troopsOnGround = true;" \n "_troopsOnGround = true;" \n
"(driver _copter) action [""lightOn"", _copter];" \n "(driver _copter) action [""lightOn"", _copter];" \n

View File

@ -688,7 +688,7 @@ class FSM
"if((random 100) < (_countNrPlyrs * 10))then{" \n "if((random 100) < (_countNrPlyrs * 10))then{" \n
"[_dog, _plyr] say3D ""dog_cry"";" \n "[_dog, _plyr] say3D ""dog_cry"";" \n
"EPOCH_say3D_PVS = [player, _dog, 17,Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player, _dog, 17,Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"};" \n "};" \n
"" \n "" \n
""/*%FSM</STATEINIT""">*/; ""/*%FSM</STATEINIT""">*/;
@ -730,7 +730,7 @@ class FSM
"if (floor(random 100)< 8) then {" \n "if (floor(random 100)< 8) then {" \n
"[_dog, _plyr] say3D ""dog_cry"";" \n "[_dog, _plyr] say3D ""dog_cry"";" \n
"EPOCH_say3D_PVS = [player, _dog, 17,Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player, _dog, 17,Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"_hunger = _hunger + 2;" \n "_hunger = _hunger + 2;" \n
"};" \n "};" \n
"" \n "" \n
@ -790,7 +790,7 @@ class FSM
"if (floor(random 100)<_dogNoise) then {" \n "if (floor(random 100)<_dogNoise) then {" \n
"[_dog, _plyr] say3D ""dog_cry"";" \n "[_dog, _plyr] say3D ""dog_cry"";" \n
"EPOCH_say3D_PVS = [player, _dog, 17,Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player, _dog, 17,Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"};" \n "};" \n
"" \n "" \n
"" \n "" \n
@ -850,7 +850,7 @@ class FSM
"if (floor(random 100) < 6) then {" \n "if (floor(random 100) < 6) then {" \n
"[_dog, _plyr] say3D ""dog_bark"";" \n "[_dog, _plyr] say3D ""dog_bark"";" \n
"EPOCH_say3D_PVS = [player, _dog, 2,Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player, _dog, 2,Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"};" \n "};" \n
"" \n "" \n
"if (floor(random 100)<_forgive) then {" \n "if (floor(random 100)<_forgive) then {" \n
@ -976,7 +976,7 @@ class FSM
"if (floor(random 100)<_dogNoise) then {" \n "if (floor(random 100)<_dogNoise) then {" \n
"[_dog, _plyr] say3D ""dog_cry"";" \n "[_dog, _plyr] say3D ""dog_cry"";" \n
"EPOCH_say3D_PVS = [player, _dog, 17,Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player, _dog, 17,Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"};" \n "};" \n
"" \n "" \n
"_criteria = ""(moveToCompleted _dog) || (_dog distance _moveTo < 1.5)"";" \n "_criteria = ""(moveToCompleted _dog) || (_dog distance _moveTo < 1.5)"";" \n
@ -1052,7 +1052,7 @@ class FSM
"if (floor(random 75)<_dogNoise) then {" \n "if (floor(random 75)<_dogNoise) then {" \n
"[_dog, _plyr] say3D ""dog_cry_quiet"";" \n "[_dog, _plyr] say3D ""dog_cry_quiet"";" \n
"EPOCH_say3D_PVS = [player, _dog, 17,Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player, _dog, 17,Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"};" \n "};" \n
"" \n "" \n
"_dirTo = [_dog, getPos (_nrPlyrs select 1)] call BIS_fnc_dirTo;" \n "_dirTo = [_dog, getPos (_nrPlyrs select 1)] call BIS_fnc_dirTo;" \n
@ -1092,7 +1092,7 @@ class FSM
"if (_rnd < 42) then {" \n "if (_rnd < 42) then {" \n
"[_dog, _plyr] say3D ""dog_bark"";" \n "[_dog, _plyr] say3D ""dog_bark"";" \n
"EPOCH_say3D_PVS = [player, _dog, 18,Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player, _dog, 18,Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"};" \n "};" \n
"" \n "" \n
"if (_rnd < 6) then {" \n "if (_rnd < 6) then {" \n
@ -1226,20 +1226,20 @@ class FSM
"if (_rnd< 12) then {" \n "if (_rnd< 12) then {" \n
"[_dog, _plyr] say3D ""dog_bark"";" \n "[_dog, _plyr] say3D ""dog_bark"";" \n
"EPOCH_say3D_PVS = [player, _dog, 2,Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player, _dog, 2,Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"};" \n "};" \n
"" \n "" \n
"if (_rnd < 6) then {" \n "if (_rnd < 6) then {" \n
"_hunger = _hunger + 1;" \n "_hunger = _hunger + 1;" \n
"[_dog, _plyr] say3D ""dog_cry"";" \n "[_dog, _plyr] say3D ""dog_cry"";" \n
"EPOCH_say3D_PVS = [player, _dog, 3,Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player, _dog, 3,Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"};" \n "};" \n
"" \n "" \n
"if ((_hunger > 56) && (_rnd < 48)) then {" \n "if ((_hunger > 56) && (_rnd < 48)) then {" \n
"[_dog, _plyr] say3D ""dog_cry"";" \n "[_dog, _plyr] say3D ""dog_cry"";" \n
"EPOCH_say3D_PVS = [player, _dog, 2,Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player, _dog, 2,Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"};" \n "};" \n
"" \n "" \n
"" \n "" \n
@ -1319,8 +1319,8 @@ class FSM
init = /*%FSM<STATEINIT""">*/"{" \n init = /*%FSM<STATEINIT""">*/"{" \n
" if !(alive _x) then {" \n " if !(alive _x) then {" \n
" if ((_x isKindOf ""Animal_Base_F"" && !(_x isKindOf ""Dog_Base_F"")) || (typeOf _x) in[""Epoch_Sapper_F"", ""Epoch_SapperB_F"", ""Epoch_Cloak_F"", ""I_UAV_01_F""]) then {" \n " if ((_x isKindOf ""Animal_Base_F"" && !(_x isKindOf ""Dog_Base_F"")) || (typeOf _x) in[""Epoch_Sapper_F"", ""Epoch_SapperB_F"", ""Epoch_Cloak_F"", ""I_UAV_01_F""]) then {" \n
" EPOCH_lootAnimal = [_x, player, Epoch_personalToken];" \n " [_x, player, Epoch_personalToken] remoteExec [""EPOCH_server_lootAnimal"",2];" \n
" publicVariableServer ""EPOCH_lootAnimal"";" \n "" \n
" };" \n " };" \n
" };" \n " };" \n
"" \n "" \n

View File

@ -387,8 +387,8 @@ class FSM
{ {
name = "do_drop"; name = "do_drop";
init = /*%FSM<STATEINIT""">*/"" \n init = /*%FSM<STATEINIT""">*/"" \n
"EPOCH_airDropCrate_PVS = [_axeCopter,_plyr,Epoch_personalToken];" \n "" \n
"publicVariableServer ""EPOCH_airDropCrate_PVS"";" \n "[_axeCopter,_plyr,Epoch_personalToken] remoteExec [""EPOCH_server_airDropCrate"",2];" \n
"" \n "" \n
"_dropDone = true;" \n "_dropDone = true;" \n
"" \n "" \n
@ -467,8 +467,8 @@ class FSM
"" \n "" \n
"_dropPos = _plyrPos;" \n "_dropPos = _plyrPos;" \n
"" \n "" \n
"EPOCH_createAirDrop_PVS = [player,Epoch_personalToken,_startPos];" \n "" \n
"publicVariableServer ""EPOCH_createAirDrop_PVS"";" \n "[player,Epoch_personalToken,_startPos] remoteExec [""EPOCH_Server_createAirDrop"",2];" \n
"" \n "" \n
"" \n "" \n
"_axeCopter = objNull;" \n "_axeCopter = objNull;" \n
@ -717,4 +717,4 @@ class FSM
"end" "end"
}; };
}; };
/*%FSM</COMPILE>*/ /*%FSM</COMPILE>*/

View File

@ -320,7 +320,7 @@ class FSM
"" \n "" \n
"_sapper say3D _sound;" \n "_sapper say3D _sound;" \n
"EPOCH_say3D_PVS = [player, _sapper,(EPOCH_sounds find _sound), Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player, _sapper,(EPOCH_sounds find _sound), Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"};" \n "};" \n
"" \n "" \n
"_doInterrupt = {" \n "_doInterrupt = {" \n
@ -739,7 +739,7 @@ class FSM
"_sound = ""sapper_explode"";" \n "_sound = ""sapper_explode"";" \n
"_sapper say3D _sound;" \n "_sapper say3D _sound;" \n
"EPOCH_say3D_PVS = [player,_sapper,(EPOCH_sounds find _sound),Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player,_sapper,(EPOCH_sounds find _sound),Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"_sapper playMoveNow ""Unconscious"";" \n "_sapper playMoveNow ""Unconscious"";" \n
"" \n "" \n
""/*%FSM</STATEINIT""">*/; ""/*%FSM</STATEINIT""">*/;
@ -1206,8 +1206,8 @@ class FSM
"_bomb = createVehicle [""Sapper_Charge_Ammo"", (getposATL _nestMate), [], 0, ""CAN_COLLIDE""] ; " \n "_bomb = createVehicle [""Sapper_Charge_Ammo"", (getposATL _nestMate), [], 0, ""CAN_COLLIDE""] ; " \n
"_bomb attachTo [_nestMate, [0,0,0],""Pelvis""];" \n "_bomb attachTo [_nestMate, [0,0,0],""Pelvis""];" \n
"_nestMate setVariable [""bomb"",_bomb];" \n "_nestMate setVariable [""bomb"",_bomb];" \n
"EPOCH_TEMPOBJ_PVS = _nestMate;" \n "" \n
"publicVariableServer ""EPOCH_TEMPOBJ_PVS"";" \n "[_nestMate] remoteExec [""EPOCH_localCleanup"",2];" \n
"_nestMate disableAI ""TARGET"";" \n "_nestMate disableAI ""TARGET"";" \n
"_nestMate disableAI ""AUTOTARGET"";" \n "_nestMate disableAI ""AUTOTARGET"";" \n
"_nestMate disableAI ""FSM"";" \n "_nestMate disableAI ""FSM"";" \n
@ -1246,8 +1246,8 @@ class FSM
"" \n "" \n
"[_nrBuild, _sapper] spawn {" \n "[_nrBuild, _sapper] spawn {" \n
"sleep 6;" \n "sleep 6;" \n
"EPOCH_SapperObjs_PVS = [_this select 0, player, Epoch_personalToken,_this select 1];" \n "" \n
"publicVariableServer ""EPOCH_SapperObjs_PVS"";" \n "[_this select 0, player, Epoch_personalToken,_this select 1] remoteExec [""EPOCH_server_handle_sapperObjs"",2];" \n
"};" \n "};" \n
"" \n "" \n
"{" \n "{" \n
@ -1255,15 +1255,15 @@ class FSM
"_sound = ""sapper_explode"";" \n "_sound = ""sapper_explode"";" \n
"_x say3D _sound;" \n "_x say3D _sound;" \n
"EPOCH_say3D_PVS = [player,_x,(EPOCH_sounds find _sound),Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player,_x,(EPOCH_sounds find _sound),Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"_x playMoveNow ""Unconscious"";" \n "_x playMoveNow ""Unconscious"";" \n
"" \n "" \n
"_x spawn {" \n "_x spawn {" \n
"sleep floor (random 3);" \n "sleep floor (random 3);" \n
"_sBomb = _this getVariable [""bomb"",objNull];" \n "_sBomb = _this getVariable [""bomb"",objNull];" \n
"" \n "" \n
"EPOCH_SapperObjs_PVS = [_sBomb, player, Epoch_personalToken,_this,_this];" \n "" \n
"publicVariableServer ""EPOCH_SapperObjs_PVS"";" \n "[_sBomb, player, Epoch_personalToken,_this,_this] remoteExec [""EPOCH_server_handle_sapperObjs"",2];" \n
"" \n "" \n
"_finalPos = getPosATL _this;" \n "_finalPos = getPosATL _this;" \n
"_finalDir = getDir _this;" \n "_finalDir = getDir _this;" \n
@ -1369,8 +1369,8 @@ class FSM
class do_boom class do_boom
{ {
name = "do_boom"; name = "do_boom";
init = /*%FSM<STATEINIT""">*/"EPOCH_SapperObjs_PVS = [_sBomb, player, Epoch_personalToken,_sapper,_sapper];" \n init = /*%FSM<STATEINIT""">*/"" \n
"publicVariableServer ""EPOCH_SapperObjs_PVS"";" \n "[_sBomb, player, Epoch_personalToken,_sapper,_sapper] remoteExec [""EPOCH_server_handle_sapperObjs"",2];" \n
"" \n "" \n
"_sBomb = objNull;" \n "_sBomb = objNull;" \n
"_finalPos = getPosATL _sapper;" \n "_finalPos = getPosATL _sapper;" \n
@ -1636,7 +1636,7 @@ class FSM
" _sound = ""sapper_groan2"";" \n " _sound = ""sapper_groan2"";" \n
" _sapper say3D _sound;" \n " _sapper say3D _sound;" \n
" EPOCH_say3D_PVS = [player, _sapper,(EPOCH_sounds find _sound), Epoch_personalToken];" \n " EPOCH_say3D_PVS = [player, _sapper,(EPOCH_sounds find _sound), Epoch_personalToken];" \n
" publicVariableServer ""EPOCH_say3D_PVS"";" \n " EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"};" \n "};" \n
""/*%FSM</ACTION""">*/; ""/*%FSM</ACTION""">*/;
}; };

View File

@ -1,4 +1,4 @@
/*%FSM<COMPILE "C:\Program Files (x86)\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, sapperAlt">*/ /*%FSM<COMPILE "F:\Program Files (x86)\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, sapperAlt">*/
/*%FSM<HEAD>*/ /*%FSM<HEAD>*/
/* /*
item0[] = {"sapper",0,250,-225.000000,-325.000000,-125.000000,-275.000000,0.000000,"sapper"}; item0[] = {"sapper",0,250,-225.000000,-325.000000,-125.000000,-275.000000,0.000000,"sapper"};
@ -35,12 +35,12 @@ item30[] = {"stalking",4,218,-50.000000,50.000000,50.000000,100.000000,5.000000,
item31[] = {"Wait_random",4,218,-225.000000,-200.000000,-125.000000,-150.000000,10.000000,"Wait random"}; item31[] = {"Wait_random",4,218,-225.000000,-200.000000,-125.000000,-150.000000,10.000000,"Wait random"};
item32[] = {"groan",4,218,200.000000,375.000000,300.000000,425.000000,5.000000,"groan"}; item32[] = {"groan",4,218,200.000000,375.000000,300.000000,425.000000,5.000000,"groan"};
item33[] = {"detonate",4,218,125.000000,-350.000000,225.000000,-300.000000,70.000000,"detonate"}; item33[] = {"detonate",4,218,125.000000,-350.000000,225.000000,-300.000000,70.000000,"detonate"};
item34[] = {"end",1,250,975.000000,0.000000,1075.000000,50.000000,0.000000,"end"}; item34[] = {"end",1,250,1050.000000,-25.000000,1150.000000,25.000000,0.000000,"end"};
item35[] = {"Wait_to_delete",4,218,975.000000,150.000000,1075.000000,200.000000,10.000000,"Wait to delete"}; item35[] = {"Wait_to_delete",4,218,1050.000000,125.000000,1150.000000,175.000000,10.000000,"Wait to delete"};
item36[] = {"handle_dispose",2,250,525.000000,125.000000,625.000000,175.000000,0.000000,"handle dispose"}; item36[] = {"handle_dispose",2,250,525.000000,125.000000,625.000000,175.000000,0.000000,"handle dispose"};
item37[] = {"Wait_1_5_sec",4,218,650.000000,300.000000,750.000000,350.000000,0.000000,"Wait" \n "1.5 sec"}; item37[] = {"Wait_1_5_sec",4,218,525.000000,350.000000,625.000000,400.000000,0.000000,"Wait" \n "1.5 sec"};
item38[] = {"do_boom",2,4346,650.000000,225.000000,750.000000,275.000000,0.000000,"do boom"}; item38[] = {"do_boom",2,250,650.000000,225.000000,750.000000,275.000000,0.000000,"do boom"};
item39[] = {"_",8,218,800.000000,300.000000,850.000000,325.000000,0.000000,""}; item39[] = {"_",8,218,800.000000,225.000000,875.000000,275.000000,0.000000,""};
item40[] = {"do_groan",2,250,225.000000,500.000000,325.000000,550.000000,0.000000,"do groan"}; item40[] = {"do_groan",2,250,225.000000,500.000000,325.000000,550.000000,0.000000,"do groan"};
item41[] = {"do_stalk",2,250,-200.000000,50.000000,-100.000000,100.000000,0.000000,"do stalk"}; item41[] = {"do_stalk",2,250,-200.000000,50.000000,-100.000000,100.000000,0.000000,"do stalk"};
item42[] = {"do_loiter_big",2,250,350.000000,500.000000,450.000000,550.000000,0.000000,"do loiter big"}; item42[] = {"do_loiter_big",2,250,350.000000,500.000000,450.000000,550.000000,0.000000,"do loiter big"};
@ -63,7 +63,9 @@ item58[] = {"feeling",4,218,775.000000,-50.000000,875.000000,0.000000,50.000000,
item59[] = {"charging",4,218,-50.000000,225.000000,50.000000,275.000000,5.000000,"charging"}; item59[] = {"charging",4,218,-50.000000,225.000000,50.000000,275.000000,5.000000,"charging"};
item60[] = {"stalk",4,218,375.000000,-275.000000,475.000000,-225.000000,20.000000,"stalk"}; item60[] = {"stalk",4,218,375.000000,-275.000000,475.000000,-225.000000,20.000000,"stalk"};
item61[] = {"not_shot",4,218,900.000000,125.000000,1000.000000,175.000000,10.000000,"not shot"}; item61[] = {"not_shot",4,218,900.000000,125.000000,1000.000000,175.000000,10.000000,"not shot"};
item62[] = {"finished_boom",2,250,900.000000,225.000000,1000.000000,275.000000,0.000000,"finished boom"}; item62[] = {"finished_boom",2,250,900.000000,300.000000,1000.000000,350.000000,0.000000,"finished boom"};
item63[] = {"Wait_for_Explosi",4,218,650.000000,350.000000,750.000000,400.000000,0.000000,"Wait for Explosion"};
item64[] = {"Remove_corpse",2,4346,775.000000,300.000000,875.000000,350.000000,0.000000,"Remove corpse"};
link0[] = {0,31}; link0[] = {0,31};
link1[] = {1,2}; link1[] = {1,2};
link2[] = {2,3}; link2[] = {2,3};
@ -126,7 +128,7 @@ link58[] = {35,34};
link59[] = {36,57}; link59[] = {36,57};
link60[] = {36,61}; link60[] = {36,61};
link61[] = {37,38}; link61[] = {37,38};
link62[] = {38,39}; link62[] = {38,63};
link63[] = {39,62}; link63[] = {39,62};
link64[] = {40,6}; link64[] = {40,6};
link65[] = {41,30}; link65[] = {41,30};
@ -154,8 +156,10 @@ link86[] = {59,4};
link87[] = {60,2}; link87[] = {60,2};
link88[] = {61,62}; link88[] = {61,62};
link89[] = {62,35}; link89[] = {62,35};
globals[] = {25.000000,1,0,0,16777215,640,480,1,248,6316128,1,-343.543304,1069.998291,679.913574,-353.385406,1000,731,1}; link90[] = {63,64};
window[] = {2,-1,-1,-1,-1,542,56,1081,17,3,1018}; link91[] = {64,39};
globals[] = {25.000000,1,0,0,16777215,640,480,1,253,6316128,1,-209.204178,1204.337524,679.913574,-353.385406,1000,880,1};
window[] = {2,-1,-1,-1,-1,655,130,1155,130,3,1018};
*//*%FSM</HEAD>*/ *//*%FSM</HEAD>*/
class FSM class FSM
{ {
@ -267,7 +271,7 @@ class FSM
"" \n "" \n
"_sapper say3D _sound;" \n "_sapper say3D _sound;" \n
"EPOCH_say3D_PVS = [player, _sapper,(EPOCH_sounds find _sound), Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player, _sapper,(EPOCH_sounds find _sound), Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"};" \n "};" \n
"" \n "" \n
"_doInterrupt = {" \n "_doInterrupt = {" \n
@ -633,7 +637,7 @@ class FSM
"_sound = ""sapper_explode"";" \n "_sound = ""sapper_explode"";" \n
"_sapper say3D _sound;" \n "_sapper say3D _sound;" \n
"EPOCH_say3D_PVS = [player,_sapper,(EPOCH_sounds find _sound),Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player,_sapper,(EPOCH_sounds find _sound),Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"_sapper playMoveNow ""Unconscious"";" \n "_sapper playMoveNow ""Unconscious"";" \n
"" \n "" \n
""/*%FSM</STATEINIT""">*/; ""/*%FSM</STATEINIT""">*/;
@ -1040,25 +1044,19 @@ class FSM
class do_boom class do_boom
{ {
name = "do_boom"; name = "do_boom";
init = /*%FSM<STATEINIT""">*/"EPOCH_SapperObjs_PVS = [_sBomb, player, Epoch_personalToken,_sapper,_sapper];" \n init = /*%FSM<STATEINIT""">*/"[_sBomb, player, Epoch_personalToken,_sapper,_sapper] remoteExec [""EPOCH_server_handle_sapperObjs"",2];" \n
"publicVariableServer ""EPOCH_SapperObjs_PVS"";" \n
"" \n
"_sBomb = objNull;" \n
"" \n
"deleteVehicle _sapper;" \n
"" \n
"_doneBoom = true;" \n "_doneBoom = true;" \n
""/*%FSM</STATEINIT""">*/; ""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/; precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links class Links
{ {
/*%FSM<LINK "_">*/ /*%FSM<LINK "Wait_for_Explosi">*/
class _ class Wait_for_Explosi
{ {
priority = 0.000000; priority = 0.000000;
to="finished_boom"; to="Remove_corpse";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/; precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/; condition=/*%FSM<CONDITION""">*/"isNull(_sBomb)"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/; action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
}; };
/*%FSM</LINK>*/ /*%FSM</LINK>*/
@ -1269,7 +1267,7 @@ class FSM
" _sound = ""sapper_groan2"";" \n " _sound = ""sapper_groan2"";" \n
" _sapper say3D _sound;" \n " _sapper say3D _sound;" \n
" EPOCH_say3D_PVS = [player, _sapper,(EPOCH_sounds find _sound), Epoch_personalToken];" \n " EPOCH_say3D_PVS = [player, _sapper,(EPOCH_sounds find _sound), Epoch_personalToken];" \n
" publicVariableServer ""EPOCH_say3D_PVS"";" \n " EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"};" \n "};" \n
""/*%FSM</ACTION""">*/; ""/*%FSM</ACTION""">*/;
}; };
@ -1409,11 +1407,32 @@ class FSM
}; };
}; };
/*%FSM</STATE>*/ /*%FSM</STATE>*/
/*%FSM<STATE "Remove_corpse">*/
class Remove_corpse
{
name = "Remove_corpse";
init = /*%FSM<STATEINIT""">*/"deleteVehicle _sapper;"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "_">*/
class _
{
priority = 0.000000;
to="finished_boom";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
}; };
initState="sapper"; initState="sapper";
finalStates[] = finalStates[] =
{ {
"end" "end",
}; };
}; };
/*%FSM</COMPILE>*/ /*%FSM</COMPILE>*/

View File

@ -974,8 +974,8 @@ class FSM
"" \n "" \n
"_plyr spawn {" \n "_plyr spawn {" \n
"uiSleep 12;" \n "uiSleep 12;" \n
"EPOCH_FillContainer_PVS = [_this,Epoch_personalToken,objNull,false,15];" \n "" \n
"publicVariableServer ""EPOCH_FillContainer_PVS"";" \n "[_this,Epoch_personalToken,objNull,false,15] remoteExec [""EPOCH_server_fillContainer"",2];" \n
"//hint ""Paying Out"";" \n "//hint ""Paying Out"";" \n
"};" \n "};" \n
"" \n "" \n

View File

@ -1021,8 +1021,8 @@ class FSM
init = /*%FSM<STATEINIT""">*/"titleText [_wDiag,""PLAIN"", 6];" \n init = /*%FSM<STATEINIT""">*/"titleText [_wDiag,""PLAIN"", 6];" \n
"" \n "" \n
"" \n "" \n
"EPOCH_FillContainer_PVS = [_plyr,Epoch_personalToken,objNull,false,25];" \n "" \n
"publicVariableServer ""EPOCH_FillContainer_PVS"";" \n "[_plyr,Epoch_personalToken,objNull,false,25] remoteExec [""EPOCH_server_fillContainer"",2];" \n
"" \n "" \n
"if (_act != """") then {" \n "if (_act != """") then {" \n
"call compile _act;" \n "call compile _act;" \n
@ -1319,8 +1319,8 @@ class FSM
"" \n "" \n
"_copterPos = (getPosATL _plyr) findEmptyPosition [1,500,""I_Heli_light_03_unarmed_EPOCH""];" \n "_copterPos = (getPosATL _plyr) findEmptyPosition [1,500,""I_Heli_light_03_unarmed_EPOCH""];" \n
"" \n "" \n
"EPOCH_createObject_PVS = [player,Epoch_personalToken,_uavclass,true,_copterPos,""CAN_COLLIDE"","""","""","""","""",true];" \n "" \n
"publicVariableServer ""EPOCH_createObject_PVS"";" \n "[player,Epoch_personalToken,_uavclass,true,_copterPos,""CAN_COLLIDE"","""","""","""","""",true] remoteExec [""EPOCH_Server_createObject"",2];" \n
"" \n "" \n
"" \n "" \n
"" \n "" \n

View File

@ -502,8 +502,8 @@ class FSM
"_boats = [];" \n "_boats = [];" \n
"_findTimer = diag_TickTime;" \n "_findTimer = diag_TickTime;" \n
"" \n "" \n
"EPOCH_createObject_PVS = [player,Epoch_personalToken,""I_Boat_Armed_01_minigun_F"",true,axeGeneralBoatPos,""CAN_COLLIDE"","""","""","""","""",true];" \n "" \n
"publicVariableServer ""EPOCH_createObject_PVS"";" \n "[player,Epoch_personalToken,""I_Boat_Armed_01_minigun_F"",true,axeGeneralBoatPos,""CAN_COLLIDE"","""","""","""","""",true] remoteExec [""EPOCH_Server_createObject"",2];" \n
"" \n "" \n
"" \n "" \n
""/*%FSM</ACTION""">*/; ""/*%FSM</ACTION""">*/;
@ -877,8 +877,8 @@ class FSM
"_wDiag = """";" \n "_wDiag = """";" \n
"_wDiag2 = """";" \n "_wDiag2 = """";" \n
"" \n "" \n
"EPOCH_FillContainer_PVS = [_plyr,Epoch_personalToken,axeGeneralsBoat,false,25];" \n "" \n
"publicVariableServer ""EPOCH_FillContainer_PVS"";" \n "[_plyr,Epoch_personalToken,axeGeneralsBoat,false,25] remoteExec [""EPOCH_server_fillContainer"",2];" \n
"" \n "" \n
"_sWait = 1.5;" \n "_sWait = 1.5;" \n
"_actionDone = true;" \n "_actionDone = true;" \n
@ -914,8 +914,8 @@ class FSM
"axeVIP = _grp createUnit [""Epoch_Female_CamoRed_F"",_pos,[],0,""FORM""];" \n "axeVIP = _grp createUnit [""Epoch_Female_CamoRed_F"",_pos,[],0,""FORM""];" \n
"" \n "" \n
"if !(isNull axeVIP) then {" \n "if !(isNull axeVIP) then {" \n
" EPOCH_TEMPOBJ_PVS = axeVIP;" \n "" \n
" publicVariableServer ""EPOCH_TEMPOBJ_PVS"";" \n " [axeVIP] remoteExec [""EPOCH_localCleanup"",2];" \n
"};" \n "};" \n
"" \n "" \n
"_grp setCombatMode ""BLUE"";" \n "_grp setCombatMode ""BLUE"";" \n
@ -1038,8 +1038,8 @@ class FSM
" removeAllWeapons axeGeneral;" \n " removeAllWeapons axeGeneral;" \n
"" \n "" \n
"if !(isNull axeGeneral) then {" \n "if !(isNull axeGeneral) then {" \n
" EPOCH_TEMPOBJ_PVS = axeGeneral;" \n "" \n
" publicVariableServer ""EPOCH_TEMPOBJ_PVS"";" \n " [axeGeneral] remoteExec [""EPOCH_localCleanup"",2];" \n
"};" \n "};" \n
"" \n "" \n
" for ""_i"" from 1 to 3 step 1 do" \n " for ""_i"" from 1 to 3 step 1 do" \n
@ -1051,8 +1051,8 @@ class FSM
" _unit addEventHandler [""FiredNear"", ""group (_this select 0) setVariable[""""shotsFired"""",[(_this select 1),(_this select 2)]]""];" \n " _unit addEventHandler [""FiredNear"", ""group (_this select 0) setVariable[""""shotsFired"""",[(_this select 1),(_this select 2)]]""];" \n
" _unit addEventHandler [""Killed"", ""group (_this select 0) setVariable[""""killer"""",_this select 1]""];" \n " _unit addEventHandler [""Killed"", ""group (_this select 0) setVariable[""""killer"""",_this select 1]""];" \n
" if !(isNull _unit) then {" \n " if !(isNull _unit) then {" \n
" EPOCH_TEMPOBJ_PVS = _unit;" \n "" \n
" publicVariableServer ""EPOCH_TEMPOBJ_PVS"";" \n " [_unit] remoteExec [""EPOCH_localCleanup"",2];" \n
" };" \n " };" \n
" [_unit,axeGeneral] execFSM ""\x\addons\a3_epoch_code\System\Mission_VIP_Militia.fsm"";" \n " [_unit,axeGeneral] execFSM ""\x\addons\a3_epoch_code\System\Mission_VIP_Militia.fsm"";" \n
"" \n "" \n

View File

@ -668,7 +668,7 @@ class FSM
"if(diag_tickTime - _lastAlert > 480 && random 100 < _cAggression)then{" \n "if(diag_tickTime - _lastAlert > 480 && random 100 < _cAggression)then{" \n
"_unit say3D ""cultist_laugh"";" \n "_unit say3D ""cultist_laugh"";" \n
"EPOCH_say3D_PVS = [player, _unit, 8,Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player, _unit, 8,Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"_lastAlert = diag_tickTime;" \n "_lastAlert = diag_tickTime;" \n
"" \n "" \n
"" \n "" \n
@ -676,7 +676,7 @@ class FSM
"" \n "" \n
"_unit say3D ""cultist_talk"";" \n "_unit say3D ""cultist_talk"";" \n
"EPOCH_say3D_PVS = [player, _unit, 7,Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player, _unit, 7,Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"" \n "" \n
"};" \n "};" \n
"" \n "" \n

View File

@ -40,7 +40,7 @@ class FSM
"" \n "" \n
"_unit say3D ""cultist_laugh"";" \n "_unit say3D ""cultist_laugh"";" \n
"EPOCH_say3D_PVS = [player, _unit, 8,Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player, _unit, 8,Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"" \n "" \n
"" \n "" \n
"" \n "" \n

View File

@ -1,4 +1,4 @@
/*%FSM<COMPILE "X:\ArmA\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, Gender Selection">*/ /*%FSM<COMPILE "F:\Program Files (x86)\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, Gender Selection">*/
/*%FSM<HEAD>*/ /*%FSM<HEAD>*/
/* /*
item0[] = {"INIT",0,250,-250.000000,-150.000000,-150.000000,-100.000000,0.000000,"INIT"}; item0[] = {"INIT",0,250,-250.000000,-150.000000,-150.000000,-100.000000,0.000000,"INIT"};
@ -12,12 +12,12 @@ item7[] = {"Process",2,250,-400.000000,75.000000,-300.000000,125.000000,0.000000
item8[] = {"same_gender",4,218,-250.000000,75.000000,-150.000000,125.000000,10.000000,"same" \n "gender"}; item8[] = {"same_gender",4,218,-250.000000,75.000000,-150.000000,125.000000,10.000000,"same" \n "gender"};
item9[] = {"other_gender",4,218,-400.000000,150.000000,-300.000000,200.000000,0.000000,"other" \n "gender"}; item9[] = {"other_gender",4,218,-400.000000,150.000000,-300.000000,200.000000,0.000000,"other" \n "gender"};
item10[] = {"Send_To_Server",3,250,-125.000000,75.000000,-25.000000,125.000000,0.000000,"Send To Server"}; item10[] = {"Send_To_Server",3,250,-125.000000,75.000000,-25.000000,125.000000,0.000000,"Send To Server"};
item11[] = {"TODO__ADD_TIMEOUT",4,4314,-275.000000,250.000000,-175.000000,300.000000,0.000000,"TODO:" \n "ADD TIMEOUT" \n "AND LOBBY KICK"}; item11[] = {"TODO__ADD_TIMEOUT",4,218,-275.000000,250.000000,-175.000000,300.000000,0.000000,"TODO:" \n "ADD TIMEOUT" \n "AND LOBBY KICK"};
item12[] = {"END",1,250,0.000000,450.000000,100.000000,500.000000,0.000000,"END"}; item12[] = {"END",1,250,0.000000,450.000000,100.000000,500.000000,0.000000,"END"};
item13[] = {"Send_new_selection",2,250,-400.000000,250.000000,-300.000000,300.000000,0.000000,"Send new" \n "selection to" \n "server"}; item13[] = {"Send_new_selection",2,250,-400.000000,250.000000,-300.000000,300.000000,0.000000,"Send new" \n "selection to" \n "server"};
item14[] = {"Select_Model",2,250,-400.000000,350.000000,-300.000000,400.000000,0.000000,"Select Model"}; item14[] = {"Select_Model",2,250,-400.000000,350.000000,-300.000000,400.000000,0.000000,"Select Model"};
item15[] = {"new_model____pla",4,218,-525.000000,400.000000,-425.000000,450.000000,0.000000,"new model" \n "==" \n "player"}; item15[] = {"new_model____pla",4,218,-525.000000,400.000000,-425.000000,450.000000,0.000000,"new model" \n "==" \n "player"};
item16[] = {"Setup_EH",2,250,-400.000000,450.000000,-300.000000,500.000000,0.000000,"Setup EH"}; item16[] = {"Setup_EH",2,4346,-400.000000,450.000000,-300.000000,500.000000,0.000000,"Setup EH"};
item17[] = {"true",8,218,-125.000000,450.000000,-25.000000,500.000000,0.000000,"true"}; item17[] = {"true",8,218,-125.000000,450.000000,-25.000000,500.000000,0.000000,"true"};
item18[] = {"____FAKE____",9,720,0.000000,0.000000,0.000000,0.000000,0.000000,"____FAKE____"}; item18[] = {"____FAKE____",9,720,0.000000,0.000000,0.000000,0.000000,0.000000,"____FAKE____"};
link0[] = {0,2}; link0[] = {0,2};
@ -41,8 +41,8 @@ link17[] = {15,16};
link18[] = {16,17}; link18[] = {16,17};
link19[] = {17,12}; link19[] = {17,12};
link20[] = {11,18}; link20[] = {11,18};
globals[] = {25.000000,1,0,0,0,640,480,1,250,6316128,1,-786.968628,194.189285,571.765747,-266.728790,1066,911,1}; globals[] = {25.000000,1,0,0,0,640,480,1,250,6316128,1,-825.287720,232.508224,685.682007,60.530540,687,630,1};
window[] = {2,-1,-1,-1,-1,753,25,1063,25,3,1084}; window[] = {2,-1,-1,-1,-1,884,156,1194,156,3,705};
*//*%FSM</HEAD>*/ *//*%FSM</HEAD>*/
class FSM class FSM
{ {
@ -156,8 +156,8 @@ class FSM
class Send_To_Server class Send_To_Server
{ {
name = "Send_To_Server"; name = "Send_To_Server";
init = /*%FSM<STATEINIT""">*/"EPOCH_respawnPlayer_PVS = [player, Epoch_personalToken];" \n init = /*%FSM<STATEINIT""">*/"[player, Epoch_personalToken] remoteExec [""EPOCH_server_respawnPlayer"",2];" \n
"publicVariableServer ""EPOCH_respawnPlayer_PVS"";"/*%FSM</STATEINIT""">*/; """;"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/; precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links class Links
{ {
@ -190,8 +190,8 @@ class FSM
class Send_new_selection class Send_new_selection
{ {
name = "Send_new_selection"; name = "Send_new_selection";
init = /*%FSM<STATEINIT""">*/"EPOCH_respawnPlayer_PVS = [player, Epoch_personalToken,EPOCH_PlayerIsMale];" \n init = /*%FSM<STATEINIT""">*/"[player, Epoch_personalToken,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_respawnPlayer"",2];" \n
"publicVariableServer ""EPOCH_respawnPlayer_PVS"";"/*%FSM</STATEINIT""">*/; ""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/; precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links class Links
{ {
@ -246,13 +246,9 @@ class FSM
class Setup_EH class Setup_EH
{ {
name = "Setup_EH"; name = "Setup_EH";
init = /*%FSM<STATEINIT""">*/"player addEventHandler [""Respawn"", {(_this select 0) call EPOCH_clientRespawn}];" \n init = /*%FSM<STATEINIT""">*/"{" \n
"player addEventHandler [""Put"", {(_this select 1) call EPOCH_interact;_this call EPOCH_PutHandler}];" \n " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n
"player addEventHandler [""Take"", {(_this select 1) call EPOCH_interact;_this call EPOCH_UnisexCheck}];" \n "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);"/*%FSM</STATEINIT""">*/;
"player addEventHandler [""InventoryClosed"", {if !(EPOCH_arr_interactedObjs isEqualTo[]) then {EPOCH_arr_interactedObjs remoteExec[""EPOCH_server_save_vehicles"", 2]; EPOCH_arr_interactedObjs = [];};}];" \n
"player addEventHandler [""InventoryOpened"", {_this spawn EPOCH_initUI; (locked (_this select 1) in [2, 3] || (_this select 1) getVariable[""EPOCH_Locked"", false])}];" \n
"player addEventHandler [""Fired"", {_this call EPOCH_fnc_playerFired}];" \n
"player addEventHandler [""Killed"", {_this call EPOCH_fnc_playerDeath}];"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/; precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links class Links
{ {
@ -284,7 +280,7 @@ class FSM
initState="INIT"; initState="INIT";
finalStates[] = finalStates[] =
{ {
"END" "END",
}; };
}; };
/*%FSM</COMPILE>*/ /*%FSM</COMPILE>*/

File diff suppressed because it is too large Load Diff

View File

@ -49,8 +49,8 @@ class FSM
"" \n "" \n
"" \n "" \n
"if !(isNull _unit) then {" \n "if !(isNull _unit) then {" \n
" EPOCH_TEMPOBJ_PVS = _unit;" \n "" \n
" publicVariableServer ""EPOCH_TEMPOBJ_PVS"";" \n " [_unit] remoteExec [""EPOCH_localCleanup"",2];" \n
"};" \n "};" \n
"" \n "" \n
"_randomGroan = {" \n "_randomGroan = {" \n
@ -59,7 +59,7 @@ class FSM
"" \n "" \n
"_unit say3D _sound;" \n "_unit say3D _sound;" \n
"EPOCH_say3D_PVS = [player, _unit,(EPOCH_sounds find _sound), Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player, _unit,(EPOCH_sounds find _sound), Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"};" \n "};" \n
"" \n "" \n
"_sMarker = objNull;" \n "_sMarker = objNull;" \n
@ -610,4 +610,4 @@ class FSM
{ {
"end" "end"
}; };
}; };

View File

@ -95,7 +95,7 @@ class FSM
"_sound = ""sapper_explode"";" \n "_sound = ""sapper_explode"";" \n
"_unit say3D _sound;" \n "_unit say3D _sound;" \n
"EPOCH_say3D_PVS = [player,_unit,(EPOCH_sounds find _sound),Epoch_personalToken];" \n "EPOCH_say3D_PVS = [player,_unit,(EPOCH_sounds find _sound),Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_say3D_PVS"";" \n "EPOCH_say3D_PVS remoteExec [""EPOCH_server_handle_say3D"",2];" \n
"_unit playMoveNow ""Unconscious"";" \n "_unit playMoveNow ""Unconscious"";" \n
"" \n "" \n
""; "";
@ -174,8 +174,8 @@ class FSM
{ {
name = "do_boom"; name = "do_boom";
itemno = ; itemno = ;
init = "EPOCH_SapperObjs_PVS = [_bomb, player, Epoch_personalToken,_unit,_unit];" \n init = "" \n
"publicVariableServer ""EPOCH_SapperObjs_PVS"";" \n "[_bomb, player, Epoch_personalToken,_unit,_unit] remoteExec [""EPOCH_server_handle_sapperObjs"",2];" \n
"" \n "" \n
"_bomb = objNull;" \n "_bomb = objNull;" \n
"_finalPos = getPosATL _unit;" \n "_finalPos = getPosATL _unit;" \n
@ -285,4 +285,4 @@ class FSM
{ {
"end" "end"
}; };
}; };

View File

@ -13,6 +13,5 @@
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/EPOCH_EnterBuilding.sqf https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/EPOCH_EnterBuilding.sqf
*/ */
if !(isNull _this) then{ if !(isNull _this) then{
EPOCH_oneWayTP = [player,_this,Epoch_personalToken]; [player,_this,Epoch_personalToken] remoteExec ["EPOCH_server_teleportPlayer",2];
publicVariableServer "EPOCH_oneWayTP";
}; };

View File

@ -13,8 +13,7 @@
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/EPOCH_LootIT.sqf https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/EPOCH_LootIT.sqf
*/ */
if (!isNull _this) then { if (!isNull _this) then {
EPOCH_lootContainer = [_this,player,Epoch_personalToken]; [_this,player,Epoch_personalToken] remoteExec ["EPOCH_server_lootContainer",2];
publicVariableServer "EPOCH_lootContainer";
if (typeof _this == "wardrobe_EPOCH") then { if (typeof _this == "wardrobe_EPOCH") then {
if !(_this getVariable["MIRROR_SETUP", false]) then { if !(_this getVariable["MIRROR_SETUP", false]) then {

View File

@ -17,67 +17,6 @@ _woman = getNumber(configFile >> "CfgVehicles" >> (typeOf player) >> "woman");
_class = _this select 2; _class = _this select 2;
_config = configfile >> "cfgweapons" >> _class; _config = configfile >> "cfgweapons" >> _class;
/*
_sleepAndCheck = {
_good = true;
_failcount = 0;
switch _this do {
case 0: {
while {true} do {
if !(local(backpackContainer player)) then {
_good = false;
_failcount = _failcount + 1;
} else {
_good = true;
};
if (_good) exitWith {};
if (_failcount > 5) exitWith { removeBackpack player; };
sleep 0.5;
};
};
case 1: {
while {true} do {
if !(local(vestContainer player)) then {
_good = false;
_failcount = _failcount + 1;
} else {
_good = true;
};
if (_good) exitWith{};
if (_failcount > 5) exitWith{ removeVest player; };
sleep 0.5;
};
};
case 2: {
while {true} do {
if !(local(uniformContainer player)) then {
_good = false;
_failcount = _failcount + 1;
} else {
_good = true;
};
if (_good) exitWith{};
if (_failcount > 5) exitWith{ removeUniform player; };
sleep 0.5;
};
};
};
};
if (isclass _config) then {
_infoType = getnumber(_config >> "itemInfo" >> "type");
switch _infoType do {
case 701: { 1 spawn _sleepAndCheck; };
case 801: { 2 spawn _sleepAndCheck; };
};
} else {
if (getNumber(configFile >> "CfgVehicles" >> _class >> "isbackpack") == 1) then {
0 spawn _sleepAndCheck;
};
};
*/
_mags = (magazines player) + (handgunMagazine player); _mags = (magazines player) + (handgunMagazine player);
// TODO optimize // TODO optimize
@ -115,28 +54,14 @@ if (_woman == 1) then {
_vest = vest player; _vest = vest player;
if (_class == _vest) then { if (_class == _vest) then {
if (_femaleVariant != _vest) then { if (_femaleVariant != _vest) then {
// get items in existing vest
/* // everyContainer not working in 1.20 _vestItems = vestItems player;
_holder = _this select 1; // remove vest
_containers = (everyContainer _holder) select 0;
_mags = magazinesAmmoFull _container;
_weps = weaponCargo vestContainer _container;
_item = itemCargo vestContainer _container;
*/
removeVest player; removeVest player;
// replace with female variant
player addVest _femaleVariant; player addVest _femaleVariant;
/* // readd items to players vest
{ {player addItemToVest _x} forEach _vestItems;
if ((_x select 4) == "Vest") then {
player addMagazine [(_x select 0),(_x select 1)]
}
} forEach _mags;
{
player addItemToVest _x;
} forEach (_weps+_item);
*/
}; };
}; };
}; };

View File

@ -25,19 +25,26 @@ _object = objNull;
_type = 0; _type = 0;
_config = 'CfgEpochClient' call EPOCH_returnConfig; _config = 'CfgEpochClient' call EPOCH_returnConfig;
_treesLootList = getArray(_config >> worldname >> "Trees");
_bushesLootList = getArray(_config >> worldname >> "Bushes");
{ {
_strObj = str _x; _str = str _x;
_sel_object = _x; _sel_object = _x;
_findStart = _strObj find ": "; _findStart = _str find ": ";
if (_findStart != -1) then{ if (_findStart != -1) then{
_p3dName = _strObj select[_findStart + 2, 999];
if (_p3dName in _treesLootList) then{ _start = _findStart + 2;
_end = (_str find ".") - _start;
_p3dName = _str select[_start, _end];
// diag_log format ["DEBUG: _p3dName %1",_p3dName];
if (_p3dName find " " != -1) then {
(_p3dName splitString " ") joinString "_"; // replace spaces with underscores
};
_finalConfig = (_config >> "WorldInteractions" >> (_p3dName + "_p3d"));
if (getNumber(_finalConfig >> "tree") == 1) then{
_object = _sel_object; _object = _sel_object;
}; };
if (_p3dName in _bushesLootList) then{ if (getNumber(_finalConfig >> "bush") == 1) then{
_type = 1; _type = 1;
_object = _sel_object; _object = _sel_object;
}; };
@ -47,7 +54,6 @@ _bushesLootList = getArray(_config >> worldname >> "Bushes");
if (!isNull _object) then { if (!isNull _object) then {
if (alive _object) then { if (alive _object) then {
EPOCH_knockDownTree = [_object,_type,player,EPOCH_personalToken]; [_object,_type,player,EPOCH_personalToken] remoteExec ["EPOCH_server_knockDownTree",2];
publicVariableServer "EPOCH_knockDownTree";
}; };
}; };

View File

@ -61,8 +61,6 @@ _giveAttributes = {
_return = format["Immunity: %1%2 (%3/%4)<br />", _addPlus, _data, EPOCH_playerImmunity, 100]; _return = format["Immunity: %1%2 (%3/%4)<br />", _addPlus, _data, EPOCH_playerImmunity, 100];
}; };
case 6: { case 6: {
// EPOCH_playerToxicity = ((EPOCH_playerToxicity + _data) min 100) max 0;
// new random tox
_randomData = round(random _data); _randomData = round(random _data);
EPOCH_playerToxicity = ((EPOCH_playerToxicity + _randomData) min 100) max 0; EPOCH_playerToxicity = ((EPOCH_playerToxicity + _randomData) min 100) max 0;
_return = format["Toxicity: %1%2 (%3/%4)<br />", _addPlus, _randomData, EPOCH_playerToxicity, 100]; _return = format["Toxicity: %1%2 (%3/%4)<br />", _addPlus, _randomData, EPOCH_playerToxicity, 100];
@ -72,6 +70,7 @@ _giveAttributes = {
_return = format["Stamina: %1%2 (%3/%4)<br />", _addPlus, _data, EPOCH_playerStamina, EPOCH_playerStaminaMax]; _return = format["Stamina: %1%2 (%3/%4)<br />", _addPlus, _data, EPOCH_playerStamina, EPOCH_playerStaminaMax];
}; };
case 8: { case 8: {
// this is handled server side
//EPOCH_playerCrypto = ((EPOCH_playerCrypto + _data) min 25000) max 0; //EPOCH_playerCrypto = ((EPOCH_playerCrypto + _data) min 25000) max 0;
//_return = format["Krypto: %1%2 (%3)<br />", _addPlus, _data, EPOCH_playerCrypto]; //_return = format["Krypto: %1%2 (%3)<br />", _addPlus, _data, EPOCH_playerCrypto];
}; };
@ -79,6 +78,20 @@ _giveAttributes = {
EPOCH_playerBloodP = ((EPOCH_playerBloodP + _data) min 190) max 0; EPOCH_playerBloodP = ((EPOCH_playerBloodP + _data) min 190) max 0;
_return = format["Blood Pressure: %1%2 (%3/%4)<br />", _addPlus, _data, EPOCH_playerBloodP, 100]; _return = format["Blood Pressure: %1%2 (%3/%4)<br />", _addPlus, _data, EPOCH_playerBloodP, 100];
}; };
case 10: {
EPOCH_playerKarma = ((EPOCH_playerKarma + _data) min 50000) max -50000;
_return = format["Karma: %1%2 (%3/%4)<br />", _addPlus, _data, EPOCH_playerKarma, 50000];
};
case 11: {
EPOCH_playerAlcohol = ((EPOCH_playerAlcohol + _data) min 100) max 0;
_return = format["Alcohol: %1%2 (%3/%4)<br />", _addPlus, _data, EPOCH_playerAlcohol, 100];
};
case 12: {
EPOCH_playerRadiation = ((EPOCH_playerRadiation + _data) min 100) max 0;
_return = format["Radiation: %1%2 (%3/%4)<br />", _addPlus, _data, EPOCH_playerRadiation, 100];
};
}; };
}; };
_return _return
@ -86,9 +99,7 @@ _giveAttributes = {
_unifiedInteract = { _unifiedInteract = {
if (_item call _removeItem) then { if (_item call _removeItem) then {
if (_interactReturnOnUse != "") then { _interactReturnOnUse call EPOCH_fnc_addItemOverflow;
player addMagazine _interactReturnOnUse;
};
_output = ""; _output = "";
{ {
_output = _output + ([_forEachIndex, _x] call _giveAttributes); _output = _output + ([_forEachIndex, _x] call _giveAttributes);
@ -100,6 +111,38 @@ _unifiedInteract = {
}; };
switch _interactOption do { switch _interactOption do {
case 0: {
_magazineSizeMax = getNumber (_config >> "count");
// allow repack for all magazines with greater than 1 bullet
if (_magazineSizeMax > 1) then {
_magazineSize = 0;
_magazinesAmmoFull = magazinesAmmoFull player;
{
if (_item isEqualTo (_x select 0)) then {
if (!(_x select 2)) then {
_magazineSize = _magazineSize + (_x select 1);
};
};
} forEach _magazinesAmmoFull;
// remove all
player removeMagazines _item;
// Add full magazines back to player
for "_i" from 1 to floor (_magazineSize / _magazineSizeMax) do
{
player addMagazine [_item, _magazineSizeMax];
//diag_log format ["DEBUG: added full mag %1", _magazineSizeMax];
};
// Add last non full magazine
if ((_magazineSize % _magazineSizeMax) > 0) then {
player addMagazine [_item, floor (_magazineSize % _magazineSizeMax)];
//diag_log format ["DEBUG: added remainder %1", floor (_magazineSize % _magazineSizeMax)];
};
_dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Ammo Repacked</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
};
};
case 1: _unifiedInteract; // Eat 1 case 1: _unifiedInteract; // Eat 1
case 2: _unifiedInteract; //Drink 2 case 2: _unifiedInteract; //Drink 2
case 3: { // Build 3 case 3: { // Build 3
@ -158,34 +201,49 @@ switch _interactOption do {
if (cursorTarget in _vehicles) then { if (cursorTarget in _vehicles) then {
_vehicle = cursorTarget; _vehicle = cursorTarget;
_currentFuel = fuel _vehicle; _currentFuel = fuel _vehicle;
_canCapacity = 10; _canCapacity = _interactAttributes param [0,10];
_fuelCapacity = getNumber (configfile >> "CfgVehicles" >> (typeOf _vehicle) >> "fuelCapacity"); _fuelCapacity = getNumber (configfile >> "CfgVehicles" >> (typeOf _vehicle) >> "fuelCapacity");
_currentFuel = _currentFuel * _fuelCapacity; _currentFuel = _currentFuel * _fuelCapacity;
_newFuel = _currentFuel + _canCapacity; _newFuel = _currentFuel + _canCapacity;
_newFuel = _newFuel / _fuelCapacity; _newFuel = _newFuel / _fuelCapacity;
if (_item call _removeItem) then { if (_item call _removeItem) then {
player addMagazine "jerrycanE_epoch"; _interactReturnOnUse call EPOCH_fnc_addItemOverflow;
EPOCH_fillVehicle_PVS = [_vehicle,_newFuel,player,Epoch_personalToken]; // send
publicVariableServer "EPOCH_fillVehicle_PVS"; [_vehicle,_newFuel,player,Epoch_personalToken] remoteExec ["EPOCH_server_fillVehicle",2];
_dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Fuel Added</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; _dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Fuel Added</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
}; };
}; };
}; };
case 5: { case 5: {
_vehicles = player nearEntities [["LandVehicle","Ship","Air","Tank"], 6]; _vehicles = player nearEntities [["LandVehicle","Ship","Air","Tank"], 6];
_canCapacity = _interactAttributes param [0,10];
if (cursorTarget in _vehicles) then { if (cursorTarget in _vehicles) then {
_vehicle = cursorTarget; _vehicle = cursorTarget;
_canCapacity = 10;
_fuelCapacity = getNumber (configfile >> "CfgVehicles" >> (typeOf _vehicle) >> "fuelCapacity"); _fuelCapacity = getNumber (configfile >> "CfgVehicles" >> (typeOf _vehicle) >> "fuelCapacity");
_newFuel = (((fuel _vehicle) * _fuelCapacity) - _canCapacity) / _fuelCapacity; _newFuel = (((fuel _vehicle) * _fuelCapacity) - _canCapacity) / _fuelCapacity;
//diag_log format["FIND fill _newFuel %1 capacity: %2 current: %3",_newFuel,_fuelCapacity,_currentFuel];
if (_newFuel > 0) then { if (_newFuel > 0) then {
if (_item call _removeItem) then { if (_item call _removeItem) then {
player addMagazine "jerrycan_epoch"; _interactReturnOnUse call EPOCH_fnc_addItemOverflow;
EPOCH_fillVehicle_PVS = [_vehicle,_newFuel,player,Epoch_personalToken]; [_vehicle,_newFuel,player,Epoch_personalToken] remoteExec ["EPOCH_server_fillVehicle",2];
publicVariableServer "EPOCH_fillVehicle_PVS"; _dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Fuel Siphoned</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
};
} else {
_dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Not Enough Fuel</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
};
} else {
// find any other nearby fuel sources
_transportFuel = 0;
{
_transportFuel = _transportFuel + getNumber (configFile >> "CfgVehicles" >> (typeOf _x) >> "transportFuel");
} forEach (player nearObjects["ALL", 6]);
if (_transportFuel > _canCapacity) then {
if (_item call _removeItem) then {
_interactReturnOnUse call EPOCH_fnc_addItemOverflow;
_dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Fuel Siphoned</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; _dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Fuel Siphoned</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
}; };
} else { } else {
@ -222,15 +280,13 @@ switch _interactOption do {
if (local _vehicle) then { if (local _vehicle) then {
[_vehicle, [_currentHIT, _newDMG]] call EPOCH_client_repairVehicle; [_vehicle, [_currentHIT, _newDMG]] call EPOCH_client_repairVehicle;
} else { } else {
EPOCH_repairVehicle_PVS = [_vehicle,[_currentHIT,_newDMG],player,Epoch_personalToken]; [_vehicle,[_currentHIT,_newDMG],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];
publicVariableServer "EPOCH_repairVehicle_PVS";
}; };
//diag_log format["DEBUG HITPOINT REPAIRED: %1 %2 %3", _currentHIT, _newDMG, _item]; //diag_log format["DEBUG HITPOINT REPAIRED: %1 %2 %3", _currentHIT, _newDMG, _item];
} else { } else {
if ((damage _vehicle) > 0) then { if ((damage _vehicle) > 0) then {
EPOCH_repairVehicle_PVS = [_vehicle,["ALL",0],player,Epoch_personalToken]; [_vehicle,["ALL",0],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];
publicVariableServer "EPOCH_repairVehicle_PVS";
}; };
}; };
_dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Vehicle Partially Repaired</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; _dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Vehicle Partially Repaired</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
@ -242,8 +298,7 @@ switch _interactOption do {
_vehicle = cursorTarget; _vehicle = cursorTarget;
if (_vehicle in _vehicles) then { if (_vehicle in _vehicles) then {
if (_item call _removeItem) then { if (_item call _removeItem) then {
EPOCH_repairVehicle_PVS = [_vehicle,["ALL",0],player,Epoch_personalToken]; [_vehicle,["ALL",0],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];
publicVariableServer "EPOCH_repairVehicle_PVS";
_dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Vehicle Fully Repaired</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; _dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Vehicle Fully Repaired</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
}; };
}; };
@ -265,8 +320,7 @@ switch _interactOption do {
_paintCanIndex = getNumber(configfile >> "CfgMagazines" >> _item >> "textureIndex"); _paintCanIndex = getNumber(configfile >> "CfgMagazines" >> _item >> "textureIndex");
_paintCanColor = getText(configfile >> "CfgMagazines" >> _item >> "colorName"); _paintCanColor = getText(configfile >> "CfgMagazines" >> _item >> "colorName");
EPOCH_PAINTBUILD = [_vehicle,_paintCanIndex,player,Epoch_personalToken]; [_vehicle,_paintCanIndex,player,Epoch_personalToken] remoteExec ["EPOCH_server_paintBUILD",2];
publicVariableServer "EPOCH_PAINTBUILD";
_msg = format["Wall Painted %1", _paintCanColor]; _msg = format["Wall Painted %1", _paintCanColor];
_dt = [format["<t size='0.8' shadow='0' color='#99ffffff'>%1</t>", _msg], 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; _dt = [format["<t size='0.8' shadow='0' color='#99ffffff'>%1</t>", _msg], 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
@ -285,22 +339,27 @@ switch _interactOption do {
if (_vehicle in _vehicles) then { if (_vehicle in _vehicles) then {
if (damage _vehicle != 0) then { if (damage _vehicle != 0) then {
if (_item call _removeItem) then { if (_item call _removeItem) then {
EPOCH_repairVehicle_PVS = [_vehicle,["ALL",0],player,Epoch_personalToken]; [_vehicle,["ALL",0],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];
publicVariableServer "EPOCH_repairVehicle_PVS";
_dt = ["<t size = '0.8' shadow = '0' color = '#99ffffff'>Healed other player</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; _dt = ["<t size = '0.8' shadow = '0' color = '#99ffffff'>Healed other player</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
}; };
}; };
} else { } else {
if (damage player != 0) then { if (damage player != 0) then {
if (_item call _removeItem) then { if (_item call _removeItem) then {
EPOCH_repairVehicle_PVS = [player,["ALL",0],player,Epoch_personalToken]; [player,["ALL",0],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];
publicVariableServer "EPOCH_repairVehicle_PVS";
_dt = ["<t size = '0.8' shadow = '0' color = '#99ffffff'>Healed yourself</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; _dt = ["<t size = '0.8' shadow = '0' color = '#99ffffff'>Healed yourself</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
}; };
}; };
}; };
}; };
case 14: { // Unpack Backpack
if (_item call _removeItem) then {
[_interactReturnOnUse,player,Epoch_personalToken] remoteExec ["EPOCH_server_unpackBackpack",2];
_dt = ["<t size = '0.8' shadow = '0' color = '#99ffffff'>Unpacked backpack</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
};
};
default { default {
// bottom // bottom
_dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Found nothing</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; _dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Found nothing</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;

View File

@ -15,57 +15,48 @@
private["_hours"]; private["_hours"];
_hours = floor(servertime/60/60); _hours = floor(servertime/60/60);
_customVars = "";
{
if !(_x in ["AliveTime","SpawnArray","HitPoints"]) then {
_customVars = _customVars + format["<t size='1.15' font='puristaLight' align='left'>%1: </t><t size='1.15' font='puristaLight' align='right'>%2</t><br/>", _x,missionNamespace getVariable [format ["EPOCH_player%1",_x],EPOCH_defaultVars select _forEachIndex]];
}
}forEach EPOCH_customVars;
hintSilent parseText format [" hintSilent parseText format ["
<t size='1.25' font='puristaLight' align='center'>Welcome to Epoch Alpha</t><br/> <t size='1.25' font='puristaLight' align='center'>Welcome to Epoch Alpha</t><br/>
<t size='1.18' font='puristaLight' align='center'>Current Version: %22</t><br/> <t size='1.18' font='puristaLight' align='center'>Current Version: %1</t><br/>
<t size='1.15' font='puristaLight' align='left'>Temp: </t><t size='1.15' font='puristaLight' align='right'>%1</t><br/>
<t size='1.15' font='puristaLight' align='left'>Blood Pressure: </t><t size='1.15' font='puristaLight' align='right'>%2</t><br/> " + _customVars + "
<t size='1.15' font='puristaLight' align='left'>Hunger: </t><t size='1.15' font='puristaLight' align='right'>%3</t><br/>
<t size='1.15' font='puristaLight' align='left'>Thirst: </t><t size='1.15' font='puristaLight' align='right'>%4</t><br/>
<t size='1.15' font='puristaLight' align='left'>Energy: </t><t size='1.15' font='puristaLight' align='right'>%5</t><br/>
<t size='1.15' font='puristaLight' align='left'>Wet: </t><t size='1.15' font='puristaLight' align='right'>%6</t><br/>
<t size='1.15' font='puristaLight' align='left'>Soiled: </t><t size='1.15' font='puristaLight' align='right'>%7</t><br/>
<t size='1.15' font='puristaLight' align='left'>Immunity: </t><t size='1.15' font='puristaLight' align='right'>%8</t><br/>
<t size='1.15' font='puristaLight' align='left'>Toxicity: </t><t size='1.15' font='puristaLight' align='right'>%9</t><br/>
<t size='1.15' font='puristaLight' align='left'>Stamina: </t><t size='1.15' font='puristaLight' align='right'>%10</t><br/>
<t size='1.15' font='puristaLight' align='left'>Fatigue: </t><t size='1.15' font='puristaLight' align='right'>%11</t><br/>
<t size='1.15' font='puristaLight' align='left'>Damage: </t><t size='1.15' font='puristaLight' align='right'>%12</t><br/>
<t size='1.15' font='puristaLight' align='left'>Bleeding: </t><t size='1.15' font='puristaLight' align='right'>%13</t><br/>
<t size='1.15' font='puristaLight' align='left'>Bleed Time: </t><t size='1.15' font='puristaLight' align='right'>%14</t><br/>
<t size='1.15' font='puristaLight' align='left'>Oxygen: </t><t size='1.15' font='puristaLight' align='right'>%15</t><br/>
<br/> <br/>
<t size='1.15' font='puristaLight' align='left'>Air Temp: </t><t size='1.15' font='puristaLight' align='right'>%16</t><br/>
<t size='1.15' font='puristaLight' align='left'>Water Temp: </t><t size='1.15' font='puristaLight' align='right'>%17</t><br/> <t size='1.15' font='puristaLight' align='left'>Fatigue: </t><t size='1.15' font='puristaLight' align='right'>%2</t><br/>
<t size='1.15' font='puristaLight' align='left'>Rain: </t><t size='1.15' font='puristaLight' align='right'>%18</t><br/> <t size='1.15' font='puristaLight' align='left'>Damage: </t><t size='1.15' font='puristaLight' align='right'>%3</t><br/>
<t size='1.15' font='puristaLight' align='left'>Overcast: </t><t size='1.15' font='puristaLight' align='right'>%19</t><br/> <t size='1.15' font='puristaLight' align='left'>Bleeding: </t><t size='1.15' font='puristaLight' align='right'>%4</t><br/>
<t size='1.15' font='puristaLight' align='left'>Bleed Time: </t><t size='1.15' font='puristaLight' align='right'>%5</t><br/>
<t size='1.15' font='puristaLight' align='left'>Oxygen: </t><t size='1.15' font='puristaLight' align='right'>%6</t><br/>
<br/> <br/>
<t size='1.15' font='puristaLight' align='left'>Crypto: </t><t size='1.15' font='puristaLight' align='right'>%20</t><br/> <t size='1.15' font='puristaLight' align='left'>Air Temp: </t><t size='1.15' font='puristaLight' align='right'>%7</t><br/>
<t size='1.15' font='puristaLight' align='left'>Hours Alive: </t><t size='1.15' font='puristaLight' align='right'>%21</t><br/> <t size='1.15' font='puristaLight' align='left'>Water Temp: </t><t size='1.15' font='puristaLight' align='right'>%8</t><br/>
<t size='1.15' font='puristaLight' align='left'>FPS: </t><t size='1.15' font='puristaLight' align='right'>%23</t><br/> <t size='1.15' font='puristaLight' align='left'>Rain: </t><t size='1.15' font='puristaLight' align='right'>%9</t><br/>
<t size='1.15' font='puristaLight' align='left'>Server uptime: </t><t size='1.15' font='puristaLight' align='right'>%24h %25m</t><br/> <t size='1.15' font='puristaLight' align='left'>Overcast: </t><t size='1.15' font='puristaLight' align='right'>%10</t><br/>
<t size='1.15' font='puristaLight' align='left'>Server FPS: </t><t size='1.15' font='puristaLight' align='right'>%26</t><br/>", <br/>
EPOCH_playerTemp, <t size='1.15' font='puristaLight' align='left'>Hours Alive: </t><t size='1.15' font='puristaLight' align='right'>%11</t><br/>
EPOCH_playerBloodP, <t size='1.15' font='puristaLight' align='left'>FPS: </t><t size='1.15' font='puristaLight' align='right'>%12</t><br/>
EPOCH_playerHunger, <t size='1.15' font='puristaLight' align='left'>Server uptime: </t><t size='1.15' font='puristaLight' align='right'>%13h %14m</t><br/>
EPOCH_playerThirst, <t size='1.15' font='puristaLight' align='left'>Server FPS: </t><t size='1.15' font='puristaLight' align='right'>%15</t><br/>",
EPOCH_playerEnergy, getText(configFile >> "CfgMods" >> "Epoch" >> "version"),
EPOCH_playerWet,
EPOCH_playerSoiled,
EPOCH_playerImmunity,
EPOCH_playerToxicity,
EPOCH_playerStamina,
(getFatigue player), (getFatigue player),
(damage player), (damage player),
(isBleeding player), (isBleeding player),
(getBleedingRemaining player), (getBleedingRemaining player),
(getOxygenRemaining player), (getOxygenRemaining player),
EPOCH_CURRENT_WEATHER, EPOCH_CURRENT_WEATHER,
(EPOCH_CURRENT_WEATHER/2), (EPOCH_CURRENT_WEATHER/2),
rain, rain,
overcast, overcast,
EPOCH_playerCrypto,
round(EPOCH_playerAliveTime/360)/10, round(EPOCH_playerAliveTime/360)/10,
getText(configFile >> "CfgMods" >> "Epoch" >> "version"),
round diag_fps, round diag_fps,
_hours, _hours,
round((serverTime/60)-(_hours*60)), round((serverTime/60)-(_hours*60)),

View File

@ -34,8 +34,8 @@ if (surfaceIsWater _currentPos) then {
// Cast // Cast
_bobber = createVehicle ["Bobber_EPOCH",_currentPos, [], 0, "CAN_COLLIDE"]; _bobber = createVehicle ["Bobber_EPOCH",_currentPos, [], 0, "CAN_COLLIDE"];
EPOCH_TEMPOBJ_PVS = [_bobber]; // send to server
publicVariableServer "EPOCH_TEMPOBJ_PVS"; [_bobber] remoteExec ["EPOCH_localCleanup",2];
_bobber setPosASL _currentPos; _bobber setPosASL _currentPos;
_bobber setVariable ["EPOCH_bobberTime", diag_tickTime]; _bobber setVariable ["EPOCH_bobberTime", diag_tickTime];

View File

@ -15,25 +15,14 @@
private["_found", "_return", "_foundLocalAnimal", "_str", "_blood", "_foundTerminal", "_index"]; private["_found", "_return", "_foundLocalAnimal", "_str", "_blood", "_foundTerminal", "_index"];
_return = false; _return = false;
_config = 'CfgEpochClient' call EPOCH_returnConfig;
if (isNil "EPOCH_trashLootList") then{
_config = 'CfgEpochClient' call EPOCH_returnConfig;
EPOCH_trashLootList = [];
{
EPOCH_trashLootList pushBack getArray(_config >> worldname >> _x);
} forEach(getArray(_config >> worldname >> "TrashClasses"));
};
if (isNil "EPOCH_atmList") then{
_config = 'CfgEpochClient' call EPOCH_returnConfig;
EPOCH_atmList = getArray(_config >> worldname >> "ATM");
};
if (diag_tickTime - EPOCH_lastTrash > 2) then { if (diag_tickTime - EPOCH_lastTrash > 2) then {
EPOCH_lastTrash = diag_tickTime; EPOCH_lastTrash = diag_tickTime;
_destroyTrashObj = objNull; _destroyTrashObj = objNull;
_lootAnimalObj = objNull; _lootAnimalObj = objNull;
EPOCH_bankTerminal = objNull; _bankTerminal = objNull;
_trashType = 0; _trashType = 0;
_objects = nearestObjects[player, [], 2]; _objects = nearestObjects[player, [], 2];
@ -47,19 +36,28 @@ if (diag_tickTime - EPOCH_lastTrash > 2) then {
_str = str(_x); _str = str(_x);
_findStart = _str find ": "; _findStart = _str find ": ";
if (_findStart != -1) then { if (_findStart != -1) then {
_p3dName = _str select[_findStart + 2, 999];
_start = _findStart + 2;
_end = (_str find ".") - _start;
_p3dName = _str select[_start, _end];
if (_p3dName find " " != -1) then {
(_p3dName splitString " ") joinString "_"; // replace spaces with underscores
};
_finalConfig = (_config >> "WorldInteractions" >> (_p3dName + "_p3d"));
{ {
_found = _p3dName in _x; _found = (getNumber(_finalConfig >> _x) == 1);
if (_found) exitWith{ _trashType = _forEachIndex }; if (_found) exitWith{ _trashType = _forEachIndex };
} forEach EPOCH_trashLootList; } forEach getArray(_config >> worldname >> "TrashClasses");
_foundTerminal = _p3dName in EPOCH_atmList; // TrashClasses[] = { "Trash", "TrashSmall", "TrashVehicle", "PumpkinPatch", "TrashFood" };
//_foundTerminal = _p3dName in EPOCH_atmList;
_foundTerminal = (getNumber(_finalConfig >> "bankTerminal") == 1);
}; };
}; };
} else { } else {
if (alive _x) then { if (alive _x) then {
if ((typeOf _x) in["Land_PhoneBooth_02_F", "Land_PhoneBooth_01_F", "Land_Atm_01_F", "Land_Atm_02_F", "Land_Laptop_device_F"]) then { _foundTerminal = (getNumber(_config >> "WorldInteractions" >> (typeOf _x) >> "bankTerminal") == 1);
_foundTerminal = true
};
if (_x isKindOf "Snake_random_EPOCH") then { if (_x isKindOf "Snake_random_EPOCH") then {
_foundLocalAnimal = true; _foundLocalAnimal = true;
if (random 1 < 0.1) then { if (random 1 < 0.1) then {
@ -74,25 +72,22 @@ if (diag_tickTime - EPOCH_lastTrash > 2) then {
}; };
if (_found) exitWith{ _destroyTrashObj = _x }; if (_found) exitWith{ _destroyTrashObj = _x };
if (_foundLocalAnimal) exitWith{ _lootAnimalObj = _x }; if (_foundLocalAnimal) exitWith{ _lootAnimalObj = _x };
if (_foundTerminal) exitWith{ EPOCH_bankTerminal = _x }; if (_foundTerminal) exitWith{ _bankTerminal = _x };
}forEach _objects; }forEach _objects;
if (!isNull _lootAnimalObj) then { if (!isNull _lootAnimalObj) then {
EPOCH_lootAnimal = [_lootAnimalObj, player, Epoch_personalToken];
_bloodPos = getPosATL _lootAnimalObj; _bloodPos = getPosATL _lootAnimalObj;
_blood = "BloodSplat" createVehicleLocal _bloodPos; _blood = "BloodSplat" createVehicleLocal _bloodPos;
_blood setPosATL _bloodPos; _blood setPosATL _bloodPos;
EPOCH_playerSoiled = (EPOCH_playerSoiled + 1) min 100; EPOCH_playerSoiled = (EPOCH_playerSoiled + 1) min 100;
publicVariableServer "EPOCH_lootAnimal"; // send
[_lootAnimalObj, player, Epoch_personalToken] remoteExec ["EPOCH_server_lootAnimal",2];
_return = true; _return = true;
_dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Object Looted</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; _dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Object Looted</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
}; };
if (!isNull _destroyTrashObj) then { if (!isNull _destroyTrashObj) then {
[_destroyTrashObj, _trashType, player, Epoch_personalToken] remoteExec ["EPOCH_server_destroyTrash",2];
EPOCH_destroyTrash = [_destroyTrashObj, _trashType, player, Epoch_personalToken];
// hint str EPOCH_destroyTrash;
publicVariableServer "EPOCH_destroyTrash";
EPOCH_playerSoiled = (EPOCH_playerSoiled + 1) min 100; EPOCH_playerSoiled = (EPOCH_playerSoiled + 1) min 100;
_return = true; _return = true;
_dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Object Looted</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; _dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Object Looted</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
@ -110,15 +105,14 @@ if (diag_tickTime - EPOCH_lastTrash > 2) then {
_id = [_animal, true] execFSM "\x\addons\a3_epoch_code\System\Animal_brain.fsm"; _id = [_animal, true] execFSM "\x\addons\a3_epoch_code\System\Animal_brain.fsm";
_animals pushBack _animal; _animals pushBack _animal;
}; };
EPOCH_TEMPOBJ_PVS = _animals; _animals remoteExec ["EPOCH_localCleanup",2];
publicVariableServer "EPOCH_TEMPOBJ_PVS";
}; };
}; };
if (!isNull EPOCH_bankTerminal) then { if (!isNull _bankTerminal) then {
// make balance request // make balance request
if (isNil "EPOCH_bankTransferActive") then { if (isNil "EPOCH_bankTransferActive") then {
EPOCH_storeCrypto_PVS = [player, [], Epoch_personalToken]; [player, [], Epoch_personalToken] remoteExec ["EPOCH_server_storeCrypto",2];
publicVariableServer "EPOCH_storeCrypto_PVS";
closeDialog 0; closeDialog 0;
createDialog "InteractBank"; createDialog "InteractBank";

View File

@ -27,25 +27,32 @@ if ((diag_tickTime - EPOCH_lastMineRocks) >= 2) then {
_object = objNull; _object = objNull;
_config = 'CfgEpochClient' call EPOCH_returnConfig; _config = 'CfgEpochClient' call EPOCH_returnConfig;
_lootables = getArray(_config >> worldname >> "Wrecks");
_cinderList = getArray(_config >> worldname >> "Cinder");
_rocksList = getArray(_config >> worldname >> "Rocks");
_found = false; _found = false;
_foundIndex = -1; _foundIndex = -1;
{ {
_str = str(_x); if !(_x isKindOf "All") then {
_findStart = _str find ": "; _str = str(_x);
if (_findStart != -1) then{ _findStart = _str find ": ";
_p3dName = _str select[_findStart + 2, 999]; if (_findStart != -1) then{
_found = _p3dName in _rocksList;
if (_p3dName in _lootables) then{ _start = _findStart + 2;
_found = true; _end = (_str find ".") - _start;
_foundIndex = 1; _p3dName = _str select[_start, _end];
}; if (_p3dName find " " != -1) then {
if (_p3dName in _cinderList) then{ (_p3dName splitString " ") joinString "_"; // replace spaces with underscores
_found = true; };
_foundIndex = 0; _finalConfig = (_config >> "WorldInteractions" >> (_p3dName + "_p3d"));
_found = (getNumber(_finalConfig >> "rock") == 1);
if (getNumber(_finalConfig >> "wreck") == 1) then{
_found = true;
_foundIndex = 1;
};
if (getNumber(_finalConfig >> "cinder") == 1) then{
_found = true;
_foundIndex = 0;
};
}; };
}; };
if (_found)exitWith{_object = _x}; if (_found)exitWith{_object = _x};
@ -53,8 +60,7 @@ if ((diag_tickTime - EPOCH_lastMineRocks) >= 2) then {
if (!isNull _object) then { if (!isNull _object) then {
if (alive _object) then { if (alive _object) then {
EPOCH_mineRocks_PVS = [_object, _foundIndex, player, Epoch_personalToken]; [_object, _foundIndex, player, Epoch_personalToken] remoteExec ["EPOCH_server_mineRocks",2];
publicVariableServer "EPOCH_mineRocks_PVS";
}; };
}; };
}; };

View File

@ -53,7 +53,7 @@ if (!isNull EPOCH_currentTarget && vehicle player == player) then {
case 0: { case 0: {
_stability = 100 - round(damage _currentTarget * 100); _stability = 100 - round(damage _currentTarget * 100);
_icon = "\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa"; _icon = "\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa";
_text = "Press (Inventory)"; _text = "";
if (_stability < 50) then { if (_stability < 50) then {
_color = [1, 0.5, 0, 0.7]; _color = [1, 0.5, 0, 0.7];

View File

@ -4,7 +4,7 @@
Contributors: Contributors:
Description: Description:
test code to replace string in word (old) code to replace string in word
Licence: Licence:
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
@ -12,41 +12,5 @@
Github: Github:
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/EPOCH_replaceWord.sqf https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/EPOCH_replaceWord.sqf
*/ */
private["_nextChar2", "_nextChar1", "_nextChar", "_replaceArray", "_STRING", "_needle", "_replace"]; params ["_STRING","_needle","_replace"];
_replaceArray = []; _STRING splitString _needle joinString _replace
_STRING = toArray(_this select 0);
_needle = toArray(_this select 1);
_replace = toArray(_this select 2);
{
if (_x == (_needle select 0)) then {
_nextChar = _forEachIndex + 1;
if ((_STRING select _nextChar) == (_needle select 1)) then {
_nextChar1 = _nextChar + 1;
if ((_STRING select _nextChar1) == (_needle select 2)) then {
_nextChar2 = _nextChar1 + 1;
if ((_STRING select _nextChar2) == (_needle select 3)) then {
_nextChar3 = _nextChar2 + 1;
if ((_STRING select _nextChar3) == (_needle select 4)) then {
_nextChar4 = _nextChar3 + 1;
if ((_STRING select _nextChar4) == (_needle select 5)) then {
_replaceArray pushBack[_forEachIndex, _nextChar, _nextChar1, _nextChar2, _nextChar3, _nextChar4];
};
};
};
};
};
};
}forEach _STRING;
{
for "_i" from 0 to(count _x - 1) do {
_STRING set[_x select _i, _replace select _i];
}
}forEach _replaceArray;
toString(_STRING);

View File

@ -58,5 +58,5 @@ for "_i" from 0 to ((count _arrUnits)-1) do {
}; };
// cleanup units or (transfer ownership) if player logs out // cleanup units or (transfer ownership) if player logs out
EPOCH_TEMPOBJ_PVS = _units; // send to server
publicVariableServer "EPOCH_TEMPOBJ_PVS"; _units remoteExec ["EPOCH_localCleanup",2];

View File

@ -114,6 +114,6 @@ switch _unitClass do {
}; };
if !(isNull _unit) then { if !(isNull _unit) then {
EPOCH_TEMPOBJ_PVS = _unit; // send to server
publicVariableServer "EPOCH_TEMPOBJ_PVS"; [_unit] remoteExec ["EPOCH_localCleanup",2];
}; };

View File

@ -134,15 +134,15 @@ if !(isNull _object) then {
}; };
{ {
_craftItem = _x; _craftItem = _x;
_craftQty = 1; _craftQty = 1;
if (typeName _x == "ARRAY") then { if (typeName _x == "ARRAY") then {
_craftItem = _x select 0; _craftItem = _x select 0;
_craftQty = _x select 1; _craftQty = _x select 1;
}; };
for "_i" from 1 to _craftQty do { for "_i" from 1 to _craftQty do {
player addMagazine _craftItem; _craftItem call EPOCH_fnc_addItemOverflow;
}; };
}forEach _recipe; }forEach _recipe;
_dt = [format["<t size='0.8' shadow='0' color='#99ffffff'>%1 part on %2</t>","Removed",_objClass call EPOCH_itemDisplayName], 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; _dt = [format["<t size='0.8' shadow='0' color='#99ffffff'>%1 part on %2</t>","Removed",_objClass call EPOCH_itemDisplayName], 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;

View File

@ -76,9 +76,7 @@ if (!isNull _this) then {
// proceed to send save to server // proceed to send save to server
} else { } else {
if (_saveCheck) then { if (_saveCheck) then {
EPOCH_SAVEBUILD = [_this, player, Epoch_personalToken]; [_this, player, Epoch_personalToken] remoteExec["EPOCH_server_saveBuilding", 2];
publicVariableServer "EPOCH_SAVEBUILD";
//diag_log format["DEBUG SAVE: %1", _this];
}; };
}; };
}; };

View File

@ -40,8 +40,7 @@ if (EPOCH_playerCrypto > 0) then {
EPOCH_maintainLockout = true; EPOCH_maintainLockout = true;
EPOCH_MAINTBUILD = [_this, player, _maintainCount, Epoch_personalToken]; [_this, player, _maintainCount, Epoch_personalToken] remoteExec ["EPOCH_server_maintBUILD",2];
publicVariableServer "EPOCH_MAINTBUILD";
[_rnd,_maintainCount] spawn { [_rnd,_maintainCount] spawn {
params ["_rnd","_maintainCount"]; params ["_rnd","_maintainCount"];

View File

@ -82,8 +82,7 @@ if !(_buildingAllowed)exitWith{false};
_removeParts = getArray(('CfgBaseBuilding' call EPOCH_returnConfig) >> _objType >> "removeParts"); _removeParts = getArray(('CfgBaseBuilding' call EPOCH_returnConfig) >> _objType >> "removeParts");
if !(_removeParts isEqualTo[]) then{ if !(_removeParts isEqualTo[]) then{
EPOCH_REMBUILD = [_this, player, Epoch_personalToken]; [_this, player, Epoch_personalToken] remoteExec ["EPOCH_server_removeBUILD",2];
publicVariableServer "EPOCH_REMBUILD";
_return = true; _return = true;
_dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Removed</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; _dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Removed</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
}; };

View File

@ -72,8 +72,7 @@ if (isText(_config)) then {
_newObj setposATL (_worldspace select 0); _newObj setposATL (_worldspace select 0);
if (_textureSlot != 0) then { if (_textureSlot != 0) then {
EPOCH_PAINTBUILD = [_newObj, _textureSlot, player, Epoch_personalToken]; [_newObj, _textureSlot, player, Epoch_personalToken] remoteExec ["EPOCH_server_paintBUILD",2];
publicVariableServer "EPOCH_PAINTBUILD";
}; };
}; };
EP_velocityTransformation = []; EP_velocityTransformation = [];

View File

@ -73,8 +73,8 @@ if (_class != "") then {
_pos2 = player modelToWorldVisual[EPOCH_X_OFFSET, EPOCH_Y_OFFSET, EPOCH_Z_OFFSET]; _pos2 = player modelToWorldVisual[EPOCH_X_OFFSET, EPOCH_Y_OFFSET, EPOCH_Z_OFFSET];
EPOCH_target = createVehicle[_class, _pos2, [], 0, "CAN_COLLIDE"]; EPOCH_target = createVehicle[_class, _pos2, [], 0, "CAN_COLLIDE"];
EPOCH_TEMPOBJ_PVS = EPOCH_target; // send to server
publicVariableServer "EPOCH_TEMPOBJ_PVS"; [EPOCH_target] remoteExec ["EPOCH_localCleanup",2];
if (_pos2 select 2 > _maxHeight) then { if (_pos2 select 2 > _maxHeight) then {
_pos2 set[2, _maxHeight]; _pos2 set[2, _maxHeight];

View File

@ -124,8 +124,7 @@ if (_object isKindOf "Constructions_static_F") then {
if (_canUpgradePartCount == _removedPartCount) then { if (_canUpgradePartCount == _removedPartCount) then {
// send to server for upgrade // send to server for upgrade
EPOCH_UPBUILD = [_object,player,Epoch_upgradeIndex,Epoch_personalToken]; [_object,player,Epoch_upgradeIndex,Epoch_personalToken] remoteExec ["EPOCH_server_upgradeBUILD",2];
publicVariableServer "EPOCH_UPBUILD";
Epoch_upgradeIndex = nil; Epoch_upgradeIndex = nil;
_return = true; _return = true;
_dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Upgraded</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; _dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Upgraded</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;

View File

@ -46,7 +46,7 @@ if !(isNull _this && alive _this) then {
_bleedAmount = 30; _bleedAmount = 30;
_bloodpAmount = 3; _bloodpAmount = 3;
_soundEffect = "snake_bite0"; _soundEffect = "snake_bite0";
_canSee = true; _canSee = !(lineIntersects[eyePos _this, aimPos player, _this, player]);
_ppEffect = 0; _ppEffect = 0;
}; };
case "Snake2_random_EPOCH": { case "Snake2_random_EPOCH": {
@ -57,7 +57,7 @@ if !(isNull _this && alive _this) then {
_bleedAmount = 30; _bleedAmount = 30;
_bloodpAmount = 3; _bloodpAmount = 3;
_soundEffect = "snake_bite0"; _soundEffect = "snake_bite0";
_canSee = true; _canSee = !(lineIntersects[eyePos _this, aimPos player, _this, player]);
_ppEffect = 0; _ppEffect = 0;
}; };
case "GreatWhite_F": { case "GreatWhite_F": {
@ -101,7 +101,7 @@ if !(isNull _this && alive _this) then {
_this say3D _soundEffect; _this say3D _soundEffect;
if (_soundEffectGlobal) then { if (_soundEffectGlobal) then {
EPOCH_say3D_PVS = [player, _this, _soundEffectIndex, Epoch_personalToken]; EPOCH_say3D_PVS = [player, _this, _soundEffectIndex, Epoch_personalToken];
publicVariableServer "EPOCH_say3D_PVS"; EPOCH_say3D_PVS remoteExec ["EPOCH_server_handle_say3D",2];
}; };
}; };
if (random 1 < _toxicChance) then { if (random 1 < _toxicChance) then {

View File

@ -50,8 +50,8 @@ if!(isNil "_animalPos") then {
// diag_log format["DEBUG: spawned %1", _randomAIClass]; // diag_log format["DEBUG: spawned %1", _randomAIClass];
EPOCH_TEMPOBJ_PVS = _animal; // send to server
publicVariableServer "EPOCH_TEMPOBJ_PVS"; [_animal] remoteExec ["EPOCH_localCleanup",2];
{ {
_animal disableAI _x; _animal disableAI _x;

View File

@ -19,23 +19,25 @@
_this: STRING - Item Class _this: STRING - Item Class
Returns: Returns:
NOTHING BOOL
*/ */
private ["_wHPos","_wH","_nearByHolder","_item"]; private ["_wHPos","_wH","_nearByHolder","_item"];
if (_this isEqualTo "") exitWith{false};
_item = _this; _item = _this;
if (player canAdd _item) then { if (player canAdd _item) then {
player addItem _item; player addItem _item;
} else { } else {
_wH = objNull; _wH = objNull;
_nearByHolder = nearestObjects [position player,["groundWeaponHolder"],3]; _nearByHolder = nearestObjects [position player,["groundWeaponHolder"],3];
if (_nearByHolder isEqualTo []) then { if (_nearByHolder isEqualTo []) then {
_wHPos = player modelToWorld [0,1,0]; _wHPos = player modelToWorld [0,1,0];
if (surfaceIsWater _wHPos) then { if (surfaceIsWater _wHPos) then {
_wHPos = ASLToATL _wHPos; _wHPos = ASLToATL _wHPos;
};
_wH = createVehicle ["groundWeaponHolder",_wHPos, [], 0, "CAN_COLLIDE"];
} else {
_wH = _nearByHolder select 0;
}; };
_wH = createVehicle ["groundWeaponHolder",_wHPos, [], 0, "CAN_COLLIDE"]; _wh addItemCargoGlobal [_item,1];
} else {
_wH = _nearByHolder select 0;
};
_wh addItemCargoGlobal [_item,1];
}; };
true

View File

@ -32,8 +32,7 @@ if (vehicle _unit != _unit) then {
_unit action["Eject", vehicle _unit]; _unit action["Eject", vehicle _unit];
}; };
EPOCH_deadPlayer_PVS = [player,_killer,toArray profileName,Epoch_personalToken]; [player,_killer,toArray profileName,Epoch_personalToken] remoteExec ["EPOCH_server_deadPlayer",2];
publicVariableServer "EPOCH_deadPlayer_PVS";
// disable build mode // disable build mode
EPOCH_buildMode = 0; EPOCH_buildMode = 0;

View File

@ -55,8 +55,7 @@ switch true do {
if ("Defib_EPOCH" in _attachments) then { if ("Defib_EPOCH" in _attachments) then {
if (!alive _cursorTarget) then { if (!alive _cursorTarget) then {
EPOCH_revivePlayer_PVS = [_cursorTarget,player,Epoch_personalToken]; [_cursorTarget,player,Epoch_personalToken] remoteExec ["EPOCH_server_revivePlayer",2];
publicVariableServer "EPOCH_revivePlayer_PVS";
}; };
}; };
} else { } else {
@ -83,15 +82,13 @@ switch true do {
if (local _cursorTarget) then { if (local _cursorTarget) then {
[_cursorTarget,[_currentHIT,_newDMG]] call EPOCH_client_repairVehicle; [_cursorTarget,[_currentHIT,_newDMG]] call EPOCH_client_repairVehicle;
} else { } else {
EPOCH_repairVehicle_PVS = [_cursorTarget,[_currentHIT,_newDMG],player,Epoch_personalToken]; [_cursorTarget,[_currentHIT,_newDMG],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];
publicVariableServer "EPOCH_repairVehicle_PVS";
}; };
//diag_log format["DEBUG HITPOINT REPAIRED: %1 %2 %3", _currentHIT, _newDMG, _attachments]; //diag_log format["DEBUG HITPOINT REPAIRED: %1 %2 %3", _currentHIT, _newDMG, _attachments];
} else { } else {
if ((damage _cursorTarget) > 0) then { if ((damage _cursorTarget) > 0) then {
EPOCH_repairVehicle_PVS = [_cursorTarget,["ALL",0],player,Epoch_personalToken]; [_cursorTarget,["ALL",0],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];
publicVariableServer "EPOCH_repairVehicle_PVS";
}; };
}; };
}; };

View File

@ -38,9 +38,7 @@ if ((diag_tickTime - _EPOCH_lastSave) >= _time) then {
_customVars pushBack (missionNamespace getVariable format["EPOCH_player%1",_x select 0]); _customVars pushBack (missionNamespace getVariable format["EPOCH_player%1",_x select 0]);
} forEach _customVarsInit; } forEach _customVarsInit;
// TODO: use remoteExec here [player,_customVars,missionNamespace getVariable "Epoch_personalToken"] remoteExec ["EPOCH_fnc_savePlayer",2];
missionNamespace setVariable ["EPOCH_pushPlayer_PVS",[player,_customVars,missionNamespace getVariable "Epoch_personalToken"]];
publicVariableServer "EPOCH_pushPlayer_PVS";
missionNamespace setVariable["EPOCH_lastSave", diag_tickTime]; missionNamespace setVariable["EPOCH_lastSave", diag_tickTime];
}; };

View File

@ -248,14 +248,12 @@ if (vehicle player == player) then {
if (isTouchingGround player && speed player > 10) then { if (isTouchingGround player && speed player > 10) then {
if ((primaryWeapon player != "") && (currentWeapon player == primaryWeapon player)) then { if ((primaryWeapon player != "") && (currentWeapon player == primaryWeapon player)) then {
player switchMove "AovrPercMrunSrasWrflDf"; player switchMove "AovrPercMrunSrasWrflDf";
EPOCH_switchMove_PVS = [player, 1, Epoch_personalToken]; [player, 1, Epoch_personalToken] remoteExec ["EPOCH_server_handle_switchMove",2];
publicVariableServer "EPOCH_switchMove_PVS";
_handled = true; _handled = true;
} else { } else {
if (currentWeapon player == "") then { if (currentWeapon player == "") then {
player switchMove "epoch_unarmed_jump"; player switchMove "epoch_unarmed_jump";
EPOCH_switchMove_PVS = [player, 2, Epoch_personalToken]; [player, 2, Epoch_personalToken] remoteExec ["EPOCH_server_handle_switchMove",2];
publicVariableServer "EPOCH_switchMove_PVS";
_handled = true; _handled = true;
}; };
}; };
@ -268,7 +266,8 @@ if (vehicle player == player) then {
}; };
}; };
if (_dikCode in(actionKeys "Gear")) then { if (_dikCode in(actionKeys "Gear") && !EPOCH_gearKeyPressed) then {
EPOCH_gearKeyPressed = true;
if !(isNull EPOCH_Target) then { if !(isNull EPOCH_Target) then {
if !(EPOCH_Target isKindOf "ThingX") then { if !(EPOCH_Target isKindOf "ThingX") then {
deleteVehicle EPOCH_Target; deleteVehicle EPOCH_Target;
@ -280,14 +279,6 @@ if (vehicle player == player) then {
if (isTouchingGround player) then { if (isTouchingGround player) then {
_handled = call EPOCH_lootTrash; _handled = call EPOCH_lootTrash;
}; };
if !(_handled) then {
if (!isNull(findDisplay 602)) then { //Inventory Open?
(findDisplay 602) closeDisplay 3000;
}
else {
_handled = _ctrl call EPOCH_startInteract;
};
};
}; };
}; // end player only code }; // end player only code

View File

@ -36,5 +36,9 @@ if (_dikCode == EPOCH_keysAction) then {
true call Epoch_dynamicMenuCleanup; true call Epoch_dynamicMenuCleanup;
}; };
if (_dikCode in(actionKeys "Gear")) then {
EPOCH_gearKeyPressed = false;
};
_handled _handled

View File

@ -43,6 +43,7 @@ EPOCH_InteractedItem = [_text,_data,_pic];
_interactOption = 0; _interactOption = 0;
_buttonTXT = ""; _buttonTXT = "";
_magCount = 1;
if (isClass (configfile >> "cfgweapons" >> _data)) then { if (isClass (configfile >> "cfgweapons" >> _data)) then {
_type = getNumber (configfile >> "CfgWeapons" >> _data >> "type"); _type = getNumber (configfile >> "CfgWeapons" >> _data >> "type");
_interactOption = getNumber (configfile >> "CfgWeapons" >> _data >> "interactAction"); _interactOption = getNumber (configfile >> "CfgWeapons" >> _data >> "interactAction");
@ -51,6 +52,7 @@ if (isClass (configfile >> "cfgweapons" >> _data)) then {
_type = getNumber (configfile >> "CfgMagazines" >> _data >> "type"); _type = getNumber (configfile >> "CfgMagazines" >> _data >> "type");
_interactOption = getNumber (configfile >> "CfgMagazines" >> _data >> "interactAction"); _interactOption = getNumber (configfile >> "CfgMagazines" >> _data >> "interactAction");
_buttonTXT = getText(configfile >> "CfgMagazines" >> _data >> "interactText"); _buttonTXT = getText(configfile >> "CfgMagazines" >> _data >> "interactText");
_magCount = getNumber (configfile >> "CfgMagazines" >> _data >> "count");
}; };
_display = (findDisplay 602); _display = (findDisplay 602);
@ -60,8 +62,13 @@ if (_buttonTXT != "") then {
_useBtn ctrlSetText _buttonTXT; _useBtn ctrlSetText _buttonTXT;
_useBtn ctrlEnable true; _useBtn ctrlEnable true;
} else { } else {
_useBtn ctrlSetText "EXAMINE"; if (_magCount > 1) then {
_useBtn ctrlEnable false; _useBtn ctrlEnable true;
_useBtn ctrlSetText "REPACK";
} else {
_useBtn ctrlSetText "EXAMINE";
_useBtn ctrlEnable false;
};
}; };
_useBtn = _display displayCtrl -14; _useBtn = _display displayCtrl -14;

View File

@ -9,8 +9,8 @@ _cage2 = createVehicle ["Land_Cages_F", _cagePos, [], 2, "CAN_COLLIDE"] ;
_cage2 setVectorDirAndUp [[0,0,1],[0,1,0]]; _cage2 setVectorDirAndUp [[0,0,1],[0,1,0]];
_cage attachTo [_cage2,[0,1.3,0]]; _cage attachTo [_cage2,[0,1.3,0]];
EPOCH_TEMPOBJ_PVS = [_cage,_cage2]; // send to server
publicVariableServer "EPOCH_TEMPOBJ_PVS"; [_cage,_cage2] remoteExec ["EPOCH_localCleanup",2];
_startCage = diag_tickTime; _startCage = diag_tickTime;
@ -27,12 +27,11 @@ _sapper setVectorDirAndUp [[0,0,1],[0,1,0]];
_sapper forcespeed 0; _sapper forcespeed 0;
if !(isNull _sapper) then { if !(isNull _sapper) then {
EPOCH_TEMPOBJ_PVS = _sapper; // send to server
publicVariableServer "EPOCH_TEMPOBJ_PVS"; [_sapper] remoteExec ["EPOCH_localCleanup",2];
}; };
EPOCH_FillContainer_PVS = [player,Epoch_personalToken,objNull,false,25]; [player,Epoch_personalToken,objNull,false,25] remoteExec ["EPOCH_server_fillContainer",2];
publicVariableServer "EPOCH_FillContainer_PVS";
while {player distance _sapper < 100 && alive player} do { while {player distance _sapper < 100 && alive player} do {
@ -41,7 +40,7 @@ while {player distance _sapper < 100 && alive player} do {
_sound = _sounds select (floor (random (count _sounds))); _sound = _sounds select (floor (random (count _sounds)));
_sapper say3D _sound; _sapper say3D _sound;
EPOCH_say3D_PVS = [player, _sapper,(EPOCH_sounds find _sound), Epoch_personalToken]; EPOCH_say3D_PVS = [player, _sapper,(EPOCH_sounds find _sound), Epoch_personalToken];
publicVariableServer "EPOCH_say3D_PVS"; EPOCH_say3D_PVS remoteExec ["EPOCH_server_handle_say3D",2];
}; };
uiSleep 0.5; uiSleep 0.5;
}; };

View File

@ -58,8 +58,7 @@ if (!isNull EPOCH_p2ptradeTarget) then {
}forEach _array; }forEach _array;
if (_removeCount == count _array) then { if (_removeCount == count _array) then {
EPOCH_MAKETRADE = [player, EPOCH_p2ptradeTarget, _array, _tradeOffer, Epoch_personalToken]; [player, EPOCH_p2ptradeTarget, _array, _tradeOffer, Epoch_personalToken] remoteExec ["EPOCH_server_makeTrade",2];
publicVariableServer "EPOCH_MAKETRADE";
}; };
(findDisplay -1900) closeDisplay 1; (findDisplay -1900) closeDisplay 1;

View File

@ -9,8 +9,8 @@ if (!isNull _otherPlyr) then {
// restict to only players not in vehicles // restict to only players not in vehicles
if (vehicle player == player && vehicle _otherPlyr == _otherPlyr) then { if (vehicle player == player && vehicle _otherPlyr == _otherPlyr) then {
EPOCH_MAKETRADEREQ = _this; // send
publicVariableServer "EPOCH_MAKETRADEREQ"; _this remoteExec ["EPOCH_server_tradeRequest",2];
// target other player // target other player
EPOCH_p2ptradeTarget = _otherPlyr; EPOCH_p2ptradeTarget = _otherPlyr;

View File

@ -31,7 +31,6 @@ if !(alive player && alive _playerObject && !isPlayer _playerObject) then {
// deleteGroup _group; // deleteGroup _group;
Epoch_canBeRevived = false; Epoch_canBeRevived = false;
Epoch_personalToken = _this select 1; Epoch_personalToken = _this select 1;
// call EPOCH_clientInit; // call EPOCH_clientInit;
@ -41,13 +40,12 @@ if !(alive player && alive _playerObject && !isPlayer _playerObject) then {
closeDialog 0; closeDialog 0;
("BIS_fnc_respawnCounter" call BIS_fnc_rscLayer) cutText ["","PLAIN"]; ("BIS_fnc_respawnCounter" call BIS_fnc_rscLayer) cutText ["","PLAIN"];
player addEventHandler ["Respawn", {(_this select 0) call EPOCH_clientRespawn}]; {
player addEventHandler ["Put", {(_this select 1) call EPOCH_interact;_this call EPOCH_PutHandler}]; player addEventHandler [_x,(["CfgEpochClient", _x, ""] call EPOCH_fnc_returnConfigEntryV2)];
player addEventHandler ["Take", {(_this select 1) call EPOCH_interact;_this call EPOCH_UnisexCheck}]; } forEach (["CfgEpochClient", "addEventHandler", []] call EPOCH_fnc_returnConfigEntryV2);
player addEventHandler ["InventoryClosed", { if !(EPOCH_arr_interactedObjs isEqualTo[]) then{EPOCH_arr_interactedObjs remoteExec["EPOCH_server_save_vehicles", 2]; EPOCH_arr_interactedObjs = []; }; }];
player addEventHandler ["InventoryOpened", {_this spawn EPOCH_initUI; (locked (_this select 1) in [2, 3] || (_this select 1) getVariable["EPOCH_Locked", false]) }]; // reset blood Pressure to warning level
player addEventHandler ["Fired", {_this call EPOCH_fnc_playerFired}]; EPOCH_playerBloodP = 120;
player addEventHandler ["Killed", {_this call EPOCH_fnc_playerDeath}];
} else { } else {
deleteVehicle _playerObject; deleteVehicle _playerObject;
}; };

View File

@ -44,7 +44,7 @@ call compile ("
case "+str(_this select 16)+": { Epoch_my_GroupUID = _data }; case "+str(_this select 16)+": { Epoch_my_GroupUID = _data };
case "+str(_this select 17)+": { _data call EPOCH_Group_invitePlayer }; case "+str(_this select 17)+": { _data call EPOCH_Group_invitePlayer };
case "+str(_this select 18)+": { _data call EPOCH_handleServerMessage }; case "+str(_this select 18)+": { _data call EPOCH_handleServerMessage };
case "+str(_this select 19)+": { {missionNamespace setVariable[format['EPOCH_player%1', _x], EPOCH_defaultVars select(EPOCH_customVars find _x)]} forEach['Temp','Hunger','Thirst','Toxicity','Stamina','HitPoints','BloodP']}; case "+str(_this select 19)+": { {missionNamespace setVariable[format['EPOCH_player%1', _x], EPOCH_defaultVars select(EPOCH_customVars find _x)]} forEach['Temp','Hunger','Thirst','Toxicity','Stamina','HitPoints','BloodP','Alcohol','Radiation']};
case "+str(_this select 20)+": { _data call EPOCH_mission_returnObj }; case "+str(_this select 20)+": { _data call EPOCH_mission_returnObj };
}; };
}; };

View File

@ -1,142 +1,138 @@
_currentTarget = objNull;
// current target _cursorTarget = ([10] call EPOCH_fnc_cursorTarget);
if (!isNull _cursorTarget && {!(EPOCH_target isEqualTo _cursorTarget)}) then {
_currentTarget = objNull; if (_cursorTarget isKindOf "ThingX" || _cursorTarget isKindOf "Constructions_static_F" || _cursorTarget isKindOf "Constructions_foundation_F" || _cursorTarget isKindOf "WeaponHolder" || _cursorTarget isKindOf "AllVehicles" || _cursorTarget isKindOf "PlotPole_EPOCH") then{
_cursorTarget = ([10] call EPOCH_fnc_cursorTarget); if (_cursorTarget isKindOf "Animal_Base_F") then {
if (!isNull _cursorTarget && {!(EPOCH_target isEqualTo _cursorTarget)}) then { if !(alive _cursorTarget) then {
if (_cursorTarget isKindOf "ThingX" || _cursorTarget isKindOf "Constructions_static_F" || _cursorTarget isKindOf "Constructions_foundation_F" || _cursorTarget isKindOf "WeaponHolder" || _cursorTarget isKindOf "AllVehicles" || _cursorTarget isKindOf "PlotPole_EPOCH") then{ _currentTarget = _cursorTarget;
if (_cursorTarget isKindOf "Animal_Base_F") then {
if !(alive _cursorTarget) then {
_currentTarget = _cursorTarget;
};
} else {
_currentTarget = _cursorTarget;
};
};
};
EPOCH_currentTarget = _currentTarget;
_increaseStamina = false;
_vehicle = vehicle player;
if (_vehicle == player) then {
_val = log(abs(speed player));
_staminaThreshold = 0.7;
if (EPOCH_playerIsSwimming) then {_staminaThreshold = 0.3};
if (_val>_staminaThreshold) then {
EPOCH_playerStamina = (EPOCH_playerStamina - (_val/4)) max 0;
} else {
_increaseStamina = true;
}; };
} else { } else {
if (EPOCH_buildMode > 0) then { _currentTarget = _cursorTarget;
EPOCH_buildMode = 0; };
EPOCH_snapDirection = 0; };
hintsilent "BUILD MODE: DISABLED"; };
EPOCH_Target = objNull; EPOCH_currentTarget = _currentTarget;
// EPOCH_SURVEY = [];
}; _increaseStamina = false;
_increaseStamina = true; _vehicle = vehicle player;
if (_vehicle == player) then {
switch (typeOf _vehicle) do { _val = log(abs(speed player));
case "jetski_epoch": { _staminaThreshold = 0.7;
_clock_hour10 = floor ((date select 3)/10); if (EPOCH_playerIsSwimming) then {_staminaThreshold = 0.3};
_clock_minute10 = floor ((date select 4)/10); if (_val>_staminaThreshold) then {
{ EPOCH_playerStamina = (EPOCH_playerStamina - (_val/4)) max 0;
_vehicle setObjectTexture [_forEachIndex,_x]; } else {
}forEach[ _increaseStamina = true;
format["\x\addons\a3_epoch_vehicles\data\num%1_ca.paa",_clock_hour10], };
format["\x\addons\a3_epoch_vehicles\data\num%1_ca.paa",(date select 3)-(_clock_hour10*10)], } else {
format["\x\addons\a3_epoch_vehicles\data\num%1_ca.paa",_clock_minute10], if (EPOCH_buildMode > 0) then {
format["\x\addons\a3_epoch_vehicles\data\num%1_ca.paa",(date select 4)-(_clock_minute10*10)], EPOCH_buildMode = 0;
format["\x\addons\a3_epoch_vehicles\data\fuel%1_ca.paa",floor(fuel _vehicle*10)] EPOCH_snapDirection = 0;
]; hintsilent "BUILD MODE: DISABLED";
}; EPOCH_Target = objNull;
case "ebike_epoch": { // EPOCH_SURVEY = [];
{ };
_vehicle setObjectTexture [_forEachIndex,_x]; _increaseStamina = true;
}forEach[
format["\x\addons\a3_epoch_vehicles\data\speed%1_ca.paa",floor(speed _vehicle/9) max 0], switch (typeOf _vehicle) do {
format["\x\addons\a3_epoch_vehicles\data\energ%1_ca.paa",floor(fuel _vehicle*14)] case "jetski_epoch": {
]; _clock_hour10 = floor ((date select 3)/10);
}; _clock_minute10 = floor ((date select 4)/10);
{
_vehicle setObjectTexture [_forEachIndex,_x];
}forEach[
format["\x\addons\a3_epoch_vehicles\data\num%1_ca.paa",_clock_hour10],
format["\x\addons\a3_epoch_vehicles\data\num%1_ca.paa",(date select 3)-(_clock_hour10*10)],
format["\x\addons\a3_epoch_vehicles\data\num%1_ca.paa",_clock_minute10],
format["\x\addons\a3_epoch_vehicles\data\num%1_ca.paa",(date select 4)-(_clock_minute10*10)],
format["\x\addons\a3_epoch_vehicles\data\fuel%1_ca.paa",floor(fuel _vehicle*10)]
];
};
case "ebike_epoch": {
{
_vehicle setObjectTexture [_forEachIndex,_x];
}forEach[
format["\x\addons\a3_epoch_vehicles\data\speed%1_ca.paa",floor(speed _vehicle/9) max 0],
format["\x\addons\a3_epoch_vehicles\data\energ%1_ca.paa",floor(fuel _vehicle*14)]
];
};
};
};
_envCold = EPOCH_playerTemp <= 95.0;
_envHot = EPOCH_playerTemp >= 106.7;
_hungry = EPOCH_playerHunger <= 0;
_thirsty = EPOCH_playerThirst <= 0;
_warnbloodPressure = EPOCH_playerBloodP > 120;
_thirst ctrlShow (EPOCH_playerThirst <= 625);
if (ctrlShown _thirst) then {
[_thirst,_thirsty] call _fadeUI;
_thirstScale = linearConversion [0,EPOCH_playerThirst,2500,0.01,1,true];
_thirst ctrlSetTextColor [_thirstScale, _thirstScale, 0.9, 1];
};
_hunger ctrlShow (EPOCH_playerHunger <= 1250);
if (ctrlShown _hunger) then {
[_hunger,_hungry] call _fadeUI;
_hungerScale = linearConversion [0,EPOCH_playerHunger,5000,0.01,1,true];
_hunger ctrlSetTextColor [1, _hungerScale, _hungerScale, 1];
};
_playerOxygen = getOxygenRemaining player;
_oxygen ctrlShow (_playerOxygen < 1);
if (ctrlShown _oxygen) then {
[_oxygen,(_playerOxygen <= 0.55)] call _fadeUI;
_oxygen ctrlSetTextColor [1, _playerOxygen, _playerOxygen, 1];
};
_hazzard ctrlShow (EPOCH_playerToxicity > 1);
if (ctrlShown _hazzard) then {
[_hazzard,(EPOCH_playerToxicity >= 55)] call _fadeUI;
_toxicScale = 1-linearConversion [0,EPOCH_playerToxicity,100,0.01,1,true];
_hazzard ctrlSetTextColor [_toxicScale, 1, _toxicScale, 1];
};
_broken ctrlShow ((player getHitPointDamage "HitLegs") >= 0.5);
if (ctrlShown _broken) then {
[_broken,true] call _fadeUI;
};
if (_envCold || _envHot || _hungry || _thirsty) then {
if (_envHot || _envCold) then {
player setFatigue 1;
};
EPOCH_playerBloodP = (EPOCH_playerBloodP + 0.05) min 190;
_increaseStamina = false;
} else {
if (EPOCH_playerStamina > 0) then {
if !(_panic) then {
if (!_warnbloodPressure) then {
player setFatigue 0;
}; };
EPOCH_playerBloodP = EPOCH_playerBloodP - 1 max 100;
}; };
};
};
_envCold = EPOCH_playerTemp <= 95.0; _critical = (damage player >= 0.7 || _warnbloodPressure);
_envHot = EPOCH_playerTemp >= 106.7; _emergency ctrlShow _critical;
_hungry = EPOCH_playerHunger <= 0; if (ctrlShown _emergency) then {
_thirsty = EPOCH_playerThirst <= 0; [_emergency,(EPOCH_playerBloodP > 140)] call _fadeUI;
_warnbloodPressure = EPOCH_playerBloodP > 120; _emergencyScale = 1-linearConversion [0,EPOCH_playerBloodP,180,0.01,1,true];
_emergency ctrlSetTextColor [1, _emergencyScale, _emergencyScale, 1];
};
_thirst ctrlShow (EPOCH_playerThirst <= 625); if (EPOCH_playerBloodP >= 180) then {
if (ctrlShown _thirst) then { true call EPOCH_pushCustomVar;
[_thirst,_thirsty] call _fadeUI; };
_thirstScale = linearConversion [0,EPOCH_playerThirst,2500,0.01,1,true]; if (_increaseStamina && (getFatigue player) == 0) then {
_thirst ctrlSetTextColor [_thirstScale, _thirstScale, 0.9, 1]; EPOCH_playerStamina = (EPOCH_playerStamina + 0.5) min EPOCH_playerStaminaMax;
}; };
if (EPOCH_debugMode) then {
call EPOCH_debugMonitor;
};
_hunger ctrlShow (EPOCH_playerHunger <= 1250); call EPOCH_TradeLoop;
if (ctrlShown _hunger) then {
[_hunger,_hungry] call _fadeUI;
_hungerScale = linearConversion [0,EPOCH_playerHunger,5000,0.01,1,true];
_hunger ctrlSetTextColor [1, _hungerScale, _hungerScale, 1];
};
_playerOxygen = getOxygenRemaining player; onEachFrame EPOCH_onEachFrame;
_oxygen ctrlShow (_playerOxygen < 1);
if (ctrlShown _oxygen) then {
[_oxygen,(_playerOxygen <= 0.55)] call _fadeUI;
_oxygen ctrlSetTextColor [1, _playerOxygen, _playerOxygen, 1];
};
_hazzard ctrlShow (EPOCH_playerToxicity > 1);
if (ctrlShown _hazzard) then {
[_hazzard,(EPOCH_playerToxicity >= 55)] call _fadeUI;
_toxicScale = 1-linearConversion [0,EPOCH_playerToxicity,100,0.01,1,true];
_hazzard ctrlSetTextColor [_toxicScale, 1, _toxicScale, 1];
};
_broken ctrlShow ((player getHitPointDamage "HitLegs") >= 0.5);
if (ctrlShown _broken) then {
[_broken,true] call _fadeUI;
};
if (_envCold || _envHot || _hungry || _thirsty) then {
if (_envHot || _envCold) then {
player setFatigue 1;
};
EPOCH_playerBloodP = (EPOCH_playerBloodP + 0.05) min 190;
_increaseStamina = false;
} else {
if (EPOCH_playerStamina > 0) then {
if !(_panic) then {
if (!_warnbloodPressure) then {
player setFatigue 0;
};
EPOCH_playerBloodP = EPOCH_playerBloodP - 1 max 100;
};
};
};
_critical = (damage player >= 0.7 || _warnbloodPressure);
_emergency ctrlShow _critical;
if (ctrlShown _emergency) then {
[_emergency,(EPOCH_playerBloodP > 140)] call _fadeUI;
_emergencyScale = 1-linearConversion [0,EPOCH_playerBloodP,180,0.01,1,true];
_emergency ctrlSetTextColor [1, _emergencyScale, _emergencyScale, 1];
};
if (EPOCH_playerBloodP >= 180) then {
true call EPOCH_pushCustomVar;
};
if (_increaseStamina && (getFatigue player) == 0) then {
EPOCH_playerStamina = (EPOCH_playerStamina + 0.5) min EPOCH_playerStaminaMax;
};
if (EPOCH_debugMode) then {
call EPOCH_debugMonitor;
};
call EPOCH_TradeLoop;
onEachFrame EPOCH_onEachFrame;

View File

@ -1,97 +1,103 @@
if !(EPOCH_arr_interactedObjs isEqualTo[]) then {
EPOCH_arr_interactedObjs remoteExec["EPOCH_server_save_vehicles", 2];
EPOCH_arr_interactedObjs = [];
};
if !(EPOCH_arr_interactedObjs isEqualTo[]) then { if (damage player != _damagePlayer) then {
EPOCH_arr_interactedObjs remoteExec["EPOCH_server_save_vehicles", 2]; if (alive player) then {
EPOCH_arr_interactedObjs = []; true call EPOCH_pushCustomVar;
}; _damagePlayer = damage player;
};
};
if (damage player != _damagePlayer) then { // this fixes issues with players being unable to ride in the same vehicle
if (alive player) then { if ((rating player) < 0) then {
true call EPOCH_pushCustomVar; player addRating abs(rating player);
_damagePlayer = damage player; };
};
};
if ((rating player) < 0) then { // calculate total available power
player addRating abs(rating player); // 1. number of power production devices within range 75m
};
// calculate total available power // find share of power based on factors
// 1. number of power production devices within range 75m // 1. number of players
// 2. Other sources of drain (Lights)
// find share of power based on factors _energyValue = EPOCH_chargeRate min _energyRegenMax;
// 1. number of players _vehicle = vehicle player;
// 2. Other sources of drain (Lights) if (_vehicle != player && isEngineOn _vehicle) then {
_energyValue = _energyValue + 5;
};
_energyValue = EPOCH_chargeRate min _energyRegenMax; if (currentVisionMode player == 1) then { //NV enabled
_vehicle = vehicle player; _energyValue = _energyValue - _energyCostNV;
if (_vehicle != player && isEngineOn _vehicle) then { if (EPOCH_playerEnergy == 0) then {
_energyValue = _energyValue + 5; player action["nvGogglesOff", player];
}; };
};
if (currentVisionMode player == 1) then { //NV enabled // Sets visual effect
_energyValue = _energyValue - _energyCostNV; if (EPOCH_playerAlcohol > 20) then {
if (EPOCH_playerEnergy == 0) then { _drunkVal = linearConversion [0,100,EPOCH_playerAlcohol,0.1,1,true];
player action["nvGogglesOff", player]; [(round(_drunkVal * 10)/10), 2] call epoch_setDrunk;
}; diag_log format["DEBUG: _drunkVal: %1",_drunkVal];
}; } else {
[0, 2] call epoch_setDrunk;
};
EPOCH_playerEnergy = ((EPOCH_playerEnergy + _energyValue) min EPOCH_playerEnergyMax) max 0; EPOCH_playerEnergy = ((EPOCH_playerEnergy + _energyValue) min EPOCH_playerEnergyMax) max 0;
if !(EPOCH_playerEnergy isEqualTo _prevEnergy) then { if !(EPOCH_playerEnergy isEqualTo _prevEnergy) then {
9993 cutRsc["EpochGameUI3", "PLAIN", 0, false]; 9993 cutRsc["EpochGameUI3", "PLAIN", 0, false];
_display3 = uiNamespace getVariable "EPOCH_EpochGameUI3"; _display3 = uiNamespace getVariable "EPOCH_EpochGameUI3";
_energyDiff = round(EPOCH_playerEnergy - _prevEnergy); _energyDiff = round(EPOCH_playerEnergy - _prevEnergy);
_diffText = if (_energyDiff > 0) then {format["+%1",_energyDiff]} else {format["%1",_energyDiff]}; _diffText = if (_energyDiff > 0) then {format["+%1",_energyDiff]} else {format["%1",_energyDiff]};
// hint str [_energyValue,_prevEnergy,EPOCH_playerEnergy]; // hint str [_energyValue,_prevEnergy,EPOCH_playerEnergy];
(_display3 displayCtrl 21210) ctrlSetText format["%1/%2 %3", round(EPOCH_playerEnergy), EPOCH_playerEnergyMax, _diffText]; (_display3 displayCtrl 21210) ctrlSetText format["%1/%2 %3", round(EPOCH_playerEnergy), EPOCH_playerEnergyMax, _diffText];
_prevEnergy = EPOCH_playerEnergy; _prevEnergy = EPOCH_playerEnergy;
}; };
if (EPOCH_playerEnergy == 0) then { if (EPOCH_playerEnergy == 0) then {
if (EPOCH_buildMode > 0) then { if (EPOCH_buildMode > 0) then {
EPOCH_buildMode = 0; EPOCH_buildMode = 0;
EPOCH_snapDirection = 0; EPOCH_snapDirection = 0;
_dt = ["<t size = '0.8' shadow = '0' color = '#99ffffff'>Build Mode Disabled: Need Energy< / t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; _dt = ["<t size = '0.8' shadow = '0' color = '#99ffffff'>Build Mode Disabled: Need Energy< / t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
EPOCH_Target = objNull; EPOCH_Target = objNull;
EPOCH_Z_OFFSET = 0; EPOCH_Z_OFFSET = 0;
EPOCH_X_OFFSET = 0; EPOCH_X_OFFSET = 0;
EPOCH_Y_OFFSET = 5; EPOCH_Y_OFFSET = 5;
}; };
}; };
_attackers = player nearEntities[["Snake_random_EPOCH", "GreatWhite_F", "Epoch_Cloak_F"], 30]; _attackers = player nearEntities[["Snake_random_EPOCH", "GreatWhite_F", "Epoch_Cloak_F"], 30];
if !(_attackers isEqualTo[]) then { if !(_attackers isEqualTo[]) then {
(_attackers select 0) call EPOCH_client_bitePlayer; (_attackers select 0) call EPOCH_client_bitePlayer;
_panic = true; _panic = true;
} else { } else {
// custom poision // custom poision
_toxicObjs = player nearobjects["SmokeShellCustom", 6]; _toxicObjs = player nearobjects["SmokeShellCustom", 6];
if!(_toxicObjs IsEqualTo[]) then { if!(_toxicObjs IsEqualTo[]) then {
(_toxicObjs select 0) call EPOCH_client_bitePlayer; (_toxicObjs select 0) call EPOCH_client_bitePlayer;
_panic = true; _panic = true;
} else { } else {
_panic = false; _panic = false;
}; };
}; };
call EPOCH_fnc_Weather; call EPOCH_fnc_Weather;
// Hunger / Thirst // Hunger / Thirst
_HTlossRate = _baseHTLoss; _HTlossRate = _baseHTLoss;
if (EPOCH_playerStamina < 100) then { if (EPOCH_playerStamina < 100) then {
if ((getFatigue player) > 0) then { if ((getFatigue player) > 0) then {
_HTlossRate = _HTlossRate + (_HTlossRate*(getFatigue player)); _HTlossRate = _HTlossRate + (_HTlossRate*(getFatigue player));
}; };
} else { } else {
_HTlossRate = (_HTlossRate / 2); _HTlossRate = (_HTlossRate / 2);
}; };
EPOCH_playerHunger = (EPOCH_playerHunger - _HTlossRate) max 0; EPOCH_playerHunger = (EPOCH_playerHunger - _HTlossRate) max 0;
EPOCH_playerThirst = (EPOCH_playerThirst - _HTlossRate) max 0; EPOCH_playerThirst = (EPOCH_playerThirst - _HTlossRate) max 0;
call _lootBubble; call _lootBubble;
EPOCH_playerStaminaMax = (100 * (round(EPOCH_playerAliveTime/360)/10)) min 2500; EPOCH_playerStaminaMax = (100 * (round(EPOCH_playerAliveTime/360)/10)) min 2500;
//player setAnimSpeedCoef 0.75;
//player setCustomAimCoef 1;

View File

@ -1,6 +1,5 @@
if !(_prevEquippedItem isEqualTo EPOCH_equippedItem_PVS) then {
if !(_prevEquippedItem isEqualTo EPOCH_equippedItem_PVS) then { _EPOCH_15 = _tickTime;
_EPOCH_15 = _tickTime; _prevEquippedItem = EPOCH_equippedItem_PVS;
_prevEquippedItem = EPOCH_equippedItem_PVS; EPOCH_equippedItem_PVS remoteExec ["EPOCH_server_equippedItem",2];
publicVariableServer "EPOCH_equippedItem_PVS"; };
};

View File

@ -1,17 +1,15 @@
_nearByBobbersLocal = [];
_nearByBobbers = player nearEntities[["Bobber_EPOCH"], 12];
{
if (local _x) then {
_nearByBobbersLocal pushBack _x
}
} forEach _nearByBobbers;
_nearByBobbersLocal = []; if !(_nearByBobbersLocal isEqualTo []) then {
_nearByBobbers = player nearEntities[["Bobber_EPOCH"], 12]; if ((random 100) < 50) then {
{ _bobber = _nearByBobbersLocal select floor(random(count _nearByBobbers));
if (local _x) then { _bobber setVelocity [0,-1,-1];
_nearByBobbersLocal pushBack _x _bobber setVariable ["EPOCH_fishOnLine" , diag_tickTime];
} };
} forEach _nearByBobbers; };
if !(_nearByBobbersLocal isEqualTo []) then {
if ((random 100) < 50) then {
_bobber = _nearByBobbersLocal select floor(random(count _nearByBobbers));
_bobber setVelocity [0,-1,-1];
_bobber setVariable ["EPOCH_fishOnLine" , diag_tickTime];
};
};

View File

@ -1,6 +1,7 @@
_position = getPosATL player; _position = getPosATL player;
EPOCH_nearestLocations = nearestLocations[player, ["NameCityCapital", "NameCity", "Airport"], 300]; EPOCH_nearestLocations = nearestLocations[player, ["NameCityCapital", "NameCity", "Airport"], 300];
EPOCH_playerIsSwimming = false; EPOCH_playerIsSwimming = false;
if !(surfaceIsWater _position) then { if !(surfaceIsWater _position) then {
@ -14,9 +15,7 @@ if !(surfaceIsWater _position) then {
// spawn shark if player is deep water and not in vehicle // spawn shark if player is deep water and not in vehicle
if (vehicle player == player) then{ if (vehicle player == player) then{
_offsetZ = ((_position vectorDiff getPosASL player) select 2); _offsetZ = ((_position vectorDiff getPosASL player) select 2);
if (_offsetZ > 1.7) then { EPOCH_playerIsSwimming = (_offsetZ > 1.7);
EPOCH_playerIsSwimming = true;
};
if (_offsetZ > 50) then { if (_offsetZ > 50) then {
"GreatWhite_F" call EPOCH_unitSpawn; "GreatWhite_F" call EPOCH_unitSpawn;
}; };
@ -55,6 +54,8 @@ if !(_powerSources isEqualTo[]) then {
EPOCH_nearPower = true; EPOCH_nearPower = true;
}; };
}; };
// downtick Alcohol
EPOCH_playerAlcohol = ((EPOCH_playerAlcohol - 1) min 100) max 0;
EPOCH_playerAliveTime = round(EPOCH_playerAliveTime + (_tickTime - EPOCH_clientAliveTimer)); EPOCH_playerAliveTime = round(EPOCH_playerAliveTime + (_tickTime - EPOCH_clientAliveTimer));
EPOCH_clientAliveTimer = _tickTime; EPOCH_clientAliveTimer = _tickTime;

View File

@ -13,6 +13,7 @@ _energyRegenMax = ["CfgEpochClient", "energyRegenMax", 5] call EPOCH_fnc_returnC
_energyRange = ["CfgEpochClient", "energyRange", 75] call EPOCH_fnc_returnConfigEntryV2; _energyRange = ["CfgEpochClient", "energyRange", 75] call EPOCH_fnc_returnConfigEntryV2;
EPOCH_chargeRate = 0; EPOCH_chargeRate = 0;
EPOCH_playerIsSwimming = false;
// default data if mismatch // default data if mismatch
if (count EPOCH_playerSpawnArray != count EPOCH_spawnIndex) then{ if (count EPOCH_playerSpawnArray != count EPOCH_spawnIndex) then{

View File

@ -6,9 +6,9 @@ if (isNil "EPOCH_bankTransferActive") then {
ctrlEnable[1600, false]; ctrlEnable[1600, false];
[] spawn { [] spawn {
ctrlSetText[1004,"Transfer started."]; ctrlSetText[1004,"Transfer started."];
_deposit = parseNumber(ctrlText 1401) min EPOCH_playerCrypto; _deposit = parseNumber(ctrlText 1401) min EPOCH_playerCrypto;
_withdraw = parseNumber(ctrlText 1402) min EPOCH_bankBalance; _withdraw = parseNumber(ctrlText 1402) min EPOCH_bankBalance;
_transfer = parseNumber(ctrlText 1400) min EPOCH_bankBalance; _transfer = parseNumber(ctrlText 1400) min EPOCH_bankBalance;
@ -16,7 +16,7 @@ if (isNil "EPOCH_bankTransferActive") then {
_totalTransfer = (_deposit + _withdraw) + _transfer; _totalTransfer = (_deposit + _withdraw) + _transfer;
_progress = 0; _progress = 0;
uiSleep 1; uiSleep 1;
_transferTarget = ""; _transferTarget = "";
if (_transfer > 0) then { if (_transfer > 0) then {
@ -37,8 +37,7 @@ if (isNil "EPOCH_bankTransferActive") then {
if (_progress >= 100) then { if (_progress >= 100) then {
// if player waited the full time then send upload // if player waited the full time then send upload
EPOCH_storeCrypto_PVS = [player, [_deposit, _withdraw, [_transfer, _transferTarget]], Epoch_personalToken]; [player, [_deposit, _withdraw, [_transfer, _transferTarget]], Epoch_personalToken] remoteExec ["EPOCH_server_storeCrypto",2];
publicVariableServer "EPOCH_storeCrypto_PVS";
ctrlSetText[1004, "Transfer complete."]; ctrlSetText[1004, "Transfer complete."];
@ -53,4 +52,4 @@ if (isNil "EPOCH_bankTransferActive") then {
EPOCH_bankTransferActive = nil; EPOCH_bankTransferActive = nil;
ctrlEnable[1600, true]; ctrlEnable[1600, true];
}; };
}; };

View File

@ -21,32 +21,6 @@ if (isNull _target) then {
}; };
if (!isNull _target) then { if (!isNull _target) then {
if (alive _target) then {
/*
if ((_target isKindOf "LandVehicle") || (_target isKindOf "Air") || (_target isKindOf "Ship") || (_target isKindOf "Tank")) then {
_dialog = "InteractVehicle";
};
if (_ctrl) then {
if (_target isKindOf "Constructions_static_F" || _target isKindOf "Constructions_foundation_F") then {
_dialog = "InteractBaseBuilding";
};
};
*/
/*
if (_target isKindOf "Man") then {
if (_target != player) then {
if (!isPlayer _target) then {
if ((_target getVariable["AI_SLOT", -1]) != -1) then {
_dialog = "InteractNPC";
};
};
};
};
*/
};
if (_forceGear) then { if (_forceGear) then {
player action ["Gear", _target]; player action ["Gear", _target];
_handled = true; _handled = true;
@ -57,4 +31,4 @@ if (!isNull _target) then {
}; };
}; };
}; };
_handled _handled

View File

@ -1,3 +1,5 @@
private["_ok"]; private["_ok"];
if (isNull _this) exitWith {};
if !(alive _this) exitWith {};
_ok = createdialog "MissionSelect"; _ok = createdialog "MissionSelect";
if (!_ok) exitWith {}; if (!_ok) exitWith {};

View File

@ -1,14 +1,16 @@
private ["_index","_type","_config","_name","_picture","_qty","_items","_qtys","_ok","_vehicles","_aiItems","_target","_slot"]; private ["_index","_type","_config","_name","_picture","_qty","_items","_qtys","_ok","_vehicles","_aiItems","_target","_slot"];
_target = cursorTarget; _target = cursorTarget;
_slot = _target getVariable ["AI_SLOT",-1]; if (alive _target) then {
if (_slot != -1) then { _slot = _target getVariable ["AI_SLOT",-1];
EPOCH_lastNPCtradeTarget = _target; if (_slot != -1) then {
closeDialog 0; EPOCH_lastNPCtradeTarget = _target;
_ok = createdialog "TradeNPCMenu"; closeDialog 0;
if (!_ok) exitWith {}; _ok = createdialog "TradeNPCMenu";
9992 cutRsc["EpochGameUI2", "PLAIN", 2, false]; if (!_ok) exitWith {};
((uiNamespace getVariable "EPOCH_EpochGameUI2") displayCtrl 21208) ctrlSetText format["%1", EPOCH_playerCrypto]; 9992 cutRsc["EpochGameUI2", "PLAIN", 2, false];
{lbAdd[42100,_x];lbAdd[42101,_x]} forEach ["All","Magazines","Items","Vehicles"]; ((uiNamespace getVariable "EPOCH_EpochGameUI2") displayCtrl 21208) ctrlSetText format["%1", EPOCH_playerCrypto];
lbSetCurSel[42100, 0]; {lbAdd[42100,_x];lbAdd[42101,_x]} forEach ["All","Magazines","Items","Vehicles"];
lbSetCurSel[42101, 0]; lbSetCurSel[42100, 0];
}; lbSetCurSel[42101, 0];
};
};

Some files were not shown because too many files have changed in this diff Show More