Ergebnis 1 bis 8 von 8

Thema: Warum färben sich Show Picture bei Tintscreen nicht mit?

  1. #1

    Warum färben sich Show Picture bei Tintscreen nicht mit?

    Frage steht oben, Vx Ace.

    Grüßlies

    Kenos da Kotos

  2. #2
    Bilder werden von der Bildschirmeinfärbung nicht erfasst, weil sie eine Prioritätsebene hoher angezeigt werden. Wenn du jedoch das Bild per zusätzlichem Change-Tone-Befehl (auf Seite 2 der Event-Befehle) entsprechend dem Bildschirm färbst, sieht es für den Spieler so aus, als färbe sich alles gleichermaßen ein.

  3. #3
    Ok, das ist ja blöd... also alle Bilder separat einfärben? Führt ja zu vielen Abfragen wenn man ein Tag-Nacht-System o.ä. verwendet. Kann man die Priorität nicht vielleicht via Skript auf dieselbe Ebene legen, sodass Bilder mit dem Tintscreen auch mitgefärbt werden?

    Grüßlies

    Kenis del Kotis

  4. #4
    Die Ebenenpriorität lässt sich meines Wissens nicht ändern, und selbst wenn, würdest du wahrscheinlich dadurch allerlei Probleme bekommen. Wofür nutzt du denn Show Picture aktuell, dass du das Bild mit eingefärbt haben möchtest? Der Vorteil des Befehls ist ja gerade, dass er von der Ebenenhierarchie der Map unabhängig ist. Für Animationen ist das übrigens meines Wissens genauso. That being said, es gab letztes Jahr wohl einen Steam-User, der genau das Gegenteil deines Problems hatte, wo ein Script offenbar dazu geführt hat, dass der Tint auch Picture betraf.

    Ich weiß leider gerade nicht, wie der Ace Pictures handhabt, bei den älteren Generationen wird eine ID an das Einzelbild vergeben und so Sachen wie Tone, Blending und Position etc. werden über "Move Picture" zur entsprechenden Nummer gehändelt; die Nummer ist gleichzeitig die Anzeigepriorität. Wenn das der Ace auch so macht, könntest du einfach einen Verbundbefehl einrichten, der alle Bilder wie den Screen einfärbt, sprich:
    Tint Screen (xxx,yyy,zzz)
    Tint Picture #1 (xxx,yyy,zzz)
    Tint Picture #2 (xxx,yyy,zzz)
    Tint Picture #usw

    Sicher ließe sich dafür auch ne Method in einem Script bauen, das müsste aber jemand anderes als ich machen, ich bin nur der Meister der Teillösungen!

    Weniger Teillösung als echte Lösung wäre, das Tinting durch ein Picture Overlay zu leisten. Dann hättest du den Tint auf der höchstmöglichen Anzeigeebene und sogar noch etwas mehr Kontrolle darüber (Blending, Opacity, Tint im Tint; Verläufe, Formen etc.). Das ist zwar keineswegs ein verlustfreies Verfahren, das sind Tintscreen/Screentone meines Wissens allerdings auch nicht.

  5. #5
    Aber Wettereffects färben auch die Pictures mit, wie ich gerade erfahr. Das bedeutet ja man müsste da nur irgendwie schauen, daß man die Färbung irgendwie selbst bestimmen kann. Geht das denn irgendwie infacher?

    Grüße

    Dein Ken der Kot

  6. #6
    Was für ein Script nutzt du denn für die Wettereffekte?

  7. #7
    Sieh dir mal das Script "Spriteset_Map" an, das Einfärben findet in update_viewports statt.
    Code:
      #--------------------------------------------------------------------------
      # * Update Viewport
      #--------------------------------------------------------------------------
      def update_viewports
        @viewport1.tone.set($game_map.screen.tone)
        @viewport1.ox = $game_map.screen.shake
        @viewport2.color.set($game_map.screen.flash_color)
        @viewport3.color.set(0, 0, 0, 255 - $game_map.screen.brightness)
        @viewport1.update
        @viewport2.update
        @viewport3.update
      end
    Die erste Zeile der Methode ist hier das Problem. Tint Screen beinflusst nur Sachen die mit "viewport1" als Viewport erstellt wurden (@viewport1.tone.set($game_map.screen.tone)). Pictures und Wetter haben aber beide "viewport2" (Deshalb beinflusst das Wetter die Pictures, was ich aber eher als Bug bezeichnen würde...)

    In der Theorie sollte es genügen, Pictures "viewport1" zuzuweisen, führt aber vermutlich zu Prioritätsproblemen. Aber wir können auch einfach einen eigenen Viewport erstellen und den mit den Werten von Tint Screen einfärben.

    Versuch mal folgendes in einen neuen Scriptslot einfügt:
    Code:
    class Spriteset_Map
      alias :original_create_viewports :create_viewports
      def create_viewports
        original_create_viewports
        @picture_viewport = Viewport.new
        @picture_viewport.z = 49
      end
      
      def update_pictures
        $game_map.screen.pictures.each do |pic|
          @picture_sprites[pic.number] ||= Sprite_Picture.new(@picture_viewport, pic)
          @picture_sprites[pic.number].update
        end
      end
      
      alias :original_update_viewports :update_viewports
      def update_viewports
        original_update_viewports
        @picture_viewport.tone.set($game_map.screen.tone)
        @picture_viewport.ox = $game_map.screen.shake
      end
      
      alias :original_dispose_viewports :dispose_viewports
      def dispose_viewports
        original_dispose_viewports
        @picture_viewport.dispose
      end
    end
    Pictures werden nun auch von Shake Screen beinflusst. Wenn du das nicht willst, die Zeile @picture_viewport.ox = $game_map.screen.shake auskommentieren/löschen.
    Ungetestet, da ich hier keinen Maker installiert sondern nur die Scripte rumliegen habe.

  8. #8
    Scheint zu klappen. Danke, Cepanks. Bester Mann!

    Grüße

    Dein Ken der Kot

Berechtigungen

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