Per RGSS die Zeit runter zählen.
Hi,
ich hab eine Variable die Ich abfrage, nun möchte ich nach der Abfrage den Wert der Variable um 1 senken.
Jedoch soll sich der Wert nicht sofort senken sondern erst nach 3 Minuten.
Nun häng ich schon die ganze Zeit an dem Problem, ich hoffe jemand kann mir erklären wie ich die Zeit per Script runterzählen kann.
Gruß
site
ich hab eine Variable die Ich abfrage, nun möchte ich nach der Abfrage den Wert der Variable um 1 senken.
Jedoch soll sich der Wert nicht sofort senken sondern erst nach 3 Minuten.
Nun häng ich schon die ganze Zeit an dem Problem, ich hoffe jemand kann mir erklären wie ich die Zeit per Script runterzählen kann.
Gruß
site
Wo und wie rufst du denn die update Methode auf?
Skripte:
Animations "Entruckler"
Console
Drunken Mode
Eventskript Debugger
Flat-Events
Impassable Script
Item Shortcut
MSS: Monsta's Shoot System (Neu)
Radius Skript
Random Event Teleport
RMXP Leistungstest
Single Rotate
Split Screen (Beta)
Tutorials:
'alias' Bug beheben
Eigenes RTP
Standard KS komplett Übersetzen
RGSS: Eigener HUD
Programme:
Maker Exchange [ MEX ]
RMXP Skript Explorer
RPGXP Code Converter
Spiele:
[Minispiel] Stampfi V1.5 (Gold)
[Minispiel] Mastermind XP
[Humor] Verfressene Klone
______________________________
[Zukunft] Evil Science
zum Lesen den Text mit der Maus markieren
Ich machs immer gerne so
Das ganze funktioniert so:
Wenn ein Script 40 mal Durchgelaufen ist, dann ist eine Sekunde vergangen... Geht aba nur im Maker, so weit wie ich weis^^
|
|
Ruby Quellcode |
1 2 3 4 5 6 |
@frame = 0 if @frame == nil @frame += 1 if @frame == 40 p"es ist eine Sekunde vergangen" @frame = 0 end |
Das ganze funktioniert so:
Wenn ein Script 40 mal Durchgelaufen ist, dann ist eine Sekunde vergangen... Geht aba nur im Maker, so weit wie ich weis^^
Mehr als a Allgäuer ka a Mensch it wera.
Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Gilt aber nur bei FPS = 40
Dafür ist Time.now besser geeignet ;D
Dafür ist Time.now besser geeignet ;D
Ich hab das ganze jetzt nochmal umgeschrieben und dabei das Script von Kai mal ausprobiert.
Das ganze rufe ich per Call Script auf
.
Aber es funzt immer noch nicht :/ kann mir wer sagen wo mein Fehler liegt?
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
module FrameTime def frames self end alias frame frames def seconds Integer(self * Graphics.frame_rate) end alias second seconds def minutes seconds * 60 end alias minute minutes def hours minutes * 60 end alias hour hours end class Numeric include FrameTime end module Kernel private def every(time) if Graphics.frame_count % time == 0 then yield end end end class Timer def initialize reset end def if_reached time yield if ticks >= time end def once_reached time yield if ticks == time end def reset @creation_time = Graphics.frame_count end def ticks Graphics.frame_count - @creation_time end end |
zum Lesen den Text mit der Maus markieren
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
class Fahndung_Senken def initialize @timer = Timer.new refresh end def refresh if $game_variables[1] <= 0 $game_variables[1] = 0 end if $game_variables[1] >= 4 $game_variables[1] = 4 end if $game_variables[1] >= 0 @timer.once_reached 1.minute do $game_variables[1] -= 1 end end end end |
zum Lesen den Text mit der Maus markieren
|
|
Ruby Quellcode |
1 |
$fahndung_senken |
Aber es funzt immer noch nicht :/ kann mir wer sagen wo mein Fehler liegt?
Das ganze rufe ich per Call Script auf.
![]()
Ruby Quellcode
1$fahndung_senken
Aber es funzt immer noch nicht :/ kann mir wer sagen wo mein Fehler liegt?
Der Aufruf:
|
|
Ruby Quellcode |
1 |
$fahndung_senken = Fahndung_Senken.new |
Skripte:
Animations "Entruckler"
Console
Drunken Mode
Eventskript Debugger
Flat-Events
Impassable Script
Item Shortcut
MSS: Monsta's Shoot System (Neu)
Radius Skript
Random Event Teleport
RMXP Leistungstest
Single Rotate
Split Screen (Beta)
Tutorials:
'alias' Bug beheben
Eigenes RTP
Standard KS komplett Übersetzen
RGSS: Eigener HUD
Programme:
Maker Exchange [ MEX ]
RMXP Skript Explorer
RPGXP Code Converter
Spiele:
[Minispiel] Stampfi V1.5 (Gold)
[Minispiel] Mastermind XP
[Humor] Verfressene Klone
______________________________
[Zukunft] Evil Science
zum Lesen den Text mit der Maus markieren
Du musst dann natürlich noch jedes update die refresh-methode aufrufen (also jeden Frame).
mit $fahndung_senken.refresh .
Wenn du das ganze per Eventcode machst, wird das wohl ein parallel Process Event übernehmen müssen...
Edit:
Und ändere am besten:
in:
mit $fahndung_senken.refresh .
Wenn du das ganze per Eventcode machst, wird das wohl ein parallel Process Event übernehmen müssen...
Edit:
Und ändere am besten:
|
|
Ruby Quellcode |
1 2 3 4 5 |
if $game_variables[1] >= 0 @timer.once_reached 1.minute do $game_variables[1] -= 1 end end |
|
|
Ruby Quellcode |
1 2 3 4 5 6 |
if $game_variables[1] >= 0 @timer.once_reached 1.minute do $game_variables[1] -= 1 @timer = Timer.new end end |
Wie bereits gesagt einfach in einem parallelen Prozess die update Methode aufrufen. Und wenn der Timer regelmäßig sein soll, würde ich eher zu
greifen. Oder aber eben @timer.reset in den Block schreiben.
Außerdem solltest du aufpassen, dass im besagten Parallelen Prozess kein Wait-Befehl steckt. Sonst werden Frames übersprungen. Du fragst mit once_reached einen genauen Zeitpunkt ab. Wird dieser übersprungen, tritt das Ereignis nie ein. Eine sicherere Alternative ist if_reached, die auch dann noch eintritt, wenn der Zeitpunkt abgelaufen ist.
|
|
Ruby Quellcode |
1 2 3 |
every 1.minute do #... end |
greifen. Oder aber eben @timer.reset in den Block schreiben.
Außerdem solltest du aufpassen, dass im besagten Parallelen Prozess kein Wait-Befehl steckt. Sonst werden Frames übersprungen. Du fragst mit once_reached einen genauen Zeitpunkt ab. Wird dieser übersprungen, tritt das Ereignis nie ein. Eine sicherere Alternative ist if_reached, die auch dann noch eintritt, wenn der Zeitpunkt abgelaufen ist.
Ähnliche Themen
-
RGSS 1 Probleme & Talk »-
Herbeirufen
(15. Februar 2006, 15:50)
-
Events & Technik »-
Wie macht man eine Pictureanzeige mit 4 stelligen Zahlen???
(3. Dezember 2005, 18:05)
-
RGSS Archiv »-
Was muss ich löschen,was bleibt
(5. Mai 2005, 22:21)
-
RGSS Archiv »-
Windows aktionen
(5. April 2005, 19:02)
-
Maker-Talk »-
Wie installiere ich den Rpgxp?
(26. September 2004, 20:53)


