Automatisches Abmounten von Vehiceln

Hallo,

folgendes Problem: Ich wollte mit mal die Vehicle Quests in Gilneas anschauen, also z.B die bei der man Krennan Aranas vom Baum retten muss , Lord Darius Crowley die Worgen zusammen Treiben oder wenn man die Quest ‘Zum Graumähnenanwese’. Bei allen dreien Gibt es ein Pferd als Vehicle und über script_waypoints lass ich sie, nach dem der Spieler aufgemountet ist ihren Weg ablaufen.

Soweit funktioniert das auch alles. Nur passiert nun folgendes:

Bei Krennan Aranas wurde der Spielcharakter nachdem er die Treppe runterlief mit dem Vehicle, also kurz vor dem Baum, einfach Abgemountet.

Darius Crowler dort wurde der Spieler abgemountet als es galt eine Brücke zu überqueren, dabei direkt beim Anfang der steigerung.

Daher dachte ich dabei, das es vielleicht ein Problem mit der Update der z koordinate zu tun hat und dann der core denkt, der spieler sei zu weit weg vom Vehicle.

Aber nun kommt der Punkt:

Bei der letzten Quest, also zum gräumahnenanwesen, passiert der Auto dismount sobald man das Tor verlässt und es einen Zonen/Area Update gibt, also von Dämmerhafen zu Gilneas.

Auch jegliche art von Logs auszuwerten hat nicht sehr viel gebracht. Im Log zu den Vehiclen steht nur das Uninstall, RemoveAllPassenger und Reset aufgerufen wird. Vermutlich hier da der Spieler abgemountet wird. Im Script log zu dem EscordAI Script, steht nur dass das Vehicle den nächsten Waypoint ansteuern wollte.

Ab dem Punkt bin ich aufgeschmissen, da ich hier einfach nicht weiter komme und ich auch aktuell keine wirkliche idee mehr haben könnte woran das liegt…

Hat da jemand vielleicht eine Idee?

Setzte mal einen Breakpoint in Visual Studio bei [COLOR=rgb(40,40,40)]RemoveAllPassenger (musst im Debug mode compilen)… am Stracktrace wirst du dann sehen warum er dich abmountet.

mhm habs mal unter linux mit gdb versucht… aber nicht wirklich was mit rausbekommen. Unter windows wills einfach nicht laufen. Immer wirft er mich mit fehler voll bei ner error.hpp vom boost. Hab da schon Boost zwei mal neuinstalliert, mit cmake oefters mal neu erstellt bringt aber nichts.

Zwar wuerde ich vermutlich unter Windows eher was finden koennen, da ich mich da mit dem Debugger besser auskenne als mit gdb… aber laesst sich nichts machen…

werd mal schauen ob ich da auch nen stracktrace hinbekomme

Wenn du möchtest würde ich da mal drüber schauen, du kannst mir deinen Skype Nick per PM schicken oder mich im IRC anschreiben.

hast eine pm

Kurze Info, funktioniert immer noch nicht und ich bin immer noch am suchen woran das liegen kann, da leider das debuggen durch diverse boost errors nicht so will wie er sollte, such ich immer noch von “hand”

Und da 434 branch nicht aktiv von tc entwickelt wird, wurde auch das ticket dort geschlossen und fuer den 6.x.x branch kann ich es leider nicht testen ob es dort auch nicht geht oder obs dort geht…

soweit bin ich nun gekommen:

Es wird die _ExitVehicle() funktion der Unit aufgerufen, diese wird von der Funktion HandleAuraControlVehicle() aufgerufen. Aber ab hier verliere ich dann die spur und kann nur noch mutmaßen woran es liegen mag. Da das Abmounten am Haeufigsten bei einem Areawechsel passiert, nehme ich an, das irgendwie die Aura dabei einfach vom Charakter geloescht wird und dadurch das Abmounten ausgeloest wird. Was aber nicht dazu passt, ist das es beim ersten mal, wo mir dieses Problem untergekommen ist keinerlei Zonen/Area wechsel gab. Dennoch ist sicher das es am haeufigsten bei einem Wechsel des Gebietes passiert, waehre als ein guter ansatz dort anzufangen.

Problem ist: Ich weiss nicht wieso er die Aura loescht, sie ist nicht Gebietsgebunden(http://www.wowhead.com/spell=46598/ride-vehicle-hardcoded und diese wird scheinbar fast ueberal von blizz genutzt) oder hat sonst einschraenkungen.

Da sie aber definitiv immer beim wechsel entfernt wird, muss irgendwas sein, das die loeschung der Aura ausloest. Da gibt es ja in der player.cpp die Funktion UpdateAreaDependentAuras und UpdateZoneDependentAuras aber da kann ich nicht sagen, ob da alles passt oder nicht, fuer mich sieht es jeden falls aus, als wuerde da alles passen.

Was aber auch noch sein koennte ist, das die Creature die als Vehicle dienst selbst beim Gebiets wechsel despawnt wird, wodurch dann natuerlich auch die Handle funktion aufgerufen wird. Aber hier wuesste ich absolut gar nicht, wo sowas durch ein Gebietswechsel aufgerufen werden sollte.

Werde dennoch weiter schaun, aber im momment glaube ich nicht das ich da noch besonders viel weiter kommen werde, außer mit geht da ein lichtblick auf^^

ok nachtrag,das mit dem despawn der creature stimmt nicht (ganz) da die nach dem Abwerfen des Spielers weiter ihren vorgegebene Weg folgen und an der Funktion UpdateAreaDependentAuras kann es auch nicht liegen, da der Punkt an dem Auren entfernt werden dabei nicht aufgerufen wird.

Muss also an irgendwas anderem liegen…

edit2: habs auch mit der aktuellen version vom branch 434 getestet(hash: a3a7d65c20cd92466309ee122c6d5032a869f0ab) auch dabei passiert das mit dem abmounten.

ok, habe nun noch ein paar mehr Infos:

Bei Vehiceln die der Spieler selbst steuern kann, erfolgt das Abmounten vom Vehicle (fast) nur dann, wenn er einen Gebietswechsel durchfuert Dazu ist mir, durch die gegebenheit vor Ort folgendes Aufgefallen: Solang sich der Spielcharakter mit dem Vehicle das er selbst kontrolliert in dem gleichen Gebiet befindet funktioniert alles, wenn er aber nun auf einen Steg faehrt wo dadrunter wasser ist und dannach wieder zurueck aufs Land wird er nach ca. 2 - 3 Metern abgemountet.

Ich weiss nun nicht, ob es da irgendwie eine Player Postions Update funktion gibt, die auch irgendwas mit Auren anstellt.

Was auch ist: Wird das Vehicle vom core gesteuert, also ueber script_waypoints, so erfolgt das Abmounten auch innerhalb des gleichen Gebietes, wird das Vehicle vom Player gesteuert nicht. Aber dafuer halt dann auf jeden fall bei einem Gebietswechsel oder rueckkehr von Gebiet mit wasser darunter.

Daran hat sich nichts geändert, ohne sauberes Debugging kannst du es letztendlich auch nur erraten.