Ergebnis 1 bis 8 von 8

Thema: [RGSS] Event ID per Script

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    @event_id ist eine Instanzvariable, also eine Variable, die einem Objekt der Klasse Interpreter gehört. Der "Script"-Eventcommand wird innerhalb dieses Interpreter-Objektes ausgeführt. Dadurch erhälst du von dort aus Zugriff auf alle Instanzvariablen des Interpreterobjekts, sowie auf dessen Methoden (und natürlich auch auf alle globalen Variablen). Die Interpreterklasse ist in der Helpdatei nicht dokumentiert, da sie ja im Scripteditor steht. Du kannst dort ihren Inhalt einsehen. Alles was mit def beginnt ist eine Interpretermethode. Diese Methode kannst du innerhalb von "Script" aufrufen (in dem du sie einfach hinschreibst. So steht "def command_352" z.B. für die Eventfunktion "call Save Screen". Schreibst du also in das "Script" den text command_352 rein, so ist das gleichbedeutend mit dem "Call Save Screen" Befehl). Alle Variablen die mit @ beginnen sind Instanzvariablen, auf die du ebenfalls Zugriff hast (so z.B. auch die Variable @event_id). Eine Dokumentation aller RGSS-Klassen findest du auf Phylomortis, allerdings ist diese in englisch.

    Dein Problem verstehe ich trotzdem nicht so recht. Du kannst du mit dem Befehl "Set Move Route" die Events jeweils nach rechts und nach links bewegen lassen. Warum brauchst du da die Event-ID?

  2. #2
    Ich weiss gerade nicht genau, was mit "Set Move Route" gemeint ist (ich denke, du meinst die Funktion bei jedem Event einzeln, wo man eine Custom Route eingeben kann...), aber ich kann mal so viel sagen, dass es auf "Maker-Ebene" nicht so funktioniert, wie ich es haben will

    Stell dir eine Fläche von 5x5 Tiles vor, und diese Tiles sind ALLE mit Events besetzt. Ich will nun zwei BESTIMMTE Events, die ich aussuche und nebeneinander liegen, vertauschen, sprich: Positionen wechseln. Ich will nun einen derart abstrahierten Stand-Alone-Algorithmus schaffen, der es mir ermöglicht, jedes beliebige Event mit einem seiner vier Nachbarn zu tauschen. Wenn ich das auf die "Maker-Ebene" beschränke, habe ich einen Haufen Arbeit vor mir, denn mit Move Event wollte das nicht so richtig funktionieren, oder es ist komplizierter, als ich es dachte.
    Hm,... mal sehen, ob ich es zu skizzieren schaffe:

    [01][02][03][04][05]
    [06][07][08][09][10]
    [11][12][13][14][15]
    [16][17][18][19][20]
    [21][22][23][24][25]

    5x5 Tiles, jedes Tile hat ein Event darauf mit [Event-ID]. Wenn ich nun als erstes [07] wähle und dann [08], dann soll [07] um 1 nach rechts wandern, und [08] um eins nach links.

    [06][08][07][09][10]

    Das soll aber eben mit JEDEM anderen Event funktionieren (also auch [12] mit [22], sollten sie mal neben- oder übereinander liegen, usw...), und dazu hab ich mir halt eingebildet, dass die Event-ID wahrscheinlich das minimalste und neutralste Maß ist, worauf ich das beschränken kann ^^... ok, kommt auf einen existenten Befehl an.
    Ich habe mir das auf Maker-Ebene mit Switches überlegt, aber das will nicht so richtig funktionieren... naja, belassen wirs dabei, dass es nicht funktionieren will, und es daher, damit es für alle Events gültig ist, auf Script-Ebene versuchen.

    Wenn du Bejeweled kennst, weisst du was ich meine

    Gibt es nun einen Move-Befehl auf Skriptebene, der es mir erlaubt, beliebige Events anzusprechen, auf welche Art und Weise auch immer?
    Oder noch spezifischer:
    Gibt es für Events auf Skript-Ebene einen Bewegungsbefehl (also gleichzusetzen dem Move Event), das auf Event-IDs reagiert? Also so in etwa @mein_event.moveevent( x, y), wobei @mein_event schon mit der gewollten Event-ID initialisiert ist.... so etwas?

    Geändert von TheByteRaper (18.05.2007 um 18:08 Uhr)

  3. #3
    Ich glaube, ich habe die Lösung selbst gefunden.
    Code:
    x = $game_map.events[$game_variables[14]].x
    y = $game_map.events[$game_variables[14]].y
    $game_map.events[$game_variables[14]].moveto(x, y)
    Bewegt mir ein Event mit VARIABLER Event-ID stupide da hin, wo ich will, wenn ich bei moveto(x, y) die entsprechenden Werte setze (x+1 oder x-1, y+1 oder y-1). Sieht zwar sehr rapide aus, also ein blosses Setzen (kein echtes Movement), aber es erfüllt zumindest die Voraussetzungen, die ich haben will. Wenn ich wieder Zeit habe, werde ich mich darum kümmern, das schöner aussehen zu lassen und zu verfeinern.

  4. #4
    Hi an alle!

    Wenn du den normalen Move Route Befehl per RGSS haben möchtest, schau mal hier vorbei:

    http://www.rmxp.de/forum/thread.php?threadid=10772

  5. #5
    Jaaa, sowas in der Art habe ich ursprünglich gesucht
    Ich habe das momentan so gestellt:

    Code:
    $move = RPG::MoveRoute.new
    $move.list = [RPG::MoveCommand.new(35), 
    RPG::MoveCommand.new(2)]
    temp = $game_variables[15]
    $game_map.events[temp].force_move_route($move)
    Das Problem dabei aber ist: Das Lock Facing (35) will nicht so richtig funktionieren (beim Wandern nach links mit MoveCommand.new(2) sieht man trotzdem noch eine Move-Animation, das Event, das ich bewegen will, flackert in einer anderen Grafik auf, was eigentlich nicht passieren sollte; dabei ist alles in dem Event gelocked: Facing, Move-Animation, Phasing ON), und das Movement passiert viel zu langsam, obwohl der Speed beim Event auf "Fastest" gestellt ist

    Aber im Grunde genau das, was ich gesucht habe.

    Edit: Ich habe mal ein einfaches Event mit dem Standardhelden gemacht: Gesicht nach unten, Lock Facing, Phasing ON, No Animation, und ihm bei Action key ein Move right aufgedrängt. Da sieht man das genauer, was ich meine: der Held macht trotz aller Möglichkeiten, ihn in siner Bewegung zu hindern, trotzdem diesen Zwischenschritt, wo er einen Fuß nach vorne streckt. DAS muss ich wegkriegen, ohne, dass ich gleich das Charset ändern muss, denn das interessiert mich grad überhaupt nicht ^^

    Doppeledit: Nun ists egal mit der Animation, ich habe das Charset doch geändert... nun bewegt sich das Event aber aus irgendeinem Grund viel zu träge...

    Geändert von TheByteRaper (20.05.2007 um 19:55 Uhr)

Berechtigungen

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