Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 21 bis 40 von 52

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

  1. #21
    Ja, ist das gleiche.
    Eine andere Frage: Weshalb hast du soviele Waits in deinem Code? In der Regel reicht ein einziger 0.0 Wait am Ende des Events, wenn es sich um einen PP handelt. Du hast ans Ende einen 0.1 Wait gesetzt. Ich denke mal, weil du eine Verzögerung für's blocken willst. Sofern nicht, lass diesen auf 0.0. Die übrigen Dreieransammlungen weiter oben im Code, sollten überflüssig sein. Wobei ich keinen Überblick über dein KS habe, womit ich nicht sicher sagen kann, ob die ganzen Waits doch nötig sein könnten.

  2. #22
    @Nagasaki Das mit den drei Waits zwischendrin habe ich mir vom Code von Kazesui abgeguckt. Ich habe keine Ahnung, ob das notwendig ist oder nicht. (:

    @Kelven Also das Ganze sieht nun so bei mir aus:

    CE 'control shield'
    @> Control Variables: [0201:buckler] = [Nelu]'s Shield ID
    & wie gehe ich weiter vor?

  3. #23
    Versuch das mal in deinem aktuellen Code zu integrieren. Wie Corti bereits anmerkte, frag ab, ob die Variable [0201:buckler] größer als 0 ist.
    Hast du wieder folgendes an erster Stelle deines Codes stehen?

    @> Key Input Processing: [0003], Wait

    Wenn ja, lass sämtliche Waits in deinem Code weg und schau, wie gut es läuft. Wenn es Probleme gibt, zeig am besten bitte nochmal den gesamten Code für dein Block-System. Das wäre leichter nachzuvollziehen.

    Nachtrag:
    Natürlich alle Waits, bis auf den, der die Dauer des Blockens bestimmt.

    Geändert von Nagasaki (31.08.2015 um 13:34 Uhr)

  4. #24
    So?
    CE (PP)
    @> Control Variables: Variable [0201] = [Nelu ALCHEMI]'s Shield ID
    @> Conditional Branch: Variable [0201:buckler] == 201
    @> Control Switches: [0147:shield control] = ON
    @>
    : Else
    @> Control Switches: [0147:shield control] = OFF
    @>
    : Branch End

    Geändert von Norpoleon (31.08.2015 um 16:36 Uhr)

  5. #25
    Fuck! Ich hab's tatsächlich verstanden. (:
    Der Code sieht nun so aus:

    @> Control Variables: [0201:buckler] = 1
    @> Conditional Branch: Variable [0201:buckler] == 1
    @> Control Switches: [0147:shield control] = ON
    @>
    : Else
    @> Control Switches: [0147:shield control] = OFF
    @>
    : Branch End

  6. #26
    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.

  7. #27
    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

  8. #28
    & 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)

  9. #29
    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.

  10. #30
    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.

  11. #31
    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.

  12. #32
    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...

  13. #33
    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)

  14. #34
    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.

  15. #35
    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.

  16. #36
    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

  17. #37
    @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)

  18. #38
    [QUOTE=Norpoleon;3263229]
    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?

    Die Abfrage (@> Conditional Branch: Variable [0201:shield] > 0) könnte man in ein extra Common Event packen und dann nach jedem " @> Control Variables: [0201:shield] = [Nelu KLASSE]'s Shield ID" per Call-Event aufrufen. Aber prinzipiell würde das wieder nur Code pro Copy Paste einsparen, aber nicht die Anzahl der Copy Pastes. Jedoch geschieht das auch wieder zugunsten der Übersicht.

    Da man nicht per Pointer auf die CharaterID zugreifen kann, geht das nicht anders ^^

  19. #39
    Ich versteh schon wieder die Welt nicht mehr! (:

    Wenn ich alle Schildabfragen in ein Common Event packe, funktioniert das Blocken prima, bis auf die Tatsache, dass es richtig schön langsam & unexakt ist.

    Packe ich die Schildabfragen jeweils in ein eigenes Common Event, passiert gar nichts.

    Ich weiß, dass ich alles schon mal so hinbekommen habe, dass das Blocken richtig schön schnell & exakt war. Aber ich weiß nicht mehr, was ich da anders gemacht habe.

  20. #40
    Es kann übrigens so immer noch nicht funktionieren. Du überschreibst diesmal zwar nicht die shield-Variable, aber dafür den shield control Switch jedes mal, weil selbst wenn eine der Bedingungen den Switch auf ON setzt, setzt die nächste ihn vllt wieder auf OFF; etc.

Stichworte

Berechtigungen

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