Merge pull request #245 from addtheice/RunQueryToDatabaseQuery_zone_groups

Run query to database query zone groups
This commit is contained in:
Alex 2014-09-25 17:26:13 -07:00
commit ea6ef4c283

View File

@ -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 if (members[i] != nullptr && members[i]->IsClient()) { // If Group Member is Client
Client *c = members[i]->CastToClient(); Client *c = members[i]->CastToClient();
//I could not get MoneyOnCorpse to work, so we use this //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()); c->Message(2, msg.c_str());
} }
} }
@ -969,31 +969,28 @@ void Group::TeleportGroup(Mob* sender, uint32 zoneID, uint16 instance_id, float
} }
bool Group::LearnMembers() { bool Group::LearnMembers() {
char errbuf[MYSQL_ERRMSG_SIZE]; std::string query = StringFormat("SELECT name FROM group_id WHERE groupid = %lu", (unsigned long)GetID());
char* query = 0; auto results = database.QueryDatabase(query);
MYSQL_RES *result; if (!results.Success())
MYSQL_ROW row; return false;
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);
i++; if (results.RowCount() == 0) {
} LogFile->write(EQEMuLog::Error, "Error getting group members for group %lu: %s", (unsigned long)GetID(), results.ErrorMessage().c_str());
mysql_free_result(result); 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() { void Group::VerifyGroup() {
@ -1077,7 +1074,7 @@ void Group::HealGroup(uint32 heal_amt, Mob* caster, int32 range)
if (!range) if (!range)
range = 200; range = 200;
float distance; float distance;
float range2 = range*range; float range2 = range*range;
@ -1114,10 +1111,10 @@ void Group::BalanceHP(int32 penalty, int32 range, Mob* caster, int32 limit)
return; return;
if (!range) if (!range)
range = 200; range = 200;
int dmgtaken = 0, numMem = 0, dmgtaken_tmp = 0; int dmgtaken = 0, numMem = 0, dmgtaken_tmp = 0;
float distance; float distance;
float range2 = range*range; float range2 = range*range;
@ -1164,16 +1161,16 @@ void Group::BalanceMana(int32 penalty, int32 range, Mob* caster, int32 limit)
return; return;
if (!range) if (!range)
range = 200; range = 200;
float distance; float distance;
float range2 = range*range; float range2 = range*range;
int manataken = 0, numMem = 0, manataken_tmp = 0; int manataken = 0, numMem = 0, manataken_tmp = 0;
unsigned int gi = 0; unsigned int gi = 0;
for(; gi < MAX_GROUP_MEMBERS; gi++) 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]); distance = caster->DistNoRoot(*members[gi]);
if(distance <= range2){ if(distance <= range2){
@ -1341,15 +1338,12 @@ void Group::DelegateMainTank(const char *NewMainTankName, uint8 toggle)
} }
if(updateDB) { if(updateDB) {
char errbuff[MYSQL_ERRMSG_SIZE];
char *Query = nullptr; std::string query = StringFormat("UPDATE group_leaders SET maintank = '%s' WHERE gid = %i LIMIT 1",
MainTankName.c_str(), GetID());
if (!database.RunQuery(Query, MakeAnyLenString(&Query, "UPDATE group_leaders SET maintank='%s' WHERE gid=%i LIMIT 1", auto results = database.QueryDatabase(query);
MainTankName.c_str(), GetID()), errbuff)) if (!results.Success())
LogFile->write(EQEMuLog::Error, "Unable to set group main tank: %s\n", errbuff); LogFile->write(EQEMuLog::Error, "Unable to set group main tank: %s\n", results.ErrorMessage().c_str());
safe_delete_array(Query);
} }
} }
@ -1390,15 +1384,13 @@ void Group::DelegateMainAssist(const char *NewMainAssistName, uint8 toggle)
} }
if(updateDB) { 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);
} }
} }
@ -1439,15 +1431,13 @@ void Group::DelegatePuller(const char *NewPullerName, uint8 toggle)
} }
if(updateDB) { 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);
} }
} }
@ -1593,15 +1583,11 @@ void Group::UnDelegateMainTank(const char *OldMainTankName, uint8 toggle)
// informing them of the change and update the group_leaders table. // informing them of the change and update the group_leaders table.
// //
if(OldMainTankName == MainTankName) { if(OldMainTankName == MainTankName) {
char errbuff[MYSQL_ERRMSG_SIZE];
char *Query = 0; std::string query = StringFormat("UPDATE group_leaders SET maintank = '' WHERE gid = %i LIMIT 1", GetID());
auto results = database.QueryDatabase(query);
if (!database.RunQuery(Query, MakeAnyLenString(&Query, "UPDATE group_leaders SET maintank='' WHERE gid=%i LIMIT 1", if (!results.Success())
GetID()), errbuff)) LogFile->write(EQEMuLog::Error, "Unable to clear group main tank: %s\n", results.ErrorMessage().c_str());
LogFile->write(EQEMuLog::Error, "Unable to clear group main tank: %s\n", errbuff);
safe_delete_array(Query);
if(!toggle) { if(!toggle) {
for(uint32 i = 0; i < MAX_GROUP_MEMBERS; ++i) { for(uint32 i = 0; i < MAX_GROUP_MEMBERS; ++i) {
@ -1647,15 +1633,10 @@ void Group::UnDelegateMainAssist(const char *OldMainAssistName, uint8 toggle)
safe_delete(outapp); safe_delete(outapp);
char errbuff[MYSQL_ERRMSG_SIZE]; std::string query = StringFormat("UPDATE group_leaders SET assist = '' WHERE gid = %i LIMIT 1", GetID());
auto results = database.QueryDatabase(query);
char *Query = 0; if (!results.Success())
LogFile->write(EQEMuLog::Error, "Unable to clear group main assist: %s\n", results.ErrorMessage().c_str());
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);
if(!toggle) if(!toggle)
{ {
@ -1679,15 +1660,11 @@ void Group::UnDelegatePuller(const char *OldPullerName, uint8 toggle)
// informing them of the change and update the group_leaders table. // informing them of the change and update the group_leaders table.
// //
if(OldPullerName == PullerName) { if(OldPullerName == PullerName) {
char errbuff[MYSQL_ERRMSG_SIZE];
char *Query = 0; std::string query = StringFormat("UPDATE group_leaders SET puller = '' WHERE gid = %i LIMIT 1", GetID());
auto results = database.QueryDatabase(query);
if (!database.RunQuery(Query, MakeAnyLenString(&Query, "UPDATE group_leaders SET puller='' WHERE gid=%i LIMIT 1", if (!results.Success())
GetID()), errbuff)) LogFile->write(EQEMuLog::Error, "Unable to clear group main puller: %s\n", results.ErrorMessage().c_str());
LogFile->write(EQEMuLog::Error, "Unable to clear group main puller: %s\n", errbuff);
safe_delete_array(Query);
if(!toggle) { if(!toggle) {
for(uint32 i = 0; i < MAX_GROUP_MEMBERS; ++i) { for(uint32 i = 0; i < MAX_GROUP_MEMBERS; ++i) {
@ -1822,16 +1799,11 @@ void Group::DelegateMarkNPC(const char *NewNPCMarkerName)
if(members[i] && members[i]->IsClient()) if(members[i] && members[i]->IsClient())
NotifyMarkNPC(members[i]->CastToClient()); NotifyMarkNPC(members[i]->CastToClient());
char errbuff[MYSQL_ERRMSG_SIZE]; std::string query = StringFormat("UPDATE group_leaders SET marknpc = '%s' WHERE gid = %i LIMIT 1",
NewNPCMarkerName, GetID());
char *Query = 0; auto results = database.QueryDatabase(query);
if (!results.Success())
if (!database.RunQuery(Query, MakeAnyLenString(&Query, "UPDATE group_leaders SET marknpc='%s' WHERE gid=%i LIMIT 1", LogFile->write(EQEMuLog::Error, "Unable to set group mark npc: %s\n", results.ErrorMessage().c_str());
NewNPCMarkerName, GetID()), errbuff))
LogFile->write(EQEMuLog::Error, "Unable to set group mark npc: %s\n", errbuff);
safe_delete_array(Query);
} }
void Group::NotifyMarkNPC(Client *c) void Group::NotifyMarkNPC(Client *c)
@ -1908,15 +1880,12 @@ void Group::UnDelegateMarkNPC(const char *OldNPCMarkerName)
NPCMarkerName.clear(); 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() void Group::SaveGroupLeaderAA()