Project1

标题: 【原创】飞吧小鸟!【2.0 移植自XP版】 [打印本页]

作者: 各种压力的猫君    时间: 2011-11-6 02:00
标题: 【原创】飞吧小鸟!【2.0 移植自XP版】
本帖最后由 各种压力的猫君 于 2011-11-26 23:51 编辑


应精灵要求移植自XP版(点我
和XP版同步维护。

脚本:
  1. #==============================================================================
  2. # ■ 小鸟 2.0 (FOR RMVX) by 各种压力的猫君
  3. #------------------------------------------------------------------------------
  4. #  小鸟会在主角一定距离之内飞行……
  5. #------------------------------------------------------------------------------
  6. #   使用说明:
  7. #   将本脚本插入Game_Character和Main之间,
  8. #   然后设置小鸟事件的移动路线为:(重复动作)
  9. #   ◇脚本:BIRD1("1"为小鸟的「种类」,可省略;"BIRD"可以在下面自定义)
  10. #------------------------------------------------------------------------------
  11. #   定义小鸟的「种类」,可以设定出不同远近的鸟儿(27行开始)
  12. #   注意:「种类」只可使用整数!
  13. #------------------------------------------------------------------------------
  14. # 2011-11-06 2.0 初版(移植自XP版,为维护方便版本号统一)
  15. #==============================================================================

  16. module Bird_Config
  17.   # 自定义识别符
  18.   SCRIPT_CODE = "BIRD"
  19.   # 设置小鸟和主角最近的距离(仅当未定义种类时使用该值)
  20.   BIRD_MIN_DISTANCE = 4
  21.   # 设置小鸟和主角最远的距离(仅当未定义种类时使用该值)
  22.   BIRD_MAX_DISTANCE = 10
  23. end

  24. class Game_Character
  25. #------------------------------------------------------------------------------
  26.   # 最近的距离
  27.   def bird_min_distance(type)
  28.     # 第1种
  29.     if type == 1
  30.       return 7
  31.     # 第2种
  32.     elsif type == 2
  33.       return 1
  34.     end
  35.     # 若未设定返回默认值
  36.     return Bird_Config::BIRD_MIN_DISTANCE
  37.   end
  38. #------------------------------------------------------------------------------
  39.   # 最远的距离
  40.   def bird_max_distance(type)
  41.     # 第1种
  42.     if type == 1
  43.       return 12
  44.     # 第2种
  45.     elsif type == 2
  46.       return 2
  47.     end
  48.     # 若未设定返回默认值
  49.     return Bird_Config::BIRD_MAX_DISTANCE
  50.   end
  51. #------------------------------------------------------------------------------


  52. "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"
  53. "┃        自定义内容到此结束,以下内容请谨慎修改!        ┃"
  54. "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"


  55.   def move_type_custom
  56.     if stopping?
  57.       command = @move_route.list[@move_route_index]   # Get movement command
  58.       @move_failed = false
  59.       if command.code == 0                            # End of list
  60.         if @move_route.repeat                         # [Repeat Action]
  61.           @move_route_index = 0
  62.         elsif @move_route_forcing                     # Forced move route
  63.           @move_route_forcing = false                 # Cancel forcing
  64.           @move_route = @original_move_route          # Restore original
  65.           @move_route_index = @original_move_route_index
  66.           @original_move_route = nil
  67.         end
  68.       else
  69.         case command.code
  70.         when 1    # 往下移动
  71.           move_down
  72.         when 2    # 往左移动
  73.           move_left
  74.         when 3    # 往右移动
  75.           move_right
  76.         when 4    # 往上移动
  77.           move_up
  78.         when 5    # 往左下移动
  79.           move_lower_left
  80.         when 6    # 往右下移动
  81.           move_lower_right
  82.         when 7    # 往左上移动
  83.           move_upper_left
  84.         when 8    # 往右上移动
  85.           move_upper_right
  86.         when 9    # 随机移动
  87.           move_random
  88.         when 10   # 接近主角
  89.           move_toward_player
  90.         when 11   # 远离主角
  91.           move_away_from_player
  92.         when 12   # 前进一步
  93.           move_forward
  94.         when 13   # 後退一步
  95.           move_backward
  96.         when 14   # 跳跃
  97.           jump(command.parameters[0], command.parameters[1])
  98.         when 15   # 等待
  99.           @wait_count = command.parameters[0] - 1
  100.         when 16   # 面向下
  101.           turn_down
  102.         when 17   # 面向左
  103.           turn_left
  104.         when 18   # 面向右
  105.           turn_right
  106.         when 19   # 面向上
  107.           turn_up
  108.         when 20   # 向右转 90 度
  109.           turn_right_90
  110.         when 21   # 向左转 90 度
  111.           turn_left_90
  112.         when 22   # 旋转 180 度
  113.           turn_180
  114.         when 23   # 随机转 90 度
  115.           turn_right_or_left_90
  116.         when 24   # 随机转换方向
  117.           turn_random
  118.         when 25   # 面向主角
  119.           turn_toward_player
  120.         when 26   # 背向主角
  121.           turn_away_from_player
  122.         when 27   # 开启开关
  123.           $game_switches[command.parameters[0]] = true
  124.           $game_map.need_refresh = true
  125.         when 28   # 关闭开关
  126.           $game_switches[command.parameters[0]] = false
  127.           $game_map.need_refresh = true
  128.         when 29   # 更改移动速度
  129.           @move_speed = command.parameters[0]
  130.         when 30   # 更改移动频度
  131.           @move_frequency = command.parameters[0]
  132.         when 31   # 开启步行动画
  133.           @walk_anime = true
  134.         when 32   # 关闭步行动画
  135.           @walk_anime = false
  136.         when 33   # 开启踏步动画
  137.           @step_anime = true
  138.         when 34   # 关闭踏步动画
  139.           @step_anime = false
  140.         when 35   # 开启面向固定
  141.           @direction_fix = true
  142.         when 36   # 关闭面向固定
  143.           @direction_fix = false
  144.         when 37   # 允许穿透
  145.           @through = true
  146.         when 38   # 不允许穿透
  147.           @through = false
  148.         when 39   # 开启透明状态
  149.           @transparent = true
  150.         when 40   # 关闭透明状态
  151.           @transparent = false
  152.         when 41   # 更改角色图像
  153.           set_graphic(command.parameters[0], command.parameters[1])
  154.         when 42   # 更改透明度
  155.           @opacity = command.parameters[0]
  156.         when 43   # 更改合成方式
  157.           @blend_type = command.parameters[0]
  158.         when 44   # 播放音效
  159.           command.parameters[0].play
  160.         when 45   # 脚本
  161. #==============================================================================
  162.           # 如果脚本内容含有识别符,则开始计算鸟的飞行路线
  163.           if command.parameters[0].slice(Bird_Config::SCRIPT_CODE) != nil
  164.             # 计算距离(公式 by orzfly)
  165.             $event_distance = Proc.new{|e1, e2|Math.sqrt((e2.x-e1.x)**2+(e2.y-e1.y)**2)}
  166.             # 变量处理
  167.             $bird_event_type = command.parameters[0].clone
  168.             $bird_event_type.slice!(Bird_Config::SCRIPT_CODE)
  169.             # 计算
  170.             @bird_distance = $event_distance.call($game_map.events[@event.id.to_i], $game_player)
  171.             # 根据种类判断距离
  172.             @bird_distance_min = bird_min_distance($bird_event_type.to_i)
  173.             @bird_distance_max = bird_max_distance($bird_event_type.to_i)
  174.             # 若当前距离在最近距离以内
  175.             if @bird_distance <= @bird_distance_min
  176.               # 远离主角
  177.               move_away_from_player
  178.             else
  179.               # 若当前距离在最远距离以外
  180.               if @bird_distance >= @bird_distance_max
  181.                 # 接近主角
  182.                 move_toward_player
  183.               # 除此之外的情况
  184.               else
  185.                 # 随机移动
  186.                 move_random
  187.               end
  188.             end
  189.           else
  190.             eval(command.parameters[0])
  191.           end
  192. #==============================================================================
  193.         end
  194.         if not @move_route.skippable and @move_failed
  195.           return  # 非[跳过不能移动的场合] 并且移动失败
  196.         end
  197.         @move_route_index += 1
  198.       end
  199.     end
  200.   end
  201. end
复制代码
范例:
小鸟 2.0VX.zip (250.68 KB, 下载次数: 662)
作者: 小白玩家    时间: 2011-11-6 12:28
换地图也会跟着吗
作者: 精灵使者    时间: 2011-11-7 09:24
OK,游游人生随机的移动物体这个就用这个脚本了呐……
作者: 退屈£无聊    时间: 2011-11-7 19:49
{:nm_1:}不知道为什么想不出在一定范围内移动这样的NPC的具体用场……敌人么是一直接近,友人么是一直接近,鸟么是一直远离……
哦……妖梦的幽灵半边体=v=|||
作者: 凡尘过客    时间: 2011-11-25 08:21
厉害。。。




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