Project1

标题: [XP]请求设计一种特殊战斗状态!!(悬赏额度如不满可再... [打印本页]

作者: 存档不能    时间: 2012-12-17 14:55
标题: [XP]请求设计一种特殊战斗状态!!(悬赏额度如不满可再...
本帖最后由 存档不能 于 2012-12-17 21:17 编辑

这种状态我打算在敌人身上使用的,为方便称状态中的敌人为“旁观者”。效果如下:
1,当旁观者和其它敌人一起(已经设计成场上只有旁观者算战斗胜利)在场且轮到我方攻击时,攻击范围为敌方随机单体的技能将忽略旁观者。

注意!不是旁观者被攻击到时会miss,而是不会被当作攻击目标!!

个人已经改脚本使我方无法选择旁观者为攻击目标,但是我用到了23公共事件战斗特效(范例中的公共事件“特效:地方目标随机”实现),其中的敌方单体随机的技能特效导致旁观者依然可能被攻击到,我希望旁观者如战斗不能一样在作为攻击目标时被忽略

2,当旁观者自己行动时,范围为我方单体(因为旁观者是敌人,表现效果就是它攻击自己人)的技能目标变为旁观者除外的我方(表现出来也就是其它敌方,就是它打自己人不包括自身,另外旁观者的技能使用不能受限制)

如果嫌悬赏太低请与我联系协商,谢谢!

这个是脚本范例(素材太多有200多M所以只发脚本),百度网盘的:http://pan.baidu.com/share/link?shareid=142239&uk=1998156416


作者: 羞射了    时间: 2012-12-17 14:55
本帖最后由 羞射了 于 2012-12-18 20:22 编辑

LZ让你久等了,刚才我修改了下你的连击脚本,感觉你提出的两个要求:
1,当旁观者和其它敌人一起(已经设计成场上只有旁观者算战斗胜利)在场且轮到我方攻击时,攻击范围为敌方随机单体的技能将忽略旁观者。
2,当旁观者自己行动时,范围为我方单体(因为旁观者是敌人,表现效果就是它攻击自己人)的技能目标变为旁观者除外的我方(表现出来也就是其它敌方,就是它打自己人不包括自身,另外旁观者的技能使用不能受限制)
都已实现,故其他可能需要完善的地方我并没有做出修改,请测试,脚本请打开编辑器搜索“羞射了”。
我是内鬼ver0.2.rar (189.51 KB, 下载次数: 62)



测试方法还是打那个第一场的战斗测试,其中幽灵会用数据库设置的闪电99连击随机打自己人,并且不会打到自己,队友全灭就会收手。
阿尔西斯新增一招圣十字斩99连击,随机攻击敌人,但是不会打到幽灵,幽灵以外全灭就会收手。

技能新增一个随机属性,单体攻击技能勾取随机后会随机攻击对方,如果不勾取,则会打死一个然后接着打下一个。

作者: 羞射了    时间: 2012-12-17 17:09
本帖最后由 羞射了 于 2012-12-17 17:13 编辑

这个不难,看这段,请在脚本编辑器·里搜索
  1.   #--------------------------------------------------------------------------
  2.   # ● 对像敌人的随机确定
  3.   #     hp0 : 限制 HP 0 的敌人
  4.   #--------------------------------------------------------------------------
  5.   def random_target_enemy(hp0 = false)
  6.     # 初始化轮流
  7.     roulette = []
  8.     # 循环
  9.     for enemy in @enemies
  10.       # 条件符合的情况下
  11.       if (not hp0 and enemy.exist? and enemy.rest_hp > 0 and ! enemy.states.include?(X)) or
  12.           (hp0 and enemy.hp0?)
  13.         # 添加敌人到轮流
  14.         roulette.push(enemy)
  15.       end
  16.     end
  17.     # 轮流尺寸为 0 的情况下
  18.     if roulette.size == 0
  19.       return nil
  20.     end
  21.     # 转轮盘赌,决定敌人
  22.     return roulette[rand(roulette.size)]
  23.   end
复制代码
这里可以改成enemy不在某一特定状态下(! enemy.states.include?(X)),才可以加入随机序列,这是单体攻击,我这只是举个例子可能还有其他类似的地方要改。

然后是def set_target_battlers这段,比如
  1.         for enemy in $game_troop.enemies
  2.           if enemy.exist? and ! enemy.states.include?(X)
  3.             @target_battlers.push(enemy)
  4.           end
  5.         end
复制代码
也是类似上面的改法,符合特定状态不加入序列,也只是举个例子。

作者: 匈魔剑    时间: 2012-12-17 17:09
有不清楚的地方。
攻击敌方随机单体——这个是怎么办到的?好像默认里没有这个选项,是你自己写的吗?用脚本还是事件?
作者: 存档不能    时间: 2012-12-17 17:41
本帖最后由 存档不能 于 2012-12-17 17:46 编辑
羞射了 发表于 2012-12-17 17:09
这个不难,看这段,请在脚本编辑器·里搜索这里可以改成enemy不在某一特定状态下(! enemy.states.include? ...


很遗憾,试过不行,直接使用战斗时显示rest_hp这句出错
然后我将出错语句删除,战斗时使用随机多次攻击到只剩一人时显示
随机攻击的判断公共事件是:
for t in $scene.target_battlers
    t.hp = t.last_hp
end
@a=$scene.active_battler
if @a.is_a?(Game_Enemy)
    t=$game_party.random_target_actor
else
    t=$game_troop.random_target_enemy
end
$scene.target_battlers=[t]
s=$scene.skill
for t in $scene.target_battlers
    t.skill_effect(@a,s)
end
如不清楚我整理个范例

快照2.png (21.82 KB, 下载次数: 3)

出错1

出错1

作者: 羞射了    时间: 2012-12-17 18:37
存档不能 发表于 2012-12-17 17:41
很遗憾,试过不行,直接使用战斗时显示rest_hp这句出错
然后我将出错语句删除,战斗时使用随机多次攻击到 ...

你还是发个吧,都不知道你改成啥样了。
作者: 羞射了    时间: 2012-12-17 21:18
额,你的这个“范例”完全无法运行啊,不过我已经重现了你的这个提示错误,

它是在只剩下观测者最后一个人的情况才出现的,现在的问题是,在这个情况下,你想要观测者做出怎样的行动呢?

我倒是可以给你弄个范例。
作者: 存档不能    时间: 2012-12-17 21:28
本帖最后由 存档不能 于 2012-12-17 21:32 编辑
羞射了 发表于 2012-12-17 21:18
额,你的这个“范例”完全无法运行啊,不过我已经重现了你的这个提示错误,

它是在只剩下观测者最后一个人 ...


我测试过来看按你的方式确实可以让随机攻击的技能发动的同时且旁观者之外存在敌人则不会将旁观者作为攻击目标,但是一旦只剩下旁观者就会出错。我希望的是:至少不会出错,让战斗顺利结束(我已经设计为只剩旁观者一人就算胜利)。当然最好能直接停止多次连击的效果不让技能攻击打到旁观者,然后判定战斗胜利。

另外,你能详细说说第二个效果,也就是旁观者的技能中范围是“我方单体”的如何做到不攻击旁观者自身,只攻击其它敌人(如果有的话)?

最后,你能否在你改过的地方注释上你的id,这样我好搜索,再次多谢。
作者: 羞射了    时间: 2012-12-17 21:36
本帖最后由 羞射了 于 2012-12-17 22:00 编辑
存档不能 发表于 2012-12-17 21:28
我测试过来看按你的方式确实可以让随机攻击的技能发动的同时且旁观者之外存在敌人则不会将旁观者作为攻击 ...


我是内鬼.rar (187.61 KB, 下载次数: 57)

这个范例你可以测试一下,仅实现部分功能:
1、状态指定某敌人;
2、带此状态的敌人的单体技能是坑队友的,当队友全部被坑后,此人就不行动了,目前范例仅支持单体技能,不支持全体技能和普通攻击(改法类似)。
3、脚本编辑器搜索”羞射了“

用战斗测试可以测试第一场战斗,1幽灵2蜥蜴,其中幽灵带有内鬼属性。


PS:多次连击这个特效你是怎么弄的,我需要测试一下。
作者: 存档不能    时间: 2012-12-17 22:16
羞射了 发表于 2012-12-17 21:36
这个范例你可以测试一下,仅实现部分功能:
1、状态指定某敌人;
2、带此状态的敌人的单体技能是坑队友 ...

顺便提一下,我刚刚实验了十几次战斗,基本可以肯定让你最早的建议出错的原因就是那个23公共事件特效的“敌单体随机”效果
但是我希望能保留随机效果配合我的脚本中的“连击脚本”使用,制造出随机连续攻击对方的技能,可是使用23特效的话又明显会冲突,也许
更改连击脚本实现单独使用这个脚本就能实现随机攻击的话应该能解决问题吧?
作者: 羞射了    时间: 2012-12-17 22:26
存档不能 发表于 2012-12-17 22:16
顺便提一下,我刚刚实验了十几次战斗,基本可以肯定让你最早的建议出错的原因就是那个23公共事件特效的“ ...

关键不是冲突的问题,只要你有确定想要的结果就行,

今天太晚了,明天帮你研究下。
作者: j433463    时间: 2012-12-18 02:54
本帖最后由 j433463 于 2012-12-18 02:59 编辑

我觉得不是沙发楼单人随机遇敌脚本的问题,错误讯息没有给出脚本行数和脚本名,
明显非脚本出错,而是别的,即使默认脚本中的 skill_effect 出错也会有行数和脚本名吧。

那个错误讯息看起来比较像是公共事件判断的  t.skill_effect(@a,s) 值为 nil 造成的,
在前面加个判断是否还有敌人并且为旁观者就 return,也许可以解决。




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