Ergebnis 1 bis 14 von 14

Thema: Event-ID bestimmen

  1. #1

    Event-ID bestimmen

    Gibt es noch eine andere Möglichkeit die ID eines events genau zu bestimmen, außer es zig mal zu kopieren?

    Problem ist folgendes:
    Die KS-Engine, die ich verwende ( von Kazesui ) funktioniert nur, wenn die Event-ID höher als ein bestimmter Wert ist.
    Diesen Wert kann ich bestimmen. Die Gegner-Events sollten also die Events im Spiel sein mit der höchsten ID.
    Nun gibt's natürlich das Problem, dass ich sehr große & sehr kleine Maps habe, Maps mit wenig Events, Maps mit vielen Events.
    Ich müsste ein Gegner-Event mehrere hundert mal kopieren, das ist den Maps mit den hohen Event-IDs gezollt.
    Manche Maps sind gar nicht groß genug, dass ich auf ihnen ein Event mehrere hundert mal kopieren könnte ( 20x15 ).

    Ich hoffe, ich konnte irgendwie deutlich machen, worum es mir geht. (:

  2. #2
    Das habe ich iirc im letzen Thread schon geschrieben, aber: dreh die Bedingung doch einfach um und verwende die ersten n Events als Gegner. Wenn du dann auf einer Map 5 Gegner hast, setzt du die "Ist-ein-Gegner-Abfrage" auf <= 5, wenn du auf einer Map 30 Gegner hast, setzt du die Abfrage auf <= 30, etc.

  3. #3
    Ja, stimmt, ich erinnere mich. (:

    Mit anderen Worten: ich werde wohl nicht umhin kommen alle Events nochmal zu setzen, oder?

    Aber direkt die ID bestimmen kann man wohl nicht. \:

  4. #4
    Zitat Zitat von Norpoleon Beitrag anzeigen
    Ja, stimmt, ich erinnere mich. (:

    Mit anderen Worten: ich werde wohl nicht umhin kommen alle Events nochmal zu setzen, oder?

    Aber direkt die ID bestimmen kann man wohl nicht. \:
    Ich kenne das Skript nicht, auf das du dich beziehst, aber soweit ich das verstanden habe ist die Bedingung, welche Events als Gegner erkannt werden für jede Map gleich (?)
    Dann könntest du doch auch einen Bereich festlegen mit 2 Bedingungen (>=50 && <=70 etwa).

    Und du müsstest ja nur die Events verschieben (wenn du Cepanks Rat folgst und die ersten 20 (oder wieviel es sind) Events für Gegner nimmst), die in dem Bereich sind und deren ID neu vergeben.

  5. #5
    Falls ich die Holzhammermethode in den Raum werfen darf: Kannst du nicht anstatt direkt abzufragen, ob die Event ID > 50 ist, abfragen ob die ID > [Variable] ist? Die Variable kannst du dann ja direkt auf jeder Map einzeln anpassen, je nach dem, wie du sie brauchst. So bist du flexibel und musst vor allem nicht rückwirkend jetzt anfangen zu jonglieren. Immer noch nicht gerade die eleganteste Methode, aber hey.

    Und ja, dass Event IDs vom Maker automatisch vergeben werden und nicht manuell einstellbar sind, ist manchmal echt nervig. Ähnlich nervig wie das fehlen einer Möglichkeit, von Haus aus Pictures anhand von Variablen auszuwählen. -___-

    Geändert von BDraw (04.02.2016 um 22:50 Uhr)

  6. #6
    Zitat Zitat von BDraw Beitrag anzeigen
    Falls ich die Holzhammermethode in den Raum werfen darf: Kannst du nicht anstatt direkt abzufragen, ob die Event ID > 50 ist, abfragen ob die ID > [Variable] ist? Die Variable kannst du dann ja direkt auf jeder Map einzeln anpassen, je nach dem, wie du sie brauchst. So bist du flexibel und musst vor allem nicht rückwirkend jetzt anfangen zu jonglieren. Immer noch nicht gerade die eleganteste Methode, aber hey.
    Das System funktioniert schon mit einer variablen ID (ich hoffe mal, das ist Norpoleon bewusst D:). Ändert aber ja nichts daran, dass Gegenerevents immer die höchsten IDs belegen müssen und man beispielsweise nicht später noch einen NPC auf die Map setzen kann ohne die Gegner noch einmal neu zu sortieren.

    @Norpoleon: Hattest du nicht immer nur einen Gegner pro Map? In dem Fall sollte sich der Aufwand doch in Grenzen halten.

  7. #7
    Zitat Zitat von Cepanks Beitrag anzeigen
    Das System funktioniert schon mit einer variablen ID (ich hoffe mal, das ist Norpoleon bewusst D. Ändert aber ja nichts daran, dass Gegenerevents immer die höchsten IDs belegen müssen und man beispielsweise nicht später noch einen NPC auf die Map setzen kann ohne die Gegner noch einmal neu zu sortieren.

    @Norpoleon: Hattest du nicht immer nur einen Gegner pro Map? In dem Fall sollte sich der Aufwand doch in Grenzen halten.
    Ah, darum ging es, ich hatte das jetzt nur überflogen. ^^°

    Aber in diesem Fall würde ich einfach ein paar Variablen reservieren - so viele, wie maximal Gegner auf einer Map auftauchen - und einfach in denen die IDs der betroffenen Events auf der Map speichern. Das Script kann dann ja immer die selben Variablen durchgehen. Das ist etwas mehr Arbeit, erscheint mir aber irgendwie etwas weniger Fehleranfällig.

    Alternativ könnte man aber doch auch einfach eine Variable einführen, die sagt, ab wo die IDs wieder nicht berücksichtigt werden? Also quasi: V[min ID] > ID > V[max ID]
    Dann kann man zwar keine Gegner im Nachhinein mehr hinzufügen, aber zumindest andere Events...

  8. #8
    Du könntest zeitweise die Map vergrößern und dann die Events setzen. Oder aber du bereitest dir generell eine Map mit allen Gegnerevents vor. Und kopierst diese dann immer wieder als Basis für weitere Maps.

  9. #9
    Erstmal danke für die Hilfe. (:

    @Cepanks: Bei dem damaligen Spiel war das so, dass ich nur einen Gegner pro Map brauchte. Im jetzigen Projekt sollen zig Gegner auf den Maps sein.
    & ja mir ist das mit den Variablen bewusst. (:

    @Felski: Das sind simple Ideen, die mir aber sehr weiterhelfen.
    Ich hatte nicht dran gedacht, dass ich ja einfach eine Map machen kann, wo ich immer Gegner weiter kopiere, um immer die maximale Event-ID zu erhalten.
    Hoffe das klappt auch so, wie ich mir das jetzt vorstelle. (:

    EDIT: Habe es ausprobiert. Das funktioniert so leider nicht. \:
    Setze ich ein Event auf die Map, sucht sich das Event die niedrigste freie Event-ID.
    D.h. ich muss die Gegner-Events doch zig mal auf die Map kopieren, bis die gewünschte ID erreicht ist. Das wird eine ziemliche Katastrophe. (:

    Geändert von Norpoleon (05.02.2016 um 16:13 Uhr)

  10. #10
    Alternativ musst du das ganze einmal vorbereiten. Und dann immer diese Map kopieren und verändern.

  11. #11
    Zitat Zitat von Norpoleon Beitrag anzeigen
    & ja mir ist das mit den Variablen bewusst. (:
    Scheinbar - so lese ich es aus dem Anfangspost heraus - ist es dir ja nicht bewusst. Wenn ich Cepanks verstehe, kannst du pro Map einfach eine Variable setzen, die dann bestimmt, ab welcher ID die Monster-Events beginnen. D.h. auf kleinen Maps brauchst du nicht die ID 150, sondern einfach nur die höchste ID.

    Das Problem, wenn du nachträglich noch ein Event einfügst, bleibt natürlich bestehen.

    Ich nehme an du benutzt einen sehr alten Maker, ohne Ruby?

  12. #12
    @Linkey: Ich verwende den 2003er RPG Maker.
    Es gibt ein Event, in dem ich bestimme, wie die Variable der Gegner-ID sein muss, damit im ganzen Spiel die Gegner getroffen werden können.
    Ich weiß nicht, wie ich diese Variable für jede Map einzeln bestimme; vielleicht kann mir da einer weiterhelfen...

  13. #13
    Oh je.

    Also, die Variable wird in einem Map Event mit der Bedingung Autostart gesetzt. In dem von dir geposteten Test-Projekt heißt dieses Event "Map Ref" und hat folgenden Inhalt:
    Zitat Zitat
    • Setze Variable Nr. 25 auf 3
    • Aktivierte Switch Nr. 2, damit das Event nur einmal läuft.
    So weit so gut. Dein Denkfehler scheint zu sein, dass das Event im ganzen Spiel nur einmal laufen kann, weil ja der Switch umgelegt wurde? Macht durchaus Sinn, aber Switches lassen sich ja auch wieder auf false/off stellen. Heißt, du kannst auf jeder Map ein solches "Map Ref"-Event haben und jedes Event kann die Variable auf einen für diese Map individuellen Wert setzen und dann den Switch Nr. 2 aktivieren.

    Wann ist nun aber der passende Moment für die Deaktivierung des Switches, damit er auf einer anderen Map erneut verwendet werden kann? Natürlich nach einem Map-Wechsel. Ich schreibe bewusst "nach" einem Wechsel, denn wenn du den Switch vor dem Teleport-Befehl deaktivierst, läuft einfach das "Map Ref"-Event der aktuellen Map nochmal durch und schaltet den Switch gleich wieder ab, das wollen wir natürlich nicht. :/* Du müsstest deine Teleport-Events folglich nach dieser Art aufbauen:
    Zitat Zitat
    • Screen Fade Out
    • Teleportiere zur Map XYZ
    • Setzte Switch 2 = OFF
    • Screen Fade In
    Das wird mit der Zeit natürlich furchtbar nervig, und in deinem Fall wären es vermutlich wieder dutzende (hunderte? tausende?) Events, die umgeändert werden müssten. Glücklicherweise besitzt der Maker aber auch die Möglichkeit, Events temporär zu deaktivieren, ganz ohne Switch! Dazu gibt es den Eventbefehl "Erase Event" (kann je nach Maker anders heißen, im 2k3 bei den Eventbefehlen auf Seite 3, rechte Spalte, der 5. Button von unten).
    Wir bauen also unser "Map Ref"-Event wie folgt um:
    Zitat Zitat
    • Setze Variable Nr. 25 auf 3
    • Erase Event, damit es nur einmal läuft
    Zum Abschluss ändern wir idealerweise noch die Startbedingung von Autostart auf Parallel, da Autostart-Events eine kurze aber bemerkbare Warteizeit besitzen, bevor sie starten.

    Nun haben wir ein Event, das überall funktioniert, ohne dass wir uns um etwas kümmern müssen. Dieses Event kannst du jetzt einfach auf jede Map mit Gegnern kopieren, den Wert 3 entsprechend anpassen und anschließend ein Stück Kuchen oder Schokolade essen (Der letzte Schritt ist der wichtigste!)

    * vielleicht auch nicht, weil die Eventbefehle im Autostart-Event vermutlich erst ausgeführt werden, nachdem das Teleport-Event vollständig abgearbeitet wurde... Aber einigen wir uns der Einfachheit halber darauf, dass nach dem Teleport besser ist. :enton:

    Geändert von Cepanks (09.02.2016 um 23:00 Uhr)

  14. #14
    Danke, Cepanks, das hilft mir sehr weiter. ((:

Stichworte

Berechtigungen

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