Crash bot_druid_ai::doInnervate

Issue #43 resolved
L30m4nc3r created an issue

Comments (17)

  1. trickerer repo owner

    Скорее всего здесь:

                if (!iTarget)//cycle through player members...
                {
                    for (GroupReference* itr = group->GetFirstMember(); itr != NULL; itr = itr->next())
                    {
                        Player* tPlayer = itr->getSource();
    -                    if (tPlayer == NULL || !tPlayer->isInCombat() || tPlayer->isDead()) continue;
    +                    if (tPlayer == NULL || !tPlayer->IsInWorld() || !tPlayer->isInCombat() || tPlayer->isDead()) continue;
                        if (me->GetExactDist(tPlayer) > 30) continue;
                        if (GetManaPCT(tPlayer) < minmanaval && !tPlayer->HasAura(INNERVATE))
                        {
                            iTarget = tPlayer;
                            break;
                        }
                    }
    

    Я уже правил такие ошибки массово, похоже пропустил.

  2. trickerer repo owner

    Алсо какой онлайн? У меня до сих пор были большие сомнения по поводу стабильности ботов, ибо у самого нет возможности опробовать их при нормальном онлайне.

  3. L30m4nc3r reporter

    Онлайн 100+ Вот еще возник краш, но официальные разработчики отрицают что проблема у них и ссылаются на мои кастомные линии в файле. В worldsession.cpp у меня присутствуют только боты. https://github.com/TrinityCore/TrinityCore/issues/9604

  4. trickerer repo owner

    К ботам явно не относится. Этот мод не манипулирует объектами внутри сессии и использует стандартные функции для логина/логаута ботов, так что инвалидный указатель на игрока здесь связан с чем-то другим. Единственный объект, который добавляется в сессию - m_master (указатель на владельца), но он ядром не используется

  5. trickerer repo owner

    Сегодня получил такой же краш при онлайне 0 (то есть при логауте).
    WorldSession.cpp:L176

        ss << "[Player: " << GetPlayerName()
           << " (Guid: " << (_player != NULL ? _player->GetGUID() : 0)
           << ", Account: " << GetAccountId() << ")]";
    

    краш в строке 177

           << " (Guid: " << (_player != NULL ? _player->GetGUID() : 0)
    

    При этом _player = 0x00000000.
    Скорее всего это мультитрединг.

  6. trickerer repo owner

    bot_druid_ai.cpp:L666

                        }
                    }
                }
    -            if (!iTarget)//cycle through player members...
    +            if (!iTarget && group)//cycle through player members...
                {
                    for (GroupReference* itr = group->GetFirstMember(); itr != NULL; itr = itr->next())
                    {
                        Player* tPlayer = itr->getSource();
                        if (tPlayer == NULL || !tPlayer->IsInWorld() || !tPlayer->isInCombat() || tPlayer->isDead()) continue;
                        if (me->GetExactDist(tPlayer) > 30) continue;
                        if (GetManaPCT(tPlayer) < minmanaval && !tPlayer->HasAura(INNERVATE))
                        {
                            iTarget = tPlayer;
                            break;
                        }
                    }
                }
    -            if (!iTarget)//... and their bots.
    +            if (!iTarget && group)//... and their bots.
                {
                    for (GroupReference* itr = group->GetFirstMember(); itr != NULL; itr = itr->next())
                    {
                        Player* tPlayer = itr->getSource();
    

    Эпичный фейл

  7. trickerer repo owner

    Это просто. Список аур которые могут быть диспеллены формируется с использованием внутренних функций Тринити. Так что бот пытается снять всё что можно снять.
    По поводу энвенома это конечно странно (это разрабам ответ держать).
    У меня сейчас сессия так что посмотрю потом как адартировать формирование дипел листа под ботов.

  8. trickerer repo owner

    Игрок уничтожен во время обновления, понятия не имею как у тебя это возможно.

    000000013FDA49E9  000000002E40FB90  Object::HasFlag+49  e:\addons_28_03_2013\src\server\game\entities\object\object.cpp line 1205
        Local  <user defined> 'this' = 0
    
  9. Log in to comment