[SYS] Easy Mouse Move System

    Compartilhe
    avatar
    jiraya
    Administrador
    Administrador

    Mensagens : 1299
    Credibilidade : 54

    [SYS] Easy Mouse Move System

    Mensagem por jiraya em Seg Set 20, 2010 11:10 pm

    Por: Fael000
    -Easy Mouse Move System-
    Scripts feitos por: Tsunokiette, Cadafalso, Near Fantastica, Cybersam e Skaterdoggy
    Disponibilizado por Fael000 (eu mesmo)!
    Fonte: RPG Revolution


    -Introdução-
    Este é um conjunto de scripts que possibilitam de maneira simples que o personagem se mova pelo mouse, e não pelo teclado como o de costume.


    -Como Instalar-
    Cole os scripts em cima do Main.


    -Scripts-
    Spoiler:
    -Guedez Mouse Use System-
    Código:
    #==================================================================
    # GMUS Guedez Mouse Use System
    # Version: 1.0
    # Released: 26/5/2006 Last Update: 1/6/2006
    # Thx to: Cadafalso, Near Fantastica, and some guys from asylum!
    # EDITED BY TSUNOKIETTE (to get neccesary parts only)
    #==================================================================
    $getCursorPos = Win32API.new("user32", "GetCursorPos", ['P'], 'V')
    class Mouse_Coordinates
     
      attr_reader :x
      attr_reader :y
     
      def initialize
        @x = get_pos('x')
        @y = get_pos('y')
      end
     
      def update
        @x = get_pos('x')
        @y = get_pos('y')
      end
     
    #==============================Thx to: Cadafalso===================
      def get_pos(coord_type)
        lpPoint = " " * 8 # store two LONGs
        $getCursorPos.Call(lpPoint)
        x,y = lpPoint.unpack("LL") # get the actual values
        if coord_type == 'x'
          return x
        elsif coord_type == 'y'
          return y
        end
      end
    #==================================================================
    end
    -Keyboard Script-
    Código:
    #======================================
      # ? Keyboard Script
      #---------------------------------------------------------------------------
      # ?By: Cybersam
      #  Date: 25/05/05
      #  Version 4
      # EDITED BY TSUNOKIETTE (to get neccesary parts only)
      #======================================
     
      module Kboard
      #--------------------------------------------------------------------------
      $RMouse_BUTTON_L = 0x01        # left mouse button
      $RMouse_BUTTON_R = 0x02        # right mouse button
      $RMouse_BUTTON_M = 0x04        # middle mouse button
      $RMouse_BUTTON_4 = 0x05        # 4th mouse button
      $RMouse_BUTTON_5 = 0x06        # 5th mouse button
      #--------------------------------------------------------------------------
      GetKeyState = Win32API.new("user32","GetAsyncKeyState",['i'],'i')
      GetKeyboardState = Win32API.new("user32","GetKeyState",['i'],'i')
      GetSetKeyState = Win32API.new("user32","SetKeyboardState",['i'],'i')
      #--------------------------------------------------------------------------
      module_function
      #--------------------------------------------------------------------------
      def keyb(rkey)
          if GetKeyState.call(rkey) != 0
            return 1
          end
          return 0
      end
        #--------------------------------------------------------------------------
      def keyboard(rkey)
        GetKeyState.call(rkey) & 0x01 == 1  #
      end
      #--------------------------------------------------------------------------
      def key(rkey, key = 0)
        GetKeyboardState.call(rkey) & 0x01 == key #
      end
      end
    -Path Finding Script-
    Código:
    #==============================================================================
    #  Path Finding
    #==============================================================================
    # Near Fantastica
    # Version 1
    # 29.11.05
    #==============================================================================
    # Lets the Player or Event draw a path from an desonation to the source. This
    # method is very fast and because the palthfinding is imbeded into the Game
    # Character the pathfinding can be inturputed or redrawn at any time.
    #==============================================================================
    # Player :: $game_player.find_path(x,y)
    # Event Script Call :: self.event.find_path(x,y)
    # Event Movement Script Call :: self.find_path(x,y)
    #-----
    # SDK DEPENDANCY REMOVED BY TSUNOKIETTE (SUE ME)
    #==============================================================================
      class Game_Character
        #--------------------------------------------------------------------------
        alias nf_pf_game_character_initialize initialize
        alias nf_pf_game_character_update update
        #--------------------------------------------------------------------------
        attr_accessor :map
        attr_accessor :runpath
        #--------------------------------------------------------------------------
        def initialize
          nf_pf_game_character_initialize
          @map = nil
          @runpath = 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)
          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
        end
        #--------------------------------------------------------------------------
        def clear_path
          @map = nil
          @runpath = false
        end
        #--------------------------------------------------------------------------
        def setup_map(sx,sy,ex,ey)
          map = Table.new($game_map.width, $game_map.height)
          map[ex,ey] = 1
          old_positions = []
          new_positions = []
          old_positions.push([ex, ey])
          depth = 2
          depth.upto(100){|step|
            loop do
              break if old_positions[0] == nil
              x,y = old_positions.shift
              return [true, map, step] if x == sx and y+1 == sy
              if $game_player.passable?(x, y, 2) and map[x,y + 1] == 0
                map[x,y + 1] = step
                new_positions.push([x,y + 1])
              end
              return [true, map, step] if x-1 == sx and y == sy
              if $game_player.passable?(x, y, 4) and map[x - 1,y] == 0
                map[x - 1,y] = step
                new_positions.push([x - 1,y])
              end
              return [true, map, step] if x+1 == sx and y == sy
              if $game_player.passable?(x, y, 6) and map[x + 1,y] == 0
                map[x + 1,y] = step
                new_positions.push([x + 1,y])
              end
              return [true, map, step] if x == sx and y-1 == sy
              if $game_player.passable?(x, y, 8) and map[x,y - 1] == 0
                map[x,y - 1] = step
                new_positions.push([x,y - 1])
              end
            end
            old_positions = new_positions
            new_positions = []
          }
          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
        def update_player_movement
          $game_player.clear_path if Input.dir4 != 0
          # Move player in the direction the directional button is being pressed
          case Input.dir4
          when 2
            move_down
          when 4
            move_left
          when 6
            move_right
          when 8
            move_up
          end
        end
      end
     
      class Interpreter
        #--------------------------------------------------------------------------
        def event
          return $game_map.events[@event_id]
        end
      end
    -Scene_Map-
    Código:
    #==============================================================================
    # ** Scene_Map
    #------------------------------------------------------------------------------
    #  This class performs map screen processing.
    #------------------------------------------------------------------------------
    #**Version 1.0 repaired by Skaterdoggy
    #==============================================================================
    class Scene_Map
      include? Kboard
      #--------------------------------------------------------------------------
      # * Main Processing
      #--------------------------------------------------------------------------
      alias main_orig main
      def main
        @mouse_coordinates = Mouse_Coordinates.new
        main_orig
      end
      #--------------------------------------------------------------------------
      # * Frame Update
      #--------------------------------------------------------------------------
      alias update_orig update
      def update
        update_orig
        # Update Mouse Coordinates
        @mouse_coordinates.update
        if Kboard.keyboard($RMouse_BUTTON_L)
          # Get current coordinates
          real_coord_x = @mouse_coordinates.x
          real_coord_y = @mouse_coordinates.y
          # Get column and row
          tile_coord_x = real_coord_x / 32
          tile_coord_y = real_coord_y / 32
          # Get rid of the variance of 8 * 6
          # ( 0 being the origin )
          tile_coord_x -= 6
          tile_coord_y -= 4
          # If Negative Set to 0 for Safety
          tile_coord_x = 0 unless tile_coord_x > -1
          tile_coord_y = 0 unless tile_coord_y > -1
          # Move
          $game_player.find_path(tile_coord_x,tile_coord_y)
        end
      end
    end
    Espero ter Ajudado!

      Data/hora atual: Seg Jan 21, 2019 6:21 pm