mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-31 09:06:46 +00:00
Fixed IsRaidMemberBot to remove memory leak
Fixed altcombat crash though RaidMainAssist (428) needs fixing
This commit is contained in:
@@ -428,6 +428,10 @@ void Bot::AI_Process_Raid()
|
|||||||
auto assist_mob = raid->GetRaidMainAssistOneByName(this->GetName());
|
auto assist_mob = raid->GetRaidMainAssistOneByName(this->GetName());
|
||||||
bool find_target = true;
|
bool find_target = true;
|
||||||
|
|
||||||
|
if (!assist_mob) {
|
||||||
|
bot_owner->Message(Chat::Yellow, "Assist Mob is nullptr");
|
||||||
|
}
|
||||||
|
|
||||||
if (assist_mob) {
|
if (assist_mob) {
|
||||||
|
|
||||||
if (assist_mob->GetTarget()) {
|
if (assist_mob->GetTarget()) {
|
||||||
|
|||||||
+25
-6
@@ -1546,12 +1546,30 @@ void Raid::SendAllRaidLeadershipAA()
|
|||||||
|
|
||||||
bool Raid::IsRaidMemberBot(Client* client)
|
bool Raid::IsRaidMemberBot(Client* client)
|
||||||
{
|
{
|
||||||
if (client->CastToBot()->GetBotID() == 0) {
|
std::string query = StringFormat("SELECT mob_type FROM vw_bot_character_mobs WHERE name = '%s' LIMIT 1",
|
||||||
return false;
|
client->GetCleanName());
|
||||||
|
auto results = database.QueryDatabase(query);
|
||||||
|
|
||||||
|
if (!results.Success())
|
||||||
|
return true; //return true to avoid sending a packet to a non-existant client as a failsafe
|
||||||
|
|
||||||
|
if (results.RowCount() == 0) {
|
||||||
|
LogError(
|
||||||
|
"Error getting B/C info for character name [{}] for IsRaidMemberBot. Error [{}]",
|
||||||
|
client->GetCleanName(),
|
||||||
|
results.ErrorMessage().c_str()
|
||||||
|
);
|
||||||
|
return true;//return true to avoid sending a packet to a non-existant client as a failsafe
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
auto row = results.begin();
|
||||||
return true;
|
const char* c = "C";
|
||||||
|
const char* b = "B";
|
||||||
|
if (strcmp(row[0], c) == 0) {
|
||||||
|
return false; // client is a client
|
||||||
|
}
|
||||||
|
else if (strcmp(row[0], b) == 0) {
|
||||||
|
return true; // client is actually a bot
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Raid::LockRaid(bool lockFlag)
|
void Raid::LockRaid(bool lockFlag)
|
||||||
@@ -2036,9 +2054,10 @@ Mob* Raid::GetRaidMainAssistOneByName(const char* name)
|
|||||||
Raid* raid = entity_list.GetRaidByBotName(name);
|
Raid* raid = entity_list.GetRaidByBotName(name);
|
||||||
std::vector<RaidMember> raid_members = raid->GetMembers();
|
std::vector<RaidMember> raid_members = raid->GetMembers();
|
||||||
|
|
||||||
for (RaidMember& iter : raid_members)
|
for (RaidMember iter : raid_members)
|
||||||
{
|
{
|
||||||
if (iter.IsRaidMainAssistOne)
|
if (iter.IsRaidMainAssistOne)
|
||||||
return iter.member->CastToMob();
|
return iter.member->CastToMob();
|
||||||
}
|
}
|
||||||
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user