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

Project1

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

如何设置[保护]技能?

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-8-30
帖子
15
跳转到指定楼层
1
发表于 2008-9-11 04:34:57 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

Lv1.梦旅人

梦石
0
星屑
50
在线时间
192 小时
注册时间
2007-7-14
帖子
2746
4
发表于 2008-9-12 02:28:31 | 只看该作者
以下内容好像在站上已找不到了,我是在RM大师天干宝典庚卷找的,以下脚本能实现保护效果,不过请按下面那样修改,不然必死,好好看注释吧~~~

  1. 作者:盗帅冬瓜 ♂

  2. 传说中的真•Scene_Battle 4!

  3. 在使用这个脚本时,请注意几点:要完全按着修改哦- -,不然必死!这个主要是脚本修改以实现犯贱特技效果,保护效果,随机攻击范围效果(注意Game_Party和Game_Troop里的修改),连续恢复生命效果。。。这个脚本的随机攻击范围效果和连续恢复生命效果是由英文网www.phylomortis.com所教的哦!(我只是把这些和我自己的整合了而已,经测试没有问题)

  4. 第一步:打开传说中的Game_Party,然后找到这一段:

  5. #--------------------------------------------------------------------------

  6. # ● 对像角色的随机确定 (HP 0)

  7. #--------------------------------------------------------------------------

  8. def random_target_actor_hp0

  9.   return random_target_actor(true)

  10. end



  11. 在这段的下方加入:



  12. def multi_random_target_actor(hp0 = false)

  13. max_targets = 0

  14. num_targets = 0

  15. selected_targets = []

  16. if hp0

  17.   for actor in $game_party.actors

  18.     if actor.hp == 0

  19.     max_targets += 1

  20.     end

  21.   end

  22. else

  23.   for actor in $game_party.actors

  24.     if actor.hp > 0

  25.     max_targets += 1

  26.     end

  27.   end

  28. end

  29. if max_targets == 0

  30.   return nil

  31. end

  32. targz = rand(max_targets) + 1

  33. max_targets = targz

  34. while num_targets < max_targets

  35.   t = $game_party.actors[rand($game_party.actors.size)]

  36.   if selected_targets.include?(t)

  37.     next

  38.   end

  39.   if hp0

  40.     if t.hp == 0

  41.     selected_targets.push(t)

  42.     num_targets += 1

  43.     end

  44.   else

  45.     if t.hp > 0

  46.     selected_targets.push(t)

  47.     num_targets += 1

  48.     end

  49.   end

  50. end

  51. return selected_targets

  52. end



  53. 然后再打开传说中的Game_Troop,然后找到这一段:

  54. #--------------------------------------------------------------------------

  55. # ● 对像敌人的随机确定 (HP 0)

  56. #--------------------------------------------------------------------------

  57. def random_target_enemy_hp0

  58.   return random_target_enemy(true)

  59. end



  60. 在这段下方加入:



  61. def multi_random_target_enemy(hp0 = false)

  62. max_targets = 0

  63. num_targets = 0

  64. selected_targets = []

  65. if hp0

  66.   for monster in $game_troop.enemies

  67.     if monster.hp == 0

  68.     max_targets += 1

  69.     end

  70.   end

  71. else

  72.   for monster in $game_troop.enemies

  73.     if monster.hp > 0

  74.     max_targets += 1

  75.     end

  76.   end

  77. end

  78. if max_targets == 0

  79.   return nil

  80. end

  81. targz = rand(max_targets) + 1

  82. max_targets = targz

  83. while num_targets < max_targets

  84.   t = $game_troop.enemies[rand($game_troop.enemies.size)]

  85.   if selected_targets.include?(t)

  86.     next

  87.   end

  88.   if hp0

  89.     if t.hp == 0

  90.     selected_targets.push(t)

  91.     num_targets += 1

  92.     end

  93.   else

  94.     if t.hp > 0

  95.     selected_targets.push(t)

  96.     num_targets += 1

  97.     end

  98.   end

  99. end

  100. return selected_targets

  101. end



  102. 好了,现在就请使用这整个真•Scene_Battle 4替换原来的Scene_Battle 4吧!



  103. #==============================================================================

  104. # 真•Scene_Battle 4 ! 制作者:LE,RPG Advocate(www.phylomortis.com)

  105. #------------------------------------------------------------------------------

  106. # 附带效果:犯贱特技效果,保护效果,

  107. #         随机攻击范围效果(注意Game_Party和Game_Troop里的修改),

  108. #         连续恢复HP/SP效果,本脚本不能单独使用哦~~~

  109. #         装备特殊武器普通攻击有机率将会发动特定技能

  110. #------------------------------------------------------------------------------

  111. # 注明:如果使用或转载时不加作者名将会受到烂毛神的惩罚~~~~

  112. #------------------------------------------------------------------------------

  113. # ■ Scene_Battle (分割定义 4)

  114. #------------------------------------------------------------------------------

  115. # 处理战斗画面的类。

  116. #==============================================================================

  117. class Scene_Battle

  118. #$data_skills[57].scope = 8 #这个是脚本调用式,请在Scene_Battle 1设置随机攻击范围的特技

  119. #以上脚本表示特技57号十字斩将攻击随机数量的敌人

  120. #Scope 8: 随机数量的敌人

  121. #Scope 9: 随机数量的同伴

  122. #Scope 10: 一个随机敌人

  123. #Scope 11: 一个随机同伴

  124. Protect = [91,139,149] #这里是设置哪些特技带有保护效果,为了方便,单独搞到最前头定义了

  125. #--------------------------------------------------------------------------

  126. # ● 开始主回合

  127. #--------------------------------------------------------------------------

  128. def start_phase4

  129.   # 转移到回合 4

  130.   @phase = 4

  131.   # 回合数计数

  132.   $game_temp.battle_turn += 1

  133.   # 搜索全页的战斗事件

  134.   for index in 0...$data_troops[@troop_id].pages.size

  135.     # 获取事件页

  136.     page = $data_troops[@troop_id].pages[index]

  137.     # 本页的范围是 [回合] 的情况下

  138.     if page.span == 1

  139.     # 设置已经执行标志

  140.     $game_temp.battle_event_flags[index] = false

  141.     end

  142.   end

  143.   # 设置角色为非选择状态

  144.   @actor_index = -1

  145.   @active_battler = nil

  146.   # 有效化同伴指令窗口

  147.   @party_command_window.active = false

  148.   @party_command_window.visible = false

  149.   # 无效化角色指令窗口

  150.   @actor_command_window.active = false

  151.   @actor_command_window.visible = false

  152.   # 设置主回合标志

  153.   $game_temp.battle_main_phase = true

  154.   # 生成敌人行动

  155.   for enemy in $game_troop.enemies

  156.     enemy.make_action

  157.   end

  158.   # 生成行动顺序

  159.   make_action_orders

  160.   # 移动到步骤 1

  161.   @phase4_step = 1

  162. end

  163. #--------------------------------------------------------------------------

  164. # ● 生成行动循序

  165. #--------------------------------------------------------------------------

  166. def make_action_orders

  167.   # 初始化序列 @action_battlers

  168.   @action_battlers = []

  169.   # 添加敌人到 @action_battlers 序列

  170.   for enemy in $game_troop.enemies

  171.     @action_battlers.push(enemy)

  172.   end

  173.   # 添加角色到 @action_battlers 序列

  174.   for actor in $game_party.actors

  175.     @action_battlers.push(actor)

  176.   end

  177.   # 确定全体的行动速度

  178.   for battler in @action_battlers

  179.     battler.make_action_speed

  180.   end

  181.   # 按照行动速度从大到小排列

  182.   @action_battlers.sort! {|a,b|

  183.     b.current_action.speed - a.current_action.speed }

  184. end

  185. #--------------------------------------------------------------------------

  186. # ● 刷新画面 (主回合)

  187. #--------------------------------------------------------------------------

  188. def update_phase4

  189.   case @phase4_step

  190.   when 1

  191.     update_phase4_step1

  192.   when 2

  193.     update_phase4_step2

  194.   when 3

  195.     update_phase4_step3

  196.   when 4

  197.     update_phase4_step4

  198.   when 5

  199.     update_phase4_step5

  200.   when 6

  201.     update_phase4_step6

  202.   end

  203. end

  204. #--------------------------------------------------------------------------

  205. # ● 刷新画面 (主回合步骤 1 : 准备行动)

  206. #--------------------------------------------------------------------------

  207. def update_phase4_step1

  208.   # 隐藏帮助窗口

  209.   @help_window.visible = false

  210.   # 判定胜败

  211.   if judge

  212.     # 胜利或者失败的情况下 : 过程结束

  213.     return

  214.   end

  215.   # 强制行动的战斗者不存在的情况下

  216.   if $game_temp.forcing_battler == nil

  217.     # 设置战斗事件

  218.     setup_battle_event

  219.     # 执行战斗事件中的情况下

  220.     if $game_system.battle_interpreter.running?

  221.     return

  222.     end

  223.   end

  224.   # 强制行动的战斗者存在的情况下

  225.   if $game_temp.forcing_battler != nil

  226.     # 在头部添加后移动

  227.     @action_battlers.delete($game_temp.forcing_battler)

  228.     @action_battlers.unshift($game_temp.forcing_battler)

  229.   end

  230.   # 未行动的战斗者不存在的情况下 (全员已经行动)

  231.   if @action_battlers.size == 0

  232.     # 开始同伴命令回合

  233.     start_phase2

  234.     return

  235.   end

  236.   # 初始化动画 ID 和公共事件 ID

  237.   @animation1_id = 0

  238.   @animation2_id = 0

  239.   @common_event_id = 0

  240.   # 未行动的战斗者移动到序列的头部

  241.   @active_battler = @action_battlers.shift

  242.   # 如果已经在战斗之外的情况下

  243.   if @active_battler.index == nil

  244.     return

  245.   end

  246.   # 连续伤害

  247.   if @active_battler.hp > 0 and @active_battler.slip_damage?

  248.     @active_battler.slip_damage_effect

  249.     @active_battler.damage_pop = true

  250.   end

  251. #####################################################

  252.   if @active_battler.state?(30)

  253.     @active_battler.damage=-@active_battler.maxhp/10

  254.     @active_battler.damage=@active_battler.damage.to_i

  255.     @active_battler.hp-=@active_battler.damage

  256.     @active_battler.animation_id = 21

  257.     @active_battler.damage_pop = true

  258.   end

  259. #####################################################

  260.   # 自然解除状态

  261.   @active_battler.remove_states_auto

  262.   # 刷新状态窗口

  263.   @status_window.refresh

  264.   # 移至步骤 2

  265.   @phase4_step = 2

  266. end

  267. #--------------------------------------------------------------------------

  268. # ● 刷新画面 (主回合步骤 2 : 开始行动)

  269. #--------------------------------------------------------------------------

  270. def update_phase4_step2

  271.   # 如果不是强制行动

  272.   unless @active_battler.current_action.forcing

  273.     # 限制为 [敌人为普通攻击] 或 [我方为普通攻击] 的情况下

  274.     if @active_battler.restriction == 2 or @active_battler.restriction == 3

  275.     # 设置行动为攻击

  276.     @active_battler.current_action.kind = 0

  277.     @active_battler.current_action.basic = 0

  278.     end

  279.     # 限制为 [不能行动] 的情况下

  280.     if @active_battler.restriction == 4

  281.     # 清除行动强制对像的战斗者

  282.     $game_temp.forcing_battler = nil

  283.     # 移至步骤 1

  284.     @phase4_step = 1

  285.     return

  286.     end

  287.   end

  288.   # 清除对像战斗者

  289.   @target_battlers = []

  290.   # 行动种类分支

  291.   case @active_battler.current_action.kind

  292.   when 0 # 基本

  293.     make_basic_action_result

  294.   when 1 # 特技

  295.     make_skill_action_result

  296.   when 2 # 物品

  297.     make_item_action_result

  298.   end

  299.   # 移至步骤 3

  300.   if @phase4_step == 2

  301.     @phase4_step = 3

  302.   end

  303. end

  304. #--------------------------------------------------------------------------

  305. # ● 生成基本行动结果

  306. #--------------------------------------------------------------------------

  307. def make_basic_action_result

  308.   # 攻击的情况下

  309.   if @active_battler.current_action.basic == 0

  310.   # 设置攻击 ID

  311.   @animation1_id = @active_battler.animation1_id

  312.   @animation2_id = @active_battler.animation2_id

  313.   # 行动方的战斗者是敌人的情况下

  314.   if @active_battler.is_a?(Game_Enemy)

  315.     if @active_battler.restriction == 3

  316.       target = $game_troop.random_target_enemy

  317.     elsif @active_battler.restriction == 2

  318.       target = $game_party.random_target_actor

  319.     else

  320.       target_got = false

  321.       for a in $game_party.actors

  322. #####################################################

  323.       if (@active_battler.state?(19) and a.state?(19))
  324.         or (@active_battler.state?(22) and a.state?(22))

  325. #####################################################

  326.           target = a

  327.           target_got = true

  328.       end

  329.       end

  330.       unless target_got

  331.         index = @active_battler.current_action.target_index

  332.         target = $game_party.smooth_target_actor(index)

  333.       end

  334.     end

  335.     for actor in $game_party.actors

  336.       if Protect.include?(actor.current_action.skill_id) and actor != target

  337.       if $game_party.actors[actor.current_action.target_index] == target

  338.         target.damage = "Protected"

  339.         target.damage_pop = true

  340.         target = actor

  341.         end

  342.       end

  343.     end

  344.   end

  345.     # 行动方的战斗者是角色的情况下

  346.     if @active_battler.is_a?(Game_Actor)

  347.     if @active_battler.restriction == 3

  348.       target = $game_party.random_target_actor

  349.     elsif @active_battler.restriction == 2

  350.       target = $game_troop.random_target_enemy

  351.     else

  352.       index = @active_battler.current_action.target_index

  353.       target = $game_troop.smooth_target_enemy(index)

  354.     end

  355.     end

  356.     # 设置对像方的战斗者序列

  357.     @target_battlers = [target]

  358. #################################################################

  359.   #当武器含有17号属性的时候,攻击有60%几率发动特技

  360.   if $data_weapons[@active_battler.weapon_id].element_set.include?(17)

  361.   if rand(100) <= 60 #判断概率

  362.   # 获取特技

  363.   @skill = $data_skills[13]#13号特技“雷电”

  364.   # 消耗 SP

  365.   @active_battler.sp -= @skill.sp_cost

  366.   # 刷新状态窗口

  367.   @status_window.refresh

  368.   # 在帮助窗口显示特技名

  369.   @help_window.set_text(@skill.name, 1)

  370.   # 设置动画 ID

  371.   @animation1_id = @skill.animation1_id

  372.   @animation2_id = @skill.animation2_id

  373.   # 设置公共事件 ID

  374.   @common_event_id = @skill.common_event_id

  375.   # 设置对像侧战斗者

  376.   set_target_battlers(@skill.scope)

  377.   # 应用特技效果

  378.   for target in @target_battlers

  379.     target.skill_effect(@active_battler, @skill)

  380.   end

  381.   return

  382.   else

  383.     # 应用通常攻击效果

  384.     for target in @target_battlers

  385.     target.attack_effect(@active_battler)

  386.     end

  387.     return

  388.   end

  389. end

  390. end

  391. #################################################################

  392. # 防御的情况下

  393.   if @active_battler.current_action.basic == 1

  394.     # 帮助窗口显示"防御"

  395.     @help_window.set_text($data_system.words.guard, 1)

  396.     return

  397.   end

  398.   # 逃跑的情况下

  399.   if @active_battler.is_a?(Game_Enemy) and

  400.     @active_battler.current_action.basic == 2

  401.     # 帮助窗口显示"逃跑"

  402.     @help_window.set_text("畏罪潜逃", 1)

  403.     # 逃跑

  404.     @active_battler.escape

  405.     return

  406.   end

  407.   # 什么也不做的情况下

  408.   if @active_battler.current_action.basic == 3

  409.     # 清除强制行动对像的战斗者

  410.     $game_temp.forcing_battler = nil

  411.     # 移至步骤 1

  412.     @phase4_step = 1

  413.     return

  414.   end

  415. end

  416. #--------------------------------------------------------------------------

  417. # ● 设置物品或特技对像方的战斗者

  418. #   scope : 特技或者是物品的范围

  419. #--------------------------------------------------------------------------

  420. def set_target_battlers(scope)

  421.   # 行动方的战斗者是敌人的情况下

  422.   if @active_battler.is_a?(Game_Enemy)

  423.     # 效果范围分支

  424.     case scope

  425.   when 1 # 敌单体

  426.     index = @active_battler.current_action.target_index

  427.       target_got = false

  428.       for a in $game_party.actors

  429. #####################################################

  430.       if (@active_battler.state?(19) and a.state?(19))
  431.         or (@active_battler.state?(22) and a.state?(22))

  432. ####################################################

  433.           @target_battlers.push(a)

  434.           target_got = true

  435.       end

  436.       end

  437.       unless target_got

  438.       @target_battlers.push($game_party.smooth_target_actor(index))

  439.     end

  440.     for actor in $game_party.actors

  441.       if Protect.include?(actor.current_action.skill_id) and not @target_battlers.include?(actor)

  442.         if @target_battlers.include?($game_party.actors[actor.current_action.target_index])

  443.         for i in @target_battlers

  444.         i.damage = "Protected"

  445.         i.damage_pop = true

  446.         end

  447.       @target_battlers.clear

  448.       @target_battlers.push(actor)

  449.         end

  450.       end

  451.       end

  452.     when 2 # 敌全体

  453.     for actor in $game_party.actors

  454.       if actor.exist?

  455.         @target_battlers.push(actor)

  456.       end

  457.     end

  458.     when 3 # 我方单体

  459.     index = @active_battler.current_action.target_index

  460.     @target_battlers.push($game_troop.smooth_target_enemy(index))

  461.     when 4 # 我方全体

  462.     for enemy in $game_troop.enemies

  463.       if enemy.exist?

  464.         @target_battlers.push(enemy)

  465.       end

  466.     end

  467.     when 5 # 我方单体 (HP 0)

  468.     index = @active_battler.current_action.target_index

  469.     enemy = $game_troop.enemies[index]

  470.     if enemy != nil and enemy.hp0?

  471.       @target_battlers.push(enemy)

  472.     end

  473.     when 6 # 我方全体 (HP 0)

  474.     for enemy in $game_troop.enemies

  475.       if enemy != nil and enemy.hp0?

  476.         @target_battlers.push(enemy)

  477.       end

  478.     end

  479.     when 7 # 使用者

  480.     @target_battlers.push(@active_battler)

  481.     when 8

  482.     @target_battlers = $game_troop.multi_random_target_enemy

  483.     when 9

  484.     @target_battlers = $game_party.multi_random_target_actor

  485.     when 10

  486.     @target_battlers = [$game_troop.random_target_enemy]

  487.     when 11

  488.     @target_battlers = [$game_party.random_target_actor]

  489.     end

  490.   end

  491.   # 行动方的战斗者是角色的情况下

  492.   if @active_battler.is_a?(Game_Actor)

  493.     # 效果范围分支

  494.     case scope

  495.     when 1 # 敌单体

  496.     index = @active_battler.current_action.target_index

  497.     @target_battlers.push($game_troop.smooth_target_enemy(index))

  498.     when 2 # 敌全体

  499.     for enemy in $game_troop.enemies

  500.       if enemy.exist?

  501.         @target_battlers.push(enemy)

  502.       end

  503.     end

  504.     when 3 # 我方单体

  505.     index = @active_battler.current_action.target_index

  506.     @target_battlers.push($game_party.smooth_target_actor(index))

  507.     when 4 # 我方全体

  508.     for actor in $game_party.actors

  509.       if actor.exist?

  510.         @target_battlers.push(actor)

  511.       end

  512.     end

  513.     when 5 # 我方单体 (HP 0)

  514.     index = @active_battler.current_action.target_index

  515.     actor = $game_party.actors[index]

  516.     if actor != nil and actor.hp0?

  517.       @target_battlers.push(actor)

  518.     end

  519.     when 6 # 我方全体 (HP 0)

  520.     for actor in $game_party.actors

  521.       if actor != nil and actor.hp0?

  522.         @target_battlers.push(actor)

  523.       end

  524.     end

  525.     when 7 # 使用者

  526.     @target_battlers.push(@active_battler)

  527.     when 8

  528.     @target_battlers = $game_troop.multi_random_target_enemy

  529.     when 9

  530.     @target_battlers = $game_party.multi_random_target_actor

  531.     when 10

  532.     @target_battlers = [$game_troop.random_target_enemy]

  533.     when 11

  534.     @target_battlers = [$game_party.random_target_actor]

  535.     end

  536.   end

  537. end

  538. #--------------------------------------------------------------------------

  539. # ● 生成特技行动结果

  540. #--------------------------------------------------------------------------

  541. def make_skill_action_result

  542.   # 获取特技

  543.   @skill = $data_skills[@active_battler.current_action.skill_id]

  544.   # 如果不是强制行动

  545.   unless @active_battler.current_action.forcing

  546.     # 因为 SP 耗尽而无法使用的情况下

  547.     unless @active_battler.skill_can_use?(@skill.id)

  548.     # 清除强制行动对像的战斗者

  549.     $game_temp.forcing_battler = nil

  550.     # 移至步骤 1

  551.     @phase4_step = 1

  552.     return

  553.     end

  554.   end

  555.   # 消耗 SP

  556.   @active_battler.sp -= @skill.sp_cost

  557.   # 刷新状态窗口

  558.   @status_window.refresh

  559.   # 在帮助窗口显示特技名

  560.   @help_window.set_text(@skill.name, 1)

  561.   # 设置动画 ID

  562.   @animation1_id = @skill.animation1_id

  563.   @animation2_id = @skill.animation2_id

  564.   # 设置公共事件 ID

  565.   @common_event_id = @skill.common_event_id

  566.   # 设置对像侧战斗者

  567.   set_target_battlers(@skill.scope)

  568.   # 应用特技效果

  569.   for target in @target_battlers

  570.     target.skill_effect(@active_battler, @skill)

  571.   end

  572. end

  573. #--------------------------------------------------------------------------

  574. # ● 生成物品行动结果

  575. #--------------------------------------------------------------------------

  576. def make_item_action_result

  577.   # 获取物品

  578.   @item = $data_items[@active_battler.current_action.item_id]

  579.   # 因为物品耗尽而无法使用的情况下

  580.   unless $game_party.item_can_use?(@item.id)

  581.     # 移至步骤 1

  582.     @phase4_step = 1

  583.     return

  584.   end

  585.   # 消耗品的情况下

  586.   if @item.consumable

  587.     # 使用的物品减 1

  588.     $game_party.lose_item(@item.id, 1)

  589.   end

  590.   # 在帮助窗口显示物品名

  591.   @help_window.set_text(@item.name, 1)

  592.   # 设置动画 ID

  593.   @animation1_id = @item.animation1_id

  594.   @animation2_id = @item.animation2_id

  595.   # 设置公共事件 ID

  596.   @common_event_id = @item.common_event_id

  597.   # 确定对像

  598.   index = @active_battler.current_action.target_index

  599.   target = $game_party.smooth_target_actor(index)

  600.   # 设置对像侧战斗者

  601.   set_target_battlers(@item.scope)

  602.   # 应用物品效果

  603.   for target in @target_battlers

  604.     target.item_effect(@item)

  605.   end

  606. end

  607. #--------------------------------------------------------------------------

  608. # ● 刷新画面 (主回合步骤 3 : 行动方动画)

  609. #--------------------------------------------------------------------------

  610. def update_phase4_step3

  611.   # 行动方动画 (ID 为 0 的情况下是白色闪烁)

  612.   if @animation1_id == 0

  613.     @active_battler.white_flash = true

  614.   else

  615.     @active_battler.animation_id = @animation1_id

  616.     @active_battler.animation_hit = true

  617.   end

  618.   # 移至步骤 4

  619.   @phase4_step = 4

  620. end

  621. #--------------------------------------------------------------------------

  622. # ● 刷新画面 (主回合步骤 4 : 对像方动画)

  623. #--------------------------------------------------------------------------

  624. def update_phase4_step4

  625.   # 对像方动画

  626.   for target in @target_battlers

  627.     target.animation_id = @animation2_id

  628.     target.animation_hit = (target.damage != "Miss")

  629.   end

  630.   # 限制动画长度、最低 8 帧

  631.   @wait_count = 8

  632.   # 移至步骤 5

  633.   @phase4_step = 5

  634. end

  635. #--------------------------------------------------------------------------

  636. # ● 刷新画面 (主回合步骤 5 : 显示伤害)

  637. #--------------------------------------------------------------------------

  638. def update_phase4_step5

  639.   # 隐藏帮助窗口

  640.   @help_window.visible = false

  641.   # 公共事件 ID 有效的情况下

  642.   if @common_event_id > 0

  643.     # 设置事件

  644.     common_event = $data_common_events[@common_event_id]

  645.     $game_system.battle_interpreter.setup(common_event.list, 0)

  646.   end

  647.   # 刷新状态窗口

  648.   @status_window.refresh

  649.   # 显示伤害

  650.   for target in @target_battlers

  651.     if target.damage != nil

  652.     target.damage_pop = true

  653.     end

  654.   end

  655.   # 移至步骤 6

  656.   @phase4_step = 6

  657. end

  658. #--------------------------------------------------------------------------

  659. # ● 刷新画面 (主回合步骤 6 : 刷新)

  660. #--------------------------------------------------------------------------

  661. def update_phase4_step6

  662.   # 清除强制行动对像的战斗者

  663.   $game_temp.forcing_battler = nil

  664.   # 移至步骤 1

  665.   @phase4_step = 1

  666. end

  667. end



  668. 保护效果就是己方的一名角色在一回合内可以代替被自己保护的同伴挨打。想要带保护特技的招数,请在最开头的那个Protect = [91,139,149] 那里改,默认为91,139,149号特技。

  669. 战术价值:可以保护快死或者较弱的同伴。。。



  670. 犯贱效果(就是用后100%被打),说穿了给敌人附加了一种状态,敌人会去攻击拥有相同状态的角色,别忘了使用这个特技也要让公共事件给使用角色自己也加上那个状态。比如说角色“神童乔乔”使用了“犯贱”这个特技,这样中了这个特技的敌人和神童乔乔都会染上“神童乔乔犯贱”这个状态,这样这些敌人就会去进攻角色“神童乔乔”,而没染上状态的敌人都会照常行动。还有一点就是,当“犯贱”角色被保护时,保护效果是优先的。注意这段脚本有两处都带有:

  671.     if (@active_battler.state?(19) and a.state?(19))
  672.         or (@active_battler.state?(22) and a.state?(22))

  673. 这样的东西,这个意思就是说19和22号特技就带有了犯贱效果,如果想往下添加的话:

  674.     if (@active_battler.state?(19) and a.state?(19))
  675.         or (@active_battler.state?(22) and a.state?(22))
  676.         or (@active_battler.state?(35) and a.state?(35))

  677. 这样的话,35号特技也拥有了犯贱效果。

  678. 战术价值:对于某些特耐打的角色特别有效,可以以此来掩护弱小的队友,或者使某些特定敌人对你进行进攻(比如说一些会放对你有反作用魔法的敌人,等于在帮你加血- -|||),也可以配合我之前发出的忍耐特技使用。



  679. 随机攻击范围效果,这个就是可以设定随机攻击范围效果,要想设定的话请打开Scene_Battle 1,看第19行:$game_temp.forcing_battler = nil,在这行的下一行加入:

  680. $data_skills[57].scope = 8

  681. 这段脚本表示特技57号十字斩将攻击随机数量的敌人,如果有需要的话还可以往下加。

  682. 战术价值:。。。。。。好玩罢了吧- -|||



  683. 连续恢复效果,就是使用了某个特技后给角色带上一个状态,然后角色在这个状态时间内会不停的回血。。。请看有这么一段:

  684.   if @active_battler.state?(30)

  685.     @active_battler.damage=-@active_battler.maxhp/10 #恢复十分之一的血

  686.     @active_battler.damage=@active_battler.damage.to_i

  687.     @active_battler.hp-=@active_battler.damage

  688.     @active_battler.animation_id = 21#这个是动画编号

  689.     @active_battler.damage_pop = true

  690.   end

  691. 这段的意思就是说当角色为状态30号时,每回合恢复十分之一的血,如果还要添加不同的状态,按着这个格式往下写就行(别忘了最后的那个end,不然就要语法错误了)。当然了,这个还可以修改成连续sp回复,只要把这个里面的hp字样都换成sp就行,例如:

  692.   if @active_battler.state?(30)

  693.     @active_battler.damage=-@active_battler.maxsp/10 #恢复十分之一的SP

  694.     @active_battler.damage=@active_battler.damage.to_i

  695.     @active_battler.sp-=@active_battler.damage

  696.     @active_battler.animation_id = 21#这个是动画编号

  697.     @active_battler.damage_pop = true

  698.   end

  699. 这样就变成恢复十分之一SP了。

  700. 战术价值:主要是用来制造一些特殊的装备(特别是防具,因为那可以给角色带上自动状态- -|||),可以每回合补血补气的装备,对战斗有些帮助。



  701. 装备特殊武器普通攻击有机率将会发动特定技能,这里的修改其实很简单,不过是些基础判定然后再把应用特技效果的那部分内容给引用了而已。只要武器含有了17号属性,普通攻击就有60%机率会发动13号特技“雷电”。这些都可以在相应的地方修改。

  702. if $data_weapons[@active_battler.weapon_id].element_set.include?(17)#17号属性

  703.   if rand(100) <= 60 #判断概率为60%

  704.   # 获取特技

  705.   @skill = $data_skills[13]#13号特技“雷电”



  706. 好了,所有修改结束了。(众:咳咳,好长。。。)所有提供的战术价值并非唯一的战术价值,根据玩家的自由发挥决定,不要被我给忽悠了- -。虽然改得很多,这个和其他脚本的冲突极小,这个是实验过的,可以放心。当然了,RTAB例外。。。。。。RTAB属于冲突之王,冲突问题比较严重,我曾找到相应的地方做了修改,结果出错了- -|||。。。



  707. PS:其实我完全可以把这一大堆东西全部整成一个脚本,然后教新人们“复制全部脚本内容,插入Main的前面”。但是我觉得这样会培养出许多懒人,也会让新人变得轻浮。。。邪恶的我就是要让他们体会制作游戏的艰苦,这样他们才会努力,才会进步。。。

  708. (众:我看是你懒得改吧。。。)

  709. (LE:什么!被发现了!其实有30%是我懒的缘故啊,已经很晚了,明天还有课。。。)

  710. (众:。。。。。。)

  711. (LE:大家的眼神怎么都那么凶恶啊,要开心嘛,哈哈哈哈哈哈哈。。。)

  712. (接着出现了某些儿童不宜的暴力场面)

  713. (从此世界上的SB又少了一个)

  714. (完)



  715. 其他所有的Bunny神都素我的部下XD~



  716. 小教程范例收集

  717. Orz感谢邪恶萝卜联盟!!!(原因自己去猜)

复制代码



打造武器  http://rpg.blue/web/htm/news1054.htm
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39163
在线时间
5737 小时
注册时间
2006-11-10
帖子
6638
3
发表于 2008-9-12 00:33:37 | 只看该作者
如果没记错的话,战斗特效中就有这个功能,主站搜索“战斗特效”然后使用吧-。-,不过那个脚本冲突很大,慎用。
第二个可以搜索“打造”应该有-。-...
如果没有,可以用亿万前辈的那个自定义装备系统改造下,使用宝石当定义条件应该能达到效果了。
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-8-30
帖子
15
2
 楼主| 发表于 2008-9-11 20:46:03 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-24 11:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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