Ergebnis 1 bis 20 von 1418

Thema: Technik-Sammelthread für Probleme und Antworten

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Zitat Zitat von Linkey Beitrag anzeigen
    Sieht wahrscheinlich gerade nur im Forum so für mich aus, aber funktioniert deine Abfrage aktuell nicht nur, wenn der Held auf der X Achse nur 5 Felder entfernt ist?

    Wie meinst du das? Ich habe in dem Beispiel gleich alle für mich relevanten Entfernungen eingebaut. hat sich da ein Fehler eingeschlichen?

    @Cherry: Danke, das probiere ich gleich mal!

    Edit:
    Hab das jetzt so eingebaut
    Code:
    @> Play SE: 'Waterfall-SoundBible.com-1597727655', 0, 100, 50
    @> Play SE: 'Waterfall-SoundBible.com-1597727655', 0, 100, 50
    @> Play SE: 'Waterfall-SoundBible.com-1597727655', 0, 100, 50
    @> Play SE: 'Waterfall-SoundBible.com-1597727655', 0, 100, 50
    @> Play SE: 'Waterfall-SoundBible.com-1597727655', 100, 100, 50
    @> Wait: 25.7 seconds
    Ändert nichts dran, dass es gleich lauter wird, wenn der Held sich dem Wasserfall nähert, aber nicht mehr wirklich leiser... hab alle Seiten so aufgebaut bis auf den Trigger als Variable. Was übersehe ich?

  2. #2
    Nur so nebenbei- spricht etwas dagegen, den Sound als BGM und die BGM stattdessen als Sound abzuspielen? Wäre eleganter gelöst. So kannst du die Lautstärke auch während des Abspielens und ohne Unterbrechung/ Neustarten anpassen.

  3. #3
    Naja die Logik ergibt so nicht so viel Sinn, da du alles verschachtelst hast aber eigentlich immer 2 Dinge überprüfst. Es ist so, wie Linkey schrieb, es wird z.B. gar nichts gemacht wenn der Held horizontal mehr als 5 Felder weg ist.

    Das wäre zu lösen indem du die Bedingungen einfach untereinander packst anstatt verschachtelt, aber selbst dann stimmts nicht weil wenn die Entfernung in X und Y verschieden ist, wird in vielen Fällen wieder gar nichts passieren.

    Was du wirklich brauchst ist eine tatsächliche Distanz (Länge des Distanzvektors), die wäre die Quadratwurzel aus x²+y² (Pythagoras). Jetzt hat der Maker zwar keine Wurzelfunktion, aber das macht nichts weil du halt stattdessen nicht mit der gewünschten Entfernung d (z.B. 5) sondern mit dem Quadrat davon d² (z.B. 25) vergleichen kannst (d²=x²+y²).

    Außerdem willst du ja nur dann den Sound erneut abspielen, wenn sich die Lautstärke geändert hat, oder wenn er durchgelaufen ist, d.h. wir müssen auf die Änderung überprüfen und anstatt eines statischen Waits einen Framezähler nehmen der bis zu 25.7 Sekunden = 1542 Frames zählt.

    Mein Vorschlag wäre daher folgender:

    Code:
    * Var X = X von Held
    * Var Y = Y von Held
    * Var X -= X von Wasserfall
    * Var Y -= Y von Wasserfall
    * Var X *= Var X <<< hier brauchen wir keine Überprüfung auf negative Zahlen mehr, weil wir den Wert eh quadrieren
    * Var Y *= Var Y
    * Var DistanzQuadrat = X
    * Var DistanzQuadrat += Y
    * Var NeueLautstärke = 0
    * If DistanzQuadrat < 225 <<< d.h. <15 Felder (quadriert)
    ... * Var NeueLautstärke = 1
    : end
    * If DistanzQuadrat < 144 <<< d.h. <12 Felder (quadriert)
    ... * Var NeueLautstärke = 2
    : end
    * If DistanzQuadrat < 64 <<< d.h. <8 Felder (quadriert)
    ... * Var NeueLautstärke = 3
    : end
    * If DistanzQuadrat < 25 <<< d.h. <5 Felder (quadriert)
    ... * Var NeueLautstärke = 4
    : end
    * If Var NeueLautstärke != Var AktuelleLautstärke <<< hat sich die Lautstärke geändert?
    ... * Var ZeitÜbrig = 0 <<< direkt neues Abspielen des Sounds auslösen
    ... * Var AktuelleLautstärke = Var NeueLautstärke
    : end
    * If Var ZeitÜbrig <= 0
    ... * Play SE 0% <<< zuerst alten Sound stoppen
    ... * Play SE 0%
    ... * Play SE 0%
    ... * Play SE 0%
    ... * If Var AktuelleLautstärke == 1 <<< Hinweis: Überprüfung auf Lautstärke 0 nicht nötig weil der Sound dann einfach gar nicht gespielt wird
    ... ... * Play SE 25%
    ... : end
    ... * If Var AktuelleLautstärke == 2
    ... ... * Play SE 50%
    ... : end
    ... * If Var AktuelleLautstärke == 3
    ... ... * Play SE 75%
    ... : end
    ... * If Var AktuelleLautstärke == 4
    ... ... * Play SE 100%
    ... : end
    ... * Var ZeitÜbrig = 1542 <<< Dauer des Sounds in Frames (25.7s * 60 FPS = 1542)
    * Var ZeitÜbrig -= 1 <<< verbleibende Zeit für den Sound bis zum Loopen um 1 Frame runterzählen
    (kein Wait 0.0 nötig, denn da das ein Parallel Process ist, wird ohnehin 1 Frame gewartet bis das Event wieder von vorne anfängt)
    Um das ganze zu resetten, z.B. wenn man die Map frisch betritt, einfach ZeitÜbrig auf 0 setzen.

    An deiner Stelle würde ich für die Abfrage der Koordinaten des Wasserfalls direkt "This Event" verwenden und den Code in das Wasserfall-Zentrums-Event selber packen. Dann kannst du es beliebig auf andere Maps kopieren ohne was zu ändern (bzw. nur den Sound zu ändern, wenn nötig).

    Das ganze hat noch einen Haken: Wenn keine Events ausgeführt werden können, z.B. wenn man ins Menü geht oder eine Screentransition stattfindet (Show/Hide Screen), wird der Zähler auch nicht reduziert (das Problem hättest du mit deinem Wait aber auch), d.h. danach glaubt der das Spiel, der Sound ist weniger weit fortgeschritten, als er wirklich ist, und es entsteht eine Lücke wenn der Sound ausläuft, das Game es aber noch nicht weiß. Das könnte man zumindest einigermaßen abfedern indem man den Sound in der Sounddatei selber mehrfach geloopt reinmacht und aber trotzdem für den Zähler die einfache Länge verwendet, dann gibts zumindest einen Puffer, wo es nicht auffällt wenn man kürzer als dieser Puffer lang ist sich im Menü o.ä. befindet.

    @Nagasaki: Ich würde vermuten, die Tatsache dass Sound-Effekte nicht MIDI oder MP3 sein können und auch nicht automatisch gespeichert, beendet und wiederhergestellt werden wenn man z.B. kämpft, und auch unterbrochen werden würden wenn man ins Menü geht und dazwischen die Musik ausläuft (was sicher mehr auffällt als beim Sound) wird wohl dagegen sprechen... Aber je nach Rahmenbedingungen kanns natürlich eine interessante Herangehensweise sein. (Neuere Maker haben genau dafür ja BGS...)

    Geändert von Cherry (24.02.2021 um 14:39 Uhr)

  4. #4
    Das ergibt Sinn.

  5. #5
    @Cherry:
    Vielen Dank für deinen Code und die Erklärung. Ich schaue morgen mal in Ruhe, ob ich das eingebaut kriege.

  6. #6
    Hallo zusammen!

    Ich hab ein Problem mit einem Skill in der Database. Zwei Bilder um es anschaulicher zu machen.





    Und zwar will mein liebenswert tollpatschiger Held auf Level 14 diese Technik nicht lernen. Dabei wird es bei einem Level Up im Kampfsystem sogar angezeigt, dass er "Wutanfall" lernt, doch wenn ich im Menü danach schaue ist da nichts.
    Irgendwelche Ideen woran es liegen könnte?
    Die Technik hat übrigens noch das Attribut "Luft" aber das hat die Waffe auch, von dem her sollte es daran nicht liegen...

  7. #7
    Könnte es sein, dass du einen Spielstand lädst, in dem die Fähigkeit noch nicht in der Datenbank war? Ich weiß nicht, wie der Maker mit so einer Situation umgehen würde.

  8. #8
    Ändere mal den Skill Type zu Technik (oder wie imer es auch heißen mag, jedenfalls etwas anderes).

  9. #9
    Zitat Zitat von Kelven Beitrag anzeigen
    Könnte es sein, dass du einen Spielstand lädst, in dem die Fähigkeit noch nicht in der Datenbank war? Ich weiß nicht, wie der Maker mit so einer Situation umgehen würde.
    Ich habe zur Gegenprobe das Spiel gerade auf dem Level 14 begonnen. Im Menü sind alle bis dahin erlernbaren Techniken bis auf der "Wutanfall" Technik. Kann aber sein, dass es darüber hinaus mit deinem Tipp zusammenhängt.

    Zitat Zitat von Liferipper Beitrag anzeigen
    Ändere mal den Skill Type zu Technik (oder wie imer es auch heißen mag, jedenfalls etwas anderes).
    Technik habe ich nicht als Auswahl bei den Skills, nur Normal/ Switch/ Escape / Teleport. Oder wie meinst du das?

  10. #10
    Zitat Zitat
    Technik habe ich nicht als Auswahl bei den Skills, nur Normal/ Switch/ Escape / Teleport. Oder wie meinst du das?
    Im RM2k3 ist nicht jeder Skill von jeder Klasse anwendbar und im Kampf taucht der entsprechende Skill daher nicht im auf. Ich dachte, dass das hier der Fall sein könnte. Aber wenn der Skill schon im Menü nicht zu sehen ist, müsste der Grund ohnehin ein anderer sein, wie mir inzwischen eingefallen ist.

  11. #11
    Konnte das Problem lösen, indem ich den Skill kopiert habe und auf ein freien Skillslot (Nummer 200 )) eingefügt habe.

  12. #12
    Gibt es ein Programm / Tool, womit ich im Spiel unbenutzte Ressourcen schnell ausfindig machen kann?

  13. #13
    Versuch es mal mit dem RPGRewriter von vgperson, trotz des Artikelnamen hat der auch eine Datei-Checkfunktion.
    https://vgperson.com/posts.php?p=rpgmakerguide

    Kurzanleitung (Bestätige jede Eingabe mit Enter):
    - Um auf den Check-Modus zu wechseln gib mehrmals die 1-Taste ein.
    - Dann stell den Datei-Check via Druck auf die 5-Taste an (Sollte dann sagen: "Check Unused Files") (Optional kannst du die anderen Checks je nach Bedarf auch noch anpassen)
    - Anschließend gib die Z-Taste ein und wähle die .lmt Datei des zu überprüfenden Projekts aus.
    - Bestätige mit der Y-Taste das Erstellen einer log.txt, in der du dann nachschauen kannst, welche Dateien nicht genutzt werden.

  14. #14

Berechtigungen

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