Ergebnis 1 bis 20 von 52

Thema: RM 2k3: Block-System funktioniert nicht richtig

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    RM 2k3: Block-System funktioniert nicht richtig

    Ich wollte das Gameplay meines Spiels mit einem Block-System abrunden.

    Der Code sieht so aus:

    @> Key Input Processing: [0003], Wait
    @> Show Animation: Player, [eheb shield]
    @> Wait: 0.0 seconds
    @> Wait: 0.0 seconds
    @> Wait: 0.1 seconds
    @> Change HP: Entire Party, + 9000
    @> Wait: 0.5 seconds
    @> Change HP: Entire Party, - 9000
    @> Wait: 0.1 seconds

    Da gibt es nur leider das Problem, dass nach dem Blocken der Held bei der nächsten Berührung mit einem Gegner stirbt.
    Könnt ihr mir da weiterhelfen? Was mache ich falsch?

  2. #2
    Ohne den Maker die letzten Jahre benutzt zu haben:
    Dein Befehl heilt die Party um 9000 und verringert dann die HP um 9000. Wenn die Helden aber bspw. 500/2000 HP haben, heilst du sie auf 2000/2000 und setzt dann die HP auf 0 durch die -9000, wodurch diese sofort bei jeglicher Attacke sterben?

  3. #3
    Man könnte auch blocken als das einbauen was es ist, das Abwenden von Schaden in dem blockenden Helden einfach kein Schaden zugefügt wird. Diese Methode hier ist schon ziemlich seltsam.

  4. #4
    Das ist ganz seltsam. Ich habe festgestellt, dass bei einer ungeraden Anzahl von Blockvorgängen die HP des Helden normal bleiben & bei einer geraden Anzahl auf 1 gesetzt werden.

    Ich habe mich entschlossen bei dem Blockvorgang die HP des Helden zu verändern, weil ich ansonsten nach dem Blocken jede mögliche Höhe von Schaden einzeln wieder möglich machen müsste. Ich verwende das ABS von Kazesui.

  5. #5
    Dein Schaden zufügen sollte ein CE sein. Und dort packst du eine Abfrage rein "wenn switch 'blockt_grad"=off, dann Schaden zufügen".

  6. #6
    Irgendwie steige ich ebenfalls nicht hinter die Logik deines Skripts. Wo ist denn das Problem, einfach vor dem Schaden eine Abfrage zu machen?

    Die Berechnung von und das Abziehen durch Schaden sollte prinzipiell immer in einem Common Event stehen, lediglich die Parameter wie Stärke des Gegners z.B. sollte man vor dem Call-Befehl im Event einzeln in der dafür vorgesehenen Variable speichern. Und dann muss man so eine Anpassung wie das (nachträgliche) Implementieren einer Blocken-Möglichkeit auch diese Anpassung nur ein einziges Mal vornehmen und nicht in jedem einzelnen Event.

    Wichtig ist es, um Aufwand möglichst weit einzudämmen, Funktionen, die global benutzt werden sollen, in die Common Events zu packen. Denn sonst hat man diese Funktion in jedem Event (in diesem Fall in jedem Gegner-Event) einzeln stehen und muss dann für 100 Gegner auch 100 mal die Funktion abändern.

  7. #7
    Ich habe nun eine Möglichkeit gefunden, wie die HP des Helden nach dem Blocken nicht auf 1 gesetzt werden:

    @> Key Input Processing: [0003], Wait
    @> Show Animation: Player, [eheb shield]
    @> Wait: 0.0 seconds
    @> Wait: 0.0 seconds
    @> Wait: 0.0 seconds
    @> Change Parameters: Entire Party, MHP + 9000
    @> Change HP: Entire Party, + 9000
    @> Wait: 0.2 seconds
    @> Change HP: Entire Party, - 9000
    @> Change Parameters: Entire Party, MHP - 9000
    @> Wait: 0.1 seconds

  8. #8
    Ich habe eine Möglichkeit gefunden, wie die HP des Helden nach dem Blocken nicht auf 1 gesetzt werden:

    @> Key Input Processing: [0003], Wait
    @> Show Animation: Player, [eheb shield]
    @> Wait: 0.0 seconds
    @> Wait: 0.0 seconds
    @> Wait: 0.0 seconds
    @> Change Parameters: Entire Party, MHP + 9000
    @> Change HP: Entire Party, + 9000
    @> Wait: 0.2 seconds
    @> Change HP: Entire Party, - 9000
    @> Change Parameters: Entire Party, MHP - 9000
    @> Wait: 0.1 seconds

  9. #9
    Ich habe eine Möglichkeit gefunden, wie die HP des Helden nach dem Blocken nicht auf 1 gesetzt werden:

    @> Key Input Processing: [0003], Wait
    @> Show Animation: Player, [eheb shield]
    @> Wait: 0.0 seconds
    @> Wait: 0.0 seconds
    @> Wait: 0.0 seconds
    @> Change Parameters: Entire Party, MHP + 9000
    @> Change HP: Entire Party, + 9000
    @> Wait: 0.2 seconds
    @> Change HP: Entire Party, - 9000
    @> Change Parameters: Entire Party, MHP - 9000
    @> Wait: 0.1 seconds

  10. #10
    Oh man, ich seh die Bugs schon vorprogrammiert ^-^

  11. #11
    Das Blocken funktioniert so eigentlich sehr gut.
    Womit ich nur immer Maleste habe, sind die Item-Abfragen, die den Key-Inputs vorgelagert sind.
    Diese stören, je höher die Anzahl der Abfragen ist, den Fluss des Gameplays dermaßen, sodass das Gameplay sehr unexakt & willkürlich wird. :/

    Die Abfragen für die Schilde in meinem Game sehen so aus:

    'Init Shield' (PP)
    @> Wait: 0.0 seconds
    @> Wait: 0.0 seconds
    @> Wait: 0.0 seconds
    @> Conditional Branch: Buckler in Inventory
    @> Control Variables: [0001] = [Buckler] equipped
    @> Control Switches: [0147:shield control] = ON
    @>
    : Else
    @> Control Switches: [0147:shield control] = OFF
    @>
    : Branch End
    @> Wait: 0.0 seconds
    @> Wait: 0.0 seconds
    @> Wait: 0.0 seconds
    @> Conditional Branch: Wood Shield in Inventory
    @> Control Variables: [0001] = [Wood Shield] equipped
    @> Control Switches: [0147:shield control] = ON
    @>
    : Else
    @> Control Switches: [0147:shield control] = OFF
    @>
    : Branch End
    @> Wait: 0.0 seconds
    @> Wait: 0.0 seconds
    @> Wait: 0.0 seconds
    @> Conditional Branch: Iron Shield in Inventory
    @> Control Variables: [0001] = [Iron Shield] equipped
    @> Control Switches: [0147:shield control] = ON
    @>
    : Else
    @> Control Switches: [0147:shield control] = OFF
    @>
    : Branch End
    @> Wait: 0.0 seconds
    @> Wait: 0.0 seconds
    @> Wait: 0.0 seconds
    @> Conditional Branch: Templar Shield in Inventory
    @> Control Variables: [0001] = [Templar Shield] equipped
    @> Control Switches: [0147:shield control] = ON
    @>
    : Else
    @> Control Switches: [0147:shield control] = OFF
    @>
    : Branch End
    @> Wait: 0.0 seconds
    @> Wait: 0.0 seconds
    @> Wait: 0.0 seconds
    @> Conditional Branch: Hell-Templar Shield in Inventory
    @> Control Variables: [0001] = [Hell-Templar Shield] equipped
    @> Control Switches: [0147:shield control] = ON
    @>
    : Else
    @> Control Switches: [0147:shield control] = OFF
    @>
    : Branch End
    @> Wait: 0.1 seconds

    Die Berechnungen dieser Item-Abfragen stören das Gameplay so stark, dass nur einer von ca. 7 Befehlen (Key-Inputs) umgesetzt werden.
    Wie kann ich solche Berechnungen beschleunigen oder es dem Programm einfacher machen, diese zu lesen?

  12. #12
    Ich bin auch von diesem Code verwirrt. Kannst Du einfach mal dein ganzes Projekt iwo hochladen? xD

  13. #13
    Beschleunigen? Keinen Mist programmieren;-)

    Bei den Variable gibts die Möglichkeit zu lesen, welches Item ein Held auf bestimmtem Slot ausgerüstet hat.
    0 = nix
    >= 1 = irgendein Schild.

    Problem gelöst in zwei Zeilen.

  14. #14
    Im Grunde brauchst du das ganze Event nicht. Du kannst die Abfrage auch dort hinpacken, wo du die Taste fürs Blocken abfragst.

    Spieler drückt Blocktaste
    Ist Schild-ID > 0 (s. Corti)
    --- Blocken
    ansonsten
    --- Nichts tun

Stichworte

Berechtigungen

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