PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Systemzeit als Variable / Menütimer rausschneiden



SKuM.Games
07.08.2010, 22:41
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?

MagicMagor
08.08.2010, 11:15
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:


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.

SMWma
08.08.2010, 13:45
du kannst auch als Alternative in einen Call-Skript auch den Code hier einfügen:

$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.:D

-KD-
08.08.2010, 15:59
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.

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


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:

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