设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 9011|回复: 21
打印 上一主题 下一主题

RMXP 用全手柄脚本

 关闭 [复制链接]

Lv4.逐梦者

梦石
0
星屑
11986
在线时间
999 小时
注册时间
2007-12-15
帖子
188
跳转到指定楼层
1
发表于 2008-9-2 01:22:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
手边找不到手柄来测试…………
理论上应该能用…………

以下是脚本:

  1. #============================================================================
  2. # ■ 全手柄脚本
  3. #----------------------------------------------------------------------------
  4. #  By: 洛克人SZ
  5. #   Date: 2008.06.05
  6. #   Version 1
  7. #============================================================================

  8. module Joyall
  9.   #==========================================================================
  10.   # 以下是常量列表
  11.   #--------------------------------------------------------------------------
  12.   JOYSTICKID1 = 0
  13.   JOYSTICKID2 = 1

  14.   JOY_POVCENTERED = -1
  15.   JOY_POVFORWARD = 0
  16.   JOY_POVRIGHT = 9000
  17.   JOY_POVLEFT = 27000
  18.   JOY_RETURNX = 0x0001
  19.   JOY_RETURNY = 0x0002
  20.   JOY_RETURNZ = 0x0004
  21.   JOY_RETURNR = 0x0008
  22.   JOY_RETURNU = 0x0010
  23.   JOY_RETURNV = 0x0020
  24.   JOY_RETURNPOV = 0x0040
  25.   JOY_RETURNBUTTONS = 0x0080
  26.   JOY_RETURNRAWDATA = 0x0100
  27.   JOY_RETURNPOVCTS = 0x0200
  28.   JOY_RETURNCENTERED = 0x0400
  29.   JOY_USEDEADZONE = 0x0800
  30.   JOY_RETURNALL = (JOY_RETURNX + JOY_RETURNY + JOY_RETURNZ + JOY_RETURNR + JOY_RETURNU + JOY_RETURNV + JOY_RETURNPOV + JOY_RETURNBUTTONS)
  31.   JOY_CAL_READALWAYS = 0x10000
  32.   JOY_CAL_READRONLY = 0x2000000
  33.   JOY_CAL_READ3 = 0x40000
  34.   JOY_CAL_READ4 = 0x80000
  35.   JOY_CAL_READXONLY = 0x100000
  36.   JOY_CAL_READYONLY = 0x200000
  37.   JOY_CAL_READ5 = 0x400000
  38.   JOY_CAL_READ6 = 0x800000
  39.   JOY_CAL_READZONLY = 0x1000000
  40.   JOY_CAL_READUONLY = 0x4000000
  41.   JOY_CAL_READVONLY = 0x8000000
  42.   
  43.   JB_1 = 0x0001
  44.   JB_2 = 0x0002
  45.   JB_3 = 0x0004
  46.   JB_4 = 0x0008
  47.   JB_5 = 0x0010
  48.   JB_6 = 0x0020
  49.   JB_7 = 0x0040
  50.   JB_8 = 0x0080
  51.   JB_9 = 0x0100
  52.   JB_10 = 0x0200
  53.   JB_11 = 0x0400
  54.   JB_12 = 0x0800
  55.   JB_13 = 0x1000
  56.   JB_14 = 0x2000
  57.   JB_15 = 0x4000
  58.   JB_16 = 0x8000
  59.   JB_17 = 0x10000
  60.   JB_18 = 0x20000
  61.   JB_19 = 0x40000
  62.   JB_20 = 0x80000
  63.   JB_21 = 0x100000
  64.   JB_22 = 0x200000
  65.   JB_23 = 0x400000
  66.   JB_24 = 0x800000
  67.   JB_25 = 0x1000000
  68.   JB_26 = 0x2000000
  69.   JB_27 = 0x4000000
  70.   JB_28 = 0x8000000
  71.   JB_29 = 0x10000000
  72.   JB_30 = 0x20000000
  73.   JB_31 = 0x40000000
  74.   JB_32 = 0x80000000

  75.   @R_Button_Hash = {}
  76.   @R_Button_Repeat = {}
  77.   #==========================================================================
  78.   # 以下是 API 声明
  79.   #--------------------------------------------------------------------------
  80.   JoyGetPosEx = Win32API.new("winmm.dll", "joyGetPosEx", "lp", "l")
  81.   JoySetCapture = Win32API.new("winmm.dll", "joySetCapture", "llll", "l")
  82.   JoyReleaseCapture = Win32API.new("winmm.dll", "joyReleaseCapture", "l", "l")
  83.   #==========================================================================
  84.   module_function
  85.   #==========================================================================
  86.   # ANALOG 模式下对应方向键(x, y)   (数字模式下对应方向键)
  87.   #--------------------------------------------------------------------------
  88.   def direction_a
  89.     myjoy = [64,JOY_RETURNALL,0,0,0,0,0,0,0,0,0,0,0]
  90.     myjoy = myjoy.pack("LLLLLLLLLLLLL")
  91.     JoyGetPosEx.call(JOYSTICKID1, myjoy)
  92.     myjoy = myjoy.unpack("LLLLLLLLLLLLL")
  93.     return myjoy[6], myjoy[7]
  94.   end
  95.   #==========================================================================
  96.   # ANALOG 模式下对应左摇杆(x, y)   (数字模式下对应方向键)
  97.   #--------------------------------------------------------------------------
  98.   def direction_b
  99.     myjoy = [64,JOY_RETURNALL,0,0,0,0,0,0,0,0,0,0,0]
  100.     myjoy = myjoy.pack("LLLLLLLLLLLLL")
  101.     JoyGetPosEx.call(JOYSTICKID1, myjoy)
  102.     myjoy = myjoy.unpack("LLLLLLLLLLLLL")
  103.     return myjoy[3], myjoy[2]
  104.   end
  105.   #==========================================================================
  106.   # ANALOG 模式下对应右摇杆(x, y)   (数字模式下对应方向键)
  107.   #--------------------------------------------------------------------------
  108.   def direction_c
  109.     myjoy = [64,JOY_RETURNALL,0,0,0,0,0,0,0,0,0,0,0]
  110.     myjoy = myjoy.pack("LLLLLLLLLLLLL")
  111.     JoyGetPosEx.call(JOYSTICKID1, myjoy)
  112.     myjoy = myjoy.unpack("LLLLLLLLLLLLL")
  113.     return myjoy[4], myjoy[5]
  114.   end
  115.   #==========================================================================
  116.   # 按键判断a(按键)
  117.   #--------------------------------------------------------------------------
  118.   def press?(buttons)
  119.     myjoy = [64,JOY_RETURNALL,0,0,0,0,0,0,0,0,0,0,0]
  120.     myjoy = myjoy.pack("l*")#("LLLLLLLLLLLLL")
  121.     JoyGetPosEx.call(JOYSTICKID1, myjoy)
  122.     myjoy = myjoy.unpack("l*")#("LLLLLLLLLLLLL")
  123.     if myjoy[8] == buttons
  124.       return true
  125.     else
  126.       return false
  127.     end
  128.   end
  129.   #==========================================================================
  130.   # 按键判断b(按键)
  131.   #--------------------------------------------------------------------------
  132.   def repeat?(buttons)
  133.     myjoy = [64,JOY_RETURNALL,0,0,0,0,0,0,0,0,0,0,0]
  134.     myjoy = myjoy.pack("l*")#("LLLLLLLLLLLLL")
  135.     #qqq = JoyGetPosEx.call(JOYSTICKID1, myjoy)
  136.     JoyGetPosEx.call(JOYSTICKID1, myjoy)
  137.     myjoy = myjoy.unpack("l*")#("LLLLLLLLLLLLL")
  138.     if myjoy[8] == buttons
  139.       if @R_Button_Repeat[buttons].nil?
  140.         @R_Button_Repeat[buttons] = 0
  141.         return true
  142.       end
  143.       @R_Button_Repeat[buttons] += 1
  144.     else
  145.       @R_Button_Repeat[buttons] = nil
  146.       @R_Button_Hash[buttons] = 0
  147.     end
  148.     if !@R_Button_Repeat[buttons].nil? and @R_Button_Repeat[buttons] > 4
  149.       @R_Button_Repeat[buttons] = 0
  150.       return true
  151.     else
  152.       return false
  153.     end
  154.   end
  155.   #==========================================================================
  156.   # 按键判断c(按键)
  157.   #--------------------------------------------------------------------------
  158.   def trigger?(buttons)
  159.     myjoy = [64,JOY_RETURNALL,0,0,0,0,0,0,0,0,0,0,0]
  160.     myjoy = myjoy.pack("l*")#("L*")#("LLLLLLLLLLLLL")
  161.     JoyGetPosEx.call(JOYSTICKID1, myjoy)
  162.     myjoy = myjoy.unpack("l*")#("L*")#("LLLLLLLLLLLLL")
  163.     if @R_Button_Hash[buttons] == 1 and myjoy[8] == buttons
  164.       return false
  165.     end
  166.     if myjoy[8] == buttons
  167.       @R_Button_Hash[buttons] = 1
  168.       return true
  169.     else
  170.       @R_Button_Hash[buttons] = 0
  171.       return false
  172.     end
  173.   end
  174. end
复制代码

正在研究自己编写 DLL 来调用 DirectX ……DLL 完成了,脚本却遇到问题了……

Lv2.观梦者

傻♂逼

梦石
0
星屑
369
在线时间
1605 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

2
发表于 2008-9-2 01:25:12 | 只看该作者
。。。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
301
在线时间
573 小时
注册时间
2005-10-27
帖子
1164
3
发表于 2008-9-2 01:30:04 | 只看该作者
……那实际上呢?{/fd}
认真地猥琐,猥琐地认真
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
157 小时
注册时间
2007-12-16
帖子
3454
4
发表于 2008-9-2 01:36:33 | 只看该作者
手。。手柄!?
看来RM的力量不容忽视
上次我还看到用Ruby来DDos攻击{/hx}
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
11986
在线时间
999 小时
注册时间
2007-12-15
帖子
188
5
 楼主| 发表于 2008-9-2 01:38:21 | 只看该作者
只有拜托手边有手柄的好心人帮忙测试一下了…………
不过我记得写完后测试通过了,不知道有没有记错……

正在研究自己编写 DLL 来调用 DirectX ……DLL 完成了,脚本却遇到问题了……
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

6
发表于 2008-9-2 06:29:31 | 只看该作者
手柄?我记得F1能设定手柄的吧- -
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
49
在线时间
0 小时
注册时间
2007-7-1
帖子
552
7
发表于 2008-9-2 07:03:36 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
11986
在线时间
999 小时
注册时间
2007-12-15
帖子
188
8
 楼主| 发表于 2008-9-2 18:02:59 | 只看该作者
以下引用精灵使者于2008-9-1 22:29:31的发言:

手柄?我记得F1能设定手柄的吧- -


键盘也能设置,这个脚本的作用和全键盘一样。

正在研究自己编写 DLL 来调用 DirectX ……DLL 完成了,脚本却遇到问题了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
9
发表于 2008-9-9 21:05:46 | 只看该作者
我家里正好有手柄,我回家后试试。
N久没来这里了,竟然有这麼好的东西。

以下引用精灵使者于2008-9-1 22:29:31的发言:

手柄?我记得F1能设定手柄的吧- -

F1 MS不能直接设定 PS手柄转接口类型的手柄(我家目前在用的)。

以前我是有用过 是抓键盘按钮类型的手柄
(设定可以由手柄按每个钮决定 键盘哪一个按钮 而設置)。

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

10
发表于 2008-9-11 02:52:04 | 只看该作者
RPG  ms用不上吧
话说应该先有ACT.. lz写一个好用的ACT脚本  我帮你测试{/gg}
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-9 08:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表