Ergebnis 1 bis 4 von 4

Thema: Systemzeit als Variable / Menütimer rausschneiden

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Ruby bietet die "Time"-Klasse an, die dafür perfekt geeignet ist.
    Ein kleines Modul um die Funktionen dafür in game-variablen zu kapseln:
    Code:
    module EventTime
     # Hier die Variablen-IDs eintragen, wo der entsprechende Wert gespeichert werden soll
     ID_YEAR = 1
     ID_MONTH = 2
     ID_DAY = 3
     ID_HOUR = 4
     ID_MINUTE = 5
     ID_SECOND = 6
    
     def EventTime.update
      t = Time.new
      $game_variables[ID_YEAR] = t.year
      $game_variables[ID_MONTH] = t.month
      $game_variables[ID_DAY] = t.day
      $game_variables[ID_HOUR] = t.hour
      $game_variables[ID_MINUTE] = t.min
      $game_variables[ID_SECOND] = t.sec
     end
    end
    Einfach oben bei den konstanten die entsprechenden Variablen-IDs eintragen und dann einfach per Ruby-Code "EventTime.update" aufrufen, danach kannst du die aktuellen Zeitwerte aus den Variablen auslesen.

    Nur für den Zeitzähler das Menü neu zu machen ist mMn ziemlicher Overkill. Die Klasse "Window_PlayTime" ist für das anzeigen der Spielzeit zuständig, ich hab den Maker gerade nicht offen, aber eine Anpassung dieser um aus einem frischen Time-Objekt die aktuellen Zeit auszulesen sollte relativ simpel sein.

  2. #2
    du kannst auch als Alternative in einen Call-Skript auch den Code hier einfügen:
    Code:
    $game_variables[ID der Variable] = t.year
    Dabei ersetzt du die ID der Variable durch deine Variable ^,^

    Um das Fenster mit der Aktuellen Uhrzeit zu haben, könnte ich mich auch darum kümmern. Sind ja nur ein paar Codes. Und Macig Magor hat schon den größten Teil gemacht.

  3. #3
    Magors Code packt diese Aufrufe ja extra in ein Modul, damit man sie nicht jedes Mal allesamt im Callscript neu ausführen muss.

    Du kannst den enstprechenden Aufruf auch in die Scene_Map#update packen, so dass die Variablen automatisch jeden Frame (bzw. reicht es ja auch alle ~15 Frames) neu gesetzt werden.
    Code:
    class Scene_Map
      alias update_system_time update
      def update
        if Graphics.frame_count % 10 == 0 then # alle 10 Frames
          EventTime.update # update Zeit
        end
        update_system_time_update # update dann den Rest
      end
    end
    Zitat Zitat
    Ich hab gemerkt das der Zeitzähler im Menü scheinbar ganzschön auf die Perfomance drückt.
    Nun möchte ich mir ein eigenes Menü über Pictures machen.
    Unsinn. Der Zeitzähler kostet kaum Performance.
    Wenn du ihn durch deine Systemzeit ersetzen willst, schreibst du:
    Code:
    class Window_PlayTime < Window_Base
    
      def refresh
    	contents.clear
    	contents.font.color = system_color
    	contents.draw_text(4, 0, 120, 32, "Zeit")
    	contents.font.color = normal_color
    	contents.draw_text(4, 32, 120, 32, Time.now.strftime("%H:%M:%S"), 2)
      end
    
      def update
    	if Graphics.frame_count % 10 == 0 then
    		refresh
    	end
      end
    end

Berechtigungen

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