查看: 1713|回复: 4

[已经解决] 帮忙改个键位,谢谢

[复制链接]
梦石
0
星屑
50
在线时间
439 小时
注册时间
2013-3-2
回帖
657
发表于 2013-12-3 12:46:14 | 显示全部楼层 |阅读模式

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

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

×
虽然@芯☆淡茹水 说对照全键盘脚本改
但是鄙人愚笨,改了之后一直出错
所以只能来求助了
请路过的大神帮忙或指点下
怎么把瞬移(键盘上的z键)改成(键盘上的a键)
谢谢

脚本如下
  1. #==============================================================================
  2. # ★【  瞬移  】★
  3. #==============================================================================
  4. #  by -> 芯☆淡如水
  5. #==============================================================================
  6. # ● 使用方法:复制该脚本,插入到 main 前。
  7. #==============================================================================
  8. #   瞬移!这个就不用多介绍了,常玩游戏的都知道其概念。
  9. #   如果实在不知道,请测试范例工程。
  10. #==============================================================================
  11. # ● 设置:
  12. #-----------------------------------------------------------------------------
  13. # 瞬移开启/关闭的开关 ID。
  14. TELEPORT_SWITCHE_ID = 1
  15. #------------------------------------------------------------------------------
  16. # 启动瞬移的按钮(A 对应键盘 Z 键)
  17. TELEPORT_INPOT = Input::A
  18. #-----------------------------------------------------------------------------
  19. # 瞬移时播放的动画 ID
  20. TELEPORT_ANIMATION_ID = 101
  21. #-----------------------------------------------------------------------------
  22. # 瞬移的距离(格,地图图块单元)
  23. TELEPORT_RANGE = 5
  24. #-----------------------------------------------------------------------------
  25. # 瞬移时地图画面的滚动速度(大地图才滚动)
  26. SCROLL_AGI = 5
  27. #-----------------------------------------------------------------------------
  28. # 瞬移消耗的 SP (消耗带头角色的 SP)
  29. TELEPORT_SP = 10
  30. #==============================================================================
  31. class Game_Character
  32.   #--------------------------------------------------------------------------
  33.   def teleport
  34.     actor = $game_party.actors[0]
  35.     if actor.sp < TELEPORT_SP
  36.       $game_system.se_play($data_system.buzzer_se)
  37.       return
  38.     end
  39.     case @direction
  40.     when 2
  41.       new_x = @x
  42.       new_y = @y + TELEPORT_RANGE
  43.       while ! passable?(new_x, new_y, 0)
  44.         break if new_y == @y
  45.         new_y -= 1
  46.       end
  47.       distance = (new_y - @y).abs
  48.     when 4
  49.       new_x = @x - TELEPORT_RANGE
  50.       new_y = @y
  51.       while ! passable?(new_x, new_y, 0)
  52.         break if new_x == @x
  53.         new_x += 1
  54.       end
  55.       distance = (new_x - @x).abs
  56.     when 6
  57.       new_x = @x + TELEPORT_RANGE
  58.       new_y = @y
  59.       while ! passable?(new_x, new_y, 0)
  60.         break if new_x == @x
  61.         new_x -= 1
  62.       end
  63.       distance = (new_x - @x).abs
  64.     when 8
  65.       new_x = @x
  66.       new_y = @y - TELEPORT_RANGE
  67.       while ! passable?(new_x, new_y, 0)
  68.         break if new_y == @y
  69.         new_y += 1
  70.       end
  71.       distance = (new_y - @y).abs
  72.     end
  73.     actor.sp -= TELEPORT_SP
  74.     $game_player.animation_id = TELEPORT_ANIMATION_ID
  75.     @real_x = new_x * 128
  76.     @real_y = new_y * 128
  77.     $game_map.start_scroll(@direction, distance, SCROLL_AGI)
  78.     @x = new_x
  79.     @y = new_y
  80.   end
  81. end
  82. #==============================================================================
  83. class Scene_Map
  84.   #--------------------------------------------------------------------------
  85.   alias add_update_xdrs update
  86.   def update
  87.     if Input.trigger?(TELEPORT_INPOT)
  88.       $game_player.teleport if $game_switches[TELEPORT_SWITCHE_ID]
  89.     end
  90.     add_update_xdrs
  91.   end
  92. end
  93. #==============================================================================
复制代码

曾经的美好已不在   吾只能独自回忆
【RMXP共享】50个脚本整合的系统
梦石
0
星屑
50
在线时间
197 小时
注册时间
2011-6-10
回帖
216
发表于 2013-12-3 14:21:56 | 显示全部楼层
全键盘脚本64行,分明写着$R_Key_A         = 0x41        # A key
然后是脚本上面的解释:
Kboard.keyboard(键位)  返回是否按下这个键的判断。
#     比如条件分歧:Kboard.keyboard($R_Key_H)
#                   则当按下键盘H键的时候条件分歧成立
还用我说吗。。。

评分

参与人数 1星屑 +60 收起 理由
myownroc + 60 塞糖

查看全部评分

特点:懒
特性:懒
爱好:潜水

《巴雅前奏曲》目前已完成,正在挖学美工……
新坑:目前正制作中0 0
回复

使用道具 举报

老黄鸡

梦石
4
星屑
45753
在线时间
7953 小时
注册时间
2009-7-6
回帖
13338

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 2013-12-3 15:23:48 | 显示全部楼层
把17行的Input::A改成Input::X

点评

谢谢,原来我理解错了,之前改成$R_Key_V一直出错;非常感谢  发表于 2013-12-3 19:54

评分

参与人数 2星屑 +72 收起 理由
myownroc + 60 认可答案
guoyq1988 + 12 认可答案

查看全部评分

RGDirect - DirectX驱动的RGSS,点我了解.
(排满,暂停)RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

梦石
0
星屑
50
在线时间
378 小时
注册时间
2013-10-14
回帖
213
发表于 2013-12-3 15:56:30 | 显示全部楼层
本帖最后由 batfjtn 于 2013-12-3 16:02 编辑

[pre lang="ruby" line="1"]全键盘脚本:
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================

#============================================================================
# ■ Keyboard Script
#----------------------------------------------------------------------------
#  By: Cybersam
#   Date: 25/05/05
#   Version 4
#============================================================================
# 66对此脚本使用方法的说明(可能不是很准确,反正大体能用):
#
# ★、Kboard.keyboard(键位)  返回是否按下这个键的判断。
#     比如条件分歧:Kboard.keyboard($R_Key_H)
#                   则当按下键盘H键的时候条件分歧成立
#
# ★、Kboard.keyb(键位) == 1 当连续按住某键返回真,否则为false
#     比如条件分歧:Kboard.keyb($R_Key_U) == 1
#                   则当持续按下键盘U的时候条件分歧成立
#
# ★、Kboard.key(键位,1) 似乎可以做开关用。按下一次变为true,再按变false
#============================================================================

module Kboard
  #==========================================================================
  # 以下是全键盘按键列表
  #--------------------------------------------------------------------------
  $Rmouse_BUTTON_L = 0x01        # left mouse button
  $Rmouse_BUTTON_R = 0x02        # right mouse button
  $Rmouse_BUTTON_M = 0x04        # middle mouse button
  $Rmouse_BUTTON_4 = 0x05        # 4th mouse button
  $Rmouse_BUTTON_5 = 0x06        # 5th mouse button
  #--------------------------------------------------------------------------
  $R_Key_BACK      = 0x08        # BACKSPACE key
  $R_Key_TAB       = 0x09        # TAB key
  $R_Key_RETURN    = 0x0D        # ENTER key
  $R_Key_SHIFT     = 0x10        # SHIFT key
  #$R_Key_CTLR      = 0x11        # CTLR key
  $R_Key_ALT       = 0x12        # ALT key
  $R_Key_PAUSE     = 0x13        # PAUSE key
  $R_Key_CAPITAL   = 0x14        # CAPS LOCK key
  $R_Key_ESCAPE    = 0x1B        # ESC key
  $R_Key_SPACE     = 0x20        # SPACEBAR
  $R_Key_PRIOR     = 0x21        # PAGE UP key
  $R_Key_NEXT      = 0x22        # PAGE DOWN key
  $R_Key_END       = 0x23        # END key
  $R_Key_HOME      = 0x24        # HOME key
  $R_Key_LEFT      = 0x25        # LEFT ARROW key
  $R_Key_UP        = 0x26        # UP ARROW key
  $R_Key_RIGHT     = 0x27        # RIGHT ARROW key
  $R_Key_DOWN      = 0x28        # DOWN ARROW key
  $R_Key_SELECT    = 0x29        # SELECT key
  $R_Key_PRINT     = 0x2A        # PRINT key
  $R_Key_SNAPSHOT  = 0x2C        # PRINT SCREEN key
  $R_Key_INSERT    = 0x2D        # INS key
  $R_Key_DELETE    = 0x2E        # DEL key
  #--------------------------------------------------------------------------
  $R_Key_0         = 0x30        # 0 key
  $R_Key_1         = 0x31        # 1 key
  $R_Key_2         = 0x32        # 2 key
  $R_Key_3         = 0x33        # 3 key
  $R_Key_4         = 0x34        # 4 key
  $R_Key_5         = 0x35        # 5 key
  $R_Key_6         = 0x36        # 6 key
  $R_Key_7         = 0x37        # 7 key
  $R_Key_8         = 0x38        # 8 key
  $R_Key_9         = 0x39        # 9 key
  #--------------------------------------------------------------------------
  $R_Key_A         = 0x41        # A key
  $R_Key_B         = 0x42        # B key
  $R_Key_C         = 0x43        # C key
  $R_Key_D         = 0x44        # D key
  $R_Key_E         = 0x45        # E key
  $R_Key_F         = 0x46        # F key
  $R_Key_G         = 0x47        # G key
  $R_Key_H         = 0x48        # H key
  $R_Key_I         = 0x49        # I key
  $R_Key_J         = 0x4A        # J key
  $R_Key_K         = 0x4B        # K key
  $R_Key_L         = 0x4C        # L key
  $R_Key_M         = 0x4D        # M key
  $R_Key_N         = 0x4E        # N key
  $R_Key_O         = 0x4F        # O key
  $R_Key_P         = 0x50        # P key
  $R_Key_Q         = 0x51        # Q key
  $R_Key_R         = 0x52        # R key
  $R_Key_S         = 0x53        # S key
  $R_Key_T         = 0x54        # T key
  $R_Key_U         = 0x55        # U key
  $R_Key_V         = 0x56        # V key
  $R_Key_W         = 0x57        # W key
  $R_Key_X         = 0x58        # X key
  $R_Key_Y         = 0x59        # Y key
  $R_Key_Z         = 0x5A        # Z key
  #--------------------------------------------------------------------------
  $R_Key_LWIN      = 0x5B        # Left Windows key (Microsoft Natural keyboard)
  $R_Key_RWIN      = 0x5C        # Right Windows key (Natural keyboard)
  $R_Key_APPS      = 0x5D        # Applications key (Natural keyboard)
  #--------------------------------------------------------------------------
  $R_Key_NUMPAD0   = 0x60        # Numeric keypad 0 key
  $R_Key_NUMPAD1   = 0x61        # Numeric keypad 1 key
  $R_Key_NUMPAD2   = 0x62        # Numeric keypad 2 key
  $R_Key_NUMPAD3   = 0x63        # Numeric keypad 3 key
  $R_Key_NUMPAD4   = 0x64        # Numeric keypad 4 key
  $R_Key_NUMPAD5   = 0x65        # Numeric keypad 5 key
  $R_Key_NUMPAD6   = 0x66        # Numeric keypad 6 key
  $R_Key_NUMPAD7   = 0x67        # Numeric keypad 7 key
  $R_Key_NUMPAD8   = 0x68        # Numeric keypad 8 key
  $R_Key_NUMPAD9  = 0x69        # Numeric keypad 9 key
  $R_Key_MULTIPLY  = 0x6A        # Multiply key (*)
  $R_Key_ADD       = 0x6B        # Add key (+)
  $R_Key_SEPARATOR = 0x6C        # Separator key
  $R_Key_SUBTRACT  = 0x6D        # Subtract key (-)
  $R_Key_DECIMAL   = 0x6E        # Decimal key
  $R_Key_DIVIDE    = 0x6F        # Divide key (/)
  #--------------------------------------------------------------------------
  $R_Key_F1        = 0x70        # F1 key
  $R_Key_F2        = 0x71        # F2 key
  $R_Key_F3        = 0x72        # F3 key
  $R_Key_F4        = 0x73        # F4 key
  $R_Key_F5        = 0x74        # F5 key
  $R_Key_F6        = 0x75        # F6 key
  $R_Key_F7        = 0x76        # F7 key
  $R_Key_F8        = 0x77        # F8 key
  $R_Key_F9        = 0x78        # F9 key
  $R_Key_F10       = 0x79        # F10 key
  $R_Key_F11       = 0x7A        # F11 key
  $R_Key_F12       = 0x7B        # F12 key
  #--------------------------------------------------------------------------
  $R_Key_NUMLOCK   = 0x90        # NUM LOCK key
  $R_Key_SCROLL    = 0x91        # SCROLL LOCK key
  #--------------------------------------------------------------------------
  $R_Key_LSHIFT    = 0xA0        # Left SHIFT key
  $R_Key_RSHIFT    = 0xA1        # Right SHIFT key
  $R_Key_LCONTROL  = 0xA2        # Left CONTROL key
  $R_Key_RCONTROL  = 0xA3        # Right CONTROL key
  $R_Key_L_ALT    = 0xA4        # Left ALT key
  $R_Key_R_ALT    = 0xA5        # Right ALT key
  #--------------------------------------------------------------------------
  $R_Key_SEP      = 0xBC        # , key
  $R_Key_DASH      = 0xBD        # - key
  $R_Key_DOTT      = 0xBE        # . 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 keyb(rkey)
     if GetKeyState.call(rkey) != 0
       return 1
     end
     return 0
  end
   #--------------------------------------------------------------------------
  def keyboard(rkey)
    GetKeyState.call(rkey) & 0x01 == 1  #
  end
  #--------------------------------------------------------------------------
  def key(rkey, key = 0)
    GetKeyboardState.call(rkey) & 0x01 == key #
  end
end

#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
[/pre]

全键盘加强
[pre lang="ruby" line="1"]#1、Kboard.press?(key) 同 Input.press?(key)
#2、Kboard.repeat?(key) 同 Input.repeat?(key)
#3、Kboard.trigger?(key) 同 Input.trigger?(key)


module Kboard

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


[/pre]
键盘加好后...


修改87行

class Scene_Map
  #--------------------------------------------------------------------------
  alias add_update_xdrs update
  def update
    if Input.trigger?(TELEPORT_INPOT)
      $game_player.teleport if $game_switches[TELEPORT_SWITCHE_ID]
    end
    add_update_xdrs
  end
end

把if Input.trigger?(TELEPORT_INPOT)

改为

if Kboard.trigger?($R_Key_M)

就OK了...

这样就按M~~!!!

可以对照上面的去修改~~!!!

2更:

修改好的~!快键为M键~~!

[pre lang="ruby" line="1"]#==============================================================================
# ★【  瞬移  】★
#==============================================================================
#  by -> 芯☆淡如水
#==============================================================================
# ● 使用方法:复制该脚本,插入到 main 前。
#==============================================================================
#   瞬移!这个就不用多介绍了,常玩游戏的都知道其概念。
#   如果实在不知道,请测试范例工程。
#==============================================================================
# ● 设置:
#-----------------------------------------------------------------------------
# 瞬移开启/关闭的开关 ID。
TELEPORT_SWITCHE_ID = 1
#------------------------------------------------------------------------------
# 启动瞬移的按钮(A 对应键盘 Z 键)
TELEPORT_INPOT = Input::A
#-----------------------------------------------------------------------------
# 瞬移时播放的动画 ID
TELEPORT_ANIMATION_ID = 101
#-----------------------------------------------------------------------------
# 瞬移的距离(格,地图图块单元)
TELEPORT_RANGE = 5
#-----------------------------------------------------------------------------
# 瞬移时地图画面的滚动速度(大地图才滚动)
SCROLL_AGI = 5
#-----------------------------------------------------------------------------
# 瞬移消耗的 SP (消耗带头角色的 SP)
TELEPORT_SP = 10
#==============================================================================
class Game_Character
  #--------------------------------------------------------------------------
  def teleport
    actor = $game_party.actors[0]
    if actor.sp < TELEPORT_SP
      $game_system.se_play($data_system.buzzer_se)
      return
    end
    case @direction
    when 2
      new_x = @x
      new_y = @y + TELEPORT_RANGE
      while ! passable?(new_x, new_y, 0)
        break if new_y == @y
        new_y -= 1
      end
      distance = (new_y - @y).abs
    when 4
      new_x = @x - TELEPORT_RANGE
      new_y = @y
      while ! passable?(new_x, new_y, 0)
        break if new_x == @x
        new_x += 1
      end
      distance = (new_x - @x).abs
    when 6
      new_x = @x + TELEPORT_RANGE
      new_y = @y
      while ! passable?(new_x, new_y, 0)
        break if new_x == @x
        new_x -= 1
      end
      distance = (new_x - @x).abs
    when 8
      new_x = @x
      new_y = @y - TELEPORT_RANGE
      while ! passable?(new_x, new_y, 0)
        break if new_y == @y
        new_y += 1
      end
      distance = (new_y - @y).abs
    end
    actor.sp -= TELEPORT_SP
    $game_player.animation_id = TELEPORT_ANIMATION_ID
    @real_x = new_x * 128
    @real_y = new_y * 128
    $game_map.start_scroll(@direction, distance, SCROLL_AGI)
    @x = new_x
    @y = new_y
  end
end
#==============================================================================
class Scene_Map
  #--------------------------------------------------------------------------
  alias add_update_xdrs update
  def update
    if Kboard.trigger?($R_Key_M)
      $game_player.teleport if $game_switches[TELEPORT_SWITCHE_ID]
    end
    add_update_xdrs
  end
end
#==============================================================================[/pre]

评分

参与人数 2星屑 +87 收起 理由
myownroc + 75 认可答案
guoyq1988 + 12 塞糖,辛苦了

查看全部评分

最简单的学习方法就是努力回答别人的问题...
任何教程都没有实践来的重要...
XP小问题都能自己解决了,剩下的就是脚本了...
╰⋛⋋⊱⋋๑角⊱☠c色๑⋌⊰⋌⋚╯
回复

使用道具 举报

梦石
0
星屑
50
在线时间
439 小时
注册时间
2013-3-2
回帖
657
 楼主| 发表于 2013-12-3 20:00:07 | 显示全部楼层
谢谢三位解答,问题解决了
@myownroc 结贴

曾经的美好已不在   吾只能独自回忆
【RMXP共享】50个脚本整合的系统
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部