With the release of DayZ Standalone there have been some requests out there to enable server owners to keep the time of day on their server set to certain point. For example some may want their server to always remain in daylight and others might want eternal darkness. So with that, I've gone ahead and written a small server side script to do just that! Lets dive right into it!
- Download a copy of the "Scripts" folder from GitHub
- Exact the "Scripts" folder into your MPMissions\dayzOffline.chernarusplus directory
- Open your Init.c file
- At the top of the Init.c file add directly above void main()
#include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\Scripts\\cappsTimeLoop.c"
int setStartHour = 10;
int setStopHour = 16;
- To configure the script you will want to adjust the startHour and stopHour. To get an idea, 0 is 12:00am and 23 is 11:00pm
- Next inside of the void main() at the very bottom, you will want to add
cappsTimeLoop(setStartHour,setStopHour,true);
- Next scoll down to just underneath override void StartingEquipSetup(PlayerBase player, bool clothesChosen) inside of the class CustomMission: MissionServer:
- You are going to add the following code:
override void TickScheduler (float timeSplice)
{
GetGame().GetWorld().GetPlayerList(m_Players);
if( m_Players.Count() == 0 ) return;
for(int i = 0; i < SCHEDULER_PLAYERS_PER_TICK; i++)
{
if(m_currentPlayer >= m_Players.Count() )
{
m_currentPlayer = 0;
}
PlayerBase currentPlayer = PlayerBase.Cast(m_Players.Get(m_currentPlayer));
currentPlayer.OnTick();
m_currentPlayer++;
}
//Ignore above code that is required to keep food,drink and other survival elements working
int currentTime = GetGame().GetTime() * 0.001;
static int newTime = 0;
int timeDelay = 180;
if (currentTime >= newTime + timeDelay)
{
//GetGame().ChatPlayer(1,"3 minute check on reset!");//for debug pruposes
cappsTimeLoop(setStartHour,setStopHour,false);
//GetGame().ChatPlayer(1,"Passed the time switch call");//for debug pruposes
newTime = currentTime;
}
}