Merge pull request #370 from EpochModTeam/experimental

Release 0.3.3
This commit is contained in:
vbawol 2015-09-11 09:18:10 -05:00
commit 24bcfafe60
52 changed files with 3686 additions and 144 deletions

37
Changelogs/0.3.3.0.txt Normal file
View File

@ -0,0 +1,37 @@
[Added] Basic energy capacity system, controls how much power is available based on the type of energy source.
[Added] New upgrade system for Wood Tower, add two lumber packs to add windowed wall.
[Added] 4 new plywood walls as first level base walls.
[Added] Wood Ladder that can be crafted from 4x lumber.
[Added] Wood Tower that can be crafted from a Wood Floor and 4x lumber.
[Added] Solar Generator base item can be crafted from items found in the world. When placed gives passive power within (75m Default).
[Added] New loot/crafting items (Solar Panels, Wire Cables, Battery Box) added to loot tables.
[Added] NightVision now use a static rate of 3 per 10 seconds. This can be changed with 'energyCostNV' variable via CfgEpochClient.
[Added] Max rate of energy gain can be controlled with 'energyRegenMax' variable via CfgEpochClient.
[Added] Max range of energy gain can be controlled with 'energyRange' variable via CfgEpochClient.
[Added] Standard base building upgrade system now supports multiple options and has a basic UI.
[Changed] Moved client gamemode and CfgFunctions init to mission file.
[Changed] Base building upgrade recipes and remove payouts now have dedicated config "CfgBaseBuilding" and code supports over-loading via description.ext.
[Changed] Removed base object "Move" in 3d option in favor of a more refined ghost snap mode.
[Changed] Server side database functions renamed and now use cfgFunctions via a new pbo "epoch_server_core".
[Changed] Increase max payout of Air Drop event loot.
[Changed] Make use of new command getAllHitPointsDamage in A3 1.50 to increase performance of hitpoint data storage.
[Changed] Use new A3 command setHitIndex instead of setHitPointDamage so we can use all hitpoints regardless of name.
[Changed] Change BIS_fnc_distance2D usage over to distance2D command that was added with A3 1.50 for better performance.
[Fixed] Cultist spawning is now fixed.
[Fixed] Can now press '2' to disable building snap mode and 1 to re-enable.
[Fixed] Can now disable base building by pressing Esc or 'gear' menu.
[Fixed] Normalized snap memory points for wood tower and stairs.
[Fixed] Loot code for "CfgBuildingLootPos" now uses EPOCH_returnConfig to allow over-loading via description.ext.
[Fixed] Error in rpt "No geometry and no visual shape" with Poppy and Goldenseal plants models.
[Fixed] JetSki sinking like a rock since Arma 1.44, fix was to add buoyancy=1 property to GEO lod.
[Fixed] Angle of snapping was incorrect when building on angles.
[Fixed] Issue that caused shifting of some base objects after restart.
[Fixed] Pumpkins on Chernarus incorrectly payout trash loot and now have separate configs for extra trash loot items.
[Fixed] Color not persisting when picking up corrugated walls.
[Fixed] Only maintain damaged objects and object health is repaired on maintain.
[Fixed] CfgEpochClient missionConfigFile version check was incorrectly using configFile.
[Fixed] Loot object "Blue Tarp" weaponholder proxy position was in the wrong position.
[Fixed] Reduce base hunger/thirst loss rate by half if players stamina is above 100. Base rate now can be changed with "baseHTLoss" variable in CfgEpochClient.
[Info] Requres Arma 3 1.50 or higher.
[ServerInfo] CfgEpochClient removed from description.ext as it can be simply added again from our configs as needed.
[ServerInfo] Removed old .bikey and added new one for 0330.

View File

@ -18,7 +18,6 @@ http://www.microsoft.com/en-us/download/details.aspx?id=40784
== NOTES ==
* Steamworkshop Client file download batch file for windows: https://github.com/EpochModTeam/Epoch/blob/master/Tools/Install/InstallEpoch.cmd
* As of 0.2.5.2 Server Hotfix Build A you only need BEC (http://ibattle.org/) with watchdog plugin (included in BEC folder) if you use do not use a PVS prefix.
* You should use a service restarter (like firedaemon) to keep the redis server and Arma 3 server running.
* A3 Server should be restarted every 4 hours. A good option ssing BEC http://ibattle.org/ scheduler and the #shutdown rcon command works well. (Scheduler Example: https://gist.github.com/vbawol/38b2f57d89c2c36106b3)

Binary file not shown.

Binary file not shown.

View File

@ -1 +1 @@
5 "" !WeaponHolderSimulated !Shot !"(LockBox|FirePlace|PlotPole|Jack)_EPOCH" !"Jack_SIM_EPOCH" !"LockBox_Ghost_EPOCH" !"CinderWallHalf_Ghost_EPOCH" !"(Tipi|StorageShelf|WoodFloor|WoodLargeWall|WoodStairs|WoodRamp)_Ghost_EPOCH" !"Foundation_Ghost_EPOCH" !"Land_Cages_F" !"Epoch_Sapper_F"
5 "" !WeaponHolderSimulated !Shot !"(LockBox|FirePlace|PlotPole|Jack|SolarGen)_EPOCH" !"Jack_SIM_EPOCH" !"LockBox_Ghost_EPOCH" !"CinderWallHalf_Ghost_EPOCH" !"(Tipi|StorageShelf|Wood(Floor|LargeWall|Stairs|Ramp|Ladder|Tower)_Ghost_EPOCH" !"Foundation_Ghost_EPOCH" !"Land_Cages_F" !"Epoch_Sapper_F"

View File

@ -1,3 +1,3 @@
5 "" !="I_UAV_01_F" !="(I|B|O)_UAV_AI" !"_EPOCH" !="B_65x39_Minigun_Caseless_Red_splash" !="B_762x51_Minigun_Tracer_Yellow_splash" !="B_(Swing|Stick)" !"^SmokeShell" !"^G_40mm_" !"^F_40mm_" !"Sub_F_" !"^F_Signal_" !="mini_Grenade" !="GrenadeHand" !="LaserTarget(C|W|E)" !"^Chemlight_" !="(ClaymoreDirectionalMine|DemoCharge|SatchelCharge)_Remote_Ammo" !="SLAMDirectionalMine_Wire_Ammo" !="(CMflare_Chaff|Sapper_Charge|SapperB_Charge|ATMine_Range)_Ammo" !="APERS(TripMine_Wire|BoundingMine_Range|Mine_Range)_Ammo" !="Epoch_(Sapper|SapperB|Cloak)_F" !="GreatWhite_F" !="groundWeaponHolder" !="WeaponHolderSimulated" !="Epoch_(Male|Female)_F" !"Supply[0-9]" !"Steerable_Parachute_F" !="Epoch_Female_CamoRed_F" !="Land_Cages_F" !="(O|I|B)_UAV_01_backpack_F" !="I_(helipilot|helicrew)_F"
5 "_EPOCH" !="(SapperHead|Jack)_SIM_EPOCH" !="Wood(Floor|LargeWall|Stairs|Ramp|Foundation)_EPOCH" !="(Tipi|StorageShelf|CinderWallHalf|Foundation|Wood(Floor|LargeWall|Stairs|Ramp|Foundation))_Ghost_EPOCH" !="(Tipi|StorageShelf|LockBox|FirePlace|FirePlaceOn|PlotPole|Jack|Freezer|Tarp|CinderWallHalf)_EPOCH" !="I_(Soldier[1-3]|Soldier)_EPOCH" !="(Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf|ToolRack|Shoebox|Bunk|Rabbit|Cabinet)_EPOCH" !="(Sheep|Goat|Snake|Snake2|Hen|Cock|Fin|Alsatian)_random_EPOCH" !="(LockBox|CinderWall|CinderWallGarage|CinderWallHalf|PlotPole|Tipi|StorageShelf|Fireplace)_SIM_EPOCH" !="Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorL|LargeWallDoorway|Stairs|Stairs2|Ramp)_SIM_EPOCH" !="(WoodFoundation|Foundation)_EPOCH"
5 "_EPOCH" !="(SapperHead|Jack|SolarGen)_SIM_EPOCH" !="Wood(Floor|LargeWall|Stairs|Ramp|Foundation|Ladder|Tower)_EPOCH" !="(Tipi|StorageShelf|CinderWallHalf|Foundation|Wood(Floor|LargeWall|Stairs|Ramp|Foundation|Ladder|Tower))_Ghost_EPOCH" !="(Tipi|StorageShelf|LockBox|FirePlace|FirePlaceOn|PlotPole|SolarGen|Jack|Freezer|Tarp|CinderWallHalf)_EPOCH" !="I_(Soldier[1-3]|Soldier)_EPOCH" !="(Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf|ToolRack|Shoebox|Bunk|Rabbit|Cabinet)_EPOCH" !="(Sheep|Goat|Snake|Snake2|Hen|Cock|Fin|Alsatian)_random_EPOCH" !="(LockBox|CinderWall|CinderWallGarage|CinderWallHalf|PlotPole|Tipi|StorageShelf|Fireplace)_SIM_EPOCH" !="Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorL|LargeWallDoorway|Stairs|Stairs2|Ramp|Ladder|Tower)_SIM_EPOCH" !="(WoodFoundation|Foundation)_EPOCH" !="WoodWall[1-4](_SIM|_Ghost|)_EPOCH"
5 SeaGull

View File

@ -1 +1 @@
1 "" !="Land_MPS_EPOCH" !="SapperHead_SIM_EPOCH" !="Epoch_Sapper_F" !="Epoch_Cloak_F" !="LockBox_EPOCH" !="Rabbit_EPOCH" !="(Sheep|Goat|Snake|Snake2|Hen|Cock)_random_EPOCH" !="LockBox_(Ghost|SIM)_EPOCH" !="CinderWallHalf_(Ghost|SIM)_EPOCH" !="CinderWall_SIM_EPOCH" !="Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorway|Stairs|Stairs2|Ramp)_(Ghost|SIM)_EPOCH" !="Foundation_Ghost_EPOCH" !="Foundation_EPOCH"
1 "" !="Land_MPS_EPOCH" !="SapperHead_SIM_EPOCH" !="Epoch_Sapper_F" !="Epoch_Cloak_F" !="LockBox_EPOCH" !="Rabbit_EPOCH" !="(Sheep|Goat|Snake|Snake2|Hen|Cock)_random_EPOCH" !="LockBox_(Ghost|SIM)_EPOCH" !="CinderWallHalf_(Ghost|SIM)_EPOCH" !="CinderWall_SIM_EPOCH" !="Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorway|Stairs|Stairs2|Ramp|Ladder|Tower)_(Ghost|SIM)_EPOCH" !="Foundation_Ghost_EPOCH" !="Foundation_EPOCH" !="WoodWall[1-4](_SIM|_Ghost|)_EPOCH"

View File

@ -1,7 +1,7 @@
5 "call"
5 "call" !="[a-z]{5,40}"
5 "compile"
5 "spawn"
5 "exec"
5 "exec" !="[a-z]{5,40}"
5 "loadFile"
5 "preprocessFile"
5 "tostring"

View File

@ -1 +1 @@
5 ""
5 "" !="epoch_server_save_vehicles \[.+\]"

View File

@ -34,7 +34,7 @@
7 createUnit !="_unit = _grp createUnit[(_arrUnits select _i), _pos, [], 0, \"FORM\"];" !="_driver = _grp createUnit[\"I_UAV_AI\", position _unit, [], 0, \"CAN_COLLIDE\"];" !="axeGeneral = grpVIPGeneral createUnit ["I_officer_F", axeGeneralPos, [], 1, "CAN_COLLIDE"];"
7 createAgent !="_unit = createAgent[_unitClass, _targetPos, [], 256, \"FORM\"];" !="_unit = createAgent [_unitClass, _targetPos, [], 120, \"FORM\"];" !="_animal = createAgent[_randomAIClass, _animalPos, [], 5, \"NONE\"];" !="_unit = createAgent [\"Epoch_Cloak_F\", _pos, [], 0, \"CAN_COLLIDE\"];" !="_unit = createAgent [\"Epoch_Sapper_F\", _targetPos, [], 180, \"FORM\"];" !="_sapper = createAgent ["Epoch_Sapper_F", getPos _cage2, [], 0, "FORM"];"
7 createTeam
7 createDialog !="createDialog \"QuickTake\";" !="createDialog \"InteractBank\";" !="createdialog \"SelectGender\";" !="_handled = createdialog _dialog;" !="if !(createdialog \"InteractItem\") exitWith {};" !="createDialog \"TapOut\";" !="if !(createdialog \"Trade\") exitWith {};" !="_ok = createdialog \"Interact\";" !="_ok = createdialog \"TradeNPCMenu\";" !="createDialog \"Epoch_myGroup\";" !="createDialog (if ((Epoch_my_GroupUID == \"\") && (Epoch_my_Group isEqualTo [])) then {\"EPOCH_createGrp\"} else {\"Epoch_myGroup\"});" !="createDialog \"GroupRequests\";" !="_ok = createdialog \"MissionSelect\";" !="createDialog 'Skaronator_AdminMenu';"
7 createDialog !="createDialog \"QuickUpgrade\";" !="createDialog \"QuickTake\";" !="createDialog \"InteractBank\";" !="createdialog \"SelectGender\";" !="_handled = createdialog _dialog;" !="if !(createdialog \"InteractItem\") exitWith {};" !="createDialog \"TapOut\";" !="if !(createdialog \"Trade\") exitWith {};" !="_ok = createdialog \"Interact\";" !="_ok = createdialog \"TradeNPCMenu\";" !="createDialog \"Epoch_myGroup\";" !="createDialog (if ((Epoch_my_GroupUID == \"\") && (Epoch_my_Group isEqualTo [])) then {\"EPOCH_createGrp\"} else {\"Epoch_myGroup\"});" !="createDialog \"GroupRequests\";" !="_ok = createdialog \"MissionSelect\";" !="createDialog 'Skaronator_AdminMenu';"
7 deleteMarker
7 setMarker
7 createMarker

View File

@ -1 +1 @@
5 "" !="Epoch_(Male|Female)_F" !="SapperHead_SIM_EPOCH" !="(Tipi|StorageShelf|LockBox|FirePlace|FirePlaceOn|PlotPole)_EPOCH" !="(Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf|ToolRack|Rabbit|Cabinet)_EPOCH" !="(Sheep|Goat|Snake|Hen|Cock|Fin|Alsatian)_random_EPOCH" !="LockBox_SIM_EPOCH" !="(CinderWallHalf|CinderWall|Fireplace)_SIM_EPOCH" !="Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorway|Stairs|Stairs2|Ramp)_SIM_EPOCH" !="(Foundation|WoodFoundation)_Ghost_EPOCH" !="Foundation_EPOCH" !="WoodFoundation_EPOCH"
5 "" !="Epoch_(Male|Female)_F" !="SapperHead_SIM_EPOCH" !="(Tipi|StorageShelf|LockBox|FirePlace|FirePlaceOn|PlotPole|SolarGen)_EPOCH" !="(Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf|ToolRack|Rabbit|Cabinet)_EPOCH" !="(Sheep|Goat|Snake|Hen|Cock|Fin|Alsatian)_random_EPOCH" !="(LockBox|CinderWallHalf|CinderWall|Fireplace|SolarGen)_SIM_EPOCH" !="Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorway|Stairs|Stairs2|Ramp)_SIM_EPOCH" !="(Foundation|Wood(Foundation|Ladder|Tower))_Ghost_EPOCH" !="Foundation_EPOCH" !="WoodFoundation_EPOCH" !="WoodWall[1-4](_SIM|_Ghost|)_EPOCH"

View File

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

View File

@ -0,0 +1,13 @@
/*
Hive Delete by Key
by Aaron Clark - EpochMod.com
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
http://creativecommons.org/licenses/by-nc-nd/4.0/
Improvements and or bugfixes and other contributions are welcome via the github:
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveDEL.sqf
*/
//_PREFIX = _this select 0;
//_KEY = _this select 1;
"epochserver" callExtension format["400|%1:%2", _this select 0, _this select 1];

View File

@ -0,0 +1,21 @@
/*
Hive Expire
by Aaron Clark - EpochMod.com
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
http://creativecommons.org/licenses/by-nc-nd/4.0/
Improvements and or bugfixes and other contributions are welcome via the github:
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveEXPIRE.sqf
*/
private ["_prefix","_key","_expires","_call"];
_prefix = _this select 0;
_key = _this select 1;
_expires = _this select 2;
_call = 131;
if !(EPOCH_hiveAsync) then {
_call = 130;
};
"epochserver" callExtension format ["%1|%2:%3|%4", _call, _prefix, _key, _expires];

View File

@ -0,0 +1,43 @@
/*
Hive Expire
by Aaron Clark - EpochMod.com
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
http://creativecommons.org/licenses/by-nc-nd/4.0/
Improvements and or bugfixes and other contributions are welcome via the github:
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGET.sqf
*/
private ["_hiveResponse","_hiveStatus","_hiveMessage"];
//_PREFIX = _this select 0;
//_KEY = _this select 1;
_hiveStatus = -1;
_hiveMessage = "";
while {_hiveStatus < 0 || _hiveStatus == 2} do {
_hiveResponse = "epochserver" callExtension format ["200|%1:%2", _this select 0, _this select 1];
_hiveStatus = 0;
if (_hiveResponse != "") then {
_hiveResponse = call compile _hiveResponse;
if !(isNil "_hiveResponse") then {
if (typeName _hiveResponse == "ARRAY" && !(_hiveResponse isEqualTo [])) then {
_hiveStatus = _hiveResponse select 0;
if (_hiveStatus >= 1) then {
_hiveMessage = _hiveMessage + (_hiveResponse select 1);
};
};
};
};
};
if (_hiveStatus > 0 && _hiveMessage find "<null>" == -1) then {
_hiveMessage = call compile _hiveMessage;
if (isNil "_hiveMessage") then { _hiveMessage = [];}
}
else {
_hiveMessage = [];
};
[_hiveStatus, _hiveMessage]

View File

@ -0,0 +1,29 @@
/*
Hive Getbit
by Aaron Clark - EpochMod.com
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
http://creativecommons.org/licenses/by-nc-nd/4.0/
Improvements and or bugfixes and other contributions are welcome via the github:
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGETBIT.sqf
*/
private ["_hiveResponse","_hiveStatus","_hiveMessage"];
//_PREFIX = _this select 0;
//_KEY = _this select 1;
//_BIT = _this select 2;
_hiveMessage = false;
_hiveResponse = "epochserver" callExtension format["240|%1:%2|%3", _this select 0, _this select 1, _this select 2];
if (_hiveResponse != "") then {
_hiveResponse = call compile _hiveResponse;
if !(isNil "_hiveResponse") then {
if (typeName _hiveResponse == "ARRAY" && !(_hiveResponse isEqualTo[])) then {
if ((_hiveResponse select 0) == 1) then {
_hiveMessage = ((_hiveResponse select 1) == "1");
};
};
};
};
_hiveMessage

View File

@ -0,0 +1,68 @@
/*
Hive Getrange
by Aaron Clark - EpochMod.com
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
http://creativecommons.org/licenses/by-nc-nd/4.0/
Improvements and or bugfixes and other contributions are welcome via the github:
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGETRANGE.sqf
*/
private["_hiveResponse", "_hiveStatus", "_hiveMessage", "_currentIndex", "_hiveMakeCall", "_data"];
// GetRange
//_PREFIX = _this select 0;
//_KEY = _this select 1;
_hiveMessage = "";
_hiveStatus = 0;
_currentIndex = 0;
_hiveMakeCall = true;
while {_hiveMakeCall} do {
_hiveMakeCall = false;
// get 8k chars
_currentIndexMax = _currentIndex + 8000;
_hiveResponse = "epochserver" callExtension format["220|%1:%2|%3|%4", _this select 0, _this select 1, _currentIndex, (_currentIndexMax-1)];
//0 _hiveResponse: [1,""]
//diag_log format["%2:%3 _hiveResponse: %1", _hiveResponse, _currentIndex, count _hiveResponse];
if (_hiveResponse != "") then {
_hiveResponse = call compile _hiveResponse;
if !(isNil "_hiveResponse") then{
if (typeName _hiveResponse == "ARRAY" && !(_hiveResponse isEqualTo[])) then{
_hiveStatus = _hiveResponse select 0;
if (_hiveStatus == 1) then{
_data = _hiveResponse select 1;
if !(_data isEqualTo []) then{
// add data to string
_hiveMessage = _hiveMessage + _data;
// if data returned is exactly 8k chars then we likely need to make another call
if (count _data == 8000) then{
_currentIndex = _currentIndexMax;
_hiveMakeCall = true;
};
};
};
};
};
};
};
if (_hiveStatus == 1) then{
_hiveMessage = call compile _hiveMessage;
if (isNil "_hiveMessage") then{ _hiveMessage = []; }
};
[_hiveStatus, _hiveMessage]

View File

@ -0,0 +1,59 @@
/*
Hive Get w/ TTL
by Aaron Clark - EpochMod.com
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
http://creativecommons.org/licenses/by-nc-nd/4.0/
Improvements and or bugfixes and other contributions are welcome via the github:
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveGETTTL.sqf
*/
private ["_hiveResponse","_hiveStatus","_hiveMessage","_whileCount"];
//_PREFIX = _this select 0;
//_KEY = _this select 1;
_hiveStatus = -1;
_hiveMessage = "";
_hiveTTL = -1;
_hiveResponse = "";
_whileCount = 0;
while {_hiveStatus < 0 || _hiveStatus == 2} do {
if (_whileCount == 0) then {
_hiveResponse = "epochserver" callExtension format ["210|%1:%2", _this select 0, _this select 1];
}
else {
_hiveResponse = "epochserver" callExtension format ["200|%1:%2", _this select 0, _this select 1];
};
_hiveStatus = 0;
if (_hiveResponse != "") then {
_hiveResponse = call compile _hiveResponse;
if !(isNil "_hiveResponse") then {
if (typeName _hiveResponse == "ARRAY" && !(_hiveResponse isEqualTo [])) then {
_hiveStatus = _hiveResponse select 0;
if (_hiveStatus >= 1) then {
if (_whileCount == 0) then {
_hiveTTL = _hiveResponse select 1;
_hiveMessage = _hiveMessage + (_hiveResponse select 2);
}
else {
_hiveMessage = _hiveMessage + (_hiveResponse select 1);
};
};
};
};
};
_whileCount = _whileCount + 1;
};
if (_hiveStatus > 0 && _hiveMessage find "<null>" == -1) then {
_hiveMessage = call compile _hiveMessage;
if (isNil "_hiveMessage") then { _hiveMessage = [];}
}
else {
_hiveMessage = [];
};
[_hiveStatus, _hiveMessage, _hiveTTL]

View File

@ -0,0 +1,14 @@
/*
Hive Log
by Aaron Clark - EpochMod.com
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
http://creativecommons.org/licenses/by-nc-nd/4.0/
Improvements and or bugfixes and other contributions are welcome via the github:
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveLog.sqf
*/
//_PREFIX = _this select 0;
//_VAL = _this select 1;
"epochserver" callExtension format["700|%1|%2", _this select 0, _this select 1];

View File

@ -0,0 +1,54 @@
/*
Hive SET
by Aaron Clark - EpochMod.com
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
http://creativecommons.org/licenses/by-nc-nd/4.0/
Improvements and or bugfixes and other contributions are welcome via the github:
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveSET.sqf
*/
private ["_prefix","_key","_value","_valueLength","_callStack","_call","_setterCall","_index","_charLimit"];
_prefix = _this select 0;
_key = _this select 1;
_value = str (_this select 2);
_valueLength = count _value;
_callStack = 101;
_call = 111;
if !(EPOCH_hiveAsync) then {
_setterCall = 100;
_call = 110;
};
_index = 0;
_charLimit = 8000;
if (_valueLength > _charLimit) then{
if (isNil "EPOCH_hiveCallID") then{
EPOCH_hiveCallID = 0;
} else {
if (EPOCH_hiveCallID > 10) then{
EPOCH_hiveCallID = 0;
};
EPOCH_hiveCallID = EPOCH_hiveCallID + 1;
};
while {_valueLength > _charLimit} do {
_valueLength = _valueLength - _charLimit;
"epochserver" callExtension format["%1|%2:%3|%4|%5", _callStack, _prefix, _key, EPOCH_hiveCallID, _value select[_index, _charLimit]];
//diag_log format["Append: %1", [_index, _callStack, _prefix, _key, EPOCH_hiveCallID, _value select[_index, _charLimit]]];
_index = _index + _charLimit;
};
"epochserver" callExtension format["%1|%2:%3|%4|%5", _call, _prefix, _key, EPOCH_hiveCallID, _value select[_index, _charLimit]];
//diag_log format["Large: %1", [_index, _call, _prefix, _key, EPOCH_hiveCallID, _value select[_index, _charLimit]]];
}
else {
"epochserver" callExtension format["%1|%2:%3|%4|%5", _call, _prefix, _key, "", _value select[_index, _charLimit]];
//diag_log format["Small: %1", [_index, _call, _prefix, _key, _value select[_index, _charLimit]]];
};

View File

@ -0,0 +1,19 @@
/*
Hive SETBit
by Aaron Clark - EpochMod.com
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
http://creativecommons.org/licenses/by-nc-nd/4.0/
Improvements and or bugfixes and other contributions are welcome via the github:
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveSETBIT.sqf
*/
private ["_prefix","_key","_value","_bitIndex"];
_prefix = _this select 0;
_key = _this select 1;
_bitIndex = _this select 2;
_value = _this select 3;
"epochserver" callExtension format["141|%1:%2|%3|%4", _prefix, _key, _bitIndex, _value];

View File

@ -0,0 +1,54 @@
/*
Hive SETEX
by Aaron Clark - EpochMod.com
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
http://creativecommons.org/licenses/by-nc-nd/4.0/
Improvements and or bugfixes and other contributions are welcome via the github:
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_server_core/compile/epoch_hive/fn_server_hiveSETEX.sqf
*/
private ["_prefix","_key","_expires","_value","_valueLength","_callStack","_call","_index","_charLimit"];
_prefix = _this select 0;
_key = _this select 1;
_expires = _this select 2;
_value = str (_this select 3);
_valueLength = count _value;
_callStack = 101;
_call = 121;
if !(EPOCH_hiveAsync) then {
_callStack = 100;
_call = 120;
};
_index = 0;
_charLimit = 8000;
if (_valueLength > _charLimit) then{
if (isNil "EPOCH_hiveCallID") then{
EPOCH_hiveCallID = 0;
} else {
if (EPOCH_hiveCallID > 10) then{
EPOCH_hiveCallID = 0;
};
EPOCH_hiveCallID = EPOCH_hiveCallID + 1;
};
while {_valueLength > _charLimit} do {
_valueLength = _valueLength - _charLimit;
"epochserver" callExtension format["%1|%2:%3|%4|%5", _callStack, _prefix, _key, EPOCH_hiveCallID, _value select[_index, _charLimit]];
//diag_log format["Append: %1", [_index, _callStack, _prefix, _key, _value select[_index, _charLimit]]];
_index = _index + _charLimit;
};
"epochserver" callExtension format["%1|%2:%3|%4|%5|%6", _call, _prefix, _key, _expires, EPOCH_hiveCallID, _value select[_index, _charLimit]];
//diag_log format["Large: %1", [_index, _call, _prefix, _key, _expires, _value select[_index, _charLimit]]];
} else {
"epochserver" callExtension format["%1|%2:%3|%4|%5|%6", _call, _prefix, _key, _expires, "", _value select[_index, _charLimit]];
//diag_log format["Small: %1", [_index, _call, _prefix, _key, _expires, _value select[_index, _charLimit]]];
};

View File

@ -0,0 +1,32 @@
/****************************************************************************
Copyright (C) 2015 - ARMA 3 EPOCH MOD [EpochMod.com] (v0.3.3.0)
*****************************************************************************/
#define _ARMA_
class CfgPatches {
class A3_epoch_server_core {
units[] = {};
weapons[] = {};
requiredVersion = 0.1;
requiredAddons[] = {};
};
};
class cfgFunctions
{
class A3E_CORE
{
tag = "EPOCH";
file = "\epoch_server_core\compile";
class epoch_hive {
file = "\epoch_server_core\compile\epoch_hive";
class server_hiveSET {};
class server_hiveSETBIT {};
class server_hiveSETEX {};
class server_hiveEXPIRE {};
class server_hiveGET {};
class server_hiveGETRANGE {};
class server_hiveGETBIT {};
class server_hiveGETTTL {};
class server_hiveDEL {};
};
};
};

View File

@ -33,7 +33,7 @@ if !(EPOCH_WeatherStaticForecast isEqualTo []) then {
} else {
// Make database call to get "Weather:InstanceID" that can be set in the database to allow for weather controls outside of the game.
_response = ["Weather", (call EPOCH_fn_InstanceID)] call EPOCH_server_hiveGETRANGE;
_response = ["Weather", (call EPOCH_fn_InstanceID)] call EPOCH_fnc_server_hiveGETRANGE;
if ((_response select 0) == 1 && typeName(_response select 1) == "ARRAY" && !((_response select 1) isEqualTo[])) then {
_arr = _response select 1;
_tempOVRD = _arr select 0;

View File

@ -1,5 +1,5 @@
/****************************************************************************
Copyright (C) 2015 - ARMA 3 EPOCH MOD [EpochMod.com] (v0.3.2.0)
Copyright (C) 2015 - ARMA 3 EPOCH MOD [EpochMod.com] (v0.3.3.0)
*****************************************************************************/
#define _ARMA_
@ -9,7 +9,7 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = 0.1;
epochVersion = "0.3.2.0";
epochVersion = "0.3.3.0";
requiredAddons[] = {};
};
};

View File

@ -508,7 +508,7 @@ class CfgMainTable
class AirDrop_Payout1
{
lootMin = 7;
LootMax = 10;
LootMax = 14;
tables[] = {
{ "Equipment", 6 },
{ "Pistols", 8 },
@ -831,11 +831,14 @@ class CfgLootTable
class GenericLarge
{
items[] = {
{ { "MortarBucket", "magazine" }, 20 },
{ { "CinderBlocks", "magazine" }, 20 },
{ { "VehicleRepair", "magazine" }, 20 },
{ { "CircuitParts", "magazine" }, 20 },
{ { "ItemCorrugated", "magazine" }, 20 }
{ { "MortarBucket", "magazine" }, 17 },
{ { "CinderBlocks", "magazine" }, 17 },
{ { "VehicleRepair", "magazine" }, 17 },
{ { "CircuitParts", "magazine" }, 17 },
{ { "ItemCorrugated", "magazine" }, 17 },
{ { "ItemSolar", "magazine" }, 5 },
{ { "ItemBattery", "magazine" }, 5 },
{ { "ItemCables", "magazine" }, 5 }
};
};
@ -849,10 +852,13 @@ class CfgLootTable
{ { "VehicleRepair", "magazine" }, 11 },
{ { "ItemCorrugated", "magazine" }, 11 },
{ { "CinderBlocks", "magazine" }, 12 },
{ { "JackKit", "magazine" }, 13 },
{ { "ItemCoolerE", "magazine" }, 14 },
{ { "ItemScraps", "magazine" }, 14 },
{ { "lighter_epoch", "magazine" }, 1 }
{ { "JackKit", "magazine" }, 9 },
{ { "ItemCoolerE", "magazine" }, 13 },
{ { "ItemScraps", "magazine" }, 13 },
{ { "lighter_epoch", "magazine" }, 1 },
{ { "ItemSolar", "magazine" }, 3 },
{ { "ItemBattery", "magazine" }, 3 },
{ { "ItemCables", "magazine" }, 3 }
};
};
@ -1341,11 +1347,14 @@ class CfgLootTable
{
items[] = {
{ { "KitPlotPole", "magazine" }, 5 },
{ { "KitStudWall", "magazine" }, 15 },
{ { "KitSolarGen", "magazine" }, 2 },
{ { "KitStudWall", "magazine" }, 13 },
{ { "KitShelf", "magazine" }, 11 },
{ { "KitWoodFloor", "magazine" }, 15 },
{ { "KitWoodStairs", "magazine" }, 12 },
{ { "KitWoodRamp", "magazine" }, 10 },
{ { "KitWoodFloor", "magazine" }, 12 },
{ { "KitWoodStairs", "magazine" }, 10 },
{ { "KitWoodTower", "magazine" }, 5 },
{ { "KitWoodRamp", "magazine" }, 5 },
{ { "KitWoodLadder", "magazine" }, 5 },
{ { "KitFirePlace", "magazine" }, 8 },
{ { "KitCinderWall", "magazine" }, 5 },
{ { "KitFoundation", "magazine" }, 5 },

View File

@ -0,0 +1,17 @@
class VR : Default
{
worldSize = 10000;
traderBlds[] = { "Land_Kiosk_blueking_F", "Land_FuelStation_Build_F", "Land_CarService_F", "Land_i_Garage_V1_F", "Land_i_Shed_Ind_F", "Land_i_Shop_01_V1_F" };
containerPos[] = {};
telePos[] = {
// N [-0.286865,8.17383,-10.3098]
// S [-0.415527,-7.05298,-10.3098]
// E [13.5127,0.410156,-10.3098]
// W [-14.4316,0.112793,-10.3098]
{ "Transport_C_EPOCH", { -0.286865, 8.17383, -10.3098 }, "", { 4089.82, 4597.71, 0.00143433 } }
};
propsPos[] = {};
staticNpcPos[] = {};
};

View File

@ -63,7 +63,7 @@ class CfgSecConf
class addEventHandler {
checks[] = {"Fired","InventoryClosed","InventoryOpened","Killed","HandleDamage","HandleHeal","Dammaged","Hit","HitPart"};
Fired = "_this call EPOCH_fnc_playerFired;";
InventoryClosed = "if !(EPOCH_arr_interactedObjs isEqualTo[]) then { EPOCH_S_S_VEHICLES = EPOCH_arr_interactedObjs; publicVariableServer 'EPOCH_S_S_VEHICLES'; EPOCH_arr_interactedObjs = [];};";
InventoryClosed = "if !(EPOCH_arr_interactedObjs isEqualTo[]) then {EPOCH_arr_interactedObjs remoteExec['EPOCH_server_save_vehicles', 2]; EPOCH_arr_interactedObjs = [];};";
InventoryOpened = "_this spawn EPOCH_initUI; (locked (_this select 1) in [2, 3])";
Killed = "_this call EPOCH_fnc_playerDeath;";
HandleDamage = "";

View File

@ -36,6 +36,9 @@ wreckLimit = 2;
wreckRemovalMinTime = 60;
wreckRemovalMaxTime = 360;
<<<<<<< HEAD
class cfgFunctions
=======
class CfgRemoteExec
{
class Functions
@ -50,25 +53,40 @@ class CfgRemoteExec
};
class CfgEpochClient
>>>>>>> master
{
epochVersion = "0.3.2.0";
sapperRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = 1% - 55% if soiled (+ 2% if in city) chance to spawn sapper
droneRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = // 2% chance (+ 4% chance if in city) (1% - 2% Half if using silencer) to spawn drone if shot fired
buildingNearbyMilitary = 0; //1 to allow building nearby
buildingNearbyMilitaryRange = 300; //Define radius of blocked area
buildingRequireJammer = 0; // 1 = to allow building without a jammer
buildingCountLimit = 200; // how many objects can be built within range of a jammer
buildingJammerRange = 75; // jammer range in meters
EPOCH_news[] = {"Word is that Sappers have a new boss.","Dogs will often lure them monsters away.","My dog was blown up. I miss him.."};
#include "\x\addons\a3_epoch_config\Configs\CfgEpochClient\Altis.hpp"
class A3E
{
tag = "EPOCH";
class Client
{
file = "\x\addons\a3_epoch_code\init";
class init
{
preInit = 1;
};
class postinit
{
postInit = 1;
};
};
};
};
class CfgRemoteExec
{
class Functions
{
mode = 1;
jip = 0;
class EPOCH_server_save_vehicles {
allowedTargets=2;
jip = 0;
};
};
class Commands {mode=0;};
};
class CfgEpochSapper
{
detonateDistMax = 8; //Random distance between 3m and this number at which sapper detonates. Min value = 4

View File

@ -36,6 +36,9 @@ wreckLimit = 2;
wreckRemovalMinTime = 60;
wreckRemovalMaxTime = 360;
<<<<<<< HEAD
class cfgFunctions
=======
class CfgRemoteExec
{
class Functions
@ -50,23 +53,39 @@ class CfgRemoteExec
};
class CfgEpochClient
>>>>>>> master
{
epochVersion = "0.3.2.0";
class A3E
{
tag = "EPOCH";
class Client
{
file = "\x\addons\a3_epoch_code\init";
class init
{
preInit = 1;
};
class postinit
{
postInit = 1;
};
};
};
};
sapperRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = 1% - 55% if soiled (+ 2% if in city) chance to spawn sapper
droneRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = // 2% chance (+ 4% chance if in city) (1% - 2% Half if using silencer) to spawn drone if shot fired
buildingNearbyMilitary = 0; //1 to allow building nearby
buildingNearbyMilitaryRange = 300; //Define radius of blocked area
buildingRequireJammer = 0; // 1 = to allow building without a jammer
buildingCountLimit = 200; // how many objects can be built within range of a jammer
buildingJammerRange = 75; // jammer range in meters
EPOCH_news[] = {"Word is that Sappers have a new boss.","Dogs will often lure them monsters away.","My dog was blown up. I miss him.."};
#include "\x\addons\a3_epoch_config\Configs\CfgEpochClient\australia.hpp"
class CfgRemoteExec
{
class Functions
{
mode = 1;
jip = 0;
class EPOCH_server_save_vehicles {
allowedTargets=2;
jip = 0;
};
};
class Commands {mode=0;};
};
class CfgEpochSapper

View File

@ -36,6 +36,9 @@ wreckLimit = 2;
wreckRemovalMinTime = 60;
wreckRemovalMaxTime = 360;
<<<<<<< HEAD
class cfgFunctions
=======
class CfgRemoteExec
{
class Functions
@ -50,23 +53,39 @@ class CfgRemoteExec
};
class CfgEpochClient
>>>>>>> master
{
epochVersion = "0.3.2.0";
class A3E
{
tag = "EPOCH";
class Client
{
file = "\x\addons\a3_epoch_code\init";
class init
{
preInit = 1;
};
class postinit
{
postInit = 1;
};
};
};
};
sapperRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = 1% - 55% if soiled (+ 2% if in city) chance to spawn sapper
droneRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = // 2% chance (+ 4% chance if in city) (1% - 2% Half if using silencer) to spawn drone if shot fired
buildingNearbyMilitary = 0; //1 to allow building nearby
buildingNearbyMilitaryRange = 300; //Define radius of blocked area
buildingRequireJammer = 0; // 1 = to allow building without a jammer
buildingCountLimit = 200; // how many objects can be built within range of a jammer
buildingJammerRange = 75; // jammer range in meters
EPOCH_news[] = {"Word is that Sappers have a new boss.","Dogs will often lure them monsters away.","My dog was blown up. I miss him.."};
#include "\x\addons\a3_epoch_config\Configs\CfgEpochClient\Bornholm.hpp"
class CfgRemoteExec
{
class Functions
{
mode = 1;
jip = 0;
class EPOCH_server_save_vehicles {
allowedTargets=2;
jip = 0;
};
};
class Commands {mode=0;};
};
class CfgEpochSapper

View File

@ -36,6 +36,9 @@ wreckLimit = 2;
wreckRemovalMinTime = 60;
wreckRemovalMaxTime = 360;
<<<<<<< HEAD
class cfgFunctions
=======
class CfgRemoteExec
{
class Functions
@ -50,23 +53,39 @@ class CfgRemoteExec
};
class CfgEpochClient
>>>>>>> master
{
epochVersion = "0.3.2.0";
class A3E
{
tag = "EPOCH";
class Client
{
file = "\x\addons\a3_epoch_code\init";
class init
{
preInit = 1;
};
class postinit
{
postInit = 1;
};
};
};
};
sapperRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = 1% - 55% if soiled (+ 2% if in city) chance to spawn sapper
droneRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = // 2% chance (+ 4% chance if in city) (1% - 2% Half if using silencer) to spawn drone if shot fired
buildingNearbyMilitary = 0; //1 to allow building nearby
buildingNearbyMilitaryRange = 300; //Define radius of blocked area
buildingRequireJammer = 0; // 1 = to allow building without a jammer
buildingCountLimit = 200; // how many objects can be built within range of a jammer
buildingJammerRange = 75; // jammer range in meters
EPOCH_news[] = {"Word is that Sappers have a new boss.","Dogs will often lure them monsters away.","My dog was blown up. I miss him.."};
#include "\x\addons\a3_epoch_config\Configs\CfgEpochClient\Chernarus.hpp"
class CfgRemoteExec
{
class Functions
{
mode = 1;
jip = 0;
class EPOCH_server_save_vehicles {
allowedTargets=2;
jip = 0;
};
};
class Commands {mode=0;};
};
class CfgEpochSapper

View File

@ -36,6 +36,9 @@ wreckLimit = 2;
wreckRemovalMinTime = 60;
wreckRemovalMaxTime = 360;
<<<<<<< HEAD
class cfgFunctions
=======
class CfgRemoteExec
{
class Functions
@ -50,23 +53,39 @@ class CfgRemoteExec
};
class CfgEpochClient
>>>>>>> master
{
epochVersion = "0.3.2.0";
class A3E
{
tag = "EPOCH";
class Client
{
file = "\x\addons\a3_epoch_code\init";
class init
{
preInit = 1;
};
class postinit
{
postInit = 1;
};
};
};
};
sapperRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = 1% - 55% if soiled (+ 2% if in city) chance to spawn sapper
droneRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = // 2% chance (+ 4% chance if in city) (1% - 2% Half if using silencer) to spawn drone if shot fired
buildingNearbyMilitary = 0; //1 to allow building nearby
buildingNearbyMilitaryRange = 300; //Define radius of blocked area
buildingRequireJammer = 0; // 1 = to allow building without a jammer
buildingCountLimit = 200; // how many objects can be built within range of a jammer
buildingJammerRange = 75; // jammer range in meters
EPOCH_news[] = {"Word is that Sappers have a new boss.","Dogs will often lure them monsters away.","My dog was blown up. I miss him.."};
#include "\x\addons\a3_epoch_config\Configs\CfgEpochClient\Chernarus_Summer.hpp"
class CfgRemoteExec
{
class Functions
{
mode = 1;
jip = 0;
class EPOCH_server_save_vehicles {
allowedTargets=2;
jip = 0;
};
};
class Commands {mode=0;};
};
class CfgEpochSapper

View File

@ -36,6 +36,9 @@ wreckLimit = 2;
wreckRemovalMinTime = 60;
wreckRemovalMaxTime = 360;
<<<<<<< HEAD
class cfgFunctions
=======
class CfgRemoteExec
{
class Functions
@ -50,23 +53,39 @@ class CfgRemoteExec
};
class CfgEpochClient
>>>>>>> master
{
epochVersion = "0.3.2.0";
class A3E
{
tag = "EPOCH";
class Client
{
file = "\x\addons\a3_epoch_code\init";
class init
{
preInit = 1;
};
class postinit
{
postInit = 1;
};
};
};
};
sapperRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = 1% - 55% if soiled (+ 2% if in city) chance to spawn sapper
droneRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = // 2% chance (+ 4% chance if in city) (1% - 2% Half if using silencer) to spawn drone if shot fired
buildingNearbyMilitary = 0; //1 to allow building nearby
buildingNearbyMilitaryRange = 300; //Define radius of blocked area
buildingRequireJammer = 0; // 1 = to allow building without a jammer
buildingCountLimit = 200; // how many objects can be built within range of a jammer
buildingJammerRange = 75; // jammer range in meters
EPOCH_news[] = {"Word is that Sappers have a new boss.","Dogs will often lure them monsters away.","My dog was blown up. I miss him.."};
#include "\x\addons\a3_epoch_config\Configs\CfgEpochClient\Esseker.hpp"
class CfgRemoteExec
{
class Functions
{
mode = 1;
jip = 0;
class EPOCH_server_save_vehicles {
allowedTargets=2;
jip = 0;
};
};
class Commands {mode=0;};
};
class CfgEpochSapper

View File

@ -36,6 +36,9 @@ wreckLimit = 2;
wreckRemovalMinTime = 60;
wreckRemovalMaxTime = 360;
<<<<<<< HEAD
class cfgFunctions
=======
class CfgRemoteExec
{
class Functions
@ -50,23 +53,39 @@ class CfgRemoteExec
};
class CfgEpochClient
>>>>>>> master
{
epochVersion = "0.3.2.0";
class A3E
{
tag = "EPOCH";
class Client
{
file = "\x\addons\a3_epoch_code\init";
class init
{
preInit = 1;
};
class postinit
{
postInit = 1;
};
};
};
};
sapperRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = 1% - 55% if soiled (+ 2% if in city) chance to spawn sapper
droneRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = // 2% chance (+ 4% chance if in city) (1% - 2% Half if using silencer) to spawn drone if shot fired
buildingNearbyMilitary = 0; //1 to allow building nearby
buildingNearbyMilitaryRange = 300; //Define radius of blocked area
buildingRequireJammer = 0; // 1 = to allow building without a jammer
buildingCountLimit = 200; // how many objects can be built within range of a jammer
buildingJammerRange = 75; // jammer range in meters
EPOCH_news[] = {"Word is that Sappers have a new boss.","Dogs will often lure them monsters away.","My dog was blown up. I miss him.."};
#include "\x\addons\a3_epoch_config\Configs\CfgEpochClient\Stratis.hpp"
class CfgRemoteExec
{
class Functions
{
mode = 1;
jip = 0;
class EPOCH_server_save_vehicles {
allowedTargets=2;
jip = 0;
};
};
class Commands {mode=0;};
};
class CfgEpochSapper

View File

@ -36,6 +36,9 @@ wreckLimit = 2;
wreckRemovalMinTime = 60;
wreckRemovalMaxTime = 360;
<<<<<<< HEAD
class cfgFunctions
=======
class CfgRemoteExec
{
class Functions
@ -50,23 +53,39 @@ class CfgRemoteExec
};
class CfgEpochClient
>>>>>>> master
{
epochVersion = "0.3.2.0";
class A3E
{
tag = "EPOCH";
class Client
{
file = "\x\addons\a3_epoch_code\init";
class init
{
preInit = 1;
};
class postinit
{
postInit = 1;
};
};
};
};
sapperRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = 1% - 55% if soiled (+ 2% if in city) chance to spawn sapper
droneRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = // 2% chance (+ 4% chance if in city) (1% - 2% Half if using silencer) to spawn drone if shot fired
buildingNearbyMilitary = 0; //1 to allow building nearby
buildingNearbyMilitaryRange = 300; //Define radius of blocked area
buildingRequireJammer = 0; // 1 = to allow building without a jammer
buildingCountLimit = 200; // how many objects can be built within range of a jammer
buildingJammerRange = 75; // jammer range in meters
EPOCH_news[] = {"Word is that Sappers have a new boss.","Dogs will often lure them monsters away.","My dog was blown up. I miss him.."};
#include "\x\addons\a3_epoch_config\Configs\CfgEpochClient\Takistan.hpp"
class CfgRemoteExec
{
class Functions
{
mode = 1;
jip = 0;
class EPOCH_server_save_vehicles {
allowedTargets=2;
jip = 0;
};
};
class Commands {mode=0;};
};
class CfgEpochSapper

View File

@ -0,0 +1,143 @@
author = "Epoch Mod Team";
class Header
{
gameType = Sandbox;
minPlayers = 1;
maxPlayers = 100;
};
respawn = "BASE";
respawnDelay = 600;
respawnDialog = 0;
onLoadMission= "Epoch";
OnLoadIntro = "Welcome to Epoch Mod";
loadScreen = "\x\addons\a3_epoch_assets\pictures\loadScreen_ca.paa";
OnLoadIntroTime = False;
OnLoadMissionTime = False;
onLoadName = "Epoch Mod";
disabledAI = true;
scriptedPlayer = 1;
disableChannels[]={0,1,2,6};
enableItemsDropping = 0;
briefing = 0;
debriefing = 0;
enableDebugConsole = 0;
joinUnassigned = 0;
respawnOnStart = 0;
forceRotorLibSimulation = 1;
corpseManagerMode = 1;
corpseLimit = 10;
corpseRemovalMinTime = 1200;
corpseRemovalMaxTime = 3600;
wreckManagerMode = 1;
wreckLimit = 2;
wreckRemovalMinTime = 60;
wreckRemovalMaxTime = 360;
class cfgFunctions
{
class A3E
{
tag = "EPOCH";
class Client
{
file = "\x\addons\a3_epoch_code\init";
class init
{
preInit = 1;
};
class postinit
{
postInit = 1;
};
};
};
};
class CfgRemoteExec
{
class Functions
{
mode = 1;
jip = 0;
class EPOCH_server_save_vehicles {
allowedTargets=2;
jip = 0;
};
};
class Commands {mode=0;};
};
class CfgEpochClient
{
epochVersion = "0.3.3.0";
sapperRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = 1% - 55% if soiled (+ 2% if in city) chance to spawn sapper
droneRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = // 2% chance (+ 4% chance if in city) (1% - 2% Half if using silencer) to spawn drone if shot fired
buildingNearbyMilitary = 0; //1 to allow building nearby
buildingNearbyMilitaryRange = 300; //Define radius of blocked area
buildingRequireJammer = 0; // 1 = to allow building without a jammer
buildingCountLimit = 200; // how many objects can be built within range of a jammer
buildingJammerRange = 75; // jammer range in meters
EPOCH_news[] = {"Word is that Sappers have a new boss.","Dogs will often lure them monsters away.","My dog was blown up. I miss him.."};
// #include "\x\addons\a3_epoch_config\Configs\CfgEpochClient\VR.hpp"
class vr {
Rocks[] = {
};
ATM[] = {
};
Water[] = {
};
Trash[] = {
};
Trees[] = {
};
Bushes[] = {
};
Cinder[] = {
};
Wrecks[] = {
};
};
};
class CfgEpochSapper
{
detonateDistMax = 8; //Random distance between 3m and this number at which sapper detonates. Min value = 4
groanTrig = 16; //Percentage chance of a groan. Min value = 4
sRange = 300; //Distance from target over which sapper will dispose. Range within which sapper code will be aware of targets. Distance up to which sapper will attempt to find a spot to hide in. Min Value = 150.
smellDist = 24; //Distance up to which sapper can smell. Used to decide if sapper can see target when deciding to charge and influences target selection. Is influenced by wind direction. Min Value = 8.
};
class CfgEpochUAV
{
UAVMinDist = 48; //Minimum distance to choose next position when roaming. Min Value = 8.
UAVMaxDist = 180; //Maximum distance to choose next position when roaming. Min Value = 42 / Max Value = 400.
UAVHeight = 100; //Set height when roaming, slight randomness is applied to this value. UAV will choose own height when locked onto target. Min Value = 42 / Max Value = 280. UAV can still spot targets from height !
};
class CfgEpochAirDrop
{
AirDropFreq = 1200; //AirDropChance, to decide if Air drop occurs, will only be checked once per AirDropFreq time period, for each player. Min value = 120.
AirDropChance = 6; //Percentage chance of air drop, for current player. Checked every AirDropFreq and upon antagonists spawn trigger. -1 To disable.
};
class CfgEpochCloak
{
cRange = 300; //Distance, from target, at which Cloak will dispose. Cloak is also aware of players within this range. (Min: 60 / Max: 600)
cAggression = 75; //Percentage chance of attack, currently a psychological attack (Cultist spooky voice). (Min: 1 / Max: 100)
attackFrequency = 120; //One attack only per this period. (Min: 120)
attackDistance = 38; // Distance, from target, up to which Cloak will attack. Lower for less vocals. (Min: 16)
targetChangeFrequency = 42; //Cloak will only attempt to change target once per this period. Make Higher to stick to first target player. (Min: 42)
teleportChance = 66; //Chance for cloak to teleport. (Min: 1)
hoverFrequency = 1280; //Cloak has new hover attack. When player is above cloak, and at a distance, cloak will float to player and teleport attack. Only perform one of these moves per this period. (Min: 240)
};

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long