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
[Added] Hotwire Kit
[Added] Key Makers Kit
[Added] Keys in colors: (Black,Red,Green,Blue,Yellow)
[Added] 55 Gallon Fuel Barrel (Full/Empty)
[Added] Metal Pipes
[Added] Documents (Trash,Vehicle Upgrades)
**Client**
[Added] Drinking a Soda now returns a Empty Soda Can (ItemSodaEmpty).
[Added] Eating a can of food now returns a Empty Tin Can (ItemEmptyTin).
[Added] Repack magazines feature. Simply select a magazine and press the "Repack" button.
[Added] 55 Gallon (210 liters) Fuel Barrel that can be used to refill/siphon vehicles. (Full - ItemBarrelF,Empty - ItemBarrelE).
[Added] Ability to siphon fuel from other fuel sources like gas stations and gas tanks (transportFuel > 0).
[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:
http://creativecommons.org/licenses/by-nc-nd/4.0/
Epoch Mod for Arma 3
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:
=====
Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
http://creativecommons.org/licenses/by-nc-nd/4.0/
Arma Public License Share Alike (APL-SA).
http://www.bistudio.com/community/licenses/arma-public-license-share-alike
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.
// 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.
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.

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 ARMASVRPATH=C:\Arma3Server
SET ARMAAPPID=107410
:: Workshop IDs:
:: EpochExperimental = 455221958
:: Normal Epoch = 421839251
SET ARMAWORKSHOPID=421839251
:: remove mod folder
rd /s/q "%ARMASVRPATH%\@Epoch"
:: update workshop mod
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"
:: 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
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 forceRespawn
7 forceRespawn !="reviveHandleForceRespawnAction"
7 setFriend
7 setAmmo
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 addWeaponCargo !="_acceptHolder addWeaponCargo [_wWeapon, 1] ;"
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 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 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];"
@ -32,7 +31,7 @@
7 removeAllItems
7 removeAllActions
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 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"];"
@ -51,8 +50,8 @@
7 displaySetEventHandler
7 ctrlSetEventHandler !"BIS_fnc_guiMessage_status" !"ctrlSetEventHandler ['LBDblClick', '_this call" !="_buttonRespawn ctrlseteventhandler [\"buttonclick\",\"with uinamespace do {['buttonRespawn'," !="_ctrl ctrlSetEventHandler [\"mouseEnter\""
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 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 addEventHandler !"displayAddEventHandler" !"ctrlAddEventHandler" !"[\"FiredNear"\" !"[\"EpeContactStart"\" !"[\"GetOut"\" !"[\"local"\" !"[\"PostReset"\" !"[\"TaskSetAsCurrent"\" !="player addEventHandler [_x,([\"CfgEpochClient\", _x, \"\"] call EPOCH_fnc_returnConfigEntryV2)];"
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 removeAllEventHandlers !="ctrlRemoveAllEventHandlers" !="_vehicle removeAllEventHandlers \"GetOut\";" !="_sapper removeAllEventHandlers \"Hit\";\n_sapper removeAllEventHandlers \"FiredNear\";" !="_unit removeAllEventHandlers \"Hit\";\n_unit removeAllEventHandlers \"FiredNear\";" !="_display46 displayRemoveAllEventHandlers 'KeyDown';"
7 removeAllMissionEventHandlers

View File

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

View File

@ -222,7 +222,7 @@ class FSM
" _sound = _sounds select (floor (random (count _sounds)));" \n
" _animalAgent say3D _sound;" \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
@ -358,7 +358,7 @@ class FSM
" if (_isDog) then {" \n
" _animalAgent say3D ""dog_cry"";" \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
" _courageTest = false;" \n
@ -369,7 +369,7 @@ class FSM
" if (_isDog) then {" \n
" _animalAgent say3D ""dog_bark"";" \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
" };" \n
" _animalAgent setDir _dirTo; " \n
@ -379,7 +379,7 @@ class FSM
" if (random 1 < 0.5) then { " \n
" _animalAgent say3D ""dog_bark"";" \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
"};"/*%FSM</STATEINIT""">*/;

View File

@ -451,7 +451,7 @@ class FSM
"" \n
"_copter say3D ""drone_alert0"";" \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
"_troopsOnGround = true;" \n
"(driver _copter) action [""lightOn"", _copter];" \n

View File

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

View File

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

View File

@ -320,7 +320,7 @@ class FSM
"" \n
"_sapper say3D _sound;" \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
"_doInterrupt = {" \n
@ -739,7 +739,7 @@ class FSM
"_sound = ""sapper_explode"";" \n
"_sapper say3D _sound;" \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
"" \n
""/*%FSM</STATEINIT""">*/;
@ -1206,8 +1206,8 @@ class FSM
"_bomb = createVehicle [""Sapper_Charge_Ammo"", (getposATL _nestMate), [], 0, ""CAN_COLLIDE""] ; " \n
"_bomb attachTo [_nestMate, [0,0,0],""Pelvis""];" \n
"_nestMate setVariable [""bomb"",_bomb];" \n
"EPOCH_TEMPOBJ_PVS = _nestMate;" \n
"publicVariableServer ""EPOCH_TEMPOBJ_PVS"";" \n
"" \n
"[_nestMate] remoteExec [""EPOCH_localCleanup"",2];" \n
"_nestMate disableAI ""TARGET"";" \n
"_nestMate disableAI ""AUTOTARGET"";" \n
"_nestMate disableAI ""FSM"";" \n
@ -1246,8 +1246,8 @@ class FSM
"" \n
"[_nrBuild, _sapper] spawn {" \n
"sleep 6;" \n
"EPOCH_SapperObjs_PVS = [_this select 0, player, Epoch_personalToken,_this select 1];" \n
"publicVariableServer ""EPOCH_SapperObjs_PVS"";" \n
"" \n
"[_this select 0, player, Epoch_personalToken,_this select 1] remoteExec [""EPOCH_server_handle_sapperObjs"",2];" \n
"};" \n
"" \n
"{" \n
@ -1255,15 +1255,15 @@ class FSM
"_sound = ""sapper_explode"";" \n
"_x say3D _sound;" \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
"" \n
"_x spawn {" \n
"sleep floor (random 3);" \n
"_sBomb = _this getVariable [""bomb"",objNull];" \n
"" \n
"EPOCH_SapperObjs_PVS = [_sBomb, player, Epoch_personalToken,_this,_this];" \n
"publicVariableServer ""EPOCH_SapperObjs_PVS"";" \n
"" \n
"[_sBomb, player, Epoch_personalToken,_this,_this] remoteExec [""EPOCH_server_handle_sapperObjs"",2];" \n
"" \n
"_finalPos = getPosATL _this;" \n
"_finalDir = getDir _this;" \n
@ -1369,8 +1369,8 @@ class FSM
class do_boom
{
name = "do_boom";
init = /*%FSM<STATEINIT""">*/"EPOCH_SapperObjs_PVS = [_sBomb, player, Epoch_personalToken,_sapper,_sapper];" \n
"publicVariableServer ""EPOCH_SapperObjs_PVS"";" \n
init = /*%FSM<STATEINIT""">*/"" \n
"[_sBomb, player, Epoch_personalToken,_sapper,_sapper] remoteExec [""EPOCH_server_handle_sapperObjs"",2];" \n
"" \n
"_sBomb = objNull;" \n
"_finalPos = getPosATL _sapper;" \n
@ -1636,7 +1636,7 @@ class FSM
" _sound = ""sapper_groan2"";" \n
" _sapper say3D _sound;" \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
""/*%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>*/
/*
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"};
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"};
item34[] = {"end",1,250,975.000000,0.000000,1075.000000,50.000000,0.000000,"end"};
item35[] = {"Wait_to_delete",4,218,975.000000,150.000000,1075.000000,200.000000,10.000000,"Wait to delete"};
item34[] = {"end",1,250,1050.000000,-25.000000,1150.000000,25.000000,0.000000,"end"};
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"};
item37[] = {"Wait_1_5_sec",4,218,650.000000,300.000000,750.000000,350.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"};
item39[] = {"_",8,218,800.000000,300.000000,850.000000,325.000000,0.000000,""};
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,250,650.000000,225.000000,750.000000,275.000000,0.000000,"do boom"};
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"};
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"};
@ -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"};
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"};
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};
link1[] = {1,2};
link2[] = {2,3};
@ -126,7 +128,7 @@ link58[] = {35,34};
link59[] = {36,57};
link60[] = {36,61};
link61[] = {37,38};
link62[] = {38,39};
link62[] = {38,63};
link63[] = {39,62};
link64[] = {40,6};
link65[] = {41,30};
@ -154,8 +156,10 @@ link86[] = {59,4};
link87[] = {60,2};
link88[] = {61,62};
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};
window[] = {2,-1,-1,-1,-1,542,56,1081,17,3,1018};
link90[] = {63,64};
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>*/
class FSM
{
@ -267,7 +271,7 @@ class FSM
"" \n
"_sapper say3D _sound;" \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
"_doInterrupt = {" \n
@ -633,7 +637,7 @@ class FSM
"_sound = ""sapper_explode"";" \n
"_sapper say3D _sound;" \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
"" \n
""/*%FSM</STATEINIT""">*/;
@ -1040,25 +1044,19 @@ class FSM
class do_boom
{
name = "do_boom";
init = /*%FSM<STATEINIT""">*/"EPOCH_SapperObjs_PVS = [_sBomb, player, Epoch_personalToken,_sapper,_sapper];" \n
"publicVariableServer ""EPOCH_SapperObjs_PVS"";" \n
"" \n
"_sBomb = objNull;" \n
"" \n
"deleteVehicle _sapper;" \n
"" \n
init = /*%FSM<STATEINIT""">*/"[_sBomb, player, Epoch_personalToken,_sapper,_sapper] remoteExec [""EPOCH_server_handle_sapperObjs"",2];" \n
"_doneBoom = true;" \n
""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "_">*/
class _
/*%FSM<LINK "Wait_for_Explosi">*/
class Wait_for_Explosi
{
priority = 0.000000;
to="finished_boom";
to="Remove_corpse";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"isNull(_sBomb)"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
@ -1269,7 +1267,7 @@ class FSM
" _sound = ""sapper_groan2"";" \n
" _sapper say3D _sound;" \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
""/*%FSM</ACTION""">*/;
};
@ -1409,11 +1407,32 @@ class FSM
};
};
/*%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";
finalStates[] =
{
"end"
"end",
};
};
/*%FSM</COMPILE>*/

View File

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

View File

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

View File

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

View File

@ -668,7 +668,7 @@ class FSM
"if(diag_tickTime - _lastAlert > 480 && random 100 < _cAggression)then{" \n
"_unit say3D ""cultist_laugh"";" \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
"" \n
"" \n
@ -676,7 +676,7 @@ class FSM
"" \n
"_unit say3D ""cultist_talk"";" \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

View File

@ -40,7 +40,7 @@ class FSM
"" \n
"_unit say3D ""cultist_laugh"";" \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

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>*/
/*
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"};
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"};
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"};
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"};
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"};
item18[] = {"____FAKE____",9,720,0.000000,0.000000,0.000000,0.000000,0.000000,"____FAKE____"};
link0[] = {0,2};
@ -41,8 +41,8 @@ link17[] = {15,16};
link18[] = {16,17};
link19[] = {17,12};
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};
window[] = {2,-1,-1,-1,-1,753,25,1063,25,3,1084};
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,884,156,1194,156,3,705};
*//*%FSM</HEAD>*/
class FSM
{
@ -156,8 +156,8 @@ class FSM
class Send_To_Server
{
name = "Send_To_Server";
init = /*%FSM<STATEINIT""">*/"EPOCH_respawnPlayer_PVS = [player, Epoch_personalToken];" \n
"publicVariableServer ""EPOCH_respawnPlayer_PVS"";"/*%FSM</STATEINIT""">*/;
init = /*%FSM<STATEINIT""">*/"[player, Epoch_personalToken] remoteExec [""EPOCH_server_respawnPlayer"",2];" \n
""";"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
@ -190,8 +190,8 @@ class FSM
class Send_new_selection
{
name = "Send_new_selection";
init = /*%FSM<STATEINIT""">*/"EPOCH_respawnPlayer_PVS = [player, Epoch_personalToken,EPOCH_PlayerIsMale];" \n
"publicVariableServer ""EPOCH_respawnPlayer_PVS"";"/*%FSM</STATEINIT""">*/;
init = /*%FSM<STATEINIT""">*/"[player, Epoch_personalToken,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_respawnPlayer"",2];" \n
""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
@ -246,13 +246,9 @@ class FSM
class Setup_EH
{
name = "Setup_EH";
init = /*%FSM<STATEINIT""">*/"player addEventHandler [""Respawn"", {(_this select 0) call EPOCH_clientRespawn}];" \n
"player addEventHandler [""Put"", {(_this select 1) call EPOCH_interact;_this call EPOCH_PutHandler}];" \n
"player addEventHandler [""Take"", {(_this select 1) call EPOCH_interact;_this call EPOCH_UnisexCheck}];" \n
"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""">*/;
init = /*%FSM<STATEINIT""">*/"{" \n
" player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n
"} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
@ -284,7 +280,7 @@ class FSM
initState="INIT";
finalStates[] =
{
"END"
"END",
};
};
/*%FSM</COMPILE>*/

View File

@ -1,8 +1,8 @@
/*%FSM<COMPILE "P:\FSMEditor\scriptedFSM.cfg, Epoch Login">*/
/*%FSM<COMPILE "F:\Program Files (x86)\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, Epoch Login">*/
/*%FSM<HEAD>*/
/*
item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"};
item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"};
item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"};
item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"};
item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"};
item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"};
@ -28,7 +28,7 @@ item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000
item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"};
item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"};
item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."};
item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"};
item27[] = {"Setup_Player_Obj",2,4346,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"};
item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"};
item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"};
item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""};
@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,
item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"};
item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"};
item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"};
item61[] = {"Wait_mag_count_m",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"Wait" \n "mag count match"};
item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"};
item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"};
item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"};
item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"};
@ -190,8 +190,8 @@ link97[] = {85,79};
link98[] = {86,16};
link99[] = {86,22};
link100[] = {87,31};
globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-494.255402,984.732300,1761.360352,737.509033,585,832,1};
window[] = {0,-1,-1,-1,-1,1079,713,2114,75,1,603};
globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1595.816406,409.736633,586,880,1};
window[] = {2,-1,-1,-1,-1,890,78,1370,78,3,604};
*//*%FSM</HEAD>*/
class FSM
{
@ -202,7 +202,6 @@ class FSM
class INIT
{
name = "INIT";
itemno = 0;
init = /*%FSM<STATEINIT""">*/"titleCut ["""", ""BLACK FADED"", 1337];" \n
"0 fadeSound 0;" \n
"player enableSimulation false;" \n
@ -219,7 +218,6 @@ class FSM
/*%FSM<LINK "true">*/
class true
{
itemno = 62;
priority = 0.000000;
to="Process_1";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -234,11 +232,15 @@ class FSM
class FINISH
{
name = "FINISH";
itemno = 1;
init = /*%FSM<STATEINIT""">*/"[] spawn {" \n
" disableSerialization;" \n
" waitUntil{!isNull (findDisplay 46)};" \n
" (findDisplay 46) displayAddEventHandler [""KeyDown"",""_this call EPOCH_KeyDown""];" \n
" (findDisplay 46) displayAddEventHandler [""KeyUp"",""_this call EPOCH_KeyUp""];" \n
" _display = findDisplay 46;" \n
" {" \n
" _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n
" } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n
" " \n
" player switchMove """";" \n
"};" \n
"" \n
"3 fadeSound 1;" \n
@ -247,7 +249,6 @@ class FSM
" diag_log ""EPOCH-LOGIN: Finish!"";" \n
"};" \n
"" \n
"" \n
"player enableSimulation true;" \n
"" \n
"titleCut ["""", ""BLACK IN"", 1];" \n
@ -256,9 +257,7 @@ class FSM
"progressLoadingScreen 1.0;" \n
"" \n
"endLoadingScreen;" \n
"EPOCH_loadingScreenDone = true;" \n
"" \n
"player switchMove """";"/*%FSM</STATEINIT""">*/;
"EPOCH_loadingScreenDone = true;"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
@ -269,7 +268,6 @@ class FSM
class Version_Check
{
name = "Version_Check";
itemno = 3;
init = /*%FSM<STATEINIT""">*/"if (_debug) then {" \n
" diag_log ""EPOCH-LOGIN: Version Check"";" \n
"};" \n
@ -305,7 +303,6 @@ class FSM
/*%FSM<LINK "Wrong_Version">*/
class Wrong_Version
{
itemno = 7;
priority = 10.000000;
to="ERROR_Wrong_Version";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -324,7 +321,6 @@ class FSM
/*%FSM<LINK "true">*/
class true
{
itemno = 44;
priority = 0.000000;
to="Arma_Version_Che";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -339,7 +335,6 @@ class FSM
class Check_Player_UID
{
name = "Check_Player_UID";
itemno = 5;
init = /*%FSM<STATEINIT""">*/"if (_debug) then {" \n
" diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n
"};" \n
@ -353,7 +348,6 @@ class FSM
/*%FSM<LINK "PlayerUID_Okay">*/
class PlayerUID_Okay
{
itemno = 6;
priority = 10.000000;
to="Check_Server_1";
precondition = /*%FSM<CONDPRECONDITION""">*/"!isNil ""_playerUID"""/*%FSM</CONDPRECONDITION""">*/;
@ -364,7 +358,6 @@ class FSM
/*%FSM<LINK "Empty_PlayerUID">*/
class Empty_PlayerUID
{
itemno = 12;
priority = 0.000000;
to="ERROR_PlayerUID";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -379,7 +372,6 @@ class FSM
class ERROR_Wrong_Version
{
name = "ERROR_Wrong_Version";
itemno = 9;
init = /*%FSM<STATEINIT""">*/"_msg = ""You have an outdated version of Epoch"";" \n
"_msg call Epoch_updateLoadingScreen;" \n
"diag_log _msg;" \n
@ -394,7 +386,6 @@ class FSM
/*%FSM<LINK "true">*/
class true
{
itemno = 32;
priority = 0.000000;
to="Display_Message";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -409,7 +400,6 @@ class FSM
class Disconnect
{
name = "Disconnect";
itemno = 10;
init = /*%FSM<STATEINIT""">*/"endLoadingScreen;" \n
"1338 cutText [_msg,""PLAIN"",0]; " \n
"deleteVehicle player;" \n
@ -422,7 +412,6 @@ class FSM
/*%FSM<LINK "Check_if_Player">*/
class Check_if_Player
{
itemno = 28;
priority = 0.000000;
to="Reject_without_B";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -437,7 +426,6 @@ class FSM
class ERROR_PlayerUID
{
name = "ERROR_PlayerUID";
itemno = 13;
init = /*%FSM<STATEINIT""">*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n
"_msg call Epoch_updateLoadingScreen;" \n
"diag_log _msg;" \n
@ -452,7 +440,6 @@ class FSM
/*%FSM<LINK "true">*/
class true
{
itemno = 32;
priority = 0.000000;
to="Display_Message";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -467,7 +454,6 @@ class FSM
class Setup_Player_Var
{
name = "Setup_Player_Var";
itemno = 17;
init = /*%FSM<STATEINIT""">*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n
"{" \n
" missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n
@ -489,7 +475,6 @@ class FSM
/*%FSM<LINK "true">*/
class true
{
itemno = 24;
priority = 0.000000;
to="Setup_EH_s_and_H";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -504,13 +489,11 @@ class FSM
class Request_Hive
{
name = "Request_Hive";
itemno = 18;
init = /*%FSM<STATEINIT""">*/"_myTime = diag_tickTime;" \n
"" \n
"Epoch_my_Group = [];" \n
"" \n
"EPOCH_checkPlayer_PVS = player;" \n
"publicVariableServer ""EPOCH_checkPlayer_PVS"";" \n
"player remoteExec [""EPOCH_server_checkPlayer"",2];" \n
"" \n
"" \n
"""Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n
@ -522,7 +505,6 @@ class FSM
/*%FSM<LINK "Hive_Response">*/
class Hive_Response
{
itemno = 78;
priority = 0.000000;
to="Process_2";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -534,7 +516,6 @@ class FSM
/*%FSM<LINK "Timeout_No_Respo">*/
class Timeout_No_Respo
{
itemno = 19;
priority = 0.000000;
to="ERROR_Server_not_3";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -549,7 +530,6 @@ class FSM
class ERROR_Server_not
{
name = "ERROR_Server_not";
itemno = 20;
init = /*%FSM<STATEINIT""">*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n
"_msg call Epoch_updateLoadingScreen;" \n
"diag_log _msg;" \n
@ -564,7 +544,6 @@ class FSM
/*%FSM<LINK "true">*/
class true
{
itemno = 32;
priority = 0.000000;
to="Display_Message";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -579,7 +558,6 @@ class FSM
class ERROR_Wrong_Server
{
name = "ERROR_Wrong_Server";
itemno = 25;
init = /*%FSM<STATEINIT""">*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n
"_msg call Epoch_updateLoadingScreen;" \n
"diag_log _msg;" \n
@ -594,7 +572,6 @@ class FSM
/*%FSM<LINK "true">*/
class true
{
itemno = 32;
priority = 0.000000;
to="Display_Message";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -609,9 +586,12 @@ class FSM
class Setup_Player_Obj
{
name = "Setup_Player_Obj";
itemno = 27;
init = /*%FSM<STATEINIT""">*/"_ply = player;" \n
"_group = group player;" \n
"" \n
"player reveal _playerObject;" \n
"_playerPos = getposATL _playerObject;" \n
"" \n
"selectPlayer _playerObject;" \n
"" \n
"deleteVehicle _ply;" \n
@ -631,7 +611,6 @@ class FSM
/*%FSM<LINK "Timeout_">*/
class Timeout_
{
itemno = 69;
priority = 0.000000;
to="ERROR_Player_Setup";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -642,7 +621,6 @@ class FSM
/*%FSM<LINK "new_player_____p">*/
class new_player_____p
{
itemno = 49;
priority = 0.000000;
to="Setup_Player_Var";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -657,7 +635,6 @@ class FSM
class Display_Message
{
name = "Display_Message";
itemno = 33;
init = /*%FSM<STATEINIT""">*/"[] spawn {" \n
" waitUntil{!isNull (findDisplay 46)};" \n
" (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n
@ -672,7 +649,6 @@ class FSM
/*%FSM<LINK "Display_Message">*/
class Display_Message
{
itemno = 26;
priority = 0.000000;
to="Disconnect";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -687,7 +663,6 @@ class FSM
class Check_Server
{
name = "Check_Server";
itemno = 35;
init = /*%FSM<STATEINIT""">*/"_myTime = diag_tickTime;" \n
"if (_debug) then {" \n
" diag_log ""EPOCH-LOGIN: Check Server"";" \n
@ -700,7 +675,6 @@ class FSM
/*%FSM<LINK "Server_not_worki">*/
class Server_not_worki
{
itemno = 36;
priority = 10.000000;
to="ERROR_Server_not_1";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -712,7 +686,6 @@ class FSM
/*%FSM<LINK "Server_Okay">*/
class Server_Okay
{
itemno = 11;
priority = 0.000000;
to="Server_Version_C";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -727,7 +700,6 @@ class FSM
class ERROR_Server_not_1
{
name = "ERROR_Server_not_1";
itemno = 37;
init = /*%FSM<STATEINIT""">*/"_msg = ""Server not Ready (Error 03)"";" \n
"_msg call Epoch_updateLoadingScreen;" \n
"diag_log _msg;" \n
@ -742,7 +714,6 @@ class FSM
/*%FSM<LINK "true">*/
class true
{
itemno = 32;
priority = 0.000000;
to="Display_Message";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -757,7 +728,6 @@ class FSM
class Check_Server_1
{
name = "Check_Server_1";
itemno = 39;
init = /*%FSM<STATEINIT""">*/"progressLoadingScreen 0.3;"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
@ -765,7 +735,6 @@ class FSM
/*%FSM<LINK "Timeout_No_Respo">*/
class Timeout_No_Respo
{
itemno = 40;
priority = 0.000000;
to="ERROR_Server_not_2";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -776,7 +745,6 @@ class FSM
/*%FSM<LINK "freshServer">*/
class freshServer
{
itemno = 66;
priority = 0.000000;
to="Update_Loadingscreen";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -787,7 +755,6 @@ class FSM
/*%FSM<LINK "Server_Ready">*/
class Server_Ready
{
itemno = 34;
priority = 0.000000;
to="Check_Server";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -803,7 +770,6 @@ class FSM
class ERROR_Server_not_2
{
name = "ERROR_Server_not_2";
itemno = 41;
init = /*%FSM<STATEINIT""">*/"_msg = ""Server not Ready (Error 02)"";" \n
"_msg call Epoch_updateLoadingScreen;" \n
"diag_log _msg;" \n
@ -818,7 +784,6 @@ class FSM
/*%FSM<LINK "true">*/
class true
{
itemno = 32;
priority = 0.000000;
to="Display_Message";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -833,7 +798,6 @@ class FSM
class Reject_without_B
{
name = "Reject_without_B";
itemno = 43;
init = /*%FSM<STATEINIT""">*/"[] spawn {" \n
" waitUntil{!isNull (findDisplay 46)};" \n
" waitUntil {" \n
@ -851,7 +815,6 @@ class FSM
class Arma_Version_Che
{
name = "Arma_Version_Che";
itemno = 45;
init = /*%FSM<STATEINIT""">*/"progressLoadingScreen 0.15;" \n
""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
@ -860,7 +823,6 @@ class FSM
/*%FSM<LINK "Outdated_Version">*/
class Outdated_Version
{
itemno = 46;
priority = 10.000000;
to="ERROR_Wrong_Version_1";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -871,7 +833,6 @@ class FSM
/*%FSM<LINK "Player_Object_Re">*/
class Player_Object_Re
{
itemno = 4;
priority = 0.000000;
to="Check_Player_UID";
precondition = /*%FSM<CONDPRECONDITION""">*/"!isNull player"/*%FSM</CONDPRECONDITION""">*/;
@ -886,7 +847,6 @@ class FSM
class ERROR_Wrong_Version_1
{
name = "ERROR_Wrong_Version_1";
itemno = 47;
init = /*%FSM<STATEINIT""">*/"_msg = ""You have an outdated version of ArmA 3"";" \n
"_msg call Epoch_updateLoadingScreen;" \n
"diag_log _msg;" \n
@ -901,7 +861,6 @@ class FSM
/*%FSM<LINK "true">*/
class true
{
itemno = 32;
priority = 0.000000;
to="Display_Message";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -916,14 +875,9 @@ class FSM
class Setup_EH_s_and_H
{
name = "Setup_EH_s_and_H";
itemno = 50;
init = /*%FSM<STATEINIT""">*/"player addEventHandler [""Respawn"", {(_this select 0) call EPOCH_clientRespawn}];" \n
"player addEventHandler [""Put"", {(_this select 1) call EPOCH_interact;_this call EPOCH_PutHandler}];" \n
"player addEventHandler [""Take"", {(_this select 1) call EPOCH_interact;_this call EPOCH_UnisexCheck}];" \n
"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}];" \n
init = /*%FSM<STATEINIT""">*/"{" \n
" player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n
"} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n
"" \n
"if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n
" {" \n
@ -947,7 +901,6 @@ class FSM
/*%FSM<LINK "Has_Current_Weap">*/
class Has_Current_Weap
{
itemno = 53;
priority = 10.000000;
to="Find_Active_Weap";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -958,7 +911,6 @@ class FSM
/*%FSM<LINK "no_weapons">*/
class no_weapons
{
itemno = 51;
priority = 0.000000;
to="Process";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -973,7 +925,6 @@ class FSM
class Process
{
name = "Process";
itemno = 52;
init = /*%FSM<STATEINIT""">*/"progressLoadingScreen 0.975;"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
@ -981,11 +932,10 @@ class FSM
/*%FSM<LINK "Preload_done">*/
class Preload_done
{
itemno = 29;
priority = 0.000000;
to="FINISH";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"preloadCamera (getposATL player)"/*%FSM</CONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"preloadCamera _playerPos"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/"call compile _playerGroupOnline;"/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
@ -996,7 +946,6 @@ class FSM
class Find_Active_Weap
{
name = "Find_Active_Weap";
itemno = 54;
init = /*%FSM<STATEINIT""">*/"_activeWeapon = currentWeapon player;" \n
"progressLoadingScreen 0.95;"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
@ -1005,7 +954,6 @@ class FSM
/*%FSM<LINK "Current_Weapon_S">*/
class Current_Weapon_S
{
itemno = 56;
priority = 0.000000;
to="Do_nothing";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1016,7 +964,6 @@ class FSM
/*%FSM<LINK "Current_Weapon_Not">*/
class Current_Weapon_Not
{
itemno = 55;
priority = 0.000000;
to="Select_Weapon";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1031,7 +978,6 @@ class FSM
class Select_Weapon
{
name = "Select_Weapon";
itemno = 57;
init = /*%FSM<STATEINIT""">*/"_currentWeapon spawn {" \n
" uiSleep 1; " \n
" player selectWeapon _this;" \n
@ -1042,7 +988,6 @@ class FSM
/*%FSM<LINK "true">*/
class true
{
itemno = 58;
priority = 0.000000;
to="Process";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1057,7 +1002,6 @@ class FSM
class Do_nothing
{
name = "Do_nothing";
itemno = 59;
init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
@ -1065,7 +1009,6 @@ class FSM
/*%FSM<LINK "true">*/
class true
{
itemno = 58;
priority = 0.000000;
to="Process";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1080,11 +1023,7 @@ class FSM
class Check_New_Player
{
name = "Check_New_Player";
itemno = 60;
init = /*%FSM<STATEINIT""">*/"_myTime = diag_tickTime;" \n
"" \n
"// player reveal [_playerObject, 4];" \n
"" \n
"" \n
"""Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n
"progressLoadingScreen 0.6;" \n
@ -1092,21 +1031,19 @@ class FSM
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "Wait_mag_count_m">*/
class Wait_mag_count_m
/*%FSM<LINK "check_new__player">*/
class check_new__player
{
itemno = 61;
priority = 0.000000;
to="Setup_Player_Obj";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"_magCount == count (magazines _playerObject)"/*%FSM</CONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"!(isNull _playerObject)"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
/*%FSM<LINK "Timeout_No_Respo">*/
class Timeout_No_Respo
{
itemno = 15;
priority = 0.000000;
to="ERROR_Server_not";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1121,7 +1058,6 @@ class FSM
class Process_1
{
name = "Process_1";
itemno = 63;
init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
@ -1129,7 +1065,6 @@ class FSM
/*%FSM<LINK "Wait_ArmA_Loading">*/
class Wait_ArmA_Loading
{
itemno = 64;
priority = 0.000000;
to="Start_Loading_Sc";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1144,7 +1079,6 @@ class FSM
class Start_Loading_Sc
{
name = "Start_Loading_Sc";
itemno = 65;
init = /*%FSM<STATEINIT""">*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n
"if (_debug) then {" \n
" diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n
@ -1156,7 +1090,6 @@ class FSM
/*%FSM<LINK "true">*/
class true
{
itemno = 2;
priority = 0.000000;
to="Version_Check";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1171,7 +1104,6 @@ class FSM
class Update_Loadingscreen
{
name = "Update_Loadingscreen";
itemno = 67;
init = /*%FSM<STATEINIT""">*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n
"" \n
"""Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM</STATEINIT""">*/;
@ -1181,7 +1113,6 @@ class FSM
/*%FSM<LINK "true">*/
class true
{
itemno = 68;
priority = 0.000000;
to="Check_Server_1";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1196,7 +1127,6 @@ class FSM
class ERROR_Player_Setup
{
name = "ERROR_Player_Setup";
itemno = 70;
init = /*%FSM<STATEINIT""">*/"_msg = ""Problem setting up player"";" \n
"_msg call Epoch_updateLoadingScreen;" \n
"diag_log _msg;" \n
@ -1211,7 +1141,6 @@ class FSM
/*%FSM<LINK "true">*/
class true
{
itemno = 32;
priority = 0.000000;
to="Display_Message";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1226,7 +1155,6 @@ class FSM
class Server_Version_C
{
name = "Server_Version_C";
itemno = 72;
init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
@ -1234,7 +1162,6 @@ class FSM
/*%FSM<LINK "Wrong_Server_Ver">*/
class Wrong_Server_Ver
{
itemno = 23;
priority = 10.000000;
to="ERROR_Wrong_Server";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1245,7 +1172,6 @@ class FSM
/*%FSM<LINK "Version_Okay">*/
class Version_Okay
{
itemno = 73;
priority = 0.000000;
to="Request_Hive";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1260,7 +1186,6 @@ class FSM
class ERROR_Server_not_3
{
name = "ERROR_Server_not_3";
itemno = 75;
init = /*%FSM<STATEINIT""">*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n
"_msg call Epoch_updateLoadingScreen;" \n
"diag_log _msg;" \n
@ -1275,7 +1200,6 @@ class FSM
/*%FSM<LINK "true">*/
class true
{
itemno = 32;
priority = 0.000000;
to="Display_Message";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1290,7 +1214,6 @@ class FSM
class Process_2
{
name = "Process_2";
itemno = 80;
init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
@ -1298,7 +1221,6 @@ class FSM
/*%FSM<LINK "new_character">*/
class new_character
{
itemno = 77;
priority = 10.000000;
to="Open_Gender_Selection";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1310,7 +1232,6 @@ class FSM
/*%FSM<LINK "load_old_charact">*/
class load_old_charact
{
itemno = 79;
priority = 0.000000;
to="Process_3";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1325,7 +1246,6 @@ class FSM
class Open_Gender_Selection
{
name = "Open_Gender_Selection";
itemno = 81;
init = /*%FSM<STATEINIT""">*/"createdialog ""SelectGender"";"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
@ -1333,7 +1253,6 @@ class FSM
/*%FSM<LINK "Gender_Selected">*/
class Gender_Selected
{
itemno = 83;
priority = 10.000000;
to="Send_character_s";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1344,7 +1263,6 @@ class FSM
/*%FSM<LINK "Timeout">*/
class Timeout
{
itemno = 84;
priority = 0.000000;
to="Send_character_s";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1356,7 +1274,6 @@ class FSM
/*%FSM<LINK "Reopen_when_client">*/
class Reopen_when_client
{
itemno = 82;
priority = 0.000000;
to="Open_Gender_Selection";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1371,14 +1288,10 @@ class FSM
class Send_character_s
{
name = "Send_character_s";
itemno = 85;
init = /*%FSM<STATEINIT""">*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n
"""Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n
"" \n
"" \n
"EPOCH_selectedGender_PVS = [player,EPOCH_PlayerIsMale];" \n
"publicVariableServer ""EPOCH_selectedGender_PVS"";" \n
"EPOCH_selectedGender_PVS = nil;" \n
"[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n
"EPOCH_PlayerIsMale = nil;"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
@ -1386,7 +1299,6 @@ class FSM
/*%FSM<LINK "load_old_charact">*/
class load_old_charact
{
itemno = 79;
priority = 0.000000;
to="Process_3";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1401,7 +1313,6 @@ class FSM
class Process_3
{
name = "Process_3";
itemno = 86;
init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
@ -1409,7 +1320,6 @@ class FSM
/*%FSM<LINK "Timeout_No_Respo">*/
class Timeout_No_Respo
{
itemno = 22;
priority = 0.000000;
to="ERROR_Server_not_4";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1420,7 +1330,6 @@ class FSM
/*%FSM<LINK "Response">*/
class Response
{
itemno = 16;
priority = 0.000000;
to="Check_New_Player";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
@ -1450,7 +1359,6 @@ class FSM
class ERROR_Server_not_4
{
name = "ERROR_Server_not_4";
itemno = 87;
init = /*%FSM<STATEINIT""">*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n
"_msg call Epoch_updateLoadingScreen;" \n
"diag_log _msg;" \n
@ -1465,7 +1373,6 @@ class FSM
/*%FSM<LINK "true">*/
class true
{
itemno = 32;
priority = 0.000000;
to="Display_Message";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;

View File

@ -49,8 +49,8 @@ class FSM
"" \n
"" \n
"if !(isNull _unit) then {" \n
" EPOCH_TEMPOBJ_PVS = _unit;" \n
" publicVariableServer ""EPOCH_TEMPOBJ_PVS"";" \n
"" \n
" [_unit] remoteExec [""EPOCH_localCleanup"",2];" \n
"};" \n
"" \n
"_randomGroan = {" \n
@ -59,7 +59,7 @@ class FSM
"" \n
"_unit say3D _sound;" \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
"_sMarker = objNull;" \n

View File

@ -95,7 +95,7 @@ class FSM
"_sound = ""sapper_explode"";" \n
"_unit say3D _sound;" \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
"" \n
"";
@ -174,8 +174,8 @@ class FSM
{
name = "do_boom";
itemno = ;
init = "EPOCH_SapperObjs_PVS = [_bomb, player, Epoch_personalToken,_unit,_unit];" \n
"publicVariableServer ""EPOCH_SapperObjs_PVS"";" \n
init = "" \n
"[_bomb, player, Epoch_personalToken,_unit,_unit] remoteExec [""EPOCH_server_handle_sapperObjs"",2];" \n
"" \n
"_bomb = objNull;" \n
"_finalPos = getPosATL _unit;" \n

View File

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

View File

@ -13,8 +13,7 @@
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/EPOCH_LootIT.sqf
*/
if (!isNull _this) then {
EPOCH_lootContainer = [_this,player,Epoch_personalToken];
publicVariableServer "EPOCH_lootContainer";
[_this,player,Epoch_personalToken] remoteExec ["EPOCH_server_lootContainer",2];
if (typeof _this == "wardrobe_EPOCH") 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;
_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);
// TODO optimize
@ -115,28 +54,14 @@ if (_woman == 1) then {
_vest = vest player;
if (_class == _vest) then {
if (_femaleVariant != _vest) then {
/* // everyContainer not working in 1.20
_holder = _this select 1;
_containers = (everyContainer _holder) select 0;
_mags = magazinesAmmoFull _container;
_weps = weaponCargo vestContainer _container;
_item = itemCargo vestContainer _container;
*/
// get items in existing vest
_vestItems = vestItems player;
// remove vest
removeVest player;
// replace with female variant
player addVest _femaleVariant;
/*
{
if ((_x select 4) == "Vest") then {
player addMagazine [(_x select 0),(_x select 1)]
}
} forEach _mags;
{
player addItemToVest _x;
} forEach (_weps+_item);
*/
// readd items to players vest
{player addItemToVest _x} forEach _vestItems;
};
};
};

View File

@ -25,19 +25,26 @@ _object = objNull;
_type = 0;
_config = 'CfgEpochClient' call EPOCH_returnConfig;
_treesLootList = getArray(_config >> worldname >> "Trees");
_bushesLootList = getArray(_config >> worldname >> "Bushes");
{
_strObj = str _x;
_str = str _x;
_sel_object = _x;
_findStart = _strObj find ": ";
_findStart = _str find ": ";
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;
};
if (_p3dName in _bushesLootList) then{
if (getNumber(_finalConfig >> "bush") == 1) then{
_type = 1;
_object = _sel_object;
};
@ -47,7 +54,6 @@ _bushesLootList = getArray(_config >> worldname >> "Bushes");
if (!isNull _object) then {
if (alive _object) then {
EPOCH_knockDownTree = [_object,_type,player,EPOCH_personalToken];
publicVariableServer "EPOCH_knockDownTree";
[_object,_type,player,EPOCH_personalToken] remoteExec ["EPOCH_server_knockDownTree",2];
};
};

View File

@ -61,8 +61,6 @@ _giveAttributes = {
_return = format["Immunity: %1%2 (%3/%4)<br />", _addPlus, _data, EPOCH_playerImmunity, 100];
};
case 6: {
// EPOCH_playerToxicity = ((EPOCH_playerToxicity + _data) min 100) max 0;
// new random tox
_randomData = round(random _data);
EPOCH_playerToxicity = ((EPOCH_playerToxicity + _randomData) min 100) max 0;
_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];
};
case 8: {
// this is handled server side
//EPOCH_playerCrypto = ((EPOCH_playerCrypto + _data) min 25000) max 0;
//_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;
_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
@ -86,9 +99,7 @@ _giveAttributes = {
_unifiedInteract = {
if (_item call _removeItem) then {
if (_interactReturnOnUse != "") then {
player addMagazine _interactReturnOnUse;
};
_interactReturnOnUse call EPOCH_fnc_addItemOverflow;
_output = "";
{
_output = _output + ([_forEachIndex, _x] call _giveAttributes);
@ -100,6 +111,38 @@ _unifiedInteract = {
};
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 2: _unifiedInteract; //Drink 2
case 3: { // Build 3
@ -158,34 +201,49 @@ switch _interactOption do {
if (cursorTarget in _vehicles) then {
_vehicle = cursorTarget;
_currentFuel = fuel _vehicle;
_canCapacity = 10;
_canCapacity = _interactAttributes param [0,10];
_fuelCapacity = getNumber (configfile >> "CfgVehicles" >> (typeOf _vehicle) >> "fuelCapacity");
_currentFuel = _currentFuel * _fuelCapacity;
_newFuel = _currentFuel + _canCapacity;
_newFuel = _newFuel / _fuelCapacity;
if (_item call _removeItem) then {
player addMagazine "jerrycanE_epoch";
EPOCH_fillVehicle_PVS = [_vehicle,_newFuel,player,Epoch_personalToken];
publicVariableServer "EPOCH_fillVehicle_PVS";
_interactReturnOnUse call EPOCH_fnc_addItemOverflow;
// send
[_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;
};
};
};
case 5: {
_vehicles = player nearEntities [["LandVehicle","Ship","Air","Tank"], 6];
_canCapacity = _interactAttributes param [0,10];
if (cursorTarget in _vehicles) then {
_vehicle = cursorTarget;
_canCapacity = 10;
_fuelCapacity = getNumber (configfile >> "CfgVehicles" >> (typeOf _vehicle) >> "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 (_item call _removeItem) then {
player addMagazine "jerrycan_epoch";
EPOCH_fillVehicle_PVS = [_vehicle,_newFuel,player,Epoch_personalToken];
publicVariableServer "EPOCH_fillVehicle_PVS";
_interactReturnOnUse call EPOCH_fnc_addItemOverflow;
[_vehicle,_newFuel,player,Epoch_personalToken] remoteExec ["EPOCH_server_fillVehicle",2];
_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;
};
} else {
@ -222,15 +280,13 @@ switch _interactOption do {
if (local _vehicle) then {
[_vehicle, [_currentHIT, _newDMG]] call EPOCH_client_repairVehicle;
} else {
EPOCH_repairVehicle_PVS = [_vehicle,[_currentHIT,_newDMG],player,Epoch_personalToken];
publicVariableServer "EPOCH_repairVehicle_PVS";
[_vehicle,[_currentHIT,_newDMG],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];
};
//diag_log format["DEBUG HITPOINT REPAIRED: %1 %2 %3", _currentHIT, _newDMG, _item];
} else {
if ((damage _vehicle) > 0) then {
EPOCH_repairVehicle_PVS = [_vehicle,["ALL",0],player,Epoch_personalToken];
publicVariableServer "EPOCH_repairVehicle_PVS";
[_vehicle,["ALL",0],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];
};
};
_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;
if (_vehicle in _vehicles) then {
if (_item call _removeItem) then {
EPOCH_repairVehicle_PVS = [_vehicle,["ALL",0],player,Epoch_personalToken];
publicVariableServer "EPOCH_repairVehicle_PVS";
[_vehicle,["ALL",0],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];
_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");
_paintCanColor = getText(configfile >> "CfgMagazines" >> _item >> "colorName");
EPOCH_PAINTBUILD = [_vehicle,_paintCanIndex,player,Epoch_personalToken];
publicVariableServer "EPOCH_PAINTBUILD";
[_vehicle,_paintCanIndex,player,Epoch_personalToken] remoteExec ["EPOCH_server_paintBUILD",2];
_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;
@ -285,22 +339,27 @@ switch _interactOption do {
if (_vehicle in _vehicles) then {
if (damage _vehicle != 0) then {
if (_item call _removeItem) then {
EPOCH_repairVehicle_PVS = [_vehicle,["ALL",0],player,Epoch_personalToken];
publicVariableServer "EPOCH_repairVehicle_PVS";
[_vehicle,["ALL",0],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];
_dt = ["<t size = '0.8' shadow = '0' color = '#99ffffff'>Healed other player</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
};
};
} else {
if (damage player != 0) then {
if (_item call _removeItem) then {
EPOCH_repairVehicle_PVS = [player,["ALL",0],player,Epoch_personalToken];
publicVariableServer "EPOCH_repairVehicle_PVS";
[player,["ALL",0],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];
_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 {
// bottom
_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"];
_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 ["
<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.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/>
<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/>
<t size='1.18' font='puristaLight' align='center'>Current Version: %1</t><br/>
" + _customVars + "
<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'>Rain: </t><t size='1.15' font='puristaLight' align='right'>%18</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'>Fatigue: </t><t size='1.15' font='puristaLight' align='right'>%2</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'>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/>
<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'>Hours Alive: </t><t size='1.15' font='puristaLight' align='right'>%21</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'>Server uptime: </t><t size='1.15' font='puristaLight' align='right'>%24h %25m</t><br/>
<t size='1.15' font='puristaLight' align='left'>Server FPS: </t><t size='1.15' font='puristaLight' align='right'>%26</t><br/>",
EPOCH_playerTemp,
EPOCH_playerBloodP,
EPOCH_playerHunger,
EPOCH_playerThirst,
EPOCH_playerEnergy,
EPOCH_playerWet,
EPOCH_playerSoiled,
EPOCH_playerImmunity,
EPOCH_playerToxicity,
EPOCH_playerStamina,
<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'>Water Temp: </t><t size='1.15' font='puristaLight' align='right'>%8</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'>Overcast: </t><t size='1.15' font='puristaLight' align='right'>%10</t><br/>
<br/>
<t size='1.15' font='puristaLight' align='left'>Hours Alive: </t><t size='1.15' font='puristaLight' align='right'>%11</t><br/>
<t size='1.15' font='puristaLight' align='left'>FPS: </t><t size='1.15' font='puristaLight' align='right'>%12</t><br/>
<t size='1.15' font='puristaLight' align='left'>Server uptime: </t><t size='1.15' font='puristaLight' align='right'>%13h %14m</t><br/>
<t size='1.15' font='puristaLight' align='left'>Server FPS: </t><t size='1.15' font='puristaLight' align='right'>%15</t><br/>",
getText(configFile >> "CfgMods" >> "Epoch" >> "version"),
(getFatigue player),
(damage player),
(isBleeding player),
(getBleedingRemaining player),
(getOxygenRemaining player),
EPOCH_CURRENT_WEATHER,
(EPOCH_CURRENT_WEATHER/2),
rain,
overcast,
EPOCH_playerCrypto,
round(EPOCH_playerAliveTime/360)/10,
getText(configFile >> "CfgMods" >> "Epoch" >> "version"),
round diag_fps,
_hours,
round((serverTime/60)-(_hours*60)),

View File

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

View File

@ -15,25 +15,14 @@
private["_found", "_return", "_foundLocalAnimal", "_str", "_blood", "_foundTerminal", "_index"];
_return = false;
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");
};
_config = 'CfgEpochClient' call EPOCH_returnConfig;
if (diag_tickTime - EPOCH_lastTrash > 2) then {
EPOCH_lastTrash = diag_tickTime;
_destroyTrashObj = objNull;
_lootAnimalObj = objNull;
EPOCH_bankTerminal = objNull;
_bankTerminal = objNull;
_trashType = 0;
_objects = nearestObjects[player, [], 2];
@ -47,19 +36,28 @@ if (diag_tickTime - EPOCH_lastTrash > 2) then {
_str = str(_x);
_findStart = _str find ": ";
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 };
} forEach EPOCH_trashLootList;
_foundTerminal = _p3dName in EPOCH_atmList;
} forEach getArray(_config >> worldname >> "TrashClasses");
// TrashClasses[] = { "Trash", "TrashSmall", "TrashVehicle", "PumpkinPatch", "TrashFood" };
//_foundTerminal = _p3dName in EPOCH_atmList;
_foundTerminal = (getNumber(_finalConfig >> "bankTerminal") == 1);
};
};
} else {
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 = true
};
_foundTerminal = (getNumber(_config >> "WorldInteractions" >> (typeOf _x) >> "bankTerminal") == 1);
if (_x isKindOf "Snake_random_EPOCH") then {
_foundLocalAnimal = true;
if (random 1 < 0.1) then {
@ -74,25 +72,22 @@ if (diag_tickTime - EPOCH_lastTrash > 2) then {
};
if (_found) exitWith{ _destroyTrashObj = _x };
if (_foundLocalAnimal) exitWith{ _lootAnimalObj = _x };
if (_foundTerminal) exitWith{ EPOCH_bankTerminal = _x };
if (_foundTerminal) exitWith{ _bankTerminal = _x };
}forEach _objects;
if (!isNull _lootAnimalObj) then {
EPOCH_lootAnimal = [_lootAnimalObj, player, Epoch_personalToken];
_bloodPos = getPosATL _lootAnimalObj;
_blood = "BloodSplat" createVehicleLocal _bloodPos;
_blood setPosATL _bloodPos;
EPOCH_playerSoiled = (EPOCH_playerSoiled + 1) min 100;
publicVariableServer "EPOCH_lootAnimal";
// send
[_lootAnimalObj, player, Epoch_personalToken] remoteExec ["EPOCH_server_lootAnimal",2];
_return = true;
_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 {
EPOCH_destroyTrash = [_destroyTrashObj, _trashType, player, Epoch_personalToken];
// hint str EPOCH_destroyTrash;
publicVariableServer "EPOCH_destroyTrash";
[_destroyTrashObj, _trashType, player, Epoch_personalToken] remoteExec ["EPOCH_server_destroyTrash",2];
EPOCH_playerSoiled = (EPOCH_playerSoiled + 1) min 100;
_return = true;
_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";
_animals pushBack _animal;
};
EPOCH_TEMPOBJ_PVS = _animals;
publicVariableServer "EPOCH_TEMPOBJ_PVS";
_animals remoteExec ["EPOCH_localCleanup",2];
};
};
if (!isNull EPOCH_bankTerminal) then {
if (!isNull _bankTerminal) then {
// make balance request
if (isNil "EPOCH_bankTransferActive") then {
EPOCH_storeCrypto_PVS = [player, [], Epoch_personalToken];
publicVariableServer "EPOCH_storeCrypto_PVS";
[player, [], Epoch_personalToken] remoteExec ["EPOCH_server_storeCrypto",2];
closeDialog 0;
createDialog "InteractBank";

View File

@ -27,34 +27,40 @@ if ((diag_tickTime - EPOCH_lastMineRocks) >= 2) then {
_object = objNull;
_config = 'CfgEpochClient' call EPOCH_returnConfig;
_lootables = getArray(_config >> worldname >> "Wrecks");
_cinderList = getArray(_config >> worldname >> "Cinder");
_rocksList = getArray(_config >> worldname >> "Rocks");
_found = false;
_foundIndex = -1;
{
if !(_x isKindOf "All") then {
_str = str(_x);
_findStart = _str find ": ";
if (_findStart != -1) then{
_p3dName = _str select[_findStart + 2, 999];
_found = _p3dName in _rocksList;
if (_p3dName in _lootables) then{
_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 = (getNumber(_finalConfig >> "rock") == 1);
if (getNumber(_finalConfig >> "wreck") == 1) then{
_found = true;
_foundIndex = 1;
};
if (_p3dName in _cinderList) then{
if (getNumber(_finalConfig >> "cinder") == 1) then{
_found = true;
_foundIndex = 0;
};
};
};
if (_found)exitWith{_object = _x};
}foreach _objects;
if (!isNull _object) then {
if (alive _object) then {
EPOCH_mineRocks_PVS = [_object, _foundIndex, player, Epoch_personalToken];
publicVariableServer "EPOCH_mineRocks_PVS";
[_object, _foundIndex, player, Epoch_personalToken] remoteExec ["EPOCH_server_mineRocks",2];
};
};
};

View File

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

View File

@ -4,7 +4,7 @@
Contributors:
Description:
test code to replace string in word (old)
code to replace string in word
Licence:
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
@ -12,41 +12,5 @@
Github:
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/EPOCH_replaceWord.sqf
*/
private["_nextChar2", "_nextChar1", "_nextChar", "_replaceArray", "_STRING", "_needle", "_replace"];
_replaceArray = [];
_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);
params ["_STRING","_needle","_replace"];
_STRING splitString _needle joinString _replace

View File

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

View File

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

View File

@ -141,7 +141,7 @@ if !(isNull _object) then {
_craftQty = _x select 1;
};
for "_i" from 1 to _craftQty do {
player addMagazine _craftItem;
_craftItem call EPOCH_fnc_addItemOverflow;
};
}forEach _recipe;

View File

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

View File

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

View File

@ -82,8 +82,7 @@ if !(_buildingAllowed)exitWith{false};
_removeParts = getArray(('CfgBaseBuilding' call EPOCH_returnConfig) >> _objType >> "removeParts");
if !(_removeParts isEqualTo[]) then{
EPOCH_REMBUILD = [_this, player, Epoch_personalToken];
publicVariableServer "EPOCH_REMBUILD";
[_this, player, Epoch_personalToken] remoteExec ["EPOCH_server_removeBUILD",2];
_return = true;
_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);
if (_textureSlot != 0) then {
EPOCH_PAINTBUILD = [_newObj, _textureSlot, player, Epoch_personalToken];
publicVariableServer "EPOCH_PAINTBUILD";
[_newObj, _textureSlot, player, Epoch_personalToken] remoteExec ["EPOCH_server_paintBUILD",2];
};
};
EP_velocityTransformation = [];

View File

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

View File

@ -124,8 +124,7 @@ if (_object isKindOf "Constructions_static_F") then {
if (_canUpgradePartCount == _removedPartCount) then {
// send to server for upgrade
EPOCH_UPBUILD = [_object,player,Epoch_upgradeIndex,Epoch_personalToken];
publicVariableServer "EPOCH_UPBUILD";
[_object,player,Epoch_upgradeIndex,Epoch_personalToken] remoteExec ["EPOCH_server_upgradeBUILD",2];
Epoch_upgradeIndex = nil;
_return = true;
_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;
_bloodpAmount = 3;
_soundEffect = "snake_bite0";
_canSee = true;
_canSee = !(lineIntersects[eyePos _this, aimPos player, _this, player]);
_ppEffect = 0;
};
case "Snake2_random_EPOCH": {
@ -57,7 +57,7 @@ if !(isNull _this && alive _this) then {
_bleedAmount = 30;
_bloodpAmount = 3;
_soundEffect = "snake_bite0";
_canSee = true;
_canSee = !(lineIntersects[eyePos _this, aimPos player, _this, player]);
_ppEffect = 0;
};
case "GreatWhite_F": {
@ -101,7 +101,7 @@ if !(isNull _this && alive _this) then {
_this say3D _soundEffect;
if (_soundEffectGlobal) then {
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 {

View File

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

View File

@ -19,9 +19,10 @@
_this: STRING - Item Class
Returns:
NOTHING
BOOL
*/
private ["_wHPos","_wH","_nearByHolder","_item"];
if (_this isEqualTo "") exitWith{false};
_item = _this;
if (player canAdd _item) then {
player addItem _item;
@ -39,3 +40,4 @@ if (player canAdd _item) then {
};
_wh addItemCargoGlobal [_item,1];
};
true

View File

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

View File

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

View File

@ -38,9 +38,7 @@ if ((diag_tickTime - _EPOCH_lastSave) >= _time) then {
_customVars pushBack (missionNamespace getVariable format["EPOCH_player%1",_x select 0]);
} forEach _customVarsInit;
// TODO: use remoteExec here
missionNamespace setVariable ["EPOCH_pushPlayer_PVS",[player,_customVars,missionNamespace getVariable "Epoch_personalToken"]];
publicVariableServer "EPOCH_pushPlayer_PVS";
[player,_customVars,missionNamespace getVariable "Epoch_personalToken"] remoteExec ["EPOCH_fnc_savePlayer",2];
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 ((primaryWeapon player != "") && (currentWeapon player == primaryWeapon player)) then {
player switchMove "AovrPercMrunSrasWrflDf";
EPOCH_switchMove_PVS = [player, 1, Epoch_personalToken];
publicVariableServer "EPOCH_switchMove_PVS";
[player, 1, Epoch_personalToken] remoteExec ["EPOCH_server_handle_switchMove",2];
_handled = true;
} else {
if (currentWeapon player == "") then {
player switchMove "epoch_unarmed_jump";
EPOCH_switchMove_PVS = [player, 2, Epoch_personalToken];
publicVariableServer "EPOCH_switchMove_PVS";
[player, 2, Epoch_personalToken] remoteExec ["EPOCH_server_handle_switchMove",2];
_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 !(EPOCH_Target isKindOf "ThingX") then {
deleteVehicle EPOCH_Target;
@ -280,14 +279,6 @@ if (vehicle player == player) then {
if (isTouchingGround player) then {
_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

View File

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

View File

@ -43,6 +43,7 @@ EPOCH_InteractedItem = [_text,_data,_pic];
_interactOption = 0;
_buttonTXT = "";
_magCount = 1;
if (isClass (configfile >> "cfgweapons" >> _data)) then {
_type = getNumber (configfile >> "CfgWeapons" >> _data >> "type");
_interactOption = getNumber (configfile >> "CfgWeapons" >> _data >> "interactAction");
@ -51,6 +52,7 @@ if (isClass (configfile >> "cfgweapons" >> _data)) then {
_type = getNumber (configfile >> "CfgMagazines" >> _data >> "type");
_interactOption = getNumber (configfile >> "CfgMagazines" >> _data >> "interactAction");
_buttonTXT = getText(configfile >> "CfgMagazines" >> _data >> "interactText");
_magCount = getNumber (configfile >> "CfgMagazines" >> _data >> "count");
};
_display = (findDisplay 602);
@ -60,8 +62,13 @@ if (_buttonTXT != "") then {
_useBtn ctrlSetText _buttonTXT;
_useBtn ctrlEnable true;
} else {
if (_magCount > 1) then {
_useBtn ctrlEnable true;
_useBtn ctrlSetText "REPACK";
} else {
_useBtn ctrlSetText "EXAMINE";
_useBtn ctrlEnable false;
};
};
_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]];
_cage attachTo [_cage2,[0,1.3,0]];
EPOCH_TEMPOBJ_PVS = [_cage,_cage2];
publicVariableServer "EPOCH_TEMPOBJ_PVS";
// send to server
[_cage,_cage2] remoteExec ["EPOCH_localCleanup",2];
_startCage = diag_tickTime;
@ -27,12 +27,11 @@ _sapper setVectorDirAndUp [[0,0,1],[0,1,0]];
_sapper forcespeed 0;
if !(isNull _sapper) then {
EPOCH_TEMPOBJ_PVS = _sapper;
publicVariableServer "EPOCH_TEMPOBJ_PVS";
// send to server
[_sapper] remoteExec ["EPOCH_localCleanup",2];
};
EPOCH_FillContainer_PVS = [player,Epoch_personalToken,objNull,false,25];
publicVariableServer "EPOCH_FillContainer_PVS";
[player,Epoch_personalToken,objNull,false,25] remoteExec ["EPOCH_server_fillContainer",2];
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)));
_sapper say3D _sound;
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;
};

View File

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

View File

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

View File

@ -31,7 +31,6 @@ if !(alive player && alive _playerObject && !isPlayer _playerObject) then {
// deleteGroup _group;
Epoch_canBeRevived = false;
Epoch_personalToken = _this select 1;
// call EPOCH_clientInit;
@ -41,13 +40,12 @@ if !(alive player && alive _playerObject && !isPlayer _playerObject) then {
closeDialog 0;
("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 ["Take", {(_this select 1) call EPOCH_interact;_this call EPOCH_UnisexCheck}];
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]) }];
player addEventHandler ["Fired", {_this call EPOCH_fnc_playerFired}];
player addEventHandler ["Killed", {_this call EPOCH_fnc_playerDeath}];
{
player addEventHandler [_x,(["CfgEpochClient", _x, ""] call EPOCH_fnc_returnConfigEntryV2)];
} forEach (["CfgEpochClient", "addEventHandler", []] call EPOCH_fnc_returnConfigEntryV2);
// reset blood Pressure to warning level
EPOCH_playerBloodP = 120;
} else {
deleteVehicle _playerObject;
};

View File

@ -44,7 +44,7 @@ call compile ("
case "+str(_this select 16)+": { Epoch_my_GroupUID = _data };
case "+str(_this select 17)+": { _data call EPOCH_Group_invitePlayer };
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 };
};
};

View File

@ -1,9 +1,6 @@
// current target
_currentTarget = objNull;
_cursorTarget = ([10] call EPOCH_fnc_cursorTarget);
if (!isNull _cursorTarget && {!(EPOCH_target isEqualTo _cursorTarget)}) then {
_currentTarget = objNull;
_cursorTarget = ([10] call EPOCH_fnc_cursorTarget);
if (!isNull _cursorTarget && {!(EPOCH_target isEqualTo _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{
if (_cursorTarget isKindOf "Animal_Base_F") then {
if !(alive _cursorTarget) then {
@ -13,12 +10,12 @@
_currentTarget = _cursorTarget;
};
};
};
EPOCH_currentTarget = _currentTarget;
};
EPOCH_currentTarget = _currentTarget;
_increaseStamina = false;
_vehicle = vehicle player;
if (_vehicle == player) then {
_increaseStamina = false;
_vehicle = vehicle player;
if (_vehicle == player) then {
_val = log(abs(speed player));
_staminaThreshold = 0.7;
if (EPOCH_playerIsSwimming) then {_staminaThreshold = 0.3};
@ -27,7 +24,7 @@
} else {
_increaseStamina = true;
};
} else {
} else {
if (EPOCH_buildMode > 0) then {
EPOCH_buildMode = 0;
EPOCH_snapDirection = 0;
@ -60,54 +57,54 @@
];
};
};
};
};
_envCold = EPOCH_playerTemp <= 95.0;
_envHot = EPOCH_playerTemp >= 106.7;
_hungry = EPOCH_playerHunger <= 0;
_thirsty = EPOCH_playerThirst <= 0;
_warnbloodPressure = EPOCH_playerBloodP > 120;
_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 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 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 {
_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 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 ctrlShow ((player getHitPointDamage "HitLegs") >= 0.5);
if (ctrlShown _broken) then {
[_broken,true] call _fadeUI;
};
};
if (_envCold || _envHot || _hungry || _thirsty) then {
if (_envCold || _envHot || _hungry || _thirsty) then {
if (_envHot || _envCold) then {
player setFatigue 1;
};
EPOCH_playerBloodP = (EPOCH_playerBloodP + 0.05) min 190;
_increaseStamina = false;
} else {
} else {
if (EPOCH_playerStamina > 0) then {
if !(_panic) then {
if (!_warnbloodPressure) then {
@ -116,27 +113,26 @@
EPOCH_playerBloodP = EPOCH_playerBloodP - 1 max 100;
};
};
};
};
_critical = (damage player >= 0.7 || _warnbloodPressure);
_emergency ctrlShow _critical;
if (ctrlShown _emergency) then {
_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 {
if (EPOCH_playerBloodP >= 180) then {
true call EPOCH_pushCustomVar;
};
if (_increaseStamina && (getFatigue player) == 0) then {
};
if (_increaseStamina && (getFatigue player) == 0) then {
EPOCH_playerStamina = (EPOCH_playerStamina + 0.5) min EPOCH_playerStaminaMax;
};
if (EPOCH_debugMode) then {
};
if (EPOCH_debugMode) then {
call EPOCH_debugMonitor;
};
};
call EPOCH_TradeLoop;
call EPOCH_TradeLoop;
onEachFrame EPOCH_onEachFrame;
onEachFrame EPOCH_onEachFrame;

View File

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

View File

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

View File

@ -1,17 +1,15 @@
_nearByBobbersLocal = [];
_nearByBobbers = player nearEntities[["Bobber_EPOCH"], 12];
{
_nearByBobbersLocal = [];
_nearByBobbers = player nearEntities[["Bobber_EPOCH"], 12];
{
if (local _x) then {
_nearByBobbersLocal pushBack _x
}
} forEach _nearByBobbers;
} forEach _nearByBobbers;
if !(_nearByBobbersLocal isEqualTo []) then {
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;
EPOCH_nearestLocations = nearestLocations[player, ["NameCityCapital", "NameCity", "Airport"], 300];
EPOCH_playerIsSwimming = false;
if !(surfaceIsWater _position) then {
@ -14,9 +15,7 @@ if !(surfaceIsWater _position) then {
// spawn shark if player is deep water and not in vehicle
if (vehicle player == player) then{
_offsetZ = ((_position vectorDiff getPosASL player) select 2);
if (_offsetZ > 1.7) then {
EPOCH_playerIsSwimming = true;
};
EPOCH_playerIsSwimming = (_offsetZ > 1.7);
if (_offsetZ > 50) then {
"GreatWhite_F" call EPOCH_unitSpawn;
};
@ -55,6 +54,8 @@ if !(_powerSources isEqualTo[]) then {
EPOCH_nearPower = true;
};
};
// downtick Alcohol
EPOCH_playerAlcohol = ((EPOCH_playerAlcohol - 1) min 100) max 0;
EPOCH_playerAliveTime = round(EPOCH_playerAliveTime + (_tickTime - EPOCH_clientAliveTimer));
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;
EPOCH_chargeRate = 0;
EPOCH_playerIsSwimming = false;
// default data if mismatch
if (count EPOCH_playerSpawnArray != count EPOCH_spawnIndex) then{

View File

@ -37,8 +37,7 @@ if (isNil "EPOCH_bankTransferActive") then {
if (_progress >= 100) then {
// if player waited the full time then send upload
EPOCH_storeCrypto_PVS = [player, [_deposit, _withdraw, [_transfer, _transferTarget]], Epoch_personalToken];
publicVariableServer "EPOCH_storeCrypto_PVS";
[player, [_deposit, _withdraw, [_transfer, _transferTarget]], Epoch_personalToken] remoteExec ["EPOCH_server_storeCrypto",2];
ctrlSetText[1004, "Transfer complete."];

View File

@ -21,32 +21,6 @@ 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 {
player action ["Gear", _target];
_handled = true;

View File

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

View File

@ -1,7 +1,8 @@
private ["_index","_type","_config","_name","_picture","_qty","_items","_qtys","_ok","_vehicles","_aiItems","_target","_slot"];
_target = cursorTarget;
_slot = _target getVariable ["AI_SLOT",-1];
if (_slot != -1) then {
if (alive _target) then {
_slot = _target getVariable ["AI_SLOT",-1];
if (_slot != -1) then {
EPOCH_lastNPCtradeTarget = _target;
closeDialog 0;
_ok = createdialog "TradeNPCMenu";
@ -11,4 +12,5 @@ if (_slot != -1) then {
{lbAdd[42100,_x];lbAdd[42101,_x]} forEach ["All","Magazines","Items","Vehicles"];
lbSetCurSel[42100, 0];
lbSetCurSel[42101, 0];
};
};

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