This is a Guide to install the most common mods. (Without Plot4life...but with persisten plot after player die using plotmanagement and a very usefull script to add you as owner the plot automatically).
This is NOT a support for any mod just a guide that i use to install all this mods in a fresh server.. thers some "fixes" for mods when his steps become a lil confuse.
And if u respect the order to install each mods can be most easy and quick.
Mods to install:
Spoiler
-Single Currency 3.0 (most easy in the world XD)
-Advanced Trading 2.1 (very easy)
-Create customs fn_selfactions/compiles/variables. (easy and large)
-Admin Tools if u dont use infistar.(medium)
-Snap Pro (easy)
-Plot Management (hard)
-Server Configs (easy)
-Deploy Anything (Right Click actions) (easy)
-Group Management (medium but very large)
-ESSV2 (medium but very large)
-Tow&Lift (very easy)
-Rearm/Refuel/Repair (very easy)
-Safezones (very easy)
-DebugMonitor (easy)
-Autorestart (medium)
-Restric Building near defined areas (easy)
-Optional add you automatically as owner the plot when you plant it (easy)
-Dart (Rcon Tool used to kick and ban players..also to write msg through BEC) (easy)
-Optional: Infistar Fix for vehicles non spawned after bought/Others Servers Packages/Others Greats Mods
Follow this guide to get a epoch fresh server.
Spoiler
INSTALLING:
few tips before start:
Spoiler
*When you have to make any changes in your dayz_server.pbo (\@DayZ_Epoch_Server\addons\dayz_server\ ) Please once you finish remember repack again your dayz_server.pbo.
*Any kind of change maked in any kind of file inside \@DayZ_Epoch\addons\ Folder NOT suffer effect. If u need make a change into any of this files..you must drop the file into MPmissions/yourinstance/ folder or into dayz_Server.pbo and change the call for it. Generally located into CUSTOMS compiles.sqf or init.sqf somecase also fn_Selfactions.sqf and others.
*Everytime you finish the install of mod.. test everything...cuz if u proceed and something stop to work you will not know what happened.
A: Overwrite all your Servers Files with single currency files and mod its done!.
*Important: we have to make a lil config: so go to: \MPMissions\DayZ_Epoch_11.Chernarus\ZSC\gold\
*open: ZSCconfig.sqf and change this line for default in true by false; like this:
// if TRUE: Overwrites yours fn_selfactions.sqf with default 1 + edits. | IF False: Change content yourself @ step D
ZSC_Overwrite_SelfActions = false;
2-Before proceed... we need make some changes:
Spoiler
A-first unpack your dayz_server.pbo (located in YOUR SERVER ROOT\@DayZ_Epoch_Server\addons\)
B-find into \system\ folder your server_monitor.sqf (open it).
C-Find and change all words called "intentory" by "inventory" (you will find 14 words).
D-Repack your .pbo
3-Now is time to make some customs files (fn_selfactions.sqf/compiles.sqf/variables.sqf).
Spoiler
A-So now go to YOURSERVERROOT\@DayZ_Epoch\addons\ and unpack your dayz_code.pbo
B-open \@DayZ_Epoch\addons\dayz_code\init\ and copy this two files: compiles.sqf and variables.sqf
C-Now we have to create a new folder for this files so go to: YOURSERVERROOT\MPMissions\DayZ_Epoch_11.Chernarus\
and create a new folder called "custom". Then paste inside the compiles.sqf and variables.sqf
D-Now we have to drop the fn_selfactions.sqf .. go to \MPMissions\DayZ_Epoch_11.Chernarus\ZSC\compiles\
copy fn_selfActions.sqf and paste into YOURSERVERROOT\MPMissions\DayZ_Epoch_11.Chernarus\custom\ with the new compiles.sqf and variables.sqf.
4-Making the calls for this 3 new files: (fn_selfactions.sqf/compiles.sqf/variables.sqf).
D-At least we need remove the original call for fn_Selfactions.sqf located into the new custom compiles.sqf
so proceed to open your custom compiles.sqf located into the custom folder and find this line:
Note:(when you use a bar before a line this is equal to remove the line.So now the call stop to work and we only calling selfactions.sqf from init.sqf).
Note: For now on... everytime a mod ask for changes in compiles.sqf/variables.sqf or fn_selfactions.sqf we have to make this change into the files located in custom folder.
5-We already have SingleCurrency installed.. its time to
// Epoch Admin Tools
if ( !((getPlayerUID player) in AdminList) && !((getPlayerUID player) in ModList)) then
{
[] execVM "admintools\antihack\antihack.sqf"; // Epoch Antihack with bypass
};
nothing more.
TIME TO TEST ALL THIS NEW MODS: go with traders, try to buy and sell using advanced trading menu, test money storage , restart your server
and see if the money still are into the storages.
NO CHANGES NEEDED, the effect has been realised in 5 C. RESTORE TO THE NORMAL REMOVES.SQF
DONT DO NOTHING HERE..PROCEED.
STEP 7 (Modifying player_build.sqf, player_upgrade.sqf, and player_buildingDowngrade.sqf)
ALL THREE OF THESE FILES NEED THE SAME EDIT, MAKE SURE YOU DO ALL FILES!!!! Remember you have player_upgrade.sqf, and player_buildingDowngrade.sqf into plotManagement folder and player_build.sqf into snap_pro folder.
Find:
_friendlies = player getVariable ["friendlyTo",[]];
// check if friendly to owner
if(_ownerID in _friendlies) then {
_canBuildOnPlot = true;
};
STEP 12: open your custom variables.sqf (located in custom folder)
FIND:
if(isNil "DZE_DamageBeforeMaint") then {
DZE_DamageBeforeMaint = 0.9;
};
Replace by:
if(isNil "DZE_DamageBeforeMaint") then {
DZE_DamageBeforeMaint = 0.1; //or 0 to get maintain option all time.
};
STEP 13:
into your serverroot/instance_11.chernarus or other/ find and open your HiveExt.ini
change this line:
CleanupPlacedAfterDays = -1 // remove the , at start of the line. and place -1
**and remember run as query the sql damageonage events.
STEP 14:INFISTAR users
Add the following number to the dialogs array:
711194
and Add:
"PlotManagement"
to
_cMenu =
PLOT MANAGEMENT ITS DONE! MAKE A TEST.
9-Time to make some configs:
This is for prevent players stuck on loading screen:
Spoiler
open your custom compiles.sqf (the one located in custom folder)
find this lines:
// 120 sec timeout (12000 * 0.01)
while { _timeOut < 12000 } do {
if (dayz_clientPreload && dayz_authed) exitWith { diag_log "PLOGIN: Login loop completed!"; };
replace by:
// 120 sec timeout (12000 * 0.01)
while { _timeOut < 12000 } do {
if (dayz_clientPreload && dayz_authed) exitWith {
diag_log "PLOGIN: Login loop completed!";
endLoadingScreen;
};
Spoiler
open your init.sqf
find:
dayz_minpos = -1;
dayz_maxpos = 16000;
paste bellow:
DZE_SelfTransfuse = true; // default value //allow self transufe
DZE_StaticConstructionCount = 1; //reduce time to build only 1 step
DZE_PlayerZed = false; //remove player chance to spawn as zed.
Find: MaxVehicleLimit = 300; // Default = 50
300 its a LOT!!!!!!!! reduce this value for less vehicles spawn.
find: MaxDynamicDebris = 200; // Default = 100
also reduce this value.
find:
dayz_maxLocalZombies = 50; // Default = 30
This is a lot of zombies reduce this value please :)
Now this is for config your server difficulty (most detailed..i will use veteran difficulty.. check your hiveext.ini to see what youre using)
Open your ServerROOt\instance_11_Chernarus\Users\instance_11_Chernarus\ "instance_11_Chernarus.ArmA2OAProfile"
Thers nothing to explain here, the guide is pretty simple and easy to install.
11-INSTALL GROUP MANAGEMENT.
Spoiler
Download from original post:http://opendayz.net/threads/release-dzgm-dayz-group-management.20293/
This guide is very easy i just wanna say: In step 6.. you already have a custom ui_selectslot.sqf located in: \MPMissions\DayZ_Epoch_11.Chernarus\overwrites\click_actions\
so for step 6 make the changes into this file.
this change:
2. In ui_selectSlot.sqf (Located in \MPMissions\DayZ_Epoch_11.Chernarus\overwrites\click_actions\) add this after the for loop, but above _pos set [3,_height];, around line 57:
See the change with a bunch of code above to get a reference:
//### BEGIN MODIFIED CODE: extra click actions
{
private["_classname","_text","_execute","_condition"];
_classname = _x select 0;
_text = _x select 1;
_execute = _x select 2;
_condition = _x select 3;
// if the clicked item matches, then assign the script call and display text
if(_item == _classname && (call compile _condition)) then {
_menu = _parent displayCtrl (1600 + _numActions);
_menu ctrlShow true;
_height = _height + (0.025 * safezoneH);
uiNamespace setVariable ['uiControl', _control];
_menu ctrlSetText _text;
_menu ctrlSetEventHandler ["ButtonClick",_execute];
_numActions = _numActions + 1;
};
} forEach DZE_CLICK_ACTIONS;
//### END MODIFIED CODE: extra click actions
////////////GROUP MANAGEMENT CHANGE START HERE/////////
_erc_cfgActions = (missionConfigFile >> "ExtraRc" >> _item);
_erc_numActions = (count _erc_cfgActions);
if (isClass _erc_cfgActions) then {
for "_j" from 0 to (_erc_numActions - 1) do
{
_menu = _parent displayCtrl (1600 + _j + _numActions);
_menu ctrlShow true;
_config = (_erc_cfgActions select _j);
_text = getText (_config >> "text");
_script = getText (_config >> "script");
_height = _height + (0.025 * safezoneH);
uiNamespace setVariable ['uiControl', _control];
_menu ctrlSetText _text;
_menu ctrlSetEventHandler ["ButtonClick",_script];
};
};
//GROUP MANAGEMENT CHANGE END HERE//
If ure using infistar and you already have a safezone.sqf skip this step.
A-First inside your custom folder you need create another folder called "others"
Now into "others" folder create a new sqf called "safezone" and paste this code inside:
Spoiler
/*
by: http://infiSTAR.de || http://DayzAntiHack.com
*updated on 24.12.2014
Instructions:
1. Copy paste this pastebin code into a file called SafeZone.sqf - save the file.
2. Now extract your mpmission pbo and put the SafeZone.sqf into the extracted folder.
3. Open the init.sqf of the mpmission.
4. At the bottom of the file add
[] execVM 'SafeZone.sqf';
5. Save the init.sqf, repack your mpmission, upload it to your gameserver and restart your server
*/
USE_CANBUILD = false; // if you don't want to define your own positions
USE_TraderCity = false; // if you don't want to define your own positions (Epoch 1.0.5)
USE_POSITIONS = true; // to use own positions and radius
USE_AI_REMOVER = false; // use this to remove Missionbots (AI) within 100m of a player if the player is in a SafeZone
USE_AntiSteal = true; // use this to block opening gear if another player is within 3m!
USE_SPEEDLIMIT = true; // very secret function, nobody is supposed to find out what it does.
SPEEDLIMIT = 25; // Only used if USE_SPEEDLIMIT is true.
USE_SIGNS = false; // use this to build signs around the SafeZone
LOG_EnterLeave = true; // This will log to your .rpt when a player enters or leaves a SafeZone! (only works with infiSTAR.de Admintools / AntiHack)
/* You can use USE_CANBUILD or/and (works together) the custom positions below (USE_POSITIONS) [position or zone,radius] */
_infiSZ =
[
[[6325.6772,7807.7412,0],150,true],//stary
[[4063.4226,11664.19,0],150,true],//bash
[[11447.472,11364.504,0],150,true],//klen
[[1606.6443,7803.5156,0],150,true],//bandit
[[12944.227,12766.889,0],150,true],//hero
[[4361.4937,2259.9526,0],50,true],//wholesalerSouth
[[12060,12640,0],200,true]//air dealear
];
if (isServer) exitWith
{
if (USE_SIGNS) then
{
{
_center = _x select 0;
_radius = _x select 1;
_lSign = _x select 2;
if (_lSign) then
{
for '_i' from 0 to 360 step (270 / _radius)*2 do
{
_location = [(_center select 0) + ((cos _i) * _radius), (_center select 1) + ((sin _i) * _radius),0];
_dir = ((_center select 0) - (_location select 0)) atan2 ((_center select 1) - (_location select 1));
_object = createVehicle ['Sign_sphere100cm_EP1', _location, [], 0, 'CAN_COLLIDE'];
// _object = createVehicle ['SignM_FARP_Winchester_EP1', _location, [], 0, 'CAN_COLLIDE'];
// _object setVehicleInit 'this setObjectTexture [0,''Addons\SafeZones\sign.paa''];';
_object setDir _dir;
};
};
} forEach _infiSZ;
};
};
waitUntil {((!isNil 'dayz_animalCheck') || (!isNil 'dayz_medicalH') || (!isNil 'dayz_slowCheck') || (!isNil 'dayz_gui'))};
if (isNil 'inSafeZone') then { inSafeZone = false; } else { if (typename inSafeZone != 'BOOL') then { inSafeZone = false; }; };
[_infiSZ] spawn {
_infiSZ = _this select 0;
_startSafeZone =
{
if (isNil 'outNow') then
{
_msg = 'You entered a Safe Zone!';
hint _msg;
taskHint [_msg, [0,1,0,1], 'taskDone'];
inNow = nil;
outNow = true;
if (LOG_EnterLeave) then
{
PVDZE_send = [player,'SafeZoneState',[1]];
publicVariableServer 'PVDZE_send';
};
};
player_fired = {
deleteVehicle (nearestObject [_this select 0,_this select 4]);
cutText ['You can not fire in a SafeZone!','WHITE IN'];
};
wild_spawnZombies = {};
zombie_generate = {};
fnc_usec_damageHandler = {};
player removeAllEventHandlers 'handleDamage';
player addEventHandler ['handleDamage', {false}];
player allowDamage false;
_veh = vehicle player;
_szs = _veh getVariable ['inSafeZone',0];
if (_szs == 0) then
{
_veh setVariable ['inSafeZone',1,true];
if (player != _veh) then
{
_veh removeAllEventHandlers 'Fired';
_veh addEventHandler ['Fired', {_this call player_fired;}];
{
_x removeAllEventHandlers 'Fired';
_x addEventHandler ['Fired', {_this call player_fired;}];
} forEach (crew _veh);
vehicle_handleDamage = {false};
_veh removeAllEventHandlers 'HandleDamage';
_veh addeventhandler ['HandleDamage',{ _this call vehicle_handleDamage } ];
_veh allowDamage false;
};
};
_notInSafeZone =
[
'MAAWS','RPG7V','M136','RPG18','STINGER',
'MeleeHatchet_DZE','MeleeHatchet','MeleeCrowbar','MeleeMachete','MeleeFishingPole','MeleeSledge',
'MeleeBaseBallBatNails','MeleeBaseBallBatBarbed','MeleeBaseBallBat'
];
_cwep = currentWeapon player;
if (_cwep in _notInSafeZone) then
{
_swep = '';
{
if ((getNumber (configFile >> 'CfgWeapons' >> _x >> 'Type')) == 2) exitWith
{
_swep = _x;
};
} forEach (weapons player);
if (_swep == '') then
{
player playActionNow 'PutDown';
_iPos = getPosATL player;
_radius = 1;
_removed = ([player,_cwep,1] call BIS_fnc_invRemove);
if (_removed == 1) then
{
_item = createVehicle ['WeaponHolder', _iPos, [], _radius, 'CAN_COLLIDE'];
_item addWeaponCargoGlobal [_cwep,1];
};
}
else
{
player selectweapon _swep;
};
};
};
_endSafeZone =
{
if (isNil 'inNow') then
{
if (str fnc_usec_damageHandler == '{}') then
{
_msg = 'You left the Safe Zone!';
hint _msg;
taskHint [_msg, [1,0,0.1,1], 'taskFailed'];
};
inNow = true;
outNow = nil;
if (LOG_EnterLeave) then
{
PVDZE_send = [player,'SafeZoneState',[0]];
publicVariableServer 'PVDZE_send';
};
};
wild_spawnZombies = compile preprocessFileLineNumbers '\z\addons\dayz_code\compile\wild_spawnZombies.sqf';
zombie_generate = compile preprocessFileLineNumbers '\z\addons\dayz_code\compile\zombie_generate.sqf';
player_fired = {
_this call compile preprocessFileLineNumbers '\z\addons\dayz_code\compile\player_fired.sqf';
_unit = _this select 0;
_weapon = _this select 1;
_muzzle = _this select 2;
_mode = _this select 3;
_ammo = _this select 4;
_magazine = _this select 5;
_projectile = _this select 6;
_screenToWorld = screenToWorld [0.5,0.5];
_near = _screenToWorld nearEntities ['AllVehicles',100];
{
if (isPlayer _x) then
{
_szs = _x getVariable ['inSafeZone',0];
if (_szs == 1) then
{
deleteVehicle (nearestObject [_unit,_ammo]);
};
};
} forEach _near;
};
fnc_usec_unconscious = compile preprocessFileLineNumbers '\z\addons\dayz_code\compile\fn_unconscious.sqf';
object_monitorGear = compile preprocessFileLineNumbers '\z\addons\dayz_code\compile\object_monitorGear.sqf';
vehicle_handleDamage = compile preprocessFileLineNumbers '\z\addons\dayz_code\compile\vehicle_handleDamage.sqf';
_veh = vehicle player;
_szs = _veh getVariable ['inSafeZone',0];
if (_szs == 1) then
{
_veh setVariable ['inSafeZone',0,true];
if (player != _veh) then
{
_veh removeAllEventHandlers 'HandleDamage';
_veh addeventhandler ['HandleDamage',{ _this call vehicle_handleDamage } ];
_veh allowDamage true;
};
};
_end = false;
if (isNil 'gmadmin') then
{
_end = true;
}
else
{
if (gmadmin == 0) then
{
_end = true;
};
};
if (_end) then
{
player allowDamage true;
fnc_usec_damageHandler = compile preprocessFileLineNumbers '\z\addons\dayz_code\compile\fn_damageHandler.sqf';
player removeAllEventHandlers 'HandleDamage';
player addeventhandler ['HandleDamage',{_this call fnc_usec_damageHandler;} ];
};
};
while {1 == 1} do
{
if (isNil 'inSafeZone') then { inSafeZone = false; } else { if (typename inSafeZone != 'BOOL') then { inSafeZone = false; }; };
_state = false;
if (isNil 'USE_POSITIONS') then { USE_POSITIONS = false; } else { if (typename USE_POSITIONS != 'BOOL') then { USE_POSITIONS = false; }; };
if (USE_POSITIONS) then
{
{
_z = _x select 0;
_r = _x select 1;
if ((vehicle player) distance _z < _r) then {_state = true;};
} forEach _infiSZ;
};
if (isNil 'USE_CANBUILD') then { USE_CANBUILD = true; } else { if (typename USE_CANBUILD != 'BOOL') then { USE_CANBUILD = true; }; };
if (USE_CANBUILD) then
{
if (isNil 'canbuild') then { canbuild = true; } else { if (typename canbuild != 'BOOL') then { canbuild = true; }; };
if (!canbuild) then {_state = true;};
};
if (isNil 'USE_TraderCity') then { USE_TraderCity = true; } else { if (typename USE_TraderCity != 'BOOL') then { USE_TraderCity = true; }; };
if (USE_TraderCity) then
{
if (isNil 'isInTraderCity') then { isInTraderCity = false; } else { if (typename isInTraderCity != 'BOOL') then { isInTraderCity = false; }; };
if (isInTraderCity) then {_state = true;};
};
if (_state) then
{
inSafeZone = true;
call _startSafeZone;
{
if (!isNull _x) then
{
if !(isPlayer _x) then
{
deletevehicle _x;
};
};
} forEach ((vehicle player) nearEntities ['zZombie_Base',50]);
if (isNil 'USE_AI_REMOVER') then { USE_AI_REMOVER = false; } else { if (typename USE_AI_REMOVER != 'BOOL') then { USE_AI_REMOVER = false; }; };
if (USE_AI_REMOVER) then
{
{
if ((!isNull group _x) && (getPlayerUID _x == '')) then
{
deleteVehicle _x;
};
} forEach (player nearEntities ['Man',100]);
};
}
else
{
inSafeZone = false;
};
uiSleep 2;
if (!inSafeZone) then
{
call _endSafeZone;
};
};
};
if ((USE_AntiSteal) || (USE_SPEEDLIMIT)) then
{
[] spawn {
_USE_AntiSteal = USE_AntiSteal;
_USE_SPEEDLIMIT = USE_SPEEDLIMIT;
_speedlimit = SPEEDLIMIT;
while {1 == 1} do
{
if (inSafezone) then
{
if (_USE_AntiSteal) then
{
_cnt = {isPlayer _x && _x != player} count (player nearEntities [['CAManBase'],4]);
if ((_cnt > 0) && (!isNull (findDisplay 106))) then
{
(findDisplay 106) closedisplay 0;
closeDialog 0;closeDialog 0;closeDialog 0;
_log = format['%1 You are not allowed to open Gear while near another player!',name player];
cutText [_log,'PLAIN'];
hint _log;
};
};
if (_USE_SPEEDLIMIT) then
{
_obj = vehicle player;
if !(_obj isKindOf 'Plane') then
{
_speed = abs speed _obj;
if ((_obj != player) && (_speed > _speedlimit)) then
{
_vel = velocity _obj;
_x = 0.8;
if (_speed > 50) then {_x = 0.1;};
_velNew = [(_vel select 0) * _x, (_vel select 1) * _x,(_vel select 2) * _x];
_obj SetVelocity _velNew;
};
};
};
}
else
{
uiSleep 2;
};
uiSleep .01;
};
};
};
B-Now its time to go to your init.sqf to make the call to this new safezone.sqf
1-Drop battleye folder into serverRoot\instance_11_Chernarus\
2-The others 3 .bat files must be in your serverRoot-
3-now you need change the paths in the files:
A-open "monitor.bat" (located in your serverroot) and change the paths for your server route. B-open "Premod_restart.bat" (located in your serverroot) and change the paths for your server route. C-open "BEC_Control_Epoch.bat" (located in serverRoot\instance_11_Chernarus\BattlEye\Bec) and change the paths for your server route. D-open "Config.cfg"(located in YourServerRoot\instance_11_Chernarus\BattlEye\Bec\Config\) and change the paths for your server route.
E-open "Shedule.xml" (located in YourServerRoot\instance_11_Chernarus\BattlEye\Bec\Config\)
and needs add this at every last shedule id job:
<Scheduler><!-- 12:00 AM restart --><jobid="0"><time>23:45:00</time><delay>000000</delay><day>1,2,3,4,5,6,7</day><loop>0</loop><cmd>say -1 This server will restart in 15 minutes</cmd><cmdtype>0</cmdtype></job><jobid="1"><time>23:55:00</time><delay>000000</delay><day>1,2,3,4,5,6,7</day><loop>0</loop><cmd>say -1 This server will restart in 5 minutes</cmd><cmdtype>0</cmdtype></job><jobid="2"><time>23:59:00</time><delay>000000</delay><day>1,2,3,4,5,6,7</day><loop>0</loop><cmd>say -1 This server will restart in 1 minute, Log out now!</cmd><cmdtype>0</cmdtype></job><jobid="3"><time>00:00:00</time><delay>000000</delay><day>1,2,3,4,5,6,7</day><loop>0</loop><cmd>#shutdown</cmd><cmdtype>0</cmdtype></job><jobid="4"><time>00:00:10</time><delay>000000</delay><day>1,2,3,4,5,6,7</day><loop>0</loop><cmd>C:\Users\Administrador\Desktop\Dayz Epoch Server\Premod_restart.bat</cmd><cmdtype>1</cmdtype></job><!-- End 12:00 AM restart -->
***Do the same for each job id group.
*******************************IMPORTANT!:For now on.. start your server using "monitor.bat"++++++++++++++
18-Restrict Buildings Near Defined Areas ( i forgot this great complement..remember this when BiggEgg give the "like" sory! ).
Spoiler
Download from here:
Thers no much to say about it.Pretty easy and nice explained.. just make the changes into player_build.sqf the one located into snap_pro folder.
19-OPTIONAL ADD YOU AUTOMATICALLY AS OWNER WHEN YOU PUT THE PLOT.
Spoiler
Open the player_build.sqf the one located into snap_pro folder:
1-At the top of player_build.sqf, add this to the private array, inmediataly after private [
*AdminTools/*Coins/*Plot Management/*Advanced Trading/*DZGM Group Management/*Spawn Class/*Snap Pro/*Tow&Lift/*Rearm-Refuel-Repair/*DZMS Missions/*Vehicle Locked GodMode/*SafeZones in Trades/
*Delete Vehicles abandoned in Safezones/*WELCOME MSGS/*AUTORESTART/*RESTRICTED AREAS TO PLAYER BUILD/*CUSTOM MAP/*SELFBLOODBAG/*WORKS AREAS/*MORE TRADERS IN STARY/*MILITAR TRADE CITY
*CUSTOM MARKERS/*SPAWN IN CIVIL DEFENSE/*LARGE WALL FROM EAST TO WEST/*AI GUARD BORDER CROSSINGS/*CRAFT HOUSES BASED ON SURVIVED DAYS/*RIGHT CLICK ACTIONS ON SHOVEL AND SLEDGE
*AND MORE
Question
juandayz
This is a Guide to install the most common mods. (Without Plot4life...but with persisten plot after player die using plotmanagement and a very usefull script to add you as owner the plot automatically).
This is NOT a support for any mod just a guide that i use to install all this mods in a fresh server.. thers some "fixes" for mods when his steps become a lil confuse.
And if u respect the order to install each mods can be most easy and quick.
Mods to install:
-Single Currency 3.0 (most easy in the world XD)
-Advanced Trading 2.1 (very easy)
-Create customs fn_selfactions/compiles/variables. (easy and large)
-Admin Tools if u dont use infistar.(medium)
-Snap Pro (easy)
-Plot Management (hard)
-Server Configs (easy)
-Deploy Anything (Right Click actions) (easy)
-Group Management (medium but very large)
-ESSV2 (medium but very large)
-Tow&Lift (very easy)
-Rearm/Refuel/Repair (very easy)
-Safezones (very easy)
-DebugMonitor (easy)
-Autorestart (medium)
-Restric Building near defined areas (easy)
-Optional add you automatically as owner the plot when you plant it (easy)
-Dart (Rcon Tool used to kick and ban players..also to write msg through BEC) (easy)
-Optional: Infistar Fix for vehicles non spawned after bought/Others Servers Packages/Others Greats Mods
Follow this guide to get a epoch fresh server.
INSTALLING:
few tips before start:
*When you have to make any changes in your dayz_server.pbo (\@DayZ_Epoch_Server\addons\dayz_server\ ) Please once you finish remember repack again your dayz_server.pbo.
*Any kind of change maked in any kind of file inside \@DayZ_Epoch\addons\ Folder NOT suffer effect. If u need make a change into any of this files..you must drop the file into MPmissions/yourinstance/ folder or into dayz_Server.pbo and change the call for it. Generally located into CUSTOMS compiles.sqf or init.sqf somecase also fn_Selfactions.sqf and others.
*Everytime you finish the install of mod.. test everything...cuz if u proceed and something stop to work you will not know what happened.
1-Single Currency 3.0.
Download Mod from here: https://github.com/EpochSC/SingleCurrencyStorage
A: Overwrite all your Servers Files with single currency files and mod its done!.
*Important: we have to make a lil config: so go to: \MPMissions\DayZ_Epoch_11.Chernarus\ZSC\gold\
*open: ZSCconfig.sqf and change this line for default in true by false; like this:
// if TRUE: Overwrites yours fn_selfactions.sqf with default 1 + edits. | IF False: Change content yourself @ step D ZSC_Overwrite_SelfActions = false;
2-Before proceed... we need make some changes:
A-first unpack your dayz_server.pbo (located in YOUR SERVER ROOT\@DayZ_Epoch_Server\addons\)
B-find into \system\ folder your server_monitor.sqf (open it).
C-Find and change all words called "intentory" by "inventory" (you will find 14 words).
D-Repack your .pbo
3-Now is time to make some customs files (fn_selfactions.sqf/compiles.sqf/variables.sqf).
A-So now go to YOURSERVERROOT\@DayZ_Epoch\addons\ and unpack your dayz_code.pbo
B-open \@DayZ_Epoch\addons\dayz_code\init\ and copy this two files: compiles.sqf and variables.sqf
C-Now we have to create a new folder for this files so go to: YOURSERVERROOT\MPMissions\DayZ_Epoch_11.Chernarus\
and create a new folder called "custom". Then paste inside the compiles.sqf and variables.sqf
D-Now we have to drop the fn_selfactions.sqf .. go to \MPMissions\DayZ_Epoch_11.Chernarus\ZSC\compiles\
copy fn_selfActions.sqf and paste into YOURSERVERROOT\MPMissions\DayZ_Epoch_11.Chernarus\custom\ with the new compiles.sqf and variables.sqf.
4-Making the calls for this 3 new files: (fn_selfactions.sqf/compiles.sqf/variables.sqf).
A-First open your init.sqf and
find this line:
call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\variables.sqf";
change by:
call compile preprocessFileLineNumbers "custom\variables.sqf";
B-find this line:
call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf";
change by:
call compile preprocessFileLineNumbers "custom\compiles.sqf";
C-Find this line:
progressLoadingScreen 1.0;
bellow paste:
fnc_usec_selfActions = compile preprocessFileLineNumbers "custom\fn_selfActions.sqf";
D-At least we need remove the original call for fn_Selfactions.sqf located into the new custom compiles.sqf
so proceed to open your custom compiles.sqf located into the custom folder and find this line:
fnc_usec_selfActions = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_selfActions.sqf";
change by: (or just remove the whole line)
//fnc_usec_selfActions = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_selfActions.sqf";
Note:(when you use a bar before a line this is equal to remove the line.So now the call stop to work and we only calling selfactions.sqf from init.sqf).
Note: For now on... everytime a mod ask for changes in compiles.sqf/variables.sqf or fn_selfactions.sqf we have to make this change into the files located in custom folder.
5-We already have SingleCurrency installed.. its time to
Install Advanced Trading:
download from here:
https://github.com/DevZupa/AdvancedTrading/releases/tag/v2.1
A-open the custom fn_selfactions.sqf located in custom folder and find this:
// Database menu _buy = player addAction [localize "STR_EPOCH_PLAYER_289", "\z\addons\dayz_code\actions\show_dialog.sqf",(_traderMenu select 0), 999, true, false, "",""]; s_player_parts set [count s_player_parts,_buy];
above paste:
B- in description.ext, add the following on the very very bottom
#include "zupa\advancedTrading\advancedTrading.hpp"
C- open: \MPMissions\DayZ_Epoch_11.Chernarus\zupa\advancedTrading\config.sqf
uste true in this line:
Z_SingleCurrency = true; // Does your server use a single currency system.
D- (INFISTAR) Add the following exceptions to your antihack if u use infistar
AdvancedTrading
711197
Advanced trading its done!
6-ADMIN TOOLS (skip if u gonna use infistar or other adm mod).
download from here: https://github.com/noxsicarius/Epoch-Admin-Tools
Thers no much to explain in the install of this mod Follow the original guide to install it.. the only thing that can be confused is the step 9:
The original guide says:
This means:
A-in your init.sqf find this line:
_playerMonitor = [] execVM "\z\addons\dayz_code\system\player_monitor.sqf";
bellow paste:
// Epoch Admin Tools if ( !((getPlayerUID player) in AdminList) && !((getPlayerUID player) in ModList)) then { [] execVM "admintools\antihack\antihack.sqf"; // Epoch Antihack with bypass };
nothing more.
TIME TO TEST ALL THIS NEW MODS: go with traders, try to buy and sell using advanced trading menu, test money storage , restart your server
and see if the money still are into the storages.
7-INSTALL SNAP-PRO:
Download from here:https://github.com/raymix/SnapPro
A-open your Custom compiles.sqf (the one into custom folder).
B-Find this line:
player_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build.sqf";
Replace by:
player_build = compile preprocessFileLineNumbers "custom\snap_pro\player_build.sqf";
Find this other:
dayz_spaceInterrupt = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\dayz_spaceInterrupt.sqf";
replace by:
dayz_spaceInterrupt = compile preprocessFileLineNumbers "custom\snap_pro\dayz_spaceInterrupt.sqf";
And find this:
player_deathBoard = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\list_playerDeathsAlt.sqf";
bellow paste:
snap_build = compile preprocessFileLineNumbers "custom\snap_pro\snap_build.sqf";
C-Open your description.ext (root of your MPMissions folder), add this to the very bottom:
#include "custom\snap_pro\snappoints.hpp"
D-Copy snap_pro folder inside your custom folder and you are done. Simple as that!
8-PLOT MANAGEMENT:
download from here: https://github.com/DevZupa/PlotManagement (use maintain version NON PLOT4life)
STEP 1 (Copying Files)
First, unpack your mission file.
Now copy the "plotManagement" folder to your mission directory.
STEP 2 (Modifying description.ext)
At the bottom, add
#include "plotManagement\defines.hpp" #include "plotManagement\plotManagement.hpp"
STEP 3:
into compiles.sqf: (the one into custom folder)
find:
if (!isDedicated) then {
paste bellow:
/*Plot*/ PlotGetFriends = compile preprocessFileLineNumbers "plotManagement\plotGetFriends.sqf"; PlotNearbyHumans = compile preprocessFileLineNumbers "plotManagement\plotNearbyHumans.sqf"; PlotAddFriend = compile preprocessFileLineNumbers "plotManagement\plotAddFriend.sqf"; PlotRemoveFriend = compile preprocessFileLineNumbers "plotManagement\plotRemoveFriend.sqf"; MaintainPlot = compile preprocessFileLineNumbers "plotManagement\maintain_area.sqf"; PlotPreview = compile preprocessFileLineNumbers "plotManagement\plotToggleMarkers.sqf"; PlotObjects = compile preprocessFileLineNumbers "plotManagement\plotObjects.sqf"; // NEW /*Plot End*/
STEP 4 (Modifying variables.sqf)
After
//Player self-action handles dayz_resetSelfActions = {
Add
s_player_plotManagement = -1;
STEP 5 (Modifying fn_selfActions.sqf) (the one into custom folder)
Find
if (s_player_maintain_area < 0) then {
Above that, add:
5 B:
Find
} else { player removeAction s_player_maintain_area; s_player_maintain_area = -1; player removeAction s_player_maintain_area_preview; s_player_maintain_area_preview = -1; };
Replace that with:
} else { player removeAction s_player_plotManagement; s_player_plotManagement = -1; player removeAction s_player_maintain_area; s_player_maintain_area = -1; player removeAction s_player_maintain_area_preview; s_player_maintain_area_preview = -1; };
Step 5-C
Find:
//Allow owners to delete modulars if(_isModular && (dayz_characterID == _ownerID)) then { if(_hasToolbox && "ItemCrowbar" in _itemsPlayer) then { _player_deleteBuild = true; }; }; //Allow owners to delete modular doors without locks if(_isModularDoor && (dayz_characterID == _ownerID)) then { if(_hasToolbox && "ItemCrowbar" in _itemsPlayer) then { _player_deleteBuild = true; }; };
Replace with :
///Allow owners to delete modulars if(_isModular) then { if(_hasToolbox && "ItemCrowbar" in _itemsPlayer) then { _findNearestPoles = nearestObjects[player, ["Plastic_Pole_EP1_DZ"], DZE_PlotPole select 0]; _IsNearPlot = count (_findNearestPoles); _fuid = []; _allowed = []; if(_IsNearPlot > 0)then{ _thePlot = _findNearestPoles select 0; _owner = _thePlot getVariable ["CharacterID","010"]; _friends = _thePlot getVariable ["plotfriends", []]; { _friendUID = _x select 0; _fuid = _fuid + [_friendUID]; } forEach _friends; _allowed = [_owner]; _allowed = [_owner] + _fuid; if (_owner == dayz_characterID || (getPlayerUID player) in _allowed) then { // // If u want that the object also belongs to someone on the plotpole. _player_deleteBuild = true; }; }else{ if(_owner == dayz_characterID)then{ _player_deleteBuild = true; }; }; }; }; //Allow owners to delete modular doors without locks if(_isModularDoor) then { if(_hasToolbox && "ItemCrowbar" in _itemsPlayer) then { _findNearestPoles = nearestObjects[player, ["Plastic_Pole_EP1_DZ"], DZE_PlotPole select 0]; _IsNearPlot = count (_findNearestPoles); _fuid = []; _allowed = []; if(_IsNearPlot > 0)then{ _thePlot = _findNearestPoles select 0; _owner = _thePlot getVariable ["CharacterID","010"]; _friends = _thePlot getVariable ["plotfriends", []]; { _friendUID = _x select 0; _fuid = _fuid + [_friendUID]; } forEach _friends; _allowed = [_owner]; _allowed = [_owner] + _fuid; if (_owner == dayz_characterID || (getPlayerUID player) in _allowed) then { // // If u want that the object also belongs to someone on the plotpole. _player_deleteBuild = true; }; }else{ if(_owner == dayz_characterID)then{ _player_deleteBuild = true; }; }; }; };
***Note: if u wanna remove the default maintain in red... delete this part.***
Step 5 D:
Find: (near of the end)
{dayz_myCursorTarget removeAction _x} count s_player_repairActions;s_player_repairActions = []; s_player_repair_crtl = -1; {player removeAction _x} count s_player_combi;s_player_combi = []; dayz_myCursorTarget = objNull; s_player_lastTarget = [objNull,objNull,objNull,objNull,objNull]; {player removeAction _x} count s_player_parts;s_player_parts = []; s_player_parts_crtl = -1; {player removeAction _x} count s_player_lockunlock;s_player_lockunlock = []; s_player_lockUnlock_crtl = -1; player removeAction s_player_checkGear; s_player_checkGear = -1; player removeAction s_player_SurrenderedGear; s_player_SurrenderedGear = -1; player removeAction s_player_forceSave; s_player_forceSave = -1; player removeAction s_player_flipveh; s_player_flipveh = -1; player removeAction s_player_sleep; s_player_sleep = -1; player removeAction s_player_deleteBuild; s_player_deleteBuild = -1; player removeAction s_player_butcher; s_player_butcher = -1;
Above that, add
player removeAction s_player_plotManagement; s_player_plotManagement = -1;
Step 5 E:
you need copy from @Dayz_Epoch\addons\dayz_code\actions\ this files:
player_upgrade.sqf
player_buildingDowngrade.sqf
player_build.sqf"// DO NOT COPY AND PASTE THIS FILE ure using snap pro. u already have it. modify this file from snap_pro folder.
!!Make this copy and paste into : MPMISSIONS\YOUR INSTANCE\plotManagement\
Again go to your Custom fn_selfActions.sqf and find :
s_player_upgrade_build = player addAction [format[localize "STR_EPOCH_ACTIONS_UPGRADE",_text], "\z\addons\dayz_code\actions\player_upgrade.sqf",_cursorTarget, -1, false, true, "",""];
change by:
s_player_upgrade_build = player addAction [format[localize "STR_EPOCH_ACTIONS_UPGRADE",_text], "plotManagement\player_upgrade.sqf",_cursorTarget, -1, false, true, "",""];
Now find:
s_player_downgrade_build = player addAction [format[localize "STR_EPOCH_ACTIONS_REMLOCK",_text], "\z\addons\dayz_code\actions\player_buildingDowngrade.sqf",_cursorTarget, -2, false, true, "",""];
Change by:
s_player_downgrade_build = player addAction [format[localize "STR_EPOCH_ACTIONS_REMLOCK",_text], "plotManagement\player_buildingDowngrade.sqf",_cursorTarget, -2, false, true, "",""];
STEP 6 (Modifying remove.sqf)
NO CHANGES NEEDED, the effect has been realised in 5 C. RESTORE TO THE NORMAL REMOVES.SQF
DONT DO NOTHING HERE..PROCEED.
STEP 7 (Modifying player_build.sqf, player_upgrade.sqf, and player_buildingDowngrade.sqf)
ALL THREE OF THESE FILES NEED THE SAME EDIT, MAKE SURE YOU DO ALL FILES!!!!
Remember you have player_upgrade.sqf, and player_buildingDowngrade.sqf into plotManagement folder and player_build.sqf into snap_pro folder.
Find:
_friendlies = player getVariable ["friendlyTo",[]]; // check if friendly to owner if(_ownerID in _friendlies) then { _canBuildOnPlot = true; };
Replace that with:
_friendlies = _nearestPole getVariable ["plotfriends",[]]; _fuid = []; { _friendUID = _x select 0; _fuid = _fuid + [_friendUID]; } forEach _friendlies; _builder = getPlayerUID player; // check if friendly to owner if(_builder in _fuid) then { _canBuildOnPlot = true; };
STEP 8: This one is in your dayz_server.pbo (Modifying server_monitor.sqf)
8 A
Find
_object setVariable ["ObjectID", _idKey, true];
After that, add
if (typeOf (_object) == "Plastic_Pole_EP1_DZ") then { _object setVariable ["plotfriends", _inventory, true]; };
STEP -8 B
Find
if (count _inventory > 0) then {
Replace that with:
if ((count _inventory > 0) && !(typeOf( _object) == "Plastic_Pole_EP1_DZ")) then {
STEP 9 Again, this is in your dayz_server.pbo (Modifying server_updateObject.sqf)
Find:
_inventory = [ getWeaponCargo _object, getMagazineCargo _object, getBackpackCargo _object ];
Replace that with:
if (typeOf (_object) == "Plastic_Pole_EP1_DZ") then{ _inventory = _object getVariable ["plotfriends", []]; //We're replacing the inventory with UIDs for this item } else { _inventory = [ getWeaponCargo _object, getMagazineCargo _object, getBackpackCargo _object ]; };
STEP 10: open plotObjects.sqf located in plotManagement folder and.
replace:
_range = DZE_PlotPole select 0; _count = count ((getPosATL player) nearObjects ["All",_range]);
by:
_range = DZE_PlotPole select 0; _cptarget = player; _objectClasses = DZE_maintainClasses; _objects = nearestObjects [_cptarget, _objectClasses, _range]; _objectsnearcount = count _objects; _count = _objectsnearcount;
STEP 11. Repack your .pbo
STEP 12: open your custom variables.sqf (located in custom folder)
FIND:
if(isNil "DZE_DamageBeforeMaint") then { DZE_DamageBeforeMaint = 0.9; };
Replace by:
if(isNil "DZE_DamageBeforeMaint") then { DZE_DamageBeforeMaint = 0.1; //or 0 to get maintain option all time. };
STEP 13:
into your serverroot/instance_11.chernarus or other/ find and open your HiveExt.ini
change this line:
CleanupPlacedAfterDays = -1 // remove the , at start of the line. and place -1
**and remember run as query the sql damageonage events.
STEP 14:INFISTAR users
Add the following number to the dialogs array:
711194
and Add:
"PlotManagement"
to
_cMenu =
PLOT MANAGEMENT ITS DONE! MAKE A TEST.
9-Time to make some configs:
This is for prevent players stuck on loading screen:
open your custom compiles.sqf (the one located in custom folder)
find this lines:
// 120 sec timeout (12000 * 0.01) while { _timeOut < 12000 } do { if (dayz_clientPreload && dayz_authed) exitWith { diag_log "PLOGIN: Login loop completed!"; };
replace by:
// 120 sec timeout (12000 * 0.01) while { _timeOut < 12000 } do { if (dayz_clientPreload && dayz_authed) exitWith { diag_log "PLOGIN: Login loop completed!"; endLoadingScreen; };
open your init.sqf
find:
dayz_minpos = -1; dayz_maxpos = 16000;
paste bellow:
DZE_SelfTransfuse = true; // default value //allow self transufe DZE_StaticConstructionCount = 1; //reduce time to build only 1 step DZE_PlayerZed = false; //remove player chance to spawn as zed.
Find:
MaxVehicleLimit = 300; // Default = 50
300 its a LOT!!!!!!!! reduce this value for less vehicles spawn.
find:
MaxDynamicDebris = 200; // Default = 100
also reduce this value.
find:
dayz_maxLocalZombies = 50; // Default = 30
This is a lot of zombies reduce this value please :)
Now this is for config your server difficulty (most detailed..i will use veteran difficulty.. check your hiveext.ini to see what youre using)
Open your ServerROOt\instance_11_Chernarus\Users\instance_11_Chernarus\ "instance_11_Chernarus.ArmA2OAProfile"
at very bottom paste:
class Difficulties { class Veteran { class Flags { 3rdPersonView=1; armor=0; autoAim=0; autoGuideAT=0; autoSpot=0; cameraShake=1; clockIndicator=0; deathMessages=1; enemyTag=0; friendlyTag=0; hud=1; hudGroupInfo=1; hudPerm=0; hudWp=1; hudWpPerm=0; map=1; netStats=1; tracers=0; ultraAI=0; unlimitedSaves=0; vonId=0; weaponCursor=1; }; skillFriendly=1; precisionFriendly=1; skillEnemy=0.89999998; precisionEnemy=0.75; }; }; sceneComplexity=300000; viewDistance=1600; terrainGrid=10; volumeCD=6.5; volumeFX=8.5; volumeSpeech=5.5; volumeVoN=6.5; vonRecThreshold=0.029999999;
and change values if u dont like this.
10-INSTALL deploy anything 2.8.1
Download from original post:
https://epochmod.com/forum/topic/13603-release-1051-deploy-anything-281-now-with-epoch-building-customizable-db-saving-plot-vehiclesbuildings-packing/
Thers nothing to explain here, the guide is pretty simple and easy to install.
11-INSTALL GROUP MANAGEMENT.
Download from original post:http://opendayz.net/threads/release-dzgm-dayz-group-management.20293/
This guide is very easy i just wanna say: In step 6.. you already have a custom ui_selectslot.sqf located in: \MPMissions\DayZ_Epoch_11.Chernarus\overwrites\click_actions\
so for step 6 make the changes into this file.
this change:
2. In ui_selectSlot.sqf (Located in \MPMissions\DayZ_Epoch_11.Chernarus\overwrites\click_actions\) add this after the for loop, but above _pos set [3,_height];, around line 57:
See the change with a bunch of code above to get a reference:
//### BEGIN MODIFIED CODE: extra click actions { private["_classname","_text","_execute","_condition"]; _classname = _x select 0; _text = _x select 1; _execute = _x select 2; _condition = _x select 3; // if the clicked item matches, then assign the script call and display text if(_item == _classname && (call compile _condition)) then { _menu = _parent displayCtrl (1600 + _numActions); _menu ctrlShow true; _height = _height + (0.025 * safezoneH); uiNamespace setVariable ['uiControl', _control]; _menu ctrlSetText _text; _menu ctrlSetEventHandler ["ButtonClick",_execute]; _numActions = _numActions + 1; }; } forEach DZE_CLICK_ACTIONS; //### END MODIFIED CODE: extra click actions ////////////GROUP MANAGEMENT CHANGE START HERE///////// _erc_cfgActions = (missionConfigFile >> "ExtraRc" >> _item); _erc_numActions = (count _erc_cfgActions); if (isClass _erc_cfgActions) then { for "_j" from 0 to (_erc_numActions - 1) do { _menu = _parent displayCtrl (1600 + _j + _numActions); _menu ctrlShow true; _config = (_erc_cfgActions select _j); _text = getText (_config >> "text"); _script = getText (_config >> "script"); _height = _height + (0.025 * safezoneH); uiNamespace setVariable ['uiControl', _control]; _menu ctrlSetText _text; _menu ctrlSetEventHandler ["ButtonClick",_script]; }; }; //GROUP MANAGEMENT CHANGE END HERE//
12:INSTALL ESSV2 (Spawn slection)
Download from original post: http://opendayz.net/threads/release-essv2-enhanced-spawn-selection-v2.21547/
THIS IS ANOTHER AND PRETTY EASY GUIDE WELL DONE, SO DONT NEED EXTRA INFO TO PROCEED. JUST FOLLOW THE ORIGINAL GUIDE.
13-INSTALL TOW & LIFT.
Download and follow the original guide:
https://epochmod.com/forum/topic/14934-logistic-tow-lift/
14-INSTALL :REARM - REFUEL -REPAIR
VERY VERY SIMPLE YOU CAN FOLLOW THE ORIGINAL GUIDE AND DOWNLOAD FROM HERE:
https://epochmod.com/forum/topic/3935-release-vehicle-service-point-refuel-repair-rearm-script/
15-MAKE A SAFEZONE.sqf
If ure using infistar and you already have a safezone.sqf skip this step.
A-First inside your custom folder you need create another folder called "others"
Now into "others" folder create a new sqf called "safezone" and paste this code inside:
/* by: http://infiSTAR.de || http://DayzAntiHack.com *updated on 24.12.2014 Instructions: 1. Copy paste this pastebin code into a file called SafeZone.sqf - save the file. 2. Now extract your mpmission pbo and put the SafeZone.sqf into the extracted folder. 3. Open the init.sqf of the mpmission. 4. At the bottom of the file add [] execVM 'SafeZone.sqf'; 5. Save the init.sqf, repack your mpmission, upload it to your gameserver and restart your server */ USE_CANBUILD = false; // if you don't want to define your own positions USE_TraderCity = false; // if you don't want to define your own positions (Epoch 1.0.5) USE_POSITIONS = true; // to use own positions and radius USE_AI_REMOVER = false; // use this to remove Missionbots (AI) within 100m of a player if the player is in a SafeZone USE_AntiSteal = true; // use this to block opening gear if another player is within 3m! USE_SPEEDLIMIT = true; // very secret function, nobody is supposed to find out what it does. SPEEDLIMIT = 25; // Only used if USE_SPEEDLIMIT is true. USE_SIGNS = false; // use this to build signs around the SafeZone LOG_EnterLeave = true; // This will log to your .rpt when a player enters or leaves a SafeZone! (only works with infiSTAR.de Admintools / AntiHack) /* You can use USE_CANBUILD or/and (works together) the custom positions below (USE_POSITIONS) [position or zone,radius] */ _infiSZ = [ [[6325.6772,7807.7412,0],150,true],//stary [[4063.4226,11664.19,0],150,true],//bash [[11447.472,11364.504,0],150,true],//klen [[1606.6443,7803.5156,0],150,true],//bandit [[12944.227,12766.889,0],150,true],//hero [[4361.4937,2259.9526,0],50,true],//wholesalerSouth [[12060,12640,0],200,true]//air dealear ]; if (isServer) exitWith { if (USE_SIGNS) then { { _center = _x select 0; _radius = _x select 1; _lSign = _x select 2; if (_lSign) then { for '_i' from 0 to 360 step (270 / _radius)*2 do { _location = [(_center select 0) + ((cos _i) * _radius), (_center select 1) + ((sin _i) * _radius),0]; _dir = ((_center select 0) - (_location select 0)) atan2 ((_center select 1) - (_location select 1)); _object = createVehicle ['Sign_sphere100cm_EP1', _location, [], 0, 'CAN_COLLIDE']; // _object = createVehicle ['SignM_FARP_Winchester_EP1', _location, [], 0, 'CAN_COLLIDE']; // _object setVehicleInit 'this setObjectTexture [0,''Addons\SafeZones\sign.paa''];'; _object setDir _dir; }; }; } forEach _infiSZ; }; }; waitUntil {((!isNil 'dayz_animalCheck') || (!isNil 'dayz_medicalH') || (!isNil 'dayz_slowCheck') || (!isNil 'dayz_gui'))}; if (isNil 'inSafeZone') then { inSafeZone = false; } else { if (typename inSafeZone != 'BOOL') then { inSafeZone = false; }; }; [_infiSZ] spawn { _infiSZ = _this select 0; _startSafeZone = { if (isNil 'outNow') then { _msg = 'You entered a Safe Zone!'; hint _msg; taskHint [_msg, [0,1,0,1], 'taskDone']; inNow = nil; outNow = true; if (LOG_EnterLeave) then { PVDZE_send = [player,'SafeZoneState',[1]]; publicVariableServer 'PVDZE_send'; }; }; player_fired = { deleteVehicle (nearestObject [_this select 0,_this select 4]); cutText ['You can not fire in a SafeZone!','WHITE IN']; }; wild_spawnZombies = {}; zombie_generate = {}; fnc_usec_damageHandler = {}; player removeAllEventHandlers 'handleDamage'; player addEventHandler ['handleDamage', {false}]; player allowDamage false; _veh = vehicle player; _szs = _veh getVariable ['inSafeZone',0]; if (_szs == 0) then { _veh setVariable ['inSafeZone',1,true]; if (player != _veh) then { _veh removeAllEventHandlers 'Fired'; _veh addEventHandler ['Fired', {_this call player_fired;}]; { _x removeAllEventHandlers 'Fired'; _x addEventHandler ['Fired', {_this call player_fired;}]; } forEach (crew _veh); vehicle_handleDamage = {false}; _veh removeAllEventHandlers 'HandleDamage'; _veh addeventhandler ['HandleDamage',{ _this call vehicle_handleDamage } ]; _veh allowDamage false; }; }; _notInSafeZone = [ 'MAAWS','RPG7V','M136','RPG18','STINGER', 'MeleeHatchet_DZE','MeleeHatchet','MeleeCrowbar','MeleeMachete','MeleeFishingPole','MeleeSledge', 'MeleeBaseBallBatNails','MeleeBaseBallBatBarbed','MeleeBaseBallBat' ]; _cwep = currentWeapon player; if (_cwep in _notInSafeZone) then { _swep = ''; { if ((getNumber (configFile >> 'CfgWeapons' >> _x >> 'Type')) == 2) exitWith { _swep = _x; }; } forEach (weapons player); if (_swep == '') then { player playActionNow 'PutDown'; _iPos = getPosATL player; _radius = 1; _removed = ([player,_cwep,1] call BIS_fnc_invRemove); if (_removed == 1) then { _item = createVehicle ['WeaponHolder', _iPos, [], _radius, 'CAN_COLLIDE']; _item addWeaponCargoGlobal [_cwep,1]; }; } else { player selectweapon _swep; }; }; }; _endSafeZone = { if (isNil 'inNow') then { if (str fnc_usec_damageHandler == '{}') then { _msg = 'You left the Safe Zone!'; hint _msg; taskHint [_msg, [1,0,0.1,1], 'taskFailed']; }; inNow = true; outNow = nil; if (LOG_EnterLeave) then { PVDZE_send = [player,'SafeZoneState',[0]]; publicVariableServer 'PVDZE_send'; }; }; wild_spawnZombies = compile preprocessFileLineNumbers '\z\addons\dayz_code\compile\wild_spawnZombies.sqf'; zombie_generate = compile preprocessFileLineNumbers '\z\addons\dayz_code\compile\zombie_generate.sqf'; player_fired = { _this call compile preprocessFileLineNumbers '\z\addons\dayz_code\compile\player_fired.sqf'; _unit = _this select 0; _weapon = _this select 1; _muzzle = _this select 2; _mode = _this select 3; _ammo = _this select 4; _magazine = _this select 5; _projectile = _this select 6; _screenToWorld = screenToWorld [0.5,0.5]; _near = _screenToWorld nearEntities ['AllVehicles',100]; { if (isPlayer _x) then { _szs = _x getVariable ['inSafeZone',0]; if (_szs == 1) then { deleteVehicle (nearestObject [_unit,_ammo]); }; }; } forEach _near; }; fnc_usec_unconscious = compile preprocessFileLineNumbers '\z\addons\dayz_code\compile\fn_unconscious.sqf'; object_monitorGear = compile preprocessFileLineNumbers '\z\addons\dayz_code\compile\object_monitorGear.sqf'; vehicle_handleDamage = compile preprocessFileLineNumbers '\z\addons\dayz_code\compile\vehicle_handleDamage.sqf'; _veh = vehicle player; _szs = _veh getVariable ['inSafeZone',0]; if (_szs == 1) then { _veh setVariable ['inSafeZone',0,true]; if (player != _veh) then { _veh removeAllEventHandlers 'HandleDamage'; _veh addeventhandler ['HandleDamage',{ _this call vehicle_handleDamage } ]; _veh allowDamage true; }; }; _end = false; if (isNil 'gmadmin') then { _end = true; } else { if (gmadmin == 0) then { _end = true; }; }; if (_end) then { player allowDamage true; fnc_usec_damageHandler = compile preprocessFileLineNumbers '\z\addons\dayz_code\compile\fn_damageHandler.sqf'; player removeAllEventHandlers 'HandleDamage'; player addeventhandler ['HandleDamage',{_this call fnc_usec_damageHandler;} ]; }; }; while {1 == 1} do { if (isNil 'inSafeZone') then { inSafeZone = false; } else { if (typename inSafeZone != 'BOOL') then { inSafeZone = false; }; }; _state = false; if (isNil 'USE_POSITIONS') then { USE_POSITIONS = false; } else { if (typename USE_POSITIONS != 'BOOL') then { USE_POSITIONS = false; }; }; if (USE_POSITIONS) then { { _z = _x select 0; _r = _x select 1; if ((vehicle player) distance _z < _r) then {_state = true;}; } forEach _infiSZ; }; if (isNil 'USE_CANBUILD') then { USE_CANBUILD = true; } else { if (typename USE_CANBUILD != 'BOOL') then { USE_CANBUILD = true; }; }; if (USE_CANBUILD) then { if (isNil 'canbuild') then { canbuild = true; } else { if (typename canbuild != 'BOOL') then { canbuild = true; }; }; if (!canbuild) then {_state = true;}; }; if (isNil 'USE_TraderCity') then { USE_TraderCity = true; } else { if (typename USE_TraderCity != 'BOOL') then { USE_TraderCity = true; }; }; if (USE_TraderCity) then { if (isNil 'isInTraderCity') then { isInTraderCity = false; } else { if (typename isInTraderCity != 'BOOL') then { isInTraderCity = false; }; }; if (isInTraderCity) then {_state = true;}; }; if (_state) then { inSafeZone = true; call _startSafeZone; { if (!isNull _x) then { if !(isPlayer _x) then { deletevehicle _x; }; }; } forEach ((vehicle player) nearEntities ['zZombie_Base',50]); if (isNil 'USE_AI_REMOVER') then { USE_AI_REMOVER = false; } else { if (typename USE_AI_REMOVER != 'BOOL') then { USE_AI_REMOVER = false; }; }; if (USE_AI_REMOVER) then { { if ((!isNull group _x) && (getPlayerUID _x == '')) then { deleteVehicle _x; }; } forEach (player nearEntities ['Man',100]); }; } else { inSafeZone = false; }; uiSleep 2; if (!inSafeZone) then { call _endSafeZone; }; }; }; if ((USE_AntiSteal) || (USE_SPEEDLIMIT)) then { [] spawn { _USE_AntiSteal = USE_AntiSteal; _USE_SPEEDLIMIT = USE_SPEEDLIMIT; _speedlimit = SPEEDLIMIT; while {1 == 1} do { if (inSafezone) then { if (_USE_AntiSteal) then { _cnt = {isPlayer _x && _x != player} count (player nearEntities [['CAManBase'],4]); if ((_cnt > 0) && (!isNull (findDisplay 106))) then { (findDisplay 106) closedisplay 0; closeDialog 0;closeDialog 0;closeDialog 0; _log = format['%1 You are not allowed to open Gear while near another player!',name player]; cutText [_log,'PLAIN']; hint _log; }; }; if (_USE_SPEEDLIMIT) then { _obj = vehicle player; if !(_obj isKindOf 'Plane') then { _speed = abs speed _obj; if ((_obj != player) && (_speed > _speedlimit)) then { _vel = velocity _obj; _x = 0.8; if (_speed > 50) then {_x = 0.1;}; _velNew = [(_vel select 0) * _x, (_vel select 1) * _x,(_vel select 2) * _x]; _obj SetVelocity _velNew; }; }; }; } else { uiSleep 2; }; uiSleep .01; }; }; };
B-Now its time to go to your init.sqf to make the call to this new safezone.sqf
At very bottom of init.sqf paste:
//SafeZone/////////////////////////////////////////////////// [] execVM "custom\others\safezone.sqf"; /////////////////////////////////////////////////////////////
16-MAKE YOUR DEBUG MONITOR. (toogle with scroll menu) SKIP IF U ALREADY HAVE ANOTHER
A: Now into custom\others\ create a new sqf called "debug_init" and iside paste this code:
B:Now create another sqf into the same folder called "custom_monitor" and inside paste this code:
if (isNil "debugMonitor") then { debugMonitor = false; };
if (debugMonitor) then {
debugMonitor = false;
hintSilent "";
} else {
debugMonitor = true;
private["_time","_hours","_minutes","_restartTime"];
/************************* CONFIG *************************/
_restartTime = 180; //total time before server restart (3hrs = 180 minutes)
/************************* CONFIG *************************/
while {debugMonitor} do {
_time = (round(_restartTime-(serverTime)/60)); //Want it to count up instead of down? use _time = (round serverTime)/60;
_hours = (floor(_time/60));
_minutes = (_time - (_hours * 60));
switch(_minutes) do
{
case 9: {_minutes = "09"};
case 8: {_minutes = "08"};
case 7: {_minutes = "07"};
case 6: {_minutes = "06"};
case 5: {_minutes = "05"};
case 4: {_minutes = "04"};
case 3: {_minutes = "03"};
case 2: {_minutes = "02"};
case 1: {_minutes = "01"};
case 0: {_minutes = "00"};
};
_pic = (gettext (configFile >> 'CfgVehicles' >> (typeof vehicle player) >> 'picture'));
if (player == vehicle player) then
{
_pic = (gettext (configFile >> 'cfgWeapons' >> (currentWeapon player) >> 'picture'));
}else{
_pic = (gettext (configFile >> 'CfgVehicles' >> (typeof vehicle player) >> 'picture'));};
hintSilent parseText format ["
<t size='1' font='Bitstream' align='left' color='#FFCC00'>SERVER NAME HERE</t>
<br/>
<t size='1' font='Bitstream' align='left' color='#FFCC00'>TS HERE:</t>
<br/>
<t size='1' font='Bitstream' align='center' color='#ff5200'>%1</t><br/>
<t color='#009FCF' size='1' font='Bitstream' align='left'>Players Online: </t><t color='#ff5200' size='1' font='Bitstream' align='right'>%2</t><br/>
<t color='#009FCF' size='1' font='Bitstream' align='left'>FPS: </t><t color='#ff5200' size='1' font='Bitstream' align='right'>%3</t><br/>
<t color='#009FCF' size='1' font='Bitstream' align='left'>Blood: </t><t color='#ff5200' size='1' font='Bitstream' align='right'>%4</t><br/>
<t color='#009FCF' size='1' font='Bitstream' align='left'>Humanity: </t><t color='#ff5200' size='1' font='Bitstream' align='right'>%5</t><br/>
<br/>
<t color='#009FCF' size='1' font='Bitstream' align='left'>Murders: </t><t color='#ff5200' size='1' font='Bitstream' align='right'>%6</t><br/>
<t color='#009FCF' size='1' font='Bitstream' align='left'>Bandit Kills: </t><t color='#ff5200' size='1' font='Bitstream' align='right'>%7</t><br/>
<t color='#009FCF' size='1' font='Bitstream' align='left'>Zombie Kills: </t><t color='#ff5200' size='1' font='Bitstream' align='right'>%8</t><br/>
<t color='#FFCC00' size='1' font='Bitstream' align='left'>Restart In: </t><t color='#FFCC00' size='1' font='Bitstream' align='right'>%9Hr(s) %10Min(s)</t><br/>
<img size='3' image='%11'/><br/>
",
(name player),//1
(count playableUnits),//2
(round diag_fps),//3
(player getVariable['USEC_BloodQty', r_player_blood]),//4
(player getVariable['humanity', 0]),//5
(player getVariable['humanKills', 0]),//6
(player getVariable['banditKills', 0]),//7
(player getVariable['zombieKills', 0]),//8
_hours, // Used on line 52 to display hours //9
_minutes, // Used on line 52 to display minutes //10
_pic//11
];
sleep 2;
};
};
**take a look in this line.. you will need put your server name:
**and in this line your TS address:
C-Now its time to go to your init.sqf and make the call for the debug so open init.sqf
find this lines:
if (!isDedicated) then { //Conduct map operations
and bellow paste:
// Debug Monitor [] execVM "custom\others\debug_init.sqf"; [] execVM "custom\others\custom_monitor.sqf";
AND DONE!.
17-AUTORESTART FILES:
here you have my files: http://www.mediafire.com/file/6afp6inam56tfq2/autorestart.rar
1-Drop battleye folder into serverRoot\instance_11_Chernarus\
2-The others 3 .bat files must be in your serverRoot-
3-now you need change the paths in the files:
A-open "monitor.bat" (located in your serverroot) and change the paths for your server route.
B-open "Premod_restart.bat" (located in your serverroot) and change the paths for your server route.
C-open "BEC_Control_Epoch.bat" (located in serverRoot\instance_11_Chernarus\BattlEye\Bec) and change the paths for your server route.
D-open "Config.cfg"(located in YourServerRoot\instance_11_Chernarus\BattlEye\Bec\Config\) and change the paths for your server route.
E-open "Shedule.xml" (located in YourServerRoot\instance_11_Chernarus\BattlEye\Bec\Config\)
and needs add this at every last shedule id job:
(change for ur server paths).
My example:
***Do the same for each job id group.
*******************************IMPORTANT!:For now on.. start your server using "monitor.bat"++++++++++++++
18-Restrict Buildings Near Defined Areas ( i forgot this great complement..remember this when BiggEgg give the "like" sory! ).
Download from here:
Thers no much to say about it.Pretty easy and nice explained.. just make the changes into player_build.sqf the one located into snap_pro folder.
19-OPTIONAL ADD YOU AUTOMATICALLY AS OWNER WHEN YOU PUT THE PLOT.
Open the player_build.sqf the one located into snap_pro folder:
1-At the top of player_build.sqf, add this to the private array, inmediataly after private [
"_nearPlots", "_selectedPlot", "_onPlot", "_uidPlayer", "_playerName",
so its looks:
private ["_nearPlots", "_selectedPlot", "_onPlot", "_uidPlayer", "_playerName","the rest of the original player build variables"...];
2-find this block of code (around line 667):
_tmpbuilt setVariable ["CharacterID",dayz_characterID,true]; // fire? if(_tmpbuilt isKindOf "Land_Fire_DZ") then { _tmpbuilt spawn player_fireMonitor; } else { PVDZE_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location,_vector],_classname]; publicVariableServer "PVDZE_obj_Publish"; };
Replace that block with this:
Done. Original post:
20-INSTALL DART (KICK/BAN/MSG Players).
Download from here: http://www.dayztv.com/apps/download/dayz-dart-admin-rcon-tool-windows/
Original post:
Well here to get it work.
Once you install DART:
You will see 3 options at left of the screen:
HOST/PORT/PASSWORD
Host: here you need entry your server ip. (if ure runing DART at same machine that server is running then use 127.0.0.1 (the @localhost)
Port: your server port in my case 2302
Password: Here you need to define a password.. its not your DB password.. is your BEC password so go here: SERVER ROOT\instance_11_Chernarus\BattlEye\
and open the file called BEServer.cfg you will see this:
RConPassword password123 MaxPing 250
"password123" it for default please change it. for example: mygirlfriendshowersucks
"MaxPing" its the limit for BEC before kick a player automatically by high ping.
Now go back to your dart and in password field put your new pass.. in this example mygirlfriendshowersucks
So its look:
Host: 127.0.0.1 (for a server running in a same machine with dart).
Port: 2302
Password: mygirlfriendshowersucks
now press connect! ( your server and your BEC must be running) and its done!
Go to setting to adjust some options.
**IMPORTANT** IF URE INFISTAR USER AND BOUGHT VEHICLES NOT SPAWNING YOU CAN TRY THIS FIX by @zachtucker18 shared by @sercanatici
..."After a lot of looking around to find out the FIX, and i finally find out a way to fix it."...
Its the infistar issue. i changed the Ah.sql file
'PVDZE_veh_Publish2' addPublicVariableEventHandler
{
_array = (_this select 1);
_worldspace = _array select 0;
_class = _array select 1;
_activatingPlayer = _array select 5;
_pos = _worldspace select 1;
_txt = getText (configFile >> 'CfgVehicles' >> _class >> 'displayName');
if(isNull _activatingPlayer || {!isPlayer _activatingPlayer})exitWith {
_log = format['Vehicle spawned without valid player %1 (%2) | Position: %3',_class,_txt,_pos];
diag_log ('infiSTAR.de Log: '+_log);
};
Others Servers Packages: (already installed).
Unified Epoch Project:
https://github.com/bbatton/Unified-Epoch-Project#pre-installed-mods
Juandayz Server Package (Epoch) :
http://www.mediafire.com/download/5brut5ftfw0paf0/JUANDAYZSERVER.rar
Install guide included into .rar Mods:
*AdminTools/*Coins/*Plot Management/*Advanced Trading/*DZGM Group Management/*Spawn Class/*Snap Pro/*Tow&Lift/*Rearm-Refuel-Repair/*DZMS Missions/*Vehicle Locked GodMode/*SafeZones in Trades/
*Delete Vehicles abandoned in Safezones/*WELCOME MSGS/*AUTORESTART/*RESTRICTED AREAS TO PLAYER BUILD/*CUSTOM MAP/*SELFBLOODBAG/*WORKS AREAS/*MORE TRADERS IN STARY/*MILITAR TRADE CITY
*CUSTOM MARKERS/*SPAWN IN CIVIL DEFENSE/*LARGE WALL FROM EAST TO WEST/*AI GUARD BORDER CROSSINGS/*CRAFT HOUSES BASED ON SURVIVED DAYS/*RIGHT CLICK ACTIONS ON SHOVEL AND SLEDGE
*AND MORE
ElDubya Overpoch Server:
Sheeps Epoch Repack:
http://opendayz.net/threads/support-sheeps-epoch-repack.14921/
Tnks to:
@theduke he help me a lot!
@Cherdenko he also help me in each test!
@seelenapparat he is like batman...lots of time only appear to help me and then just disappear XD
@chi @lonewolfgaming @ElDubya
Tnks to for this comunity to @vbawol @Richie @raymix and the other staff :)
Many Many tnks for this greats mods used in this tuto to:
@Zupa Single currency 3.0 / Advanced Trading 2.1 / Plot Management.
@NoxSicarius Admin tools.
@raymix Snap_Pro.
@mudzereli Deploy Anything 2.8.1.
@ebaydayz DZGM / ESSV2.
@nightmare for his remake on Lift & Tow.
@Axe Cop Vehicle Service Point (Refuel-Repair-Rearm)
@BigEgg Restrict Building near defined areas and non-P4L Automatically Add Plot Owner to plot.
and hope you make all of this work :)
OPTIONAL:
Here you got some others greats mods that you can use and try to install using the originals guides.
Delete Vehicles in SafeZones: by @Halvhjearne
Day/Night : by @Donnovan
Workshop by @juandayz (Sory for put one of my :) )
https://epochmod.com/forum/topic/42506-releaseworkshopupdated-to-v2/
WAI Missions by @f3cuk
https://github.com/f3cuk/WICKED-AI
WELCOME MSGS by @ZedBuster (from opendayz)
http://opendayz.net/threads/dayz-welcome-message-credits-style.13071/
LOGO OVERLAY TO SCREEN by @ixxo (from opendayz)
http://opendayz.net/threads/adding-logo-overlay-to-screen.18759/
CUSTOM GUI MENU by @theduke
Anti-Dupe by @JustBullet
Vehicle god mode by @Donnovan
Harvest and smoke Drugs by @FragZ
Epoch Events: 4 side missions by @Aidem and upload again by @A Man
Link to comment
Share on other sites
19 answers to this question
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now