Charaktäre dem Helden folgen lassen

Manchmal möchte man dem Ritter von anderen Charaktären verfolgen lassen. Sei es ein Tier, dass dem Ritter folgt, ein NPC einer anderen Partei oder ein Zweitritter. In diesem Beispiel erfährst du, wie du dies umsetzen kannst.

Einfache verfolgung

Eine einfache Möglichkeit eine Einheit dem Ritter folgen zu lassen, ist die Funktion Logic.MoveSettler zu verwenden. Du brauchst einen SimpleJob, der für dich die Bedingungen prüft und die Entities zu ihrem Ziel bewegt.

function SimpleRelativeToPosition()
    if not IsNear("follower","klight",500) and Logic.IsEntityMoving(GetID("follower")) == false then
        local eID = GetEntityId("follower")
        local pos = GetPosition("knight")
        Logic.MoveSettler(eID,pos.X,pos.Y)
    end
end

Wenn die Entity mit dem Namen follower von der Entity knight mehr als 500 scm entfernt ist, bewegt sie sich zu dieser hin.

Aufgerufen wird der Job mit folgender Zeile an einer beliebigen Stelle im Skript:

g_FollowKnightJob = StartSimpleJob("SimpleRelativeToPosition")

g_FollowKnightJob speichert die JobID, mit der du die Verfolgung jeder Zeit abbrechen kannst.

EndJob(g_FollowKnightJob)

Verfolgung mit MoveEntityToPositionToAnotherOne

Das folgende Beispiel verwendet die Funktion MoveEntityToPositionToAnotherOne, die du zuerst in dein Skript kopieren musst!

Außerdem brauchst du die Funktion GetDistance!

Diese leicht zu verwendende Funktion bewirkt, dass ein Ritter einem anderen "angehängt" wird, sodass er ihm folgt.
Man kann auch mehrere Figuren so miteinander verknüpfen.

Nun bestimmt man mit den folgenden Funktionen, wer wem, in welchem Abstand und in welchem Winkel folgt.
Im Beispiel folgt Saraya ihrem Hakim im Abstand von 400 im Winkel -180°, also sinnigerweise leicht hinter Hakim (sie folgt ihm).

Die Werte sind in der drittletzten Zeile und können variiert werden; der Abstand sollte zwischen 300 oder 500 sein. Den Winkel kann man ausprobieren; hier im Beispiel ist Saraya mit -180° fast neben Hakim plaziert, bei -90° wäre sie direkt hinter ihm.

function SarayaFollowHakim()
    if Logic.KnightGetResurrectionProgress(GetEntityId("Hakim")) == 1 then
        if Logic.KnightGetResurrectionProgress(GetEntityId("Saraya")) == 1 then
         if GetDistance("Saraya","Hakim") > 1000 then
         MoveEntityToPositionToAnotherOne("Saraya",400,"Hakim",-180)
         end
        end
    end
end

Rufe den Job an einer beliebigen Stelle im Skript auf.

g_SarayaFollowHakimJob = StartSimpleJob("SarayaFollowHakim")

g_SarayaFollowHakimJob speichert die JobID, mit der du die Verfolgung jeder Zeit abbrechen kannst.

Zurück zu Beispiele | Drucken | Tags
Sofern nicht anders angegeben, steht der Inhalt dieser Seite unter Lizenz Creative Commons Attribution-ShareAlike 3.0 License