Ergebnis 1 bis 5 von 5

Thema: [VX Ace] Zusammenhang zwischen Picture und Schalter Nr. 2?!

  1. #1

    [VX Ace] Zusammenhang zwischen Picture und Schalter Nr. 2?!

    Ich habe im Moment ein recht... drolliges Problem. Ein Bild wurde nicht angezeigt und ich ging auf Fehlerquellensuche. Ich fand dann auch irgendwann den Zusammenhang; immer wenn Schalter Nr. 2 (der bei mir für "NACHT" steht) aktiviert ist, zeigt er mir keine zusätzlichen Bilder mehr an. Nun dachte ich, wie wohl jeder, dass der Fehler in den Auswirkungen von Schalter 2 zu finden ist.
    Ist er aber nicht.

    Auch wenn Schalter 2 nichts auslöst, wirklich rein gar nichts, wird das Bild nicht gezeigt. Natürlich habe ich auch versucht, die Bildnummerierung zu ändern - ohne Ergebnis. Um sicher zu gehen testete ich das ganze auf einer Blanko Map. Auch hier; ist der Schalter aktiviert, kommt kein Bild. Ist er ausgeschaltet, zeigt er jedes Bild an, was ich sehen will. Auch komisch; Bild 1 (welches bei mir immer die Lichteffekte beinhaltet) wird einwandfrei angezeigt - aber eben nur dieses).
    Noch ein Hinweis: Auch in den Allgemeinen Events ist (noch) kein einziger dabei, der diesen Schalter benutzt.

    Für mich sieht es so aus, als gäbe es einen Zusammenhang zwischen Schalter 2 und den Bildern. Quasi engine-bedingt. Ich wollte daher mal fragen, ob jemandem dieses Problem bekannt ist.
    Es wäre bitter, wenn die Lösung die wäre, einfach den Schalter für "NACHT" zu wechseln - da dürfte ich nämlich jedes Event nochmal finden und durchgehen, um den Schalter zu ändern.
    Daher wollte ich erstmal hier mein Glück versuchen...

    Bilder von einem der Tests:

    Klicke auf die Grafik für eine größere Ansicht 

Name:	Screenshot 2021-03-31 11-43-38.png 
Hits:	13 
Größe:	257,7 KB 
ID:	25522
    Wie man an dem kleinen Pfeil unten sieht; das Bild müsste da sein.

    Klicke auf die Grafik für eine größere Ansicht 

Name:	Screenshot 2021-03-31 11-44-26.png 
Hits:	10 
Größe:	172,8 KB 
ID:	25523
    Schalter zwei wird ausgeschaltet, und dann...

    Klicke auf die Grafik für eine größere Ansicht 

Name:	Screenshot 2021-03-31 11-44-42.png 
Hits:	13 
Größe:	296,8 KB 
ID:	25524
    ...wird das Bild, ausgelöst durch ein Item, angezeigt.
    Wer denkt es liegt an dem verschwundenen Lichteffekt, liegt falsch. Das Wirtshaus besitzt auch für tagsüber einen, der nur wesentlich dezenter ist und - im Gegensatz, zu den Lichteffektbildern der Feuerquellen, sich auch nicht bewegt. Aber er ist da und wird auch hier korrekt angezeigt.

    Übrigens ein weiteres Problem in dem Zusammenhang; seperat platzierte und nicht im ChipSet enthaltene Objekte werden plötzlich ÜBER dem Bild angezeigt. Auch dafür fehlt mir jedes Verständnis, da ich dachte, dass Bilder generell immer über allen anderen Dingen schwebt. Ich wollte nicht gleich zwei Fragen auf einmal stellen, aber auch hier stehe ich gerade vor einem Rätsel.

  2. #2
    Irgendwelche Custom Scripts im Einsatz?

  3. #3
    Zitat Zitat von Cherry Beitrag anzeigen
    Irgendwelche Custom Scripts im Einsatz?
    Du hast mich vollkommen auf die richtige Spur gebracht - und ich hatte tatsächlich nicht im Mindesten daran gedacht.

    Es war die "fix picture to map"-Engine, die ich wohl nur so weit gelesen habe, wie sie mir nützlich erschien.

    Code:
    #==============================================================================
    #    Fix Picture to Map 
    #    Version: 1.0.2 [VXA]
    #    Author: modern algebra (rmrk.net)
    #    Date: 8 September, 2012
    #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    #  Description:
    #
    #    This allows you to set the position of a picture by the X and Y position
    #   of the map, rather than the screen, so that the picture won't move with you
    #   when the screen scrolls. Additionally, the script lets you set the Z value 
    #   to show below characters, or even below the tiles or below the parallax.
    #
    #    This script has no effect in battle and pictures there behave normally.
    #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    #  Instructions:
    #
    #    Paste this script into its own slot in the Script Editor, above Main but 
    #   below Materials.
    #
    #    To specify that a picture should be fixed to a map and not follow the
    #   screen, all you need to do is turn an in-game switch on before showing the 
    #   picture. To specify which switch, all you need to do is change the value of
    #   SWITCH_ID at line 60. Alternatively, you can include the code [Fixed] 
    #   somewhere in the name of the picture.
    # 
    #    For the fixed pictures, you also have the option of assigning it to grid
    #   coordinates instead of pixel coordinates. This means that if you wanted it
    #   to show up at (3, 5) in the map, you could set it to that directly instead
    #   of (96, 160). You can turn on this feature using another switch, again one
    #   which you choose by changing the value of COORDINATES_SWITCH_ID at line 63.
    #
    #    To specify the layer of the tilemap (what shows above it and what shows
    #   below it), all you need to do is change the value of a variable. Which 
    #   variable is also specifed by you by changing Z_VARIABLE_ID at line 69.
    #   The value to which that in-game variable is set at the time a picture is
    #   shown determines where the picture will show up. If the variable is set to
    #   0 then it will be in its normal place; if set to -1, it will show below 
    #   the tilemap but above the parallax; if set to -2, it will show below the 
    #   parallax; if set to 1, it will show above all non-star tiles but star tiles
    #   and characters with normal priority; if set to 2, it will show above 
    #   characters with normal priority but below characters with "Above 
    #   Characters" priority. If set to any other value, the z value of the picture 
    #   will be set to that directly. 
    #==============================================================================
    
    $imported = {} unless $imported
    $imported[:MA_FixPictureToMap] = true
    
    #==============================================================================
    # *** MA_FixPicture
    #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    #  This module holds some relevant configuration Data
    #==============================================================================
    
    module MA_FixPicture
      #\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
      #  Editable Region
      #||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
      #  SWITCH_ID - set this to the ID of the in-game switch that you want to 
      # use to control whether pictures should be fixed. 
      SWITCH_ID = 5 
      #  COORDINATES_SWITCH_ID - Set this to the ID of the in-game switch that you 
      # want to use to control how coordinates are set. If this switch is ON, then
      # for fixed pictures, you can just use the grid x and y coordinates (ie: you
      # would set (1, 4) instead of (32, 128). If you always want this feature to 
      # be on when the FPM Switch is on, you can set it to have the same ID.
      COORDINATES_SWITCH_ID = 5
      #  Z_VARIABLE_ID - set this to the ID of the in-game variable that you 
      # want to use to control the z-value priority of the picture.
      Z_VARIABLE_ID = 7
      #||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
      #  End Editable Region
      #////////////////////////////////////////////////////////////////////////////
      class << self
        #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        # * Public Instance Variables
        #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        attr_accessor :spriteset_vp1
        attr_accessor :spriteset_vp2 
      end
    end
    #==============================================================================
    # ** Game Picture
    #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    #  Summary of Changes:
    #    new public instance variables - mafpm_vp_id; mafpm_fixed; mafpm_z
    #    aliased method - initialize; show; move
    #==============================================================================
    
    class Game_Picture
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # * Public Instance Variables
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      attr_accessor :mafpm_vp_id
      attr_accessor :mafpm_fixed
      attr_accessor :mafpm_z
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # * Object Initialization
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      alias mafpm_iniz_2fg6 initialize
      def initialize(*args, &block)
        @mafpm_fixed = false
        @mafpm_vp_id = 2
        mafpm_iniz_2fg6(*args, &block) # Call Original Method
        @mafpm_z = self.number
      end
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # * Show Picture
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      alias mafpm_showpic_3jb7 show
      def show(name, *args, &block)
        # Only fix pictures if in Scene_Map
        if SceneManager.scene_is?(Scene_Map)
          @mafpm_fixed = (MA_FixPicture::SWITCH_ID == true || 
            $game_switches[MA_FixPicture::SWITCH_ID] || !name[/\[FIXED\]/i].nil?)
          z_var = $game_variables[MA_FixPicture::Z_VARIABLE_ID]
          # If 0 or less than 300, then it should belong to the viewport1 
          @mafpm_vp_id = (z_var != 0 && z_var < 300) ? 1 : 2 
          # Set Z shortcuts
          @mafpm_z = case z_var
          when -1 then -50         # Below tilemap but above parallax
          when -2 then -150        # Below parallax
          when 0 then self.number  # Normal position
          when 1 then 50           # Above tilemap but below normal characters
          when 2 then 150          # Above normal characters but below Above Characters
          else
            @mafpm_z = z_var < 300 ? z_var : z_var - 300 # Directly set to value
          end
        end
        mafpm_showpic_3jb7(name, *args, &block) # Call Original Method
        if @mafpm_fixed && (MA_FixPicture::COORDINATES_SWITCH_ID == true || $game_switches[MA_FixPicture::COORDINATES_SWITCH_ID])
          @x *= 32
          @y *= 32
        end
      end
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # * Move Picture
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      alias mafpm_movepctr_2js1 move
      def move(*args, &block)
        mafpm_movepctr_2js1(*args, &block)
        if @mafpm_fixed && (MA_FixPicture::COORDINATES_SWITCH_ID == true || $game_switches[MA_FixPicture::COORDINATES_SWITCH_ID])
          @target_x *= 32
          @target_y *= 32
        end
      end
    end
    
    #==============================================================================
    # ** Sprite Picture
    #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    #  Summary of Changes:
    #    aliased methods - update
    #==============================================================================
    
    class Sprite_Picture
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # * Frame Update
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      alias mafpm_updt_5fw1 update
      def update(*args, &block)
        mafpm_updt_5fw1(*args, &block) # Call original method
        # If picture is fixed to map
        if @picture.mafpm_fixed
          # Scroll the picture appropriately
          self.x = @picture.x - ($game_map.display_x * 32)
          self.y = @picture.y - ($game_map.display_y * 32)
        end
        self.z = @picture.mafpm_z # Update Z to the correct Z
        # If the viewport has changed
        if @mafpm_vp_id != @picture.mafpm_vp_id && MA_FixPicture.send(:"spriteset_vp#{@picture.mafpm_vp_id}")
          @mafpm_vp_id = @picture.mafpm_vp_id
          # Change viewport
          self.viewport = MA_FixPicture.send(:"spriteset_vp#{@mafpm_vp_id}")
        end
      end
    end
    
    #==============================================================================
    # ** Spriteset Map
    #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    #  Summary of Changes:
    #    aliased methods - create_viewports; dispose_viewports
    #==============================================================================
    
    class Spriteset_Map
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # * Create Viewports
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      alias mafpm_creatviewpor_3dk8 create_viewports
      def create_viewports(*args, &block)
        mafpm_creatviewpor_3dk8(*args, &block) # Call original method
        # Set the viewports to be globally accessible
        MA_FixPicture.spriteset_vp1 = @viewport1
        MA_FixPicture.spriteset_vp2 = @viewport2
      end
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # * Dispose Viewports
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      alias mafpm_disposevps_2nr5 dispose_viewports
      def dispose_viewports(*args, &block)
        # Nullify the variables in MA_FixPicture
        MA_FixPicture.spriteset_vp1 = nil
        MA_FixPicture.spriteset_vp2 = nil
        mafpm_disposevps_2nr5(*args, &block) # Call original method
      end
    end
    In Zeile 62 stand bei SWITCH_ID = 2 - Schalter Nr. 2 war also tatsächlich der Auslöser für das Problem.

    Problem Nr. 2 (dass sämtliche Objekte plötzlich über dem Bild standen) ließ sich in Zeile 71 lösen. Z_VARIABLE_ID = 5 traf auch eine Variable, die für etwas völlig anderes gedacht war.

    Die zwei Zahlen austauschen, mit nicht verwendeten Schaltern und Variablen, löst beide Probleme. Die Variable setzte ich im ingame dann auf 0, damit das Bild eben wieder über allen anderen Dingen schwebt.

    Vielen Dank, für den Schubser in die richtige Richtung! ;-)

  4. #4
    Freut mich dass ich helfen konnte 😊

  5. #5
    Hallo Ja, das habe ich auch gemacht. vielen dank für deine antwort.

Berechtigungen

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