Jump to content

[WIP] Epoch Headless Client EHC v1.1 RC


david

Recommended Posts

Right I think I have it working as goober originally intended.

 

I Started from scratch again today but from using goobers original files.

 

It seems if the Headless Client isn't online that players in fact spawn there own zombies up to the total max defined in init.sqf. (maxlocalzombies)

When the Headless Client comes online the players then start sending spawn request to it and the headless client and then will take over the zombies.

When you kill the Headless Client process any zombies spawned off it will disappear and then players will start spawning there own zombies again.

There is no need to use player monitor on it also as goober originally had it.

 

This headless client has been driving me insane over the past few days and to be honest I think someone who really knows what they doing should be working on this and not me I have just been going around in circles  :wacko:

 

I will be working on a separate test version here from now on as the file structures and installation is totally different to Davids git, Also I don't want to edit and mess with his project page when he is away.

If you have any questions about my test version PM me don't post here.

Link to comment
Share on other sites

start the headless client use the following command line: arma2oa_be.exe 0 0 -skipintro -nosplash -noPause -client -connect 127.0.0.1 -port:2302 -nosound "-mod=@dayz_epoch" -cpuCount=2 -name=Server -profile=HeadlessClient

 

start the headless client use the following command line: arma2oa_be.exe 0 0 -skipintro -nosplash -noPause -client -connect 127.0.0.1 -port:2302 -nosound "-mod=@DayzOverwatch;@dayz_epoch" -cpuCount=2 -name=Server -profile=HeadlessClient

 

will it need to be modified like the 2nd line for it to login properly to Overpoch?

Link to comment
Share on other sites

start the headless client use the following command line: arma2oa_be.exe 0 0 -skipintro -nosplash -noPause -client -connect 127.0.0.1 -port:2302 -nosound "-mod=@dayz_epoch" -cpuCount=2 -name=Server -profile=HeadlessClient

 

start the headless client use the following command line: arma2oa_be.exe 0 0 -skipintro -nosplash -noPause -client -connect 127.0.0.1 -port:2302 -nosound "-mod=@DayzOverwatch;@dayz_epoch" -cpuCount=2 -name=Server -profile=HeadlessClient

 

will it need to be modified like the 2nd line for it to login properly to Overpoch?

cd "C:\Program Files (x86)\Steam\SteamApps\common\Arma 2 Operation Arrowhead"
taskkill /IM Arma2OA.exe /F
sleep 5
@start /low ArmA2OA_BE.exe 0 0 -skipIntro -nosplash -showScriptErrors -noPause -client -connect=127.0.0.1 -port=2367 -nosound "-mod=Expansion\beta;Expansion\beta\Expansion" "-mod=@DayzOverwatch;@Dayz_Epoch" -cpuCount=2 -name=HeadlessClient -profiles=HeadlessClient

starupHC.bat (overpoch)

Link to comment
Share on other sites

I decided to keep it at the center of the map its just easier for using on different maps and stuff. I'm using your modded fsm and the version I knocked up now is pretty much 100% working with no issues :D

 

The HC is just another client so is subject to the fog that makes having such a massive player area possible. Over distance the accuracy is reduced exponentially, this is why AI will kill you when you are ten metres away from the bullet when using a distant HC. 

 

Have not tested on 1.63 or Arma 3 with the new HC / net code improvements but the basics still must stand, why would a player in Electrozavordsk need to accurately know the position of someone at NWAF ?

 

Have found best results by keeping the HC central to the action.. multiple HCs and management of them is the way to a much more powerful server :)

Link to comment
Share on other sites

What beta build are you using on the server? It sounds like a version miss match. It could be your starting up the headless on the new steam build but are running an older beta for the server it self.

 

RPT logs are key mate. It will tell you if your starting the headless correctly etc Sounds like you messed up somewhere.

 

Ok, I found the issue, launching epoch then overwatch in the commandline does not work as intended, overwatch comes first. :D

Link to comment
Share on other sites

cd "C:\Program Files (x86)\Steam\SteamApps\common\Arma 2 Operation Arrowhead"
taskkill /IM Arma2OA.exe /F
sleep 5
@start /low ArmA2OA_BE.exe 0 0 -skipIntro -nosplash -showScriptErrors -noPause -client -connect=127.0.0.1 -port=2367 -nosound "-mod=Expansion\beta;Expansion\beta\Expansion" "-mod=@DayzOverwatch;@Dayz_Epoch" -cpuCount=2 -name=HeadlessClient -profiles=HeadlessClient

starupHC.bat (overpoch)

 

 

Do i need to change something in my .bat file?

Because my server is running. The debug monitor from your files are showing on the screen; I have no errors in my rpt log; In the player list there is a "headlessclient" in the Civil category.

But my number of zombies is still limited to the default amount of zombies.

 

 

This is my bat file

@echo off
start "arma2" /min "Expansion\beta\arma2OverPoch.exe" -port=2342 "-config=instance_11_Chernarus\config.cfg" "-cfg=instance_11_Chernarus\basic.cfg" "-profiles=instance_11_Chernarus" -name=instance_11_Chernarus "-mod=@DayzOverwatch;@DayZ_Epoch;@DayZ_Epoch_Server;"
Link to comment
Share on other sites

But my number of zombies is still limited to the default amount of zombies.

 

Don't forget that something like this needs to be initialized by the HC:  I put it in my main mission init.sqf normally.  

if (!isServer && !hasInterface) then { // headless client processing this
	dayz_maxLocalZombies = 80; // Default = 40
	dayz_maxGlobalZombiesInit = 80;
	dayz_maxGloabZombiesIncrease = 20;
	dayz_maxZeds = 1000;
}; // normal player clients will get a different set of variables with same name

The variables are normally set in z\addons\dayz_code\init\variables.sqf :

if(isNil "dayz_maxLocalZombies") then {
	dayz_maxLocalZombies = 15;
};
if(isNil "dayz_maxGlobalZombiesInit") then {
	dayz_maxGlobalZombiesInit = 15;
};
if(isNil "dayz_maxGlobalZombiesIncrease") then {
	dayz_maxGlobalZombiesIncrease = 5;
};
if(isNil "dayz_maxZeds") then {
	dayz_maxZeds = 500;

So, if you leave them out of any custom HC initializations they will be initialized anyway to the default values in z\addons\dayz_code\init\variables.sqf

 

But you can override them before or after z\addons\dayz_code\init\variables.sqf because the logic used in z\addons\dayz_code\init\variables.sqf is "if value already set, then don't change it"

 

The way these variables work (I think ... *fingers crossed*) is never more than dayz_maxLocalZombies is allowed to be controlled by any one player client (I think I tweaked this for HC, but ppl may want to do a code review).

Then, the max number of zombies allowed in the game is dayz_maxZeds or (dayz_maxGlobalZombiesInit + (#of players - 1)*dayz_maxGlobalZombiesIncrease) , whichever is lesser.

 

Caution: if you just decide to make the numbers for the HC and also player clients very high, then if HC goes down, zed spawn switches back to player client spawn and control (or at least it does in my original code) and you can overload the player clients and/or cause worse network based lag than before your server went HC. 

Link to comment
Share on other sites

Don't forget that something like this needs to be initialized by the HC:  I put it in my main mission init.sqf normally.  

if (!isServer && !hasInterface) then { // headless client processing this
	dayz_maxLocalZombies = 80; // Default = 40
	dayz_maxGlobalZombiesInit = 80;
	dayz_maxGloabZombiesIncrease = 20;
	dayz_maxZeds = 1000;
}; // normal player clients will get a different set of variables with same name

The variables are normally set in z\addons\dayz_code\init\variables.sqf :

if(isNil "dayz_maxLocalZombies") then {
	dayz_maxLocalZombies = 15;
};
if(isNil "dayz_maxGlobalZombiesInit") then {
	dayz_maxGlobalZombiesInit = 15;
};
if(isNil "dayz_maxGlobalZombiesIncrease") then {
	dayz_maxGlobalZombiesIncrease = 5;
};
if(isNil "dayz_maxZeds") then {
	dayz_maxZeds = 500;

So, if you leave them out of any custom HC initializations they will be initialized anyway to the default values in z\addons\dayz_code\init\variables.sqf

 

But you can override them before or after z\addons\dayz_code\init\variables.sqf because the logic used in z\addons\dayz_code\init\variables.sqf is "if value already set, then don't change it"

 

The way these variables work (I think ... *fingers crossed*) is never more than dayz_maxLocalZombies is allowed to be controlled by any one player client (I think I tweaked this for HC, but ppl may want to do a code review).

Then, the max number of zombies allowed in the game is dayz_maxZeds or (dayz_maxGlobalZombiesInit + (#of players - 1)*dayz_maxGlobalZombiesIncrease) , whichever is lesser.

 

Caution: if you just decide to make the numbers for the HC and also player clients very high, then if HC goes down, zed spawn switches back to player client spawn and control (or at least it does in my original code) and you can overload the player clients and/or cause worse network based lag than before your server went HC. 

 

Yes, i did everything like the tutorial. But it just doesn't work.

I don't know if i did anything wrong.. These are my files i've changed:

 

init.sqf

//Load in compiled functions


hc_debug = true; //RPT logging and hint messages
if (!isServer && !hasInterface) then { // headless client settings
    dayz_maxLocalZombies = 80; // Default = 40
    dayz_maxGlobalZombiesInit = 80;
    dayz_maxGloabZombiesIncrease = 20;
    dayz_maxZeds = 1000;
}; // normal player clients will get a different set of variables with same name


call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\variables.sqf"; //Initilize the Variables (IMPORTANT: Must happen very early)
progressLoadingScreen 0.1;
call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\publicEH.sqf"; //Initilize the publicVariable event handlers
progressLoadingScreen 0.2;
call compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\setup_functions_med.sqf"; //Functions used by CLIENT for medical
progressLoadingScreen 0.4;


if (isServer || hasInterface) then {
call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf";             //Compile regular functions
call compile preprocessFileLineNumbers "compiles.sqf";
} else {
call compile preprocessFileLineNumbers "hc\Headless_Client\compilesHC.sqf";
};


progressLoadingScreen 0.5;
fnc_usec_selfActions = compile preprocessFileLineNumbers "fn_selfActions.sqf";
call compile preprocessFileLineNumbers "server_traders.sqf"; //Compile trader configs
call compile preprocessFileLineNumbers "Nuke\Settings.sqf";


diag_log ("starting customization");
call compile preprocessFileLineNumbers "hc\initHC.sqf"; // fixes and HC stuff
diag_log ("ending customization");


progressLoadingScreen 1.0;


"filmic" setToneMappingParams [0.153, 0.357, 0.231, 0.1573, 0.011, 3.750, 6, 4]; setToneMapping "Filmic";


if (isServer) then {
call compile preprocessFileLineNumbers "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\dynamic_vehicle.sqf";
//Compile vehicle configs
//Custom map 
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\aircraft.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\balota.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\basebor.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\basedichina.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\basenovy.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\grave.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\kamenka.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\krasno.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\northeast.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\skal.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\vybor.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\zeleno.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\hemp.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\hemp2.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\hemp3.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\trader.sqf";


// Add trader citys
_nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\mission.sqf";
_serverMonitor =  [] execVM "\z\addons\dayz_code\system\server_monitor.sqf";
execVM "Nuke\server_Nuke.sqf";
};


if (!isDedicated && hasInterface) then {
//Conduct map operations
0 fadeSound 0;
waitUntil {!isNil "dayz_loadScreenMsg"};
dayz_loadScreenMsg = (localize "STR_AUTHENTICATING");


//Run the player monitor
_id = player addEventHandler ["Respawn", {_id = [] spawn player_death;}];
_playerMonitor =  [] execVM "\z\addons\dayz_code\system\player_monitor.sqf";


//Lights
//[false,12] execVM "\z\addons\dayz_code\compile\local_lights_init.sqf";


execVM "Nuke\Effects\effects.sqf";
["elevator"] execVM "elevator\elevator_init.sqf";
execVM "service_point\service_point.sqf";
[] execVM "spawn.sqf";
//[] execVM "scripts\activeCombat.sqf";
[] execVM "hc\debugM.sqf";
};

 

 

mission.sqm

class Groups
{
items=3;
class Item0
{
......
};
class Item1
{
side="LOGIC";
class Vehicles
{
items=1;
class Item0
{
position[]={-143.93861,0.52647489,2319.5012};
id=50;
side="LOGIC";
vehicle="FunctionsManager";
leader=1;
lock="UNLOCKED";
skill=0.60000002;
};
};
};
class Item2 //don't forget to change the total number of items in class Groups
{
side="CIV";
class Vehicles
{
items=1;
class Item0
{
position[]={7839,381,8414};
id=0;
side="CIV";
vehicle="Survivor1_DZ";
player="PLAYER COMMANDER";
skill=0.60000002;
text="HeadlessClient";
init="this allowDamage false";
description="HeadlessClient";
name="HeadlessClient";
forceHeadlessClient=1;
};
};
};
};

 

 

.bac (to start server)

@echo off
start "arma2" /min "Expansion\beta\arma2OverPoch.exe" -port=2342 "-config=instance_11_Chernarus\config.cfg" "-cfg=instance_11_Chernarus\basic.cfg" "-profiles=instance_11_Chernarus" -name=instance_11_Chernarus;

And this is the directory of my hc folder

MPMissions\DayZ_Epoch_11.Chernarus\hc

I don't know what is missing to make it work. Everything seems to be the same as the files from taytay.

Hope you can help me, but, thanks for the attention with me. =D

Link to comment
Share on other sites

 

Yes, i did everything like the tutorial. But it just doesn't work.

I don't know if i did anything wrong.. These are my files i've changed:

 

init.sqf

//Load in compiled functions


hc_debug = true; //RPT logging and hint messages
if (!isServer && !hasInterface) then { // headless client settings
    dayz_maxLocalZombies = 80; // Default = 40
    dayz_maxGlobalZombiesInit = 80;
    dayz_maxGloabZombiesIncrease = 20;
    dayz_maxZeds = 1000;
}; // normal player clients will get a different set of variables with same name


call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\variables.sqf"; //Initilize the Variables (IMPORTANT: Must happen very early)
progressLoadingScreen 0.1;
call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\publicEH.sqf"; //Initilize the publicVariable event handlers
progressLoadingScreen 0.2;
call compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\setup_functions_med.sqf"; //Functions used by CLIENT for medical
progressLoadingScreen 0.4;


if (isServer || hasInterface) then {
call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf";             //Compile regular functions
call compile preprocessFileLineNumbers "compiles.sqf";
} else {
call compile preprocessFileLineNumbers "hc\Headless_Client\compilesHC.sqf";
};


progressLoadingScreen 0.5;
fnc_usec_selfActions = compile preprocessFileLineNumbers "fn_selfActions.sqf";
call compile preprocessFileLineNumbers "server_traders.sqf"; //Compile trader configs
call compile preprocessFileLineNumbers "Nuke\Settings.sqf";


diag_log ("starting customization");
call compile preprocessFileLineNumbers "hc\initHC.sqf"; // fixes and HC stuff
diag_log ("ending customization");


progressLoadingScreen 1.0;


"filmic" setToneMappingParams [0.153, 0.357, 0.231, 0.1573, 0.011, 3.750, 6, 4]; setToneMapping "Filmic";


if (isServer) then {
call compile preprocessFileLineNumbers "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\dynamic_vehicle.sqf";
//Compile vehicle configs
//Custom map 
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\aircraft.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\balota.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\basebor.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\basedichina.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\basenovy.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\grave.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\kamenka.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\krasno.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\northeast.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\skal.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\vybor.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\zeleno.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\hemp.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\hemp2.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\hemp3.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\map\trader.sqf";


// Add trader citys
_nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\mission.sqf";
_serverMonitor =  [] execVM "\z\addons\dayz_code\system\server_monitor.sqf";
execVM "Nuke\server_Nuke.sqf";
};


if (!isDedicated && hasInterface) then {
//Conduct map operations
0 fadeSound 0;
waitUntil {!isNil "dayz_loadScreenMsg"};
dayz_loadScreenMsg = (localize "STR_AUTHENTICATING");


//Run the player monitor
_id = player addEventHandler ["Respawn", {_id = [] spawn player_death;}];
_playerMonitor =  [] execVM "\z\addons\dayz_code\system\player_monitor.sqf";


//Lights
//[false,12] execVM "\z\addons\dayz_code\compile\local_lights_init.sqf";


execVM "Nuke\Effects\effects.sqf";
["elevator"] execVM "elevator\elevator_init.sqf";
execVM "service_point\service_point.sqf";
[] execVM "spawn.sqf";
//[] execVM "scripts\activeCombat.sqf";
[] execVM "hc\debugM.sqf";
};

 

 

mission.sqm

class Groups
{
items=3;
class Item0
{
......
};
class Item1
{
side="LOGIC";
class Vehicles
{
items=1;
class Item0
{
position[]={-143.93861,0.52647489,2319.5012};
id=50;
side="LOGIC";
vehicle="FunctionsManager";
leader=1;
lock="UNLOCKED";
skill=0.60000002;
};
};
};
class Item2 //don't forget to change the total number of items in class Groups
{
side="CIV";
class Vehicles
{
items=1;
class Item0
{
position[]={7839,381,8414};
id=0;
side="CIV";
vehicle="Survivor1_DZ";
player="PLAYER COMMANDER";
skill=0.60000002;
text="HeadlessClient";
init="this allowDamage false";
description="HeadlessClient";
name="HeadlessClient";
forceHeadlessClient=1;
};
};
};
};

 

 

.bac (to start server)

@echo off
start "arma2" /min "Expansion\beta\arma2OverPoch.exe" -port=2342 "-config=instance_11_Chernarus\config.cfg" "-cfg=instance_11_Chernarus\basic.cfg" "-profiles=instance_11_Chernarus" -name=instance_11_Chernarus;

And this is the directory of my hc folder

MPMissions\DayZ_Epoch_11.Chernarus\hc

I don't know what is missing to make it work. Everything seems to be the same as the files from taytay.

Hope you can help me, but, thanks for the attention with me. =D

 

Check the experimental branch on the github mate. With the default settings I'm seeing crazy numbers of zombies in elektro after 10 mins of standing there.. Just remember man this this is more then likely really buggy still. Also cpu usage of the headless on my poor little server is crazy high.

https://www.youtube.com/watch?v=OiRofcosrvE

Link to comment
Share on other sites

 

Yes, i did everything like the tutorial. But it just doesn't work.

I don't know if i did anything wrong.. These are my files i've changed:

 

....

 

 

.bac (to start server)

@echo off
start "arma2" /min "Expansion\beta\arma2OverPoch.exe" -port=2342 "-config=instance_11_Chernarus\config.cfg" "-cfg=instance_11_Chernarus\basic.cfg" "-profiles=instance_11_Chernarus" -name=instance_11_Chernarus;

 

Confirming:

You have three instances of Arma2 going on, right?

1)  Arma2 server executable

2)  Arma2 client executable setup as headless client

3)  Arma2 client executable setup as player client

 

My advice:  when things fail, go back to a setup that is exactly known working and change one thing or one file at a time.  If you have to, make another full Arma2 directory to set up exactly as a tutorial or known good set of files from ppl who already have it working.  After you have personal experience with a working HC system, you can add your own special sauce.

Link to comment
Share on other sites

Confirming:

You have three instances of Arma2 going on, right?

1)  Arma2 server executable

2)  Arma2 client executable setup as headless client

3)  Arma2 client executable setup as player client

 

My advice:  when things fail, go back to a setup that is exactly known working and change one thing or one file at a time.  If you have to, make another full Arma2 directory to set up exactly as a tutorial or known good set of files from ppl who already have it working.  After you have personal experience with a working HC system, you can add your own special sauce.

 

Well, as far as i know, i'm only running the instance for the arma2overpoch.exe (server).

I'm still new in this kind of thing, so if you can give a tip about what to do, maybe i can do this.

 

Because i'm almost sure this is the problem.. In the lobby i have the civilian category clickable, but there is no 'headlessclient' selected, only a reserved slot with that name.

Also in the bluefor, it shows 1/1 or 10/10 (depends on the amount of player). In the civilian this part is blank.

 

I think i'm not calling the Headlessclient properly.

 

Thanks for the attention.

Link to comment
Share on other sites

HW,

 

To get HC working you need an HC (headless client ... meaning a normal instance of the Arma2OA.exe) started using a command line that instructs it to act like a headless client.  This should occur some time after you start your server.  

 

An example from my initial post from wayback when: ()

 

 

my server startup options:

"Expansion\beta\arma2oaserver.exe" -port=2325 -cpuCount=4 "-config=instance_7_Lingor\config.cfg" "-cfg=instance_7_Lingor\basic.cfg" "-profiles=instance_7_Lingor" -name=instance_7_Lingor "-mod=%_ARMA2PATH%;Expansion;ca;Expansion\beta;Expansion\beta\Expansion;@lingor;@DayZ_Epoch;@DayZ_Epoch_Server;"

 

excerpt from config.cfg:

requiredBuild = 103718;
localclient[]={"127.0.0.1"};
 
headless client startup:  (sorry, still some steam path stuff here ... but you should get the idea)
"%_ARMA2OAPATH%\Expansion\beta\ARMA2OA.exe" -skipIntro -nosplash -showScriptErrors -noPause -client -connect=127.0.0.1 -port=2325 -nosound "-mod=%_ARMA2PATH%;EXPANSION;ca" "-mod=Expansion\beta;Expansion\beta\Expansion" "-mod=@lingor;@dayz_epoch" -cpuCount=2 -name=HeadlessClient -profiles=HeadlessClient

 

Hang in there.  Learning all the horribleness of Arma server/client stuff is like learning to swim in shark infested waters, in the dark, without a life jacket.  You will be so glad when you get to shore, but you will be exhausted.

Link to comment
Share on other sites

Any way to stop the headless client starving? he takes no damage and is rocking out the zeds/loot, but the poor chap seems to starve..  having to heal him is a pain :)

Is this perhaps a side effect of running the player_monitor for the HC?  I read an earlier post that the HC was getting kicked from the server the original way that EHC had been setup.  Taytay or david, is it still a requirement?

 

Goober

Link to comment
Share on other sites

Is this perhaps a side effect of running the player_monitor for the HC?  I read an earlier post that the HC was getting kicked from the server the original way that EHC had been setup.  Taytay or david, is it still a requirement?

 

Goober

The player monitor isn't being ran on it any more so this shouldn't happen.

You need to replace the if (!isDedicated) then { line with if (!isDedicated && hasInterface) then { in your missions init.sqf  to stop it executing on it.

 

In the old version we was having to run it with the player monitor as something in the compiles.sqf was making it get kicked without any error messages or warnings, the work around was using the playermonitor on it. I did make a script for it that would remove all damage handlers and also would loop his blood every 5 mins, but this shouldn't be needed any more. Another side effect of running the player monitor seemed to be increased cpu usage.

Link to comment
Share on other sites

Zed spawning works great. however the loot just stops spawning. Does this control item loot as well as zed spawns?

 

 

if it does may I suggest you explain how to return loot spawning back to the server for those of us like myself using custom loot spawning etc.

 

 

edit*

 

after an hour the numbers of zeds and loot starts to drop, till at 2hrs there is nothing. forget this, now realise its because of a flaw in 112555 not deleting weaponholders properly.

Link to comment
Share on other sites

Really don't understand why you and the handful of other people working on headless clients don't all just work together? So much more work could be achieved and bug fixes wouldn't be a problem then really. Please take this into consideration and reach out to all the others working on the same project would make so much more sense and we all would probably have a seamless headless client now. Either way appreciate what you and the rest of the guys have done keep up the good work!

Link to comment
Share on other sites

 still can't run the HC, zeds will spawn on it etc. but for some reason you will be surrounded by 50 zeds and they all just despawn right in front of your eyes. any ideas?
 they, spawn. they chase you, you fight them etc, they despawn, they respawn and the cycle starts again. they last about 5 minutes, despawn, take about 1 minute to spawn again, then 5 minutes later they despawn.
Link to comment
Share on other sites

I think zombies stop spawning because dayz_spawnZombies gets raised by the script, but it never drops again. In the original fsm for zombies, it drops as soon as zombies get deleted. in the modified fsm the command has been removed.

11ade43a44.png

Link to comment
Share on other sites

I am well into a code review for Vanilla 1.8.1 and HC compatibility.  There are lots of fun changes in the dayz code since initial publication of the HC scripts.  There are a ton more references to "player" which is normally a problem for an HC controlled zombie because an HC zombie's "player" is the HC itself.  There is evidence of one variable in particular that is indicative and that is 'dayz_canDelete' which is in z\Addons\dayz_code\init\variables.sqf.

 

So, it is no wonder strange things are happening.

 

To complicate matters, the dayz coding team are adding more and more function to the client like zombies attacking vehicles.  That sounds nice, but means additional signaling between the HC and affected player as to when to tell the affected player that they have been ejected from the car.

 

These are examples of why this particular project isn't just a snap-on mod.  We are changing the fundamental way the whole system operates and it is a custom fix every time dayz gets a version bump.

 

To complicate matters, Steam has made it even more difficult for development.  I have to run my HC in a seperate memory space from my player client with which I test, and forget about multiple keys (I suppose I could get another Steam account).

Link to comment
Share on other sites

Good to know Goober. As for the whole steam thing, I wish they had just used the browser and allowed standalone clients to get the patches by more traditional means. I'm pretty pissed that thanks to this bullshit I now have 3 steam accounts. and that I can only run one headless client per machine, which is utter shite when I can run more than one server.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
×
×
  • Create New...