Ich kenn mich mit sowas kaum aus (aber erstmal danke für die Mühe ) und wollte jetzt einfach noch einmal nachfragen, weil ich die Funktionsweise nicht ganz verstanden habe.
Ich kopier das ganz normal da rein, wo die Scripte reinkommen (über Main) und im Eventcode mache ich dann Callscript mit:
switches[switch_id] = new_state
Z.B. switches[001] = on
Und dann macht er mir in alle vier Savegames die auf ON?
Hab ich das so richtig verstanden? Ich kann ein gaaaanz klein wenig RGSS verstehen (hab auch hier und da sogar mal was an einem Script ausgebessert), aber eigentlich bin
ich in dem Bereich noch Anfänger.
Edit:
Okay, da hab ich noch iwo nen Denkfehler drin, denk ich.
Du kannst das Script überall overhalb von Main hineinkopieren.
Um es aufzurufen müsstest du im call script folgendes eingeben:
set_switch_for_all_save_files(0,true)
damit würde der Switch mit der ID '0' auf 'ON' geschaltet werden.
Da der Funktionsname für ein Callscript wahrscheinlich zu lang ist, etwas was ich ursprünglich nicht bedacht habe, würde ich dir jedoch raten den Funktionsnamen abzukürzen.
Also müsstest du die erste Zeile:
Zu irgendetwas anderem umändern, zum Beispiel:
Oder was dir auch immer als passend und kurz genug erscheint.
Bedenke jedoch, dass du dann im Callscript den richtigen Namen benutzt.
Ich habe es gerade für den RPG-Maker XP getestet, es schein für mich zu funktionieren.
Allerdings habe ich an einer Stelle einen kleinen Fehler gefunden und noch hinzugefügt, dass das Script auch den Switch im derzeit geladenen Projekt ändern falls eines geladen ist.
Hier also nocheinmal eine klein wenig überarbeitete Version.
Die vorherige war nicht dafür gedacht gewesen innerhalb eines Spielstandes aufgerufen zu werden sondern nur aus einer Art Menü heraus.
Ich habe nicht recht darüber nachgedacht, ich dachte es würde nichts desto trotz funktionieren.
Das Problem liegt einfach daran, dass die Save-Files des RMVX anders benannt sind als diejenigen des RPG-Makers XP.
Anstatt .rxdata ist das Appendix beim VX .rvdata.
Das Script von -KD- jedoch wird den Switch-Zustand nicht ändern sofern er bereits richtig gesetzt ist. Das könnte gefährlich sein in dem Fall, dass er bereits an anderer Stelle lokal verändert wurde.
In dem Script (welches wirklich sehr viel besser als meines aussieht) sollte diese Zeile heraus genommen werden:
Damit das Endergebnis so aussieht:
Das Problem nämlich welches ich sonst sehe wäre folgendes:
Gemäß dem Fall jeder Switch wird als "false" initialisiert würde der Switch in jedem neu erstellten Speicherstand immer false sein und könnte, wenn er bereits auf false gesetzt ist nichtmehr für alle anderen Speicherstände auf false gesetzt werden, auch wenn dieser Switch bei anderen Speicherständen auf true stehen würde.
Außer natürlich ich habe irgendetwas übersehen.
@-KD-
Ja, sorry. Tut mir echt leid. Ich war mir sicher es geschrieben zu haben und hab es dann doch iwie übersehen. Doof, da mir das schon einmal
bei einer Frage hier passiert ist (und ich frage scripttechnisch nun wirklich nur alle Jubeljahre mal was :'D)
Hab beide Varianten jetzt ausprobiert und bekomme eine Fehlermeldung für diese Zeile: filename = "Save#{file_index + 1}.rvdata" (Zeile 7 bzw 6, je nach Version des Scriptes)
KA, was an ihr falsch sein soll O_o
Fehlermeldung besagt:
Script "Global Variable" line 6 (oder 7): NameError occured.
undefined local variable or method "file_index" for
GlobalSwitches:Module
Zitat
Ich habe nicht recht darüber nachgedacht, ich dachte es würde nichts desto trotz funktionieren.
...
Eine Umbenennung der Dateiendung im Script hat leider auch Fehlermeldungen ausgegeben. ._.
@Cornix: Hm, ja, es kann zu Fehlern kommen wenn man diesen globalen Switch über ein normales control switches verändert, ohne diese Methode aufzurufen, und danach das Spiel abspeichert. Man könnte in Game_Switches einen Code einfügen, der den Cache leert, sobald ein Switch gesetzt wird.
Vielen Dank, -KD- (und auch an dich cornix).
Bei meinem Test gerade lief es vorzüglich.
Ich schreib euch in die Credits von SSM:SF Akte1 rein. ^^
(Release ist vermutlich nächste Woche, dies war, neben dem Betatest das einzige, was noch fehlte)
Ich glaube Rosa Canina verwendet der RPGMaker VX (sowas sollte allerdings am Anfang eines Threads gesagt werden).
In dem Fall muss das Script etwas modifiziert werden:
Anwendung: Im Event-Script tippst du ein:
Erste Zeile würde den Switch Nummer 5 auf AN setzen. Zweite Zeile würde den Switch Nummer 3 auf AUS setzen.