Beleidigungen und Duell-AI

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Beleidigungen und Duell-AI

      Gruß zusammen. :)
      Ich habe kürzlich wieder mit der guten Gilde 2 angefangen. Irgendwann, gewiss inspiriert durch eurer krasses Modprojekt, bekam ich dann Laune, mir das alles mal (wieder) anzuschauen. Da Duelle schon Spaß machen, wollte ich mal schauen, welche Schrauben man da so drehen kann.


      Der Code für die Entscheidungsfindung der AI ist ziemlich straightforward:

      Lua-Quellcode

      1. if GetImpactValue("","Insulter") == 1 or Threat > 5 then
      2. return "C"
      3. elseif Threat < 3 then
      4. return "A"
      5. elseif DynastyGetDiplomacyState("", "Destination") == DIP_FOE then
      6. if Threat > 7 then
      7. return "B"
      8. else
      9. return "A"
      10. end
      11. else
      12. return "B"
      13. end
      14. end
      Alles anzeigen
      Hierbei zieht A Satisfaktion, B normales Kleinbeigeben und C "ich bin doch nicht lebensmüde" nach sich.
      Lese ich den Code irgendwie falsch, wenn ich zu dem Schluss komme, dass es nie zu der Threat > 7-Abfrage kommen kann, weil ja das Duell durch die erste Klammer schon jenseits der 5 abgelehnt wird? Hab das or jedenfalls mal raus genommen und dafür ein C unter die >7 gesetzt.

      Außerdem, sind Impacts die grauen, rechts vom Portrait gezeigten Kästchen, die Artefakteffekte usw. anzeigen?
      Was zur Hölle ist dann der Insulter? Den hab ich so nie wahrgenommen...

      Vielen Dank für eure Auskünfte und lg
    • Hallo,

      ich habe zwar keine Ahnung vom Modding von Die Gilde 2 aber kann dir was zu dem Lua Codeschnipsel sagen.
      Du hast Recht damit, dass nie die Bedingung von

      Lua-Quellcode

      1. if Threat > 7 then
      erfüllt sein kann, denn (wenn wir nichts übersehen haben) an dieser Stelle

      Lua-Quellcode

      1. elseif DynastyGetDiplomacyState("", "Destination") == DIP_FOE then
      wird die Variable Threat immer einen Wert von 4 haben. Das ergibt sich aus den Abfragen zuvor.

      Zur anderen Frage bzgl. Insulter kann ich leider nichts sagen, da müsste sich einer der Modding-Profis hier zu Wort melden. ;)
      Die Doku zu GetImpactValue ist da für mich zumindest nicht aussagekräftig:
      ---
      Number GetImpactValue(Alias ( of type guildobject) pObject, Number ImpactID)
      Parameters:
      Alias ( of type guildobject) pObject :
      the object holding the impact
      Number ImpactID :
      either an ID (int) or alternately a string from gl_constants that holds an ImpactType id
      Return Value:
      Number :
      float impact value, if impact does not exist or failure return falue is '0'
      Description:
      gets the total value of an impact
      ---

      Gruß
      Sir Toby
      Fanprojekt für alle Fugger 2 Fans: Conspiratio

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Sir Toby ()

    • Servus,

      tatsächlich kann die Bedingung Threat > 7 hier entfallen, da sie nicht auftreten kann. Oder eben wie du sagtest das "or" aus der ersten Abfrage entfernen.

      Die Bildchen mit Artefakteffekten sind Impacts. Aber nicht jeder Impact hat so ein Bild, vgl. DBT/Impacts.dbt. Tatsächlich gibt es für "Insulter" ein Bild, das ich ingame noch nie gesehen habe :)

      Wenn du im Skript in die Zeile 128 schaust, siehst du ein

      Quellcode

      1. AddImpact("","Insulter",1,48)


      Der Impact "Insulter" wird also für die Zeit von 48 Stunden gesetzt, wenn man häufig beleidigt (> 3 mal, nicht mehr als drei Runden Pause).

      Der Code

      Quellcode

      1. GetImpactValue("","Insulter")
      fragt ab, welchen Wert der Impact ("Insulter") auf dem ausführenden Objekt ("") hat. Diese Aliase sind recht verwirrend und eine fiese Fehlerquelle, bilden aber letztlich die Schnittstelle zwischen Skripts und Programmcode/Datenmodell.

      Grüße