Jump to content

[Release] Multiple Character Support (now compatible with Epoch 1.0.5.1)


Axe Cop

Recommended Posts

Hey mates,

today I tried to install this mod/script to my Server.

 

I did all how its to be done in yout tutorial.

 

But when I try to join my server I get stuck after the Lobby.

 

My server sais this:

 

19:44:45 "ATTEMPT READ/WRITE: CHILD:100:199833670:"
19:44:45 "ATTEMPT READ/WRITE: CHILD:100:199833670:"
19:44:45 "ATTEMPT READ/WRITE: CHILD:100:199833670:"
19:44:45 "ATTEMPT READ/WRITE: CHILD:100:199833670:"
19:44:45 "ATTEMPT READ/WRITE: CHILD:100:199833670:"
 
I hope you can help me.
 
Greets Ren
Link to comment
Share on other sites

hmm I've seen log entries like that for hive writes, do you use some anti hacks or something that might block the script and write that messages??

also check your HiveExt.log, you should see the CHILD/method 100 call there: "HiveExt: [information] Method: 100 Params: PLAYERID:" and after that the answer from the server with the character data.

Link to comment
Share on other sites

maybe in your cfgdayz folder, how would I know? ^^

it should be in the profiles directory, and that you specify when you start the ArmA2 server, e.g. with a start.bat

@echo off
start "arma2" /min "Expansion\beta\arma2oaserver.exe" -port=2302 "-config=instance_11_Chernarus\config.cfg" "-cfg=instance_11_Chernarus\basic.cfg" "-profiles=instance_11_Chernarus" -name=dayz_epoch "-mod=@DayZ_Epoch;@DayZ_Epoch_Server;" -cpucount=4 -exthreads=5 -showScriptErrors

"-profiles=instance_11_Chernarus" is the place where the HiveExt.log should be...

 

anyway I don't know about linux and how you run the server under linux (WinE or whatever), but I've heard there are some binary incompatible DLL's and you have to use my custom HiveExt.dll, but if the Epoch file works it should to, unless you have a custom build of Epoch and not the official one?

Link to comment
Share on other sites

Well,

 

thats my line for starting the Server

 

export LD_LIBRARY_PATH=.:/usr/lib32:$LD_LIBRARY_PATH;
./epoch -server -mod="@dayz_epoch;@dayz_epoch_server;"
-config="cfgdayz/server.cfg"
-cfg="cfgdayz/basic.cfg"
-port=2302 -beta="expansion/beta;expansion/beta/expansion"
-noSound
-noPause
-world=Chernarus
-profiles=cfgdayz
-name=cfgdayz
-cpucount=4
-exThreads=3
-showscripterrors
-pid=2302.pid 2>&1 | ./writer.pl
 
Link to comment
Share on other sites

ok well it seems this takes longer than I thought to find your problem, you are not giving me all the information.. :D

It's very hard to help you if I have to ask for everything myself and it will just spam this topic I guess...

 

anyway it seems that you are exporting native linux libraries and not using a windows emulation at all, I have no experience with the linux version of Epoch so I don't know how it works but you didn't answer my question if you are using the default Epoch release (for window apparently) or a custom built one with native linux libraries for the Hive, then my DLL is not working off course. (linux libraries usually have an extension like .a or .so rather than .dll if you are not familiar with that)

 

ArmA2 server itself is not the best thing on windows, but if you try to use it with linux you have more problem than answers usually,

Arma2 extensions are not officially supported on linux at all (as far as I know from Bohemia Interactive)..

Link to comment
Share on other sites

How does one clean database character_data table with this addon? Seems like everything I try deletes characters from different slots.

depends what you wanna do!? this mod only add a simple slot-number to the database, that's all..

Link to comment
Share on other sites

depends what you wanna do!? this mod only add a simple slot-number to the database, that's all..

 

Clean dead characters, without losing humanity records. This was working fine but now it deletes some characters.

delete FROM `character_data`
USING character_data, character_data AS tmpcharacter_data
WHERE NOT character_data.CharacterID=tmpcharacter_data.CharacterID
AND character_data.CharacterID<tmpcharacter_data.CharacterID
AND (character_data.PlayerUID=tmpcharacter_data.PlayerUID)
Link to comment
Share on other sites

essentially you just need to keep the last character for every player and slot  (instead of just one character per player like before).

Your SQL query is kinda weird but I think it keeps the last character from every player and obviously doesn't use the slot column (which might be needed to archive what you want).

 

I use a different query in my HiveExt addition to query the the last characters of one player, I think you might be able to just negate that query and use it for all players to remove all old characters.

The query is a little bit more complicated with multiple characters, maybe you can figure something out based on my query (i don't have time or a setup to test it at the moment..)

 

here the query I am using to fetch the last characters for a player: https://github.com/vos/DayZhiveEpoch/blob/master/Hive/Source/HiveLib/DataSource/SqlCharDataSource.cpp#L37-L44

SELECT `CharacterID`, `Slot`, `Worldspace`, `Alive`, `Generation`, `Humanity`, `KillsZ`, `HeadshotsZ`, `KillsH`, `KillsB`, `DistanceFoot`, `Model`, `Infected`, 
TIMESTAMPDIFF(MINUTE,`LastLogin`,NOW()) as `LastLoginDiff`, 
TIMESTAMPDIFF(MINUTE,`Datestamp`,`LastLogin`) as `SurvivalTime` 
FROM `Character_DATA` `cd1` 
INNER JOIN (SELECT MAX(`CharacterID`) `MaxCharacterID` FROM `Character_DATA` WHERE `PlayerUID` = '%s' GROUP BY `Slot`) `cd2` 
ON `cd1`.`CharacterID` = `cd2`.`MaxCharacterID` 
ORDER BY `Slot` 

it uses a subquery to get the last character id for every slot, that is the trick here to achieve this with a single query for all characters.

maybe you can use it somehow, would be easier to use multiple queries though, in your case it should not matter unless you run that query every 10 seconds :D

 

Edit: I just noticed for your purpose you only want to delete dead character I think? my query is more complicated because it need to get the last character for every slot no matter if dead or alive

Edited by Axe Cop
Link to comment
Share on other sites

 

Well,

 

thats my line for starting the Server

 

export LD_LIBRARY_PATH=.:/usr/lib32:$LD_LIBRARY_PATH;
./epoch -server -mod="@dayz_epoch;@dayz_epoch_server;"
-config="cfgdayz/server.cfg"
-cfg="cfgdayz/basic.cfg"
-port=2302 -beta="expansion/beta;expansion/beta/expansion"
-noSound
-noPause
-world=Chernarus
-profiles=cfgdayz
-name=cfgdayz
-cpucount=4
-exThreads=3
-showscripterrors
-pid=2302.pid 2>&1 | ./writer.pl
 

 

Link to comment
Share on other sites

The server is lagging hard when this is added... sometimes players get stuck at waiting for character to create.

 

Get tons of these in the RPT as well - 

 

23:24:55 Server: Object 4:156 not found (message 94)
23:24:55 Server: Object 4:157 not found (message 94)
23:24:55 Server: Object 4:162 not found (message 94)
23:24:55 Server: Object 4:159 not found (message 94)
23:24:55 Server: Object 4:160 not found (message 94)
23:24:55 Server: Object 4:161 not found (message 94)
23:24:55 Server: Object 4:163 not found (message 94)
23:24:55 Server: Object 4:164 not found (message 94)
23:24:55 Server: Object 4:165 not found (message 94)
23:24:55 Server: Object 4:168 not found (message 94)
23:24:55 Server: Object 4:173 not found (message 70)
23:24:55 Server: Object 4:172 not found (message 70)
23:24:55 Server: Object 4:171 not found (message 70)
Link to comment
Share on other sites

I think I'll install this mod over the weekend and have a look at it. Without reading through the entire thread, if your character dies on a server approximately how long do you have to wait before you can use one of the other characters on the same server? Is it possible to recover your gear from your dead character using one of the others? One of the guys I played vanilla DayZ with back in the day used two ArmA 2 / DayZ installs to do something similar to this. If his toon got killed he was literally right back in the game with our group with his back up toon. 

Link to comment
Share on other sites

I think I'll install this mod over the weekend and have a look at it. Without reading through the entire thread, if your character dies on a server approximately how long do you have to wait before you can use one of the other characters on the same server? Is it possible to recover your gear from your dead character using one of the others? One of the guys I played vanilla DayZ with back in the day used two ArmA 2 / DayZ installs to do something similar to this. If his toon got killed he was literally right back in the game with our group with his back up toon. 

 

The answer is right in the original post...

Link to comment
Share on other sites

 can you explain step 1 please not sure how to do this   i use hedi sql          can u do a quick step by step how to add this cheers

You just have to run that SQL query with your Epoch database selected, I don't know how to explain that even more? should be one of the easiest things if you can connect to your database and I have never used heidi SQL so I cant give you specific steps to that. but I am sure there are like 1000 tutorials if I simple google for that now :D

 

firs result form google: http://www.heidisql.com/screenshots.php?which=query

just copy that in there and click on the run button, that should be all!?

Link to comment
Share on other sites

heidi SQL =

 

Select your database

 

click Query

 

Paste this line into the Query

ALTER TABLE `Character_DATA` ADD COLUMN `Slot` TINYINT UNSIGNED NOT NULL DEFAULT 1 AFTER `PlayerUID`;

hit F9 on your Keyboard or The blue play button at the top.( Atleast I think its blue :D )

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
×
×
  • Create New...