mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-13 14:41:28 +00:00
[Bug Fix] Fix for Discipline Loading from Database causing issues with slot_ids (#3008)
* [Bug Fix] Fix for Discipline Loading from Database causing issues with slot_ids * cleanup per comments
This commit is contained in:
parent
93c79817cd
commit
2f0dbc5d15
@ -13,6 +13,7 @@
|
||||
#include "zonedb.h"
|
||||
#include "aura.h"
|
||||
#include "../common/repositories/criteria/content_filter_criteria.h"
|
||||
#include "../common/repositories/character_disciplines_repository.h"
|
||||
#include "../common/repositories/npc_types_repository.h"
|
||||
|
||||
#include <ctime>
|
||||
@ -814,22 +815,27 @@ bool ZoneDatabase::LoadCharacterLeadershipAA(uint32 character_id, PlayerProfile_
|
||||
}
|
||||
|
||||
bool ZoneDatabase::LoadCharacterDisciplines(uint32 character_id, PlayerProfile_Struct* pp){
|
||||
std::string query = StringFormat(
|
||||
"SELECT "
|
||||
"disc_id "
|
||||
"FROM "
|
||||
"`character_disciplines`"
|
||||
"WHERE `id` = %u ORDER BY `slot_id`", character_id);
|
||||
auto results = database.QueryDatabase(query);
|
||||
int i = 0;
|
||||
|
||||
auto character_disciplines = CharacterDisciplinesRepository::GetWhere(
|
||||
database, fmt::format(
|
||||
"`id` = {} ORDER BY `slot_id`",
|
||||
character_id
|
||||
)
|
||||
);
|
||||
|
||||
if (character_disciplines.empty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
/* Initialize Disciplines */
|
||||
memset(pp->disciplines.values, 0, (sizeof(pp->disciplines.values[0]) * MAX_PP_DISCIPLINES));
|
||||
for (auto& row = results.begin(); row != results.end(); ++row) {
|
||||
if (i < MAX_PP_DISCIPLINES)
|
||||
pp->disciplines.values[i] = atoi(row[0]);
|
||||
++i;
|
||||
}
|
||||
for (auto& row : character_disciplines) {
|
||||
if (i < MAX_PP_DISCIPLINES && IsValidSpell(row.disc_id)) {
|
||||
pp->disciplines.values[row.slot_id] = row.disc_id;
|
||||
}
|
||||
++i;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user