From 7d8d96c049b0af09ad74a8f5800b26ad1f6ad30c Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Wed, 3 Sep 2014 20:45:38 -0700 Subject: [PATCH 1/6] LoadTitles converted to QueryDatabase --- zone/titles.cpp | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/zone/titles.cpp b/zone/titles.cpp index 802d33935..6ddca0e36 100644 --- a/zone/titles.cpp +++ b/zone/titles.cpp @@ -31,25 +31,17 @@ bool TitleManager::LoadTitles() { Titles.clear(); - TitleEntry Title; - - char errbuf[MYSQL_ERRMSG_SIZE]; - char *query = nullptr; - MYSQL_RES *result; - MYSQL_ROW row; - - if (!database.RunQuery(query, MakeAnyLenString(&query, - "SELECT `id`, `skill_id`, `min_skill_value`, `max_skill_value`, `min_aa_points`, `max_aa_points`, `class`, `gender`, " - "`char_id`, `status`, `item_id`, `prefix`, `suffix`, `title_set` from titles"), errbuf, &result)) - { - LogFile->write(EQEMuLog::Error, "Unable to load titles: %s : %s", query, errbuf); - safe_delete_array(query); - return(false); + std::string query = "SELECT `id`, `skill_id`, `min_skill_value`, `max_skill_value`, " + "`min_aa_points`, `max_aa_points`, `class`, `gender`, `char_id`, " + "`status`, `item_id`, `prefix`, `suffix`, `title_set` FROM titles"; + auto results = database.QueryDatabase(query); + if (!results.Success()) { + LogFile->write(EQEMuLog::Error, "Unable to load titles: %s : %s", query.c_str(), results.ErrorMessage().c_str()); + return false; } - safe_delete_array(query); - - while ((row = mysql_fetch_row(result))) { + for (auto row = results.begin(); row != results.end(); ++row) { + TitleEntry Title; Title.TitleID = atoi(row[0]); Title.SkillID = (SkillUseTypes) atoi(row[1]); Title.MinSkillValue = atoi(row[2]); @@ -66,9 +58,8 @@ bool TitleManager::LoadTitles() Title.TitleSet = atoi(row[13]); Titles.push_back(Title); } - mysql_free_result(result); - return(true); + return true; } EQApplicationPacket *TitleManager::MakeTitlesPacket(Client *c) From 81cf748b2b765c3ea4c24b89625909d6a5f9d6aa Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Wed, 3 Sep 2014 20:52:00 -0700 Subject: [PATCH 2/6] CreateNewPlayerTitle converted to QueryDatabase --- zone/titles.cpp | 57 ++++++++++++++++++++----------------------------- 1 file changed, 23 insertions(+), 34 deletions(-) diff --git a/zone/titles.cpp b/zone/titles.cpp index 6ddca0e36..1e6941476 100644 --- a/zone/titles.cpp +++ b/zone/titles.cpp @@ -235,48 +235,37 @@ bool TitleManager::IsNewTradeSkillTitleAvailable(int SkillID, int SkillValue) return false; } -void TitleManager::CreateNewPlayerTitle(Client *c, const char *Title) +void TitleManager::CreateNewPlayerTitle(Client *client, const char *title) { - if(!c || !Title) + if(!client || !title) return; - char errbuf[MYSQL_ERRMSG_SIZE]; - char *query = nullptr; - MYSQL_RES *result; + char *escTitle = new char[strlen(title) * 2 + 1]; - char *EscTitle = new char[strlen(Title) * 2 + 1]; + client->SetAATitle(title); - c->SetAATitle(Title); - - database.DoEscapeString(EscTitle, Title, strlen(Title)); - - if (database.RunQuery(query, MakeAnyLenString(&query, - "SELECT `id` from titles where `prefix` = '%s' and char_id = %i", EscTitle, c->CharacterID()), errbuf, &result)) - { - if(mysql_num_rows(result) > 0) - { - mysql_free_result(result); - safe_delete_array(query); - safe_delete_array(EscTitle); - return; - } - mysql_free_result(result); + database.DoEscapeString(escTitle, title, strlen(title)); + auto query = StringFormat("SELECT `id` FROM titles " + "WHERE `prefix` = '%s' AND char_id = %i", + escTitle, client->CharacterID()); + auto results = database.QueryDatabase(query); + if (results.Success() && results.RowCount() > 0){ + safe_delete_array(escTitle); + return; } - safe_delete_array(query); - - if(!database.RunQuery(query,MakeAnyLenString(&query, "INSERT into titles (`char_id`, `prefix`) VALUES(%i, '%s')", - c->CharacterID(), EscTitle), errbuf)) - LogFile->write(EQEMuLog::Error, "Error adding title: %s %s", query, errbuf); - else - { - ServerPacket* pack = new ServerPacket(ServerOP_ReloadTitles, 0); - worldserver.SendPacket(pack); - safe_delete(pack); - } - safe_delete_array(query); - safe_delete_array(EscTitle); + query = StringFormat("INSERT INTO titles (`char_id`, `prefix`) VALUES(%i, '%s')", + client->CharacterID(), escTitle); + safe_delete_array(escTitle); + results = database.QueryDatabase(query); + if(!results.Success()) { + LogFile->write(EQEMuLog::Error, "Error adding title: %s %s", query.c_str(), results.ErrorMessage().c_str()); + return; + } + ServerPacket* pack = new ServerPacket(ServerOP_ReloadTitles, 0); + worldserver.SendPacket(pack); + safe_delete(pack); } void TitleManager::CreateNewPlayerSuffix(Client *c, const char *Suffix) From 9a4d01da8f5448135223ac9f17abe0465221b739 Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Wed, 3 Sep 2014 20:57:26 -0700 Subject: [PATCH 3/6] CreateNewPlayerSuffix converted to QueryDatabase --- zone/titles.cpp | 57 ++++++++++++++++++++----------------------------- 1 file changed, 23 insertions(+), 34 deletions(-) diff --git a/zone/titles.cpp b/zone/titles.cpp index 1e6941476..3b4dce8f6 100644 --- a/zone/titles.cpp +++ b/zone/titles.cpp @@ -268,48 +268,37 @@ void TitleManager::CreateNewPlayerTitle(Client *client, const char *title) safe_delete(pack); } -void TitleManager::CreateNewPlayerSuffix(Client *c, const char *Suffix) +void TitleManager::CreateNewPlayerSuffix(Client *client, const char *suffix) { - if(!c || !Suffix) + if(!client || !suffix) return; - char errbuf[MYSQL_ERRMSG_SIZE]; - char *query = nullptr; - MYSQL_RES *result; + client->SetTitleSuffix(suffix); - char *EscSuffix = new char[strlen(Suffix) * 2 + 1]; + char *escSuffix = new char[strlen(suffix) * 2 + 1]; + database.DoEscapeString(escSuffix, suffix, strlen(suffix)); - c->SetTitleSuffix(Suffix); - - database.DoEscapeString(EscSuffix, Suffix, strlen(Suffix)); - - if (database.RunQuery(query, MakeAnyLenString(&query, - "SELECT `id` from titles where `suffix` = '%s' and char_id = %i", EscSuffix, c->CharacterID()), errbuf, &result)) - { - if(mysql_num_rows(result) > 0) - { - mysql_free_result(result); - safe_delete_array(query); - safe_delete_array(EscSuffix); + std::string query = StringFormat("SELECT `id` FROM titles " + "WHERE `suffix` = '%s' AND char_id = %i", + escSuffix, client->CharacterID()); + auto results = database.QueryDatabase(query); + if (results.Success() && results.RowCount() > 0) { + safe_delete_array(escSuffix); return; - } - mysql_free_result(result); - } + } - safe_delete_array(query); - - if(!database.RunQuery(query,MakeAnyLenString(&query, "INSERT into titles (`char_id`, `suffix`) VALUES(%i, '%s')", - c->CharacterID(), EscSuffix), errbuf)) - LogFile->write(EQEMuLog::Error, "Error adding title suffix: %s %s", query, errbuf); - else - { - ServerPacket* pack = new ServerPacket(ServerOP_ReloadTitles, 0); - worldserver.SendPacket(pack); - safe_delete(pack); - } - safe_delete_array(query); - safe_delete_array(EscSuffix); + query = StringFormat("INSERT INTO titles (`char_id`, `suffix`) VALUES(%i, '%s')", + client->CharacterID(), escSuffix); + safe_delete_array(escSuffix); + results = database.QueryDatabase(query); + if(!results.Success()) { + LogFile->write(EQEMuLog::Error, "Error adding title suffix: %s %s", query.c_str(), results.ErrorMessage().c_str()); + return; + } + ServerPacket* pack = new ServerPacket(ServerOP_ReloadTitles, 0); + worldserver.SendPacket(pack); + safe_delete(pack); } void Client::SetAATitle(const char *Title) From fd08e9f2ad865c9270ba6aacfe4931bcc53ce6d2 Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Wed, 3 Sep 2014 21:00:15 -0700 Subject: [PATCH 4/6] EnableTitle converted to QueryDatabase --- zone/titles.cpp | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/zone/titles.cpp b/zone/titles.cpp index 3b4dce8f6..24559a693 100644 --- a/zone/titles.cpp +++ b/zone/titles.cpp @@ -337,24 +337,18 @@ void Client::SetTitleSuffix(const char *Suffix) safe_delete(outapp); } -void Client::EnableTitle(int titleset) { +void Client::EnableTitle(int titleSet) { - if (CheckTitle(titleset)) { + if (CheckTitle(titleSet)) return; - } - char errbuf[MYSQL_ERRMSG_SIZE]; - char *query = 0; + std::string query = StringFormat("INSERT INTO player_titlesets " + "(char_id, title_set) VALUES (%i, %i)", + CharacterID(), titleSet); + auto results = database.QueryDatabase(query); + if(!results.Success()) + LogFile->write(EQEMuLog::Error, "Error in EnableTitle query for titleset %i and charid %i", titleSet, CharacterID()); - if(!database.RunQuery(query,MakeAnyLenString(&query, "INSERT INTO player_titlesets (char_id, title_set) VALUES (%i, %i)", CharacterID(), titleset), errbuf)) { - LogFile->write(EQEMuLog::Error, "Error in EnableTitle query for titleset %i and charid %i", titleset, CharacterID()); - safe_delete_array(query); - return; - } - else { - safe_delete_array(query); - return; - } } bool Client::CheckTitle(int titleset) { From b7c409e11bf835aa0c5880584b813177bc93cdbe Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Wed, 3 Sep 2014 21:03:00 -0700 Subject: [PATCH 5/6] CheckTitle converted to QueryDatabase --- zone/titles.cpp | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/zone/titles.cpp b/zone/titles.cpp index 24559a693..7d30b63fd 100644 --- a/zone/titles.cpp +++ b/zone/titles.cpp @@ -351,27 +351,21 @@ void Client::EnableTitle(int titleSet) { } -bool Client::CheckTitle(int titleset) { +bool Client::CheckTitle(int titleSet) { - char errbuf[MYSQL_ERRMSG_SIZE]; - char *query = 0; - MYSQL_RES *result; - - if (database.RunQuery(query, MakeAnyLenString(&query, "SELECT `id` FROM player_titlesets WHERE `title_set`=%i AND `char_id`=%i LIMIT 1", titleset, CharacterID()), errbuf, &result)) { - safe_delete_array(query); - if (mysql_num_rows(result) >= 1) { - mysql_free_result(result); - return(true); - } - mysql_free_result(result); + std::string query = StringFormat("SELECT `id` FROM player_titlesets " + "WHERE `title_set`=%i AND `char_id`=%i LIMIT 1", + titleSet, CharacterID()); + auto results = database.QueryDatabase(query); + if (!results.Success()) { + LogFile->write(EQEMuLog::Error, "Error in CheckTitle query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); + return false; } - else { - LogFile->write(EQEMuLog::Error, "Error in CheckTitle query '%s': %s", query, errbuf); - safe_delete_array(query); - } + if (results.RowCount() == 0) + return false; - return(false); + return true; } void Client::RemoveTitle(int titleset) { From 399bf96a0cbb07fa005d9d715809c37a167f58cb Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Wed, 3 Sep 2014 21:05:31 -0700 Subject: [PATCH 6/6] RemoveTitle converted to QueryDatabase --- zone/titles.cpp | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/zone/titles.cpp b/zone/titles.cpp index 7d30b63fd..eeae38b8a 100644 --- a/zone/titles.cpp +++ b/zone/titles.cpp @@ -368,24 +368,17 @@ bool Client::CheckTitle(int titleSet) { return true; } -void Client::RemoveTitle(int titleset) { +void Client::RemoveTitle(int titleSet) { - if (!CheckTitle(titleset)) { + if (!CheckTitle(titleSet)) return; - } - char errbuf[MYSQL_ERRMSG_SIZE]; - char *query = 0; + std::string query = StringFormat("DELETE FROM player_titlesets " + "WHERE `title_set` = %i AND `char_id` = %i", + titleSet, CharacterID()); + auto results = database.QueryDatabase(query); + if (!results.Success()) + LogFile->write(EQEMuLog::Error, "Error in RemoveTitle query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); - if (database.RunQuery(query, MakeAnyLenString(&query, "DELETE FROM player_titlesets WHERE `title_set`=%i AND `char_id`=%i", titleset, CharacterID()), errbuf)) { - safe_delete_array(query); - } - - else { - LogFile->write(EQEMuLog::Error, "Error in RemoveTitle query '%s': %s", query, errbuf); - safe_delete_array(query); - } - - return; }