加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 ppspssss 于 2024-12-13 21:17 编辑
在RGU(我称他为紫月亮, 只是我自己叫) 240621.x64版本 下rpg maker xp 下测试,只在过此版本中测试其他版本没测, 环境win7 64位系统
RGU目前不支持win32.API,但还是可以有鼠标和按键功能
雖然写了是可以使用Mouse鼠标支持, 但我实际貌似并不能识别到按键, 在老的RGU贴子中找到的鼠标脚本[RGSS 3][RGU]移植 - Sion的鼠标系统.txt,去掉了原来是VXACE的功能寻路之类的? XP贴上使用
而Mouse.x和Mouse.y 则不需这句也能够获取鼠标的x,y轴 (指并不需要以下脚本也能获取鼠标在窗口中xy轴)
新建一个脚本页加入以下,注意没有以下注释说的功能,只有按鼠标的功能
#__END__
# Sion 鼠标系统(SionMouseSystem)v2.31 (2014/2/20)
# RGU version by Admenri 220801
# v2.32(2014/6/9) 优化了地图卷动指令、等待指令的衔接过程。
# v2.31(2014/2/20) 事件执行过程中,卷动地图后不会自动跳转到玩家位置了。
=begin 说明
主要功能
1,自动寻路,按住 D 键可以扩大寻路的范围
2,变量输入框改良
3,鼠标启动事件:
在事件中加入“注释”:鼠标启动
该事件将无法用其它方式启动,只能用鼠标左键点击启动
鼠标指针图片 MouseCursor.png 放入 Graphics\System 文件夹
路径点指示图片 $Arrow.png 放入 Graphics\Characters 文件夹
如果未放入会使用RM自带图片代替缺失文件
=end
# RGU version by Admenri 220801
# 基础鼠标模组(Sion_MouseBase)v1.01 (2013/11/5)
# 需求! 白菜组脚本基 (WhiteCabbageBase) v1.0+
#
# 鼠标指针图片 MouseCursor.png 放入 Graphics\System 文件夹
# 按下 Alt + L 将鼠标锁定在屏幕内; Alt + O(字母欧) 解除锁定
Mouse.visible = true
module Mouse end
class << Mouse
def activate( vp = nil )
end
def deactivate
end
def set_pos( x, y)
end
def create_cursor( vp)
end
def dispose_cursor
end
def trigger?( sym)
click? sym
end
def repeat?( sym)
false
end
def state( sym)
press? sym
end
def double_click?
dbl_clk? :L
end
def click_count
0
end
def show_system_cursor
end
def hide_system_cursor
end
end
class << Mouse
attr_reader :sprite
end
class << Input
alias_method :sion_mouse_press ?, :press ?
alias_method :sion_mouse_trigger ?, :trigger ?
alias_method :sion_mouse_repeat ?, :repeat ?
unless self .method_defined ?( :sion_mouse_update )
alias_method :sion_mouse_update , :update
end
def update
Mouse.update
sion_mouse_update
end
def press?( key)
return true if sion_mouse_press?( key)
return Mouse.press ?( Mouse::LEFT ) if key == ":L" #b
return Mouse.press ?( Mouse::RIGHT ) if key == ":R" #b
return Mouse.press ?( Mouse::MIDDLE ) if key == ":M" #b 貌似“:C”是VXACEruby版本用法在rpgmaker xp中没用,所以我加了三个返回值,这样input.press?也可以使用而不是只有 Mouse.press?
return Mouse.press ?( :L ) if key == :C
return Mouse.press ?( :R ) if key == :B
return false
end
def trigger?( key)
return true if sion_mouse_trigger?( key)
return Mouse.trigger ?( :L ) if key == :C
return Mouse.trigger ?( :R ) if key == :B
return false
end
def repeat?( key)
return true if sion_mouse_repeat?( key)
return Mouse.repeat ?( :L ) if key == :C
return Mouse.repeat ?( :R ) if key == :B
return false
end
end
#__END__
# Sion 鼠标系统(SionMouseSystem)v2.31 (2014/2/20)
# RGU version by Admenri 220801
# v2.32(2014/6/9) 优化了地图卷动指令、等待指令的衔接过程。
# v2.31(2014/2/20) 事件执行过程中,卷动地图后不会自动跳转到玩家位置了。
=begin 说明
主要功能
1,自动寻路,按住 D 键可以扩大寻路的范围
2,变量输入框改良
3,鼠标启动事件:
在事件中加入“注释”:鼠标启动
该事件将无法用其它方式启动,只能用鼠标左键点击启动
鼠标指针图片 MouseCursor.png 放入 Graphics\System 文件夹
路径点指示图片 $Arrow.png 放入 Graphics\Characters 文件夹
如果未放入会使用RM自带图片代替缺失文件
=end
# RGU version by Admenri 220801
# 基础鼠标模组(Sion_MouseBase)v1.01 (2013/11/5)
# 需求! 白菜组脚本基 (WhiteCabbageBase) v1.0+
#
# 鼠标指针图片 MouseCursor.png 放入 Graphics\System 文件夹
# 按下 Alt + L 将鼠标锁定在屏幕内; Alt + O(字母欧) 解除锁定
Mouse.visible = true
module Mouse end
class << Mouse
def activate( vp = nil )
end
def deactivate
end
def set_pos( x, y)
end
def create_cursor( vp)
end
def dispose_cursor
end
def trigger?( sym)
click? sym
end
def repeat?( sym)
false
end
def state( sym)
press? sym
end
def double_click?
dbl_clk? :L
end
def click_count
0
end
def show_system_cursor
end
def hide_system_cursor
end
end
class << Mouse
attr_reader :sprite
end
class << Input
alias_method :sion_mouse_press ?, :press ?
alias_method :sion_mouse_trigger ?, :trigger ?
alias_method :sion_mouse_repeat ?, :repeat ?
unless self .method_defined ?( :sion_mouse_update )
alias_method :sion_mouse_update , :update
end
def update
Mouse.update
sion_mouse_update
end
def press?( key)
return true if sion_mouse_press?( key)
return Mouse.press ?( Mouse::LEFT ) if key == ":L" #b
return Mouse.press ?( Mouse::RIGHT ) if key == ":R" #b
return Mouse.press ?( Mouse::MIDDLE ) if key == ":M" #b 貌似“:C”是VXACEruby版本用法在rpgmaker xp中没用,所以我加了三个返回值,这样input.press?也可以使用而不是只有 Mouse.press?
return Mouse.press ?( :L ) if key == :C
return Mouse.press ?( :R ) if key == :B
return false
end
def trigger?( key)
return true if sion_mouse_trigger?( key)
return Mouse.trigger ?( :L ) if key == :C
return Mouse.trigger ?( :R ) if key == :B
return false
end
def repeat?( key)
return true if sion_mouse_repeat?( key)
return Mouse.repeat ?( :L ) if key == :C
return Mouse.repeat ?( :R ) if key == :B
return false
end
end
貌似鼠标只有press这个可以使用不过也够用了--
,如果需要按住和按一下不同,需要自己写一个计数器比如按住10帧以下为短按, 11帧开始为长按
#条件分歧实际操作:
if Mouse.press?(Mouse::LEFT) #左键按下
if Mouse.press?(Mouse::RIGHT) #右键按下
if Mouse.press?(Mouse::MIDDLE) #中间键(指滚轮键)按下
if Input.press?(":L") #左键按下
if Input.press?(":R") #右键按下
if Input.press?(":M") #中间键(指滚轮键)按下
额外:RGU键盘使用的方法按F1可以修改按键
先按Button , 再右边列表按想要改的键,按一下 键变<..>此时按下你想映射的键,列表下的Add键是添加多个键映射 , 可以多于1个键, Save Settings储存,Reset Settings 重置
原脚本[RGSS 3