Montag, Dienstag, Mittwoch, ... [RPG Maker MV]

  • Hi Leute, ich bin seit einigen Monaten abstinenz endlich wieder zum Makern gekommen und komme schon mit den ersten leichten Events zu meinen eingerosteten Grenzen.


    Ich wollte ein Event aufbauen, mit dem ich sowohl optisch, als auch schriftlich Wochentage ausgeben kann.

    Das Optische ist nicht das Problem, da kann ich mit Bildern das dann durchswitschen.

    Aber Schriftlich stellt mich das vor ein Problem. Denn ich weiß einfach nicht mehr wie ich Variabeln mit Texten füllen kann, ohne ein Skript zu schreiben.


    Wenn ich nun also etwa ausgeben will, dass "Heute" Donnerstag ist und man nach einer verlorenen Schlacht an einem Samstag wieder aufwacht, Geschäfte aber nur von Montag bis Freitag auf sind...
    Man einen Questgeber nur Montags, Mittwochs und Freitags an seinem Platz finden kann...
    Man für eine Reise von der einen zur anderen Stadt 4 Tage braucht...

    ...


    Wäre es zumindest Praktisch, wenn man das sehen kann, auch wenn man gerade keinen Kalender oder ein externes Uhr-Event auslöst.

    Aber ich weiß einfach nicht mehr wie das geht.

  • Heyo O/

    Kommt natürlich stark darauf an wie du bisher alles was mit Zeit zu tun hat aufgebaut hast.

    Aber rein theoretisch könntest du dir eine Variabel schnappen die für die Wochentage zuständig ist.
    Wert 1 - 7 ist dann jeder Wochentag. Für feste Tage ist das schon genug.
    Wenn du dann Tage adden willst, kannst du ganz einfach + z.B. 2 (Tage) machen. Hast du dann z.B. den Startwert 1 (Montag) ist +2 =3 also Mittwoch.
    Du darfst dann halt nur nicht vergessen einmal zu checken ob der Gesamtwert dann über 7 wäre; da müsste man dann halt einmal kurz durchgehen auf welchen Wert dann gesprungen werden soll.

    Damit wäre eigentlich alles was du machen willst abgedeckt.
    Am Donnerstag verloren? +2 Tage und man wacht bedröppelt am Samstag auf.
    Es ist Samstag oder Sonntag? Tja, die Ladentüren bleiben zu.
    Es ist Montag, Mittwoch oder Freitag? Glückwunsch, Sie können den Questgeber besuchen.
    Etc...

    Eine Variabel kann man auch ganz einfach in einer Text-Box anzeigen lassen, sodass das auch in Konversationen auftaucht.

  • Ergänzend zu diesem Vorschlag:


    Sobald man einen solchen Grenzwert von 7 überschreitet, wird von dieser Variable ein Wert von 7 abgezogen, um auf den gewünschten Wochentag zu kommen.


    Für eine Bedingungsabfrage sähe das so aus:

    If (Variable: Wochentage) greater than 7

    then (Variable: Wochentage) - 7


    Beispiel zur Verdeutlichung: Reise geht an einem Samstag (Variable steht bei 6) los. Bei einer viertägigen Reise also: (Variable: Wochentage + 4). Dann erfolgt die oben beschriebene Bedingungsabfrage, wodurch sich folgende Rechnung ergibt: 10 - 7 = 3


    Somit kann dann ohne großen Aufwand sichergestellt werden kann, dass nach vier Tagen auch wirklich Mittwoch ist, sobald man am Reiseziel ankommt.


    Ich hoffe, das konnte dir etwas weiterhelfen. ^^

  • Ergänzend dazu kannst du einer anderen Variable die Bezeichnung des Wochentages zuweisen. Dazu einfach abfragen welchen Wert die Variable mit der Zahl hat und dann per Scriptcall:


    Code
    1. $gameVariables.setValue(ID, "Montag");


    Bei ID kommt die ID der Variablen rein, die geändert werden soll. Und den Wochentag in Anführungszeichen setzen.

  • Also was das Zeit Event angeht, so sieht es im Moment so aus:




    Und wenn ich das für den Spieler einfach auslesen lasse, dann sieht das nun zum Beispiel so aus:
    (Deswegen ist auch die Variable: "10er Min" da, sonst würde etwa eine Zeit von 12:08 als 12:8 ausgelesen werden)




    Bei den Mondphasen könnte ich noch mit Bildern Arbeiten (Zu mal die für das Spiel eh in ein HUD wandern müssten). Aber die Wochentage, die ich in dem Spiel auf 9 Hochsetzen wollte, funktionieren nicht mit der Bezifferung von 0 bis 8. Das wäre nicht nur unschön, sondern würde auch die inversion zerstören.

    Aber eine Uhr mit Wochentagsanzeige (die eben nur abgelesen werden muss) kann einfach mitgeführt werden.

    (Und ich weiß nun nicht, ob ich die Taschenuhr nun voll bebildern aufrufen lassen will.)



    Aber mit dem: $gameVariables.setValue(ID, "Montag"); werde ich das nun auf alle Fälle versuchen.
    (Ich hoffe nun nur dass ich das nun einfach mit dem Skript-Befehl der Event-Managersgeht. Bin echt kein Skripter.)

  • (Ich hoffe nun nur dass ich das nun einfach mit dem Skript-Befehl der Event-Managersgeht. Bin echt kein Skripter.)

    Das ist genau der Befehl, den du über den Skript-Befehl eingeben musst.


    Zu deinem Event:


    Bei der Stundenabfrage (>=24) ziehst du von den 10erMin 24 ab, nicht von den Stunden. Das würde ich ändern ;)

    Auch würde ich den Wait-Befehl in ein anderes Paralleles Event packen, damit die Stundenrechnerei auch triggert wenn du manuell die Zeit veränderst. Ansonsten bist du halt immer in dem 300 Frame-Wait drinnen und müsstest im schlimmsten Fall die 300 Frames warten bis sich was ändert.

  • Habe es eben ausprobiert. Klappt wunderbar. Vielen dank für die schnelle Hilfe.


    Das ich bei dem Stunden-Variable einen Fehler hatte hatte ich noch nicht mal mitbekommen.
    (Auch wenn ich plötzlich immer Sachen stehen hatte wie: 36:-247 Uhr)


    Aber das war erstmal noch nicht so wild. Umso besser, das der Fehler nun auch gleich mit ausgemerzt werden konnte.

    Ich weiß aber schon wie ich den Fehler reingesämmelt habe. die Variable: "10er Min" habe ich nachträglich eingesetzt und dann wohl vergessen das komplette Event zu korrigieren.


    Ich versuche heute Abend/Nacht mal die Spielidee zu posten. Vielleicht gibt es dann noch ein paar Punkte die ich noch übersehen habe.
    Sollte in der Spielwiese ja hinhauen.

  • Okay, ich glaube, ich habe da doch noch irgendetwas falsch gemacht.


    Nun sieht es nämlich so aus:



    Und wenn sich dann die Variabeln ändern (eben weil sich Tag und Mondphase ändern sollen) sieht es dann plötzlich so aus:



    und jedes mal, wenn die Variable für den Wochentag, oder die Mondphase erhöht wird, dann wird die Variable nicht resetet und erhöht, sondern der Text wird um den angegebenen Wert erhöht.

    Scheinbar ist "$gameVariables.setValue(ID, "Montag");" doch nicht ganz das richtige. Oder zumindest nicht zu 100%.


    Denn das Anzeige-Event (welches auf Parallel Process steht) ist eigentlich so simpel, das es da nicht dran liegen kann:



    Aus meiner Sicht heißt das, ich muss eine andere Möglichkeit finden, die dann einen Reset der Variable von einem Text wieder zu einem Nummer-Wert umwandelt ehe ich wieder einen Text daraus machen könnte. Oder habe ich einen Zwischenschritt vergessen?


    Für die Wochentage sieht es nämlich nun erst einmal so aus:



  • Du brauchst zwei Variablen für den Wochentag. Eine als Zahl und die andere für den Text. Die mit der Zahl nutzt du zum Rechnen, und die andere wird entsprechend auf einen anderen Tag gesetzt. Kleines Beispiel:


    Variable 1: Wochentag Zahl

    Variable 2: Datum Tag Zahl

    Variable 3: Monat Zahl

    Variable 4: Jahr Zahl

    Variable 5: Wochentag Text

    Variable 6: Monat Text


    Gerechnet wird mit den ersten vier Variablen. Immer, wenn sich daran etwas ändert, fragst du den Wert der Variablen 1 und 3 ab. Für jede Möglichkeit musst du dann den Variablen 5 und 6 einen Text zuweisen. Also Falls Variable 1 = 2, dann Variable 5 = Dienstag. Das dann für jeden möglichen Wochentag und jeden möglichen Monat bzw. Mondphase abfragen.

  • Gut, dann erklärt es das auch, warum dann plötzlich bei einem Test plötzlich Feuertag11111 da stand.

    Dann nochmals danke.

    Habe es eben nochmal getestet. Jetzt funktioniert es.


    Ein Datums-Skript werde ich aber vorerst nicht etablieren.