Project1

标题: 这段脚本如何修改成可以攻击全体敌人的? [打印本页]

作者: stella    时间: 2008-2-21 22:09
标题: 这段脚本如何修改成可以攻击全体敌人的?
原本的效果是当list随机为16,17,18号特技其中之一的时候,角色随机攻击一个敌人,我想修改为当list为18号特技的时候,角色攻击全体敌人
         elsif @active_battler.state?(41)
         list = [16,17,18]
          sk = $data_skills[list[rand(list.size)]]
          target = $game_troop.random_target_enemy
          target.skill_effect(@active_battler,sk)
          @target_battlers = [target]
          @animation1_id = sk.animation1_id
          @animation2_id = sk.animation2_id
          return
[LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 禾西    时间: 2008-2-21 22:13
         target = $game_troop.random_target_enemy
改爲
         target = $game_troop.enemies
作者: stella    时间: 2008-2-21 22:23
直接改成 $game_troop.enemies 游戏中就出错了


作者: 沉影不器    时间: 2008-2-21 22:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: stella    时间: 2008-2-21 22:40
18号特技是全体技,但是这个没有关系。

我是设置一种自动攻击的状态,当中了此状态的角色在战斗中自动随机使用16,17,18号特技,但是按照上面的脚本只能自动随机使用单体攻击的特技,就算数据库里是全体技,也只能攻击单个敌人,我想设成当自动角色随机用到18号特技就对全体敌人攻击
作者: 水迭澜    时间: 2008-2-21 22:42
是不是要用一个for loop来使特技逐个影响$game_troop.enemies里边的敌人呢……- -
作者: stella    时间: 2008-2-21 22:44
该怎么写呢。。。。。。。。。
作者: 凌冰    时间: 2008-2-21 22:44
应该是@target_battlers = $game_troop.enemies吧
作者: IamI    时间: 2008-2-21 22:46
target = $game_troop.random_target_enemy
改成
if sk = $data_skills(18)
#target =        #这里把所有的敌人都加上去,怎么加好像我也忘了= =
else
target = $game_troop.random_target_enemy
end
以上方法有点累……按照冰大人的说法……MS应该……然后惊讶的发现……LS啊,好像之前的一句skill_effect已经把技能扔出去了……
作者: stella    时间: 2008-2-21 22:54
以下引用凌冰于2008-2-21 14:44:50的发言:
"应该是@target_battlers = $game_troop.enemies吧";


还是出错:
undefined method .skill_effect for nil:NilClass
作者: 凌冰    时间: 2008-2-21 22:57
for i in 0...$game_troop.enemies.size
target = $game_troop.enemies[i+1]         
target.skill_effect(@active_battler,sk)
end
作者: 禾西    时间: 2008-2-21 22:57
……無視上次發言
        elsif @active_battler.state?(41)
        list = [16,17,18]
         sk = $data_skills[list[rand(list.size)]]
         target = $game_troop.random_target_enemy
         target.skill_effect(@active_battler,sk)
         @target_battlers = [target]
         @animation1_id = sk.animation1_id
         @animation2_id = sk.animation2_id
         return
        elsif @active_battler.state?(41)
        list = [16,17,18]
         sk = $data_skills[list[rand(list.size)]]

if sk == $data_skills(18)
         @target_battlers = $game_troop.enemies
           for target in @target_battlers
             target.skill_effect(@active_battler, sk)
           end
else
         target = $game_troop.random_target_enemy
         target.skill_effect(@active_battler,sk)
         @target_battlers = [target]
end
         @animation1_id = sk.animation1_id
         @animation2_id = sk.animation2_id
         return
[LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: IamI    时间: 2008-2-21 23:02
我刚才的代码好像错光了……
改一下……
将这一句修改:
target = $game_troop.random_target_enemy
为:
if sk = $data_skills[18]
target =  $game_troop.enemies
else
target = $game_troop.random_target_enemy
end
顺便说一句,那个出错肯定是由于target为Nil
作者: stella    时间: 2008-2-21 23:49
谢谢了




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