永发信息网

求RPG鼠标脚本

答案:1  悬赏:60  手机版
解决时间 2021-01-26 19:52
  • 提问者网友:王者佥
  • 2021-01-26 08:02
就是能用鼠标操作的!!!!急~······
最佳答案
  • 五星知识达人网友:煞尾
  • 2021-01-26 08:44
额......现在这脚本太多了.....
  #==============================================================================
  # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  #==============================================================================

  #=================以下两个用来调整战斗时的手感问题,可以自己试试。
  $敌人选框扩大 = 20
  $角色选框扩大 = 30

  #==============================================================================
  # API调用
  #==============================================================================
  $ShowCursor = Win32API.new("user32", "ShowCursor", 'i', 'l')
  $GetCursorPos = Win32API.new("user32", "GetCursorPos", 'p', 'i')
  $ScreenToClient = Win32API.new("user32", "ScreenToClient", 'ip', 'i')
  $GetActiveWindow = Win32API.new("user32", "GetActiveWindow", nil, 'l')
  $Window_HWND = $GetActiveWindow.call
  $GetKeyState = Win32API.new("user32", "GetKeyState", 'i', 'i')
  #$FindWindow = Win32API.new("user32", "FindWindow", 'pp', 'i')
  #$HookStart = Win32API.new("mouse_hook.dll", "HookStart", 'i', nil)
  #$HookEnd = Win32API.new("mouse_hook.dll", "HookEnd", nil, nil)
  #$GetMouseStatus = Win32API.new("mouse_hook.dll", "GetMouseStatus", 'i', 'i')
  #$Window_HWND = $FindWindow.call(nil, 'mousetry')

  module Mouse
  LEFT = 0x01
  RIGHT = 0x02

  def self.init(sprite = nil)
  # $HookStart.call($Window_HWND)
  $ShowCursor.call(0)

  @show_cursor = false

  @mouse_sprite = Sprite.new
  @mouse_sprite.z = 99999
  @mouse_sprite.bitmap = Bitmap.new('Graphics/Icons/001-Weapon01.png')
  #@mouse_sprite.bitmap.fill_rect(Rect.new(0, 0, 32, 32), Color.new(0, 0, 0))

  @left_press = false
  @right_press = false
  @left_trigger = false
  @right_trigger = false
  @left_repeat = false
  @right_repeat = false
  @click_lock = false

  update
  end
  def self.exit
  @mouse_sprite.bitmap.dispose
  @mouse_sprite.dispose
  @show_cursor = true
  # $HookEnd.call
  $ShowCursor.call(1)
  end
  def self.mouse_debug
  return @mouse_debug.bitmap
  end
  def self.update
  left_down = $GetKeyState.call(0x01)
  right_down = $GetKeyState.call(0x02)

  @click_lock = false
  mouse_x, mouse_y = self.get_mouse_pos
  if @mouse_sprite != nil
  @mouse_sprite.x = mouse_x
  @mouse_sprite.y = mouse_y
  end
  if left_down[7] == 1
  @left_repeat = (not @left_repeat)
  @left_trigger = (not @left_press)
  @left_press = true
  else
  @left_press = false
  @left_trigger = false
  @left_repeat = false
  end
  if right_down[7] == 1
  @right_repeat = (not @right_repeat)
  @right_trigger = (not @right_press)
  @right_press = true
  else
  @right_press = false
  @right_trigger = false
  @right_repeat = false
  end
  end
  def self.get_mouse_pos
  point_var = [0, 0].pack('ll')
  if $GetCursorPos.call(point_var) != 0
  if $ScreenToClient.call($Window_HWND, point_var) != 0
  x, y = point_var.unpack('ll')
  if (x < 0) or (x > 10000) then x = 0 end
  if (y < 0) or (y > 10000) then y = 0 end
  if x > 640 then x = 640 end
  if y > 480 then y = 480 end
  return x, y
  else
  return 0, 0
  end
  else
  return 0, 0
  end
  end
  def self.press?(mouse_code)
  if mouse_code == LEFT
  if @click_lock
  return false
  else
  return @left_press
  end
  elsif mouse_code == RIGHT
  return @right_press
  else
  return false
  end
  end
  def self.trigger?(mouse_code)
  if mouse_code == LEFT
  if @click_lock
  return false
  else
  return @left_trigger
  end
  elsif mouse_code == RIGHT
  return @right_trigger
  else
  return false
  end
  end
  def self.repeat?(mouse_code)
  if mouse_code == LEFT
  if @click_lock
  return false
  else
  return @left_repeat
  end
  elsif mouse_code == RIGHT
  return @right_repeat
  else
  return false
  end
  end
  def self.click_lock?
  return @click_lock
  end
  def self.click_lock
  @click_lock = true
  end
  def self.click_unlock
  @click_lock = false
  end
  end
  module Input
  if @self_update == nil
  @self_update = method('update')
  @self_press = method('press?')
  @self_trigger = method('trigger?')
  @self_repeat = method('repeat?')
  end
  def self.update
  @self_update.call
  Mouse.update
  end
  def self.press?(key_code)
  if @self_press.call(key_code)
  return true
  end
  if key_code == C
  return Mouse.press?(Mouse::LEFT)
  elsif key_code == B
  return Mouse.press?(Mouse::RIGHT)
  else
  return @self_press.call(key_code)
  end
  end
  def self.trigger?(key_code)
  if @self_trigger.call(key_code)
  return true
  end
  if key_code == C
  return Mouse.trigger?(Mouse::LEFT)
  elsif key_code == B
  return Mouse.trigger?(Mouse::RIGHT)
  else
  return @self_trigger.call(key_code)
  end
  end
  def self.repeat?(key_code)
  if @self_repeat.call(key_code)
  return true
  end
  if key_code == C
  return Mouse.repeat?(Mouse::LEFT)
  elsif key_code == B
  return Mouse.repeat?(Mouse::RIGHT)
  else
  return @self_repeat.call(key_code)
  end
  end
  end
  class Window_Selectable
  if @self_alias == nil
  alias self_update update
  @self_alias = true
  end
  def update
  #self.cursor_rect.empty
  self_update
  if self.active and @item_max > 0
  index_var = @index
  tp_index = @index
  mouse_x, mouse_y = Mouse.get_mouse_pos
  mouse_not_in_rect = true
  for i in 0...@item_max
  @index = i
  update_cursor_rect
  top_x = self.cursor_rect.x + self.x + 16
  top_y = self.cursor_rect.y + self.y + 16
  bottom_x = top_x + self.cursor_rect.width
  bottom_y = top_y + self.cursor_rect.height
  if (mouse_x > top_x) and (mouse_y > top_y) and
  (mouse_x < bottom_x) and (mouse_y < bottom_y)
  mouse_not_in_rect = false
  if tp_index != @index
  tp_index = @index
  $game_system.se_play($data_system.cursor_se)
  end
  break
  end
  end
  if mouse_not_in_rect
  @index = index_var
  update_cursor_rect
  Mouse.click_lock
  else
  Mouse.click_unlock
  end
  end
  end
  end
  class Window_NameInput
  if @self_alias == nil
  alias self_update update
  @self_alias = true
  end
  def update
  #self.cursor_rect.empty
  self_update
  if self.active
  index_var = @index
  mouse_x, mouse_y = Mouse.get_mouse_pos
  mouse_not_in_rect = true
  for i in (0...CHARACTER_TABLE.size).to_a.push(180)
  @index = i
  update_cursor_rect
  top_x = self.cursor_rect.x + self.x + 16
  top_y = self.cursor_rect.y + self.y + 16
  bottom_x = top_x + self.cursor_rect.width
  bottom_y = top_y + self.cursor_rect.height
  #
  if (mouse_x > top_x) and (mouse_y > top_y) and
  (mouse_x < bottom_x) and (mouse_y < bottom_y)
  mouse_not_in_rect = false
  break
  end
  end
  if mouse_not_in_rect
  @index = index_var
  update_cursor_rect
  Mouse.click_lock
  else
  Mouse.click_unlock
  end
  end
  end
  end
  class Window_InputNumber
  if @self_alias == nil
  alias self_update update
  @self_alias = true
  end
  def update
  #self.cursor_rect.empty
  self_update
  mouse_x, mouse_y = Mouse.get_mouse_pos
  if self.active and @digits_max > 0
  index_var = @index
  mouse_not_in_rect = true
  for i in 0...@digits_max
  @index = i
  update_cursor_rect
  top_x = self.cursor_rect.x + self.x + 16
  bottom_x = top_x + self.cursor_rect.width
  #
  if (mouse_x > top_x) and (mouse_x < bottom_x)
  mouse_not_in_rect = false
  break
  end
  end
  if mouse_not_in_rect
  @index = index_var
  update_cursor_rect
  Mouse.click_lock
  else
  Mouse.click_unlock
  end
  end
  if @last_mouse_y == nil
  @last_mouse_y = mouse_y
  end
  check_pos = (@last_mouse_y - mouse_y).abs
  if check_pos > 10
  $game_system.se_play($data_system.cursor_se)
  place = 10 ** (@digits_max - 1 - @index)
  n = @number / place % 10
  @number -= n * place
  n = (n + 1) % 10 if mouse_y < @last_mouse_y
  n = (n + 9) % 10 if mouse_y > @last_mouse_y
  @number += n * place
  refresh
  @last_mouse_y = mouse_y
  end
  end
  end
  class Scene_File
  if @self_alias == nil
  alias self_update update
  @self_alias = true
  end
  def update
  mouse_x, mouse_y = Mouse.get_mouse_pos
  Mouse.click_lock
  idx = 0
  for i in @savefile_windows
  top_x = i.x + 16
  top_y = i.y + 16
  bottom_x = top_x + i.width
  bottom_y = top_y + i.height
  if (mouse_x > top_x) and (mouse_y > top_y) and
  (mouse_x < bottom_x) and (mouse_y < bottom_y)
  i.selected = true
  if @file_index != idx
  @file_index = idx
  $game_system.se_play($data_system.cursor_se)
  end
  Mouse.click_unlock
  else
  i.selected = false
  end
  idx += 1
  end
  self_update
  end
  end
  class Arrow_Enemy
  if @self_alias == nil
  alias self_update update
  @self_alias = true
  end
  def update
  mouse_x, mouse_y = Mouse.get_mouse_pos
  idx = 0
  for i in $game_troop.enemies do
  if i.exist?
  top_x = i.screen_x - self.ox
  top_y = i.screen_y - self.oy
  bottom_x = top_x + self.src_rect.width
  bottom_y = top_y + self.src_rect.height
  if (mouse_x > top_x - $敌人选框扩大) and (mouse_y > top_y - $敌人选框扩大) and
  (mouse_x < bottom_x + $敌人选框扩大) and (mouse_y < bottom_y + $敌人选框扩大)
  if @index != idx
  $game_system.se_play($data_system.cursor_se)
  @index = idx
  end
  end
  end
  idx += 1
  end
  self_update
  end
  end
  class Arrow_Actor
  if @self_alias == nil
  alias self_update update
  @self_alias = true
  end
  def update
  mouse_x, mouse_y = Mouse.get_mouse_pos
  idx = 0
  for i in $game_party.actors do
  if i.exist?
  top_x = i.screen_x - self.ox
  top_y = i.screen_y - self.oy
  bottom_x = top_x + self.src_rect.width
  bottom_y = top_y + self.src_rect.height
  if (mouse_x > top_x - $角色选框扩大) and (mouse_y > top_y - $角色选框扩大) and
  (mouse_x < bottom_x + $角色选框扩大) and (mouse_y < bottom_y + $角色选框扩大)
  if @index != idx
  $game_system.se_play($data_system.cursor_se)
  @index = idx
  end
  end
  end
  idx += 1
  end
  self_update
  end
  end
  class Game_Player
  if @self_alias == nil
  alias self_update update
  @self_alias = true
  end
  def update
  mouse_x, mouse_y = Mouse.get_mouse_pos

  if @last_move_x == nil
  @last_move_x = false
  end
  if Mouse.press?(Mouse::LEFT)
  last_moving = moving?
  last_direction = @direction
  unless moving? or $game_system.map_interpreter.running? or
  @move_route_forcing or $game_temp.message_window_showing
  last_x = @x
  if @last_move_x
  @last_move_x = false
  elsif mouse_x > screen_x + 16
  move_right
  elsif mouse_x < screen_x - 16
  move_left
  end
  last_y = @y
  if last_x != @x
  @last_move_x = true
  elsif mouse_y > screen_y
  move_down
  elsif mouse_y < screen_y - 32
  move_up
  end
  if last_y != @y
  @last_move_x = false
  elsif not @last_move_x
  case last_direction
  when 2
  turn_down
  when 4
  turn_left
  when 6
  turn_right
  when 8
  turn_up
  end
  end
  end
  end
  self_update
  end
  end
  Mouse.init
  END { Mouse.exit }

  #==============================================================================
  # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  #==============================================================================
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯