Jump to content
Rpg²S Forum

Lomax_Iced

Utenti
  • Posts

    221
  • Joined

  • Last visited

Posts posted by Lomax_Iced

  1. Quelli non sarà facile trovarli! XD

     

    Comunque buon lavoro nel rivalutare l'XP che da molti è stato dimenticato con la nuova uscita.

    ^ ^

    Oddio.. Sai che non penso che sia poi così complicato.

    Infondo..(correggetemi se sbaglio) un touchscreen e una sorta di toucpad in full screen no?

    Io ad esempio con il system Mouse da me postato di recente uso tranquillamente il touchpad del computer e non il mouse.

    . . .

    Ad ogni modo c'è da informarsi.

    . . .

    Per quanto riguarda il discorso del Mobile. Mi pare che sull'appStore ci sia una sorta di NekoRpg che permette di far avviare i giochi di rpg maker su dispositivi android.

    E c'è da chiedersi.....come fanno a convertire gli input da tastiera in segnali trasferibili al touchscreen dei dispositivi mobili?

     

     

  2. No.. (per ora ho una sorta di problemuccio con i certificati internet, in cui alcuni siti (quali: google, youtube, facebook, paypal, ecc) non mi permette di accedervi. li reputa dannosi. Altri in cui non mi visualizza gli elementi in css. e poi siti come questo qua in cui invece sembra che tutto si visualizza al meglio. Cioè non ho alcun problema nella visualizzazione delle pagine ed interagire con esse.

    Comunque per rispondere alla tua domanda, uso un comunissimo FireFox (per ora).

  3. Cooontinuando a far valere la tesi che rpg maker xp può essere di gran lunga migliore del suo figliastro rpg maker mv..
    Quest'oggi, vi mostro come, tramite questo script, potrete inserire in mappa molti più eventi del normale. E il tutto non vi farà laggare assolutissimamente la scena.

    Questa risorsa è stata ideata da Near Fantastica (citatelo nei crediti mi raccomando. :wink: )
    E ve la mostro:

    Script:

     

    #======================================
    # ■ Anti Event Lag Script
    #======================================
    #  By: Near Fantastica
    #   Date: 12.06.05
    #   Version: 3
    #======================================
    
    #======================================
    # ■ Game_Map
    #======================================
    
    class Game_Map
      #--------------------------------------------------------------------------
      def in_range?(object)
    	screne_x = $game_map.display_x 
    	screne_x -= 256
    	screne_y = $game_map.display_y
    	screne_y -= 256
    	screne_width = $game_map.display_x 
    	screne_width += 2816
    	screne_height = $game_map.display_y
    	screne_height += 2176
    	return false if object.real_x <= screne_x
    	return false if object.real_x >= screne_width
    	return false if object.real_y <= screne_y
    	return false if object.real_y >= screne_height
    	return true
      end
      #--------------------------------------------------------------------------
      def update
    	if @scroll_rest > 0
    	  distance = 2 ** @scroll_speed
    	  case @scroll_direction
    	  when 2
    		scroll_down(distance)
    	  when 4 
    		scroll_left(distance)
    	  when 6  
    		scroll_right(distance)
    	  when 8  
    		scroll_up(distance)
    	  end
    	  @scroll_rest -= distance
    	end
    	for event in @events.values
    	  if in_range?(event) or event.trigger == 3 or event.trigger == 4
    		event.update
    	  end
    	end
    	for common_event in @common_events.values
    	  common_event.update
    	end
    	@fog_ox -= @fog_sx / 8.0
    	@fog_oy -= @fog_sy / 8.0
    	if @fog_tone_duration >= 1
    	  d = @fog_tone_duration
    	  target = @fog_tone_target
    	  @fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
    	  @fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
    	  @fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
    	  @fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
    	  @fog_tone_duration -= 1
    	end
    	if @fog_opacity_duration >= 1
    	  d = @fog_opacity_duration
    	  @fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
    	  @fog_opacity_duration -= 1
    	end
      end
    end
    
    #======================================
    # ■ Spriteset_Map
    #======================================
    
    class Spriteset_Map
      #--------------------------------------------------------------------------
      def in_range?(object)
    	screne_x = $game_map.display_x 
    	screne_x -= 256
    	screne_y = $game_map.display_y
    	screne_y -= 256
    	screne_width = $game_map.display_x 
    	screne_width += 2816
    	screne_height = $game_map.display_y
    	screne_height += 2176
    	return false if object.real_x <= screne_x
    	return false if object.real_x >= screne_width
    	return false if object.real_y <= screne_y
    	return false if object.real_y >= screne_height
    	return true
      end
      #--------------------------------------------------------------------------
      def update
    	if @panorama_name != $game_map.panorama_name or
    	   @panorama_hue != $game_map.panorama_hue
    	  @panorama_name = $game_map.panorama_name
    	  @panorama_hue = $game_map.panorama_hue
    	  if @panorama.bitmap != nil
    		@panorama.bitmap.dispose
    		@panorama.bitmap = nil
    	  end
    	  if @panorama_name != ""
    		@panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
    	  end
    	  Graphics.frame_reset
    	end
    	if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
    	  @fog_name = $game_map.fog_name
    	  @fog_hue = $game_map.fog_hue
    	  if @fog.bitmap != nil
    		@fog.bitmap.dispose
    		@fog.bitmap = nil
    	  end
    	  if @fog_name != ""
    		@fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
    	  end
    	  Graphics.frame_reset
    	end
    	@tilemap.ox = $game_map.display_x / 4
    	@tilemap.oy = $game_map.display_y / 4
    	@tilemap.update
    	@panorama.ox = $game_map.display_x / 8
    	@panorama.oy = $game_map.display_y / 8
    	@fog.zoom_x = $game_map.fog_zoom / 100.0
    	@fog.zoom_y = $game_map.fog_zoom / 100.0
    	@fog.opacity = $game_map.fog_opacity
    	@fog.blend_type = $game_map.fog_blend_type
    	@fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
    	@fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
    	@fog.tone = $game_map.fog_tone
    	i=0
    	for sprite in @character_sprites
    	  if sprite.character.is_a?(Game_Event)
    		if in_range?(sprite.character) or sprite.character.trigger == 3 or sprite.character.trigger == 4
    		  sprite.update
    		  i+=1
    		end
    	  else
    		sprite.update
    		i+=1
    	  end
    	end
    	#p i
    	@weather.type = $game_screen.weather_type
    	@weather.max = $game_screen.weather_max
    	@weather.ox = $game_map.display_x / 4
    	@weather.oy = $game_map.display_y / 4
    	@weather.update
    	for sprite in @picture_sprites
    	  sprite.update
    	end
    	@timer_sprite.update
    	@viewport1.tone = $game_screen.tone
    	@viewport1.ox = $game_screen.shake
    	@viewport3.color = $game_screen.flash_color
    	@viewport1.update
    	@viewport3.update
      end
    end
    

     

     

    Corretto piccolo bug:

     

     

    Benissimo:
    Ora che avete lo script, recatevi, dentro il vostro script editor, nel primo def update ..

    qui in sostanza:

    def update
    	if @scroll_rest > 0
    	  distance = 2 ** @scroll_speed
    	  case @scroll_direction
    

    Fatto :huh: ?
    Bene.
    E aggiungete prima di if @scroll_rest > 0 quest'altra condizione:

    
    
    
          def update
            # Refresh map if necessary #Modifica apportata da Heretic86
    	if $game_map.need_refresh
    	  refresh
    	end
    	# If scrolling  
    	if @scroll_rest > 0
    

    Fatta questa modifica potrete (a dire degli autori) aggiungere più di 999 eventi per mappa.
    Non male no?! :cool:

     



    @ Guardian:
    Mi manca solo scovare lo script per il mobile e per il tuch e poi all'RMMV gli farà un baffo.. xD ahah


  4. Perfetto! Dunque ho provato e testato il tool RMMV.
    E' bello. Mi sono entusiasmato. Ha delle limitazioni e soprattutto giocandoci un po mi sono accorto che

    RPG MAKER XP potrebbe benissimo eguagliarlo. Ha tutte le caratteristiche per competere.

    E' vero l'RMMV ha quelle caratteristiche ...di base. In RPGXP, bisogna implementarle.
    Ma vi assicuro che una volta fatto, ne resterete soddisfatti. Anche perché l'XP ha un fattore a suo vantaggio che gli altri suoi fratelli e cugini non hanno. Ovvero il custom grafico.

    Perché sostengo questa tesi?
    Perché mettendo gli scripts giusti nel RPG Maker XP da quasi le stesse prestazioni dell'Mv ed anche meglio perché i progetti risultano meno pesanti.

    E' vero che RMMV ha il via libera per i dispositivi android e tuchpad che l'xp se li sogna. Ma non è vero nemmeno questo, perché venivano rilasciati anche prima i giochini fatti con rpg maker per android.

    Comunque stop con la premessa!

    Voglio condividere con voi una delle perle di scripts che potrebbero rendere l'RPG Maker XP al pari con l'MV.

    Sto parlando del vero ed autentico SUPER SIMPLE MOUSE SCRIPT realizzato da

    Shaz, Near Fantastica, SephirothSpawn, Amaranth

    Lo script si divide in 5 sezioni. Ve lo mostro:
    1a sezione:
    STARTGAME


    E' davvero così breve???
    Si è davvero così breve. Ma è solo l'inizio.

    module StartGame
    
       $game_mouse = true
       
    end
    

    Questo qui sopra attiva e disattiva tutto il processo composto dalle 5 sezioni di scripts.
    true === attiva la funzione

    false === disattiva la funzione

    Basta cambiare quel valore lì. Per adesso è settato su Attiva.

     

     

    2a sezione:
    MOUSE1


    #============================================================================== 
    # ** Modules.Mouse Input (7.0)              By Near Fantastica & SephirothSpawn
    #==============================================================================
    module Mouse
      #--------------------------------------------------------------------------
      # * Mouse to Input Triggers
      #
      #   key => Input::KeyCONSTANT (key: 0 - Left, 1 - Middle, 2 - Right)
      #--------------------------------------------------------------------------
      Mouse_to_Input_Triggers = {0 => Input::C, 1 => Input::B, 2 => Input::A}
      #--------------------------------------------------------------------------
      # * API Declaration
      #--------------------------------------------------------------------------
      GAKS          = Win32API.new('user32',    'GetAsyncKeyState', 'i',     'i')
      GSM           = Win32API.new('user32',    'GetSystemMetrics', 'i',     'i')
      Cursor_Pos    = Win32API.new('user32',    'GetCursorPos',     'p',     'i')
      $ShowCursor   = Win32API.new('user32',    'ShowCursor',       'i',     'l')
      Scr2cli       = Win32API.new('user32',    'ScreenToClient',   %w(l p), 'i')
      Client_rect   = Win32API.new('user32',    'GetClientRect',    %w(l p), 'i')
      Findwindow    = Win32API.new('user32',    'FindWindowA',      %w(p p), 'l')
      Readini       = Win32API.new('kernel32',  'GetPrivateProfileStringA', 
                                   %w(p p p p l p), 'l')
                                   
      # if graphical effects turned on, show fancy cursor
      $ShowCursor.call($game_mouse ? 0 : 1)
      
      @triggers     =   [[0, 1], [0, 2], [0, 4]] 
      @old_pos      =   0
      @pos_i        =   0
        
      #--------------------------------------------------------------------------
      # * Mouse Grid Position
      #--------------------------------------------------------------------------
      def self.grid    
        # Return Nil if Position is Nil
        return nil if @pos.nil?
        
        # Get X & Y Locations  
        x = (@pos[0] + $game_map.display_x / 4) / 32
        y = (@pos[1] + $game_map.display_y / 4) / 32
        
        # Vehicle Stuff
        $mouse_x = x
        $mouse_y = y 
        
        # Return X & Y
        return [x, y]
        
      end
      #--------------------------------------------------------------------------
      # * Mouse Position
      #--------------------------------------------------------------------------
      def self.position
        return @pos == nil ? [0, 0] : @pos
      end
      #--------------------------------------------------------------------------
      # * Mouse Global Position
      #--------------------------------------------------------------------------
      def self.global_pos
        # Packs 0 Position
        pos = [0, 0].pack('ll')
        # Returns Unpacked Cursor Position Call
        return Cursor_Pos.call(pos) == 0 ? nil : pos.unpack('ll')
      end
      
      #--------------------------------------------------------------------------
      # * Screen to Client
      #--------------------------------------------------------------------------
      def self.screen_to_client(x=0, y=0)
        pos = [x, y].pack('ll')
        return Scr2cli.call(self.hwnd, pos) == 0 ? nil : pos.unpack('ll')
      end  
        
      #--------------------------------------------------------------------------
      # * Mouse Position
      #-------------------------------------------------------------------------- 
      def self.pos
    
        global_pos = [0, 0].pack('ll')    
        gx, gy = Cursor_Pos.call(global_pos) == 0 ? nil : global_pos.unpack('ll')
    
        local_pos = [gx, gy].pack('ll')
        x, y = Scr2cli.call(self.hwnd, local_pos) == 0 ? nil : local_pos.unpack('ll')
        
        # Begins Test
        begin
          # Return X & Y or Nil Depending on Mouse Position
          if (x >= 0 && y >= 0 && x <= 640 && y <= 480)
            return x, y
          else
            return -20, -20
          end
        rescue
          return 0, 0 #nil
        end
        
      end  
        
      #--------------------------------------------------------------------------
      # * Update Mouse Position
      #--------------------------------------------------------------------------
      def self.update
        
        # Update Position
        old_pos = @pos
        @pos = self.pos
        
        # agf = hide system mouse
        if !$mouse_sprite.visible && old_pos != @pos
          $mouse_sprite.visible = true
        end
        
        # when mouse leaves game window, show system mouse
        if old_pos != [-20, -20] && @pos == [-20, -20]
          $ShowCursor.call(1)
        # when mouse is in game window, show custom mouse if it's turned on
        elsif old_pos == [-20, -20] && @pos != [-20, -20]
          $ShowCursor.call($game_mouse ? 0 : 1)
        end
    
        # Update Triggers
        for i in @triggers
          # Gets Async State
          n = GAKS.call(i[1])
          # If 0 or 1
          if [0, 1].include?(n)
            i[0] = (i[0] > 0 ? i[0] * -1 : 0)
          else
            i[0] = (i[0] > 0 ? i[0] + 1 : 1)
          end
        end
        
      end
      #--------------------------------------------------------------------------
      # * Trigger?
      #     id : 0:Left, 1:Right, 2:Center
      #--------------------------------------------------------------------------
      def self.trigger?(id = 0)
        
        #only user trigger if in range of screen
        pos = self.pos
        if pos != [-20,-20]
        
        case id
          when 0  # Left
            return @triggers[id][0] == 1
          when 1  # Right (only when menu enabled)
            if @triggers[1][0] == 1 && !$game_system.menu_disabled
              return @triggers[id][0] == 1      
            end
          when 2  # Center
            return @triggers[id][0] == 1
        end    
        
        end
        
      end
      #--------------------------------------------------------------------------
      # * Repeat?
      #     id : 0:Left, 1:Right, 2:Center
      #--------------------------------------------------------------------------
      def self.repeat?(id = 0)
        if @triggers[id][0] <= 0
          return false
        else
          return @triggers[id][0] % 5 == 1 && @triggers[id][0] % 5 != 2
        end
      end
      #--------------------------------------------------------------------------
      # * Screen to Client
      #--------------------------------------------------------------------------
      def self.screen_to_client(x=0, y=0)
        # Pack X & Y
        pos = [x, y].pack('ll')
        # Return Unpacked Position or Nil
        return Scr2cli.call(self.hwnd, pos) == 0 ? nil : pos.unpack('ll')
      end
      #--------------------------------------------------------------------------
      # * Hwnd - window handle
      #--------------------------------------------------------------------------
      def self.hwnd
        if @hwnd.nil?
          # Finds Game Name from ini file
          game_name = "\0" * 256
          Readini.call('Game', 'Title', '', game_name, 255, ".\\Game.ini")
          game_name.delete!("\0")
          # Finds Window
          @hwnd = Findwindow.call('RGSS Player', game_name)
        end
        return @hwnd
      end
      #--------------------------------------------------------------------------
      # * Client Size
      #--------------------------------------------------------------------------
      def self.client_size
        # Packs Empty Rect
        rect = [0, 0, 0, 0].pack('l4')
        # Gets Game Window Rect
        Client_rect.call(self.hwnd, rect)
        # Unpacks Right & Bottom
        right, bottom = rect.unpack('l4')[2..3]
        # Returns Right & Bottom
        return right, bottom
      end
    end
    
    #==============================================================================
    # ** Input
    #==============================================================================
    
    class << Input
      #------------------------------------------------------------------------
      # * Alias Listings
      #------------------------------------------------------------------------
      unless self.method_defined?(:seph_mouse_input_update)
        alias_method :seph_mouse_input_update,   :update
        alias_method :seph_mouse_input_trigger?, :trigger?
        alias_method :seph_mouse_input_repeat?,  :repeat?
      end
      #------------------------------------------------------------------------
      # * Frame Update
      #------------------------------------------------------------------------
      def update
        # Update Mouse
        Mouse.update
        # Original Update
        seph_mouse_input_update
      end
      #--------------------------------------------------------------------------
      # * Trigger? Test
      #--------------------------------------------------------------------------
      def trigger?(constant)
        # Return true if original test is true
        return true if seph_mouse_input_trigger?(constant)
        # If Mouse Position isn't Nil
        unless Mouse.pos.nil?
          # If Mouse Trigger to Input Trigger Has Constant
          if Mouse::Mouse_to_Input_Triggers.has_value?(constant)
            # Return True if Mouse Triggered
            mouse_trigger = Mouse::Mouse_to_Input_Triggers.index(constant)
            return true if Mouse.trigger?(mouse_trigger)      
          end
        end
        # Return False
        return false
      end
      #--------------------------------------------------------------------------
      # * Repeat? Test
      #--------------------------------------------------------------------------
      def repeat?(constant)
        # Return true if original test is true
        return true if seph_mouse_input_repeat?(constant)
        # If Mouse Position isn't Nil
        unless Mouse.pos.nil?
          # If Mouse Trigger to Input Trigger Has Constant
          if Mouse::Mouse_to_Input_Triggers.has_value?(constant)
            # Return True if Mouse Triggered
            mouse_trigger = Mouse::Mouse_to_Input_Triggers.index(constant)     
            return true if Mouse.repeat?(mouse_trigger)
          end
        end
        # Return False
        return false
      end
    end
    
    
    #==============================================================================
    #  ¦ Path Finding
    #==============================================================================
    # Near Fantastica
    # Version 1
    # 29.11.05
    #==============================================================================
    
      class Game_Character
        #--------------------------------------------------------------------------
        alias nf_pf_game_character_initialize initialize
        alias nf_pf_game_character_update update
        #--------------------------------------------------------------------------
        attr_accessor :map
        attr_accessor :runpath
        attr_accessor :ovrdest
        #--------------------------------------------------------------------------
        def initialize
          nf_pf_game_character_initialize
          @map = nil
          @runpath = false
          @ovrdest = false
        end
        #--------------------------------------------------------------------------
        def update
          run_path if @runpath == true
          nf_pf_game_character_update
        end
        #--------------------------------------------------------------------------
        def run_path
          return if moving?
          step = @map[@x,@y]
          if step == 1
            @map = nil
            @runpath = false
            return
          end
          
          dir = rand(2)
          case dir
          when 0
            move_right if @map[@x+1,@y] == step - 1 and step != 0
            move_down if @map[@x,@y+1] == step - 1 and step != 0
            move_left if @map[@x-1,@y] == step -1 and step != 0
            move_up if @map[@x,@y-1] == step - 1 and step != 0
          when 1
            move_up if @map[@x,@y-1] == step - 1 and step != 0
            move_left if @map[@x-1,@y] == step -1 and step != 0
            move_down if @map[@x,@y+1] == step - 1 and step != 0
            move_right if @map[@x+1,@y] == step - 1 and step != 0
          end
        end
        #--------------------------------------------------------------------------
        def find_path(x,y, force = true)
          sx, sy = @x, @y
          result = setup_map(sx,sy,x,y)      
          @runpath = result[0]
          @map = result[1]
          @map[sx,sy] = result[2] if result[2] != nil
          $game_player.ignore_movement = @runpath ? force : false
        end
        #--------------------------------------------------------------------------
        def clear_path
          @map = nil
          @runpath = false
          @ovrdest = false
          $game_player.ignore_movement = false
        end
        #--------------------------------------------------------------------------
        def setup_map(sx,sy,ex,ey)
          map = Table.new($game_map.width, $game_map.height)
    
          # Shaz - adding this comment to the second line of the event commands
          #     Mouse[0,1]
          # will cause the player to go to the tile BELOW the event, turn up,
          # and interact with the event ([0,1] is x+0, y+1)
          tx = ex
          ty = ey
          event = $game_map.event_at(ex, ey)
          if !event.nil? && !event.list.nil? && !event.erased && 
            event.list.size > 1 && event.list[1].code == 108
            text = event.list[1].parameters.to_s
            text.gsub!(/[Mm][Oo][Uu][Ss][Ee]\[([-,0-9]+),([-,0-9]+)\]/) do
              tx = ex + $1.to_i
              ty = ey + $2.to_i
              map[ex, ey] = 999
              @ovrdest = true
            end
          end
          
          update_counter = 0
          map[tx,ty] = 1
          old_positions = []
          new_positions = []
          old_positions.push([tx, ty])
          depth = 2
          $path_allow = false
          depth.upto(100){|step|
            loop do
              break if old_positions[0] == nil
              x,y = old_positions.shift
              return [true, map, step-1] if x == sx and y == sy
              if map[x,y + 1] == 0 and $game_player.passable?(x, y, 2, step, tx, ty) 
                map[x,y + 1] = step
                new_positions.push([x,y + 1])
              end
              if map[x - 1,y] == 0 and $game_player.passable?(x, y, 4, step, tx, ty) 
                map[x - 1,y] = step
                new_positions.push([x - 1,y])
              end
              if map[x + 1,y] == 0 and $game_player.passable?(x, y, 6, step, tx, ty) 
                map[x + 1,y] = step
                new_positions.push([x + 1,y])
              end
              if map[x,y - 1] == 0 and $game_player.passable?(x, y, 8, step, tx, ty) 
                map[x,y - 1] = step
                new_positions.push([x,y - 1])
              end
              
              # If we've checked quite a few tiles, allow graphics and input
              # to update - to avoid the 'script hanging' error
              update_counter += 1
              if update_counter > 100
                Graphics.update
                update_counter = 0
              end
            end
            
            old_positions = new_positions
            new_positions = []
          }
          
          @ovrdest = false
          return [false, nil, nil]        
            
        end
      end
      
      class Game_Map
        #--------------------------------------------------------------------------
        alias pf_game_map_setup setup
        #--------------------------------------------------------------------------
        def setup(map_id)
          pf_game_map_setup(map_id)
          $game_player.clear_path
        end
      end
      
      class Game_Player
        attr_accessor :ignore_movement
        #--------------------------------------------------------------------------
        alias pf_game_player_update update
        #--------------------------------------------------------------------------
        def update
          $game_player.clear_path if Input.dir4 != 0
          pf_game_player_update
        end
      end
      
      class Interpreter
        #--------------------------------------------------------------------------
        def event
          return $game_map.events[@event_id]
        end
      end
    

     


    3a sezione:
    MOUSE2


    #==============================================================================
    # ** MouseCursor
    #==============================================================================
    
    module MouseCursor
        Default_Cursor = 'Arrow'
        Event_Cursor   = 'Arrow3'
        Actor_Cursor   = 'Arrow'
        Enemy_Cursor   = 'Arrow4'
        Item_Cursor    = true
        Skill_Cursor   = true
        Dummy = Bitmap.new(32, 32)
    end
    
    #==============================================================================
    # ** Sprite_Mouse
    #==============================================================================
    
    class Sprite_Mouse < Sprite
      #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      def initialize
        super
        self.z = 10100
        self.ox = 4
        update
      end
      #--------------------------------------------------------------------------
      # ** Frame Update
      #--------------------------------------------------------------------------
      def update
        super
        
        # Update Visibility
        self.visible = $scene != nil
        
        # If Visible
        if self.visible
          
          # If Non-nil Mouse Position
          if Mouse.position != nil
            
            # Gets Mouse Position
            mx, my = *Mouse.position
            
            # Update POsition
            self.x = mx unless mx.nil?
            self.y = my unless my.nil?      
            
          end
          
          # If Scene changes or Mouse is Triggered
          if @scene != $scene.class || Mouse.trigger?
            
            # Update Scene Instance
            @scene = $scene.class
            
            # Update Bitmap
            set_bitmap(MouseCursor::Default_Cursor)
          end
          
        end
        
      end
      #--------------------------------------------------------------------------
      # ** Set Bitmap
      #--------------------------------------------------------------------------
      def set_bitmap(cursor, xNPCname = nil)
        
        # show fancy cursor only if custom mouse on
        if $game_mouse
                 
          # If Cursor Info matches
          if (@_cursor == cursor) && (@_NPCname == xNPCname)
            return
          end
          
          # Reset Cursor Info
          @_cursor      = cursor
          @_NPCname     = xNPCname
          
          # Gets Dummy
          dummy = MouseCursor::Dummy
          
          # Gets Item Cursor Bitmap
          item_cursor = cursor.nil? ? MouseCursor::Default_Cursor : cursor
          
          # Start Cursor Bitmap
          bitmap = RPG::Cache.icon(item_cursor) if item_cursor != ''
    
          # Show NPC name
          if @_NPCname != nil
            # Get name width
            w = dummy.text_size(@_NPCname).width
            h = dummy.font.size
            b = RPG::Cache.icon(item_cursor)
            # Create New Bitmap
            bitmap = Bitmap.new((bitmap.nil? ? w : 40 + w), [b.height, h + 2].max)
            bitmap.font.size = dummy.font.size
            bitmap.blt(0, 0, b, b.rect)
            # Draw NPC Name
            x = item_cursor == '' ? 0 : 32
            bitmap.font.color = Color.new(0, 0, 0, 255) # black
            bitmap.draw_text(b.width + 9, 0, w, h, @_NPCname) # 0
            bitmap.draw_text(b.width + 11, 0, w, h, @_NPCname) # 0 
            bitmap.draw_text(b.width + 10, -1, w, h, @_NPCname) # -1
            bitmap.draw_text(b.width + 10, 1, w, h, @_NPCname) # 1
            bitmap.font.color = Color.new(255, 255, 255, 255) # white
            bitmap.draw_text(b.width + 10, 0, w, h, @_NPCname)
          end    
    
          # Set Bitmap
          self.bitmap = bitmap
          
        elsif self.bitmap
          @_cursor = nil
          self.bitmap = nil
          
        end
        
      end
      #--------------------------------------------------------------------------
      # ** Frame Update : Update Event Cursors
      #--------------------------------------------------------------------------
      def update_event_cursors
        
        # If Nil Grid Position
        if Mouse.grid.nil?
          # Set Default Cursor
          set_bitmap(MouseCursor::Default_Cursor)
          return
        end
        
        # Gets Mouse Position
        x, y = *Mouse.grid
        
        # Gets Mouse Position
        mx, my = *Mouse.position    
        
        # Gets Mouse Event
        event = $game_map.event_at(x, y)
        
        # If Non-Nil Event or not over map HUD
        unless event.nil? 
          # If Not Erased or Nil List
          if event.list != nil && event.erased == false && event.list[0].code == 108
            # Get the cursor to show
            icon = event.list[0].parameters 
            icon = icon.to_s
            if !((icon == "Arrow2") || 
               (icon == "Arrow3") || 
               (icon == "Arrow4") || 
               (icon == "Arrow5") || 
               (icon == "Arrow6") ||
               (icon == "Arrow7"))
               icon = MouseCursor::Default_Cursor
            end        
            xNPCname = nil 
            if event.list.size > 1 && event.list[1].code == 108
              text = event.list[1].parameters.to_s
              text.gsub!(/[Nn][Aa][Mm][Ee] (.*)/) do
                xNPCname = $1.to_s
              end
            end
            set_bitmap(icon, xNPCname)    
            return
          end
          return
        end
        
        # Set Default Cursor
        set_bitmap(MouseCursor::Default_Cursor)
        
      end
    end
    
    #==============================================================================
    # ** Input
    #==============================================================================
    
    class << Input
      #------------------------------------------------------------------------
      # * Alias Listings
      #------------------------------------------------------------------------
      unless self.method_defined?(:sephlamchop_mousesys_input_update)
        alias_method :sephlamchop_mousesys_input_update,   :update
      end
      #------------------------------------------------------------------------
      # * Frame Update
      #--------------------------------------------------------------------------
      def update
        $mouse_sprite.update if $mouse_sprite.visible
        # Original Update
        sephlamchop_mousesys_input_update
      end
    end
    

     

     

    4a sezione
    MOUSE3_1

     


    WORLD_MAP_ID = 1
    
    #==============================================================================
    # ** Game_Map
    #==============================================================================
    
    class Game_Map
      #--------------------------------------------------------------------------
      # * Event At
      #--------------------------------------------------------------------------
      def event_at(x, y)
        for event in @events.values
            return event if event.x == x && event.y == y
        end
        return nil
      end
     
      #--------------------------------------------------------------------------
      # * Events At (returns multiple events at the same position in an array)
      #--------------------------------------------------------------------------
      def events_at(x, y)
        eventarray = []
        for event in @events.values
          eventarray.push event if event.x == x && event.y == y
        end
        return eventarray if eventarray.size > 0
        return nil
      end
    
    end
    
    #==============================================================================
    # ** Game_Event
    #==============================================================================
    
    class Game_Event
      #--------------------------------------------------------------------------
      # * Public Instance Variables
      #--------------------------------------------------------------------------
      attr_reader   :erased                  # trigger
      attr_accessor :mouse_autostart         # mouse autostart boolean
      attr_accessor :mouse_cursor_icon       # mouse cursor icon
      attr_accessor :mouse_cursor_desc       # mouse cursor desc
      attr_reader   :name                    # name of event
      #--------------------------------------------------------------------------
      # * Alias Listings
      #--------------------------------------------------------------------------
      alias_method :sephlamchop_mousesys_gmevt_refresh, :refresh
      #--------------------------------------------------------------------------
      # * Start Event
      #--------------------------------------------------------------------------
      def start
        # If list of event commands is not empty
        if @list && @list.size > 1
          @starting = true
        end
      end  
    
      #--------------------------------------------------------------------------
      # * Refresh
      #--------------------------------------------------------------------------  
      def refresh
        # Original Refresh
        sephlamchop_mousesys_gmevt_refresh
        # Click triggers event for action button, player or event touch
        @mouse_autostart   = [0, 1, 2].include?(@trigger)
        @mouse_cursor_icon = MouseCursor::Event_Cursor
        @mouse_cursor_desc = nil
        # Return if Erased or Nil List
        #return if @erased || @list.nil?
        
      end
    end
    
    #==============================================================================
    # ** Game_Character
    #==============================================================================
    class Game_Character
     
      def passable?(x, y, d, step = 999, tx = nil, ty = nil)
        
        # Get new coordinates
        new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
        new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
        
        # If coordinates are outside of map
        unless $game_map.valid?(new_x, new_y)
          return false
        end
        
        # If through is ON
        if @through
          return true
        end
        
        # Able to leave current tile in desired direction?
        # SHAZ: for counter, must be old, counter, new, in a straight line
        unless $game_map.passable?(x, y, d, self) || (step == 2 && $game_map.event_at(x, y)) ||
          (step == 3 && $game_map.counter?(x, y) && tx != nil && ty != nil &&
          new_x - x == x - tx && new_y - y == y - ty)
          return false
        end
        
        # Able to enter adjoining tile in current direction?
        unless $game_map.passable?(new_x, new_y, 10 - d) ||
          (step == 2 && $game_map.counter?(new_x, new_y))
          return false
        end
    
        # SHAZ - ignore events sitting on a counter next to the destination
        if step != 2 || !$game_map.counter?(new_x, new_y)          
          # Loop all events
          for event in $game_map.events.values
            # If event coordinates are consistent with move destination
            if event.x == new_x and event.y == new_y
              @state = true
              # If through is OFF
              unless event.through
                # If self is event
                if self != $game_player
                  return false
                end
                # With self as the player and partner graphic as character
                if event.character_name != ""
                  return false
                end
              end
            end
          end
        end
        
        # If on world map, don't allow to go through events.  Otherwise,
        # the event will be triggered while the PC is walking
        if $game_map.map_id == WORLD_MAP_ID && @state == false
          return false
        end      
    
        # If player coordinates are consistent with move destination
        if $game_player.x == new_x && $game_player.y == new_y && self != $game_player
          # If through is OFF
          unless $game_player.through
            # If your own graphic is the character
            if @character_name != ""
              return false
            end
          end
        end
    
        return true
        
      end
    end
    
    #==============================================================================
    # ** Game_Player
    #==============================================================================
    
    class Game_Player < Game_Character
      #--------------------------------------------------------------------------
      # * Alias Listings
      #--------------------------------------------------------------------------
      alias_method :sephlamchop_mousesys_gmplyr_update, :update
      #--------------------------------------------------------------------------
      # * Frame Update
      #--------------------------------------------------------------------------
      def update
        # Unless Interpreter Running, Forcing a Route or Message Showing
        unless $game_system.map_interpreter.running? or
               @move_route_forcing or $game_temp.message_window_showing
               
          # Find Path If Mouse Triggered
          if Mouse.trigger?(0) && Mouse.grid != nil
    
            # Check if mouse is over HUD on map
            screen_x,screen_y = Mouse.pos
            
            # Gets Mouse X & Y
            mx, my = *Mouse.grid
            
            # Turn Character in direction
            newd_x = (@x - mx).abs
            newd_y = (@y - my).abs
            
            if @x > mx
                turn_left if newd_x >= newd_y
            elsif @x < mx
                turn_right if newd_x >= newd_y
            end  
                
            if @y > my
                turn_up if newd_x < newd_y
            elsif @y < my
                turn_down if newd_x < newd_y
            end
    
            # Run Pathfinding
            find_path(mx, my, false)
            
            # Gets Event
            @eventarray = @runpath ? $game_map.events_at(mx, my) : nil
            # If Event At Grid Location
            unless @eventarray.nil?
              @eventarray.each do |event|
                # If Event Autostart
                if !event.mouse_autostart
                  @eventarray.delete(event)
                end
              end
              @eventarray = nil if @eventarray.size == 0
            end
            
          end
        end
        
        if @move_route_forcing
          clear_path
          @eventarray = nil
        end
        
        # Original Update
        sephlamchop_mousesys_gmplyr_update
        # If Non-nil Event Autostarter
        if @eventarray != nil && !moving? &&
          (!@ovrdest || @map.nil? || @map[@x,@y] == 1)
          # Gets Event
          @eventarray.each do |event|
          
            # If Event Within Range
            if event and (@x == event.x or @y == event.y)
              # SHAZ - trigger event when:
              # - Action button and standing on or beside, or with a counter between
              # - player/event touch and standing as close as possible (on, if possible)
              distance = Math.hypot(@x - event.x, @y - event.y)
              dir = @x < event.x ? 6 : @x > event.x ? 4 : @y < event.y ? 2 : @y > event.y ? 8 : 0
              if (event.trigger == 0 and (distance < 2 or (distance == 2 and
                $game_map.counter?((@x+event.x)/2, (@y+event.y)/2)))) or
                ([1,2].include?(event.trigger) and ((distance == 0 and
                $game_player.passable?(@x, @y, dir)) or (distance == 1 and
                !$game_player.passable?(@x, @y, dir))))
                # Turn toward Event
                if @x == event.x
                  turn_up if @y > event.y
                  turn_down if @y < event.y
                else
                  turn_left if @x > event.x
                  turn_right if @x < event.x
                end
                # Start Event
                clear_path
                event.start
                @eventarray.delete(event)
                @eventarray = nil if @eventarray.size == 0
              end
            end
          
          end      
        end
    
      end
     
      def passable?(x1, y1, d, step = 999, tx = nil, ty = nil)
        super
      end
     
    end
    
    #==============================================================================
    # ** Mouse Selectable Windows
    #------------------------------------------------------------------------------
    # SephirothSpawn
    # Version 2.1
    #==============================================================================
    #==============================================================================
    # ** Window_Base
    #==============================================================================
    
    class Window_Base
      #--------------------------------------------------------------------------
      # * Frame Update : Mouse Cursor - Item
      #--------------------------------------------------------------------------
      def update_mouse_cursors_item(item, cursor, show)
        # Return if not Active
        return unless self.active
        # Return if nil Position
        return if Mouse.position.nil?
        # Gets Mouse Position
        mx, my = Mouse.position
        # Gets Cursor Position
        cr = self.cursor_rect
        cx, cy = cr.x + self.x + 16, cr.y + self.y + 16
        cw, ch = cr.width, cr.height
        # If Not on Item
        if mx.between?(self.x, self.x + self.width) == false ||
           my.between?(self.y, self.y + self.height) == false || item.nil? ||
           @item_max == 0 || mx.between?(cx, cx + cw) == false ||
           my.between?(cy, cy + ch) == false
          # Clear Mouse Index
          @mouse_index = nil
          # Set Mouse to Default Cursor
          $mouse_sprite.set_bitmap(MouseCursor::Default_Cursor)
          return
        end
        # If Index is different than mouse index and window active
        if @mouse_index != @index
          # Reset Index
          @mouse_index = @index
          # set to item icon if cursor is true
          cursor = item.icon_name if cursor
          # Set Bitmap
          $mouse_sprite.set_bitmap(cursor)
        end
      end
     
    end
    
    class Window_Selectable
      #--------------------------------------------------------------------------
      # * Default Settings
      #--------------------------------------------------------------------------
      Default_Mouse_Selectable = true
      Default_Window_Padding   = 16
      #--------------------------------------------------------------------------
      # * Public Instance Variables
      #--------------------------------------------------------------------------
      attr_accessor :mouse_selectable
      attr_accessor :window_padding
      #--------------------------------------------------------------------------
      # * Alias Listings
      #--------------------------------------------------------------------------
      alias_method :seph_mouseselectable_wndslct_init,   :initialize
      alias_method :seph_mouseselectable_wndslct_update, :update
      #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      def initialize(x, y, width, height)
        # Original Initialization
        seph_mouseselectable_wndslct_init(x, y, width, height)
        # Set Mouse Selectable Flag
        @mouse_selectable = Default_Mouse_Selectable
        @window_padding   = Default_Window_Padding
      end
      #--------------------------------------------------------------------------
      # * Frame Update
      #--------------------------------------------------------------------------
      def update
        
        # agf = hide mouse
        if $mouse_sprite.visible == true
        
        # If Mouse Selectable, Active, at Least 1 Item and Non-negitive index
        if self.mouse_selectable && self.active && @item_max > 0 && @index >= 0
          # Gets Mouse Position
          mouse_x, mouse_y = *Mouse.position
          
          # If Mouse Within Window       
          if mouse_x.between? (self.x, self.x + self.width) &&
             mouse_y.between? (self.y, self.y + self.height)
            # Calculates Mouse X and Y Position Within Window
            mouse_x -= self.x; mouse_y -= self.y
            # Subtracts Window Padding
            mouse_x -= @window_padding; mouse_y -= @window_padding
            # Subtracts Mouse Oh
            mouse_y -= self.mouse_oh
            # Gets Cursor Width
            cursor_width = (self.width / @column_max - 32)
            # Passes Through Item Max
            for i in 0...@item_max
              # Calculates Index Position
              x = i % @column_max * (cursor_width + 32)
              y = i / @column_max * self.oh - self.oy
              # If Mouse Between Rect
              if mouse_x.between?(x, x + cursor_width) &&
                 mouse_y.between?(y, y + self.oh)
                # Set Index
                prev_index = @index
                @index = i
                if prev_index != @index
                  $game_system.se_play($data_system.cursor_se)
                end
                break
              end
            end
          end
        end
        
        end
        
        # Original Update
        seph_mouseselectable_wndslct_update
      end
      #--------------------------------------------------------------------------
      # * Oh
      #--------------------------------------------------------------------------
      def oh
        return 32
      end
      #--------------------------------------------------------------------------
      # * Mouse Oh
      #--------------------------------------------------------------------------
      def mouse_oh
        return 0
      end  
     
    end
    

     

     

    5a sezione

    MOUSE3_2

     

    #==============================================================================
    # ** Window_MenuStatus
    #==============================================================================
    
    class Window_MenuStatus < Window_Selectable
      #--------------------------------------------------------------------------
      # * Oh
      #--------------------------------------------------------------------------
      def oh
        return 60 
      end
    end
    
    #==============================================================================
    # ** Window_Target
    #==============================================================================
    
    class Window_Target < Window_Selectable
      #--------------------------------------------------------------------------
      # * Oh
      #--------------------------------------------------------------------------
      def oh
        return 105 
      end
    end
    
    #==============================================================================
    # ** Window_BattleReserve
    #==============================================================================
    
    class Window_BattleReserve < Window_Selectable
      #--------------------------------------------------------------------------
      # * Oh
      #--------------------------------------------------------------------------
      def oh
        return 105 
      end
    end
    
    #==============================================================================
    # ** Window_EquipRight
    #==============================================================================
    
    class Window_EquipRight < Window_Selectable
      #--------------------------------------------------------------------------
      # * Oh
      #--------------------------------------------------------------------------
      def oh
        return 50 
      end
      
      #--------------------------------------------------------------------------
      # * Mouse Oh
      #--------------------------------------------------------------------------
      def mouse_oh
        return 140
      end  
      
    end
    
    #==============================================================================
    # ** Window_Message
    #==============================================================================
    
    class Window_Message < Window_Selectable
      #--------------------------------------------------------------------------
      # * Mouse Oh
      #--------------------------------------------------------------------------
      def mouse_oh
        return $game_temp.choice_start * 32
      end
    end
    
    #==============================================================================
    # ** Window_Party
    #==============================================================================
    
    class Window_Party < Window_Selectable
      #--------------------------------------------------------------------------
      # * Oh
      #--------------------------------------------------------------------------
      def oh
        return 52 
      end
    end
    
    
    #==============================================================================
    # ** Window_Menu
    #==============================================================================
    
    class Window_Menu < Window_Selectable
      #--------------------------------------------------------------------------
      # * Oh
      #--------------------------------------------------------------------------
      def oh
        return 35 
      end
    end
    
    #==============================================================================
    # ** Window_ActorCommand
    #==============================================================================
    
    class Window_ActorCommand < Window_Selectable
      #--------------------------------------------------------------------------
      # * Update
      #--------------------------------------------------------------------------
      def update
        if $mouse_sprite.visible
          
          # if Mouse sleectable, active, at least 1 item and non-negative index
          if self.mouse_selectable && self.active && @item_max > 0 && @index >= 0
            # Get / check mouse position
            mouse_x, mouse_y = *Mouse.position
            
            if mouse_x.between?(self.x, self.x + self.width) && 
              mouse_y.between?(self.y, self.y + self.height)
              
              # Calculates mouse position within window
              mouse_x -= self.x
              mouse_y -= self.y
              
              # Subtracts widnow padding and overhead
              mouse_x -= @window_padding
              mouse_y -= @window_padding - self.mouse_oh
              
              # Look through all items
              for i in 0...@item_max
                ix,iy = @positions[i]
                if mouse_x.between?(ix, ix + 32) && mouse_y.between?(iy, iy + self.oh)
                  if i != @index
                    $game_system.se_play($data_system.cursor_se)
                  end
                  @index = i
                  break
                end
              end
            end
          end
        end
        
        super
      end
      
      #--------------------------------------------------------------------------
      # * Oh
      #--------------------------------------------------------------------------
      def oh
        return 32  
      end
    end
    
    
    #==============================================================================
    # ** Window_NameInput
    #==============================================================================
    
    class Window_NameInput < Window_Base
      #--------------------------------------------------------------------------
      # * Default Settings
      #--------------------------------------------------------------------------
      Default_Mouse_Selectable = true
      Default_Window_Padding = 16
      #--------------------------------------------------------------------------
      # * Public Instance Variables
      #--------------------------------------------------------------------------
      attr_accessor :mouse_selectable
      attr_accessor :window_padding
      #--------------------------------------------------------------------------
      # * Alias Listings
      #--------------------------------------------------------------------------
      alias_method :shaz_mouseselectable_wndslct_init,   :initialize
      alias_method :shaz_mouseselectable_wndslct_update, :update
      #--------------------------------------------------------------------------
      # ● Initialize the Name Input window
      #--------------------------------------------------------------------------
      def initialize
        # Original Initialization
        shaz_mouseselectable_wndslct_init
        # Set Mouse Selectable Flag
        @mouse_selectable = Default_Mouse_Selectable
        @window_padding = Default_Window_Padding
      end
    
      #--------------------------------------------------------------------------
      # * Frame Update
      #--------------------------------------------------------------------------
    
      def update
        
        # if mouse selectable, visible, active, and non-negative index
        if $mouse_sprite.visible && self.mouse_selectable && self.active &&
          @index >= 0
          
          # Get mouse position
          mouse_x, mouse_y = *Mouse.position
          
          # If mouse within window
          if mouse_x.between? (self.x, self.x + self.width) &&
            mouse_y.between? (self.y, self.y + self.height)
            
            # Calculates mouse X and Y positions within window
            mouse_x -= self.x; mouse_y -= self.y
            
            # Subtracts window padding
            mouse_x -= @window_padding; mouse_y -= @window_padding
            
            # Subtracts mouse oh
            mouse_y -= self.mouse_oh
            
            # Gets cursor width
            cursor_width = 28
            
            # If not Submit button, pass through all items
            if mouse_x.between?(428, 428+48) && mouse_y.between?(9*32, 9*32+32)
              $game_system.se_play($data_system.cursor_se) if @index != 180
              @index = 180
            else
              for i in 0..90  
                
                # Calculate index position
                x = 140 + i / 5 / 9 * 180 + i % 5 * 32
                y = i / 5 % 9 * 32
                
                # If mouse between rect
                if mouse_x.between?(x, x + cursor_width) && 
                  mouse_y.between?(y, y + self.oh)
                  # set index
                  prev_index = @index
                  @index = i
                  if prev_index != @index
                    $game_system.se_play($data_system.cursor_se)
                  end
                  break
                end
              end
            end
          end
        end
        
        # Original update
        shaz_mouseselectable_wndslct_update
      end
      
      #--------------------------------------------------------------------------
      # * Oh
      #--------------------------------------------------------------------------
      
      def oh
        return 32
      end
      
      #--------------------------------------------------------------------------
      # * Mouse Oh
      #--------------------------------------------------------------------------
      
      def mouse_oh
        return 0
      end
      
    end
    
    
    #==============================================================================
    # ** Scene_File
    #==============================================================================
    
    class Scene_File
      #--------------------------------------------------------------------------
      # * Alias Listings
      #--------------------------------------------------------------------------
      alias_method :sephlamchop_mousesys_scnfl_update, :update
      #--------------------------------------------------------------------------
      # * Frame Update
      #--------------------------------------------------------------------------
      def update
        
        # agf = hide mouse
        if $mouse_sprite.visible == true    
        
        # If Mouse Position isn't Nil
        if Mouse.pos != nil
          
          # Gets Mouse Position
          x, y = Mouse.pos 
          y = y + 32
          
          # Pass Through Savefile Windows
          for i in 0...@savefile_windows.size
            
            # Gets Window
            w = @savefile_windows[i]
            
            # Don't allow user to select autosave slot in Load Menu
            if @autosave_slot == false
              i = 1 if i == 0
            end
            
            # If Within Window Range
            if x.between?(w.x, w.x + w.width) &&
               y.between?(w.y, w.y + w.height) && w.active
                          
              prev_index = @file_index
               
              # Set File Index
              @file_index = i
              
              # Turns Window On
              w.selected = true
              
              # Play SE
              if prev_index != @file_index
                $game_system.se_play($data_system.cursor_se)
              end          
              
              # Unhighlight remaining windows
              for j in 0...@savefile_windows.size
                if j != i
                   @savefile_windows[j].selected = false
                end
              end         
    
              # Don't select autosave slot in Load Menu
              if @autosave_slot == false
                @savefile_windows[0].selected = false if i == 1
              end
              
              # Break Main Loop
              break            
            end
          end
        end
      
        end
      
        # Original Update
        sephlamchop_mousesys_scnfl_update
      end
    end
    
    
    #==============================================================================
    # ** Game_Battler
    #==============================================================================
    
    class Game_Battler
      #--------------------------------------------------------------------------
      # * Battler Width
      #--------------------------------------------------------------------------
      def battler_width
        return RPG::Cache.battler(@battler_name, @battler_hue).width
      end
      #--------------------------------------------------------------------------
      # * Battler Height
      #--------------------------------------------------------------------------
      def battler_height
        return RPG::Cache.battler(@battler_name, @battler_hue).height
      end
    end
    
    #==============================================================================
    # ** Arrow_Enemy
    #==============================================================================
    
    class Arrow_Enemy < Arrow_Base
      #--------------------------------------------------------------------------
      # * Alias Listings
      #--------------------------------------------------------------------------
      alias_method :seph_mouseselectablewindows_arrenmy_update, :update
      #--------------------------------------------------------------------------
      # * Frame Update
      #--------------------------------------------------------------------------
      def update
        # Original Update
        seph_mouseselectablewindows_arrenmy_update
        
        if $mouse_sprite.visible == true
          # Return if Nil Mouse Position
          return if Mouse.position.nil?
          # Gets Mouse Position
          mx, my = *Mouse.position
          # Pass Through Enemies
          $game_troop.enemies.each do |enemy|
            # Skip if Non-Existing Enemy
            next unless enemy.exist?
            # Gets Paddings
            w, h = enemy.battler_width / 2, enemy.battler_height
            # If Within Mouse Padding Range
            if mx.between?(enemy.screen_x - w, enemy.screen_x + w) &&
               my.between?(enemy.screen_y - h, enemy.screen_y + 10)
              # Set Index
              @index = $game_troop.enemies.index(enemy)
              # Set mouse cursor to bitmap
              $mouse_sprite.set_bitmap(MouseCursor::Enemy_Cursor) 
              return
              # break
            end
          end
        
          # Set Mouse to Default Cursor
          $mouse_sprite.set_bitmap(MouseCursor::Default_Cursor)
        end
        
      end
    end
    
    #==============================================================================
    # ** Arrow_Actor
    #==============================================================================
    
    class Arrow_Actor < Arrow_Base
      #--------------------------------------------------------------------------
      # * Alias Listings
      #--------------------------------------------------------------------------
      alias_method :seph_mouseselectablewindows_arractr_update, :update
      #--------------------------------------------------------------------------
      # * Frame Update
      #--------------------------------------------------------------------------
      def update
        # Original Update
        seph_mouseselectablewindows_arractr_update
        # Return if Nil Mouse Position
        return if Mouse.position.nil?
        # Gets Mouse Position
        mx, my = *Mouse.position
        # Pass Through Actors
        $game_party.actors.each do |actor|
          # Gets Paddings
          w, h = actor.battler_width / 2, actor.battler_height
          # If Within Mouse Padding Range
          if mx.between?(actor.screen_x - w, actor.screen_x + w) &&
             my.between?(actor.screen_y - h, actor.screen_y + 10)
            # Set Index
            @index = $game_party.actors.index(actor)
          end
        end
      end
    end
    
    #==============================================================================
    # ** Scene_Map
    #==============================================================================
    
    class Scene_Map
      #--------------------------------------------------------------------------
      # * Alias Listings
      #--------------------------------------------------------------------------
      alias_method :sephlamchop_mousesys_scnmap_update, :update
      #--------------------------------------------------------------------------
      # * Frame Update
      #--------------------------------------------------------------------------
      def update
        # Unless Message Showing
        unless $game_temp.message_text
          # Update Event Cursors
          $mouse_sprite.update_event_cursors
        end
        # Original Update
        sephlamchop_mousesys_scnmap_update
      end
    end
    
    #==============================================================================
    # ** Interpreter
    #==============================================================================
    
    class Interpreter
      #--------------------------------------------------------------------------
      # * Alias Listings
      #--------------------------------------------------------------------------
      alias_method :shaz_mousesys_intrprtr_command_101, :command_101
      #--------------------------------------------------------------------------
      # * Show Text
      #--------------------------------------------------------------------------
      def command_101
        # return mouse sprite to default cursor
        $mouse_sprite.set_bitmap(MouseCursor::Default_Cursor)
        # original command_101
        shaz_mousesys_intrprtr_command_101
      end
    end
    
    $mouse_sprite = Sprite_Mouse.new
    
    # game mouse is visible, system mouse is hidden
    $mouse_sprite.visible = true
    

     

     

    Bene e questi sono i componenti che servono per avere un corretto o meglio quasi corretto utilizzo del Mouse in gioco.

    Vi segnalo subito che esiste un bug di poco conto ma che comunque un po fa storcere il naso,

    se (una volta attivata la funzione) andate nel menu di equipaggiamento e giocante con le voci lì.

    attivando e disattivando gli accessori le armature e le armi ecc, noterete che il cursore del Mouse non vi segue e si sofferma solo sulla prima voce che avete selezionato, o attivandola o il contrario.
    Comunque potete sempre uscire utilizzando il tasto destro del mouse e tutto si aggiusta.

    Ma ripeto sarà stata una piccola dimenticanza degli autori dello scripts.
    Chi la sa risolvere ben venga. Per il resto lo script è funzionalissimo e utile per chi vuole usare sia comandi da tastiera che dal mouse, una funzione non esclude l'altra.


    Un'ultima cosa ma importantissima :

     

    create un cursore, la dimenzione sceglietela voi, nominatelo Arrow e allocatelo nella cartella Icons del
    vostro progetto. Detto questo ho detto tutto.

    Spero possa esservi utile. Ehm niente...citate gli autori degli scripts mi raccomando e ah si,
    @Guardian:
    Ovviamente, prima di postare, mi sono spulciato tutte e 16 le pagine della sezione Script RGSS (XP) ed anche se ci sono altri post che trattano l'argomento e hanno rilasciato vari scripts allegati ad asso, comunque ti assicuro che una volta provati ho riscontrato dei Bugs pazzeschi. Uno addirittura era una vera e propria trappola mortale, che mi intrappolava dentro lo scene_equip perché non mi permetteva di tornare indietro. :)

    Comunque Bella raga notte a tutti. :cool:

     

  5. No no io vedo tutto. infatti ho acquisito la risorsa
    . . .
    Allora riporto ufficialmente a galla il topic.
    Ecco ciò che vedo:

    Game Player:

     

    
    class Game_Player < Game_Character
      attr_reader   :vehicle_type       # type of vehicle currenting being ridden
      def initialize
        super()
        @last_vehicle_type = -1
        @vehicle_type = -1
        @vehicle_getting_on = false     # Boarding vehicle flag
        @vehicle_getting_off = false    # Getting off vehicle flag
        @transferring = false           # Player transfer flag
        @new_map_id = 0                 # Destination map ID
        @new_x = 0                      # Destination X coordinate
        @new_y = 0                      # Destination Y coordinate
        @new_direction = 0              # Post-movement direction
        @walking_bgm = nil              # For walking BGM memory
      end
     
        def passable?(x, y, d)
        return false unless $game_map.valid?(x, y) 
        if $DEBUG and Input.press?(Input::CTRL)
          return true
        end
        if @through
          unless $game_player.in_airship?
        return true 
        end
       end
        return false unless map_passable?(x, y) # Map Impassable?
        return true                             # Passable
      end
     
      def map_passable?(x, y)
        case @vehicle_type
        when 0  # Boat
          return $game_map.boat_passable?(x, y)
        when 1  # Ship
          return $game_map.ship_passable?(x, y)
        when 2  # Airship
          return $game_map.airship_passable?(x, y)
        else    # Walking
          return Game_Character.new.passabile?(x, y, $game_player.direction)
        end
      end
     
      def can_walk?(x, y)
        @last_vehicle_type = @vehicle_type   # Remove vehicle type
        @vehicle_type = -1                  # Temporarily set to walking
        result = Game_Character.new.passabile?(x, y, $game_player.direction) # Determine if passable
        @vehicle_type = @last_vehicle_type   # Restore vehicle type
        return result
      end
     
      def airship_land_ok?(x, y)
        unless $game_map.airship_land_ok?(x, y)
          return false    # The tile passable attribute is unlandable
        end
        unless $game_map.events_xy(x, y).empty?
          return false    # Cannot land where there is an event
        end
        return true       # Can land
      end
      def veicolo_utilizzato?
        return @last_vehicle_type >= 0
      end
      def utilizzato_aereo?
        return @last_vehicle_type == 2
      end
      def in_vehicle?
        return @vehicle_type >= 0
      end
     
      def in_airship?
        return @vehicle_type == 2
      end
     
      alias player_moveto moveto
      def moveto(x, y)
        player_moveto(x, y)                             
        if in_vehicle?                                    # Riding in vehicle
          vehicle = $game_map.vehicles[@vehicle_type]     # Get vehicle
          vehicle.refresh                                 # Refresh
        end
      end
     
    alias player_steps increase_steps
      def increase_steps
        return if in_vehicle?
        player_steps
      end
     
      def move_by_input
        return unless movable?
        return if $game_map.interpreter.running?
        case Input.dir4
        when 2;  move_down
        when 4;  move_left
        when 6;  move_right
        when 8;  move_up
        end
      end
     
      def movable?
        return false if moving?                     # Moving
        return false if @move_route_forcing         # On forced move route
        return false if @vehicle_getting_on         # Boarding vehicle
        return false if @vehicle_getting_off        # Getting off vehicle
        return false if $game_temp.message_window_showing       # Displaying a message
        return false if in_airship? and not $game_map.airship.movable?
        return true
      end
     
      def update
        last_real_x = @real_x
        last_real_y = @real_y
        last_moving = moving?
        move_by_input
        super
        update_scroll(last_real_x, last_real_y)
        update_vehicle
        update_nonmoving(last_moving)
      end
     
      def update_scroll(last_real_x, last_real_y)
        ax1 = $game_map.adjust_x(last_real_x)
        ay1 = $game_map.adjust_y(last_real_y)
        ax2 = $game_map.adjust_x(@real_x)
        ay2 = $game_map.adjust_y(@real_y)
        if ay2 > ay1 and ay2 > CENTER_Y
          $game_map.scroll_down(ay2 - ay1)
        end
        if ax2 < ax1 and ax2 < CENTER_X
          $game_map.scroll_left(ax1 - ax2)
        end
        if ax2 > ax1 and ax2 > CENTER_X
          $game_map.scroll_right(ax2 - ax1)
        end
        if ay2 < ay1 and ay2 < CENTER_Y
          $game_map.scroll_up(ay1 - ay2)
        end
      end
     
      def update_vehicle
        return unless in_vehicle?
        vehicle = $game_map.vehicles[@vehicle_type]
        if @vehicle_getting_on                    # Boarding?
          if not moving?
            @direction = vehicle.direction        # Change direction
            @move_speed = vehicle.speed           # Change movement speed
            @vehicle_getting_on = false           # Finish boarding operation
            @transparent = true                   # Transparency
          end
        elsif @vehicle_getting_off                # Getting off?
          if not moving? and vehicle.altitude == 0
            @vehicle_getting_off = false          # Finish getting off operation
            @vehicle_type = -1                    # Erase vehicle type
            @last_vehicle_type = -1
            @transparent = false                  # Remove transparency
          end
        else                                      # Riding in vehicle
          vehicle.sync_with_player                # Move at the same time as player
        end
      end
     
      def update_nonmoving(last_moving)
        return if $game_map.interpreter.running?
        return if moving?
        return if check_touch_event if last_moving
        if not $game_temp.message_window_showing and Input.trigger?(Input::C)
          return if get_on_off_vehicle
          return if check_action_event
        end
        update_encounter if last_moving
      end
     
      def update_encounter
        return if $TEST and Input.press?(Input::CTRL)   # During test play?
        return if in_vehicle?                           # Riding in vehicle?
        if $game_map.bush?(@x, @y)                      # If in bush
          @encounter_count -= 2                         # Reduce encounters by 2
        else                                            # If not in bush
          @encounter_count -= 1                         # Reduce encounters by 1
        end
      end
     
      def check_touch_event
        return false if in_airship?
        return check_event_trigger_here([1,2])
      end
     
      def check_action_event
        return false if in_airship?
        return true if check_event_trigger_here([0])
        return check_event_trigger_there([0,1,2])
      end
     
      def get_on_off_vehicle
        return false unless movable?
        if in_vehicle?
          return get_off_vehicle
        else
          return get_on_vehicle
        end
      end
     
      def get_on_vehicle
        front_x = $game_map.x_with_direction(@x, @direction)
        front_y = $game_map.y_with_direction(@y, @direction)
        if $game_map.airship.pos?(@x, @y)       # Is it overlapping with airship?
          get_on_airship
          return true
        elsif $game_map.ship.pos?(front_x, front_y)   # Is there a ship in front?
          get_on_ship
          return true
        elsif $game_map.boat.pos?(front_x, front_y)   # Is there a boat in front?
          get_on_boat
          return true
        end
        return false
      end
     
      def get_on_boat
        @vehicle_getting_on = true        # Boarding flag
        @vehicle_type = 0                 # Set vehicle type
        force_move_forward                # Move one step forward
        @walking_bgm = $game_temp.map_bgm   # Memorize walking BGM
        $game_map.boat.get_on             # Boarding processing
      end
     
      def get_on_ship
        @vehicle_getting_on = true        # Board
        @vehicle_type = 1                 # Set vehicle type
        force_move_forward                # Move one step forward
        @walking_bgm = $game_temp.map_bgm     # Memorize walking BGM
        $game_map.ship.get_on             # Boarding processing
      end
     
      def get_on_airship
        @vehicle_getting_on = true        # Start boarding operation
        @vehicle_type = 2                 # Set vehicle type
        @through = true                   # Passage ON
        @walking_bgm = $game_temp.map_bgm     # Memorize walking BGM
        $game_map.airship.get_on          # Boarding processing
      end
     
      def get_off_vehicle
        if in_airship?                                # Airship
          return unless airship_land_ok?(@x, @y)      # Can't land?
        else                                          # Boat/ship
          front_x = $game_map.x_with_direction(@x, @direction)
          front_y = $game_map.y_with_direction(@y, @direction)
          return unless can_walk?(front_x, front_y)   # Can't touch land?
        end
        $game_map.vehicles[@vehicle_type].get_off     # Get off processing
        if in_airship?                                # Airship
          @direction = 2                              # Face down
        else                                          # Boat/ship
          force_move_forward                          # Move one step forward
          @transparent = false                        # Remove transparency
        end
        @vehicle_getting_off = true                   # Start getting off operation
        @move_speed = 4                               # Return move speed
        @through = false                              # Passage OFF
       $game_system.bgm_play(@walking_bgm)                          # Restore walking BGM
        make_encounter_count                          # Initialize encounter
      end
     
      def force_move_forward
        @through = true         # Passage ON
        move_forward            # Move one step forward
        @through = false        # Passage OFF
      end
    end
    

     


    poi..
    Game_Map


    class Game_Map
      attr_reader   :screen                   # map screen state
      attr_reader   :interpreter              # map event interpreter
      attr_reader   :parallax_name            # parallax background filename
      attr_reader   :events                   # events
      attr_reader   :vehicles                 # vehicle
    alias map_initialize initialize
      def initialize
        map_initialize
        @screen = Game_Screen.new
        @interpreter = $game_system.map_interpreter
        create_vehicles
      end
     
      def valid?(x, y)
        return (x >= -1 and x <= width and y >= -1 and y <= height) if $game_player.veicolo_utilizzato? and not $game_player.utilizzato_aereo?
        return (x >= 0 and x < width and y >= 0 and y < height)
      end
     
      alias map_setup setup
      def setup(map_id)
        map_setup(map_id)
        $nome_mappa = load_data("Data/MapInfos.rxdata") 
        $nome_mappa[@map_id].name
        $scroll_x = load_data("Data/MapInfos.rxdata") 
        $scroll_x[@map_id].scroll_x
        $scroll_y = load_data("Data/MapInfos.rxdata") 
        $scroll_y[@map_id].scroll_y
        referesh_vehicles
        setup_scroll
      end
     
      def create_vehicles
        @vehicles = []
        @vehicles[0] = Game_Vehicle.new(0)    # Boat
        @vehicles[1] = Game_Vehicle.new(1)    # Ship
        @vehicles[2] = Game_Vehicle.new(2)    # Airship
      end
     
      def referesh_vehicles
        for vehicle in @vehicles
          vehicle.refresh
        end
      end
     
      def boat
        return @vehicles[0]
      end
      def ship
        return @vehicles[1]
      end
      def airship
        return @vehicles[2]
      end
     
      def setup_scroll
        @scroll_direction = 2
        @scroll_rest = 0
        @scroll_speed = 4
        @margin_x = (width - 20) * 256 / 2      # Screen non-display width /2
        @margin_y = (height - 15) * 256 / 2     # Screen non-display height /2
      end
     
      def set_display_pos(x, y)
        @display_x = (x + @map.width * 256) % (@map.width * 256)
        @display_y = (y + @map.height * 256) % (@map.height * 256)
      end
     
      def adjust_x(x)
          return x - @display_x
      end
     
      def adjust_y(y)
          return y - @display_y
      end
     
      def x_with_direction(x, direction)
        return x + (direction == 6 ? 1 : direction == 4 ? -1 : 0)
      end
     
      def y_with_direction(y, direction)
        return y + (direction == 2 ? 1 : direction == 8 ? -1 : 0)
      end
     
      def events_xy(x, y)
        result = []
        for event in $game_map.events.values
          result.push(event) if event.pos?(x, y)
        end
        return result
      end
     
      def refresh
        if @map_id > 0
          for event in @events.values
            event.refresh
          end
          for common_event in @common_events.values
            common_event.refresh
          end
        end
        @need_refresh = false
      end
     
      alias passabile passable?
      def passable?(x ,y, d, self_event = nil)
        for i in [2, 1, 0]
          tile_id = data[x, y, i]
          if tile_id == nil
            return false unless $game_player.veicolo_utilizzato?
            return true
          end
          end
          passabile(x, y, d, self_event = nil)
        end
     
      def v_passable?(x, y, d)
        new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
        new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
        for event in $game_map.events.values
          if event.x == new_x and event.y == new_y and not $game_player.in_airship?
            unless event.through
              if self != $game_player
                return false
              end
              if event.character_name != ""
                return false
              end
            end
          end
        end
        if $game_player.x == new_x and $game_player.y == new_y and not $game_player.in_airship?
          unless $game_player.through
            if @character_name != ""
              return false
            end
          end
        end
        unless $game_map.valid?(new_x, new_y)
          return false
        end
        if @through
          return true
        end
     
        for event in @vehicles
           unless $game_map.valid?(new_x, new_y)
          return false
        end
          if event.x == new_x and event.y == new_y and event.map_id == $game_map.map_id and not $game_player.in_airship?
            unless event.through
              if self != $game_player
                return false
              end
              if event.character_name != ""
                return false
              end
            end
          end
        end
        if $game_player.x == new_x and $game_player.y == new_y
          unless $game_player.through
            if @character_name != ""
              return false
            end
          end
        end
     
        if $game_player.vehicle_type == 0
          if CANOA.include?(terrain_tag(new_x,new_y))
            return true
          end
        end
        if $game_player.vehicle_type == 1
          if BARCA.include?(terrain_tag(new_x,new_y))
            return true
          end
        end
        if $game_player.in_airship?
          if AEREO.include?(terrain_tag(new_x,new_y))
            return true
          end
        end
        unless $game_map.passable?(x, y, d, self)
          return false
        end
     
        unless $game_map.passable?(new_x, new_y, 10 - d)
          return false
        end
        return true
      end
     
     def boat_passable?(x, y)
        return v_passable?(x, y, $game_player.direction)
      end
     
      def ship_passable?(x, y)
        return v_passable?(x, y, $game_player.direction) 
      end
     
      def airship_passable?(x, y)
        return v_passable?(x, y, $game_player.direction) 
      end
     
      def airship_land_ok?(x, y)
        return true if passable?(x, y, $game_player.direction) 
      end
     
      alias map_update update
      def update
        map_update
        update_vehicles
      end
     
      def update_scroll
        if @scroll_rest > 0                 # If scrolling
          distance = 2 ** @scroll_speed     # Convert to distance
          case @scroll_direction
          when 2  # Down
            scroll_down(distance)
          when 4  # Left
            scroll_left(distance)
          when 6  # Right
            scroll_right(distance)
          when 8  # Up
            scroll_up(distance)
          end
          @scroll_rest -= distance          # Subtract scrolled distance
        end
      end
     
      def update_vehicles
        for vehicle in @vehicles
          vehicle.update
        end
      end
    end
    

     


    ed infine:
    GAME CHARACTER / SPRITESET MAP:

     

    class Game_Character
      def map_passable?(x, y)
        return $game_map.passable?(x, y)
      end
      def pos?(x, y)
        return (@x == x and @y == y)
      end
      def pos_nt?(x, y)
        return (pos?(x, y) and not @through)
      end
      def passabile?(x, y, d)
        new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
        new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
        unless $game_map.valid?(new_x, new_y)
          return false
        end
        if @through
          return true
        end
        unless $game_map.passable?(x, y, d, self)
          return false
        end
        unless $game_map.passable?(new_x, new_y, 10 - d)
          return false unless $game_player.veicolo_utilizzato?
        end
        for event in $game_map.events.values
          if event.x == new_x and event.y == new_y
           if event.character_name == ""
                return true
              end
            unless event.through
              if self != $game_player
                return false
              end
              if event.character_name != ""
                return false
              end
            end
          end
        end
        if $game_player.x == new_x and $game_player.y == new_y
          unless $game_player.through
            if @character_name != ""
              return false
            end
          end
        end
        return true
      end
      end
     
    class Spriteset_Map
      alias shadow_initialize initialize
      def initialize
        shadow_initialize
        for vehicle in $game_map.vehicles
          sprite = Sprite_Character.new(@viewport1, vehicle)
          @character_sprites.push(sprite)
        end
        @shadow_sprite = Sprite.new
        @shadow_sprite.bitmap = RPG::Cache.character("Shadow",1)
        @shadow_sprite.ox = @shadow_sprite.bitmap.width / 2
        @shadow_sprite.oy = @shadow_sprite.bitmap.height
        @shadow_sprite.z = 180
      end
     
     
      alias shadow_dispose dispose
      def dispose
      shadow_dispose
      @shadow_sprite.dispose
    end
     
      alias shadow_update update
      def update
        shadow_update
         airship = $game_map.airship
         if @shadow_sprite != nil
        @shadow_sprite.x = airship.screen_x
        @shadow_sprite.y = airship.screen_y + airship.altitude
        @shadow_sprite.opacity = airship.altitude * 8
        @shadow_sprite.update
        end
      end
    end
    

     

     

    Link della demo scaricabilissima.. :cool:
    http://www.mediafire...001i0o9d44mm4r1

    Qualche anteprima:

     

    http://i63.tinypic.com/2sakygn.jpg

    http://i63.tinypic.com/2zroqyf.jpg

    http://i67.tinypic.com/kec83m.jpg



    ECCO LO SCRIPT GAME_VEHICLE ;)

     

    
    #--------------------------Vehicle System----------------------------------
    #Script adattato da Vx a Xp da Valentino Avon. Questa conversione è stata molto 
    #lunga, per favore creditatemi se usate lo script ;)
    #
    #--------------------------Configurazione----------------------------------
    BGM_AEREO = "Airship" #bgm riprodotti usando i veicoli
    BGM_BARCA = "Ship"
    BGM_CANOA = "Ship"
    MAPPA_AEREO = 1 #mappe iniziali dei veicoli
    MAPPA_BARCA = 1
    MAPPA_CANOA = 1
    X_Y_CANOA_INIZ = [9,9] #cordinate iniziali dei veicoli [X,Y]
    X_Y_BARCA_INIZ = [17,14]
    X_Y_AEREO_INIZ = [30,6]
    CANOA = [2] #terrain tag dove la canoa può passare (fiumi)
    BARCA = [1] #terrain tag dove la barca può passare (acqua)
    AEREO = [0,1,2,3,4,5,6,7] #terrain tag dove l'aereo può passare (ovunque)
    AEREO_ATT = [0,3,4,5,6,7] #terrain tag dove l'aereo può atterrare (comunque l'aereo non può atterrare dove non si può passare)
    #------------------------FINE configurazione--------------------------------
    class Game_Vehicle < Game_Character  
      MAX_ALTITUDE = 32                       # the airship flies at
      attr_reader   :type                     # vehicle type (0..2)
      attr_reader   :altitude                 # altitude (for the airship)
      attr_reader   :driving                  # driving flag
      attr_accessor :character_name
      attr_accessor :bgm
      attr_accessor :map_id
      def initialize(type)
        super()
        @type = type
        @altitude = 0
        @driving = false
        @direction = 4
        @walk_anime = false
        @step_anime = false
        load_system_settings
      end
     
      def crea_veicolo
        case @type
        when 0
          @character_name = "Canoa"
          @map_id = MAPPA_CANOA
          @x = X_Y_CANOA_INIZ[0]
          @y = X_Y_CANOA_INIZ[1]
          @bgm = BGM_CANOA
        when 1
          @character_name = "Barca"
          @map_id = MAPPA_BARCA
          @x = X_Y_BARCA_INIZ[0]
          @y = X_Y_BARCA_INIZ[1]
          @bgm = BGM_BARCA
        when 2
          @character_name = "Aereo"
          @map_id = MAPPA_AEREO
          @x = X_Y_AEREO_INIZ[0]
          @y = X_Y_AEREO_INIZ[1]
          @bgm = BGM_AEREO
        end
      end
     
      def load_system_settings
        case @type
        when 0;  sys_vehicle = self
        when 1;  sys_vehicle =  self
        when 2;  sys_vehicle = self
        else;    sys_vehicle = nil
        end
        if sys_vehicle != nil
          sys_vehicle.crea_veicolo
          @character_index = @type
        end
      end
     
      def refresh
        if @driving
          @map_id = $game_map.map_id
          sync_with_player
        elsif @map_id == $game_map.map_id
          moveto(@x, @y)
        end
        case @type
        when 0;
          @priority_type = 1
          @move_speed = 4
        when 1;
          @priority_type = 1
          @move_speed = 5
        when 2;
          @priority_type = @driving ? 2 : 0
          @move_speed = 6
        end
        @walk_anime = @driving
        @step_anime = @driving
      end
     
      def set_location(map_id, x, y)
        @map_id = map_id
        @x = x
        @y = y
        refresh
      end
     
      def pos?(x, y)
        return (@map_id == $game_map.map_id and super(x, y))
      end
     
      def transparent
        return (@map_id != $game_map.map_id or super)
      end
     
      def get_on
        @driving = true
        @walk_anime = true
        @step_anime = true
        if @type == 2               # If airship
          @priority_type = 2        # Change priority to "Above Characters"
        end
        Audio.bgm_play("Audio/Bgm/"[email protected]<script data-cfhash='f9e31' type="text/javascript">/*  */</script>,100,100)               # Start BGM
      end
     
      def get_off
        @driving = false
        @walk_anime = false
        @step_anime = false
        @direction = $game_player.direction
      end
     
      def sync_with_player
        @x = $game_player.x
        @y = $game_player.y
        @real_x = $game_player.real_x
        @real_y = $game_player.real_y
        @direction = $game_player.direction
        bush_depth
      end
     
      def speed
        return @move_speed
      end
     
      def screen_y
        return super - altitude
      end
     
      def movable?
        return false if (@type == 2 and @altitude < MAX_ALTITUDE)
        return (not moving?)
      end
     
      def update
        super
        if @type == 2               # If airship
          if @driving
            if @altitude < MAX_ALTITUDE
              @altitude += 1        # Increase altitude
            end
          elsif @altitude > 0
            @altitude -= 1          # Decrease altitude
            if @altitude == 0
              @priority_type = 0 # Return priority to "Below Characters"
            end
          end
        end
      end
    end
    

     


    ahah mi sono accorto solo ora che mi ero scordato di inserire lo script principale xD (che testa che ho)
    Guardian, che ne pensi? Io credo sia meglio riportare tutto al primo post di Valentino, ti va?

     

  6. Che ore sono..? Non lo so, ma senza ombra di dubbio questo script ve lo dirà. In game.

     

    //=============================================================================
    // Timer Enhancements 
    // Author gameus
    // Version 1.0
    //-----------------------------------------------------------------------------
    // Intro:
    // Adds a few options to change up the timer. Adds the option to change
    // position, manually or automatically, change the color, text size, and even
    // add a background image.
    //
    // Instructions:
    // Place in your plugins folder and save as 'TimerEnhancements.js'
    // Configure the options as you please.
    //
    // Credits:
    // gameus ~ For creating it.
    //=============================================================================
    
    /*:
     * @plugindesc Changes position and appearance of the Timer
     * @author gameus
     *
     * @param Auto Position
     * @desc Auto position the timer. 0: Manual, 1: Upper Left, 2: Upper Right, 3: Lower Left, 4: Lower Right
     * @default 0
     *
     * @param Position X
     * @desc X coordinate for the timer.
     * @default 0
     *
     * @param Position Y
     * @desc Y Coordinate for the timer.
     * @default 0
     * 
     * @param Text Size
     * @desc Defines the size of the text
     * @default 32
     *
     * @param Text Color
     * @desc Defines the text color in RGB. e.g. 255,128,255
     * @default 255, 255, 255
     *
     * @param Background
     * @desc If false won't draw a background, otherwise, set it to the name of the picture.
     * @default false
     *
     * @param Background Transparency
     * @desc Background image's transparency. 0-255
     * @default 255
     *
     * @help This plugin does not provide plugin commands.
     */
     
    var GameusScripts = GameusScripts || {};
    var GameusScripts['TimerEnhancements'] = 1.0; 
     
    (function() {
    	
    	var parameters = PluginManager.parameters('TimerEnhancements');
    	
    	var gameus_Timer_Enhancements_createBitmap   = Sprite_Timer.prototype.createBitmap;
    	var gameus_Timer_Enhancements_updatePosition = Sprite_Timer.prototype.updatePosition;
    	var gameus_Timer_Enhancements_redraw         = Sprite_Timer.prototype.redraw;
    	 
    	function toHex(n) {
    		n = parseInt(n,10);
    		if (isNaN(n)) return "00";
    		n = Math.max(0,Math.min(n,255));
    		return "0123456789ABCDEF".charAt((n-n%16)/16)
    			+ "0123456789ABCDEF".charAt(n%16);
    	};
    	
    	function rgbToHex(rgb) {
    		nrgb = rgb.replace(/\s+/g, '');
    		nrgb = nrgb.split(',');
    		return ("#" + toHex(nrgb[0]) + toHex(nrgb[1]) + toHex(nrgb[2]));
    	};
    	
    	Sprite_Timer.prototype.createBitmap = function() {
    		gameus_Timer_Enhancements_createBitmap.call(this);
    		this.backgroundImage = false;
    		if (parameters['Background'].toLowerCase() !== "false") {
    			var bmp = ImageManager.loadPicture(parameters['Background']);
    			bmp.addLoadListener(this.onLoadBackground.bind(this, bmp));
    		}
    		this.bitmap.fontSize = parameters['Text Size'];
    	};
    	
    	Sprite_Timer.prototype.onLoadBackground = function(bmp) {
    		this.bitmap = new Bitmap(bmp.width, bmp.height);
    		this.backgroundImage = bmp;
    	};
    	
    	Sprite_Timer.prototype.updatePosition = function() {
    		gameus_Timer_Enhancements_updatePosition.call(this);
    		var newX = 0;
    		var newY = 0;
    		switch (parameters['Auto Position'].toLowerCase()) {
    			case "0":
    				newX = Number(parameters['Position X']);
    				newY = Number(parameters['Position Y']);
    				break;
    			case "2":
    				newX = Graphics.width - this.bitmap.width;
    				break;
    			case "3":
    				newY = Graphics.height - this.bitmap.height;
    				break;
    			case "4":
    				newX = Graphics.width - this.bitmap.width;
    				newY = Graphics.height - this.bitmap.height;
    				break;
    		}
    		this.x = newX;
    		this.y = newY;
    	};
    	
    	Sprite_Timer.prototype.redraw = function() {
    		gameus_Timer_Enhancements_redraw.call(this);
    		var text = this.timerText();
    		var width = this.bitmap.width;
    		var height = this.bitmap.height;
    		var backWidth = this.backgroundImage.width;
    		var backHeight = this.backgroundImage.height;
    		this.bitmap.clear();
    		this.bitmap.paintOpacity = Number(parameters['Background Transparency']);
    		if (this.backgroundImage !== false)
    			this.bitmap.blt(this.backgroundImage, 0, 0, backWidth, backHeight, 0, 0);
    		this.bitmap.paintOpacity = 255;
    		this.bitmap.textColor = rgbToHex(parameters['Text Color']);
    		this.bitmap.drawText(text, 0, 0, width, height, 'center');
    	 };
    
    })();
    

     

     

    Un'altra creazione di Gameaus, spero che vi possa piacere. Con quest'addon potrete personalizzare
    la modalità di visualizzazione del tempo. Cambiandone il colore e quant'altro.

    Spero possa servirvi. e niente. ciao.. :cool:

  7. Olà gente dunque mi sono imbattuto in un tale che ha generato questo simpatico script per RMMV
    E' un Add-On :

     

    In sostanza lo script permette di utilizzare infiniti self switches in qualsiasi evento.

    Ma troverete maggiori delucidazioni all'interno dello script.

     

    Script:


    //=============================================================================
    // More Self Switches
    // Author gameus
    // Version 1.0
    //-----------------------------------------------------------------------------
    // Intro:
    // Allows you to use infinite self switches in any event. 
    //
    // Instructions:
    // Place in your plugins folder and save as 'MoreSelfSwitches.js'
    //
    // To create a custom self switch, you must first check the self switch box
    // on any page. Then add a comment at the top of the page and follow the format
    // 
    //    switch:custom_switch_name
    //
    // After that, use the Plugin Command and call 
    //
    //    SelfSwitch custom_switch_name true/false
    //
    // Thus allowing as many self switches as you want, with whatever name!
    //
    // Credits:
    // gameus ~ For creating it.
    //=============================================================================
    
    /*:
     * @plugindesc Allows for infinite self switches in events.
     * @author gameus
     *
     * @help 
     * Instructions:
     * Place in your plugins folder and save as 'MoreSelfSwitches.js'
     * 
     * To create a custom self switch, you must first check the self switch box
     * on any page. Then add a comment at the top of the page and follow the format
     * 
     *    switch:custom_switch_name
     * 
     * After that, use the Plugin Command and call 
     * 
     *    SelfSwitch custom_switch_name true/false
     * 
     * Thus allowing as many self switches as you want, with whatever name!
     */
    
    var GameusScripts = GameusScripts || {};
    GameusScripts['MoreSelfSwitches'] = 1.0;  
     
    (function() {
    	
    	var gameus_SelfSwitch_initialize     = Game_Event.prototype.initialize;
    	var gameus_SelfSwitch_plugin_command = Game_Interpreter.prototype.pluginCommand;
    	
    	Game_Interpreter.prototype.pluginCommand = function(command, args) {
            gameus_SelfSwitch_plugin_command.call(this, command, args);
    		if (command.toLowerCase() == "selfswitch") {
    			var _switch = args[0];
    			var _state  = Boolean(args[1]);
    			var _key    = [this._mapId, this._eventId, _switch];
    			$gameSelfSwitches.setValue(_key, _state);
    		}
        };
    	
    	Game_Event.prototype.initialize = function(mapId, eventId) {
    		gameus_SelfSwitch_initialize.call(this, mapId, eventId);
    		var pages = this.event().pages;
    		for (i = 0; i < pages.length; i += 1) {
    			var page = pages[i];
    			for (j = 0; j < page.list.length; j += 1) {
    				var command = page.list[j];
    				if (command.code === 408 || command.code === 108)
    					this.checkCustomSwitch(page, command.parameters[0]);
    			}
    		}
    	};
    	
    	Game_Event.prototype.checkCustomSwitch = function(page, code) {
    		var args = code.split(":");
    		if (args[0] !== null && args[0].toLowerCase() == "switch" && args[1] !== null) {
    			page.conditions.selfSwitchCh = args[1];
    			page.conditions.selfSwitchValid = true;
    		}
    	};
    	
    })();
    

     


    Se ho capito bene:

    1) create un evento chesso di 6 pagine

    in queste sei pagine inserite (esempio) sei testi diversi dall'opzione di default textbox... tipo:
    2) Pag1: Lo sai che

    Pag2: Lomax
    Pag3: è un
    Pag4: gran

    Pag5: figo
    Pag6: pazzesco!!

    3)

    benissimo appena sotto i testi inserite i vari Plugin Command:
    inserendo questa dicitura::

    4) Pag1
    Text: "Lo sai che"
    Plugin Command: SelfSwitch 1 true

    Pag2

    Text: "Lomax"
    Plugin Command: SelfSwitch 2 true

    Pag3

    Text: "è un"
    Plugin Command: SelfSwitch 3 true

    Pag4

    Text: "gran"
    Plugin Command: SelfSwitch 4 true

    Pag5

    Text: "figo"
    Plugin Command: SelfSwitch 5 true

    Pag6

    Text: "pazzesco"

    5)

    una cosa importantissima dalla Pag2 fino a (in questo caso) Pag6
    settate in condizioni (appena sotto il nome dell'evento) l'opzione selfswitch

    ad esempio il primo A


    Spero di essere stato comprensibile e di aver reso felice qualcuno condividendo tal cosa.
    Lasciate perdere il testo di esempio (è megalomania..) vabbe, un saluto e creditate no me,

    ma Gameaus



  8. Riporto su per via di un errore di sintassi/dimenticanza/distrazione, poca roba di cui però i niubbi possono andre in crisi:

    In Vehicle_System_P4 verso la riga 71 c'è un end posizionato male che potrebbe causare finestrelle che segnalano errori.

    basta metterlo al suo poso ovvero in chiusura del suo rispettivo def dispose e tutto si aggiusta.

     

    Per gli amanti del "Faccio Io che viene meglio" tipo quelli che sistemano gli script disordinati, che chiudono i metodi e le classi con le cornicette verdi per i commenti ecc..

    e magari pensano di voler rinominare lo script in "Game_Vehicle" come nel Vx, Vx-Ace, Mv e magari inserire questo vostro mattone rilegando le quattro pagine in un unico script magari incastrandolo fra i vari Game_System, Game_Player ecc beh...
    Sappiate che non sarà una buona idea.

    Una volta richiamato, vi appariranno degli errori (in pratica non vi leggeranno gli alias "shadow_dispose" e "shadow_update".
    Quindi consiglio di lasciare stare tutto appena prima del Main sotto tutti gli script di default. Potete rilegare il tutto in un unico script ma
    basta che lo inseriate sotto tutti gli script standard ma prima del Main dell'editor.

    Detto questo..ho condiviso un'altra delle mie genialate, tratte da.i pasticci di Lomax (si impara sempre qualcosa xD )

     

    (

  9. Integrist aimè è una rete aziendale che ci fornisce internet anche a casa, ma .. non la consiglierei a nessuno.
    Ultimamente stiamo avendo problemi con la connessione dati. Però chiedendo fra le mie conoscenze, anche alcuni miei amici stanno riscontrando dei problemi in questione di validità dei certificati. Se è comune non dovrebbe essere questione della mia rete internet.

    sto attendendo la fibra. E' indubiamente migliore e sicura.
    ------------------------------------

    Edit:

    Ho letto. ho svolto tutti ciò che c'era da svolgere e ho riscontrato che queste dll non risondono:

    gpkcsp.dll

    sccbase.dll

    crypdlg.dll

    shdocvw.dll

    mshtml.dll

    brawseui.dll

    jscript.dll

    aleaut32.dll

    actxprxy.dll

     

    Queste citate richiamandole con il comando esegui non fungono.
    Come mi occorre procedere?

  10. Raga è da qualche giorno che ho seri problemi con internet, a quanto pare non solo io nella mia zona. In sostanza non riesco più ad accedere ai siti che hanno suffisso htts. tipo ad esempio google, oppure facebook, oppure ancora youtube e a tanti altri.

    Questo da terminale del pc, invece dal telefonino sembrerebbe di si. tutto è ok.

    Mi chiedevo se a voi succede la stessa cosa..
    E come si risolve.

    Adesso uso bing come motore di ricerca e soltanto così mi permette di accedere a qualche sito, come questo e veramente ad altri pochissimi.

    Documentandomi è già successo in passato. Solo che il difetto era solo per internet esplorer. Ma io in questo terminale uso firefox e nell'altro chrome eppure in entrambi ho lo stesso problema.

    Fatemi sapere se potete.


    Grazie raga

  11. Grazie per le info.
    Una volta istallato il programma, vedevo la schermata tutta bianca, allora seguendo il consiglio di (non mi ricordo come si chiama questo utente) comunque colui che ha realizzato la recensione. ho messo la opengl32.dll. Fate conto che attualmente uso un Windows 7 a 32 bit come OS.

    Ma se disinstallo l'RPGMV e lo reinstallo, non perdo la licenza provvisoria dei 20 giorni, vero?

    . . .

    D:qualcuno e riuscito a far partire il prohramma su windows xp? O qualcuno sa se e possibile che riesca a partire su xp
    (Scusate se scrivo la domanda cosi ma sul telefono nn mi fa cambiare il colore)

    E' più semplice che tu aggiorni il tuo OS al seven. Perché comunque è più facile fare girare i programmi del xp sul seven che viceversa.
    Guarda qui ho provato a cercare..
    https://www.google.it/webhp?sourceid=chrome-instant&ion=1&espv=2&es_th=1&ie=UTF-8#q=come%20visualizzare%20programmi%20per%20seven%20su%20windows%20xp&es_th=1
    e non mi da nulla.
    Mi spiace, ti capisco comunque anche io reputo l'xp un buon sistema operativo per fare determinate operazioni. ma aimè bisogna avere almeno un terminale aggiornato.

  12. Salve ragazzi avrei una domanda. Premesso che sto usando ancora il trial.
    Nel database non riesco a spulciare le altre voci, cioè a parte la voce Attori, tutte le altre non sono selezionabili.
    Mi devo attaccare al tram, aspettando di comprare il tool? Oppure
    è una qualche .dll che non ho istallato che non mi permette di usare la demo a pieno?



    (*Fa che non sia la prima, fa che non sia la prima..*)

  13. Si perché era solo un voler comunicare al mondo che per me l'Mv è paragonabile ad una stra****pazzesca!
    Bu non lo so sarà per il generatore di char..o altre chicche. sto tool mi fa simpatia e dovevo comunicarlo al mondo.
    Forse sono stato un po impulsivo?! O.o Tipo che l'ho provato sono corso alla finestra e....subito ho desiderato di
    urlare al creato che si sto tooletto mi gasa :|

    Poi sicuramente oddio avrà i suoi difetti ma questo lo si vedrà a lunga corsa. Qualche contro rimanendo sobri..
    grafica cubettosa colori sparaflesciosi, c'era un difetto di Variabili Globali ma che è stato già risolto. Ah si e la pesantezza.
    Ma comunque tutti questi chiamiamoli difetti, sono risolvibili tramite nuove implementazioni di risorse grafiche.
    Per la pesantezza ci sono dei trucchetti per ridurla. Per esempio ho sentito che per i files sonori, basta usare un formato più leggero.
    Per le grafiche ci sono un sacco di escamotage per garantire una buona scena, diminuendo il numero di sprite presenti in essa.
    Quindi indubbiamente trovo molto molto molto questo tool forse il giusto compromesso fra un editor intuitivo e quindi facile da usare e
    al tempo stesso utile e professionale. O comunque che inizia ad istradare l'aspirante makeratore verso sistemi e linguaggi più seri.
    Almeno questo è il mio parere.
    Detto ciò torno a dilettarmi con il suddetto xD

  14. Lo so Lo so mi sento euforico a livello +99999 !!
    Ho appena scaricato la versione trial del nostro nuovo tooletto. Fra qualche settimana ho intenzione di acquistarlo assolutamente. Alcuni di voi già sanno che io impazzisco per XP perché ho provato il Vx-Ace ma non mi ha entusiasmato tanto, dal punto di vista di mapping. Attenzione non fraintendetemi ha molte potenzialità indiscusse il Vx-Ace solo che diciamo che se devo paragonarlo ad una ragazza potrei dire...si carina ma non è il mio tipo!
    Invece questo nuovo RPGMV è una stra****pazzesca!!! xD scusate il gergo e lo sfogo xP
    . . .
    Ho un tempo limitato di 20 giorni.
    In questi 20 giorni devo assolutamente spulciarmelo tutto.
    Così a prima vista lo reputo più organizzato dei suoi predecessori. Certo monta grafiche Vx in alcune categorie Migliorate come i png con i faces caratterizzati e simpaticissimi characters dalle espressioni buffe.

    Ricordate qualche mio character da me pixellato in passato tentai pure io di dare espressività ai pupini che popolavano i miei screen presi dal mio game. Be mi fa piacere che abbiano inserito nel tool questa possibilità già di default.

    Di fatti la genialata è stata quella di inserire un generatore di charaset che implementasse anche i faces e i battlers in un'unica fase di assemblaggio. Metto un Like in questo! (8

    Ho provato a fare un piccolo mapping di base e mi diverte..certo la grafica è dai colori sparaflesciosi come nel Vx ma quella è poca roba..nel suo insieme non mi dispiace. Che dire.. penso proprio che diverrò poligamo, amerò sia la mia vecchia RMXP che questa nuova giovincella RPGMV xD

    Scaricatelo provatelo vi entusiasmerete ve lo garantisco! :D

  15. Ciao :)
    Che tipo di dinosauri hai bisogno ? Erbivori? Carnivori? Acquatici? Volatili? Nel web ci sono un'infinità di modelli! :D
    https://www.google.it/search?q=immagini&espv=2&biw=1422&bih=663&site=webhp&source=lnms&tbm=isch&sa=X&ved=0CAYQ_AUoAWoVChMIxI6s_PjfyAIVRfRyCh20tQIZ#tbm=isch&q=nomi+dinosauri&imgrc=DM30QdsYgnGg5M%3A

    Se non hai ancora risolto, puoi scegliere il modello che più ti piace ed io se posso proverò a cimentarmi nell'impresa di pixellarne uno :D
    Facci sapere :)

  16. Avete presente questo giovine..?
    5b0JI6.jpg
    Faccia sveglia..è vve?!
    Bene da questa immagine ho estrapolato il berretto, l'ho modificato
    un po, l'ho riadattato, ho fatto i miei pastrocchi ed ecco il risultato..
    x3s644.png
    (Ma non è il risultato finale)
    Non sapendo se a te andava bene già così oppure lo volessi
    perfettamente fedele al chara..
    tVtC3j.png
    Spero che il mio intervento ti sia stato utile. ciao :)

  17. Ciao ho letto la tua richiesta giorni fa e non avendo materiale a riguardo l'ho cestinata.
    Poi oggi mi sono imbattuto in questa immagine:
    hTrBIx.png
    Così mi sono ricordato della tua richiesta e ho estrapolato la campana dall'immagine.
    SioHk5.png
    è in queste dimensioni mastodontiche così tu puoi modificarla come meglio credi.
    Rimpicciolendola e ridimensionandola a tuo piacimento.
    Io ad esempio l'ho resa in queste proporzioni:
    WTkgOQ.png
    Poi non sapendomi orientare (non conoscendo le tue richieste precise) l'ho lasciata grezza.
    Spero ti sia utile. :)

  18. Scusate l'assenza ma tra il lavoro e le altre cose da fare, ho trascurato un po questa iniziativa. Ma rieccomi qui, continuiamo seguendo l'ordine dello script editor:
    Game_SelfSwitches

     

    # ==============================================================================
    # ** Game_SelfSwitches
    # ------------------------------------------------------------------------------
    # Questa classe gestisce gli interruttori automatici. 
    # È una sezione che incorpora la classe " Hash ". 
    # ------------------------------------------------------------------------------
    # la variabile di riferimento è " $ game_self_switches ".
    # ==============================================================================
    
    class Game_SelfSwitches
      #--------------------------------------------------------------------------
      # * Inizializzazione oggetti
      #--------------------------------------------------------------------------
      def initialize
        @data = {}
      end
      #--------------------------------------------------------------------------
      # * Metodo per ottenere l'interruttore automatico
      #     chiave : key  
      #--------------------------------------------------------------------------
      def [](key)
        return @data[key] == true ? true : false
      end
      #--------------------------------------------------------------------------
      # * Metodo per selezionare l'interruttore automatico e conferirgli un valore
      #     chiave  : key  
      #     valore  : ON (true) / OFF (false)
      #--------------------------------------------------------------------------
      def []=(key, value)
        @data[key] = value
      end
    end
    
    

     


    Adesso proveremo ad analizzare questa classe:


    Cos'è un Interruttore Automatico?
    Un interruttore, in rpg maker, è un qualcosa che permette di attivare o disattivare alcuni blocchi di azioni che noi intendiamo far eseguire al nostro personaggio oppure agli eventi presenti in mappa.
    Io penso che questo script sia molto intuitivo da comprendere e non necessita di molte spiegazioni.
    Ma se desiderate conoscere di preciso, l'utilizzo che può avere uno switch, consiglio, se siete neofiti, di impostarli tramite evento.
    Ecco un tutorial apposito (è per Vx-Ace, ma la spiegazione è valida anche per rmxp)



    Spero vi sia tutto ben chiaro :)
    Ora continuiamo con le nostre traduzioni
    Ecco la volta di Game_Screen:


    #==============================================================================
    # ** Game_Screen
    #------------------------------------------------------------------------------
    #  Questa classe gestisce dati di manutenzione schermo, come il cambiamento 
    #  della tonalità dEL colore, l'effetto bagliore, ecc 
    #------------------------------------------------------------------------------
    # la variabile di riferimento è  "$ game_screen".
    #==============================================================================
    
    class Game_Screen
      #--------------------------------------------------------------------------
      # * Variabili d'istanza pubblica
      #--------------------------------------------------------------------------
      attr_reader   :tone                     # effetto tonalità del colore
      attr_reader   :flash_color              # effetto bagliore del colore
      attr_reader   :shake                    # effetto tremolo
      attr_reader   :pictures                 # immagini
      attr_reader   :weather_type             # tipo di clima meteorologico
      attr_reader   :weather_max              # numero massimo di immagini meteo
      #--------------------------------------------------------------------------
      # * Metodo di inizializzazione
      #--------------------------------------------------------------------------
      # Conferisce i valori di partenza alle variabili d'istanza appena create. 
      #--------------------------------------------------------------------------
      def initialize
        @tone = Tone.new(0, 0, 0, 0)
        @tone_target = Tone.new(0, 0, 0, 0)
        @tone_duration = 0
        @flash_color = Color.new(0, 0, 0, 0)
        @flash_duration = 0
        @shake_power = 0
        @shake_speed = 0
        @shake_duration = 0
        @shake_direction = 1
        @shake = 0
        @pictures = [nil]
        for i in 1..100
          @pictures.push(Game_Picture.new(i))
        end
        @weather_type = 0
        @weather_max = 0.0
        @weather_type_target = 0
        @weather_max_target = 0.0
        @weather_duration = 0
      end
      #--------------------------------------------------------------------------
      # * Metodo per definire l'inizio del cambio di tonalità del colore
      #     tone : effetto tonalità colore
      #     duration : tempo di durata del cambiamento di tonalità
      #--------------------------------------------------------------------------
      def start_tone_change(tone, duration)
        @tone_target = tone.clone
        @tone_duration = duration
        if @tone_duration == 0
          @tone = @tone_target.clone
        end
      end
      #--------------------------------------------------------------------------
      # * Metodo per definire l'inizio del inscenare il bagliore del colore
      #     color : colore del bagliore
      #     duration : durata dell'avvenimento
      #--------------------------------------------------------------------------
      def start_flash(color, duration)
        @flash_color = color.clone
        @flash_duration = duration
      end
      #--------------------------------------------------------------------------
      # * Metodo per definire l'effetto tremolio dello schermo
      #     power : Intensità dell'effeto tremolo
      #     speed : velocità
      #     duration : tempo di durata dell'effetto
      #--------------------------------------------------------------------------
      def start_shake(power, speed, duration)
        @shake_power = power
        @shake_speed = speed
        @shake_duration = duration
      end
      #--------------------------------------------------------------------------
      # * Seleziona il tipo di condizione meteorologica
      #     type : tipo
      #     power : intensità
      #     duration : tempo di durata della condizione meteorologica
      #--------------------------------------------------------------------------
      def weather(type, power, duration)
        @weather_type_target = type
        if @weather_type_target != 0
          @weather_type = @weather_type_target
        end
        if @weather_type_target == 0
          @weather_max_target = 0.0
        else
          @weather_max_target = (power + 1) * 4.0
        end
        @weather_duration = duration
        if @weather_duration == 0
          @weather_type = @weather_type_target
          @weather_max = @weather_max_target
        end
      end
      #--------------------------------------------------------------------------
      # * Aggiornamento dei singoli Frame
      #--------------------------------------------------------------------------
      def update
        if @tone_duration >= 1
          d = @tone_duration
          @tone.red = (@tone.red * (d - 1) + @tone_target.red) / d
          @tone.green = (@tone.green * (d - 1) + @tone_target.green) / d
          @tone.blue = (@tone.blue * (d - 1) + @tone_target.blue) / d
          @tone.gray = (@tone.gray * (d - 1) + @tone_target.gray) / d
          @tone_duration -= 1
        end
        if @flash_duration >= 1
          d = @flash_duration
          @flash_color.alpha = @flash_color.alpha * (d - 1) / d
          @flash_duration -= 1
        end
        if @shake_duration >= 1 or @shake != 0
          delta = (@shake_power * @shake_speed * @shake_direction) / 10.0
          if @shake_duration <= 1 and @shake * (@shake + delta) < 0
            @shake = 0
          else
            @shake += delta
          end
          if @shake > @shake_power * 2
            @shake_direction = -1
          end
          if @shake < - @shake_power * 2
            @shake_direction = 1
          end
          if @shake_duration >= 1
            @shake_duration -= 1
          end
        end
        if @weather_duration >= 1
          d = @weather_duration
          @weather_max = (@weather_max * (d - 1) + @weather_max_target) / d
          @weather_duration -= 1
          if @weather_duration == 0
            @weather_type = @weather_type_target
          end
        end
        if $game_temp.in_battle
          for i in 51..100
            @pictures[i].update
          end
        else
          for i in 1..50
            @pictures[i].update
          end
        end
      end
    end
    
    

     


    Continuiamo..
    Game_Picture


    #==============================================================================
    # ** Game_Picture
    #------------------------------------------------------------------------------
    #  Questa classe gestisce l'immagine. 
    #  E 'utilizzato all'interno della classe Game_Screen
    #  ($game_screen).
    #==============================================================================
    
    class Game_Picture
      #--------------------------------------------------------------------------
      # * Vengono create le corrispettive variabili d'istanza pubblica
      #--------------------------------------------------------------------------
      attr_reader   :number                   # numero di immagini
      attr_reader   :name                     # nome del file
      attr_reader   :origin                   # Punto di origine
      attr_reader   :x                        # coordinata-x
      attr_reader   :y                        # coordinata-y
      attr_reader   :zoom_x                   # livello di zoom in direzione-x
      attr_reader   :zoom_y                   # livello di zoom in direzione-y
      attr_reader   :opacity                  # livello di opacità
      attr_reader   :blend_type               # metodo di fusione
      attr_reader   :tone                     # tonalità del colore
      attr_reader   :angle                    # angolo di rotazione
      #--------------------------------------------------------------------------
      # * Metodo per assegnare i valori iniziali alle variabili appena create
      #     number : numero di immagini
      #--------------------------------------------------------------------------
      def initialize(number)
        @number = number
        @name = ""
        @origin = 0
        @x = 0.0
        @y = 0.0
        @zoom_x = 100.0
        @zoom_y = 100.0
        @opacity = 255.0
        @blend_type = 1
        @duration = 0
        @target_x = @x
        @target_y = @y
        @target_zoom_x = @zoom_x
        @target_zoom_y = @zoom_y
        @target_opacity = @opacity
        @tone = Tone.new(0, 0, 0, 0)
        @tone_target = Tone.new(0, 0, 0, 0)
        @tone_duration = 0
        @angle = 0
        @rotate_speed = 0
      end
      #--------------------------------------------------------------------------
      # * Metodo che permette di mostrare la figura
      #     name       : nome del file
      #     origin     : punto di inizio
      #     x          : coordinata-x
      #     y          : coordinata-y
      #     zoom_x     : livello di zoom in direzione-x
      #     zoom_y     : livello di zoom in direzione-y
      #     opacity    : livello di opacità
      #     blend_type : metodo  di fusione
      #--------------------------------------------------------------------------
      def show(name, origin, x, y, zoom_x, zoom_y, opacity, blend_type)
        @name = name
        @origin = origin
        @x = x.to_f
        @y = y.to_f
        @zoom_x = zoom_x.to_f
        @zoom_y = zoom_y.to_f
        @opacity = opacity.to_f
        @blend_type = blend_type
        @duration = 0
        @target_x = @x
        @target_y = @y
        @target_zoom_x = @zoom_x
        @target_zoom_y = @zoom_y
        @target_opacity = @opacity
        @tone = Tone.new(0, 0, 0, 0)
        @tone_target = Tone.new(0, 0, 0, 0)
        @tone_duration = 0
        @angle = 0
        @rotate_speed = 0
      end
      #--------------------------------------------------------------------------
      # * Metodo che permette all'immagine di spostarsi in mappa
      #     duration   : tempo di durata 
      #     origin     : punto di inizio
      #     x          : coordinata-x
      #     y          : coordinata-y
      #     zoom_x     : livello di zoom in direzione-x
      #     zoom_y     : livello di zoom in direzione-y
      #     opacity    : livello di opacità
      #     blend_type : metodo  di fusione
      #--------------------------------------------------------------------------
      def move(duration, origin, x, y, zoom_x, zoom_y, opacity, blend_type)
        @duration = duration
        @origin = origin
        @target_x = x.to_f
        @target_y = y.to_f
        @target_zoom_x = zoom_x.to_f
        @target_zoom_y = zoom_y.to_f
        @target_opacity = opacity.to_f
        @blend_type = blend_type
      end
      #--------------------------------------------------------------------------
      # * Metodo che permette di cambiare la velocità di rotazione dell'immagine
      #     speed : velocità di rotazione
      #--------------------------------------------------------------------------
      def rotate(speed)
        @rotate_speed = speed
      end
      #--------------------------------------------------------------------------
      # * Metodo che definisce l'inizio del cambio di tonalità
      #     tone     : color tone
      #     duration : time
      #--------------------------------------------------------------------------
      def start_tone_change(tone, duration)
        @tone_target = tone.clone
        @tone_duration = duration
        if @tone_duration == 0
          @tone = @tone_target.clone
        end
      end
      #--------------------------------------------------------------------------
      # * Cancella l'immagine
      #--------------------------------------------------------------------------
      def erase
        @name = ""
      end
      #--------------------------------------------------------------------------
      # * Aggiornamento di ogni singolo frame
      #--------------------------------------------------------------------------
      def update
        if @duration >= 1
          d = @duration
          @x = (@x * (d - 1) + @target_x) / d
          @y = (@y * (d - 1) + @target_y) / d
          @zoom_x = (@zoom_x * (d - 1) + @target_zoom_x) / d
          @zoom_y = (@zoom_y * (d - 1) + @target_zoom_y) / d
          @opacity = (@opacity * (d - 1) + @target_opacity) / d
          @duration -= 1
        end
        if @tone_duration >= 1
          d = @tone_duration
          @tone.red = (@tone.red * (d - 1) + @tone_target.red) / d
          @tone.green = (@tone.green * (d - 1) + @tone_target.green) / d
          @tone.blue = (@tone.blue * (d - 1) + @tone_target.blue) / d
          @tone.gray = (@tone.gray * (d - 1) + @tone_target.gray) / d
          @tone_duration -= 1
        end
        if @rotate_speed != 0
          @angle += @rotate_speed / 2.0
          while @angle < 0
            @angle += 360
          end
          @angle %= 360
        end
      end
    end
    
    

     


    E finalmente eccomi arrivato ai fantastici Game_Battler.
    Andiamo subito ad analizzarne il primo:
    1.


    #==============================================================================
    # ** Game_Battler (part 1)
    #------------------------------------------------------------------------------
    #  Questa classe si occupa dei combattenti di gioco.   E' figa! xD
    #  E' considerata come una superclasse per le classi Game_Actor e Game_Enemy
    #  a cui fanno riferimento.
    #==============================================================================
    
    class Game_Battler
      #--------------------------------------------------------------------------
      # * Variabili di istanza pubblica
      #--------------------------------------------------------------------------
      attr_reader   :battler_name             # Nome del file battler  #guerriero
      attr_reader   :battler_hue              # tonalità del  battler  #guerriero
      attr_reader   :hp                       # HP #capacità vitale
      attr_reader   :sp                       # SP #capacità magica
      attr_reader   :states                   # stati 
      attr_accessor :hidden                   # mostra stato "nascosto"
      attr_accessor :immortal                 # mostra stato "immortale"
      attr_accessor :damage_pop               # mostra a video il danno subito
      attr_accessor :damage                   # valore del danno
      attr_accessor :critical                 # mostra "condizione critica"
      attr_accessor :animation_id             # Codice dell'animazione
      attr_accessor :animation_hit            # mostra l'animazione del colpo
      attr_accessor :white_flash              # mostra bagliore bianco
      attr_accessor :blink                    # mostra stato "accecato"
      #--------------------------------------------------------------------------
      # * Metodo per associare i parametri di base alle variabili appena create
      #--------------------------------------------------------------------------
      def initialize
        @battler_name = ""
        @battler_hue = 0
        @hp = 0
        @sp = 0
        @states = []
        @states_turn = {}
        @maxhp_plus = 0
        @maxsp_plus = 0
        @str_plus = 0
        @dex_plus = 0
        @agi_plus = 0
        @int_plus = 0
        @hidden = false
        @immortal = false
        @damage_pop = false
        @damage = nil
        @critical = false
        @animation_id = 0
        @animation_hit = false
        @white_flash = false
        @blink = false
        @current_action = Game_BattleAction.new
      end
      #--------------------------------------------------------------------------
      # * Metodo per ottenere gli HP massimi
      #--------------------------------------------------------------------------
      def maxhp
        n = [[base_maxhp + @maxhp_plus, 1].max, 999999].min
        for i in @states
          n *= $data_states[i].maxhp_rate / 100.0
        end
        n = [[Integer(n), 1].max, 999999].min
        return n
      end
      #--------------------------------------------------------------------------
      # * Metodo per ottenere gli SP massimi
      #--------------------------------------------------------------------------
      def maxsp
        n = [[base_maxsp + @maxsp_plus, 0].max, 9999].min
        for i in @states
          n *= $data_states[i].maxsp_rate / 100.0
        end
        n = [[Integer(n), 0].max, 9999].min
        return n
      end
      #--------------------------------------------------------------------------
      # * Metodo per ottenere la Forza (STR)
      #--------------------------------------------------------------------------
      def str
        n = [[base_str + @str_plus, 1].max, 999].min
        for i in @states
          n *= $data_states[i].str_rate / 100.0
        end
        n = [[Integer(n), 1].max, 999].min
        return n
      end
      #--------------------------------------------------------------------------
      # * Metodo per ottenere la Destrezza (DEX)
      #--------------------------------------------------------------------------
      def dex
        n = [[base_dex + @dex_plus, 1].max, 999].min
        for i in @states
          n *= $data_states[i].dex_rate / 100.0
        end
        n = [[Integer(n), 1].max, 999].min
        return n
      end
      #--------------------------------------------------------------------------
      # * Metodo per ottenere l'Agilità (AGI)
      #--------------------------------------------------------------------------
      def agi
        n = [[base_agi + @agi_plus, 1].max, 999].min
        for i in @states
          n *= $data_states[i].agi_rate / 100.0
        end
        n = [[Integer(n), 1].max, 999].min
        return n
      end
      #--------------------------------------------------------------------------
      # * Metodo per ottenere l'intelligenza (INT)
      #--------------------------------------------------------------------------
      def int
        n = [[base_int + @int_plus, 1].max, 999].min
        for i in @states
          n *= $data_states[i].int_rate / 100.0
        end
        n = [[Integer(n), 1].max, 999].min
        return n
      end
      #--------------------------------------------------------------------------
      # * Metodo per selezionare gli HP massimi
      #     maxhp : nuovi HP massimi
      #--------------------------------------------------------------------------
      def maxhp=(maxhp)
        @maxhp_plus += maxhp - self.maxhp
        @maxhp_plus = [[@maxhp_plus, -9999].max, 9999].min
        @hp = [@hp, self.maxhp].min
      end
      #--------------------------------------------------------------------------
      # * Metodo per selezionare gli SP massimi
      #     maxsp : nuovi SP massimi
      #--------------------------------------------------------------------------
      def maxsp=(maxsp)
        @maxsp_plus += maxsp - self.maxsp
        @maxsp_plus = [[@maxsp_plus, -9999].max, 9999].min
        @sp = [@sp, self.maxsp].min
      end
      #--------------------------------------------------------------------------
      # * Metodo per selezionare la Forza (STR)
      #     str : nuova Forza (STR)
      #--------------------------------------------------------------------------
      def str=(str)
        @str_plus += str - self.str
        @str_plus = [[@str_plus, -999].max, 999].min
      end
      #--------------------------------------------------------------------------
      # * Metodo per selezionare la Destrezza (DEX)
      #     dex : nuova Destrezza (DEX)
      #--------------------------------------------------------------------------
      def dex=(dex)
        @dex_plus += dex - self.dex
        @dex_plus = [[@dex_plus, -999].max, 999].min
      end
      #--------------------------------------------------------------------------
      # * Metodo per selezionare l'Agilità (AGI)
      #     agi : nuova Agilità (AGI)
      #--------------------------------------------------------------------------
      def agi=(agi)
        @agi_plus += agi - self.agi
        @agi_plus = [[@agi_plus, -999].max, 999].min
      end
      #--------------------------------------------------------------------------
      # * Metodo per selezionare l'intelligenza (INT)
      #     int : nuova intelligenza (INT)
      #--------------------------------------------------------------------------
      def int=(int)
        @int_plus += int - self.int
        @int_plus = [[@int_plus, -999].max, 999].min
      end
      #--------------------------------------------------------------------------
      # * Metodo per ottenere la percentuale del colpo (Hit)
      #--------------------------------------------------------------------------
      def hit
        n = 100
        for i in @states
          n *= $data_states[i].hit_rate / 100.0
        end
        return Integer(n)
      end
      #--------------------------------------------------------------------------
      # * Metodo per ottenere la potenza d'attacco
      #--------------------------------------------------------------------------
      def atk
        n = base_atk
        for i in @states
          n *= $data_states[i].atk_rate / 100.0
        end
        return Integer(n)
      end
      #--------------------------------------------------------------------------
      # * Metodo per ottenere la potenza espressa in difesa fisica
      #--------------------------------------------------------------------------
      def pdef
        n = base_pdef
        for i in @states
          n *= $data_states[i].pdef_rate / 100.0
        end
        return Integer(n)
      end
      #--------------------------------------------------------------------------
      # * Metodo per ottenere la potenza espressa in difesa magica
      #--------------------------------------------------------------------------
      def mdef
        n = base_mdef
        for i in @states
          n *= $data_states[i].mdef_rate / 100.0
        end
        return Integer(n)
      end
      #--------------------------------------------------------------------------
      # * Metodo per ottenere la possibilità di fuggire da una battaglia
      #--------------------------------------------------------------------------
      def eva
        n = base_eva
        for i in @states
          n += $data_states[i].eva
        end
        return n
      end
      #--------------------------------------------------------------------------
      # * Metodo per cambiare HP
      #     hp : nuovi HP
      #--------------------------------------------------------------------------
      def hp=(hp)
        @hp = [[hp, maxhp].min, 0].max
        # aggiunge o esclude l'inabilità
        for i in 1...$data_states.size
          if $data_states[i].zero_hp
            if self.dead?
              add_state(i)
            else
              remove_state(i)
            end
          end
        end
      end
      #--------------------------------------------------------------------------
      # * Metodo per cambiare SP
      #     sp : nuovi SP
      #--------------------------------------------------------------------------
      def sp=(sp)
        @sp = [[sp, maxsp].min, 0].max
      end
      #--------------------------------------------------------------------------
      # * Metodo che permette di curare tutti i membri del party
      #--------------------------------------------------------------------------
      def recover_all
        @hp = maxhp
        @sp = maxsp
        for i in @states.clone
          remove_state(i)
        end
      end
      #--------------------------------------------------------------------------
      # * Metodo che permette di ottenere l'azione corrente
      #--------------------------------------------------------------------------
      def current_action
        return @current_action
      end
      #--------------------------------------------------------------------------
      # * Metodo per determinare la velocità d'azione
      #--------------------------------------------------------------------------
      def make_action_speed
        @current_action.speed = agi + rand(10 + agi / 4)
      end
      #--------------------------------------------------------------------------
      # * Metodo che serve per definire la Morte  (incapacità di agire)
      #--------------------------------------------------------------------------
      def dead?
        return (@hp == 0 and not @immortal)
      end
      #--------------------------------------------------------------------------
      # * Metodo che serve per definire l'esistenza (capacità di agire)
      #--------------------------------------------------------------------------
      def exist?
        return (not @hidden and (@hp > 0 or @immortal))
      end
      #--------------------------------------------------------------------------
      # * Metodo che serve per definire HP 0
      #--------------------------------------------------------------------------
      def hp0?
        return (not @hidden and @hp == 0)
      end
      #--------------------------------------------------------------------------
      # * Metodo che definisce se un comando può essere eseguito
      #--------------------------------------------------------------------------
      def inputable?
        return (not @hidden and restriction <= 1)
      end
      #--------------------------------------------------------------------------
      # * Metodo che definisce se un'azione può essere possibile
      #--------------------------------------------------------------------------
      def movable?
        return (not @hidden and restriction < 4)
      end
      #--------------------------------------------------------------------------
      # * Metodo che definisce se si è in guardia
      #--------------------------------------------------------------------------
      def guarding?
        return (@current_action.kind == 0 and @current_action.basic == 1)
      end
      #--------------------------------------------------------------------------
      # * Metodo che definisce se si è capaci di resistere
      #--------------------------------------------------------------------------
      def resting?
        return (@current_action.kind == 0 and @current_action.basic == 3)
      end
    end
    
    

     


    2.

  19. Ciao ragazzi come va, ultimamente ho riportato a galla dei vecchi topic. Pensavo di aiutare ripristinando alcune risorse e in alcuni casi applicare lievi migliorie. Oggi invece vi posto uno script che penso non vi sia nel nostro archivio. Se invece è presente, ho combinato un pasticcio. :)
    Vabbe ad ogni modo ve lo posto lo stesso:

    SCREEN_TINT
    http://www.mediafire.com/download/tjd4i7cski2279f/Screen_Tint.rar
    Ovvero cambiare tonalità allo scenario.

    Premetto che così com'è impostato nella Demo, non credo sia molto utile a qualcosa. Anche perché si può cambiare tonalità solo in fase di tester play e non se non si ha aperto il progetto attraverso Rpg Maker xp. In sostanza se eseguite solo il file Game.exe lo script non viene riconosciuto e quindi non viene eseguito. Invece se lo si prova dopo che si avrà aperto il file Game.rxproj, con l'apposito tool, allora tutto procede bene.

    Seguendo le suddette istruzioni premete F8 vi apparirà
    bkdbMm.png

    una finestrella con i parametri da modificare.
    Se vi va, per cercare il colore giusto per le vostre scene potete consultare il mio Tomo_Cromatico presente qui:
    http://www.rpg2s.net/forum/index.php/topic/18934-tomo-cromatico/
    Dicevo, così strutturato, non mi sembra molto utile, anche perché se non si salva la partita, le impostazioni ritornano ad essere quelle di default.
    Vi posto lo stesso lo script perché penso che può essere una buona base di partenza, per poter creare attraverso le nozioni apprese qui, qualcosa di meglio.
    Ecco lo script:

     

    #-------------------------------------------------------------------------------
    #  Screen Tint Debug Menu by Leon_Westbrooke
    #-------------------------------------------------------------------------------
    #  Questo script permette di, in Debug mode, modificare la tinta dello schermo
    #  fino a trovare una colorazione adatta.
    #  NON imposterà automaticamente la tinta.  Invece, bisognerà ricordare i numeri
    #  ed usarli in un evento Cambia Screen Tone.  Questo dovrebbe evitare
    #  innumerevoli test per la colorazione adatta.
    #
    #  Come usare:
    #    Inserire lo script sopra Main e sotto gli altri script.
    #    Per accedervi, andare in debug mode (F12) e premere F8. Apparirà la window di modifica.
    #    Utilizzare le frecce direzionali per modificare le tinte.
    #-------------------------------------------------------------------------------
    
    #-------------------------------------------------------------------------------
    #  *  Game_Temp
    #-------------------------------------------------------------------------------
    class Game_Temp
      alias leon_stdm_gametemp_init initialize
     
      attr_accessor :tinttest_red
      attr_accessor :tinttest_green
      attr_accessor :tinttest_blue
      attr_accessor :tinttest_gray
     
      def initialize
        leon_stdm_gametemp_init
        @tinttest_red = 0
        @tinttest_green = 0
        @tinttest_blue = 0
        @tinttest_gray = 0
      end
    end
    #-------------------------------------------------------------------------------
    # END Game_Temp
    #-------------------------------------------------------------------------------
    
    #-------------------------------------------------------------------------------
    #  *  Spriteset_Map
    #-------------------------------------------------------------------------------
    class Spriteset_Map
      attr_accessor :viewport1
    end
    class Game_Screen
      attr_accessor :tone
    end
    #-------------------------------------------------------------------------------
    # END Spriteset_Map
    #-------------------------------------------------------------------------------
    
    #-------------------------------------------------------------------------------
    #  *  Scene_Map
    #-------------------------------------------------------------------------------
    class Scene_Map
     
      alias leon_svcl_scenemap_update update
      def update
        leon_svcl_scenemap_update
        if $DEBUG and Input.press?(Input::F8)
    	  $scene = Scene_TintDebug.new
        end
      end
    end
    #-------------------------------------------------------------------------------
    # END Scene_Map
    #-------------------------------------------------------------------------------
    
    #-------------------------------------------------------------------------------
    #  *  Window_TintTest
    #-------------------------------------------------------------------------------
    class Window_TintTest < Window_Selectable
      def initialize
        super(0, 0, 192, 192)
        self.contents = Bitmap.new(width - 32, height - 32)
        @item_max = 5
        self.index = 0
        self.active = true
        refresh
      end
     
      def refresh
        self.contents.clear
        self.contents.draw_text(4, 0, 160, 32,   "Rosso" )
        self.contents.draw_text(4, 32, 160, 32,  "Verde" )
        self.contents.draw_text(4, 64, 160, 32,  "Blu"   )
        self.contents.draw_text(4, 96, 160, 32,  "Grigio")
        self.contents.draw_text(4, 128, 160, 32, "Esci"  )
        self.contents.draw_text(-4, 0, 160, 32, $game_temp.tinttest_red.to_s, 2)
        self.contents.draw_text(-4, 32, 160, 32, $game_temp.tinttest_green.to_s, 2)
        self.contents.draw_text(-4, 64, 160, 32, $game_temp.tinttest_blue.to_s, 2)
        self.contents.draw_text(-4, 96, 160, 32, $game_temp.tinttest_gray.to_s, 2)
      end
    end
    #-------------------------------------------------------------------------------
    # END Window_TintTest
    #-------------------------------------------------------------------------------
    
    #-------------------------------------------------------------------------------
    #  *  Scene_TintDebug
    #-------------------------------------------------------------------------------
    class Scene_TintDebug
      def main
        @spriteset = Spriteset_Map.new
        $game_temp.tinttest_red = @spriteset.viewport1.tone.red.to_i
        $game_temp.tinttest_green = @spriteset.viewport1.tone.green.to_i
        $game_temp.tinttest_blue = @spriteset.viewport1.tone.blue.to_i
        $game_temp.tinttest_gray = @spriteset.viewport1.tone.gray.to_i
        @window_tint = Window_TintTest.new
       
        Graphics.transition
        loop do
    	  Graphics.update
    	  Input.update
    	  update
    	  if $scene != self
    	    break
    	  end
        end
        Graphics.freeze
        @window_tint.dispose
        @spriteset.dispose
      end
     
     
      def update
        if Input.trigger?(Input::B)
    	  $scene = Scene_Map.new
        end
       
        if @window_tint.active
    	  update_windowtint
    	  return
        end
      end
     
      def update_windowtint
        @window_tint.update
        case @window_tint.index
        when 0
    	  if Input.trigger?(Input::RIGHT)
    	    $game_temp.tinttest_red += 1
    	    if $game_temp.tinttest_red >= 255
    		  $game_temp.tinttest_red = 255
    	    end
    	  elsif Input.trigger?(Input::LEFT)
    	    $game_temp.tinttest_red -= 1
    	    if $game_temp.tinttest_red <= -255
    		  $game_temp.tinttest_red = -255
    	    end
    	  elsif Input.repeat?(Input::RIGHT)
    	    $game_temp.tinttest_red += 5
    	    if $game_temp.tinttest_red >= 255
    		  $game_temp.tinttest_red = 255
    	    end
    	  elsif Input.repeat?(Input::LEFT)
    	    $game_temp.tinttest_red -= 5
    	    if $game_temp.tinttest_red <= -255
    		  $game_temp.tinttest_red = -255
    	    end
    	  end
        when 1
    	  if Input.trigger?(Input::RIGHT)
    	    $game_temp.tinttest_green += 1
    	    if $game_temp.tinttest_green >= 255
    		  $game_temp.tinttest_green = 255
    	    end
    	  elsif Input.trigger?(Input::LEFT)
    	    $game_temp.tinttest_green -= 1
    	    if $game_temp.tinttest_green <= -255
    		  $game_temp.tinttest_green = -255
    	    end
    	  elsif Input.repeat?(Input::RIGHT)
    	    $game_temp.tinttest_green += 5
    	    if $game_temp.tinttest_green >= 255
    		  $game_temp.tinttest_green = 255
    	    end
    	  elsif Input.repeat?(Input::LEFT)
    	    $game_temp.tinttest_green -= 5
    	    if $game_temp.tinttest_green <= -255
    		  $game_temp.tinttest_green = -255
    	    end
    	  end
        when 2
    	  if Input.trigger?(Input::RIGHT)
    	    $game_temp.tinttest_blue += 1
    	    if $game_temp.tinttest_blue >= 255
    		  $game_temp.tinttest_blue = 255
    	    end
    	  elsif Input.trigger?(Input::LEFT)
    	    $game_temp.tinttest_blue -= 1
    	    if $game_temp.tinttest_blue <= -255
    		  $game_temp.tinttest_blue = -255
    	    end
    	  elsif Input.repeat?(Input::RIGHT)
    	    $game_temp.tinttest_blue += 5
    	    if $game_temp.tinttest_blue >= 255
    		  $game_temp.tinttest_blue = 255
    	    end
    	  elsif Input.repeat?(Input::LEFT)
    	    $game_temp.tinttest_blue -= 5
    	    if $game_temp.tinttest_blue <= -255
    		  $game_temp.tinttest_blue = -255
    	    end
    	  end
        when 3
    	  if Input.trigger?(Input::RIGHT)
    	    $game_temp.tinttest_gray += 1
    	    if $game_temp.tinttest_gray >= 255
    		  $game_temp.tinttest_gray = 255
    	    end
    	  elsif Input.trigger?(Input::LEFT)
    	    $game_temp.tinttest_gray -= 1
    	    if $game_temp.tinttest_gray <= -255
    		  $game_temp.tinttest_gray = -255
    	    end
    	  elsif Input.repeat?(Input::RIGHT)
    	    $game_temp.tinttest_gray += 5
    	    if $game_temp.tinttest_gray >= 255
    		  $game_temp.tinttest_gray = 255
    	    end
    	  elsif Input.repeat?(Input::LEFT)
    	    $game_temp.tinttest_gray -= 5
    	    if $game_temp.tinttest_gray <= -255
    		  $game_temp.tinttest_gray = -255
    	    end
    	  end
        when 4
    	  if Input.trigger?(Input::B)
    	    $scene = Scene_Map.new
    	  end
        end
        red = $game_temp.tinttest_red
        green = $game_temp.tinttest_green
        blue = $game_temp.tinttest_blue
        gray = $game_temp.tinttest_gray
        @spriteset.viewport1.tone = Tone.new(red, green, blue, gray)
        $game_screen.tone = Tone.new(red, green, blue, gray)
        @window_tint.refresh
        @spriteset.update
      end
    end
    #-------------------------------------------------------------------------------
    #  *  Scene_TintDebug
    #-------------------------------------------------------------------------------
    

     

     

    Spero possa esseri utile :)

  20. Ciao ragazzi forse posso esservi di Aiuto.
    Dunque, spulciando fra i miei archivi, ho trovato:

    Il Mode7 che cercate
    http://www.mediafire.com/download/2892cxal7ryd0v0/Mode+7.zip

    XXoPOR.png
    Ma se gradite posso anche postarvi la sua evoluzione..
    http://www.mediafire.com/download/r39pabf8hqve4p1/DemoScriptNeoMode7_120508.rar
    ecco annesso uno screen :)
    HxfHkS.png
    Capisco che da questa immagine non si può capire molto, ma credetemi che ha delle funzionalità carine.
    Anche perché penso che se accompagnato da una giusta grafica, questo script può rendere tantissimo.
    Ruota la visuale, la inclina. Non abbiamo più la classica visuale dall'alto tipica dell'rmxp. Ma possiamo scegliere.

    So di possederne degli altri, decisamente migliori solo che non mi ricordo in che folder li ho riposti. Però ci sono.
    Comunque se li trovo posto qui. :)

    Edit:
    Ecco come promesso, ne ho trovato un altro ancora più bello:
    http://www.mediafire.com/download/u8aojg65tg6g6a5/H3D+-+Mode.rar
    Ed ecco la relativa immagine dimostrativa:
    9Kqawf.png
    Ha solo un difetto, in visuale diagonale adotta la camminata a 4 dir standard, il che rende bruttino il muovere i personaggi, poiché non si rispettano le direzioni. Però considero questo script bello perché c'è la possibilità di creare un effetto ancora più 3D, sfruttando questi avvallamenti e dossi. Siamo sempre lì! Con una giusta grafica che lo accompagna, anche questo script può dare soddisfazioni. :)

    EDIT2:
    Per chi desidera avere un gioco solo in visuale isometrica..
    http://www.mediafire.com/download/47yx3aa5157h612/Isometria.rar
    5StPfj.png
    Qui ho apportato una modifica al database originale. In sostanza ho aggiunto il character di Aluxel diagonale che nella risorsa originale non c'era, e lo reputavo brutto a vedersi. Questo tipo di prospettiva e in questo caso, le tonalità della grafica di ambientazione mi fanno pensare a Secred - la leggenda dell'arma sacra. :)

    EDIT3:
    E poi non c'è davvero più 3D di questo.
    http://www.mediafire.com/download/ug99pfxelli0d9y/DF3DRMXPSDKR4.rar
    ncmqU5.png

    Per chi è amante dei giochi in prima persona, quali spara-tutto e simili. Questo script fa al caso vostro, però necessita di alcuni miglioramenti. L'idea è ottima, tanto è, che sembra di lavorare dentro un ambiente di Unity 3D. Solo che devo dire che lo script necessita di qualche rivisitazione.
    Vi spiego subito perché dico questo. Una volta avviato il tester ci accorgiamo che il progetto risponde perfettamente ma il problema si pone, quando volete chiudere l'applicazione. Buona fortuna :) .
    No scherzo, io ho risolto così (premesso che uso windows7) tengo premuto il tasto con l'iconcina di windows e in più scorro con il tab fino al desktop, in questo modo il programma si rimpicciolisce e io posso tornare ad avere il comando del mouse. chiudo il tester rmxp con il tasto destro nella barra in basso delle applicazioni, digito chiudi finestra e lui va via. Mi appello a chi di queste cose ci capisce, se vi va risolvete, perché può essere un bello script. ;)

×
×
  • Create New...