+ Antworten
Ergebnis 1 bis 20 von 20
  1. #1
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Frage Goal_KnightDistance - Entfernung festlegen

    Hallo,

    ich arbeite gerade an meiner ersten Karte und benutze ausgiebig die Goal_KnightDistance Funktion. Leider reagiert die viel zu früh. Ich hätte eigentlich gerne, dass mein Ritter näher an die geforderte Stelle ran muss, bevor der Quest erfüllt ist.

    Kann man das vielleicht irgendwie einstellen?
    Geändert von siedlereldeis (12.02.2011 um 16:57 Uhr)

  2. #2
    Baderin Avatar von udi53
    Registriert seit
    14.03.2009
    Ort
    Dresden
    Beiträge
    1,571

    Standard AW: Goal_KnightDistance - Entfernung festlegen

    Ja, gib deinem Ritter einen Scriptnahmen und nutze Goal Entity Distance, wenn du dann dort bei Entfernung z.B. 1000 eingibst, steht er fast auf dem Ziel, das Zeichen > musst du mit < austauschen. vg udi
    Jeder Tag, an dem du nicht lächelst, ist ein verlorener Tag.
    Charlie Chaplin
    www.siedelwood.de

  3. #3
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Standard AW: Goal_KnightDistance - Entfernung festlegen

    Und wie mache ich das richtig? Ich habe jetzt meiner Startposition einen Skriptnamen, ritter, zugewiesen. Goal_EntityDistance funktioniert damit allerdings nicht.

    Z.B. will ich beim Auffinden eines versteckten Holzlagers einen Wagen mit Holz in's Lager schicken. Das sieht dann so aus:

    Goal_EntityDistance (mit den Entitäten ritter und holzversteck)
    Reward_SendCart
    Trigger_AlwaysActive

    Das löst aber einfach nicht aus, egal wie groß ich die Entfernung einstelle. Mit Goal_KnightDistance hat es funktioniert, das springt aber wie bereits erwähnt zu früh an.

  4. #4
    Sombeline
    Gast

    Standard AW: Goal_KnightDistance - Entfernung festlegen

    Nimm ein Goal_MapScriptFunction mit folgender Funktion, die du ins globale Script reinschreibst.

    Code:
    function xy()
        if IsNear(Logic.GetKnightID(1), "ca", 1000) then
            return true
        end
    end

  5. #5
    Jäger
    Registriert seit
    28.03.2009
    Beiträge
    254

    Standard AW: Goal_KnightDistance - Entfernung festlegen

    Es genügt nicht der XD-Startposition einen Namen zu geben. Damit hat der Ritter im Spiel noch keinen Namen. Damit ein Rittername für Quests zur Verfügung steht muss man den Namen, den man im Editor der XD-Startposition gegeben hat, auch dem Ritter zuweisen. Damit kann man dann den Ritternamen auch im Quests-Editor einsetzen. Für einen Ritter kann man z.B. Ritter1 wie folgt vergeben.

    Code:
    function Rittername01()
            local knightID = Logic.GetKnightID(1)
            if knightID ~= 0 then
                        Logic.SetEntityName(knightID, "Ritter1")
            end
    end
    Die Funktion muss ins Kartenscript eingefügt werden, am besten unter die
    Funktion " function Mission_FirstMapAction()". Dann in der Funktion "Mission_FirstMapAction()"
    eine Zeile mit:
    Rittername01()
    einfügen und schon hört der Ritter auf den Namen "Ritter1". Wenn mehr Ritternamen vergeben werden müssen, dann steht die Lösung hier:
    XD-Startposition

  6. #6
    Sombeline
    Gast

    Standard AW: Goal_KnightDistance - Entfernung festlegen

    Wenn ich das richtig verstanden habe, geht es nicht um den Namen des Ritters sondern dass das goal richtig auslöst.

  7. #7
    Jäger
    Registriert seit
    28.03.2009
    Beiträge
    254

    Standard AW: Goal_KnightDistance - Entfernung festlegen

    Damit z.B. das Goal Entity Distance auslösen kann, muss man natürlich erst einmal eine Entity benennen, die auf die Distanz geprüft wird. Hier im Beispiel soll "Ritter1" an irgendeine andere Entity herangebracht werden. Solange der Ritter aber nicht Ritter1 heißt, kann die Quest nicht erfüllt werden. Denn der Ritter1 kommt ja überhaupt gar nicht vor im Spiel bzw. fehlt der Name so lange bis er zugewiesen wurde. Danach kann das Goal auslösen, wenn der Ritter heran ist.

  8. #8
    Jäger
    Registriert seit
    28.03.2009
    Beiträge
    254

    Standard AW: Goal_KnightDistance - Entfernung festlegen

    Auf das Argument habe ich natürlich gewartet: "Die XD Startposition" wurde doch benannt."
    Das ist zwar richtig, doch mit dem Erscheinen des Ritters auf der Karte verschwindet die XD Startposition und nur deshalb kann ich den Namen wieder vergeben. Damit nutze ich eigentlich nur eine Hintertür um im Questssystem einen Ritternamen benutzen zu können.

  9. #9
    Baderin Avatar von udi53
    Registriert seit
    14.03.2009
    Ort
    Dresden
    Beiträge
    1,571

    Standard AW: Goal_KnightDistance - Entfernung festlegen

    Zitat Zitat von siedlereldeis Beitrag anzeigen
    Und wie mache ich das richtig? Ich habe jetzt meiner Startposition einen Skriptnamen, ritter, zugewiesen. Goal_EntityDistance funktioniert damit allerdings nicht.

    Z.B. will ich beim Auffinden eines versteckten Holzlagers einen Wagen mit Holz in's Lager schicken. Das sieht dann so aus:

    Goal_EntityDistance (mit den Entitäten ritter und holzversteck)
    Reward_SendCart
    Trigger_AlwaysActive

    Das löst aber einfach nicht aus, egal wie groß ich die Entfernung einstelle. Mit Goal_KnightDistance hat es funktioniert, das springt aber wie bereits erwähnt zu früh an.
    sollte aber auslösen, lade dir mal Madhya III in den Edi, da kannst du es nachvollziehen, dort gibts 4 Kräutersuchquests mit entity distance, ich verwende das fast in jeder Map die Entität Ritter muß einen Namen haben, da brauchts kein Script, das geht bestens mit dem Quest. Vllt. klappt es bei freier Ritterwahl nicht, wäre mir aber unklar warum. Educatrix hat das in Hüter des Lichts bei freier Ritterwahl auch gemacht, die Suche nach dem Kristall, da klappert man einige Höhlen ab, überall passiert was und entity distance löst das aus.
    Geändert von udi53 (11.02.2011 um 17:58 Uhr)
    Jeder Tag, an dem du nicht lächelst, ist ein verlorener Tag.
    Charlie Chaplin
    www.siedelwood.de

  10. #10
    Jäger
    Registriert seit
    28.03.2009
    Beiträge
    254

    Standard AW: Goal_KnightDistance - Entfernung festlegen

    Hallo Udi,
    warum sollte es unklar sein. Wenn Du einen Ritter auf die Karte setzt, dann kannst Du diesen im Editor benennen und den Namen dort verwenden. Wenn Du aber keinen Ritter auf die Karte setzt und die freie Auswahl lässt, dann musst Du den Ritter per Script mit einem Namen versorgen.
    Damit Du den Namen im Editor bereits zur Verfügung hast, kann man dann die Startposition mit dem Namen versehen, den der Ritter haben soll.

  11. #11
    Schwertkämpfer Avatar von trabbi
    Registriert seit
    09.03.2006
    Beiträge
    4,437

    Standard AW: Goal_KnightDistance - Entfernung festlegen

    habs die Tage schon mal gepostet:
    Code:
    --xxxxxxxx Code von Jockl  xxxxxxxxxx
    function CheckKnight()
        local Ritter = {}
        Ritter[Entities.U_KnightChivalry] = "Marcus"
        Ritter[Entities.U_KnightHealing] = "Alandra"
        Ritter[Entities.U_KnightWisdom] = "Hakim"
        Ritter[Entities.U_KnightTrading] = "Elias"
        Ritter[Entities.U_KnightPlunder] = "Kestral"
        Ritter[Entities.U_KnightSong] = "Thordal"
     
        local _KnightID = Logic.GetKnightID(1)           -- ID des Player 1 Ritters
        _EntityNameKnight = "RitterPlayer1"                     -- Entity-Name des Ritters;
                                   -- wird z.B. später für "position" und/oder "followEntity" bzw.
                                   -- immer dann, wenn man den Ritter ansprechen will, verwendet
     
        Logic.SetEntityName(_KnightID, _EntityNameKnight)       -- hier wird der Entity der Entity-Name übergeben
     
        _NameRitter = Ritter[Logic.GetEntityType(_KnightID)]   -- hier wird der Name des Ritters (siehe Ritter-Table) ermittelt. 
                                   -- Findet Verwendung im "titel" bei Briefings
     
           AnfangBriefing()                   -- z.B. Start eines Briefings
    end
    trabbi
    Was ist Theorie, - Wenns klappen soll und es klappt nie
    Was ist Praxis, - Frag nicht so dumm, wenns klappt und Du weißt nicht warum

  12. #12
    Baderin Avatar von udi53
    Registriert seit
    14.03.2009
    Ort
    Dresden
    Beiträge
    1,571

    Standard AW: Goal_KnightDistance - Entfernung festlegen

    Zitat Zitat von OKEF Beitrag anzeigen
    Hallo Udi,
    warum sollte es unklar sein. Wenn Du einen Ritter auf die Karte setzt, dann kannst Du diesen im Editor benennen und den Namen dort verwenden. Wenn Du aber keinen Ritter auf die Karte setzt und die freie Auswahl lässt, dann musst Du den Ritter per Script mit einem Namen versorgen.
    Damit Du den Namen im Editor bereits zur Verfügung hast, kann man dann die Startposition mit dem Namen versehen, den der Ritter haben soll.
    Wenn der Ritter aber seinen ursprünglichen Namen im Spiel hat,je nachdem wen der Spieler wählt, Thordal oder Hakim, beispielsweise, genügt es doch, wenn die XD-Startposition "Ritter" heißt, dann sollte goal entity distance funktionieren, oder? Oder muss ich zwingend, wie bei Hüter des Lichts, den "knightname"scipt verwenden bzw. den script den Trabbi gepostet hat?? Ich habe mit freier Ritterwahl nicht so die Erfahrung, weil ich meinen Helden die Story immer auf den Leib schneidere.
    Geändert von udi53 (11.02.2011 um 21:44 Uhr)
    Jeder Tag, an dem du nicht lächelst, ist ein verlorener Tag.
    Charlie Chaplin
    www.siedelwood.de

  13. #13
    Schwertkämpfer Avatar von trabbi
    Registriert seit
    09.03.2006
    Beiträge
    4,437

    Standard AW: Goal_KnightDistance - Entfernung festlegen

    ich hatt Briefigs immer neutral ehalten, damit das auf den jeweiligen Ritter passt.
    Immer Jockel sein Script mit eingebunden. Für RdO muss man allerdings die Ritter anpassen.
    trabbi
    Was ist Theorie, - Wenns klappen soll und es klappt nie
    Was ist Praxis, - Frag nicht so dumm, wenns klappt und Du weißt nicht warum

  14. #14
    Jäger
    Registriert seit
    28.03.2009
    Beiträge
    254

    Standard AW: Goal_KnightDistance - Entfernung festlegen

    Also Udi,
    wenn Du für den Ritter die freie Auswahl lassen willst, dann musst Du den Ritter irgendwie benennen, solltest Du mit dem Namen etwas erreichen wollen. Das passiert mit "Logic.SetEntityName". Egal wer die Scriptschnipsel mal für irgendetwas entworfen hat. Der Name wird immer mit "Logic.SetEntityName" festgelegt. Wenn Du allerdings wie die meisten Spieler nur mit Script arbeitest, dann kannst Du den Ritter für Spieler 1 einfach mit "Logic.GetKnightID(1)" verwalten. Wenn Du LAN Karten benutzt, dann sind da nur vier Nummern anzusprechen, die man gut in einem Table ablegen kann.

  15. #15
    Jäger
    Registriert seit
    28.03.2009
    Beiträge
    254

    Standard AW: Goal_KnightDistance - Entfernung festlegen

    Ich meine natürlich die meisten Kartenbastler arbeiten mit Scripts, da hier vieles gesteuert werden kann. Die meisten S6-Spieler die noch übrig sind, sind allerdings Kartenbastler.
    Ein Beispiel für einfache Anwendung in LAN-Karten will ich auch nicht schuldig bleiben. Sucht man z.B. die Fläche die jeder der vier Spieler gerade verwaltet. Dann genügen einige Zeilen um den Spielern die verwalteten Flächen zuzuordnen.
    Man macht sich ein Flächen-Table für Spieler 1 bis 4 und ein Table mit den Flächen der im Editor angelegten Territorien. Die Flächen bekommt man ja im Editor angezeigt. Eventuell gibt es auch eine Funktion die die Fläche ausgibt, aber für das Beispiel ist das nicht so wichtig. Hat man 25 Gebiete angelegt schreibt man die 25 Flächen in das Table.

    Code:
     flaechePL = { 0, 0, 0, 0, }
     flaecheTR = { 162774, 33964, 15091, 40001, 29315, 6470,  44829, 12742, 9973, 9248, 79414, 21653, 20357, 17164, 11367, 27477,  38963, 15747, 22401, 10437, 44359, 4493, 35993, 43752, 3984, }
    Die Reihenfolge ist klar ID 1 an erster Stelle, ID 2 an zweiter Stelle usw.
    Nun braucht man nur noch zu prüfen, wem ist eine Provinz zugeordnet und addiert sie dann auf die Spieler.

    Code:
    function OKVerwaltGebiet()
              flaechePL = { 0, 0, 0, 0, }
              local t = 1
              local p = 1
              for t = 1, 25 do
                          for p = 1, 4 do
                                     if (Logic.GetTerritoryPlayerID(t)) == p then
                                     flaechePL[p] = flaechePL[p] + flaecheTR[t]
                                     end
                          end
              end
    end
    Gehört dem Spieler 1 das erste Gebiet, dann bekommt er es aufaddiert usw. usw.
    Am Ende habe ich das Gebiet des Spielers 1 durch "flaechePL[1]" verfügbar und kann z.B. mit "flaechePL[2]" vergleichen, oder sonst was.

  16. #16
    Baderin Avatar von udi53
    Registriert seit
    14.03.2009
    Ort
    Dresden
    Beiträge
    1,571

    Standard AW: Goal_KnightDistance - Entfernung festlegen

    Ich glaube grade, dass siedlereldeis Problem (Goal Entity Distance) etwas aus den Augen verloren wird und er vllt. verwirrt auf die Diskussion schaut und keinen Meter weiter kommt
    Jeder Tag, an dem du nicht lächelst, ist ein verlorener Tag.
    Charlie Chaplin
    www.siedelwood.de

  17. #17
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Standard AW: Goal_KnightDistance - Entfernung festlegen

    Zunächst danke für die rege Anteilnahme. Da das meine erste Karte ist, will ich eigentlich so weit wie möglich ohne Programmiererei auskommen. Tatsächlich wird Goal_EntityDistance in "Hüter des Lichts" so verwendet, wie ich das auch machen will. Nur bei mir klappt es nicht.

    Vielleicht hab ich ja eine andere Spielversion. Ich hatte mir nämlich direkt so ein S6 Gold Pack Dingens gekauft. Das macht ja auch Probleme beim Onlinespiel.

  18. #18
    Baderin Avatar von udi53
    Registriert seit
    14.03.2009
    Ort
    Dresden
    Beiträge
    1,571

    Standard AW: Goal_KnightDistance - Entfernung festlegen

    Hi, dir fehlt eine Zusatzfunktion, da du anscheinend freie Ritterwahl nutzt. Habe grade mit OKEF hinter den Kulissen gesprochen. Wenn du den Ritter vorgibst und ihm einen Scriptnamen gibst funktioniert es. Da ich immer die Ritter vorgebe, wußte ich das nicht.
    Willst du GED nutzen, kommst du um einen Scripteintrag nicht herum, oder du legst dich auf einen Ritter fest.
    Jeder Tag, an dem du nicht lächelst, ist ein verlorener Tag.
    Charlie Chaplin
    www.siedelwood.de

  19. #19
    Jäger
    Registriert seit
    28.03.2009
    Beiträge
    254

    Standard AW: Goal_KnightDistance - Entfernung festlegen

    Udi, Wo Du Recht hast, hast Du Recht. Man sollte keine Probleme einmischen die im Zusammenhang mit dem Urproblem entstanden sind, aber am Ende nichts mit der Frage zu tun haben. Ich gelobe Besserung und wünsche eine gute N8!
    @siedlereldeis, wenn Du das "Goal Entity Distance" verwenden möchtest, kommst Du nicht umhin den Namen für den Ritter im Script zu vergeben (siehe Beitrag 5).
    Ohne die Namensvergabe im Script würde es auch bei "Hüter des Lichts" nicht funktionieren.
    PS:
    Udi war wieder mal schneller mit der Antwort, also allen eine gute Nacht!

  20. #20
    Sägewerker
    Registriert seit
    05.02.2011
    Beiträge
    159

    Standard AW: Goal_KnightDistance - Entfernung festlegen

    Zitat Zitat von OKEF Beitrag anzeigen
    Es genügt nicht der XD-Startposition einen Namen zu geben. Damit hat der Ritter im Spiel noch keinen Namen. Damit ein Rittername für Quests zur Verfügung steht muss man den Namen, den man im Editor der XD-Startposition gegeben hat, auch dem Ritter zuweisen. Damit kann man dann den Ritternamen auch im Quests-Editor einsetzen. Für einen Ritter kann man z.B. Ritter1 wie folgt vergeben.

    Code:
    function Rittername01()
            local knightID = Logic.GetKnightID(1)
            if knightID ~= 0 then
                        Logic.SetEntityName(knightID, "Ritter1")
            end
    end
    Die Funktion muss ins Kartenscript eingefügt werden, am besten unter die
    Funktion " function Mission_FirstMapAction()". Dann in der Funktion "Mission_FirstMapAction()"
    eine Zeile mit:
    Rittername01()
    einfügen und schon hört der Ritter auf den Namen "Ritter1". Wenn mehr Ritternamen vergeben werden müssen, dann steht die Lösung hier:
    XD-Startposition

    Danke. Damit klappt es.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Ähnliche Themen

  1. Goal_KnightDistance QSB 3.4
    Von mattizwo im Forum S6 Scriptecke
    Antworten: 15
    Letzter Beitrag: 16.01.2009, 18:45
  2. Goal_KnightDistance
    Von Zweispeer im Forum S6 Scriptecke
    Antworten: 8
    Letzter Beitrag: 02.01.2008, 17:21
  3. Helden festlegen für eine Map
    Von Zweispeer im Forum Siedler 6 AeK Mapperecke
    Antworten: 3
    Letzter Beitrag: 12.11.2007, 23:32

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein