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

Project1

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

如何让主角移动不能?

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
帖子
643
跳转到指定楼层
1
发表于 2009-1-6 06:24:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
在地图上按下C键,主角移动不能,再次按下C键,主角移动可
版务信息:本贴由楼主自主结贴~
最近在研究XAS

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
2
发表于 2009-1-6 07:04:18 | 只看该作者
给你写了个定做
不认可对不起我
  1. #========================================================================
  2. #按下回车不移动定做
  3. #可以更改开关 (第8行,默认101)打开时停用此功能
  4. #=====================================================================

  5. class Game_Player < Game_Character
  6.    def update
  7.      @swtf = 101
  8.     # 本地变量记录移动信息
  9.     last_moving = moving?
  10.     # 移动中、事件执行中、强制移动路线中、
  11.     # 信息窗口一个也不显示的时候
  12.     unless moving? or $game_system.map_interpreter.running? or
  13.            @move_route_forcing or $game_temp.message_window_showing
  14.       # 如果方向键被按下、主角就朝那个方向移动
  15.       if Input.press?(Input::C)==false and $game_switches[@swtf] ==false
  16.         case Input.dir4
  17.           when 2
  18.             move_down
  19.           when 4
  20.             move_left
  21.           when 6
  22.             move_right
  23.           when 8
  24.             move_up
  25.         end
  26.       end
  27.     end
  28.     # 本地变量记忆坐标
  29.     last_real_x = @real_x
  30.     last_real_y = @real_y
  31.     super
  32.     # 角色向下移动、画面上的位置在中央下方的情况下
  33.     if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
  34.       # 画面向下卷动
  35.       $game_map.scroll_down(@real_y - last_real_y)
  36.     end
  37.     # 角色向左移动、画面上的位置在中央左方的情况下
  38.     if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
  39.       # 画面向左卷动
  40.       $game_map.scroll_left(last_real_x - @real_x)
  41.     end
  42.     # 角色向右移动、画面上的位置在中央右方的情况下
  43.     if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
  44.       # 画面向右卷动
  45.       $game_map.scroll_right(@real_x - last_real_x)
  46.     end
  47.     # 角色向上移动、画面上的位置在中央上方的情况下
  48.     if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
  49.       # 画面向上卷动
  50.       $game_map.scroll_up(last_real_y - @real_y)
  51.     end
  52.     # 不在移动中的情况下
  53.     unless moving?
  54.       # 上次主角移动中的情况
  55.       if last_moving
  56.         # 与同位置的事件接触就判定为事件启动
  57.         result = check_event_trigger_here([1,2])
  58.         # 没有可以启动的事件的情况下
  59.         if result == false
  60.           # 调试模式为 ON 并且按下 CTRL 键的情况下除外
  61.           unless $DEBUG and Input.press?(Input::CTRL)
  62.             # 遇敌计数下降
  63.             if @encounter_count > 0
  64.               @encounter_count -= 1
  65.             end
  66.           end
  67.         end
  68.       end
  69.       # 按下 C 键的情况下
  70.       if Input.trigger?(Input::C)
  71.         # 判定为同位置以及正面的事件启动
  72.         check_event_trigger_here([0])
  73.         check_event_trigger_there([0,1,2])
  74.       end
  75.     end
  76.   end
  77.   end
复制代码

另外不知道你是否需要按下回车后任然能转向!这个不支持

如果你要的是按下回车键后可以转向的话

  1. #======================================================================
  2. #该脚本为定做脚本
  3. #其作用为按下回车键后角色不能移动,但是能转向
  4. #======================================================================

  5. class Game_Character
  6.   #--------------------------------------------------------------------------
  7.   # ● 向下移动
  8.   #     turn_enabled : 本场地位置更改许可标志
  9.   #--------------------------------------------------------------------------
  10.   def move_down(turn_enabled = true)
  11.     # 面向下
  12.     if turn_enabled
  13.       turn_down
  14.     end
  15.     # 可以通行的场合
  16.     if passable?(@x, @y, 2) and Input.press?(Input::C) == false
  17.       # 面向下
  18.       turn_down
  19.       # 更新坐标
  20.       @y += 1
  21.       # 增加步数
  22.       increase_steps
  23.     # 不能通行的情况下
  24.     else
  25.       # 接触事件的启动判定
  26.       check_event_trigger_touch(@x, @y+1)
  27.     end
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 向左移动
  31.   #     turn_enabled : 本场地位置更改许可标志
  32.   #--------------------------------------------------------------------------
  33.   def move_left(turn_enabled = true)
  34.     # 面向左
  35.     if turn_enabled
  36.       turn_left
  37.     end
  38.     # 可以通行的情况下
  39.     if passable?(@x, @y, 4) and Input.press?(Input::C) == false
  40.       # 面向左
  41.       turn_left
  42.       # 更新坐标
  43.       @x -= 1
  44.       # 增加步数
  45.       increase_steps
  46.     # 不能通行的情况下
  47.     else
  48.       # 接触事件的启动判定
  49.       check_event_trigger_touch(@x-1, @y)
  50.     end
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 向右移动
  54.   #     turn_enabled : 本场地位置更改许可标志
  55.   #--------------------------------------------------------------------------
  56.   def move_right(turn_enabled = true)
  57.     # 面向右
  58.     if turn_enabled
  59.       turn_right
  60.     end
  61.     # 可以通行的场合
  62.     if passable?(@x, @y, 6) and Input.press?(Input::C) == false
  63.       # 面向右
  64.       turn_right
  65.       # 更新坐标
  66.       @x += 1
  67.       # 增加部数
  68.       increase_steps
  69.     # 不能通行的情况下
  70.     else
  71.       # 接触事件的启动判定
  72.       check_event_trigger_touch(@x+1, @y)
  73.     end
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ● 向上移动
  77.   #     turn_enabled : 本场地位置更改许可标志
  78.   #--------------------------------------------------------------------------
  79.   def move_up(turn_enabled = true)
  80.     # 面向上
  81.     if turn_enabled
  82.       turn_up
  83.     end
  84.     # 可以通行的情况下
  85.     if passable?(@x, @y, 8) and Input.press?(Input::C) == false
  86.       # 面向上
  87.       turn_up
  88.       # 更新坐标
  89.       @y -= 1
  90.       # 歩数増加
  91.       increase_steps
  92.     # 不能通行的情况下
  93.     else
  94.       # 接触事件的启动判定
  95.       check_event_trigger_touch(@x, @y-1)
  96.     end
  97.   end
  98. end  
复制代码


最后要说的就是,事件调用移动也会受到操作的影响
解决方法是在事件移动之前打开对应开关,第二个脚本暂时没有开放禁用
需要联系我
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

綾川司の姫様<

梦石
0
星屑
50
在线时间
796 小时
注册时间
2007-12-20
帖子
4520

贵宾第3届短篇游戏大赛R剧及RMTV组亚军

3
发表于 2009-1-6 15:50:08 | 只看该作者
{/fd}还特别订做?有那个必要么,只是加兩小段脚本而已吧。
Game_Character 1找到125行def passable?(x, y, d)这一句,下面加一段
    if $stop == true
      @direction_fix = true
      return false
    else
      @direction_fix = false
      end

Game_Player里def update下面加一段
          if Input.trigger?(Input::C)
        if $stop == true
        $stop = false
      else
        $stop = true
        end
    end

即可。
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~

生命即是责任。自己即是世界。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-19 22:06

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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