Ergebnis 1 bis 13 von 13

Thema: Ruby-Variable definieren und nach Scene_Load.new abrufen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Vielen Dank!
    Das ist schonmal um einiges vielversprechender und dürfte glaube ich genau das machen, was ich haben möchte.


    Ein Problem besteht aber noch: Ich bin irgendwie zu doof, der Ruby-Variable einen festen Wert zu geben.

    Momentan habe ich eigentlich folgendes vor ...
    Über den Scriptbefehl:
    Code:
    $language = value
    $scene = Scene_Load.new
    dann eben
    Code:
    $game_variables[1] = $language
    Auf der jeweiligen Eventpage soll es dann eine Condition geben:
    Zitat Zitat
    Variable "0001: game language" is
    _______"value" or above

    Allerdings ruft er mit dieser Methode leidglich die Eventpage mit dem höchsten Wert auf,
    ich gebe also beispielsweise an
    Code:
    §language = 2
    $scene = Scene_Load.new
    Code:
    $game_variables[1] = $language
    kommt beim Aktivieren des Events die Eventpage mit der Bedingung
    Zitat Zitat
    Variable "0001: game language" is
    _______"5" or above
    und nicht etwa die, wo die Variable den Wert "2" hat.


    Oh Gott, ich hoffe, man kann verstehen, worauf ich hinaus will. .____."

    Geändert von Mordechaj (09.07.2011 um 12:35 Uhr)

  2. #2
    Zitat Zitat von Mordechaj Beitrag anzeigen
    Code:
    §language = 2
    $scene = Scene_Load.new
    § ? ^^
    Ist ggf. dieser Tippfehler dein Problem, oder hast du den nur beim Erstellen von diesem Beitrag gemacht?
    Wenn das nicht dein Problem ist, schaue ich heute Abend noch einmal wie dir da weiter geholfen werden kann. Oder auch nicht, falls jemand anderes schneller ist. Bis später.

  3. #3
    Nope, der Tippfehler ist mir auch grad aufgefallen, den hab ich nur hier im Thread gemacht. ^^"

    Dann setze ich mich mal brav hin und warte auf weitere Hilfe, vielen Dank. =3

    Geändert von Mordechaj (09.07.2011 um 13:43 Uhr)

  4. #4
    Eigentlich sehe ich keinen Fehler (von dem Tippfehler mal abgesehen), daher ist erstmal Fehlersuche angesagt.
    1. Überprüfe mal im Spiel (über den Maker starten) mittels F9 mal welchen Wert die Variable 1 tatsächlich hat. Falls dort tatsächlich 2 steht, liegt der Fehler im Event.
    2. Sicher, daß die Variable "$language" nirgendwo anders verwendet wird? Ersetz testweise an beiden Stellen mal die Variable durch eine garantiert neue Variable
    3. Falls das auch nichts hilft füge im zweiten Teil (wo du den Wert der Sprach-Variable in einer Game-Variable speicherst) mal folgendes ein:
    Code:
    p($language)
    Wenn du das jetzt ausführst, solltest du ein einfaches Windows-Popup kriegen, in dem der Wert der $language-Variable steht.

    Am sichersten testet du sowas in der Regel erstmal in einem leeren/neuen Testprojekt aus, bevor du es in ein bestehendes Projekt integrierst.

  5. #5
    Also den Wert der globalen Variable definiert es auf jeden Fall richtig und setzt dann den Befehl "$game_variables[1] = language" auch richtig um, beim Ausgeben über \v[1] zeigt er mir nämlich den für $language definierten Wert richtig an (und mit p($language) wird dieselbe Zahl angezeigt).

    Danach aber passiert irgendwie mit dem Event nichts, das die Werte der Variable als Condition hat. Wenn ich mich von der Map teleportiere und dann wieder auf die Map zurück, hat das Event offenbar gemerkt, dass sich die Variable verändert hat.

    Wie kann ich dem Teil sagen, dass es die Information zu diesem einen bestimmten Zeitpunkt, wenn ich die globale Variable in eine game_variable geschrieben habe, aktualisieren soll, sodass das Event mitbekommt, dass die Bedingung nun erfüllt ist?

    Geändert von Mordechaj (09.07.2011 um 13:48 Uhr)

  6. #6
    Oh, sorry, völlig vergessen. Bitte füge mal das hier ein, nach dem die GameVariable definiert wird:
    $game_map.need_refresh = true

  7. #7
    Zitat Zitat von Holly Beitrag anzeigen
    Oh, sorry, völlig vergessen. Bitte füge mal das hier ein, nach dem die GameVariable definiert wird:
    $game_map.need_refresh = true
    Supi, das wirkt, vielen Dank!


    Nun da alles funktioniert, gibt es nur noch ein Problem: die globalen Variablen werden nicht über den Ladebildschirm hinweg übernommen, nach dem Laden wird der Wert der Variable aus dem Spielstand wiederhergestellt.
    Sprich ich weiß jetzt zwar, wie das alles so gehen kann, allerdings passiert nicht wirklich das, was ich wollte. XD

    Oh Mann.

  8. #8
    Bist du dir sicher? Ich war mir eigentlich ziemlich sicher, dass ausschließlich die GameVariablen in den Savegames festgehalten werden, und nicht die Ruby-Variablen. Sprichst du von der $language, von $game_variables[1], oder von beidem, wenn du sagst, dass sie überschrieben werden?

    Geändert von Holly (10.07.2011 um 01:04 Uhr)

  9. #9
    Zitat Zitat von Holly Beitrag anzeigen
    Bist du dir sicher? Ich war mir eigentlich ziemlich sicher, dass ausschließlich die GameVariablen in den Savegames festgehalten werden, und nicht die Ruby-Variablen.
    Und du hast völlig recht, weil ich einfach nur ein Trottel bin. Ich hatte vergessen, den Wert von $language nach dem Laden im Testprojekt wieder in $game_variables[1] zu übernehmen, deswegen hat es für mich den (völlig falschen) Anschein gemacht, als hätte es nicht funktioniert.

    Ich bedanke mich riesig bei dir für die Hilfe und Geduld. Es klappt nun dank dir genau so wie ich es haben will. Yay!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •