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

Project1

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

[已经解决] 如何使某角色在野生战斗中必定能够逃跑

[复制链接]

Lv2.观梦者 (版主)

迷途知返,恍如隔世

梦石
0
星屑
488
在线时间
1355 小时
注册时间
2011-2-17
帖子
1216

开拓者

跳转到指定楼层
1
发表于 2013-7-27 15:03:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
如何设定某角色在野生战斗中必定能够逃跑,特定战斗逃不了。
写的脚本应该插入在哪?

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

2
发表于 2013-7-27 15:10:59 | 只看该作者
指的是特定的暗雷怪物吗?
明雷怪物可以设定是否能逃跑的说。
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

Lv2.观梦者 (版主)

迷途知返,恍如隔世

梦石
0
星屑
488
在线时间
1355 小时
注册时间
2011-2-17
帖子
1216

开拓者

3
 楼主| 发表于 2013-7-27 15:16:49 | 只看该作者
美丽晨露 发表于 2013-7-27 15:10
指的是特定的暗雷怪物吗?
明雷怪物可以设定是否能逃跑的说。

是地图设置里遇的暗雷怪,应该是需要脚本辅助的吧?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
4
发表于 2013-7-27 16:33:53 | 只看该作者
  1. #开关1打开的时候100%逃跑,反之不能逃跑
  2. #==============================================================================
  3. # ■ Window_PartyCommand
  4. #------------------------------------------------------------------------------
  5. #  战斗画面、选择战斗与逃跑的窗口。
  6. #==============================================================================

  7. class Window_PartyCommand < Window_Selectable
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对像
  10.   #--------------------------------------------------------------------------
  11.   def initialize
  12.     super(0, 0, 640, 64)
  13.     self.contents = Bitmap.new(width - 32, height - 32)
  14.     self.back_opacity = 160
  15.     @commands = ["战斗", "逃跑"]
  16.     @item_max = 2
  17.     @column_max = 2
  18.     draw_item(0, normal_color)
  19.     draw_item(1, normal_color)
  20.     self.active = false
  21.     self.visible = false
  22.     self.index = 0
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 描绘项目
  26.   #     index : 项目标号
  27.   #     color : 文字颜色
  28.   #--------------------------------------------------------------------------
  29.   def draw_item(index, color)
  30.     self.contents.font.color = color
  31.     rect = Rect.new(160 + index * 160 + 4, 0, 128 - 10, 32)
  32.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  33.     self.contents.draw_text(rect, @commands[index], 1)
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   # ● 更新光标矩形
  37.   #--------------------------------------------------------------------------
  38.   def update_cursor_rect
  39.     self.cursor_rect.set(160 + index * 160, 0, 128, 32)
  40.   end
  41. end
  42. #==============================================================================
  43. # ■ Scene_Battle (分割定义 2)
  44. #------------------------------------------------------------------------------
  45. #  处理战斗画面的类。
  46. #==============================================================================

  47. class Scene_Battle
  48.   #--------------------------------------------------------------------------
  49.   # ● 开始自由战斗回合
  50.   #--------------------------------------------------------------------------
  51.   def start_phase1
  52.     # 转移到回合 1
  53.     @phase = 1
  54.     # 清除全体同伴的行动
  55.     $game_party.clear_actions
  56.     # 设置战斗事件
  57.     setup_battle_event
  58.   end
  59.   #--------------------------------------------------------------------------
  60.   # ● 刷新画面 (自由战斗回合)
  61.   #--------------------------------------------------------------------------
  62.   def update_phase1
  63.     # 胜败判定
  64.     if judge
  65.       # 胜利或者失败的情况下 : 过程结束
  66.       return
  67.     end
  68.     # 开始同伴命令回合
  69.     start_phase2
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ● 开始同伴命令回合
  73.   #--------------------------------------------------------------------------
  74.   def start_phase2
  75.     # 转移到回合 2
  76.     @phase = 2
  77.     # 设置角色为非选择状态
  78.     @actor_index = -1
  79.     @active_battler = nil
  80.     # 有效化同伴指令窗口
  81.     @party_command_window.active = true
  82.     @party_command_window.visible = true
  83.     # 无效化角色指令窗口
  84.     @actor_command_window.active = false
  85.     @actor_command_window.visible = false
  86.     # 清除主回合标志
  87.     $game_temp.battle_main_phase = false
  88.     # 清除全体同伴的行动
  89.     $game_party.clear_actions
  90.     # 不能输入命令的情况下
  91.     unless $game_party.inputable?
  92.       # 开始主回合
  93.       start_phase4
  94.     end
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ● 刷新画面 (同伴命令回合)
  98.   #--------------------------------------------------------------------------
  99.   def update_phase2
  100.     # 按下 C 键的情况下
  101.     if Input.trigger?(Input::C)
  102.       # 同伴指令窗口光标位置分支
  103.       case @party_command_window.index
  104.       when 0  # 战斗
  105.         # 演奏确定 SE
  106.         $game_system.se_play($data_system.decision_se)
  107.         # 开始角色的命令回合
  108.         start_phase3
  109.       when 1  # 逃跑
  110.         # 不能逃跑的情况下
  111.         if $game_temp.battle_can_escape == false
  112.           update_phase2_escape
  113.           # 演奏冻结 SE
  114.           $game_system.se_play($data_system.buzzer_se)
  115.           return
  116.         end
  117.         # 演奏确定 SE
  118.         $game_system.se_play($data_system.decision_se)
  119.         # 逃走处理
  120.         update_phase2_escape
  121.       end
  122.       return
  123.     end
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● 画面更新 (同伴指令回合 : 逃跑)
  127.   #--------------------------------------------------------------------------
  128.   def update_phase2_escape
  129.     # 计算敌人速度的平均值
  130.     enemies_agi = 0
  131.     enemies_number = 0
  132.     for enemy in $game_troop.enemies
  133.       if enemy.exist?
  134.         enemies_agi += enemy.agi
  135.         enemies_number += 1
  136.       end
  137.     end
  138.     if enemies_number > 0
  139.       enemies_agi /= enemies_number
  140.     end
  141.     # 计算角色速度的平均值
  142.     actors_agi = 0
  143.     actors_number = 0
  144.     for actor in $game_party.actors
  145.       if actor.exist?
  146.         actors_agi += actor.agi
  147.         actors_number += 1
  148.       end
  149.     end
  150.     if actors_number > 0
  151.       actors_agi /= actors_number
  152.     end
  153.     # 逃跑成功判定
  154.     if $game_switches[1] == true
  155.       # 演奏逃跑 SE
  156.       $game_system.se_play($data_system.escape_se)
  157.       # 还原为战斗开始前的 BGM
  158.       $game_system.bgm_play($game_temp.map_bgm)
  159.       # 战斗结束
  160.       battle_end(1)
  161.     else  
  162.       # 清除全体同伴的行动
  163.       $game_party.clear_actions
  164.       # 开始主回合
  165.       start_phase4
  166.     end  
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ● 开始结束战斗回合
  170.   #--------------------------------------------------------------------------
  171.   def start_phase5
  172.     # 转移到回合 5
  173.     @phase = 5
  174.     # 演奏战斗结束 ME
  175.     $game_system.me_play($game_system.battle_end_me)
  176.     # 还原为战斗开始前的 BGM
  177.     $game_system.bgm_play($game_temp.map_bgm)
  178.     # 初始化 EXP、金钱、宝物
  179.     exp = 0
  180.     gold = 0
  181.     treasures = []
  182.     # 循环
  183.     for enemy in $game_troop.enemies
  184.       # 敌人不是隐藏状态的情况下
  185.       unless enemy.hidden
  186.         # 获得 EXP、增加金钱
  187.         exp += enemy.exp
  188.         gold += enemy.gold
  189.         # 出现宝物判定
  190.         if rand(100) < enemy.treasure_prob
  191.           if enemy.item_id > 0
  192.             treasures.push($data_items[enemy.item_id])
  193.           end
  194.           if enemy.weapon_id > 0
  195.             treasures.push($data_weapons[enemy.weapon_id])
  196.           end
  197.           if enemy.armor_id > 0
  198.             treasures.push($data_armors[enemy.armor_id])
  199.           end
  200.         end
  201.       end
  202.     end
  203.     # 限制宝物数为 6 个
  204.     treasures = treasures[0..5]
  205.     # 获得 EXP
  206.     for i in 0...$game_party.actors.size
  207.       actor = $game_party.actors[i]
  208.       if actor.cant_get_exp? == false
  209.         last_level = actor.level
  210.         actor.exp += exp
  211.         if actor.level > last_level
  212.           @status_window.level_up(i)
  213.         end
  214.       end
  215.     end
  216.     # 获得金钱
  217.     $game_party.gain_gold(gold)
  218.     # 获得宝物
  219.     for item in treasures
  220.       case item
  221.       when RPG::Item
  222.         $game_party.gain_item(item.id, 1)
  223.       when RPG::Weapon
  224.         $game_party.gain_weapon(item.id, 1)
  225.       when RPG::Armor
  226.         $game_party.gain_armor(item.id, 1)
  227.       end
  228.     end
  229.     # 生成战斗结果窗口
  230.     @result_window = Window_BattleResult.new(exp, gold, treasures)
  231.     # 设置等待计数
  232.     @phase5_wait_count = 100
  233.   end
  234.   #--------------------------------------------------------------------------
  235.   # ● 画面更新 (结束战斗回合)
  236.   #--------------------------------------------------------------------------
  237.   def update_phase5
  238.     # 等待计数大于 0 的情况下
  239.     if @phase5_wait_count > 0
  240.       # 减少等待计数
  241.       @phase5_wait_count -= 1
  242.       # 等待计数为 0 的情况下
  243.       if @phase5_wait_count == 0
  244.         # 显示结果窗口
  245.         @result_window.visible = true
  246.         # 清除主回合标志
  247.         $game_temp.battle_main_phase = false
  248.         # 刷新状态窗口
  249.         @status_window.refresh
  250.       end
  251.       return
  252.     end
  253.     # 按下 C 键的情况下
  254.     if Input.trigger?(Input::C)
  255.       # 战斗结束
  256.       battle_end(0)
  257.     end
  258.   end
  259. end
复制代码

评分

参与人数 2星屑 +110 收起 理由
︶ㄣ牛排ぶ + 90 认可答案
Anson + 20 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者 (版主)

迷途知返,恍如隔世

梦石
0
星屑
488
在线时间
1355 小时
注册时间
2011-2-17
帖子
1216

开拓者

5
 楼主| 发表于 2013-7-28 15:25:49 | 只看该作者
恋′挂机 发表于 2013-7-27 16:33

这样太过绝对,如果开关关掉就绝对逃不掉了,我自己改了一下可以了,谢谢提供思路。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 18:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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