A faster login process for DayZ

Fred41 its me again, just come to say that your "publicEH_conservative" has fixed the issues i was having with broken legs :)
 
Fred41 its me again, just come to say that your "publicEH_conservative" has fixed the issues i was having with broken legs :)

... thanks much for your report, there must something in the experimental EH a bit to risky ...

I moved the "usecMorphine" EH back the server and client section in publicEH.sqf.
If you like, you can try with the experimental again.
 
I would want to investigate this myself but our server got very popular very quickly with all he cool features we added so naturally we got influx of hackers to deal with. Would love to know what you find out.
.. ok, i checked this "local event",
Results:
1. it only occurs if player disconnects/died
2. the .fsm terminates immediate
3. we can't eliminate this (diag_log message), because the related file is not in community hand
 
If we can't get the file changed per say in offical dayz mod....

Might be worth to see if anyone map maintainer i.e 1 of the tavianna versions / celle etc, would be up for testing the change out on there map
At the very least we will get an idea of effect it has
 
Interesting. will it terminate started fsm immediately on busy server? I doubt. Also the reason it does it when player disconnects is because zombies spawned by player change locality. So if 40 zombies were spawned by player it will start 40 FSMs at once as zombies seem to change locality at once. And if 5 players died almost at the same time it is 200 deleteVehicle events combined with 200 execFSM events on already busy server. In my experience server never recovers from this temporary overload.

Waste of server resources. Razor replied about dayz folder, apparently Rocket doesnt want us to have it. Surprised? I'm not.

... hmm..., i think you are not wrong here, it could be hard for the scheduler to get a load of 200 additional fsm's in a short period, if this occurs.
And you could be right too assuming, that the fsm will not be immediate terminating if the scheduler is heavy loaded (up to some seconds).
So what could we do, to avoid the useless execution of the zombie_agent.fsm on server when locality changes?
Afaik, overwriting or removing this type of eventhandlers per script is not an option.

Just to test the effect, you could try the following:
(Make a custom dayz.pbo and switch signature check off for testing)

In your CfgVehicles.hpp file change
from:
local = "diag_log ('Locality Event');if(_this select 1) then {[(position (_this select 0)),(_this select 0),true] execFSM '\z\AddOns\dayz_code\system\zombie_agent.fsm'};";

to:
local = "if((_this select 1) && isServer) then {[_this select 0] call zombie_findOwner;}";

This doesn't generate a second hand zombie on client, but for testing the effect on server it should be ok.
 
Hopefully Rocket removes it all together for the time being for the next build

I found that it is possible to redefine config classes.

So if we, for example, just would change the "Locality Event" message, we just have to do the following:

In our cfgVehicles.hpp (dayz_code) we insert the following redefing code as first define in class "CfgVehicles":

Code:
    class Citizen1;    // External class reference
    class zZombie_Base : Citizen1 {
        scope = public;
        glassesEnabled = 0;
        vehicleClass = "Zombie";
        displayName = "Zombie";
        fsmDanger = "";
        fsmFormation = "";
        zombieLoot = "civilian";
        moves = "CfgMovesZombie";
        isMan = false;
        weapons[] = {};
        magazines[] = {};
        sensitivity = 4;    // sensor sensitivity
        sensitivityEar = 2;
        identityTypes[] = {"zombie1", "zombie2"};
 
        class TalkTopics {};
        languages[] = {};
 
        class Eventhandlers {
            init = "_this call zombie_initialize;";
            local = "diag_log ('Just for killzone_kid :P');if(_this select 1) then {[(position (_this select 0)),(_this select 0),true] execFSM '\z\AddOns\dayz_code\system\zombie_agent.fsm'};";
        };
 
        class HitPoints {
            class HitHead {
                armor = 0.3;
                material = -1;
                name = "head_hit";
                passThrough = true;
                memoryPoint = "pilot";
            };
 
            class HitBody : HitHead {
                armor = 1.6;
                name = "body";
                memoryPoint = "aimPoint";
            };
 
            class HitSpine : HitHead {
                armor = 1.6;
                name = "Spine2";
                memoryPoint = "aimPoint";
            };
 
            class HitHands : HitHead {
                armor = 0.5;
                material = -1;
                name = "hands";
                passThrough = true;
            };
 
            class HitLArm : HitHands {
                name = "LeftArm";
                memoryPoint = "lelbow";
            };
 
            class HitRArm : HitHands {
                name = "RightArm";
                memoryPoint = "relbow";
            };
 
            class HitLForeArm : HitHands {
                name = "LeftForeArm";
                memoryPoint = "lwrist";
            };
 
            class HitRForeArm : HitHands {
                name = "RightForeArm";
                memoryPoint = "rwrist";
            };
 
            class HitLHand : HitHands {
                name = "LeftHand";
                memoryPoint = "LeftHandMiddle1";
            };
 
            class HitRHand : HitHands {
                name = "RightHand";
                memoryPoint = "RightHandMiddle1";
            };
 
            class HitLegs : HitHands {
                name = "legs";
                memoryPoint = "pelvis";
            };
 
            class HitLLeg : HitHands {
                name = "LeftLeg";
                memoryPoint = "lknee";
            };
 
            class HitLLegUp : HitHands {
                name = "LeftUpLeg";
                memoryPoint = "lfemur";
            };
 
            class HitRLeg : HitHands {
                name = "RightLeg";
                memoryPoint = "rknee";
            };
 
            class HitRLegUp : HitHands {
                name = "RightUpLeg";
                memoryPoint = "rfemur";
            };
        };
    };

That way, we just overwrites the define for "class zZombie_Base" from dayz.pbo.

Advantage: we don't have to wait for Rocket :)

... nothing is impossible ...
 
UPDATE:
In server_cleanup.fsm corrected an codeline compatible with 1.7.5, back to 1.7.4.4 compatibility.
Sorry for my misstake :/
 
hello,
I am quite confused about which file is used for what. The readme in github is up to date?
Yes or no:
1/ "faster login" is built in 1.7.4.4, so I don't need to patch server_functions.sqf and put a modified publicEH.sqf in the mission file
2/ "better cleanup" is in server_cleanup.fsm only, I don't need to use any modified publicEH.sqf, and the broken leg problem is solved.
 
hello,
I am quite confused about which file is used for what. The readme in github is up to date?
Yes or no:
1/ "faster login" is built in 1.7.4.4, so I don't need to patch server_functions.sqf and put a modified publicEH.sqf in the mission file
2/ "better cleanup" is in server_cleanup.fsm only, I don't need to use any modified publicEH.sqf, and the broken leg problem is solved.

1/ no, a faster login is already in 1.7.4.4, the "instant login" will be in 1.7.5 when finished, or here now (readme.md is up to date)

2/ yes, yes, "brocken legs" was a earlier problem with the first publicEH.sqf and is solved with the current version
 
ok, thanks for your reply.
I assume that "current version" is the improved one, since some players reported me some broken legs problems with the current conservative one.
 
ok, thanks for your reply.
I assume that "current version" is the improved one, since some players reported me some broken legs problems with the current conservative one.

... hmm ..., broken legs with the "conservative" publicEH.sqf? That is a bit surprising for me.
There was a early "experimental" version, where i got some reports of healed broken legs, which appear broken again, with immediate logout/login (db update to late or incomplete).

The "improved" version is the newest and most resource saving at all and SHOULD cause no problems.
But it is new and still evolving (just now updated) and i got no reports at all, so i can't be absolutly sure that it really cause no problems.
If your players report problems with this version, please report it here.

If you really have problems with the "conservative" publicEH, i think the reason for could be that your server is heavy overloaded or very slow db timing.
In this case, i can only recommend, restart more often and/or try to speed up you db . Maybe lowering the max player number helps too.
 
fred. Do you got any good advice to speed up the DB ? Like, what does really improve the speeds?
I run on 8 GB ram on my machine and a quadcore
 
Back
Top