From 7fa1256c5d809126ea764432e77e387a68cf7560 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Sun, 23 Nov 2014 01:04:50 -0600 Subject: [PATCH] ... --- zone/corpse.cpp | 17 +++++++++++++---- zone/corpse.h | 6 +++--- zone/zonedb.cpp | 34 ++++++++++++++++------------------ zone/zonedump.h | 2 +- 4 files changed, 33 insertions(+), 26 deletions(-) diff --git a/zone/corpse.cpp b/zone/corpse.cpp index 71e8faf5a..9b41d4b41 100644 --- a/zone/corpse.cpp +++ b/zone/corpse.cpp @@ -63,10 +63,19 @@ void Corpse::SendLootReqErrorPacket(Client* client, uint8 response) { safe_delete(outapp); } -Corpse* Corpse::LoadFromDBData(uint32 in_dbid, uint32 in_charid, char* in_charname, float in_x, float in_y, float in_z, float in_heading, char* time_of_death, bool rezzed, bool was_at_graveyard) { +Corpse* Corpse::LoadFromDBData(uint32 in_dbid, uint32 in_charid, std::string in_charname, float in_x, float in_y, float in_z, float in_heading, std::string time_of_death, bool rezzed, bool was_at_graveyard) +{ + + std::cout << "LoadFromDBData: 0 " << in_dbid << std::endl; + std::cout << "LoadFromDBData: 1 " << in_charid << std::endl; + std::cout << "LoadFromDBData: 2 " << in_charname << std::endl; + std::cout << "LoadFromDBData: 3 " << in_x << std::endl; + std::cout << "LoadFromDBData: 4 " << in_y << std::endl; + std::cout << "LoadFromDBData: 5 " << in_z << std::endl; + PlayerCorpse_Struct pcs; database.LoadCharacterCorpseData(in_dbid, &pcs); - + /* Load Items */ ItemList itemlist; ServerLootItem_Struct* tmp = 0; @@ -81,7 +90,7 @@ Corpse* Corpse::LoadFromDBData(uint32 in_dbid, uint32 in_charid, char* in_charna Corpse* pc = new Corpse( in_dbid, // uint32 in_dbid in_charid, // uint32 in_charid - in_charname, // char* in_charname + in_charname.c_str(), // char* in_charname &itemlist, // ItemList* in_itemlist pcs.copper, // uint32 in_copper pcs.silver, // uint32 in_silver @@ -412,7 +421,7 @@ std::list Corpse::MoveItemToCorpse(Client *client, ItemInst *item, int16 // To be called from LoadFromDBData // Mongrel: added see_invis and see_invis_undead -Corpse::Corpse(uint32 in_dbid, uint32 in_charid, char* in_charname, ItemList* in_itemlist, uint32 in_copper, uint32 in_silver, uint32 in_gold, uint32 in_plat, float in_x, float in_y, float in_z, float in_heading, float in_size, uint8 in_gender, uint16 in_race, uint8 in_class, uint8 in_deity, uint8 in_level, uint8 in_texture, uint8 in_helmtexture,uint32 in_rezexp, bool wasAtGraveyard) +Corpse::Corpse(uint32 in_dbid, uint32 in_charid, const char* in_charname, ItemList* in_itemlist, uint32 in_copper, uint32 in_silver, uint32 in_gold, uint32 in_plat, float in_x, float in_y, float in_z, float in_heading, float in_size, uint8 in_gender, uint16 in_race, uint8 in_class, uint8 in_deity, uint8 in_level, uint8 in_texture, uint8 in_helmtexture,uint32 in_rezexp, bool wasAtGraveyard) : Mob("Unnamed_Corpse","",0,0,in_gender, in_race, in_class, BT_Humanoid, in_deity, in_level,0, in_size, 0, in_heading, in_x, in_y, in_z,0,in_texture,in_helmtexture, 0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0xff, diff --git a/zone/corpse.h b/zone/corpse.h index a3544834f..8b10ed787 100644 --- a/zone/corpse.h +++ b/zone/corpse.h @@ -32,12 +32,12 @@ public: static void SendEndLootErrorPacket(Client* client); static void SendLootReqErrorPacket(Client* client, uint8 response = 2); - + Corpse(NPC* in_npc, ItemList* in_itemlist, uint32 in_npctypeid, const NPCType** in_npctypedata, uint32 in_decaytime = 600000); Corpse(Client* client, int32 in_rezexp); - Corpse(uint32 in_corpseid, uint32 in_charid, char* in_charname, ItemList* in_itemlist, uint32 in_copper, uint32 in_silver, uint32 in_gold, uint32 in_plat, float in_x, float in_y, float in_z, float in_heading, float in_size, uint8 in_gender, uint16 in_race, uint8 in_class, uint8 in_deity, uint8 in_level, uint8 in_texture, uint8 in_helmtexture,uint32 in_rezexp, bool wasAtGraveyard = false); + Corpse(uint32 in_corpseid, uint32 in_charid, const char* in_charname, ItemList* in_itemlist, uint32 in_copper, uint32 in_silver, uint32 in_gold, uint32 in_plat, float in_x, float in_y, float in_z, float in_heading, float in_size, uint8 in_gender, uint16 in_race, uint8 in_class, uint8 in_deity, uint8 in_level, uint8 in_texture, uint8 in_helmtexture, uint32 in_rezexp, bool wasAtGraveyard = false); ~Corpse(); - static Corpse* LoadFromDBData(uint32 in_dbid, uint32 in_charid, char* in_charname, float in_x, float in_y, float in_z, float in_heading, char* time_of_death, bool rezzed, bool was_at_graveyard); + static Corpse* LoadFromDBData(uint32 in_dbid, uint32 in_charid, std::string in_charname, float in_x, float in_y, float in_z, float in_heading, std::string time_of_death, bool rezzed, bool was_at_graveyard); //abstract virtual function implementations requird by base abstract class virtual bool Death(Mob* killerMob, int32 damage, uint16 spell_id, SkillUseTypes attack_skill) { return true; } diff --git a/zone/zonedb.cpp b/zone/zonedb.cpp index 3e5b15cc7..2a2e04ba3 100644 --- a/zone/zonedb.cpp +++ b/zone/zonedb.cpp @@ -3750,20 +3750,6 @@ uint32 ZoneDatabase::GetCharacterCorpseItemAt(uint32 corpse_id, uint16 slotid) { bool ZoneDatabase::LoadCharacterCorpseData(uint32 corpse_id, PlayerCorpse_Struct* pcs){ std::string query = StringFormat( "SELECT \n" - "id, \n" - "charid, \n" - "charname, \n" - "zone_id, \n" - "instance_id, \n" - "x, \n" - "y, \n" - "z, \n" - "heading, \n" - "`data`, \n" - "time_of_death, \n" - "is_rezzed, \n" - "is_buried, \n" - "was_at_graveyard, \n" "is_locked, \n" "exp, \n" "size, \n" @@ -3862,9 +3848,10 @@ bool ZoneDatabase::LoadCharacterCorpseData(uint32 corpse_id, PlayerCorpse_Struct pcs->itemcount = results.RowCount(); uint16 r = 0; // Allocate memory for items. - pcs->items = reinterpret_cast(new char[pcs->itemcount * sizeof(player_lootitem::ServerLootItem_Struct)]); + // pcs->items = reinterpret_cast(new char[pcs->itemcount * sizeof(player_lootitem::ServerLootItem_Struct)]); for (auto row = results.begin(); row != results.end(); ++row) { + memset(&pcs->items[i], 0, sizeof (player_lootitem::ServerLootItem_Struct)); pcs->items[i].equip_slot = atoi(row[r]); r++; // equip_slot, pcs->items[i].item_id = atoi(row[r]); r++; // item_id, pcs->items[i].charges = atoi(row[r]); r++; // charges, @@ -4001,18 +3988,29 @@ bool ZoneDatabase::LoadCharacterCorpses(uint32 zone_id, uint16 instance_id) { auto results = QueryDatabase(query); for (auto row = results.begin(); row != results.end(); ++row) { - entity_list.AddCorpse( + std::cout << row[0] << std::endl; + std::cout << row[1] << std::endl; + std::cout << row[2] << std::endl; + std::cout << row[3] << std::endl; + std::cout << row[4] << std::endl; + std::cout << row[5] << std::endl; + std::cout << row[6] << std::endl; + std::cout << row[7] << std::endl; + std::cout << row[8] << std::endl; + std::cout << row[9] << std::endl; + + entity_list.AddCorpse( Corpse::LoadFromDBData( atoi(row[0]), // id uint32 in_dbid atoi(row[1]), // charid uint32 in_charid - row[2], // PlayerCorpse_tSruct* pcs + row[2], // char_name atof(row[3]), // x float in_x atof(row[4]), // y float in_y atof(row[5]), // z float in_z atof(row[6]), // heading float in_heading row[7], // time_of_death char* time_of_death atoi(row[8]) == 1, // is_rezzed bool rezzed - atoi(row[9])) + atoi(row[9])) ); } diff --git a/zone/zonedump.h b/zone/zonedump.h index 52626aca1..14f9b5d0a 100644 --- a/zone/zonedump.h +++ b/zone/zonedump.h @@ -172,7 +172,7 @@ struct PlayerCorpse_Struct { uint32 drakkin_heritage; uint32 drakkin_tattoo; uint32 drakkin_details; - player_lootitem::ServerLootItem_Struct* items[0]; + player_lootitem::ServerLootItem_Struct items[0]; //std::list items; };