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
    Das macht jetzt aber gar keinen Sinn mehr. Du setzt die Variable auf den Wert 1 und fragst in der nächsten Zeile ab, ob sie den Wert 1 hat, was natürlich immer zutrifft.

  2. #2
    Du möchtest doch testen, ob irgendein Schild ausgerüstet ist. Dann müsste das so aussehen:

    @> Control Variables: Variable [0201] = [Nelu ALCHEMI]'s Shield ID
    @> Conditional Branch: Variable [0201:buckler] > 0
    @> Control Switches: [0147:shield control] = ON
    @>
    : Else
    @> Control Switches: [0147:shield control] = OFF
    @>
    : Branch End

  3. #3
    & wie füge ich der Datenbank weitere Schilde hinzu?
    Indem ich weitere Variablen als Shield ID benenne?

    Oder sind alle in meinem Spiel möglichen Schilde bereits in der Datenbank?

    Geändert von Norpoleon (31.08.2015 um 23:30 Uhr)

  4. #4
    Schilde stehen in der Datenbank bei den Items. Du wirst sicher wissen, wo diese zu finden sind.
    Du benötigst zudem nur diese eine Variable. Es soll nur abgefragt werden, ob ein Schild ausgerüstet ist. Ist kein Schild ausgerüstet, so wird die Variable durch den Befehl

    @> Control Variables: Variable [0201] = [Nelu ALCHEMI]'s Shield ID

    stattdessen auf 0 gesetzt.
    Wenn ein Schild ausgerüstet wird, dann nimmt die Variable den Wert der Item ID des Schildes an. Die Item ID ist immer größer als 0, da diese bei 1 anfangen. Für dein System sollte egal sein WELCHER Schild ausgerüstet ist. Es ist nur wichtig OB ein Schild ausgerüstet ist.
    Daher sollst du mit dem Conditional Branch lediglich abfragen, ob die Variable größer als 0 ist.

  5. #5
    Was ist jetzt, wenn bei unterschiedlichen Schilden etwas unterschiedliches passieren soll?
    Beispielsweise soll bei Wood Shield Animation X abgespielt werden;
    beim Bronze Shield soll Animation Y ablaufen.

  6. #6
    Dann fragst du nach der speziellen ID. Also welchen Wert die Variable hat um zu erkennen, welcher Schild ausgerüstet ist. Der Wood Shield hat z.B. die ID 44, der Bronze Shield die ID 48.

    Das hat aber wenig mit dem System des Blockens an sich zu tun. Das ist Grafikspielerei. Daher solltest du die Abfrage hierfür in ein anderes Event auslagern und per Call aufrufen.

  7. #7
    Mal eine Anmerkung am Rande: Macht doch bitte um Code den ihr aus dem Maker kopiert einmal [code] [/code] damit die Einrückungen erhalten bleiben...

  8. #8
    Naja, jedenfalls funktioniert das Blocken jetzt erstmal einwandfrei.
    Ich danke allen, die mir hier geholfen haben. (:

    Weitere Probleme, die ich mit Variablen habe, werde ich dann in einem anderen Thread unterbringen.

    Geändert von Norpoleon (02.09.2015 um 13:01 Uhr)

  9. #9
    Hier nochmal der Code für diejenigen, die vielleicht ein ähnliches Block-System in ihr Game integrieren wollen.

    Der Code für den Block-Vorgang an sich:

    Key Input Shield (PP) kein Switch:
    Code:
        @> Key Input Processing: [0003], Wait
        @> Show Animation: Player, [eheb shield]
        @> Wait: 0.0 seconds
        @> Change Parameters: Entire Party, MHP + 900
        @> Change HP: Entire Party, + 900
        @> Wait: 0.2 seconds
        @> Change HP: Entire Party, - 900
        @> Change Parameters: Entire Party, MHP - 900
        @> Wait: 0.0 seconds
    Ich habe mich entschlossen, nur noch 900 HP dem Helden hinzu zu fügen, weil ich mir dann nur noch merken muss, dass der durch Gegner angerichtete Schaden nicht über 900 liegen darf. Das ist eher verkraftbar, als dass die HP des Helden 999 nicht übertreffen dürfen.

    Hier die Abfrage, ob der Held überhaupt einen Schild angelegt hat:

    Init Shield (PP) kein Switch:
    Code:
        @> Wait: 0.0 seconds
        @> Control Variables: [0201:shield] = [Nelu ALCHEMI]'s Shield ID
        @> Wait: 0.0 seconds
        @> Control Variables: [0201:shield] = [Nelu MERC]'s Shield ID
        @> Wait: 0.0 seconds
        @> Control Variables: [0201:shield] = [Nelu BRUTE]'s Shield ID
        @> Wait: 0.0 seconds
        @> Control Variables: [0201:shield] = [Nelu WITCH]'s Shield ID
        @> Conditional Branch: Variable [0201:shield] > 0
          @> Control Switches: [0147:shield control] = ON
          @>
         : Else
          @> Control Switches: [0147:shield control] = OFF
          @>
         : Branch End
        @> Wait: 0.0 seconds
    Denkt daran, dass bei diesem Code die anderen Helden & Klassen in eurem Game zu Beginn keine Schilde angelegt haben dürfen! Ansonsten wird bei Druck auf den Block-Button trotz nicht angelegtem Schild trotzdem geblockt.

  10. #10
    1) Was soll das ganze Wait 0.0 da. Das verzögert alles unnötig. Du brauchst nur ein Wait 0.0 am Ende des Events (bei PPs theoretisch auch nicht, weil die ein "automatisches" Wait 0.0 am Ende haben, aber da kann es manchmal tatsächlich nötig sein es mit einem zusätzlichen Wait 0.0 quasi zu "verdoppeln"), oder innerhalb einer Schleife mit Loop/Labels.
    2) Du überprüfst hier nur ob "Nelu WITCH" einen Schild angelegt hast. Die anderen 3 Werte "verpuffen" weil du sie immer wieder überschreibst, bevor du mit ihnen irgendwas machst.

    Und ich nehme an, mit "andere Helden" meinst du solche die nicht in der Party sind. Dafür müsstest du nur abfragen, ob ein Held in der Party ist, bevor du sein Schild checkst.

  11. #11
    Sorry, dass ich jetzt etwas polemisch werde, aber:

    Warum zur Hölle sollte man so ein Skript für diese Funktion verwenden? :'D

    Ich würde von Vornherein alles, was viele Mapevents gemeinsam verwenden per Common Events skripten. Da muss man dann sowas wie ein Blocksystem sowieso nur einmalig einfügen Das würde ich dann definitiv per Switches machen und eine Abfrage, wenn der Switch an ist, dann soll der Schaden 0 betragen und wenn nicht, dann soll er ganz normal berechnet werden.

    Einzig und allein müssen sogenannte Parameter übergeben werden beim Aufruf einer Funktion. Beim RPG Maker gibt es sowas leider nicht, also muss man sich da mit den Variablen behelfen, die man auf bestimmte Werte setzt, bevor da CE aufgerufen wird.

    Aber wie gesagt, bei dir ist das ja wohl irgendwie nicht möglich, da du offensichtlich wirklich keine CEs verwendest

  12. #12
    @Cherry Die Waits sind da, weil ohne sie nichts passiert. & ich verfolge eine strikte Politik beim Makern: "Alles, was funktioniert, ist gut!" (^:
    Außerdem: Der Code muss natürlich so aussehen:
    Code:
    @> Wait: 0.0 seconds
        @> Control Variables: [0201:shield] = [Nelu ALCHEMI]'s Shield ID
    @> Conditional Branch: Variable [0201:shield] > 0
          @> Control Switches: [0147:shield control] = ON
          @>
         : Else
          @> Control Switches: [0147:shield control] = OFF
          @>
         : Branch End
        @> Wait: 0.0 seconds
        @> Control Variables: [0201:shield] = [Nelu MERC]'s Shield ID
    @> Conditional Branch: Variable [0201:shield] > 0
          @> Control Switches: [0147:shield control] = ON
          @>
         : Else
          @> Control Switches: [0147:shield control] = OFF
          @>
         : Branch End
        @> Wait: 0.0 seconds
        @> Control Variables: [0201:shield] = [Nelu BRUTE]'s Shield ID
    @> Conditional Branch: Variable [0201:shield] > 0
          @> Control Switches: [0147:shield control] = ON
          @>
         : Else
          @> Control Switches: [0147:shield control] = OFF
          @>
         : Branch End
        @> Wait: 0.0 seconds
        @> Control Variables: [0201:shield] = [Nelu WITCH]'s Shield ID
        @> Conditional Branch: Variable [0201:shield] > 0
          @> Control Switches: [0147:shield control] = ON
          @>
         : Else
          @> Control Switches: [0147:shield control] = OFF
          @>
         : Branch End
        @> Wait: 0.0 seconds
    Anmerkung: Gibt es da noch irgendeine Möglichkeit das Ganze zu beschleunigen?

    @Drakee Ist mit CE "Common Events" oder "Call Events" gemeint? Common Events verwende ich schon, aber nicht für Schadenabfrage. Ich verwende sie eher für das Aufrufen von Animationen oder Klassenabfragen.

    Aber mal was anderes: Wo kann man sich in eurem Forum der Community vorstellen?
    EDIT: Hab den "Hallo, ich bin neu hier"-Thread schon gefunden. (:

    Geändert von Norpoleon (02.09.2015 um 16:12 Uhr)

Stichworte

Berechtigungen

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