From 15fa2b371ca4a1f52b394dfb1ce1b4da10c4372c Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Fri, 5 Sep 2014 10:45:36 -0700 Subject: [PATCH 1/8] LearnMembers converted to QueryDatabase --- zone/groups.cpp | 57 +++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/zone/groups.cpp b/zone/groups.cpp index 5c34cf359..83c997836 100644 --- a/zone/groups.cpp +++ b/zone/groups.cpp @@ -195,7 +195,7 @@ void Group::SplitMoney(uint32 copper, uint32 silver, uint32 gold, uint32 platinu if (members[i] != nullptr && members[i]->IsClient()) { // If Group Member is Client Client *c = members[i]->CastToClient(); //I could not get MoneyOnCorpse to work, so we use this - c->AddMoneyToPP(cpsplit, spsplit, gpsplit, ppsplit, true); + c->AddMoneyToPP(cpsplit, spsplit, gpsplit, ppsplit, true); c->Message(2, msg.c_str()); } } @@ -957,31 +957,28 @@ void Group::TeleportGroup(Mob* sender, uint32 zoneID, uint16 instance_id, float } bool Group::LearnMembers() { - char errbuf[MYSQL_ERRMSG_SIZE]; - char* query = 0; - MYSQL_RES *result; - MYSQL_ROW row; - if (database.RunQuery(query,MakeAnyLenString(&query, "SELECT name FROM group_id WHERE groupid=%lu", (unsigned long)GetID()), - errbuf,&result)){ - safe_delete_array(query); - if(mysql_num_rows(result) < 1) { //could prolly be 2 - mysql_free_result(result); - LogFile->write(EQEMuLog::Error, "Error getting group members for group %lu: %s", (unsigned long)GetID(), errbuf); - return(false); - } - int i = 0; - while((row = mysql_fetch_row(result))) { - if(!row[0]) - continue; - members[i] = nullptr; - strn0cpy(membername[i], row[0], 64); + std::string query = StringFormat("SELECT name FROM group_id WHERE groupid = %lu", (unsigned long)GetID()); + auto results = database.QueryDatabase(query); + if (!results.Success()) + return false; - i++; - } - mysql_free_result(result); + if (results.RowCount() == 0) { + LogFile->write(EQEMuLog::Error, "Error getting group members for group %lu: %s", (unsigned long)GetID(), results.ErrorMessage().c_str()); + return false; + } + + int memberIndex = 0; + for(auto row = results.begin(); row != results.end(); ++row) { + if(!row[0]) + continue; + + members[memberIndex] = nullptr; + strn0cpy(membername[memberIndex], row[0], 64); + + memberIndex++; } - return(true); + return true; } void Group::VerifyGroup() { @@ -1065,7 +1062,7 @@ void Group::HealGroup(uint32 heal_amt, Mob* caster, int32 range) if (!range) range = 200; - + float distance; float range2 = range*range; @@ -1102,10 +1099,10 @@ void Group::BalanceHP(int32 penalty, int32 range, Mob* caster, int32 limit) return; if (!range) - range = 200; - + range = 200; + int dmgtaken = 0, numMem = 0, dmgtaken_tmp = 0; - + float distance; float range2 = range*range; @@ -1152,16 +1149,16 @@ void Group::BalanceMana(int32 penalty, int32 range, Mob* caster, int32 limit) return; if (!range) - range = 200; + range = 200; float distance; float range2 = range*range; - + int manataken = 0, numMem = 0, manataken_tmp = 0; unsigned int gi = 0; for(; gi < MAX_GROUP_MEMBERS; gi++) { - if(members[gi] && (members[gi]->GetMaxMana() > 0)){ + if(members[gi] && (members[gi]->GetMaxMana() > 0)){ distance = caster->DistNoRoot(*members[gi]); if(distance <= range2){ From b5ec35e672b0bb098ef14c7d18f0e60dbfc6aafa Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Fri, 5 Sep 2014 15:27:12 -0700 Subject: [PATCH 2/8] DelegateMainTank converted to QueryDatabase --- zone/groups.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/zone/groups.cpp b/zone/groups.cpp index 83c997836..9dc417aa1 100644 --- a/zone/groups.cpp +++ b/zone/groups.cpp @@ -1326,15 +1326,12 @@ void Group::DelegateMainTank(const char *NewMainTankName, uint8 toggle) } if(updateDB) { - char errbuff[MYSQL_ERRMSG_SIZE]; - char *Query = nullptr; - - if (!database.RunQuery(Query, MakeAnyLenString(&Query, "UPDATE group_leaders SET maintank='%s' WHERE gid=%i LIMIT 1", - MainTankName.c_str(), GetID()), errbuff)) - LogFile->write(EQEMuLog::Error, "Unable to set group main tank: %s\n", errbuff); - - safe_delete_array(Query); + std::string query = StringFormat("UPDATE group_leaders SET maintank = '%s' WHERE gid = %i LIMIT 1", + MainTankName.c_str(), GetID()); + auto results = database.QueryDatabase(query); + if (!results.Success()) + LogFile->write(EQEMuLog::Error, "Unable to set group main tank: %s\n", results.ErrorMessage().c_str()); } } From 99fe610f72a4811f566062521cee2044a7545fb7 Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Fri, 5 Sep 2014 15:46:06 -0700 Subject: [PATCH 3/8] DelegatePuller converted to QueryDatabase --- zone/groups.cpp | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/zone/groups.cpp b/zone/groups.cpp index 9dc417aa1..5033d344c 100644 --- a/zone/groups.cpp +++ b/zone/groups.cpp @@ -1372,15 +1372,13 @@ void Group::DelegateMainAssist(const char *NewMainAssistName, uint8 toggle) } if(updateDB) { - char errbuff[MYSQL_ERRMSG_SIZE]; - char *Query = nullptr; + std::string query = StringFormat("UPDATE group_leaders SET assist = '%s' WHERE gid = %i LIMIT 1", + MainAssistName.c_str(), GetID()); + auto results = database.QueryDatabase(query); + if (!results.Success()) + LogFile->write(EQEMuLog::Error, "Unable to set group main assist: %s\n", results.ErrorMessage().c_str()); - if (!database.RunQuery(Query, MakeAnyLenString(&Query, "UPDATE group_leaders SET assist='%s' WHERE gid=%i LIMIT 1", - MainAssistName.c_str(), GetID()), errbuff)) - LogFile->write(EQEMuLog::Error, "Unable to set group main assist: %s\n", errbuff); - - safe_delete_array(Query); } } @@ -1421,15 +1419,13 @@ void Group::DelegatePuller(const char *NewPullerName, uint8 toggle) } if(updateDB) { - char errbuff[MYSQL_ERRMSG_SIZE]; - char *Query = nullptr; + std::string query = StringFormat("UPDATE group_leaders SET puller = '%s' WHERE gid = %i LIMIT 1", + PullerName.c_str(), GetID()); + auto results = database.QueryDatabase(query); + if (!results.Success()) + LogFile->write(EQEMuLog::Error, "Unable to set group main puller: %s\n", results.ErrorMessage().c_str()); - if (!database.RunQuery(Query, MakeAnyLenString(&Query, "UPDATE group_leaders SET puller='%s' WHERE gid=%i LIMIT 1", - PullerName.c_str(), GetID()), errbuff)) - LogFile->write(EQEMuLog::Error, "Unable to set group main puller: %s\n", errbuff); - - safe_delete_array(Query); } } From b525a32b6e78b1d70369e8be90c72b045b96e603 Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Fri, 5 Sep 2014 15:54:07 -0700 Subject: [PATCH 4/8] UndelegateMainTank converted to QueryDatabase --- zone/groups.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/zone/groups.cpp b/zone/groups.cpp index 5033d344c..4ed4fc41f 100644 --- a/zone/groups.cpp +++ b/zone/groups.cpp @@ -1571,15 +1571,11 @@ void Group::UnDelegateMainTank(const char *OldMainTankName, uint8 toggle) // informing them of the change and update the group_leaders table. // if(OldMainTankName == MainTankName) { - char errbuff[MYSQL_ERRMSG_SIZE]; - char *Query = 0; - - if (!database.RunQuery(Query, MakeAnyLenString(&Query, "UPDATE group_leaders SET maintank='' WHERE gid=%i LIMIT 1", - GetID()), errbuff)) - LogFile->write(EQEMuLog::Error, "Unable to clear group main tank: %s\n", errbuff); - - safe_delete_array(Query); + std::string query = StringFormat("UPDATE group_leaders SET maintank = '' WHERE gid = %i LIMIT 1", GetID()); + auto results = database.QueryDatabase(query); + if (!results.Success()) + LogFile->write(EQEMuLog::Error, "Unable to clear group main tank: %s\n", results.ErrorMessage().c_str()); if(!toggle) { for(uint32 i = 0; i < MAX_GROUP_MEMBERS; ++i) { From 5b7aaff1503e90a6a13026eeee24275bdb0e05d1 Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Fri, 5 Sep 2014 15:58:21 -0700 Subject: [PATCH 5/8] UnDelegateMainAssist converted to QueryDatabase --- zone/groups.cpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/zone/groups.cpp b/zone/groups.cpp index 4ed4fc41f..63dc63822 100644 --- a/zone/groups.cpp +++ b/zone/groups.cpp @@ -1621,15 +1621,10 @@ void Group::UnDelegateMainAssist(const char *OldMainAssistName, uint8 toggle) safe_delete(outapp); - char errbuff[MYSQL_ERRMSG_SIZE]; - - char *Query = 0; - - if (!database.RunQuery(Query, MakeAnyLenString(&Query, "UPDATE group_leaders SET assist='' WHERE gid=%i LIMIT 1", - GetID()), errbuff)) - LogFile->write(EQEMuLog::Error, "Unable to clear group main assist: %s\n", errbuff); - - safe_delete_array(Query); + std::string query = StringFormat("UPDATE group_leaders SET assist = '' WHERE gid = %i LIMIT 1", GetID()); + auto results = database.QueryDatabase(query); + if (!results.Success()) + LogFile->write(EQEMuLog::Error, "Unable to clear group main assist: %s\n", results.ErrorMessage().c_str()); if(!toggle) { From 31177b7dc7feae0c96d89800316b4913ce30a081 Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Fri, 5 Sep 2014 16:04:34 -0700 Subject: [PATCH 6/8] UnDelegatePuller converted to QueryDatabase --- zone/groups.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/zone/groups.cpp b/zone/groups.cpp index 63dc63822..6628d67d5 100644 --- a/zone/groups.cpp +++ b/zone/groups.cpp @@ -1648,15 +1648,11 @@ void Group::UnDelegatePuller(const char *OldPullerName, uint8 toggle) // informing them of the change and update the group_leaders table. // if(OldPullerName == PullerName) { - char errbuff[MYSQL_ERRMSG_SIZE]; - char *Query = 0; - - if (!database.RunQuery(Query, MakeAnyLenString(&Query, "UPDATE group_leaders SET puller='' WHERE gid=%i LIMIT 1", - GetID()), errbuff)) - LogFile->write(EQEMuLog::Error, "Unable to clear group main puller: %s\n", errbuff); - - safe_delete_array(Query); + std::string query = StringFormat("UPDATE group_leaders SET puller = '' WHERE gid = %i LIMIT 1", GetID()); + auto results = database.QueryDatabase(query); + if (!results.Success()) + LogFile->write(EQEMuLog::Error, "Unable to clear group main puller: %s\n", results.ErrorMessage().c_str()); if(!toggle) { for(uint32 i = 0; i < MAX_GROUP_MEMBERS; ++i) { From ef1f1562f004e0d223fa5767dc3e26f900d78c9b Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Fri, 5 Sep 2014 16:13:50 -0700 Subject: [PATCH 7/8] DelegateMarkNPC converted to QueryDatabase --- zone/groups.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/zone/groups.cpp b/zone/groups.cpp index 6628d67d5..2e3d8ecb0 100644 --- a/zone/groups.cpp +++ b/zone/groups.cpp @@ -1787,16 +1787,11 @@ void Group::DelegateMarkNPC(const char *NewNPCMarkerName) if(members[i] && members[i]->IsClient()) NotifyMarkNPC(members[i]->CastToClient()); - char errbuff[MYSQL_ERRMSG_SIZE]; - - char *Query = 0; - - if (!database.RunQuery(Query, MakeAnyLenString(&Query, "UPDATE group_leaders SET marknpc='%s' WHERE gid=%i LIMIT 1", - NewNPCMarkerName, GetID()), errbuff)) - LogFile->write(EQEMuLog::Error, "Unable to set group mark npc: %s\n", errbuff); - - safe_delete_array(Query); - + std::string query = StringFormat("UPDATE group_leaders SET marknpc = '%s' WHERE gid = %i LIMIT 1", + NewNPCMarkerName, GetID()); + auto results = database.QueryDatabase(query); + if (!results.Success()) + LogFile->write(EQEMuLog::Error, "Unable to set group mark npc: %s\n", results.ErrorMessage().c_str()); } void Group::NotifyMarkNPC(Client *c) From 59618e0038ca2582a678e32c0422222367ed8227 Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Fri, 5 Sep 2014 16:14:28 -0700 Subject: [PATCH 8/8] UnDelegateMarkNPC converted to QueryDatabase --- zone/groups.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/zone/groups.cpp b/zone/groups.cpp index 2e3d8ecb0..6c0200250 100644 --- a/zone/groups.cpp +++ b/zone/groups.cpp @@ -1868,15 +1868,12 @@ void Group::UnDelegateMarkNPC(const char *OldNPCMarkerName) NPCMarkerName.clear(); - char errbuff[MYSQL_ERRMSG_SIZE]; - char *Query = 0; + std::string query = StringFormat("UPDATE group_leaders SET marknpc = '' WHERE gid = %i LIMIT 1", GetID()); + auto results = database.QueryDatabase(query); + if (!results.Success()) + LogFile->write(EQEMuLog::Error, "Unable to clear group marknpc: %s\n", results.ErrorMessage().c_str()); - if (!database.RunQuery(Query, MakeAnyLenString(&Query, "UPDATE group_leaders SET marknpc='' WHERE gid=%i LIMIT 1", - GetID()), errbuff)) - LogFile->write(EQEMuLog::Error, "Unable to clear group marknpc: %s\n", errbuff); - - safe_delete_array(Query); } void Group::SaveGroupLeaderAA()