Ergebnis 1 bis 15 von 15

Thema: Eventgröße auf mehrere Tiles erweitern

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    also mit ungeraden breiten/höhen hab ich grad sowas geschrieben, aber ich versteh nicht ganz was du mit zentral bei den geraden meinst.
    dass die event grafik 2 tiles bedeckt und dann die eine hälfte vom char auf dem einen tile steht und die andere auf dem anderen feld?

  2. #2
    Jepp, genau das. Ist ne überflüssige Information, die eigendlich nur verwirrt, wenn ichs mir so recht überlege...
    der Satz rührt nur daher das ich erst überlegt habe das ganze selber zu lösen indem ich das Event-kopieren-Skript dafür benutze, da hat mich die Frage einfach vor ein Problem gestellt.^^

  3. #3


    über main einfügen und beim event ein kommentar einfügen

    Code:
    size
    2
    1
    in diesem fall wäre das event 2 felder breit und 1 feld hoch.
    bitte immer beide größenangaben machen und nicht nur die breite angeben!

    das ganze muss natürlich nur bei events eingefügt werden, die eine sonder größe haben.


    falls es irgendwie probleme damit geben sollte oder was nicht ganz so ist wie erwünscht einfach sagen

  4. #4
    ääähhh... kann es sein, dass du statt "Kommentar" "Call Script" meinst?

  5. #5
    Hey, das ist echt super, danke!
    Was nur noch wirklich klasse wäre, wäre wenn das Urevent von allen belegten Stellen aus ausgelöst werden könnte. Wenn ich beispielsweise den Oger von einer Stelle aus anspreche an der nicht das Ursprungsevent liegt reagiert dieser garnicht. Ansonsten funktioniert das ganze soweit brilliant. :]

    Zitat Zitat von Adrian2000 Beitrag anzeigen
    ääähhh... kann es sein, dass du statt "Kommentar" "Call Script" meinst?
    Ne. Ist schon so richtig.

  6. #6
    ah stimmt die trigger hab ich vollkommen vergessen -.-
    werd mich ransetzen und es gleich hier hinzufügen.

    edit
    uh damit hat ich grad echt schwierigkeiten. ich hoffe es funzt soweit :/
    is bisher nur touch. enter mach ich morgen hab da jetzt keine zeit mehr für.
    Code:
    class Game_Event
      def check_event_trigger_touch(x, y)
        # If event is running
        if $game_system.map_interpreter.running?
          return
        end
        # If trigger is [touch from event] and consistent with player coordinates
        min = $game_player.x+ @size[0].to_i%2-1- @size[0].to_i / 2
        max = $game_player.x+ @size[0].to_i / 2+ @size[0].to_i % 2-1
        if @trigger == 2 and $game_player.x.between?(min,max) and $game_player.y == y
          # If starting determinant other than jumping is front event
          if not jumping? and not over_trigger?
            start
          end
        end
      end
    end
    class Game_Player
      def check_event_trigger_touch(x, y)
        result = false
        # If event is running
        if $game_system.map_interpreter.running?
          return result
        end
        # All event loops
        for event in $game_map.events.values
          # If event coordinates and triggers are consistent
          min = event.x+event.size[0].to_i%2-1-event.size[0].to_i / 2
          max = event.x+event.size[0].to_i / 2+event.size[0].to_i % 2-1
          ny = y
          ny = y + event.size[1]-1 unless event.size[0].nil?
          if event.x.between?(min,max) and event.y.between?(y,ny) and [1,2].include?(event.trigger)
            # If starting determinant is front event (other than jumping)
            if not event.jumping? and not event.over_trigger?
              event.start
              result = true
            end
          end
        end
        return result
      end
    end

    Geändert von Shining Advances (18.06.2009 um 21:28 Uhr)

  7. #7
    Hey, coole Sache, danke das du dir so ne Arbeit machst. Es klappt soweit auch größtenteils (hab das neue Skript jetzt einfach unter das alte geschrieben, weils sonst mit ner Fehlermeldung zusammengebrochen ist).
    Nur, wenn mehrere Events direkt nebeneinander stehen, werden alle Events ausgeführt die auf "On Touch" stehen, egal welches man davon berührt.
    Und ist es Absicht, das sich das Event mit dem Face zur Seite dreht wenn das Feld weiter als 2 Tiles vom Ursprungsevent entfernt ist?

  8. #8
    Code:
    class Game_Event
      def check_event_trigger_touch(x, y)
        # If event is running
        if $game_system.map_interpreter.running?
          return
        end
        # If trigger is [touch from event] and consistent with player coordinates
        min = $game_player.x+ @size[0].to_i%2-1- @size[0].to_i / 2
        max = $game_player.x+ @size[0].to_i / 2+ @size[0].to_i % 2-1
        ny = y
        ny = y - @size[1] + 1  unless @size[0].nil?
        if @trigger == 2 and x.between?(min,max) and $game_player.y.between?(ny,y)
          # If starting determinant other than jumping is front event
          if not jumping? and not over_trigger?
            start
          end
        end
      end
    end
    class Game_Player
      def check_event_trigger_touch(x, y)
        result = false
        # If event is running
        if $game_system.map_interpreter.running?
          return result
        end
        # All event loops
        for event in $game_map.events.values
          # If event coordinates and triggers are consistent
          min = event.x+event.size[0].to_i%2-1-event.size[0].to_i / 2
          max = event.x+event.size[0].to_i / 2+event.size[0].to_i % 2-1
          ny = y
          ny = y + event.size[1]-1 unless event.size[0].nil?
          if x.between?(min,max) and event.y.between?(y,ny) and [1,2].include?(event.trigger)
            # If starting determinant is front event (other than jumping)
            if not event.jumping? and not event.over_trigger?
              event.start
              result = true
            end
          end
        end
        return result
      end
      #--------------------------------------------------------------------------
      # * Front Envent Starting Determinant
      #--------------------------------------------------------------------------
      def check_event_trigger_there(triggers)
        result = false
        # If event is running
        if $game_system.map_interpreter.running?
          return result
        end
        # Calculate front event coordinates
        new_x = @x + (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
        new_y = @y + (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
        # All event loops
        for event in $game_map.events.values
          min = event.x+event.size[0].to_i%2-1-event.size[0].to_i / 2
          max = event.x+event.size[0].to_i / 2+event.size[0].to_i % 2-1
          ny = new_y
          ny = new_y + event.size[1]-1 unless event.size[0].nil?
          # If event coordinates and triggers are consistent
          if new_x.between?(min,max) and event.y.between?(new_y,ny) and
             triggers.include?(event.trigger)
            # If starting determinant is front event (other than jumping)
            if not event.jumping? and not event.over_trigger?
              event.start
              result = true
            end
          end
        end
        # If fitting event is not found
        if result == false
          # If front tile is a counter
          if $game_map.counter?(new_x, new_y)
            # Calculate 1 tile inside coordinates
            new_x += (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
            new_y += (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
            # All event loops
            for event in $game_map.events.values
              min = event.x+event.size[0].to_i%2-1-event.size[0].to_i / 2
              max = event.x+event.size[0].to_i / 2+event.size[0].to_i % 2-1
              ny = new_y
              ny = new_y + event.size[1]-1 unless event.size[0].nil?
              # If event coordinates and triggers are consistent
              if new_x.between?(min,max) and event.y.between?(new_y,ny) and
                 triggers.include?(event.trigger)
                # If starting determinant is front event (other than jumping)
                if not event.jumping? and not event.over_trigger?
                  event.start
                  result = true
                end
              end
            end
          end
        end
        return result
      end
    end
    das 2. script damit ersetzen.
    die bugs sollten nun weg sein und die anderen trigger werden nun unterstützt.

  9. #9
    Okay, ist schon fast perfekt, nur crasht das ganze Teil wenn man "erase Event" aufruft mit der Meldung:
    Zitat Zitat
    Skript 'GrosseEvents' line 6: NoMethodError accured
    undefined method 'size' for nil:NilClass
    Und ist es eigendlich kompiziert einzubauen das die Events auch bei der Einstellung "through" noch groß bleiben?

  10. #10
    mach mal nach size_refresh (zeile 5) eine neue zeile und füge dort
    Code:
    return if @list.nil?
    ein.

    das mit through sollte nicht so schwer sein gib mir 10 min

    Code:
    class Game_Player
      def check_event_trigger_here(triggers)
        result = false
        # If event is running
        if $game_system.map_interpreter.running?
          return result
        end
        # All event loops
        for event in $game_map.events.values
          # If event coordinates and triggers are consistent
          min = event.x+event.size[0].to_i%2-1-event.size[0].to_i / 2
          max = event.x+event.size[0].to_i / 2+event.size[0].to_i % 2-1
          ny = @y
          ny = @y + event.size[1]-1 unless event.size[0].nil?
          if @x.between?(min,max) and event.y.between?(@y,ny) and triggers.include?(event.trigger)
            # If starting determinant is same position event (other than jumping)
            if not event.jumping? and event.over_trigger?
              event.start
              result = true
            end
          end
        end
        return result
      end
    end

    Geändert von Shining Advances (19.06.2009 um 17:13 Uhr)

  11. #11
    Junge, du bist ein Genie, danke!
    Ich hätte das garantiert nicht selber hinbekommen, schon garnicht so gut, echt. Dicken Dank. Klappt jetzt auch alles.
    Und das mit dem "trough" ist auch genial, endlich on-touch-events die Cutscenes oder Ähnliches starten nicht mehr tausendfach kopieren zu müssen sondern alles direkt in einem bauen zu können ist sehr angenehm. Hail the Faulness
    Nja, solltest du interesse an ner grafischen Arbeit haben kannste dich ja melden. Falls du Referenzen willst, in meiner Sig ist ein Link zu meinem DeviantArt-Account.

  12. #12
    Hey, cooles Script, genau danach habe ich gesucht. Ich hab nur ein kleines Problem (vielleicht habe ich auch was falsch gemacht) und zwar:

    Wenn ich das Script so einfüge wie du es gesagt hast, kann ich mit jedem Event nur noch aus zwei Felder "Entfernung" sozusagen interagieren (ohne dass ich ein Comment aufrufe). Dabei sagst du ja, dass man diesen Comment: Size x,y nur bei Events einfügen muss, die breiter sind als normale Events.

    Hoffe du verstehst, was ich meine. Wie gesagt, vielleicht mach ich was falsch, wäre aber nett, wenn du mir da helfen könntest.

    Schonmal Danke im Voraus

Berechtigungen

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