rpgmakervxace吧 关注:17,937贴子:51,435
  • 1回复贴,共1

【Zorua】WASD控制脚本

取消只看楼主收藏回复

#==============================================================================
# ■ WASD操作方式
#------------------------------------------------------------------------------
#  By Zorua 15.10.11
# QQ 252339319
#------------------------------------------------------------------------------
# 对于之前的版本,该版本在原版用方向键的地方都使用WASD控制了。
#------------------------------------------------------------------------------
module Kboard
$R_Key_A = 0x41 # A key
$R_Key_D = 0x44 # D key
$R_Key_S = 0x53 # S key
$R_Key_W = 0x57 # W key
GetKeyState = Win32API.new("user32","GetAsyncKeyState",['I'],'I')
GetKeyboardState = Win32API.new("user32","GetKeyState",['I'],'I')
GetSetKeyState = Win32API.new("user32","SetKeyboardState",['I'],'I')
module_function
def keyboard(rkey)
GetKeyState.call(rkey) & 0x01 == 1 #
end
def key(rkey, key = 0)
GetKeyboardState.call(rkey) & 0x01 == key #
end
def keyb(rkey)
if GetKeyState.call(rkey) != 0
return 1
end
return 0
end
end
module Input
def self.dir4
if Kboard.keyb($R_Key_W) == 1
return 8
elsif Kboard.keyb($R_Key_S) == 1
return 2
elsif Kboard.keyb($R_Key_A) == 1
return 4
elsif Kboard.keyb($R_Key_D) == 1
return 6
else
return 0
end
end
end
class Window_Selectable < Window_Base
def process_cursor_move
return unless cursor_movable?
last_index = @index
cursor_down (Kboard.keyb($R_Key_S) == 1) if Kboard.keyboard($R_Key_S)
cursor_up (Kboard.keyb($R_Key_W) == 1) if Kboard.keyboard($R_Key_W)
cursor_right(Kboard.keyb($R_Key_D) == 1) if Kboard.keyboard($R_Key_D)
cursor_left (Kboard.keyb($R_Key_A) == 1) if Kboard.keyboard($R_Key_A)
cursor_pagedown if !handle?(:pagedown) && Input.trigger?(:R)
cursor_pageup if !handle?(:pageup) && Input.trigger?(:L)
Sound.play_cursor if @index != last_index
end
end


IP属地:浙江1楼2015-10-11 15:34回复
    P.S. W键本身就是VA默认的翻页键,所以使用时请将翻页键LR改成其他键。
    或者将脚本 54、55修改或屏蔽。【屏蔽不大建议。


    IP属地:浙江2楼2015-10-11 15:36
    收起回复