Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Bug Reports

Development::Bug Reports Post detailed bug reports and what you would like to see next in the emu here.

Reply
 
Thread Tools Display Modes
  #1  
Old 11-02-2007, 01:26 PM
gernblan
Discordant
 
Join Date: Aug 2006
Posts: 394
Default I hope your corpse rots! ;)

Maybe I am crazy but are player corpse rot timers broken when set to leave corpse?

I mean they just don't rot.

We have 505 players corpses server wide right now and counting, all the way back to the 26th of October (the last time I cleaned out the table).
__________________
--
Keelyeh
Owner, ServerOp and Developer
Jest 4 Server
Linux (Jest3 runs on Fedora, our Dev servers usually run on Ubuntu and/or Gentoo), OC-12 Connection = Hella Fast
Reply With Quote
  #2  
Old 11-02-2007, 05:23 PM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

The timer resets when the zone shuts down.
Reply With Quote
  #3  
Old 11-03-2007, 05:56 AM
John Adams
Demi-God
 
Join Date: Jul 2006
Posts: 1,552
Default

Gernblan, do you make your players retreive their corpses after death, or leave naked corpses? I know you can turn off corpses altogether, but that might not be what you need for your server rules.
Reply With Quote
  #4  
Old 11-03-2007, 07:46 AM
gernblan
Discordant
 
Join Date: Aug 2006
Posts: 394
Default

Quote:
Originally Posted by KLS View Post
The timer resets when the zone shuts down.
Ok that makes sense.

Thanks!
__________________
--
Keelyeh
Owner, ServerOp and Developer
Jest 4 Server
Linux (Jest3 runs on Fedora, our Dev servers usually run on Ubuntu and/or Gentoo), OC-12 Connection = Hella Fast
Reply With Quote
  #5  
Old 11-03-2007, 07:47 AM
gernblan
Discordant
 
Join Date: Aug 2006
Posts: 394
Default

Quote:
Originally Posted by John Adams View Post
Gernblan, do you make your players retreive their corpses after death, or leave naked corpses? I know you can turn off corpses altogether, but that might not be what you need for your server rules.
My server has no death penalty.. we try to leave corpses so that in a raid they can res people back that die... but beyond that corpses have no other use to us.
__________________
--
Keelyeh
Owner, ServerOp and Developer
Jest 4 Server
Linux (Jest3 runs on Fedora, our Dev servers usually run on Ubuntu and/or Gentoo), OC-12 Connection = Hella Fast
Reply With Quote
  #6  
Old 11-03-2007, 07:50 AM
John Adams
Demi-God
 
Join Date: Jul 2006
Posts: 1,552
Default

In that case, could you just put your "rot timer" to something horribly low, since if a raid wipes and does not rez and get back to business within, say, 30 mins, the corpses poof? I understand it's just a maintenance issue for you. When I took the Abyss DB, I was shocked how many dead bodies were lying around, too.
Reply With Quote
  #7  
Old 11-03-2007, 02:35 PM
gernblan
Discordant
 
Join Date: Aug 2006
Posts: 394
Default

Yeah it may come down to that, thanks for the great suggestions!
__________________
--
Keelyeh
Owner, ServerOp and Developer
Jest 4 Server
Linux (Jest3 runs on Fedora, our Dev servers usually run on Ubuntu and/or Gentoo), OC-12 Connection = Hella Fast
Reply With Quote
  #8  
Old 11-04-2007, 02:05 AM
cavedude's Avatar
cavedude
The PEQ Dude
 
Join Date: Apr 2003
Location: -
Posts: 1,988
Default

I think another thing that would help this issue is if the server can be changed so that empty corpses poof once they have been rezzed. I know on GC players rezz, but since corpses don't drop items (yet, haha!) they don't ever loot so the corpses stay until they finally rot.
Reply With Quote
  #9  
Old 11-26-2007, 10:17 AM
LostZaphod
Sarnak
 
Join Date: May 2006
Posts: 43
Default Remove Rotten Corpses

I think the function "LoadPlayerCorpses" is run when a zone is loaded up. If we put a function to check if the corpses have rotted,
it should resolve the issue. Keep in mind this is depends on real time and not game time...
If the server is off for 2 days, it does not move the rot time.....

In PlayerCorpse.cpp find
Code:
bool ZoneDatabase::LoadPlayerCorpses(int32 iZoneID) {
Under the line
Code:
unsigned long* lengths;
#####WARNING UNTESTED CODE#####
Warning, I took a look at this, but have not actually run the code. BACKUP the table, player_corpses BEFORE USING.....
Add this
Code:
	if(!RuleB(Zone, EnableShadowrest))
	{
		RunQuery(query, MakeAnyLenString(&query, "update player_corpses set IsBurried=1 where zoneid= %u and (UNIX_TIMESTAMP(timeofdeath) + %u) < UNIX_TIMESTAMP(NOW())  ", iZoneID, RuleI(Character, CorpseDecayTimeMS)), errbuf);
	}
	else
	{
		RunQuery(query, MakeAnyLenString(&query, "delete from player_corpses where zoneid= %u and (UNIX_TIMESTAMP(timeofdeath) + %u) < UNIX_TIMESTAMP(NOW())  ", iZoneID, RuleI(Character, CorpseDecayTimeMS)), errbuf);
	}
	safe_delete_array(query);
####WARNING UNTESTED CODE#####
Warning, I took a look at this, but have not actually run the code. BACKUP the table, player_corpses BEFORE USING.....
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 05:01 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3