Ich habe aus Spass mal alle Quests für die Horde und Allianz freigegeben. Das klappt auch wunderbar wenn nicht gerade Fraktionsruf belohnung dabei ist /emoticons/default_smile.png (Wachen etc sind auch freundlich).
Nun habe ich aber das Problem das wenn ein Hordler in SW ist und gerne Blizzard Airline nutzen möchte, das dies nicht geht obwohl dann ein Fenster aufspring und Routen anzeigt.
Nun zu meiner Frage: “Ich möchte gerne die Flugpunkte wie in Nordend für alle Fraktionen freigeben, wie mache ich das am besten? Datenbank? Oder C++”? Weil wenn ich auf einen Flugpunkt klicke, dann heist es der Flugmeister ist zu weit weg. Ist klar… da der wohl vom Hordepunkt ausgeht… ^^.
EDIT: Ich habe den Bereich mal auskommentiert und neu compiliert. Cache gelöscht und es mit einem Alli mal im Basislager von Grom’Gol im Schlingendorntal ausprobiert. Es kommt die Meldung das der Flugpunkt nun hinzugefügt wurde. Nur wenn ich ihn erneut anklicke, dann öffnet sich ein Fenster in dem z.B. Nur Sturmwind zu sehen ist. Klicke drauf und er sagt mir “Ihr seid zu weit vom Flugmeister entfernt!”.
Fazit: Also Basislager wurde schonmal nicht geaddet. Dewegen dann warscheinlich auch die Meldung mit der Entfernung. Oder was denkt ihr?
Du kannst vom Basislager aber auch nicht zum Basislager fliegen… Du brauchst da schon nen anderen Punkt für (der auch noch in Reichweite liegt, glaub das waren 1000yd’s maximal)
WorldSession::HandleTaxiQueryAvailableNodes ruft WorldSession::SendLearnNewTaxiNode auf, was wiederum die Fraktionsüberprüfung über ObjectMgr::GetNearestTaxiNode löst. Genau diese Überprüfung haben wir mit dem auskommentieren/löschen übersprungen, weshalb uns das keine Probleme macht.
An dem Ally/Horde Unterschied sollte es also nicht liegen. Player::GetNPCIfCanInteractWith wird aufgerufen, bevor das TaxiMenü angezeigt wird, weshalb dieser Check bei dir ebenfalls erfolgreich durchläuft (das ist die Funktion, die anhand des Rufs für die Freund-Feind Relation sorgt)
Wüsste also nicht, woran dein Vorhaben scheitern sollte
Glaub nicht, dass das in Yards gemessen wird, sondern einfach in gibt Route, oder gibt keine Route. Aber wie auch immer, sollte man zum Testen in der Tat zwei benachbarte Flugpunkte nutzen. Ne Variante zum testen, die mir da spontan einfallen würde, wäre Gadgetzan. Als Hordler den Horde FP “erkunden” und dann zum Alli FP auf der anderen Seite laufen. Wobei da wiederum keine Route vorhanden ist. Hmhmhm…Versuch es doch einfach mal über die Configoption, dass direkt ab Start alle Flugpunkte verfügbar sind.
Also das ich alle Flugpunkte Aktivieren kann, das finde ich nicht in der Config. Nur all Maps on Start oder sowas aber nix mit Taxi oder Flight zu finden!
Na gut, ich muss zugeben, dass diese Configoption in der tat irgendwie deplatziert scheint. Für meinen Begriff gehört das auch eher in die Custom Section, aber gut, die Wege des TC Devs sind zumeist unergründlich.
Ok habe es mit den ganzen Flugpaths versucht. Beutebucht alli punkt und Alli lager im Schlingendorntal.
Ich befinde mich im Momment im Rebellenlager der Allianz. Nun klicke ich den an und bekomme als derzeitigen Punkt Grom’Gol angezeigt. Daher dann auch die Meldung das ich zuweit entfernt bin.
Irgendwo muß noch überprüft werden ob ich Horde bin!?
Möchte ich vom Rebellenlager zum Grabmal fliegen, dann heist es zuwenig Geld. Adde ich Geld, dann heist es wie gewohnt “Ihr seid zu weit vom Flugmeister entfernt!”.
Ich habe das Gefühl das die Flugpunkte mit z.B. 1 für Alli gespeichert wird oder 0 für Horde. Denn als Hordler sehe ich immer nur Horde Punkte, egal ob der ali punkt endeckt wurde. Und umgekehrt nur Alli Punkte!
EDIT: Sind die Flugpunkte vieleicht DBC beschränkt? Wenn man einen neuen Flugpunkt erstellen möchte, dann muß man doch auch in den DBC’s rumfummeln oder irre ich mich?
Ich habe die Zeile auskommentiert. Aber ob es mit kompiliert wird, kann ich ja ansich nicht kontrollieren. Außer ich lösche die Zeilen einfach mal… aber warum sollte der Compiler das mitnehmen. Ist ja nun ein Kommentar!
Ich habe aber die Mount Einstellung (DisplayID für horde oder ALLI) nicht auskommentiert.
uint32 mount_id = 0;
// select mount creature id
TaxiNodesEntry const* node = sTaxiNodesStore.LookupEntry(id);
if (node)
{
uint32 mount_entry = 0;
if (team == ALLIANCE)
mount_entry = node->MountCreatureID[1];
else
mount_entry = node->MountCreatureID[0];
// Fix for Alliance not being able to use Acherus taxi
// only one mount type for both sides
if (mount_entry == 0 && allowed_alt_team)
{
// Simply reverse the selection. At least one team in theory should have a valid mount ID to choose.
mount_entry = team == ALLIANCE ? node->MountCreatureID[0] : node->MountCreatureID[1];
}
CreatureTemplate const *mount_info = GetCreatureTemplate(mount_entry);
if (mount_info)
{
mount_id = mount_info->GetRandomValidModelId();
if (!mount_id)
{
sLog->outErrorDb("No displayid found for the taxi mount with the entry %u! Can't load it!", mount_entry);
return false;
}
}
}
// minfo is not actually used but the mount_id was updated
sObjectMgr->GetCreatureModelRandomGender(&mount_id);
return mount_id;
}[/CODE]
Hm wenn man vom Grater von Ungruro nach Getgezan fliegt, dann ist ja fast schon nebeneinander ein Horde und ein Alli Flugpunkt. Wenn man als Alli losfliegt, dann wird man beim Alli Master abgeworfen. Und wenn man als Hordler fliegt, dann wird man beim Horde Master abgeworfen. Also woher weiß nun nachdem wir die Fraktionsbeschränkung entfernt haben, welchen Flug Path der nutzen soll? Also muß doch irgendwo noch was überprüft werden oder irre ich mich jetzt total?
Ich vermute einfach mal, dass die Routen alle clientseitig sind und der Server nur speichert, welche der Teilrouten entdeckt worden sind.
Müsste man sich halt mal in den DBC’s anschauen, was da so alles bezüglich TaxiFlights gespeichert wird.
Wenn das z.B. mit ID’s gelöst wird und Horde und Allianz verschiedene ID’s nutzen, wirst du nicht weiterkommen.
Da müsstest du dir dann schon nen NPC bauen, der die Flüge per Gossipmenü anbietet. Den Char per Script auf ne Flugroute zu packen dürfte nicht das Problem sein