Startseite »
Forum »
RPG-Studio.org - Skripte, Ressourcen & Tutorials »
Tutorial-Bereich »
RGSS / RGSS 2 / RGSS 3 / jsPlugins »
Lieber Besucher, herzlich willkommen bei: RPG Studio - Make your World real. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.
Ich wusste nicht, in welchen Thread das muss, deshalb habe ich es einfach hier rein gemacht.
Also, vielen Skriptern ist es bestimmt schon aufgefallen: An manchen Stellen verursacht der 'alias' Befehl eine Fehlermeldung wenn man das Spiel mit F12 neustartet.
Dann bekommt man folgende Meldung:
Doch diesen Bug kann man jedoch ganz einfach beheben.
1. Im Skript 'Main' erstellt man eine neue Globalvariabel die speichert, ob das Programm schon mal gestartet wurde, z.B.
2. Hinter den alias Befehl kommt dann eine Abfrage ob das Programm schon mal gestartet wurde:
Und dann sollte es schon funktionieren^^
Warscheinlich wissen es schon die meisten, aber ich habe noch keine Lösung im Netz dazu gefunden... Deshalb habe ich diesen Thread einfach mal aufgemacht.
Mfg Monsta
Also, vielen Skriptern ist es bestimmt schon aufgefallen: An manchen Stellen verursacht der 'alias' Befehl eine Fehlermeldung wenn man das Spiel mit F12 neustartet.
Dann bekommt man folgende Meldung:
Zitat
System stack Error
stack level too deep
Doch diesen Bug kann man jedoch ganz einfach beheben.
1. Im Skript 'Main' erstellt man eine neue Globalvariabel die speichert, ob das Programm schon mal gestartet wurde, z.B.
![]() |
Quellcode |
1 |
$started = true |
2. Hinter den alias Befehl kommt dann eine Abfrage ob das Programm schon mal gestartet wurde:
![]() |
Quellcode |
1 |
alias class_original class if $started == nil |
Und dann sollte es schon funktionieren^^
Warscheinlich wissen es schon die meisten, aber ich habe noch keine Lösung im Netz dazu gefunden... Deshalb habe ich diesen Thread einfach mal aufgemacht.
Mfg Monsta
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
Weiß wer was folgendes heißt?
Zitat
TypeError occured while running script
cannot iterate from Float
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.
iteratte hat etwas mit Arrays zu tun und Float ist ein Datentyp.
Ich vermute eine schleife oder so aht versucht durch ein Array zu laufen, aber es war kein Array sondern eine var vom typ float und das klappt nicht.
Ich vermute eine schleife oder so aht versucht durch ein Array zu laufen, aber es war kein Array sondern eine var vom typ float und das klappt nicht.
Gamedev-Nation.org - Die freundliche Spieleentwickler Community
I am sick of it to be a beta nerd. So I have decided to become a alpha!
I am sick of it to be a beta nerd. So I have decided to become a alpha!
Kannst du mal die Zeile posten wo der Fehler auftritt?
Und was hat das mit meinem Tutorial zu tun? >.<
Und was hat das mit meinem Tutorial zu tun? >.<
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
@Topic: Aber das ist doch kein Bug!
Im Grunde kopiert die Alias-Methode nur eine Methode.
So wird die Methode :original_method kopiert und unter dem Namen :copied_method gespeichert. Alias wird häufig dazu verwendet, schon definierten Methoden weitere Anweisungen hinzuzufügen. Dabei wird erst die ursprüngliche Methode kopiert, dann überschrieben. In der neuen Methodendefinition wird dann die Kopie der alten Methode aufgerufen:
Auf diese Weise werden oft Standardscripts verändert, z.B. die Initialize-Methode von Game_Temp zur Initialisierung von neuen Instanzvariablen. Problematisch wird es aber dann, wenn dies mehrmals unter gleichem Namen passiert, denn führt der Aufruf einer der Alias-Methoden zu einer endlosen Rekursion, da immer wieder die gleiche Methode aufgerufen wird. Daher gibt es an dieser Stelle einen System Stack Error.
Man muss also nur darauf achten, dass nie zwei Methoden unter gleichem Namen kopiert werden, dann tritt der Fehler auch nicht auf. Ich gebe meinen Alias-Methoden inzwischen immer kontextbezogene Namen, z.B. "questlog_init" für die Game_Temp-Initialize-Erweiterung in meinem Questlog-Script, so dass keine Gefahr besteht, dass in einem anderen Script der gleiche Name für die gleiche Methode gebraucht wird.
Im Grunde kopiert die Alias-Methode nur eine Methode.
![]() |
Quellcode |
1 |
alias :copied_method :original_method |
So wird die Methode :original_method kopiert und unter dem Namen :copied_method gespeichert. Alias wird häufig dazu verwendet, schon definierten Methoden weitere Anweisungen hinzuzufügen. Dabei wird erst die ursprüngliche Methode kopiert, dann überschrieben. In der neuen Methodendefinition wird dann die Kopie der alten Methode aufgerufen:
![]() |
Quellcode |
1 2 3 4 5 6 7 8 9 10 |
#alte Methode kopieren alias :copied_method :original_method #Methode neu definieren (überschreiben) def original_method #Kopie der alten Methode aufrufen copied_method #neue Anweisungen hinzufügen blablabla end |
Auf diese Weise werden oft Standardscripts verändert, z.B. die Initialize-Methode von Game_Temp zur Initialisierung von neuen Instanzvariablen. Problematisch wird es aber dann, wenn dies mehrmals unter gleichem Namen passiert, denn führt der Aufruf einer der Alias-Methoden zu einer endlosen Rekursion, da immer wieder die gleiche Methode aufgerufen wird. Daher gibt es an dieser Stelle einen System Stack Error.
Man muss also nur darauf achten, dass nie zwei Methoden unter gleichem Namen kopiert werden, dann tritt der Fehler auch nicht auf. Ich gebe meinen Alias-Methoden inzwischen immer kontextbezogene Namen, z.B. "questlog_init" für die Game_Temp-Initialize-Erweiterung in meinem Questlog-Script, so dass keine Gefahr besteht, dass in einem anderen Script der gleiche Name für die gleiche Methode gebraucht wird.
Wie lassen sich die Werte zweier Integervariablen vertauschen?
Machen Sie mit und gewinnen Sie Ruhm und Ehre! ?"Caesar"?
Die kürzeste Lösung gewinnt. Gibt es mehrere richtige Einsendungen, wird ein zufälliger Gewinner aus diesen gezogen.
zum Lesen den Text mit der Maus markieren
Die Aufgabe der letzten Runde lautete:
Es hat keiner teilgenommen, daher gibt es keinen Gewinner ^^ Eine mögliche Lösung wäre gewesen:
Zitat
Schreiben Sie einen Parser für die ASCII-Form des Dateiformats PBM (Portable Bitmap). Die Methode soll als Parameter einen Dateinamen erhalten und eine Bitmap zurückgeben. 0 ist weiß, 1 ist schwarz. Eine Beispieldatei, die den Buchstaben 'A' darstellti:
![]()
Quellcode
1 2 3 4 5 6 7 8 9 10 11 P1 9 9 000010000 000010000 000101000 000101000 001000100 001111100 001000100 010000010 111000111
![]() |
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def parse_pbm(filename) f = File.open(filename) return nil unless f.readline.chomp == "P1" width, height = f.readline.split(' ').collect {|i| i.to_i} bitmap = Bitmap.new(width, height) c0 = Color.new(255, 255, 255) c1 = Color.new(0, 0, 0) for iy in 0...height f.readline.chomp.split('').each_with_index do |v, k| bitmap.set_pixel(k, iy, v == '0' ? c0 : c1) end end return bitmap end |
zum Lesen den Text mit der Maus markieren
...wie man zum Testen schnell einzelne Scripts "ausbaut", ohne das Script aus dem Scripeditor zu löschen?
Ganz einfach: Man fügt im Scripteditor ganz oben im Script die folgende Zeile ein:
und ganz unten als letzte Zeile:
Das hat den gleichen Effekt, wie wenn man das ganze Script aus dem Scripteditor gelöscht hätte.
![]() |
Quellcode |
1 |
if false |
![]() |
Quellcode |
1 |
end |
zum Lesen den Text mit der Maus markieren
Zitat von »"Caesar"«
@Topic: Aber das ist doch kein Bug!
Im Grunde kopiert die Alias-Methode nur eine Methode.
![]()
Quellcode
1 alias :copied_method :original_method
So wird die Methode :original_method kopiert und unter dem Namen :copied_method gespeichert. Alias wird häufig dazu verwendet, schon definierten Methoden weitere Anweisungen hinzuzufügen. Dabei wird erst die ursprüngliche Methode kopiert, dann überschrieben. In der neuen Methodendefinition wird dann die Kopie der alten Methode aufgerufen:
![]()
Quellcode
1 2 3 4 5 6 7 8 9 10 #alte Methode kopieren alias :copied_method :original_method #Methode neu definieren (überschreiben) def original_method #Kopie der alten Methode aufrufen copied_method #neue Anweisungen hinzufügen blablabla end
Auf diese Weise werden oft Standardscripts verändert, z.B. die Initialize-Methode von Game_Temp zur Initialisierung von neuen Instanzvariablen. Problematisch wird es aber dann, wenn dies mehrmals unter gleichem Namen passiert, denn führt der Aufruf einer der Alias-Methoden zu einer endlosen Rekursion, da immer wieder die gleiche Methode aufgerufen wird. Daher gibt es an dieser Stelle einen System Stack Error.
Man muss also nur darauf achten, dass nie zwei Methoden unter gleichem Namen kopiert werden, dann tritt der Fehler auch nicht auf. Ich gebe meinen Alias-Methoden inzwischen immer kontextbezogene Namen, z.B. "questlog_init" für die Game_Temp-Initialize-Erweiterung in meinem Questlog-Script, so dass keine Gefahr besteht, dass in einem anderen Script der gleiche Name für die gleiche Methode gebraucht wird.
Und? Das weiss ich doch alles -.-
Aber es gibt einfach auch Leute, die die alias angabe nicht so eindeutig in ihre Skripte schreiben. Und wenn da ein Neuling einfach 2 Skripte hinein kopiert die zufällig die selbe Angabe im Alias haben, dann ist das ja wohl eine Ungewollte Codereaktion... Auch Bug genannt. Außerdem geht es nicht nur um 2 Skripte mit dem selben Alias, sondern hauptsächlich um das Problem, dass der alias Befehl an manchen Stellen den besagten Fehler auslöst, wenn man das Spiel mit F12 neustartet. Und das ist wohl auch nicht gewolt

Und deshalb sah ich keinen Grund dieses Tutorial nicht zu schreiben...
Mfg Monsta
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

wird schon in diversen scripts generell (die das verwenden) schon angewendet ^^. (wobei man dort schon auf globale variablen verzichtet und gleich solche "fehler" beim scripten neutralisiert)
Ist aber eh gut das du das thema mal direkt ansprichst!
Mal sollte aber beachten, das nicht nur mit alias'es so ein problem auftreten kann.
Bei einen einfachen neustart durch F11 können viele fehler auftreten, wobei das spiel normal vor so einen start sich spielen lassen.
Kann zb auftreten, weinn man wo ein bild mit einer globalen variable erstellt, aber dann vergisst diese auch wieder wo zu löschen wenn man es wieder erstellen will.
D.h. man könnte theroretisch noch bestimmte aktionen nach so einen "neustart" abrufen. (von globale variablen)
[COLOR="seagreen"]Mfg[/COLOR]
Markus