Beim 2K benutze ich dieses System schon seit Zwielicht und dort läuft alles wie geschmiert.
Druckbare Version
Beim 2K benutze ich dieses System schon seit Zwielicht und dort läuft alles wie geschmiert.
Mich würde mal interessieren, wie das Wait-Kommando intern in Ruby ausgeführt wird, vor allem im Hinblick darauf, wie man das da simuliert. Reicht da ein sleep?
Im Interpreter steht bei Wait ja folgendes:
Vielleicht bin ich zu doof das zu finden, aber ich sehe nirgendwo dieses wait_count als Variable.Code:def command_106
# Set wait count
@wait_count = @parameters[0] * 2
# Continue
return true
end
In der Interpreter#update Methode wird pro frame eine Schleife ausgeführt die zuerst einmal prüft ob das Event auf irgendetwas wartet, falls nicht wird das nächste Kommando ausgeführt und anschließend geschaut ob das Event dabei abgebrochen wurde.
Die Schleife wird dann so lange wiederholt bis irgendeine dieser Warte/Abbruch Bedinung erfüllt wurde.
Der Code der sich mit dem Wait befasst sieht so aus:
Und findet sich ab Zeile 167. Auch gut zu wissen ist, dass die Wartezeiten die du im Editor eingibst eigentlich *2 genommen werden, wenn du Wartezeiten dierekt in ruby implementierst musst du berücksichtigen, dass ein Frame in Wirklichkeit 1/40 Sekunde entspricht und nicht 1/20 wie im Editor.Code:# If waiting
if @wait_count > 0
# Decrease wait count
@wait_count -= 1
return
end
Wartezeiten an für sich lassen sich einfach einbauen, die Methode Graphics.update welche man jeden Frame aufrufen sollte wartet nämlich gleichzeitig auf den nächsten Frame.
Sleep ist dabei keine gute Lösung, immerhin hälst du damit das gesamte geschehen an, was in einem Spiel sicherlich nicht gut kommt.
Jetzt hast du aber nur nicht ganz genau gesagt, wie man ein Wait einbauen kann. Soll man dann einfach Graphics.Update aufrufen?
Du sollst eine Methode einbauen die einmal pro frame aufgerufen wird und die einen Zähler hat, welcher wie im Interpreter aufgebaut ist. Sofern der Zähler noch läuft gibt's ein return und vom Zähler wird 1 abgezogen, falls nicht geht es weiter mit dem geschehen.
Ne kleine Frage am Rande, gibt es eine Möglichkeit, einen Wait-Befehl zu erstellen, notfalls mit RGSS, der weniger als ein Frame dauert? Weil Animationen mit einem Wait von einem Frame sehen übelst aus. Ich wollte wissen, ob das vielleicht flüssiger geht. Vielen Dank.
Wenn du im Interpreter einen Frame wartest, wartet er intern gleich zwei davon - warum auch immer. Die einfachste Möglichkeit eine richtige Frame Wartezeit einzufügen ist wohl über call script:
würde 3 frames wartenCode:@wait_count = 3
Danke, Provinzheld xD
Eine Frage: Gibts irgendwelche RpgXP - Templates für Chipsets oder so? oder kann ich da einfach alles durcheinander einfügen?
Edit: achja und was bedeutet RGSS?
Tileset für XP: 256 * beliebig Pixel, durcheinander einfügen erlaubt.
RGSS: Ruby Game Scripting Sytsem (wenn mich nicht alles täuscht).
meinste mit der 256 Horizontal oder Vertikal? Also X oder Y?
(oder so... xD)
X wie X-Men
...man nennt immer die Breite zuerst. ;)
Theoretisch könnte man dann einfach ALLES oder jedenfalls ziemlich viele Sachen in ein einziges Tile reinpacken oder?
Bis auf die Tatsache dass dann vllcht dieses einzige Tile etwas zu viel KB hätte oder irr ich mich hier?
Ja, das geht, aber dadurch erhöht sich auch die Ladezeit der Grafik, wenn ich mich nicht irre.
Könntest du theoretisch machen, ist aber nicht unbedingt sinnvoll.
Denn in der Regel braucht man nicht immer alles. (wozu zB. ein Klavier in einem Wald :confused: )
Ich hab sogar mal ein Spiel gespielt, wo alles in einem Chipset war, das brauchte dann aber im Maker auch immer etwas bis es geladen war.
THX für die Hilfe aber noch was....
Kann ich denn auch das Autotile-Limit für ein Tile in der Database erhöhen?
EDIT: sry für die Frage mit dem Chipset!" Habs grade auf Seite 1 gelesen X.X
Nein, pro Tileset sind wohl nur 7 Autotiles möglich. Aber du kannst ja das Tileset mehrfach kopieren in der Database und einfach die zugewiesenen Autotiles ändern.
Ich möchte, dass das Spiel ein Ereignis aufruft,
wenn die BGM Musik einmal durchgespielt ist (um ein neues Stück auszusuchen).
Kann diese Bedingung nicht finden!
Ich hab jetzt auch mal eine kleine Frage zum RMXP.
Da ich mir den Maker vor wenigen Tagen ebenfalls zu gelegt habe, und mich auch schon mit Ruby usw. beschäftigt habe, stellt sich bei mir nun die Frage, wie ich es schaffe, ein Intro, basierend auf Maps, vor dem eigentlichen Titelscreen zu zeigen.
Ich habe auch schon diverse Foren und Themen durchsucht, aber nichts gefunden, dass mir weiterhelfen kann.
Hat irgendjemand ein Script oder wenigstens eine Idee wie ich so etwas umsetzen könnte.
Vielen Dank im Vorraus.
LG Henry
ich würd bei sowas empfehlen ruby-code einzubinden und berechnungen in threads ausführen lassen, das entlastet ungemein^^Zitat:
Zitat von Kelven
etwa so:
innerhalb des loops kann man natürlich auch mit einer while-schleife das ganze an bestimmte bedingungen knüpfen ... und irgendwann sollte man den thread auch mittelsCode:thread=Thread.new {
loop do
# lässt den thread für 1 sekunde pausieren, geht aber auch 0.1, 0.01, etc.
sleep(1)
und hier halt irgendwelche berechnungen ausführen ... übrigens, die klasse Math kann viele wunderbare dinge zaubern^^
end
}
thread.kill
auch wieder von seiner arbeit erlösen, sonst rennt der ewig weiter^^
@henry, für sowas müsstest du in Scene_Title das titelmenü überspringen bzw. davor ins spiel einsteigen ... dafür gibts auf dubalex schon einige scripts, musst bissl suchen oder selber machen wennst in ruby schon halbwegs fit bist^^
grundsätzlich zur verwendung von ruby:
kinder - trial and error, so lernt man am besten eine programmiersprache, machts einfach wie ihr euch denkts und probiert solange, bis es klappt xD