This commit is contained in:
Akkadius 2014-11-23 01:04:50 -06:00
parent f328853251
commit 7fa1256c5d
4 changed files with 33 additions and 26 deletions

View File

@ -63,7 +63,16 @@ void Corpse::SendLootReqErrorPacket(Client* client, uint8 response) {
safe_delete(outapp); 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; PlayerCorpse_Struct pcs;
database.LoadCharacterCorpseData(in_dbid, &pcs); database.LoadCharacterCorpseData(in_dbid, &pcs);
@ -81,7 +90,7 @@ Corpse* Corpse::LoadFromDBData(uint32 in_dbid, uint32 in_charid, char* in_charna
Corpse* pc = new Corpse( Corpse* pc = new Corpse(
in_dbid, // uint32 in_dbid in_dbid, // uint32 in_dbid
in_charid, // uint32 in_charid in_charid, // uint32 in_charid
in_charname, // char* in_charname in_charname.c_str(), // char* in_charname
&itemlist, // ItemList* in_itemlist &itemlist, // ItemList* in_itemlist
pcs.copper, // uint32 in_copper pcs.copper, // uint32 in_copper
pcs.silver, // uint32 in_silver pcs.silver, // uint32 in_silver
@ -412,7 +421,7 @@ std::list<uint32> Corpse::MoveItemToCorpse(Client *client, ItemInst *item, int16
// To be called from LoadFromDBData // To be called from LoadFromDBData
// Mongrel: added see_invis and see_invis_undead // 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, : 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,0,0,0,0,0,0,0,0,0,0xff, 0,0,0,0,0,0,0,0,0,0,0,0xff,

View File

@ -35,9 +35,9 @@ public:
Corpse(NPC* in_npc, ItemList* in_itemlist, uint32 in_npctypeid, const NPCType** in_npctypedata, uint32 in_decaytime = 600000); 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(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(); ~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 //abstract virtual function implementations requird by base abstract class
virtual bool Death(Mob* killerMob, int32 damage, uint16 spell_id, SkillUseTypes attack_skill) { return true; } virtual bool Death(Mob* killerMob, int32 damage, uint16 spell_id, SkillUseTypes attack_skill) { return true; }

View File

@ -3750,20 +3750,6 @@ uint32 ZoneDatabase::GetCharacterCorpseItemAt(uint32 corpse_id, uint16 slotid) {
bool ZoneDatabase::LoadCharacterCorpseData(uint32 corpse_id, PlayerCorpse_Struct* pcs){ bool ZoneDatabase::LoadCharacterCorpseData(uint32 corpse_id, PlayerCorpse_Struct* pcs){
std::string query = StringFormat( std::string query = StringFormat(
"SELECT \n" "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" "is_locked, \n"
"exp, \n" "exp, \n"
"size, \n" "size, \n"
@ -3862,9 +3848,10 @@ bool ZoneDatabase::LoadCharacterCorpseData(uint32 corpse_id, PlayerCorpse_Struct
pcs->itemcount = results.RowCount(); pcs->itemcount = results.RowCount();
uint16 r = 0; uint16 r = 0;
// Allocate memory for items. // Allocate memory for items.
pcs->items = reinterpret_cast<player_lootitem::ServerLootItem_Struct*>(new char[pcs->itemcount * sizeof(player_lootitem::ServerLootItem_Struct)]); // pcs->items = reinterpret_cast<player_lootitem::ServerLootItem_Struct*>(new char[pcs->itemcount * sizeof(player_lootitem::ServerLootItem_Struct)]);
for (auto row = results.begin(); row != results.end(); ++row) { 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].equip_slot = atoi(row[r]); r++; // equip_slot,
pcs->items[i].item_id = atoi(row[r]); r++; // item_id, pcs->items[i].item_id = atoi(row[r]); r++; // item_id,
pcs->items[i].charges = atoi(row[r]); r++; // charges, pcs->items[i].charges = atoi(row[r]); r++; // charges,
@ -4001,11 +3988,22 @@ bool ZoneDatabase::LoadCharacterCorpses(uint32 zone_id, uint16 instance_id) {
auto results = QueryDatabase(query); auto results = QueryDatabase(query);
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
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( entity_list.AddCorpse(
Corpse::LoadFromDBData( Corpse::LoadFromDBData(
atoi(row[0]), // id uint32 in_dbid atoi(row[0]), // id uint32 in_dbid
atoi(row[1]), // charid uint32 in_charid 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[3]), // x float in_x
atof(row[4]), // y float in_y atof(row[4]), // y float in_y
atof(row[5]), // z float in_z atof(row[5]), // z float in_z

View File

@ -172,7 +172,7 @@ struct PlayerCorpse_Struct {
uint32 drakkin_heritage; uint32 drakkin_heritage;
uint32 drakkin_tattoo; uint32 drakkin_tattoo;
uint32 drakkin_details; uint32 drakkin_details;
player_lootitem::ServerLootItem_Struct* items[0]; player_lootitem::ServerLootItem_Struct items[0];
//std::list<player_lootitem::ServerLootItem_Struct*> items; //std::list<player_lootitem::ServerLootItem_Struct*> items;
}; };