From 8e529105cf47fea317e55c87939d749658969235 Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Wed, 3 Sep 2014 19:07:49 -0700 Subject: [PATCH 1/2] CheckGuildDoor converted to QueryDatabase --- zone/guild.cpp | 45 ++++++++++++++------------------------------- 1 file changed, 14 insertions(+), 31 deletions(-) diff --git a/zone/guild.cpp b/zone/guild.cpp index 6512bedec..18570d221 100644 --- a/zone/guild.cpp +++ b/zone/guild.cpp @@ -165,7 +165,7 @@ void Client::SendGuildSpawnAppearance() { switch (rank) { case 0: { rank = 5; break; } // GUILD_MEMBER 0 case 1: { rank = 3; break; } // GUILD_OFFICER 1 - case 2: { rank = 1; break; } // GUILD_LEADER 2 + case 2: { rank = 1; break; } // GUILD_LEADER 2 default: { break; } // GUILD_NONE } } @@ -417,38 +417,21 @@ void Client::GuildChangeRank(const char* name, uint32 guild_id, uint32 oldrank, }*/ -bool ZoneDatabase::CheckGuildDoor(uint8 doorid,uint16 guild_id,const char* zone) { - MYSQL_ROW row; - char errbuf[MYSQL_ERRMSG_SIZE]; - char *query = 0; - MYSQL_RES *result; - if (!RunQuery(query, MakeAnyLenString(&query, - "SELECT guild FROM doors where doorid=%i AND zone='%s'", - doorid-128, zone), errbuf, &result)) - { - LogFile->write(EQEMuLog::Error, "Error in CheckGuildDoor query '%s': %s", query, errbuf); - safe_delete_array(query); - return false; - } else { - if (mysql_num_rows(result) == 1) { - row = mysql_fetch_row(result); - if (atoi(row[0]) == guild_id) - { - mysql_free_result(result); - return true; - } - else - { - mysql_free_result(result); - return false; - } +bool ZoneDatabase::CheckGuildDoor(uint8 doorid, uint16 guild_id, const char* zone) { - // code below will never be reached - mysql_free_result(result); - return false; - } + std::string query = StringFormat("SELECT guild FROM doors WHERE doorid = %i AND zone = '%s'", + doorid-128, zone); + auto results = QueryDatabase(query); + if (!results.Success()) { + LogFile->write(EQEMuLog::Error, "Error in CheckGuildDoor query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); + return false; } - return false; + + if (results.RowCount() != 1) + return false; + + auto row = results.begin(); + return atoi(row[0]) == guild_id; } bool ZoneDatabase::SetGuildDoor(uint8 doorid,uint16 guild_id, const char* zone) { From f215874486672247be18c16fb91244b1a47eae45 Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Wed, 3 Sep 2014 19:10:27 -0700 Subject: [PATCH 2/2] SetGuildDoor converted to QueryDatabase --- zone/guild.cpp | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/zone/guild.cpp b/zone/guild.cpp index 18570d221..5f8378d2b 100644 --- a/zone/guild.cpp +++ b/zone/guild.cpp @@ -435,22 +435,18 @@ bool ZoneDatabase::CheckGuildDoor(uint8 doorid, uint16 guild_id, const char* zon } bool ZoneDatabase::SetGuildDoor(uint8 doorid,uint16 guild_id, const char* zone) { - char errbuf[MYSQL_ERRMSG_SIZE]; - char *query = 0; - uint32 affected_rows = 0; + if (doorid > 127) doorid = doorid - 128; - if (!RunQuery(query, MakeAnyLenString(&query, - "UPDATE doors SET guild = %i WHERE (doorid=%i) AND (zone='%s')", - guild_id, doorid, zone), errbuf, 0,&affected_rows)) - { - LogFile->write(EQEMuLog::Error, "Error in SetGuildDoor query '%s': %s", query, errbuf); - safe_delete_array(query); + + std::string query = StringFormat("UPDATE doors SET guild = %i WHERE (doorid=%i) AND (zone='%s')", + guild_id, doorid, zone); + auto results = QueryDatabase(query); + if (!results.Success()) { + LogFile->write(EQEMuLog::Error, "Error in SetGuildDoor query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } - safe_delete_array(query); - - return(affected_rows > 0); + return (results.RowsAffected() > 0); }