diff --git a/common/database.cpp b/common/database.cpp index cc8236586..1af4d05a0 100644 --- a/common/database.cpp +++ b/common/database.cpp @@ -1857,7 +1857,7 @@ bool Database::CheckDatabaseConversions() { /* Run Tribute Convert */ first_entry = 0; rquery = ""; for (i = 0; i < EmuConstants::TRIBUTE_SIZE; i++){ - if (pp->tributes[i].tribute > 0){ + if (pp->tributes[i].tribute > 0 && pp->tributes[i].tribute != 4294967295){ if (first_entry != 1){ rquery = StringFormat("REPLACE INTO `character_tribute` (id, tier, tribute) VALUES (%u, %u, %u)", character_id, pp->tributes[i].tier, pp->tributes[i].tribute); first_entry = 1; diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index a8057f822..ba25cdd1a 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -597,6 +597,7 @@ void Client::Handle_Connect_OP_ZoneEntry(const EQApplicationPacket *app) { database.LoadCharacterDisciplines(cid, &m_pp); /* Load Character Disciplines */ database.LoadCharacterLanguages(cid, &m_pp); /* Load Character Languages */ database.LoadCharacterLeadershipAA(cid, &m_pp); /* Load Character Leadership AA's */ + database.LoadCharacterTribute(cid, &m_pp); /* Load CharacterTribute */ /* Set item material tint */ for (int i = EmuConstants::MATERIAL_BEGIN; i <= EmuConstants::MATERIAL_END; i++) diff --git a/zone/zonedb.cpp b/zone/zonedb.cpp index 9a7ac54aa..594d6492d 100644 --- a/zone/zonedb.cpp +++ b/zone/zonedb.cpp @@ -1034,10 +1034,13 @@ bool ZoneDatabase::LoadCharacterDisciplines(uint32 character_id, PlayerProfile_S "disc_id " "FROM " "`character_disciplines`" - "WHERE `id` = %u ORDER BY `disc_id`", character_id); - auto results = database.QueryDatabase(query); int i = 0; + "WHERE `id` = %u ORDER BY `slot_id`", character_id); + auto results = database.QueryDatabase(query); + int i = 0; + /* Initialize Disciplines */ + memset(pp->disciplines.values, 0, MAX_PP_DISCIPLINES); for (auto row = results.begin(); row != results.end(); ++row) { - if (i < MAX_PP_DISCIPLINES){ + if (i < MAX_PP_DISCIPLINES){ pp->disciplines.values[i] = atoi(row[0]); } i++; @@ -1150,12 +1153,14 @@ bool ZoneDatabase::LoadCharacterTribute(uint32 character_id, PlayerProfile_Struc std::string query = StringFormat("SELECT `tier`, `tribute` FROM `character_tribute` WHERE `id` = %u", character_id); auto results = database.QueryDatabase(query); int i = 0; for (i = 0; i < EmuConstants::TRIBUTE_SIZE; i++){ - pp->tributes[i].tribute = 0; + pp->tributes[i].tribute = 0xFFFFFFFF; pp->tributes[i].tier = 0; } for (auto row = results.begin(); row != results.end(); ++row) { - pp->tributes[i].tier = atoi(row[0]); - pp->tributes[i].tribute = atoi(row[1]); + if(pp->tributes[i].tribute != TRIBUTE_NONE){ + pp->tributes[i].tier = atoi(row[0]); + pp->tributes[i].tribute = atoi(row[1]); + } } return true; }