Logo AeK Script-Wiki Logo AeK Script-Wiki Logo AeK Script-Wiki

ShowQuestMarker

Fehlerbeschreibung

BlueByte (BB) hat mit Patch 1.3 das interne Objective.Distance verändert, um auch Entitäten zu erfassen, die erst im Spielverlauf ersetzt/erstellte werden. Dieses Objective findet Verwendung im Verhalten Goal_Knightdistance. Wenn dieses Objective in einer sichtbaren Quest verwendet wird, soll eigentlich über dem Ziel ein spezieller Marker erzeugt werden, der dem Spieler anzeigt wo er (meistens) den Helden hinbewegen soll.
Durch die Änderung seitens BB funktioniert dieses nicht mehr, da der dafür zuständigen Funktion ShowQuestMarker() irrtümlich nur der Scriptname übergeben wird, den sie aber nicht selbstständig zu einer notwendigen EntityID umwandelt.
Daher werden bei Verwendung der OriginalQSB von BB oder WikiQBS-Versionen vor 2.4 keine Questmarker mehr angezeigt.

Behebung

WikiQSB-Versionen ab 2.4 beheben diesen Fehler automatisch. Bei Verwendung dieser Versionen ergibt sich keine Notwendigkeit für weitere Massnahmen, auch im Script eingesetzte Objective.Distance verhalten sich dann wunschgemäss. (zeigen also Questmarker)

Wer ältere oder gar keine WikiQSB verwenden will, sollte in das globale Script folgenden Fix an einer freien Stelle einfügen:

function ShowQuestMarker(_Entity)
	local entityID = GetEntityId(_Entity)
    local x,y = Logic.GetEntityPosition(entityID)
    local Marker = EGL_Effects.E_Questmarker_low
    if Logic.IsBuilding(entityID) == 1 then
        Marker = EGL_Effects.E_Questmarker
    end
    Questmarkers[_Entity] = Logic.CreateEffect(Marker, x,y,0)
end

Eine zusätzliche Ergänzung deaktiviert den Marker wenn die Quest versteckt ist. Ab QSB 3.0 Beta 5 wird auch ein zusätzlicher Parameter ins Goal_KnightDistance aufgenommen, um den Marker auch bei sichtbaren Quests bei Bedarf abzuschalten.

function QuestTemplate:ShowQuestMarkers()
	if self.Visible then
		for i=1, self.Objectives[0] do
			if self.Objectives[i].Type == Objective.Distance and (not self.Objectives[i].Data[3]) then
				ShowQuestMarker(self.Objectives[i].Data[2])
			end
		end
	end
end

Anmeldung/ Registrierung

Passwort vergessen? Kein Problem: Sende neues Passwort

· Zuletzt geändert: 13/01/2009 17:44 von jadzia (1254 views)