- UID
- 748
- 帖子
- 800
- 主题
- 67
- 精华
- 0
- 积分
- 2064
- 历练
- 0
- 声望
- 43
- 人气
- 3
- 经验
- 1419
- 金钱
- 1713
- 注册时间
- 2010-8-26
- 最后登录
- 2022-10-31
- 在线时间
- 184 小时
- 阅读权限
- 50
TA的每日心情 | 无聊 2013-8-16 09:01 |
---|
签到天数: 161 天 [LV.7]常住仙友III - 精华
- 0
- 积分
- 2064
- 历练
- 0
- 声望
- 43
- 人气
- 3
|
本帖最后由 御剑奇侠 于 2010-11-9 19:42 编辑
-
- #==============================================================================
- # 本脚本来自www.66RPG.com,使用和转载请保留此信息
- #==============================================================================
- class Game_Player < Game_Character
- if $c3_总共可用的方向数 == 8
- def update
- last_moving = moving?
- unless moving? or $game_system.map_interpreter.running? or
- @move_route_forcing or $game_temp.message_window_showing
- # 用井号后面的东西替代前面的,就可以实现斜4方向走
- case Input.dir8
- when 2
- move_down #move_lower_left
- when 4
- move_left #move_upper_left
- when 6
- move_right #move_lower_right
- when 8
- move_up #move_upper_right
- when 1
- move_lower_left
- when 3
- move_lower_right
- when 7
- move_upper_left
- when 9
- move_upper_right
- end
- end
- # 本地变量记忆坐标
- last_real_x = @real_x
- last_real_y = @real_y
- super
- # 角色向下移动、画面上的位置在中央下方的情况下
- if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
- # 画面向下卷动
- $game_map.scroll_down(@real_y - last_real_y)
- end
- # 角色向左移动、画面上的位置在中央左方的情况下
- if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
- # 画面向左卷动
- $game_map.scroll_left(last_real_x - @real_x)
- end
- # 角色向右移动、画面上的位置在中央右方的情况下
- if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
- # 画面向右卷动
- $game_map.scroll_right(@real_x - last_real_x)
- end
- # 角色向上移动、画面上的位置在中央上方的情况下
- if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
- # 画面向上卷动
- $game_map.scroll_up(last_real_y - @real_y)
- end
- # 不在移动中的情况下
- unless moving?
- # 上次主角移动中的情况
- if last_moving
- # 与同位置的事件接触就判定为事件启动
- result = check_event_trigger_here([1,2])
- # 没有可以启动的事件的情况下
- if result == false
- # 调试模式为 ON 并且按下 CTRL 键的情况下除外
- unless $DEBUG and Input.press?(Input::CTRL)
- # 遇敌计数下降
- if @encounter_count > 0
- @encounter_count -= 1
- end
- end
- end
- end
- # 按下 C 键的情况下
- if Input.trigger?(Input::C)
- # 判定为同位置以及正面的事件启动
- check_event_trigger_here([0])
- check_event_trigger_there([0,1,2])
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 正面事件的启动判定
- #--------------------------------------------------------------------------
- def check_event_trigger_there(triggers)
- result = false
- # 事件执行中的情况下
- if $game_system.map_interpreter.running?
- return result
- end
- # 计算正面坐标
- new_x = @x
- new_y = @y
- case @direction
- when 1
- new_x -= 1
- new_y += 1
- when 2
- new_y += 1
- when 3
- new_x += 1
- new_y += 1
- when 4
- new_x -= 1
- when 6
- new_x += 1
- when 7
- new_x -= 1
- new_y -= 1
- when 8
- new_y -= 1
- when 9
- new_x += 1
- new_y -= 1
- end
- # 全部事件的循环
- for event in $game_map.events.values
- # 事件坐标与目标一致的情况下
- if event.x == new_x and event.y == new_y and
- triggers.include?(event.trigger)
- # 跳跃中以外的情况下、启动判定是正面的事件
- if not event.jumping? and not event.over_trigger?
- event.start
- result = true
- end
- end
- end
- # 找不到符合条件的事件的情况下
- if result == false
- # 正面的元件是计数器的情况下
- if $game_map.counter?(new_x, new_y)
- # 计算 1 元件里侧的坐标
- new_x += (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
- new_y += (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
- # 全事件的循环
- for event in $game_map.events.values
- # 事件坐标与目标一致的情况下
- if event.x == new_x and event.y == new_y and
- triggers.include?(event.trigger)
- # 跳跃中以外的情况下、启动判定是正面的事件
- if not event.jumping? and not event.over_trigger?
- event.start
- result = true
- end
- end
- end
- end
- end
- return result
- end
- #--------------------------------------------------------------------------
- # ● 向左下移动
- #--------------------------------------------------------------------------
- def move_lower_left
- # 没有固定面向的场合
- unless @direction_fix
- # 朝向是右的情况下适合的面是左面、朝向是上的情况下适合的面是下面
- @direction = 1#(@direction == 6 ? 4 : @direction == 8 ? 2 : @direction)
- end
- # 下→左、左→下
- 的通道可以通行的情况下
- if (passable?(@x, @y, 2) and passable?(@x, @y + 1, 4)) or
- (passable?(@x, @y, 4) and passable?(@x - 1, @y, 2))
- # 更新坐标
- @x -= 1
- @y += 1
- # 增加步数
- increase_steps
- else
- check_event_trigger_touch(@x-1, @y+1)
- end
- end
- #--------------------------------------------------------------------------
- # ● 向右下移动
- #--------------------------------------------------------------------------
- def move_lower_right
- # 没有固定面向的场合
- unless @direction_fix
- # 朝向是右的情况下适合的面是左面、朝向是上的情况下适合的面是下面
- @direction = 3#(@direction == 4 ? 6 : @direction == 8 ? 2 : @direction)
- end
- # 下→右、右→下
- 的通道可以通行的情况下
- if (passable?(@x, @y, 2) and passable?(@x, @y + 1, 6)) or
- (passable?(@x, @y, 6) and passable?(@x + 1, @y, 2))
- # 更新坐标
- @x += 1
- @y += 1
- # 增加步数
- increase_steps
- else
- check_event_trigger_touch(@x+1, @y+1)
- end
- end
- #--------------------------------------------------------------------------
- # ● 向左上移动
- #--------------------------------------------------------------------------
- def move_upper_left
- # 没有固定面向的场合
- unless @direction_fix
- # 朝向是右的情况下适合的面是左面、朝向是上的情况下适合的面是下面
- @direction = 7#(@direction == 6 ? 4 : @direction == 2 ? 8 : @direction)
- end
- # 上→左、左→上
- 的通道可以通行的情况下
- if (passable?(@x, @y, 8) and passable?(@x, @y - 1, 4)) or
- (passable?(@x, @y, 4) and passable?(@x - 1, @y, 8))
- # 更新坐标
- @x -= 1
- @y -= 1
- # 增加步数
- increase_steps
- else
- check_event_trigger_touch(@x-1, @y-1)
- end
- end
- #--------------------------------------------------------------------------
- # ● 向右上移动
- #--------------------------------------------------------------------------
- def move_upper_right
- # 没有固定面向的场合
- unless @direction_fix
- # 朝向是右的情况下适合的面是左面、朝向是上的情况下适合的面是下面
- @direction = 9#(@direction == 4 ? 6 : @direction == 2 ? 8 : @direction)
- end
- # 上→右、右→上 的通道可以通行的情况下
- if (passable?(@x, @y, 8) and passable?(@x, @y - 1, 6)) or
- (passable?(@x, @y, 6) and passable?(@x + 1, @y, 8))
- # 更新坐标
- @x += 1
- @y -= 1
- # 增加步数
- increase_steps
- else
- check_event_trigger_touch(@x+1, @y-1)
- end
- end
- #--------------------------------------------------------------------------
- # ● 雅土左下移動
- #--------------------------------------------------------------------------
- def move_lower_left_p
- unless @direction_fix
- @direction = 1
- end
- distance = (2 ** @move_speed) / Math.sqrt(2)
- turn_left unless down1(@x, @y, distance)
- turn_down if @event
- turn_down unless left1(@x, @y, distance) unless @event
- turn_left if @event
- end
- #--------------------------------------------------------------------------
- # ● 雅土右下移動
- #--------------------------------------------------------------------------
- def move_lower_right_p
- unless @direction_fix
- @direction = 3
- end
- distance = (2 ** @move_speed) / Math.sqrt(2)
- turn_right unless down1(@x, @y, distance)
- turn_down if @event
- turn_down unless right1(@x, @y, distance) unless @event
- turn_right if @event
- end
复制代码 |
|