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

Project1

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

[已经解决] 战斗中敌人附加状态后如何判断选中的敌人拥有该状态

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
228 小时
注册时间
2012-2-27
帖子
30
跳转到指定楼层
1
发表于 2012-7-6 18:41:11 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 l616631804 于 2012-7-6 21:10 编辑

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


公共事件中只能判断几号敌人拥有该状态,如何判断选中的敌人拥有该状态??
试用了各种方法始终无法形成一号中状态再必须选中一号才能封印的效果呢?

Lv2.观梦者

梦石
0
星屑
620
在线时间
925 小时
注册时间
2011-5-11
帖子
438
2
发表于 2012-7-7 08:12:41 | 只看该作者
本帖最后由 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





���
http://rpg.blue/static/image/smiley/yct/A059.gif中国字认识都不到一半,哪的心情学英语呀!
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
228 小时
注册时间
2012-2-27
帖子
30
3
 楼主| 发表于 2012-7-7 13:03:04 | 只看该作者
      哈哈,感谢(345912390)大大的帮忙啦,总算把想要的效果给做出来了!
  
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
95
在线时间
440 小时
注册时间
2012-6-5
帖子
96
4
发表于 2012-7-22 06:57:55 | 只看该作者
本帖最后由 紫菜豆腐煲 于 2012-7-22 06:59 编辑

@345912390借问,能不能实现判断自己角色(不是用角色ID判断)是否附加某状态的方法。
既是,
IF 自己场上的第1(2,3,4)个角色(不是角色ID)附加了X状态,则那个角色(1234,不是角色ID)...........
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
620
在线时间
925 小时
注册时间
2011-5-11
帖子
438
5
发表于 2012-7-22 20:58:20 | 只看该作者
本帖最后由 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
复制代码
@紫菜豆腐煲
如你只是想解除某一状态
可以用技能或物品
如图

http://rpg.blue/static/image/smiley/yct/A059.gif中国字认识都不到一半,哪的心情学英语呀!
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
95
在线时间
440 小时
注册时间
2012-6-5
帖子
96
6
发表于 2012-7-22 22:24:49 | 只看该作者

()()

本帖最后由 紫菜豆腐煲 于 2012-7-22 23:16 编辑

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

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

1234.png

点评

由于你对判断后的动作 要求没说明所以用了msgbox语句。看了5楼后,还有不明的,请你回帖把要求说明了。  发表于 2012-7-22 23:34
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
95
在线时间
440 小时
注册时间
2012-6-5
帖子
96
7
发表于 2012-7-23 01:27:23 | 只看该作者
本帖最后由 紫菜豆腐煲 于 2012-7-23 03:42 编辑

表达不清,不好意思
@345912390
其实我想做的是和楼主一样的,场上的敌我双方都可能中了某种状态,技能>公共事件>然后分三种情况:敌我双方、全体敌人(这个楼主已经做了)、全体队友,具有这种状态的,再加上另一种状态(或受到伤害,或恢复,但用状态就可以实现多功能)。

点评

如果只那加另一个状态的可以用actor.add_state(X)替换msgbox语句行,X为另一状态ID  发表于 2012-7-23 07:58
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
95
在线时间
440 小时
注册时间
2012-6-5
帖子
96
8
发表于 2012-7-23 09:57:38 | 只看该作者
本帖最后由 紫菜豆腐煲 于 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也不行了,把队员和敌人的顺序调换一下,还是出现错位的情况

点评

我用多众人测试过,不用 -2  发表于 2012-7-23 12:36
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
95
在线时间
440 小时
注册时间
2012-6-5
帖子
96
9
发表于 2012-7-23 13:20:09 | 只看该作者
本帖最后由 紫菜豆腐煲 于 2012-7-23 13:22 编辑

@345912390
现在还有一个问题,如果队伍里有两个成员用38号状态,最后只给顺序在后面的一个人,
我先下线了。
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
620
在线时间
925 小时
注册时间
2011-5-11
帖子
438
10
发表于 2012-7-23 13:30:16 | 只看该作者
@紫菜豆腐煲如果你是要对所有队员进行状态判断,是可以用循环的,我上面的提到的只是对单个队员的判断。
对所有队员进行状态判断脚本如下
  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
复制代码
http://rpg.blue/static/image/smiley/yct/A059.gif中国字认识都不到一半,哪的心情学英语呀!
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-30 19:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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