Project1

标题: 战斗中敌人附加状态后如何判断选中的敌人拥有该状态 [打印本页]

作者: l616631804    时间: 2012-7-6 18:41
标题: 战斗中敌人附加状态后如何判断选中的敌人拥有该状态
本帖最后由 l616631804 于 2012-7-6 21:10 编辑

  想制作出类似于仙剑5中封印的效果,即先用一个技能附加状态,再用一个技能调用状态造成封印效果!现在的问题是怎么判断选中的敌人拥有该状态。


公共事件中只能判断几号敌人拥有该状态,如何判断选中的敌人拥有该状态??
试用了各种方法始终无法形成一号中状态再必须选中一号才能封印的效果呢?
dsu_plus_rewardpost_czw
作者: 345912390    时间: 2012-7-7 08:12
本帖最后由 345912390 于 2012-7-7 08:54 编辑

{:2_262:}Game_Action脚本里target_index为目标序号
当target_index>=0时为敌人当target_index==-1时为队友
至于怎么用就看你自己了
Game_Action脚本中的 def targets_for_opponents
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 目标为敌人
  3.   #--------------------------------------------------------------------------
  4.   def targets_for_opponents
  5.      $game_variables[2]=@target_index#新加的一行
  6.     if item.for_random?
  7.       Array.new(item.number_of_targets) { opponents_unit.random_target }
  8.     elsif item.for_one?
  9.       num = 1 + (attack? ? subject.atk_times_add.to_i : 0)
  10.       if @target_index < 0
  11.         [opponents_unit.random_target] * num
  12.       else
  13.         [opponents_unit.smooth_target(@target_index)] * num
  14.       end
  15.     else
  16.       opponents_unit.alive_members
  17.     end
  18.   end





���
作者: l616631804    时间: 2012-7-7 13:03
      哈哈,感谢(345912390)大大的帮忙啦,总算把想要的效果给做出来了!
  
作者: 紫菜豆腐煲    时间: 2012-7-22 06:57
本帖最后由 紫菜豆腐煲 于 2012-7-22 06:59 编辑

@345912390借问,能不能实现判断自己角色(不是用角色ID判断)是否附加某状态的方法。
既是,
IF 自己场上的第1(2,3,4)个角色(不是角色ID)附加了X状态,则那个角色(1234,不是角色ID)...........
作者: 345912390    时间: 2012-7-22 20:58
本帖最后由 345912390 于 2012-7-22 23:29 编辑

@紫菜豆腐煲
在Scene_Battle脚本页
在战斗时
  1. #--------------------------------------------------------------------------
  2.   # ● 角色“确定”
  3.   #--------------------------------------------------------------------------
  4.   def on_actor_ok
  5.     BattleManager.actor.input.target_index = @actor_window.index
  6.     $game_variables[1]=BattleManager.actor.input.target_index#新增行  变量[1]为战斗时选择队友序号 从0开始的
  7.    # $game_variables[1]=$game_party.members[$game_variables[1]].id#新增行  变量[1]为战斗时选择队友ID 从0开始的
  8.     @actor_window.hide
  9.     @skill_window.hide
  10.     @item_window.hide
  11.     next_command
  12.   end
复制代码
状态 判断脚本放在公共事件中

  1. i=$game_variables[1]#变量[1]为战斗时选择队友序号
  2. j=2#状态ID
  3. actor =$game_party.members[i]
  4. if actor.state?(j)
  5. msgbox actor.id#这个地方可以插入判断为真时的语句,自己修改
  6. end
复制代码
@紫菜豆腐煲
如你只是想解除某一状态
可以用技能或物品
如图


作者: 紫菜豆腐煲    时间: 2012-7-22 22:24
标题: ()()
本帖最后由 紫菜豆腐煲 于 2012-7-22 23:16 编辑

@345912390万分感激,请问状态 判断脚本放在哪里?公共事件的脚本??msgbox弹出对话框(百度来的)。其实我想要的是
[url=home.php?mod=space&username=345912390]
图示的判断,图片的表达不大正确,我想的是如果某人中了剧毒,再给他加个[超剧毒]

1234.png (62.31 KB, 下载次数: 24)

1234.png

作者: 紫菜豆腐煲    时间: 2012-7-23 01:27
本帖最后由 紫菜豆腐煲 于 2012-7-23 03:42 编辑

表达不清,不好意思
@345912390
其实我想做的是和楼主一样的,场上的敌我双方都可能中了某种状态,技能>公共事件>然后分三种情况:敌我双方、全体敌人(这个楼主已经做了)、全体队友,具有这种状态的,再加上另一种状态(或受到伤害,或恢复,但用状态就可以实现多功能)。
作者: 紫菜豆腐煲    时间: 2012-7-23 09:57
本帖最后由 紫菜豆腐煲 于 2012-7-23 10:56 编辑

@345912390
万分感激
  1. i=$game_variables[4]#队友
  2. j=$game_variables[2]#敌人
  3. k=38#中38号状态
  4. actor =$game_party.members[i-2]]#这个-2我不明白,要判断队员不能放在第一位
  5. if actor.state?(k)
  6. actor.add_state(2)#加2号状态
  7. end
  8. enemy =$game_troop.members[j-2]#这个-2我也不明白,要判断敌人不能放在第一位
  9. if enemy.state?(k)
  10. enemy.add_state(2)#加2号状态
  11. end
复制代码
还是有的小瑕疵,用4个队员测试时,最后中状态的人在队列序号中加二,只好减去2来匹配,所以要判断队员不能放在第一位
,敌人同理。










这个-2也不行了,把队员和敌人的顺序调换一下,还是出现错位的情况
作者: 紫菜豆腐煲    时间: 2012-7-23 13:20
本帖最后由 紫菜豆腐煲 于 2012-7-23 13:22 编辑

@345912390
现在还有一个问题,如果队伍里有两个成员用38号状态,最后只给顺序在后面的一个人,
我先下线了。
作者: 345912390    时间: 2012-7-23 13:30
@紫菜豆腐煲如果你是要对所有队员进行状态判断,是可以用循环的,我上面的提到的只是对单个队员的判断。
对所有队员进行状态判断脚本如下
  1. i = 0
  2. while i < $game_party.members.size
  3.         actor =$game_party.members[i]]#
  4.         if actor.state?(k)#K为状态ID
  5.                 actor.add_state(2)#加2号状态
  6.         end
  7.         i += 1
  8. end
复制代码

作者: 紫菜豆腐煲    时间: 2012-7-23 14:00
345912390 发表于 2012-7-23 13:30
@紫菜豆腐煲如果你是要对所有队员进行状态判断,是可以用循环的,我上面的提到的只是对单个队员的判断。
对 ...

终于可以了,无限感激
作者: lant06    时间: 2012-8-5 09:43
345912390 发表于 2012-7-22 20:58
@紫菜豆腐煲
在Scene_Battle脚本页
在战斗时状态 判断脚本放在公共事件中@紫菜豆腐煲

为什么我用这个判断队友ID的脚本不好使呢?
作者: cjlzbb    时间: 2012-12-21 21:31
345912390 发表于 2012-7-23 13:30
@紫菜豆腐煲如果你是要对所有队员进行状态判断,是可以用循环的,我上面的提到的只是对单个队员的判断。
对 ...

这一页帖子里的所有事件脚本。。我在新开工程里都会报错————state方法未定义

把DEF state复制到Game_Interpreter后,显示collect未定义。。
作者: cjlzbb    时间: 2012-12-22 00:06
345912390 发表于 2012-7-23 13:30
@紫菜豆腐煲如果你是要对所有队员进行状态判断,是可以用循环的,我上面的提到的只是对单个队员的判断。
对 ...

不是在事件脚本么……我好像搞定了。之前额外弄了个变量3想要获取当前角色的ID结果搞乱了




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