Вот, что получилось:
Код:
bool GOHello_go_andorhal_tower(Player* pPlayer, GameObject* pGo)
{
if (pPlayer->GetQuestStatus(QUEST_ALL_ALONG_THE_WATCHTOWERS_ALLIANCE) == QUEST_STATUS_INCOMPLETE || pPlayer->GetQuestStatus(QUEST_ALL_ALONG_THE_WATCHTOWERS_HORDE) == QUEST_STATUS_INCOMPLETE)
{
std::list<Unit*> targets;
MaNGOS::AnyUnitInObjectRangeCheck u_check(pPlayer, 1.0f);
MaNGOS::UnitListSearcher<MaNGOS::AnyUnitInObjectRangeCheck> searcher(pPlayer, targets, u_check);
Cell::VisitAllObjects(pPlayer, searcher, 1.0f);
uint32 aEntry[] = {NPC_ANDORHAL_TOWER_ONE, NPC_ANDORHAL_TOWER_TWO, NPC_ANDORHAL_TOWER_THREE, NPC_ANDORHAL_TOWER_FOUR};
int i;
for(std::list<Unit *>::iterator tIter = targets.begin(); tIter != targets.end(); tIter++)
{
for(i = 0; i < 4; i++)
{
if((*tIter)->GetEntry() == aEntry[i])
{
pPlayer->KilledMonsterCredit((*tIter)->GetEntry(), 0);
}
}
}
}
return false;
}
Радиус поставил 1 метр, поэтому в текущем варианте не сработает.
Если поставить радиус 25, то проблем не будет, но кастовать надо в проходе.
Самый простой вариант - переставить го в точки к нпц, тогда должно работать без проблем.
1. Почему не отрабатывает активация го на расстоянии, а только в упор?
2. Как и где в ядре править ошибки при выходе игрока из игры:
Код:
ERROR:Delete Gameobject (Entry: 176093 Guid: 200005) with SpellId 17016 LinkedGO 0 that lost references to owner Player (Guid: 3176) GO list. Crash possible later.
3. Как еще можно оптимизировать скрипт?