查看: 3637|回复: 4

[RMVA发布] 【自来水搬运工】鼠标脚本控制

[复制链接]
梦石
0
星屑
20
在线时间
106 小时
注册时间
2016-6-7
回帖
6
发表于 2017-3-25 10:51:40 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 kk1248659626 于 2018-12-20 12:03 编辑



http://www.ytmp3.cn/down/34902.mp3







0181220115851.png

鼠标控制.zip

1.6 MB, 下载次数: 266

233

评分

参与人数 1赞 +1 收起 理由
游戏解说小汪 + 1 塞糖

查看全部评分

梦石
0
星屑
20
在线时间
106 小时
注册时间
2016-6-7
回帖
6
 楼主| 发表于 2017-3-25 10:54:56 | 显示全部楼层
本帖最后由 kk1248659626 于 2018-12-20 12:01 编辑

{:2_258:} 【二楼打表处】

修改图标位置:

1

1



2

2


回复

使用道具 举报

梦石
0
星屑
20
在线时间
106 小时
注册时间
2016-6-7
回帖
6
 楼主| 发表于 2017-3-25 11:08:39 | 显示全部楼层
本帖最后由 kk1248659626 于 2018-12-20 12:01 编辑

{:2_279:}【三楼卖萌处】

【红点鼠标图标】

MouseCursor.png

赠送

赠送
回复

使用道具 举报

梦石
0
星屑
20
在线时间
106 小时
注册时间
2016-6-7
回帖
6
 楼主| 发表于 2017-12-8 00:11:25 | 显示全部楼层
本帖最后由 kk1248659626 于 2018-12-20 12:02 编辑

[pre lang="ruby"]
-------------------------------------------------------------------
#encoding:utf-8
# 基础鼠标模组 v3.02  (2014/2/15)
# ·需· SiNova_Input v1.00+

# v3.02 添加方法,以便兼容以前写的脚本

# 鼠标指针图片 MouseCursor.png 放入 Graphics\System 文件夹





module Mouse end
class << Mouse
DK_Frame = 15 # 判断双击间隔帧数
attr_reader\
:dk_count

  GetMousePos = API_.new 'SiNova|GetMousePos|p|v'
  SetMousePos = API_.new 'SiNova|SetMousePos|II|v'
  MouseZ      = API_.new 'SiNova|MouseZ|v|i'
  MouseZReset = API_.new 'SiNova|MouseZReset|v|v'
  

  def activate(vp = nil)
    @buf = [0, 0].pack("ii")
    @ck_count = 0
    @dk_count = 0
    hide_system_cursor
    create_cursor(vp)
  end
  def update
    update_cursor
    update_mouse_lock
    update_mouse_scroll
    update_double_click
  end
  def deactivate
    show_system_cursor
    dispose_cursor
  end


  def create_cursor(vp)
    dispose_cursor if @sprite
    @sprite = Sprite.new(vp)
    @sprite.z = 9999
    if File.exist?('Graphics/System/MouseCursor.png')
      @sprite.bitmap = Cache.system('MouseCursor')
    else
      @sprite.bitmap = Bitmap.new(24, 24)
      @sprite.bitmap.blt(0, 0, Cache.system('Iconset'),
        Rect.new(5 * 24, 24 * 24, 24, 24))
    end
    update_cursor
  end
  def dispose_cursor
    return if @sprite.disposed?
    @sprite.bitmap.dispose
    @sprite.dispose
    update
  end

  #
  def x
    @sprite.x
  end
  def y
    @sprite.y
  end
  def z
    MouseZ.call
  end
  def reset_z
    MouseZReset.call
  end
  
  # 3.01 new --
  def press?(sym)
    case sym
    when :L; Input.key_press? 0x01
    when :R; Input.key_press? 0x02
    when :M; Input.key_press? 0x05
    end
  end
  def trigger?(sym)
    case sym
    when :L; Input.key_trigger? 0x01
    when :R; Input.key_trigger? 0x02
    when :M; Input.key_trigger? 0x05
    end
  end
  def repeat?(sym)
    case sym
    when :L; Input.key_repeat? 0x01
    when :R; Input.key_repeat? 0x02
    when :M; Input.key_repeat? 0x05
    end
  end
  #--
  
  def update_cursor
    GetMousePos.call @buf
    @sprite.x, @sprite.y = *@buf.unpack("ii")
  end
  def update_mouse_scroll
    @mouseZ
  end
  #
  def update_double_click
    if Input.key_trigger?(0x01)
      if @dk_count <= DK_Frame
        @dk_count = DK_Frame
        @double_click = true
      else # 非双击,重置 dk_count
        @dk_count = 0
        @double_click = false
      end
    else
      @double_click = false
    end
    @dk_count += 1
  end
  def double_click?
    @double_click
  end
  #
  def update_mouse_lock # press Alt + L 锁定 Alt + O 解除锁定
    if Input.key_press?(0x12)
      return lock   if Input.key_trigger?(0x4C)
      return unlock if Input.key_trigger?(0x4F)
    end
  end
  #
  def lock
    API_.call 'SiNova|MouseLock|v|v'
  end
  def unlock
    API_.call 'SiNova|MouseUnLock|v|v'
  end
  def show_system_cursor
    api_sc = API_.new 'User32|ShowCursor|p|l'
    begin state = api_sc.call(1) end while state < 0
  end
  def hide_system_cursor
    api_sc = API_.new 'User32|ShowCursor|p|l'
    begin state = api_sc.call(0) end while state >= 0
  end
  def set_pos(x, y)
    SetMousePos.call(x, y)
  end
end

if $SINOVA #验证组件完整性
  if $SINOVA[:input]
    if $SINOVA[:input] >= 1.00   #所需组件版本
      $SINOVA[:mouseBase] = 3.02 #当前组件版本
    else
      msgbox "SiNova_Input 版本过低,需 1.00 以上"
      exit
    end
  else
    msgbox "Nova_TypeIn 需置于 SiNova_Input 脚本之下"
    exit
  end
else
  msgbox "Nova_TypeIn 需置于 NovaBase 脚本之下"
  exit
end

----------------------------------------------------------------------------------



[/pre]


回复

使用道具 举报

梦石
0
星屑
647
在线时间
7 小时
注册时间
2014-7-24
回帖
5
发表于 2020-2-25 20:57:51 | 显示全部楼层
不能响应事件
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部