Ergebnis 1 bis 18 von 18

Thema: Event-Event Touch Trigger?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Ich verstehe zwar nicht ganz, was du mit Conditional Branches willst, aber folgendes kann ich zum Thema Event-Event-Trigger sagen:

    Wenn man mit RGSS rumpfuscht, geht das sicher auch direkter, als in einem Parallel-Process laufend die Koordinaten abzufragen. Meine Idee wäre, den Code, der dafür sorgt, dass OnTouch Events ausgeführt werden, zu kopieren, die Kopie entsprechend anzupassen und einen neuen Triggertyp einzuführen. Um den Triggertyp zu setzen, müsste man entweder den Maker ein wenig modifizieren (könnte mit ResHack machbar sein) oder per RGSS zur Laufzeit in der Page-Klasse rumbasteln. Der Triggertyp ist schließlich auch nur eine Zahl.

  2. #2
    also per conditional branch wäre es theoretisch möglich aber halt auch seeehr umständlich.
    (würde es so machen: nach jeder bewegung abfragen ob die koordinaten sich verändert haben - falls die koordinaten des events noch die selben sind bedeutet das dass sich das event nicht bewegen konnte.
    in dem fall muss man dann noch für jedes event abfragen ob es auf den zielkoordinaten steht, auf die das 1. event eigentlich gegangen wäre.
    wenn eines auf diesen koordinaten steht heißt es, dass dieses event die bewegung blockiert hat und muss gestartet werden.)

    @dfyx
    so würde ich es auch machen nur ohne den reshack part.
    ich empfehle eher den neuen trigger über ein bestimmtes wort in einem event command kommentar auszuwählen.

    @oneyeshadow
    ich kann versuchen dir eine rgss lösung anzubieten wenn du das wünschst. das wäre dann aber kein conditional branch mehr

  3. #3
    Über eine RGSS Lösung dieses Problems währe ich sehr dankbar, müsste ich nicht mit den sechs Conditional Brunches und den 8 Variablen Arbeiten, da verliert ja jeder den überblick, und funktionieren tuts auch nicht richtig,
    also über eine RGSS-Lösung währe ich schon sehr dankbar.

  4. #4
    Code:
    class Game_Event
      alias trigger_refresh refresh
      def refresh
        trigger_refresh
        return if @list.nil?
        for i in 0...@list.size
          if @list[i].code == 108
            if @list[i].parameters.to_s.upcase == "TRIGGER"
              @trigger = -1
            end
          end
        end
      end
      def check_event_trigger_touch(x, y)
        if $game_system.map_interpreter.running?
          return
        end
        if @trigger == 2 and x == $game_player.x and y == $game_player.y
          if not jumping? and not over_trigger?
            start
          end
        else
          for event in $game_map.events.values
            next unless event.trigger == -1
            next if event == self
            if not jumping? and not over_trigger?
              if event.x == x and event.y == y
                event.start
                break
              end
            end
          end
        end
      end
    end
    code über main einfügen und ein kommentar mit "trigger" (ohne "") bei dem event einfügen, welches durch event kontakt gestartet werden soll.
    falls bugs auftreten einfach posten

  5. #5
    Danke, funktioniert einwandfrei, aber ist es auch möglich diesen Trigger nur bei berührung durch ein bersonderes Event zu aktivieren bzw das Event, dass den trigger des Anderen Events ausgelöst hat irgendwie direkt abzufragen?

    Geändert von OneEyeShadow (28.06.2009 um 12:17 Uhr)

  6. #6
    Code:
    class Game_Event
      alias trigger_refresh refresh
      attr_reader :triggertarget
      def refresh
        trigger_refresh
        @triggertarget = -1
        return if @list.nil?
        for i in 0...@list.size
          if @list[i].code == 108
            if @list[i].parameters.to_s.upcase == "TRIGGER"
              @trigger = -1
            end
            if @list[i+1].code == 408
              @triggertarget = @list[i+1].parameters.to_s.to_i
            end
          end
        end
      end
      def check_event_trigger_touch(x, y)
        if $game_system.map_interpreter.running?
          return
        end
        if @trigger == 2 and x == $game_player.x and y == $game_player.y
          if not jumping? and not over_trigger?
            start
          end
        else
          for event in $game_map.events.values
            next unless event.trigger == -1
            next if self.id != event.triggertarget and event.triggertarget != -1
            next if event == self
            if not jumping? and not over_trigger?
              if event.x == x and event.y == y
                event.start
                break
              end
            end
          end
        end
      end
      def lock
        if @locked
          return
        end
        @prelock_direction = @direction
        turn_toward_player if @trigger != -1
        @locked = true
      end
    end
    das vorherige script damit überschreiben.
    aktiviert wird es wieder über ein kommentar mit trigger und wenn es nur durch ein bestimmtes event ausgelöst werden soll, musst du in die zeile darunter die id dieses events eingeben.
    bsp
    Code:
    trigger
    2
    wenn keine zahl eingegeben wird, kann das event durch jedes event gestartet werden wie in der alten version.

    außerdem hab ich den bug entfernt, dass sich das gestartete event zum spieler dreht.

  7. #7
    Danke, ich werds grad mal ausprobieren.

    EDIT: Also, irgendwie funktioniert das zweite überhaup nich, es funktioniert weder mit der ID des Auslösenden Events noch ohne ...

    Geändert von OneEyeShadow (28.06.2009 um 21:12 Uhr)

  8. #8
    ich hab eben ein neues projekt gemacht, script kopiert etc und es läuft alles einwandfrei.
    die einzigen gründe die mir einfallen sind
    1. fehler beim kommentar -> vertippt oder trigger steht nicht oben in der kommentar box
    2. die events berühren sich nicht -> trough/phasing an oder events stehen nur nebeneinander, laufen aber nicht gegeneinander
    3. vlt gibt es komplikationen mit anderen scripts, was aber eher unwarscheinlich ist, weil das alte funzt.

  9. #9
    OK, ich habs jetzt auch nochmal in nem neuen Projekt ausprobiert, und es geht, seltsamm, ich hab nur 4 andere Skripts hinzugefügt, 'n Vollbild-, 'n Event move to Event, ein Copy Event und ein Tastatur-Skript. Verdammt ...

  10. #10
    Event move to EventScript?
    Poste das mal bitte, daher wir ja das CopyEventschon haben(paar Thread unter dem hier)

    Außerdem bäuchte ich grad so ein Script^^

  11. #11
    Ich helf doch immer gern, das Script ist hier:

    hättest im Forum aber nur ein bischen weiter runtergehen brauchen, da hab ich's nämlich her.

    Ich Poste auch mal die anden zwei (ich geh mal davon aus, dass das Vollbildscript nix mit der fehlfunktion zu tun hat).

    Event Kopieren:


    Tastatur-Script:

    Geändert von OneEyeShadow (28.06.2009 um 21:13 Uhr)

  12. #12
    kannst du statt den spoieler-cod den PHP-code benutzen?
    daher jetzt die Leerzeichen weg sind.

Berechtigungen

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