-
Provinzheld
@AgentBlack für mich sieht es eher so aus, als wäre die gesamte Berechnung von Schaden, Kollision etc, was halt alles zum Kampfsystem gehört, in die einzelnen Mapevents (Gegnerevents) reingeskriptet, was eine Implementieren eines simplen Blocken-Systems, wie von Corti vorgeschlagen, umständlich macht, da er wohlmöglich bei jeder Map das bei jedem einzelnen Gegner korrigieren muss. Tja, das hat man davon, wenn man keine Common Events per Call-Befehl benutzt, statt die einzeln in jedem Mapevent per Copy and Paste auszuführen ^^
Warum sonst sollte er sich so ein lächerliches Skript überlegen?
@Norpoleon, sag mirbitte, dass du den Schaden in einer Variable speicherst, BEVOR er abgezogen wird, d.h. erst wird der Schaden in einer Variable berechnet und dann wird der Wert dieser Variable abgezogen, denn dann könntest Du einfach in einem Parallel Process den Schaden bei aktiviertem Blocken auf 0 setzen. Sonst musst Du in den sauren Apfel beissen und auf das Feature verzichten ODER dir die Mühe machen.
Sähe dann so aus, dass Du in ein COMMON Event einen einzelnen Befehl setzt: Set Variable "Schaden" == 0. Nur diese eine Zeile und dann stellst du von dem Common Event den Trigger auf Parallel Process und machst es per Switch aktivierbar. Dann wird der Schaden automatisch auf 0 gehalten, solange der Switch auf ON steht, denn jedes Event führt seine Befehle in einer Endlosschleife aus, es sei denn du hälst es mit "Erase Event" an oder nutzt einen Switch zur Aktivierung, wenn dieser wieder auf OFF steht. Ich denke, es funktioniert wahrscheinlich nicht immer, selten kann es vielleicht doch noch zu Schaden kommen, je nachdem wie der Zeitpunkt des Gegnerrischen Angriffs getimed ist, das hängt stark von sehr wenigen Millisekunden ab, aber es sollte um Längen besser funktionieren, als deine Held bekommt 9000 HP und verliert danach wieder 9000 HP. Was ist eigentlich, wenn der Held auf einem Hohen Level ist und 6000 HP hat? Dann kommt er bei 3000 Maximalen HP wieder raus, wenn er geblockt hat. Das ist doch schwachsinnig, mit deinem Skript DARF der Held nur maximal 999 HP haben!
Geändert von Drakee (30.08.2015 um 15:35 Uhr)
-
Schwertmeister
@Drakee Nein, der Schaden wird sofort abgezogen.
& jetzt mal ganz langsam für Programmieranfänger (^: Wie speichere ich einen Wert für ein Item oder sonst was in einer Variablen?
Ich möchte jetzt erstmal das Beschleunigen der Schildabfrage klären.
-
Deus
Variable Operations -> Variable auswählen -> Hero (Name des Helden auswählen) -> Shield Number
Das speichert die ID des ausgerüsteten Schildes in der Variablen. Diese ID ist die Nummer in der Datenbank.
-
Schwertmeister
Also ich hab hier bei RM 2k3 nur die Möglichkeit 'Control Variables'. Ist das das Gleiche?
-
Provinzheld
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.
-
Schwertmeister
@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?
-
Provinzheld
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)
-
Schwertmeister
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)
-
Schwertmeister
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
-
Ritter
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.
-
Deus
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
-
Schwertmeister
& 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)
Stichworte
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln