SendRewards converted to QueryDatabase

This commit is contained in:
Arthur Ice 2014-10-04 14:55:55 -07:00
parent c7c9218210
commit fe1c67b8b4

View File

@ -5223,57 +5223,41 @@ const bool Client::IsMQExemptedArea(uint32 zoneID, float x, float y, float z) co
void Client::SendRewards() void Client::SendRewards()
{ {
std::vector<ClientReward> rewards; std::vector<ClientReward> rewards;
char errbuf[MYSQL_ERRMSG_SIZE]; std::string query = StringFormat("SELECT reward_id, amount "
char* query = 0; "FROM account_rewards "
MYSQL_RES *result; "WHERE account_id = %i "
MYSQL_ROW row; "ORDER BY reward_id", AccountID());
auto results = database.QueryDatabase(query);
if (!results.Success()) {
LogFile->write(EQEMuLog::Error, "Error in Client::SendRewards(): %s (%s)", query.c_str(), results.ErrorMessage().c_str());
return;
}
if(database.RunQuery(query,MakeAnyLenString(&query,"SELECT reward_id, amount FROM" for (auto row = results.begin(); row != results.end(); ++row) {
" account_rewards WHERE account_id=%i ORDER by reward_id", AccountID()),
errbuf,&result))
{
while((row = mysql_fetch_row(result)))
{
ClientReward cr; ClientReward cr;
cr.id = atoi(row[0]); cr.id = atoi(row[0]);
cr.amount = atoi(row[1]); cr.amount = atoi(row[1]);
rewards.push_back(cr); rewards.push_back(cr);
} }
mysql_free_result(result);
safe_delete_array(query);
}
else
{
LogFile->write(EQEMuLog::Error, "Error in Client::SendRewards(): %s (%s)", query, errbuf);
safe_delete_array(query);
return;
}
if(rewards.size() > 0) if(rewards.size() == 0)
{ return;
EQApplicationPacket *vetapp = new EQApplicationPacket(OP_VetRewardsAvaliable, (sizeof(InternalVeteranReward) * rewards.size())); EQApplicationPacket *vetapp = new EQApplicationPacket(OP_VetRewardsAvaliable, (sizeof(InternalVeteranReward) * rewards.size()));
uchar *data = vetapp->pBuffer; uchar *data = vetapp->pBuffer;
for(int i = 0; i < rewards.size(); ++i) for(int i = 0; i < rewards.size(); ++i) {
{
InternalVeteranReward *ivr = (InternalVeteranReward*)data; InternalVeteranReward *ivr = (InternalVeteranReward*)data;
ivr->claim_id = rewards[i].id; ivr->claim_id = rewards[i].id;
ivr->number_available = rewards[i].amount; ivr->number_available = rewards[i].amount;
std::list<InternalVeteranReward>::iterator iter = zone->VeteranRewards.begin(); auto iter = zone->VeteranRewards.begin();
while(iter != zone->VeteranRewards.end()) for (;iter != zone->VeteranRewards.end(); ++iter)
{
if((*iter).claim_id == rewards[i].id) if((*iter).claim_id == rewards[i].id)
{
break; break;
}
++iter;
}
if(iter != zone->VeteranRewards.end()) if(iter != zone->VeteranRewards.end()) {
{
InternalVeteranReward ivro = (*iter); InternalVeteranReward ivro = (*iter);
ivr->claim_count = ivro.claim_count; ivr->claim_count = ivro.claim_count;
for(int x = 0; x < ivro.claim_count; ++x) for(int x = 0; x < ivro.claim_count; ++x) {
{
ivr->items[x].item_id = ivro.items[x].item_id; ivr->items[x].item_id = ivro.items[x].item_id;
ivr->items[x].charges = ivro.items[x].charges; ivr->items[x].charges = ivro.items[x].charges;
strcpy(ivr->items[x].item_name, ivro.items[x].item_name); strcpy(ivr->items[x].item_name, ivro.items[x].item_name);
@ -5282,8 +5266,8 @@ void Client::SendRewards()
data += sizeof(InternalVeteranReward); data += sizeof(InternalVeteranReward);
} }
FastQueuePacket(&vetapp); FastQueuePacket(&vetapp);
}
} }
bool Client::TryReward(uint32 claim_id) bool Client::TryReward(uint32 claim_id)