Project1

标题: RPG maker xp 全按键调用脚本,请问要怎么用? [打印本页]

作者: violinflute    时间: 2010-6-18 15:23
标题: RPG maker xp 全按键调用脚本,请问要怎么用?
RPG maker xp 全按键调用脚本,请问要怎么用啊?
我在main前面插入一个空脚本,命名为“全按键调用”,然后把下面的脚本内容复制进去,然后呢……?还要什么命令才能调用新按键?以及设置新按键的作用功能?
大家路过的,飘过的,踩过的...帮帮忙撒~~!感激不尽~

脚本内容:
#==============================================================================
# 本脚本来自http://tyrpg.5d6d.com/,使用和转载请保留此信息
#==============================================================================
#==============================================================================
# ■ Keyboard Script
#------------------------------------------------------------------------------
#  全键盘按键调用脚本 By: 夏娜 完善:RPG-XP
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#   使用方法见发布页
#==============================================================================
module Kboard
  #----------------------------------------------------------------------------
  # ● 设置所需按键,以下是全键盘按键列表。
  #----------------------------------------------------------------------------
    $BACK          = 0x08        # ← BACKSPACE 按键
  $TAB           = 0x09        # TAB 按键
  $RETURN        = 0x0D        # 回车键
  $SHIFT         = 0x10        # SHIFT 按键
  $CTLR          = 0x11        # Ctrl 按键
  $ALT           = 0x12        # ALT 按键
  $PAUSE         = 0x13        # Pause Break 按键
  $CAPITAL       = 0x14        # 大写/小写 转换键
  $ESCAPE        = 0x1B        # ESC 按键
  $SPACE         = 0x20        # 空格键
  $PRIOR         = 0x21        # PAGE UP 按键
  $NEXT          = 0x22        # PAGE DOWN 按键
  $ENDKEY        = 0x23        # END 按键
  $HOME          = 0x24        # HOME 按键
  $LEFT          = 0x25        # ← 按键
  $UP            = 0x26        # → 按键
  $RIGHT         = 0x27        # ↑ 按键
  $DOWN          = 0x28        #  ↓ 按键
  $SELECT        = 0x29        # select 按键(这是……)
  $PRINT         = 0x2A        # PRINT 按键
  $SNAPSHOT      = 0x2C        # PRINT SCREEN 按键
  $INSERT        = 0x2D        # Insert 按键
  $DELETE        = 0x2E        # Delete 按键
  $Key_0         = 0x30        # 左边数字面板的数字 0 按键
  $Key_1         = 0x31        # 左边数字面板的数字 1 按键
  $Key_2         = 0x32        # 左边数字面板的数字 2 按键
  $Key_3         = 0x33        # 左边数字面板的数字 3 按键
  $Key_4         = 0x34        # 左边数字面板的数字 4 按键
  $Key_5         = 0x35        # 左边数字面板的数字 5 按键
  $Key_6         = 0x36        # 左边数字面板的数字 6 按键
  $Key_7         = 0x37        # 左边数字面板的数字 7 按键
  $Key_8         = 0x38        # 左边数字面板的数字 8 按键
  $Key_9         = 0x39        # 左边数字面板的数字 9 按键
  $A             = 0x41        # 字母 A 按键
  $B             = 0x42        # 字母 B 按键
  $C             = 0x43        # 字母 C 按键
  $D             = 0x44        # 字母 D 按键
  $E             = 0x45        # 字母 E 按键
  $F             = 0x46        # 字母 F 按键
  $G             = 0x47        # 字母 G 按键
  $H             = 0x48        # 字母 H 按键
  $I             = 0x49        # 字母 I 按键
  $J             = 0x4A        # 字母 J 按键
  $K             = 0x4B        # 字母 K 按键
  $L             = 0x4C        # 字母 L 按键
  $M             = 0x4D        # 字母 M 按键
  $N             = 0x4E        # 字母 N 按键
  $O             = 0x4F        # 字母 O 按键
  $P             = 0x50        # 字母 P 按键
  $Q             = 0x51        # 字母 Q 按键
  $R             = 0x52        # 字母 R 按键
  $S             = 0x53        # 字母 S 按键
  $T             = 0x54        # 字母 T 按键
  $U             = 0x55        # 字母 U 按键
  $V             = 0x56        # 字母 V 按键
  $W             = 0x57        # 字母 W 按键
  $X             = 0x58        # 字母 X 按键
  $Y             = 0x59        # 字母 Y 按键
  $Z             = 0x5A        # 字母 Z 按键
  $LWIN          = 0x5B        # 左边开始界面视窗按键(微软自然键盘)
  $RWIN          = 0x5C        # 右边开始界面视窗按键(微软自然键盘)
  $APPS          = 0x5D     # (自然键盘)这个键的称呼我不知道,但它如同于鼠标右键。
  $Key_NUMPAD0   = 0x60        # 右边数字面板的数字 0 按键
  $Key_NUMPAD1   = 0x61        # 右边数字面板的数字 1 按键
  $Key_NUMPAD2   = 0x62        # 右边数字面板的数字 2 按键
  $Key_NUMPAD3   = 0x63        # 右边数字面板的数字 3 按键
  $Key_NUMPAD4   = 0x64        # 右边数字面板的数字 4 按键
  $Key_NUMPAD5   = 0x65        # 右边数字面板的数字 5 按键
  $Key_NUMPAD6   = 0x66        # 右边数字面板的数字 6 按键
  $Key_NUMPAD7   = 0x67        # 右边数字面板的数字 7 按键
  $Key_NUMPAD8   = 0x68        # 右边数字面板的数字 8 按键
  $Key_NUMPAD9   = 0x69        # 右边数字面板的数字 9 按键
  $Key_MULTIPLY  = 0x6A        # 乘号按键
  $ADD           = 0x6B        # 加号按键
  $SEPARATOR     = 0x6C        # Separator 按键
  $SUBTRACT      = 0x6D        # 减号按键
  $DECIMAL       = 0x6E        # Decimal 按键
  $DIVIDE        = 0x6F        # 除号按键
  $F1            = 0x70        # F1 按键
  $F2            = 0x71        # F2 按键
  $F3            = 0x72        # F3 按键
  $F4            = 0x73        # F4 按键
  $F5            = 0x74        # F5 按键
  $F6            = 0x75        # F6 按键
  $F7            = 0x76        # F7 按键
  $F8            = 0x77        # F8 按键
  $F9            = 0x78        # F9 按键
  $F10           = 0x79        # F10 按键
  $F11           = 0x7A        # F11 按键
  $F12           = 0x7B        # F12 按键
  $NUMLOCK       = 0x90        # NUM LOCK 按键
  $SCROLL        = 0x91        # SCROLL LOCK 按键
  $LSHIFT        = 0xA0        # 左边SHIFT按键
  $RSHIFT        = 0xA1        # 右边SHIFT按键
  $LCONTROL      = 0xA2        # 左边 CONTROL 按键
  $RCONTROL      = 0xA3        # 右边 CONTROL 按键
  $L_ALT         = 0xA4        # 左边 ALT 按键
  $R_ALT         = 0xA5        # 右边 ALT 按键
  $SEP           = 0xBC        # 逗号按键
  $DASH          = 0xBD        # 减号按键
  $DOTT          = 0xBE        # . 按键
  #--------------------------------------------------------------------------
module_function
  
  
@R_Key_Hash = {}
@R_Key_Repeat = {}

GetKeyState = Win32API.new("user32","GetAsyncKeyState",['I'],'I')
def press?(rkey)
   return GetKeyState.call(rkey) != 0
end

def repeat?(rkey)
   result = GetKeyState.call(rkey)
   if result != 0
     if @R_Key_Repeat[rkey].nil?
       @R_Key_Repeat[rkey] = 0
       return true
     end
     @R_Key_Repeat[rkey] += 1
   else
     @R_Key_Repeat[rkey] = nil
     @R_Key_Hash[rkey] = 0
   end
   if !@R_Key_Repeat[rkey].nil? and @R_Key_Repeat[rkey] > 4 # 4乃准确数字
     @R_Key_Repeat[rkey] = 0
     return true
   else
     return false
   end
end

def trigger?(rkey)
   result = GetKeyState.call(rkey)
   if @R_Key_Hash[rkey] == 1 and result != 0
     return false
   end
   if result != 0
     @R_Key_Hash[rkey] = 1
     return true
   else
     @R_Key_Hash[rkey] = 0
     return false
   end
end

end
#==============================================================================
# 本脚本来自http://tyrpg.5d6d.com/,使用和转载请保留此信息
#==============================================================================

*********以上就是脚本内容。**********




原网站上有使用说明,但是看不懂,貌似也没作用(可能是我弄错了吧= =#...)说明如下:

RMXP本身不可以调用全部键盘按键,用此脚本之后就可以了。难度中高,适合于对系统有较多改进,需要调用其他键盘按键的使用者。
突破RMXP的键盘按键限制。这回可以使用全部按键了,而且功能也大大提升了,不再是条件分歧里面那个连续按下判断了。

复制全部脚本内容,在Main脚本之前按insert,插入此脚本全部内容。
      1、Kboard.press?(key) 同 Input.press?(key)
      2、Kboard.repeat?(key) 同 Input.repeat?(key)
      3、Kboard.trigger?(key) 同 Input.trigger?(key)

若是要调用某个按键可在脚本中写下

if Input.trigger?(你所设置的按键)

end

注:“你所设置的按键”是指在脚本的按键列表中选择好你所设置的按键,在那一行的等号左边的全部字符。

若是要调用← BACKSPACE 按键就在脚本中写下

if Input.trigger?($BACK)

end



作者: 风雪优游    时间: 2010-6-18 16:17
首先你要清除你要设置些什么键,有什么作用。
作者: violinflute    时间: 2010-6-18 16:27
回复 风雪优游 的帖子
我一般玩这类游戏习惯:
用W、S、A、D控制上下左右,用小键盘数字完成确认、取消、菜单、对话之类的...
回车,空格,还有鼠标也想用……

现在按照RMXP设置的,反过来要左手菜单右手方向,实在不习惯- -#...

请教!~

   
作者: 夸克    时间: 2010-6-18 16:28
提示: 作者被禁止或删除 内容自动屏蔽
作者: violinflute    时间: 2010-6-18 16:37
回复 夸克 的帖子

那假如我要设置:当按下W键时角色向上运动,跟方向键等效的;按下4键时,角色跟NPC对话...这个怎么弄?
   
作者: 火ZHI意志    时间: 2010-6-18 18:19
本帖最后由 凌辰 于 2010-7-3 16:37 编辑

LS,这样的话就要修改系统脚本了
用事件页完成也行,不过很麻烦
4L,把那个if去掉也没关系,根本没必要多加一个
作者: 天帝·隳    时间: 2010-6-19 09:42
本帖最后由 天帝·隳 于 2010-6-19 09:45 编辑

回复 violinflute 的帖子

在脚本Game_Player的212至221行有如是行动判定:
  1.    case Input.dir4
  2.    when 2
  3.       move_down
  4.    when 4
  5.        move_left
  6.    when 6
  7.        move_right
  8.    when 8
  9.        move_up
  10.    end
复制代码
修改这里变成:
  1. if Kboard.trigger?($S)
  2.    move_down
  3. elsifKboard.trigger?($A)
  4.    move_left
  5. elsif Kboard.trigger?($D)
  6.    move_right
  7. elsif Kboard.trigger?($W)
  8.    move_up
  9. end
复制代码
就实现W、A、S、D控制上下左右了。

另外,同样为该脚本的265至269行,有脚本:
  1.   if Input.trigger?(Input::C)
  2.      # 判定为同位置以及正面的事件启动
  3.      check_event_trigger_here([0])
  4.      check_event_trigger_there([0,1,2])
  5.   end
复制代码
改为
  1.    if Kboard.trigger?($Key_4 )
  2.      # 判定为同位置以及正面的事件启动
  3.      check_event_trigger_here([0])
  4.      check_event_trigger_there([0,1,2])
  5.    end
复制代码
就实现按4键对话了。
作者: 逆鳞R    时间: 2010-6-19 12:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: 玛尔斯    时间: 2010-6-19 16:54
回复 夸克 的帖子

误导新人==||
    基本上要看他的脚本是什么类的。
把 “if” 去掉==||
已经是条件分歧了,不用再加一个了。。。
作者: 编程白痴    时间: 2010-6-20 16:05
我真的看不懂
作者: violinflute    时间: 2010-6-20 18:24
本帖最后由 凌辰 于 2010-7-3 16:39 编辑

回复 天帝·隳 的帖子
你的方法很管用~谢谢!

谢谢各位对咱新手这么热心地解答,呵呵~    我已经实现用任意按键操控游戏了!
非常感谢!~

作者: 一屋窑    时间: 2013-5-25 12:30
Input.trigger?($H)
按H不行呀




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1