SaveMercBuffs converted to QueryDatabase

This commit is contained in:
Arthur Ice 2014-08-20 21:30:51 -07:00
parent c6e82448b6
commit 5cabe109da

View File

@ -1480,66 +1480,42 @@ bool ZoneDatabase::SaveMerc(Merc *merc) {
} }
void ZoneDatabase::SaveMercBuffs(Merc *merc) { void ZoneDatabase::SaveMercBuffs(Merc *merc) {
Buffs_Struct *buffs = merc->GetBuffs(); Buffs_Struct *buffs = merc->GetBuffs();
std::string errorMessage;
char* Query = 0;
char TempErrorMessageBuffer[MYSQL_ERRMSG_SIZE];
int BuffCount = 0;
int InsertCount = 0;
uint32 buff_count = merc->GetMaxBuffSlots(); // Remove any existing buff saves
while(BuffCount < BUFF_COUNT) { std::string query = StringFormat("DELETE FROM merc_buffs WHERE MercId = %u", merc->GetMercID());
if(buffs[BuffCount].spellid > 0 && buffs[BuffCount].spellid != SPELL_UNKNOWN) { auto results = database.QueryDatabase(query);
if(InsertCount == 0) { if(!results.Success()) {
// Remove any existing buff saves LogFile->write(EQEMuLog::Error, "Error While Deleting Merc Buffs before save: %s", results.ErrorMessage().c_str());
if(!database.RunQuery(Query, MakeAnyLenString(&Query, "DELETE FROM merc_buffs WHERE MercId = %u", merc->GetMercID()), TempErrorMessageBuffer)) { return;
errorMessage = std::string(TempErrorMessageBuffer); }
safe_delete(Query);
Query = 0;
break;
}
}
int IsPersistent = 0; for (int buffCount = 0; buffCount <= BUFF_COUNT; buffCount++) {
if(buffs[buffCount].spellid == 0 || buffs[buffCount].spellid == SPELL_UNKNOWN)
continue;
if(buffs[BuffCount].persistant_buff) int IsPersistent = buffs[buffCount].persistant_buff? 1: 0;
IsPersistent = 1;
else
IsPersistent = 0;
if(!database.RunQuery(Query, MakeAnyLenString(&Query, "INSERT INTO merc_buffs (MercId, SpellId, CasterLevel, DurationFormula, " query = StringFormat("INSERT INTO merc_buffs (MercId, SpellId, CasterLevel, DurationFormula, "
"TicsRemaining, PoisonCounters, DiseaseCounters, CurseCounters, CorruptionCounters, HitCount, MeleeRune, MagicRune, " "TicsRemaining, PoisonCounters, DiseaseCounters, CurseCounters, "
"dot_rune, caston_x, Persistent, caston_y, caston_z, ExtraDIChance) VALUES (%u, %u, %u, %u, %u, %u, %u, %u, %u, %u, %u, %u, %u, %i, %u, %i, %i, %i);", "CorruptionCounters, HitCount, MeleeRune, MagicRune, dot_rune, "
merc->GetMercID(), buffs[BuffCount].spellid, buffs[BuffCount].casterlevel, spells[buffs[BuffCount].spellid].buffdurationformula, "caston_x, Persistent, caston_y, caston_z, ExtraDIChance) "
buffs[BuffCount].ticsremaining, "VALUES (%u, %u, %u, %u, %u, %u, %u, %u, %u, %u, %u, %u, %u, %i, %u, %i, %i, %i);",
CalculatePoisonCounters(buffs[BuffCount].spellid) > 0 ? buffs[BuffCount].counters : 0, merc->GetMercID(), buffs[buffCount].spellid, buffs[buffCount].casterlevel,
CalculateDiseaseCounters(buffs[BuffCount].spellid) > 0 ? buffs[BuffCount].counters : 0, spells[buffs[buffCount].spellid].buffdurationformula, buffs[buffCount].ticsremaining,
CalculateCurseCounters(buffs[BuffCount].spellid) > 0 ? buffs[BuffCount].counters : 0, CalculatePoisonCounters(buffs[buffCount].spellid) > 0 ? buffs[buffCount].counters : 0,
CalculateCorruptionCounters(buffs[BuffCount].spellid) > 0 ? buffs[BuffCount].counters : 0, CalculateDiseaseCounters(buffs[buffCount].spellid) > 0 ? buffs[buffCount].counters : 0,
buffs[BuffCount].numhits, buffs[BuffCount].melee_rune, buffs[BuffCount].magic_rune, CalculateCurseCounters(buffs[buffCount].spellid) > 0 ? buffs[buffCount].counters : 0,
buffs[BuffCount].dot_rune, CalculateCorruptionCounters(buffs[buffCount].spellid) > 0 ? buffs[buffCount].counters : 0,
buffs[BuffCount].caston_x, buffs[buffCount].numhits, buffs[buffCount].melee_rune, buffs[buffCount].magic_rune,
IsPersistent, buffs[buffCount].dot_rune, buffs[buffCount].caston_x, IsPersistent, buffs[buffCount].caston_y,
buffs[BuffCount].caston_y, buffs[buffCount].caston_z, buffs[buffCount].ExtraDIChance);
buffs[BuffCount].caston_z, results = database.QueryDatabase(query);
buffs[BuffCount].ExtraDIChance), TempErrorMessageBuffer)) { if(!results.Success()) {
errorMessage = std::string(TempErrorMessageBuffer); LogFile->write(EQEMuLog::Error, "Error Saving Merc Buffs: %s", results.ErrorMessage().c_str());
safe_delete(Query); break;
Query = 0; }
break;
}
else {
safe_delete(Query);
Query = 0;
InsertCount++;
}
}
BuffCount++;
}
if(!errorMessage.empty()) {
LogFile->write(EQEMuLog::Error, "Error Saving Merc Buffs: %s", errorMessage.c_str());
} }
} }