PDA

View Full Version : Accidentally clicked on empty corpse


sasigirl
03-06-2023, 01:29 AM
I died twice in Chardok while recovering corpse. I managed to pull all 3 corpses to entrance for rez but I accidentally clicked on empty corpse and clicked done. (I thought I clicked on Mob's corpse). So one of the corpse has no way to recover xp. I know it's going to be a long shot but is there anyway I can recover the lost corpse?

I wish i was smart enough not to click on done even after I clicked on empty corpse. so someone else still can cast rez on it before it expired :(

Trexller
03-06-2023, 01:36 AM
unfortunately the xp from your empty corpse is gone for good

shit happens, you'll get the xp back

look at it this way, you'll have that much more xp-time worth of loot farmed

PabloEdvardo
03-06-2023, 02:21 AM
if you do that again either /q out while the corpse is still open, or /load d (loadskin default) to reload your UI, both will force you off the corpse without actually looting it

Trexller
03-06-2023, 02:40 AM
if you do that again either /q out while the corpse is still open, or /load d (loadskin default) to reload your UI, both will force you off the corpse without actually looting it

good to know, I never knew that

20+ years of EQ and theres always something new to learn

Swish
03-06-2023, 03:35 AM
https://i.imgur.com/apRp7TQ.gif

Toxigen
03-06-2023, 11:13 AM
ive done this at least a couple dozen times myself

think of it as an opportunity to acquire more plat on the road to 60 / buffer xp

TercerRigo
03-06-2023, 03:00 PM
I know it's going to be a long shot but is there anyway I can recover the lost corpse?

If eqemu is comparable, the following is why :

https://github.com/EQEmu/Server/blob/master/zone/corpse.cpp
void Corpse::EndLoot(Client* client, const EQApplicationPacket* app) {
auto outapp = new EQApplicationPacket;
outapp->SetOpcode(OP_LootComplete);
outapp->size = 0;
client->QueuePacket(outapp);
safe_delete(outapp);

being_looted_by = 0xFFFFFFFF;
if (IsEmpty())
Delete();
else
Save();
}

void Corpse::Delete() {
if (IsPlayerCorpse() && corpse_db_id != 0)
database.DeleteCharacterCorpse(corpse_db_id);

corpse_db_id = 0;
player_corpse_depop = true;
}

https://github.com/EQEmu/Server/blob/master/zone/zonedb.cpp
bool ZoneDatabase::DeleteCharacterCorpse(uint32 db_id) {
std::string query = StringFormat("DELETE FROM `character_corpses` WHERE `id` = %d", db_id);
auto results = QueryDatabase(query);
if (results.Success() && results.RowsAffected() != 0)
return true;

return false;
}

https://dev.mysql.com/doc/refman/5.7/en/delete.html
The DELETE statement deletes rows from tbl_name and returns the number of deleted rows.

The only options would be to restore from backup, or to give you equal xp to another present corpse. I agree with everyone, it's gone for good.

sasigirl
03-06-2023, 03:11 PM
if you do that again either /q out while the corpse is still open, or /load d (loadskin default) to reload your UI, both will force you off the corpse without actually looting it

That's good idea. it sound better than holding corpse for hours lol thanks!

sasigirl
03-06-2023, 03:12 PM
If eqemu is comparable, the following is why :

https://github.com/EQEmu/Server/blob/master/zone/corpse.cpp
void Corpse::EndLoot(Client* client, const EQApplicationPacket* app) {
auto outapp = new EQApplicationPacket;
outapp->SetOpcode(OP_LootComplete);
outapp->size = 0;
client->QueuePacket(outapp);
safe_delete(outapp);

being_looted_by = 0xFFFFFFFF;
if (IsEmpty())
Delete();
else
Save();
}

void Corpse::Delete() {
if (IsPlayerCorpse() && corpse_db_id != 0)
database.DeleteCharacterCorpse(corpse_db_id);

corpse_db_id = 0;
player_corpse_depop = true;
}

https://github.com/EQEmu/Server/blob/master/zone/zonedb.cpp
bool ZoneDatabase::DeleteCharacterCorpse(uint32 db_id) {
std::string query = StringFormat("DELETE FROM `character_corpses` WHERE `id` = %d", db_id);
auto results = QueryDatabase(query);
if (results.Success() && results.RowsAffected() != 0)
return true;

return false;
}

https://dev.mysql.com/doc/refman/5.7/en/delete.html
The DELETE statement deletes rows from tbl_name and returns the number of deleted rows.

The only options would be to restore from backup, or to give you equal xp to another present corpse. I agree with everyone, it's gone for good.

This looks Greek to me but I can see where the depop came from. It's pain to lose 9% at 59 but I just suck it up I guess!

sasigirl
03-06-2023, 03:13 PM
unfortunately the xp from your empty corpse is gone for good

shit happens, you'll get the xp back

look at it this way, you'll have that much more xp-time worth of loot farmed

Yeah I think I managed to recover the xp I lost within 1.5 hrs today. I feel much better now! thanks!

loramin
03-06-2023, 03:45 PM
It could be worse. I once camped out for the night and didn't watch the last seconds of it, thinking I was safe.

Someone trained the circle where I was camping, and I died, going back to my bind spot in TD. Then Faydedar spawned, and killed me multiple times (not sure exactly how many, but I went from deep into 60 to like 30% in 59).

All of the corpses except the first one expired overnight :(

Trexller
03-06-2023, 03:55 PM
ouch