Vampurica / DZMS-DayZMissionSystem

A logic and useability rewrite of the DayZChernarus Mission System
17 stars 22 forks source link

Cleanup Error #27

Closed Vampurica closed 10 years ago

Vampurica commented 10 years ago

Have people on Opendayz telling me that the newest version they are getting killed by the cleanup when getting in a vehicle.

DZMSSetupVehicle isn't running correctly or something is effecting it.

Vampurica commented 10 years ago

Unable to duplicate this so far.

mudzereli commented 10 years ago

i haven't had problems with this either -- they should be safe from the default epoch cleanup from being in the epoch safe vehicle array. possibly some other 3rd party antihack (i run infistar as well with no problems)

Uro1 commented 10 years ago

Running this on Epoch 1.0.2.4 Client + 1.0.2.4a server files, have DZAI, WAI, DZMS and Infistar (latest) DZAI for static AI w/ respawn. WAI for Heli + Vehicle Patrols DZMS for well, DZMS :) DZMS VehicleSave is off.

Tried the following: DZAI killing a hacker line in = death on vehicle entry. Put stock epoch hacker line in = death on vehicle entry.

mudzereli commented 10 years ago
DZAI killing a hacker line in = death on vehicle entry.
Put stock epoch hacker line in = death on vehicle entry.

not sure what you mean by this -- in the server log does it give the KILLING A HACKER error?

Uro1 commented 10 years ago

yep

What I mean by that is that I have tested with vanilla "killing a hacker" line as well as one modded for dzai, I put DZMS into the line as a test with no effect.

None of the other AI im running spawn enterable vehicles. I'll test later today with the other AI turned off one by one to see if they are messing with DZMS.

In Epoch since 1.0.4* the killing a hacker line of code is called through the FSM from init/server_functions.sqf, here's the server_checkHackers called within the above file:

http://pastebin.com/Zx08t27z

Here's a snippet of output from my RPT log:

0:27:45 "[DZMS]: Major SM1 Weapon Cache Mission has Ended." 0:28:37 "CLEANUP: KILLING A HACKER Uro [Admin] B 1-1-C:1 (Uro) REMOTE IN SUV_Blue_DZE4" 0:28:38 WARNING: Function 'name' - Uro is dead 0:28:38 "PDEATH: Player Died 145970182" 0:28:58 "ERROR: server_playerSync: Cannot Sync Player Uro [236]. Position in debug! [125.806,158.213,45.8783]"

mudzereli commented 10 years ago

is this line in your server report log anywhere?

[DZMS]: DayZ Epoch Detected! Some Scripts Adjusted!

Vampurica commented 10 years ago

Probably best if you post an RPT from the point of starting the server to getting in a vehicle that blows up, and then respawning.

Uro1 commented 10 years ago

Hmm I dont seem to have that line mudzereli

Could it be, that due to us running Epoch Taviana, its detecting tavi in favour of Epoch? Thus not loading the epoch specific cleanup?

here's my RPT (stripped tavi model errors as its un-needed spammage. http://pastebin.com/58rJUWMG

Uro1 commented 10 years ago

Created a workaround so vehicles no longer explode without requiring any editing of server_functions.sqf

The Fix: In DZMSConfig.sqf

Add this line:

DZMSEpoch = true;

In DZMSInit.sqf

Go to line 92 Look for this line:

if (_modVariant == "@dayz_epoch") then {DZMSEpoch = true;} else {DZMSEpoch = false;};

Comment it out, so it looks like this:

// if (_modVariant == "@dayz_epoch") then {DZMSEpoch = true;} else {DZMSEpoch = false;};

This way DZMS is forced to run Epoch settings regardless of map/mod.

Kinda screws the Mod Auto-detection feature, buy hey it works for me :)

Vampurica commented 10 years ago

@Uro1 can you open the addon folder your epoch is in and post the contents of your mod.cpp?

Vampurica commented 10 years ago

It should be @dayz_epoch. @AmberHelios

AmberHelios commented 10 years ago

yep changed it now forget that github removes the _ in the text

Uro1 commented 10 years ago

dir = "@DayZ_Epoch"; name = "DayZ Epoch 1.0.4.2"; actionName = "Website"; picture = "dayz_logo_ca.paa"; action = "http://www.dayzepoch.com";

:)

Why do i feel like deja vu? :D

Vampurica commented 10 years ago

Well lets figure this out. Underneath this line:

if (_modVariant == "@dayz_epoch") then {DZMSEpoch = true;} else {DZMSEpoch = false;};

Put these lines:

_modName = toLower( getText (configFile >> "CfgMods" >> "DayZ" >> "name"));
diag_log text format ["[DZMS]: DEBUG: Mod Variant:%1 / Mod Name:%2",_modVariant,_modName];

This will tell us exactly why it isn't recognizing epoch.

Vampurica commented 10 years ago

And of course send us the RPT after you are in game for 5mins or so.

Uro1 commented 10 years ago

Looks like its only detecting the first mod loaded, in the case of Epoch w/ Taviana, you have to load Taviana first, i.e. -mod=@Taviana;@Dayz_epoch;@Dayz_Epoch_Server;

Obviously any mod that has the map files included within Epoch (Napf/Sauerland/etc) will work as theres no mod line for those maps.

Requested RPT Log: http://pastebin.com/b396Y4dP

mudzereli commented 10 years ago

Seems to me it would work like other config entries in that the last one loaded would overwrite the others.

This is the one from epoch, my guess is Tavi does the same thing but is overwriting the Epoch one.

class CfgMods {
    class DayZ {
        dir = "@DayZ_Epoch";
        name = "DayZ Epoch";
        picture = "z\addons\dayz_code\gui\dayz_logo_ca.paa";
        hidePicture = 0;
        hideName = 0;
        action = "http://www.dayzepoch.com";
        version = 1.0.4.2;
        hiveVersion = 0.96;
    };
};

based on the above, this code seems to be fine if you are only using vanilla epoch:

// We need to detect Epoch to change the hive call for vehicle saving
// Epoch doesn't have hive 999 calls and uses 308 publish instead
_modVariant = toLower( getText (configFile >> "CfgMods" >> "DayZ" >> "dir"));
if (_modVariant == "@dayz_epoch") then {DZMSEpoch = true;} else {DZMSEpoch = false;};
Vampurica commented 10 years ago

I think I can fix this.

I'll throw together a branch.

mudzereli commented 10 years ago

maybe don't even need to check, just something like this in DZMSFunctions.sqf > DZMSProtectObj

if(!(isNil "PVDZE_serverObjectMonitor")) then {
    PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor, _object];
};
if(!(isNil "dayz_serverObjectMonitor")) then {
    dayz_serverObjectMonitor set [count dayz_serverObjectMonitor, _object];
};
Vampurica commented 10 years ago

That would work there, but that wouldn't fix vehicle saving. I want to do an object monitor nil check in the init to turn epoch on or off instead.

Vampurica commented 10 years ago

c9fd4961a1c8c211ad382dd5eabff0624c372106 is an attempted fix. Try it out @Uro1

Uro1 commented 10 years ago

Tested on Epoch Taviana.

23:28:51 "[DZMS]: Starting DayZ Mission System." 23:28:51 "[DZMS]: DZAI Found! Using DZAI's Relations!" 23:28:51 "[DZMS]: WickedAI Found! Using WickedAI's Relations!" 23:28:51 "[DZMS]: Multiple Relations Detected! Unwanted AI Behaviour May Occur!" 23:28:51 "[DZMS]: If Issues Arise, Decide on a Single AI System! (DayZAI, SargeAI, or WickedAI)" 23:28:51 "[DZMS]: Currently Running Version: RC1.1" 23:28:51 "[DZMS]: Mission and Extended Configuration Loaded!" 23:28:51 "[DZMS]: tavi Detected. Map Specific Settings Adjusted!" 23:28:51 [DZMS]: DEBUG: Mod Variant:dayz / Mod Name:dayz 23:28:51 "[DZMS]: DayZ Epoch Detected! Some Scripts Adjusted!" 23:28:51 "[DZMS]: Mission Functions Script Loaded!" 23:28:51 "[DZMS]: Major Mission Clock Starting!" 23:28:51 "[DZMS]: Minor Mission Clock Starting!" 23:28:51 "[DZMS]: Mission Marker Loop for JIPs Starting!"

All working, no vehicle explosions.

I'll turn vehicle saving on and re-test that tomorrow :)

Vampurica commented 10 years ago

If vehicle saving is working then I'll close this.

Vampurica commented 10 years ago

Actually as long as it detects Epoch then vehicle saving is fine. Closing this. If you have any other issues @Uro1 then open a new issue.