Hi,
ich habe 2 Funktionen als EVENTFUNC geschrieben, welche sich gegenseitig aufrufen müssen.
EVENTFUNC 1 wartet nach dem spawnen von einem Mob n Sekunden und lässt den Mob dann zu Koordinaten x, y laufen. Der Mob soll in der Lage sein verschiedene Koordinatenpaare nacheinander anzusteuern.
- [...]
- for (const auto& waypoint : merchantObject["waypoints"])
- {
- moveToCoordinates.push_back(std::make_pair(waypoint["wx"], waypoint["wy"]));
- }
- merchant->coordinates = moveToCoordinates;
- const CMob* p = CMobManager::instance().Get(merchant->vnum);
- if (p)
- {
- if (fromMapInit && merchant->spawnAtMapInit)
- {
- SECTREE_MANAGER::instance().InsertNPCPosition(lMapIndex,
- p->m_table.bType,
- p->m_table.szLocaleName,
- (merchant->sx + merchant->ex) / 2 - base_x,
- (merchant->sy + merchant->ey) / 2 - base_y);
- LPCHARACTER ch = merchant_spawn(merchant);
- if (ch)
- {
- merchant_event_info* info = AllocEventInfo<merchant_event_info>();
- info->ch = ch;
- info->waypoints = moveToCoordinates;
- info->base_x = base_x;
- info->base_y = base_y;
- ch->m_pkMerchantWalkEvent = event_create(MerchantWalkEvent, info, PASSES_PER_SEC(45));
- }
- }
- }
- [...]
EVENTFUNC 2 wird im Anschluss augerufen und checkt periodisch ob der Mob an seiner Position agekommen ist.
- EVENTFUNC(MerchantDestinationCheck)
- {
- merchant_destination_event_info* info = dynamic_cast<merchant_destination_event_info*>(event->info);
- if (info == NULL)
- {
- sys_err("<MerchantDestinationCheck> <Factor> Null pointer");
- return 0;
- }
- LPCHARACTER ch = info->ch;
- if (ch == NULL)
- {
- return 0;
- }
- if ((ch->GetX() != info->destX) || (ch->GetY() != info->destY)) { // <Factor>
- return PASSES_PER_SEC(3);
- }
- else
- {
- ch->m_pkMerchantDestinationCheckEvent = NULL;
- if (info->waypoints.size() > 1)
- {
- merchant_event_info* newMoveInfo = AllocEventInfo<merchant_event_info>();
- newMoveInfo->ch = ch;
- newMoveInfo->waypoints = info->waypoints;
- newMoveInfo->base_x = info->base_x;
- newMoveInfo->base_y = info->base_y;
- ch->m_pkMerchantWalkEvent = event_create(MerchantWalkEvent, info, PASSES_PER_SEC(45));
- }
- return 0;
- }
- }
In der EVENTFUNC 2 bekomme ich beim komplieren nun den Fehler, dass Funktion MerchantWalkEvent nicht deklariert ist -> Problem in der Reihenfolge des Codes, habe ich aber genau so wenn ich die reihenfolge der Deklarationen verschiebe bzw. tausche.
Wie würdet ihr mit dem Kram umgehen?
Bin ein idiot, habe vercheckt die Funktionen im header File zu deklarieren...