Ergebnis 1 bis 4 von 4

Thema: Systemzeit als Variable / Menütimer rausschneiden

  1. #1

    Systemzeit als Variable / Menütimer rausschneiden

    So da bin ich mal wieder
    Ich suche ein Script mit dem wenn ich es einbinde die Windows Systemzeit also stune minute ideal auch tag monat jeweils als variable ausgegeben werden
    so das ich im eventeditor
    if variable monat 12
    if variable tag is 24 -> show message: frohe weihnachten
    usw machen kann
    wäre auch nicht schlimm wenn das ganze nur bei windows und nicht bei anderen systemen funktioniert also einfach if variablen sind 0 = kein windwos
    das ganze möchte ich dann für eine art tag nacht bestimmung sowie feiertagsbestimmung sowie belohnung nutzen.
    Wäre sehr nett wenn das jmd so bereitstellen könnte, dass ich es sofort einbauen sowie ohne viel rumzubasten verwenden kann. Aus dem Grund, dass ich leider überhaupt kein Ruby kann.

    dann noch ein paar kleine Sachen:
    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.
    Dazu brauche ich allerding die Ruby Effekte für Spiel beenden Speichern Asurüstung Fähigkeiten Items usw. Inkl. dem Hero "status"Fenster.
    Oder geht es villeicht die Timer Funktion einfach gegen z.B. ne aktuelle Uhrzeit (die durch das oben bestimmt wird) zu ersetzten?

  2. #2
    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.

  3. #3
    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.

  4. #4
    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
  •