Project1

标题: 战斗自动附加某状态 [打印本页]

作者: 沉默是惊    时间: 2013-8-17 12:32
标题: 战斗自动附加某状态
本帖最后由 沉默是惊 于 2013-8-18 21:36 编辑

如何用脚本让特定角色战斗开始的时候自动附加某状态(每场战斗都这样)。最好是在弄个开关,当X号开关打开的时候这样子。
例子:
3号角色 附加5号状态
5号角色 附加18号状态
21号角色 附加30号状态
作者: myownroc    时间: 2013-8-17 13:14
在Scene_Battle1中 在 def update 中的最前面加入
  1. $game_party.actors[X].add_state(Y)   
  2. @status_window.refresh
复制代码
代码的意思是 给X+1号角色 附加Y号状态

如果战斗后要消除状态,就在数据库中的状态选项中选中 战斗结束时解除
作者: clear仔    时间: 2013-8-17 14:49
本帖最后由 clear仔 于 2013-8-17 14:56 编辑
myownroc 发表于 2013-8-17 13:14
在Scene_Battle1中 在 def update 中的最前面加入代码的意思是 给X+1号角色 附加Y号状态

如果战斗后要消除 ...


这样子每回合都会附加状态,自动接触状态就无法自动接触了。
这样:在scene_battle的main方法里,在最后一行写
if $game_switches[x]
for e in $game_troop.enemies
next unless e
case e.id
when a
e.add_state(q)
when b
e.add_state(w)
……
end
end
end
#x,a,b,q,w均为自设id

作者: 沉默是惊    时间: 2013-8-17 15:09
clear仔 发表于 2013-8-17 14:49
这样子每回合都会附加状态,自动接触状态就无法自动接触了。
这样:在scene_battle的main方法里,在最后一 ...

貌似没反映
作者: 沉默是惊    时间: 2013-8-17 15:21
myownroc 发表于 2013-8-17 13:14
在Scene_Battle1中 在 def update 中的最前面加入代码的意思是 给X+1号角色 附加Y号状态

如果战斗后要消除 ...

这个用起来可以,不过,当队伍里就1个任务的时候就会出现脚本错误。
作者: myownroc    时间: 2013-8-17 15:47
沉默是惊 发表于 2013-8-17 15:21
这个用起来可以,不过,当队伍里就1个任务的时候就会出现脚本错误。

在刚才的脚本外加一个判断
  1. if $game_party.actors.size - 1 >= X

  2. end
复制代码
X是队伍人数
作者: 沉默是惊    时间: 2013-8-17 15:57
myownroc 发表于 2013-8-17 15:47
在刚才的脚本外加一个判断X是队伍人数

还是不行
  1.     if $game_party.actors.size - 1 >= 4
  2.        $game_party.actors[0].add_state(6)   
  3.        @status_window.refresh
  4.     end
复制代码
这样直接状态显示不出来了
作者: 沉默是惊    时间: 2013-8-17 15:59
myownroc 发表于 2013-8-17 15:47
在刚才的脚本外加一个判断X是队伍人数

看错了。。。可以了。非常感谢
作者: 沉默是惊    时间: 2013-8-17 16:29
myownroc 发表于 2013-8-17 13:14
在Scene_Battle1中 在 def update 中的最前面加入代码的意思是 给X+1号角色 附加Y号状态

如果战斗后要消除 ...

弱弱的问下,状态附加了之后,战斗的时候不能解除吗。
还有这句
@status_window.refresh
状态刷新不用关系不大吧?因为如果同样的脚本用多了的话,貌似很卡
  1.     if $game_party.actors.size - 1 >= 0     
  2.        $game_party.actors[0].add_state(5)   
  3.        @status_window.refresh
  4.     end
  5.     if $game_party.actors.size - 1 >= 1     
  6.        $game_party.actors[1].add_state(6)   
  7.        @status_window.refresh
  8.     end
  9.     if $game_party.actors.size - 1 >= 1     
  10.        $game_party.actors[2].add_state(7)   
  11.        @status_window.refresh
  12.     end
  13.     if $game_party.actors.size - 1 >= 1
  14.        $game_party.actors[3].add_state(8)     
  15.        @status_window.refresh
  16.     end
复制代码
这样直接卡死,去掉刷新就不卡了
作者: myownroc    时间: 2013-8-17 16:57
本帖最后由 myownroc 于 2013-8-17 17:00 编辑

刷新放到所有的 if 之后,一次就好了...这个自己想一下就明白了吧...
如果你觉得关系不大也可以去掉

如果要在一定条件下去掉状态,就改变开关,在事件中用脚本 $game_switches[xxx] = true / false  ,那么上面的判断就要多一个开关的判断
开关$game_switches[xxx]  和 事件中的开关是一样的...
作者: 沉默是惊    时间: 2013-8-18 07:23
myownroc 发表于 2013-8-17 13:14
在Scene_Battle1中 在 def update 中的最前面加入代码的意思是 给X+1号角色 附加Y号状态

如果战斗后要消除 ...

如果要给敌人加状态要怎么弄。
作者: myownroc    时间: 2013-8-18 16:09
沉默是惊 发表于 2013-8-18 07:23
如果要给敌人加状态要怎么弄。

这个用事件就可以做了.
数据库中队伍一栏内就可以改了.




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