Project1

标题: 如何实现某战友自动使用特技攻击的状态 [打印本页]

作者: stella    时间: 2008-2-18 04:55
标题: 如何实现某战友自动使用特技攻击的状态
比如给队伍中某角色一个状态,处于此状态的队友自动在战斗中随机用特技或普通攻击与敌人战斗 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 凌冰    时间: 2008-2-18 11:40
参考柳柳的暴走脚本,咿呀!主站没搜到!还好我的脚本库里有{/cy}{/cy}
把“普通攻击同伴”改为“随机魔法攻击”比较简单。
.restriction == 3就是“普通攻击同伴”,找到之后改为随机用一个魔法:

Scene_Battle 4的def make_basic_action_result就是生成结果。把里面普通攻击同伴改为这样:

list = [7,8,10,11,13,14]
sk = $data_skills[list[rand(list.size)]]
target = $game_troop.random_target_enemy
target.skill_effect(@active_battler,sk)
p target.damage
@target_battlers = [target]
@animation1_id = sk.animation1_id
@animation2_id = sk.animation2_id
return

其中list是可选魔法列表,这里用的是针对单个敌人的。你可以自己尝试改为根据技能的攻击范围来选对象。

本段脚本如下:
  1.      #--------------------------------------------------------------------------
  2.   # ● 生成基本行动结果
  3.   #--------------------------------------------------------------------------
  4.   def make_basic_action_result
  5.     # 攻击的情况下
  6.     if @active_battler.current_action.basic == 0
  7.       # 设置攻击 ID
  8.       @animation1_id = @active_battler.animation1_id
  9.       @animation2_id = @active_battler.animation2_id
  10.       # 行动方的战斗者是敌人的情况下
  11.       if @active_battler.is_a?(Game_Enemy)
  12.         if @active_battler.restriction == 3
  13.           #-------------------
  14.           # 柳柳到此一游★
  15.           #-------------------
  16.           list = [7,8,10,11,13,14]
  17.           sk = $data_skills[list[rand(list.size)]]
  18.           target = $game_party.random_target_actor
  19.           target.skill_effect(@active_battler,sk)
  20.           p target.damage
  21.           @target_battlers = [target]
  22.           @animation1_id = sk.animation1_id
  23.           @animation2_id = sk.animation2_id
  24.           return
  25.           #-------------------
  26.           # 柳柳到此一游完毕★
  27.           #-------------------
  28.         elsif @active_battler.restriction == 2
  29.           target = $game_party.random_target_actor
  30.         else
  31.           index = @active_battler.current_action.target_index
  32.           target = $game_party.smooth_target_actor(index)
  33.         end
  34.       end
  35.       # 行动方的战斗者是角色的情况下
  36.       if @active_battler.is_a?(Game_Actor)
  37.         if @active_battler.restriction == 3
  38.           #-------------------
  39.           # 柳柳到此一游★
  40.           #-------------------
  41.           list = [7,8,10,11,13,14]
  42.           sk = $data_skills[list[rand(list.size)]]
  43.           target = $game_troop.random_target_enemy
  44.           target.skill_effect(@active_battler,sk)
  45.           p target.damage
  46.           @target_battlers = [target]
  47.           @animation1_id = sk.animation1_id
  48.           @animation2_id = sk.animation2_id
  49.           return
  50.           #-------------------
  51.           # 柳柳到此一游完毕★
  52.           #-------------------
  53.         elsif @active_battler.restriction == 2
  54.           target = $game_troop.random_target_enemy
  55.         else
  56.           index = @active_battler.current_action.target_index
  57.           target = $game_troop.smooth_target_enemy(index)
  58.         end
  59.       end
  60.       # 设置对像方的战斗者序列
  61.       @target_battlers = [target]
  62.       # 应用通常攻击效果
  63.       for target in @target_battlers
  64.         target.attack_effect(@active_battler)
  65.       end
  66.       return
  67.     end
  68.     # 防御的情况下
  69.     if @active_battler.current_action.basic == 1
  70.       # 帮助窗口显示"防御"
  71.       @help_window.set_text($data_system.words.guard, 1)
  72.       return
  73.     end
  74.     # 逃跑的情况下
  75.     if @active_battler.is_a?(Game_Enemy) and
  76.        @active_battler.current_action.basic == 2
  77.       #  帮助窗口显示"逃跑"
  78.       @help_window.set_text("逃跑", 1)
  79.       # 逃跑
  80.       @active_battler.escape
  81.       return
  82.     end
  83.     # 什么也不做的情况下
  84.     if @active_battler.current_action.basic == 3
  85.       # 清除强制行动对像的战斗者
  86.       $game_temp.forcing_battler = nil
  87.       # 移至步骤 1
  88.       @phase4_step = 1
  89.       return
  90.     end
  91.   end
复制代码

作者: 天圣的马甲    时间: 2008-2-18 12:22
简单做法是技能附加状态,配合公共事件状态法进行强制行动。


作者: stella    时间: 2008-2-18 16:41
以下引用凌冰于2008-2-18 3:40:43的发言:
"参考柳柳的暴走脚本,咿呀!主站没搜到!还好我的脚本库里有{/cy}{/cy}\r\n把“普通攻击同伴”改为“随机魔法攻击”比较简单。\r\n.restriction == 3就是“普通攻击同伴”




如何在不影响普通攻击同伴的情况下添加一个“随机魔法攻击敌人”状态呢?
作者: 凌冰    时间: 2008-2-18 17:40
  1.      #--------------------------------------------------------------------------
  2.   # ● 生成基本行动结果
  3.   #--------------------------------------------------------------------------
  4.   def make_basic_action_result
  5.     # 攻击的情况下
  6.     if @active_battler.current_action.basic == 0
  7.       # 设置攻击 ID
  8.       @animation1_id = @active_battler.animation1_id
  9.       @animation2_id = @active_battler.animation2_id
  10.       # 行动方的战斗者是敌人的情况下
  11.       if @active_battler.is_a?(Game_Enemy)
  12.         if @active_battler.restriction == 3
  13.           if @active_battler.state?(20)#修改这里修改状态编号
  14.           #-------------------
  15.           # 柳柳到此一游★
  16.           #-------------------
  17.           list = [7,8,10,11,13,14]
  18.           sk = $data_skills[list[rand(list.size)]]
  19.           target = $game_party.random_target_actor
  20.           target.skill_effect(@active_battler,sk)
  21. #          p target.damage
  22.           @target_battlers = [target]
  23.           @animation1_id = sk.animation1_id
  24.           @animation2_id = sk.animation2_id
  25.           return
  26.           else
  27.           target = $game_troop.random_target_enemy
  28.           end
  29.           #-------------------
  30.           # 柳柳到此一游完毕★
  31.           #-------------------
  32.         elsif @active_battler.restriction == 2
  33.           target = $game_party.random_target_actor
  34.         else
  35.           index = @active_battler.current_action.target_index
  36.           target = $game_party.smooth_target_actor(index)
  37.         end
  38.       end
  39.       # 行动方的战斗者是角色的情况下
  40.       if @active_battler.is_a?(Game_Actor)
  41.         if @active_battler.restriction == 3
  42.           if @active_battler.state?(20)#修改这里修改状态编号
  43.           #-------------------
  44.           # 柳柳到此一游★
  45.           #-------------------
  46.           list = [7,8,10,11,13,14]
  47.           sk = $data_skills[list[rand(list.size)]]
  48.           target = $game_troop.random_target_enemy
  49.           target.skill_effect(@active_battler,sk)
  50. #          p target.damage
  51.           @target_battlers = [target]
  52.           @animation1_id = sk.animation1_id
  53.           @animation2_id = sk.animation2_id
  54.           return
  55.           else
  56.           target = $game_party.random_target_actor
  57.           end
  58.           #-------------------
  59.           # 柳柳到此一游完毕★
  60.           #-------------------
  61.         elsif @active_battler.restriction == 2
  62.           target = $game_troop.random_target_enemy
  63.         else
  64.           index = @active_battler.current_action.target_index
  65.           target = $game_troop.smooth_target_enemy(index)
  66.         end
  67.       end
  68.       # 设置对像方的战斗者序列
  69.       @target_battlers = [target]
  70.       # 应用通常攻击效果
  71.       for target in @target_battlers
  72.         target.attack_effect(@active_battler)
  73.       end
  74.       return
  75.     end
  76.     # 防御的情况下
  77.     if @active_battler.current_action.basic == 1
  78.       # 帮助窗口显示"防御"
  79.       @help_window.set_text($data_system.words.guard, 1)
  80.       return
  81.     end
  82.     # 逃跑的情况下
  83.     if @active_battler.is_a?(Game_Enemy) and
  84.        @active_battler.current_action.basic == 2
  85.       #  帮助窗口显示"逃跑"
  86.       @help_window.set_text("逃跑", 1)
  87.       # 逃跑
  88.       @active_battler.escape
  89.       return
  90.     end
  91.     # 什么也不做的情况下
  92.     if @active_battler.current_action.basic == 3
  93.       # 清除强制行动对像的战斗者
  94.       $game_temp.forcing_battler = nil
  95.       # 移至步骤 1
  96.       @phase4_step = 1
  97.       return
  98.     end
  99.   end
复制代码

状态编号20,自己在文中注释处修改
大概就是酱紫 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~




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