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

Project1

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

[RMVX发布] 【不是创意的创意】锁定移动并读取方向

[复制链接]

Lv3.寻梦者 (暗夜天使)

精灵族の天使

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

开拓者贵宾

跳转到指定楼层
1
发表于 2011-10-23 22:50:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 精灵使者 于 2011-10-24 13:41 编辑

应某些人所求做了这个脚本。应该能实现基本功能了。
打开指定的开关,角色移动锁定,并读取方向值到一指定的变量里。
恩,我设置了关闭开关以后会自动清除方向变量的值。
就酱紫,上脚本!
  1. #===========================================================================
  2. #锁定角色移动并读取方向的值 for VX v 1.0
  3. #
  4. #创意:炽幻 作者:精灵使者
  5. #
  6. #可以锁定角色移动并读取按下的方向键到一个变量中。
  7. #===========================================================================
  8.   #--------------------------------------------------------------------------
  9.   # ● 设定部分
  10.   #--------------------------------------------------------------------------
  11.   module LOCK_CHAR
  12.     LOCK_SWITCH = 1 #打开锁定的开关
  13.   DIRECTION_VARIABLE = 1 # 方向键值所代表的变量。下2左4右6上8
  14.   end

  15. #==============================================================================
  16. # ■ Game_Player
  17. #------------------------------------------------------------------------------
  18. #  处理主角的类。事件启动的判定、以及地图的滚动等功能。
  19. # 本类的实例请参考 $game_player。
  20. #==============================================================================

  21. class Game_Player < Game_Character
  22.   #--------------------------------------------------------------------------
  23.   # ● 方向键移动处理
  24.   #--------------------------------------------------------------------------
  25.   def move_by_input
  26.     return unless movable?
  27.     return if $game_map.interpreter.running?
  28.     case Input.dir4
  29.     when 2
  30.       if $game_switches[LOCK_CHAR::LOCK_SWITCH]
  31.         $game_variables[LOCK_CHAR::DIRECTION_VARIABLE] = 2
  32.         return
  33.       else
  34.         $game_variables[LOCK_CHAR::DIRECTION_VARIABLE] = 0
  35.         move_down
  36.       end
  37.       $game_map.need_refresh = true
  38.     when 4
  39.       if $game_switches[LOCK_CHAR::LOCK_SWITCH]
  40.         $game_variables[LOCK_CHAR::DIRECTION_VARIABLE] = 4
  41.         return
  42.       else
  43.         $game_variables[LOCK_CHAR::DIRECTION_VARIABLE] = 0
  44. ;       move_left
  45.        end
  46.         $game_map.need_refresh = true
  47.     when 6
  48.       if $game_switches[LOCK_CHAR::LOCK_SWITCH]
  49.         $game_variables[LOCK_CHAR::DIRECTION_VARIABLE] = 6
  50.         return
  51.       else
  52.         $game_variables[LOCK_CHAR::DIRECTION_VARIABLE] = 0
  53. ;       move_right
  54.       end
  55.       $game_map.need_refresh = true
  56.     when 8
  57.       if $game_switches[LOCK_CHAR::LOCK_SWITCH]
  58.         $game_variables[LOCK_CHAR::DIRECTION_VARIABLE] = 8
  59.         return
  60.       else
  61.         $game_variables[LOCK_CHAR::DIRECTION_VARIABLE] = 0
  62. ;       move_up
  63.       end
  64.      end
  65.       $game_map.need_refresh = true
  66.   end
  67. end
复制代码
范例工程下载: 移动锁定读取方向.rar (240.29 KB, 下载次数: 115)
截图效果:

Lv1.梦旅人

被遗忘の机器

梦石
0
星屑
73
在线时间
402 小时
注册时间
2010-7-24
帖子
1492
2
发表于 2011-10-23 22:57:18 | 只看该作者
我这也有个方案,你看看如何XD

脚本源.rar

239.75 KB, 下载次数: 44

点评

已经在Q上讨论了恩  发表于 2011-10-23 23:23
【镇楼】少年吃我大屌
回复 支持 反对

使用道具 举报

Lv2.观梦者

(?????)

梦石
0
星屑
728
在线时间
1327 小时
注册时间
2011-7-18
帖子
3184

贵宾

3
发表于 2011-10-24 03:07:38 | 只看该作者
本帖最后由 各种压力的猫君 于 2011-10-24 03:56 编辑

揪虫:下2左4右6上9 这里错了……上是8才对……

应该是终极进化版了 - - +
  1. #==============================================================================
  2. # ■ 锁定移动并读取方向键到变量 v1.0_3改
  3. #------------------------------------------------------------------------------
  4. #  创意:炽幻  原版:精灵使者 修改:各种压力的猫君
  5. #------------------------------------------------------------------------------
  6. #   改版特点:
  7. #   拥有原版的全部功能,并在此基础上扩展读取0值和8方向的选项,
  8. #   是否读取0值和读取4方向或8方向均可在游戏运行时设定。
  9. #   如果你使用了八方向移动脚本,请将本脚本置于八方向脚本以下。
  10. #------------------------------------------------------------------------------
  11. #   2011-10-24 v1.0_3改  扩充为8方向读取(可选)
  12. #   2011-10-24 v1.0_2改  完善注释,继续简化脚本,考虑到需要修改的
  13. #                        情况,将读取值设定由常量变更为全局变量。
  14. #   2011-10-24 v1.0_改   大幅简化脚本,新增是否读取0值的设定。
  15. #   2011-10-23 v1.0      原版 by 精灵使者
  16. #------------------------------------------------------------------------------
  17. #   数字的方向对应:(0表示无方向键按下)
  18. #   789 ↖↑↗
  19. #   406 ← →
  20. #   123 ↙↓↘
  21. #==============================================================================
  22. module LOCK_CHAR
  23.   # 开启脚本功能的开关编号
  24.   LOCK_SWITCH = 1
  25.   # 方向键值带入的变量编号
  26.   DIRECTION_VARIABLE = 1
  27.   # 读取值设定(1:读取所有值 2:读取除0的值)
  28.   $lock_char_read_type1 = 1
  29.   # 读取方向设定(4:四方向 8:八方向)
  30.   $lock_char_read_type2 = 8
  31. end
  32. #==============================================================================
  33. class Game_Player < Game_Character
  34.   #--------------------------------------------------------------------------
  35.   # ● 方向键移动处理
  36.   #--------------------------------------------------------------------------
  37.   alias old_move_by_input move_by_input
  38.   def move_by_input
  39. #==============================================================================
  40.     # 若开关被打开,本脚本开始工作
  41.     if $game_switches[LOCK_CHAR::LOCK_SWITCH]
  42.       # 读取4方向的情况
  43.       if $lock_char_read_type2 == 4
  44.         lock_char_read = Input.dir4
  45.       # 读取8方向的情况
  46.       elsif $lock_char_read_type2 == 8
  47.         lock_char_read = Input.dir8
  48.       end
  49.       # 将方向键操作带入变量
  50.       # 但脚本使用类型设为2且当前无按键按下(值为0)的情况除外
  51.       $game_variables[LOCK_CHAR::DIRECTION_VARIABLE] = lock_char_read unless lock_char_read == 0 and $lock_char_read_type1 == 2
  52.       # 返回(不移动)
  53.       return
  54.     end
  55. #==============================================================================
  56.     old_move_by_input
  57.   end
  58. end
复制代码
3改范例: 锁定移动并读取方向键到变量 v1.0_3改.zip (251.98 KB, 下载次数: 43)
即使没有使用8方向移动脚本依然可以读取8方向
2011-10-24 3:52:00 3改紧急修正:脚本51行“$lock_char_read_type”应为“$lock_char_read_type1”&注释的一处笔误。请重新复制脚本/下载范例。
另附:原版的精简版(不含注释仅14行),功能与原版完全一致
  1. #==============================================================================
  2. # ■ 锁定移动并读取方向键到变量 v1.0 精简版
  3. #------------------------------------------------------------------------------
  4. #  创意:炽幻  原版:精灵使者 精简:各种压力的猫君
  5. #------------------------------------------------------------------------------
  6. #   方向键值所代表的变量:下2左4右6上8。
  7. #==============================================================================
  8. module LOCK_CHAR
  9.   # 开启脚本功能的开关编号
  10.   LOCK_SWITCH = 1
  11.   # 方向键值带入的变量编号
  12.   DIRECTION_VARIABLE = 1
  13. end
  14. #==============================================================================
  15. class Game_Player < Game_Character
  16.   #--------------------------------------------------------------------------
  17.   # ● 方向键移动处理
  18.   #--------------------------------------------------------------------------
  19.   alias old_move_by_input move_by_input
  20.   def move_by_input
  21. #==============================================================================
  22.     # 若开关被打开,本脚本开始工作
  23.     if $game_switches[LOCK_CHAR::LOCK_SWITCH]
  24.       # 将方向键操作带入变量,值为0除外
  25.       $game_variables[LOCK_CHAR::DIRECTION_VARIABLE] = Input.dir4 unless Input.dir4 == 0
  26.       # 返回(不移动)
  27.       return
  28. #==============================================================================
  29.     end
  30.     old_move_by_input
  31.   end
  32. end
复制代码
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

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

开拓者贵宾

4
 楼主| 发表于 2011-10-24 13:42:19 | 只看该作者
本帖最后由 精灵使者 于 2011-10-24 13:57 编辑

精灵提问:Input.dir4的保留时限是什么?
是不是放开方向键这个值就恢复为零?
(因为这个我才不用这个dir4来着)
另外提示:变量更新以后不更新地图,所以请及时用need_refresh来更新地图
  1. #==============================================================================
  2. # ■ 锁定移动并读取方向键到变量 v1.0 精简版
  3. #------------------------------------------------------------------------------
  4. #  创意:炽幻  原版:精灵使者 精简:各种压力的猫君
  5. #------------------------------------------------------------------------------
  6. #   方向键值所代表的变量:下2左4右6上8。
  7. #==============================================================================
  8. module LOCK_CHAR
  9.   # 开启脚本功能的开关编号
  10.   LOCK_SWITCH = 1
  11.   # 方向键值带入的变量编号
  12.   DIRECTION_VARIABLE = 1
  13. end

  14. #==============================================================================
  15. class Game_Player < Game_Character
  16.   #--------------------------------------------------------------------------
  17.   # ● 方向键移动处理
  18. #--------------------------------------------------------------------------
  19.   alias old_move_by_input move_by_input
  20.   def move_by_input
  21. #==============================================================================
  22.     # 若开关被打开,本脚本开始工作
  23.    if  $game_switches[LOCK_CHAR::LOCK_SWITCH]
  24.      # 将方向键操作带入变量,值为0除外
  25.       $game_variables[LOCK_CHAR::DIRECTION_VARIABLE] = Input.dir4 unless Input.dir4 == 0
  26.       # 更新地图(触发变量改变需要的事件必须用这个)
  27.       $game_map.need_refresh = true
  28.             # 返回(不移动)
  29.       return
  30. #==============================================================================
  31.     end
  32.     old_move_by_input
  33.   end
  34. end
复制代码
  1. #==============================================================================
  2. # ■ 锁定移动并读取方向键到变量 v1.0_4改
  3. #------------------------------------------------------------------------------
  4. #  创意:炽幻  原版:精灵使者 修改:各种压力的猫君
  5. #------------------------------------------------------------------------------
  6. #   改版特点:
  7. #   拥有原版的全部功能,并在此基础上扩展读取0值和8方向的选项,
  8. #   是否读取0值和读取4方向或8方向均可在游戏运行时设定。
  9. #   如果你使用了八方向移动脚本,请将本脚本置于八方向脚本以下。
  10. #------------------------------------------------------------------------------
  11. #   2011-10-24 v1.0_4改  修复了移动的时候没有及时刷新地图的bug
  12. #   2011-10-24 v1.0_3改  扩充为8方向读取(可选)
  13. #   2011-10-24 v1.0_2改  完善注释,继续简化脚本,考虑到需要修改的
  14. #                        情况,将读取值设定由常量变更为全局变量。
  15. #   2011-10-24 v1.0_改   大幅简化脚本,新增是否读取0值的设定。
  16. #   2011-10-23 v1.0      原版 by 精灵使者
  17. #------------------------------------------------------------------------------
  18. #   数字的方向对应:(0表示无方向键按下)
  19. #   789 ↖↑↗
  20. #   406 ← →
  21. #   123 ↙↓↘
  22. #==============================================================================
  23. module LOCK_CHAR
  24.   # 开启脚本功能的开关编号
  25.   LOCK_SWITCH = 1
  26.   # 方向键值带入的变量编号
  27.   DIRECTION_VARIABLE = 1
  28.   # 读取值设定(1:读取所有值 2:读取除0的值)
  29.   $lock_char_read_type1 = 1
  30.   # 读取方向设定(4:四方向 8:八方向)
  31.   $lock_char_read_type2 = 8
  32. end
  33. #==============================================================================
  34. class Game_Player < Game_Character
  35.   #--------------------------------------------------------------------------
  36.   # ● 方向键移动处理
  37.   #--------------------------------------------------------------------------
  38.   alias old_move_by_input move_by_input
  39.   def move_by_input
  40. #==============================================================================
  41.     # 若开关被打开,本脚本开始工作
  42.     if $game_switches[LOCK_CHAR::LOCK_SWITCH]
  43.       # 读取4方向的情况
  44.       if $lock_char_read_type2 == 4
  45.         lock_char_read = Input.dir4
  46.       # 读取8方向的情况
  47.       elsif $lock_char_read_type2 == 8
  48.         lock_char_read = Input.dir8
  49.       end
  50.       # 将方向键操作带入变量
  51.       # 但脚本使用类型设为2且当前无按键按下(值为0)的情况除外
  52.       $game_variables[LOCK_CHAR::DIRECTION_VARIABLE] = lock_char_read unless lock_char_read == 0 and $lock_char_read_type1 == 2
  53.          #必要的情形刷新地图
  54.      $game_map.need_refresh = true
  55.          # 返回(不移动)
  56.       return
  57.     end
  58. #==============================================================================
  59.     old_move_by_input
  60.   end
  61. end
复制代码

点评

我是用公共事件来判断的....  发表于 2011-10-26 13:02
所以我才在主楼用自定义值  发表于 2011-10-24 15:44
没有键按下时值为零,因此我后面用了 unless Input.dir4 == 0  发表于 2011-10-24 15:17
回复 支持 反对

使用道具 举报

Lv1.梦旅人

水土火风重逢处

梦石
0
星屑
234
在线时间
691 小时
注册时间
2010-7-17
帖子
3042
5
发表于 2011-10-25 21:15:52 | 只看该作者
精灵前辈TAT
咱睡了一觉,然后开窍了...
发现只要用循环和等待再加上标签就可以实现了....

点评

可是某家大人说,想在全地图通用的。  发表于 2011-10-25 21:39
独坐望城,望断天涯
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 22:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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