From 7f92e96ae70d6716259f2801bce7000bdda958ae Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Sat, 23 Aug 2014 23:15:49 -0700 Subject: [PATCH] TryReward converted to QueryDatabase --- zone/client.cpp | 94 ++++++++++++++++--------------------------------- 1 file changed, 30 insertions(+), 64 deletions(-) diff --git a/zone/client.cpp b/zone/client.cpp index 8e9c86cd7..a85792668 100644 --- a/zone/client.cpp +++ b/zone/client.cpp @@ -5336,88 +5336,54 @@ bool Client::TryReward(uint32 claim_id) } if(free_slot == 0xFFFFFFFF) - { return false; - } - char errbuf[MYSQL_ERRMSG_SIZE]; - char* query = 0; - MYSQL_RES *result; - MYSQL_ROW row; - uint32 amt = 0; - - if(database.RunQuery(query,MakeAnyLenString(&query,"SELECT amount FROM" - " account_rewards WHERE account_id=%i AND reward_id=%i", AccountID(), claim_id), - errbuf,&result)) - { - row = mysql_fetch_row(result); - if(row) - { - amt = atoi(row[0]); - } - else - { - mysql_free_result(result); - safe_delete_array(query); - return false; - } - mysql_free_result(result); - safe_delete_array(query); - } - else - { - LogFile->write(EQEMuLog::Error, "Error in Client::TryReward(): %s (%s)", query, errbuf); - safe_delete_array(query); + std::string query = StringFormat("SELECT amount FROM account_rewards " + "WHERE account_id=%i AND reward_id=%i", + AccountID(), claim_id); + auto results = database.QueryDatabase(query); + if (!results.Success()) { + LogFile->write(EQEMuLog::Error, "Error in Client::TryReward(): %s (%s)", query.c_str(), results.ErrorMessage().c_str()); return false; - } + } + + if (results.RowCount() == 0) + return false; + + uint32 amt = 0; + auto row = results.begin(); + + amt = atoi(row[0]); if(amt == 0) - { return false; - } - std::list::iterator iter = zone->VeteranRewards.begin(); - while(iter != zone->VeteranRewards.end()) - { + auto iter = zone->VeteranRewards.begin(); + for (; iter != zone->VeteranRewards.end(); ++iter) if((*iter).claim_id == claim_id) - { break; - } - ++iter; - } if(iter == zone->VeteranRewards.end()) - { return false; - } if(amt == 1) { - if(!database.RunQuery(query,MakeAnyLenString(&query,"DELETE FROM" - " account_rewards WHERE account_id=%i AND reward_id=%i", AccountID(), claim_id), - errbuf)) - { - LogFile->write(EQEMuLog::Error, "Error in Client::TryReward(): %s (%s)", query, errbuf); - safe_delete_array(query); - } - else - { - safe_delete_array(query); - } + query = StringFormat("DELETE FROM account_rewards " + "WHERE account_id=%i AND reward_id=%i", + AccountID(), claim_id); + results = database.QueryDatabase(query); + if(!results.ErrorMessage().c_str()) + LogFile->write(EQEMuLog::Error, "Error in Client::TryReward(): %s (%s)", query.c_str(), results.ErrorMessage().c_str()); + } else { - if(!database.RunQuery(query,MakeAnyLenString(&query,"UPDATE account_rewards SET amount=(amount-1)" - " WHERE account_id=%i AND reward_id=%i", AccountID(), claim_id), - errbuf)) - { - LogFile->write(EQEMuLog::Error, "Error in Client::TryReward(): %s (%s)", query, errbuf); - safe_delete_array(query); - } - else - { - safe_delete_array(query); - } + query = StringFormat("UPDATE account_rewards SET amount=(amount-1) " + "WHERE account_id=%i AND reward_id=%i", AccountID(), claim_id); + results = database.QueryDatabase(query); + if(!results.Success()) + LogFile->write(EQEMuLog::Error, "Error in Client::TryReward(): %s (%s)", query.c_str(), results.ErrorMessage().c_str()); + } InternalVeteranReward ivr = (*iter);