From ac36231adcaced2285c2fb0ed36efa758cddda6a Mon Sep 17 00:00:00 2001 From: "Bogir[rus]" Date: Fri, 8 Apr 2022 17:47:01 +0500 Subject: [PATCH] fix check if GuildName is already taken by other guild fixed NPE `if (!player) ... player->GetName()` --- src/RandomPlayerbotFactory.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/RandomPlayerbotFactory.cpp b/src/RandomPlayerbotFactory.cpp index d961b290..910eaa6c 100644 --- a/src/RandomPlayerbotFactory.cpp +++ b/src/RandomPlayerbotFactory.cpp @@ -497,6 +497,12 @@ void RandomPlayerbotFactory::CreateRandomGuilds() if (guildName.empty()) continue; + if (sGuildMgr->GetGuildByName(guildName)) + { + LOG_WARN("playerbots", "GuildName %s is busy. Skipped...", guildName.c_str()); + continue; + } + if (availableLeaders.empty()) { LOG_ERROR("playerbots", "No leaders for random guilds available"); @@ -508,14 +514,16 @@ void RandomPlayerbotFactory::CreateRandomGuilds() Player* player = ObjectAccessor::FindPlayer(leader); if (!player) { - LOG_ERROR("playerbots", "Cannot find player for leader {}", player->GetName().c_str()); + LOG_ERROR("playerbots", "ObjectAccessor Cannot find player to set leader for guild {} . Skipped...", guildName.c_str()); continue; } Guild* guild = new Guild(); if (!guild->Create(player, guildName)) { - LOG_ERROR("playerbots", "Error creating guild {}", guildName.c_str()); + // it very strange, but sometimes Guild can't be created by unknown reason + // We already checked that player is exists and guildName are correct + LOG_ERROR("playerbots", "Error creating guild [ {} ] with leader [ {} ]", guildName.c_str(), player->GetName().c_str()); delete guild; continue; }