Ich hab ein kleines Script für eine HP-Leiste geschrieben, aber sobald das Script aufgerufen wird sagt er:
Zwei Dinge die mich daran wundern sind, dass ich genau den selben Befehl schon einige Male vor Zeile 119 im script stehen hab und zweitens dass er diese Fehlermeldung sogar ausgibt wenn er (durch eine if-Bedingung) diese Zeile eigentlich überspringen sollte...
Hier mal das Script mit Zeile 119 unterstrichen:
btw, mag sein dass der code stellenweise etwas umständlich is, bin halt noch nicht so sehr geübt mit Ruby
Im Script sind mehrere Fehler drin. Wenn du abfragen willst, ob eine Variable einen bestimmten Wert hat, dann kannst du nicht x = 3 or 4 or 5 schreiben. Ausgewertet wird das ja folgendermaßen:
((x = 3) or (4)) or 5
---> setze die Variable x auf 3 und werte aus:
(3 or 4) or 5
---> 3 ist ein wahrer Wert, also gibt 3 or 4 als Ergebnis 3 aus
3 or 5
---> 3 ist immer noch ein wahrer Wert, also gibt 3 or 5 als Ergebnis 3 aus
3
---> 3 ist ein wahrer Wert, also wird if-Bedingung ausgeführt
Wenn du abfragen willst, ob eine Variable einen bestimmten Wert hat, verwendest du ==. Und or dient nicht dazu mehrere Abfragewerte zu bestimmen, sondern or ist eine Operation die zwei Wahrheitswerte aufnimmt und einen Wahrheitswert zurückgibt. Richtig wäre also
x == 3 or x == 4 or x == 5
oder kürzer
x.between?(3, 5)
Das Problem mit der Fehlermeldung liegt aber daran, dass du auf ein Picture zugreifst, welches nicht existiert.
Mal 'ne andere Frage: Schreibst du das Script, um ein wenig Ruby zu lernen, oder willst du damit wirklich produktiv arbeiten? Denn so wie das Script geschrieben ist, solltest du lieber EventCommands nutzen. Das geht einfacher.
Wenn du von Ruby profitieren willst, musst du auch die Techniken von Ruby nutzen. Pictures und Prozedurales Programmieren mit unzähligen ifs und whiles ist typisch für Event-Code. Rubycode ist meist einfacher aufgebaut und nutzt statt unzähligen if-Sätzen lieber Polymorphismen, statt unzähligen Schleifen lieber Iteratoren, statt Pictures und Makervariablen lieber Sprites und Instanzvariablen, statt vorgefertigte Bilder zeichnet man in Ruby solche Bilder lieber selbst usw.
Wie gesagt: Wenn du nur ein wenig rumprobieren willst, will ich dich nicht aufhalten. Wenn du aber wirklich Scripte für dein Spiel schreiben willst, nutze entweder wie gewohnt EventCommands, oder beschäftige dich noch etwas tiefgründiger mit Ruby, um dessen Stärken wirklich nutzen zu können.
Richtig wäre also
x == 3 or x == 4 or x == 5
oder kürzer
x.between?(3, 5)
...
"between" kann ich in diesem Fall nicht nutzen, weil die Zahlen die er abfragen soll ja nicht 3,4,5 sondern 2,4,6 bzw. 1,3,5 sind... mit dem ersten Vorschlag werd ichs jedenfalls nochmal veruchen^^
Zitat
Das Problem mit der Fehlermeldung liegt aber daran, dass du auf ein Picture zugreifst, welches nicht existiert.
...
Das Picture existiert volle Kanne^^ Die Zeile 119 hab ich 1:1 von weiter oben kopiert (Zeile 85) und die hat wunderbar funktioniert als ich das script getestet hab (das war bevor ich den Kram um Zeile 119 hinzugefügt hab)
Zitat
So wie das Script geschrieben ist, solltest du lieber EventCommands nutzen.
...
Ich nutze in diesem Fall Ruby weil ich die Pic-Nummer mit Eventcommands nicht durch eine Variable bestimmen kann. Das was ich über Ruby schon weiß hab ich aus dem Rubytutorial in deiner Sig gelernt und wenn du das Ding geschrieben hast, dann RESPEKT
Zitat
Wie gesagt: Wenn du nur ein wenig rumprobieren willst, will ich dich nicht aufhalten. Wenn du aber wirklich Scripte für dein Spiel schreiben willst, nutze entweder wie gewohnt EventCommands, oder beschäftige dich noch etwas tiefgründiger mit Ruby, um dessen Stärken wirklich nutzen zu können.
...
Im Grunde ist es nur Rumspielerei was ich mache, ich hab nicht vor mein Projekt auf irgendeine Internetseite zu stellen, dafür ist es nicht... mmh, "spektakulär" genug... Ich würde es höchstens an zwei drei Bekannte schicken die sowieso keinen Blassen von Ruby oder Programmieren an sich haben.
EDIT:
Hab den Code jetzt folgendermaßen verändert (Den Anfang hab ich hier weggelassen):
Den Fehler gibt er mir aber immer noch...
Hm, die unterste Abfrage ist ja eine Endlosschleife. Sie wird nur ausgeführt, wenn q <= 1 ist, aber q wird dann nicht erhöht, sondern weiter verringert, bleibt also immer <= 1. Gleichzeitig erhöhst du g immer weiter. Vermutlich tritt der Fehler dann auf, wenn a3 + g über 100 liegt. Ich nehme mal an du hast nur das Zeichen vertauscht und meinst eigentlich q >= 1.