Ergebnis 1 bis 3 von 3

Thema: (xp) Script und Map Update

  1. #1

    (xp) Script und Map Update

    Hallo,

    ich habe ein Problem mit der Ausführung von Skripten, die etwas an den normalen Grafiken auf der map ändern (sprich Events, Pictures etc).
    Generell möchte ich den Ablauf, etwa des Kampfsystems, durch Skripte regeln, da ich mit diesen meistens einfacher arbeiten kann als mit Events auf der Map, allerdings will ich auch nicht eine eigene Scene schreiben, da ich auf der Map einfacher mit Grafiken umgehen kann (mit Events zu arbeiten erscheint mir zumindest um einiges einfacher, als selbst alle Grafiken anzeigen zu lassen und auch die Animationen noch richtig hinzukriegen). Prinzipiell funktioniert es auch ganz gut, die Befehle aus den Events statdessen im Skript zu verwenden.
    Problematisch wird es aber, wenn im Skript etwa eine Schleife ist oder Benutzeriengaben abgefragt werden: Solange das Skript ausgeführt wird, hängt die Map und wird es am Ende des Skriptes aktualisiert.
    Ich habe bereits einige Versuche unternommen, dass die Grafik auf der Map doch weitergeht: Graphics.update erzielt zwar eine Verzögerung von einem Frane, aber trotzdem ändert sich nichts, solange das Skript läuft. $game_map.update erzeugt einen Fehler, @wait_count hochsetzen geht glaube ich auch nicht, da dies ein Attribut vom Interpreter ist, auf dass ich zum einen nicht direkt aus einer anderen Klasse zugreifen kann und wahrscheinlch auch keine Auswirkungen hätte, solange ich im eigenen Skript bin.
    Lösen kann ich das Problem zwar, indem ich das Skript aufteile und im Kontrollfluss immer zwischen Skript und Map quasi hin und her gebe, besonders schön finde ich das allerdings so nicht.

    Also, Frage lautet: Kann ich aus einem Skript dafür sorgen, dass die Grafik der Map während des Skriptes am Laufenden gehalten wird?
    (Details: Ich habe auf der Map ein Event, das über Parallel Process das Skript ausführt, welches wiederrum Änderungen an der Map vornimmt, beispielsweise an den Events durch $game_map.events[i].character_name = neuegrafik - Diese Änderungen werden allerdings erst sichtbar, nachdem das Script beendet wurde)

  2. #2
    Zitat Zitat
    Lösen kann ich das Problem zwar, indem ich das Skript aufteile und im Kontrollfluss immer zwischen Skript und Map quasi hin und her gebe, besonders schön finde ich das allerdings so nicht
    Doch, das ist eigentlich die sinnvollste Lösung.

    Umsetzen lässt sich das genauso wie beim Interpreter über einen @wait_count. Mal ein Beispiel:
    Code:
    class MeinScriptObject
      def update
        if @wait_count > 0
          @wait_count -= 1
        else
          # update object state
        end
      end
    
      def do_something_delayed
        @do_something = true
        @wait_count += 5
      end
    
    end
    In Scene_Map#update rufst du dann regelmäßig mein_object.update auf.

  3. #3
    Mmhm also geht es nicht einfacher? Ich hatte gehofft, ich müsste nur ObjektDasIchNichtKannte.update aufrufen und könnte im Skript bleiben und da alles regeln.
    So geht es auch irgendwie, macht die Sache nicht unbedingt einfacher, aber funktionieren tut es.
    Danke für die Antwort.

Berechtigungen

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