Project1

标题: [VA]自动发动技能——10-28完成体 [打印本页]

作者: Silentever    时间: 2015-8-17 09:19
标题: [VA]自动发动技能——10-28完成体
本帖最后由 Silentever 于 2015-10-30 14:28 编辑

2015-10-28   最终更新
2015-10-09   更新:修复BUG,写法优化,追加无视行动限制的自发技能,追加简化定义
                      删除:自发技能使用成功分歧判定(感觉没什么用处)
2015-09-19   追加功能:追加last_act定义,追加自发技能使用成功分歧判定
2015-09-12   追加功能:支持让敌人也使用自发技能,追加地图自发技能,追加目标对象的选择机制

[line]分割线[/line]

此脚本的功能是让战斗成员在通常行动以外可以追加额外行动,做出了可以根据特定条件发动的自动技能。灵感是来自世界树迷宫跟第七龙神这一类的RPG游戏,像是在战斗开始的时候一定几率发动的全体攻击,或战斗结束时恢复一定程度的HP之类的技能让人印象深刻。不过这东西的潜力远比原本预期的功能要高,能用来做什么还得看使用者的想象力了。

基础说明:
需要在脚本内相应的时机中填入“Ask[ID] = {各种参数}”。战斗过程中会判断填入的技能是否有成功发动,并且执行。
举个例子来说,如果填入“Ask[3] = { '时机'=>'战斗开始', '几率'=>'50', '条件'=>'state?(2)' }”,会在战斗开始,玩家输入前让所有学会了3号技能、持有2号状态、通过50%随机判定的成员执行该技能。默认数据库中3号是连续攻击,2号状态是剧毒,会变成中毒的成员有50%的几率使用连续攻击。
概念就是这种用几率跟条件去判断是否执行的技能。具体请看脚本内的详细说明。

【新手向】条件设置的写法基本上可以参考这里的内容,个人认为容易理解并实用:http://rpg.blue/thread-307316-1-1.html
与上面不同的地方是无法指定一个对象(B),并且指定使用者的时候不需要在前面加任何东西:写“atk”的时候会直接获取使用者的攻击力(不过防御力则需要加上“self.”)。

另外,可以联动我的另一个脚本“技能开关”,被关闭的技能不会发动:https://rpg.blue/thread-383392-1-1.html

代码


脚本应用:
在这里让我向大家展示一种并不包括在原本构思的用法:设置拥有每次行动前,25%几率无法行动的麻痹状态。不知道有没有人玩口袋,因为默认系统无法制作这样的状态略有些遗憾,果然还是觉得“麻痹就应该是这个样子的”。
方法是设置2个麻痹状态A、B与1个麻痹专用技能。先获得本身没有效果的麻痹A,但带有添加“麻痹技能”的特性。麻痹技能则是行动前有25的几率发动,会对使用者自己附加麻痹B状态。麻痹B就是无法行动的状态,设置效果1回合。这样在麻痹A持续的期间,每次行动前会有25%的几率无法行动(不包括自发技能的行动)。
麻痹状态


麻痹麻痹的好像一直在说脏话……
像一开始说的一样,应用方法超出了预期的功能也让我吃了一惊!以上只是提供一个思路,说不定还有很多不同类型的用法。
另外想要关闭技能,可以让装备附加自发技能来达到这样的效果。

兼容性问题:
兼容性问题就请自力,脚本里面都标注了哪些内容是覆盖式的写法(搜索OverWright)

[line]啊[/line]

这次大概会是最后一次更新……大概。有bug请留言或通知我。
作者: 负零    时间: 2015-8-19 09:45
2) 使用者必须学会该技能。
这点,如果想做个全技能都可以触发的游戏,那个技能列表有点长。按我的想法,这些概率的“意外的行动”是出乎自己预料的,没办法掌控的,没学习过也是正常。
作者: Silentever    时间: 2015-8-19 17:08
负零 发表于 2015-8-19 02:45
2) 使用者必须学会该技能。
这点,如果想做个全技能都可以触发的游戏,那个技能列表有点长。按我的想法, ...

“意外的行动”应该会很有趣,但全技能都能发动会有些夸张吧……像是战士不可能突然会扔一发火球一样(至少不是所有的战士都可以)

其实说是学会,只需要在技能数组里面有那个技能就足够了,可以不让玩家看到,这样也更方便控制哪些角色会进行哪些“意外的行动”。
作者: chd114    时间: 2015-8-22 10:44
目标随机决定?想要自己决定是上一个目标还是随即目标呢?


@寒冷魔王 的看法?
作者: Silentever    时间: 2015-8-22 15:00
chd114 发表于 2015-8-22 03:44
目标随机决定?想要自己决定是上一个目标还是随即目标呢?

单纯是个人觉得因为是自动行动所以让玩家决定对象目标不自然。也想过可以获取满足特定条件的目标,但在使用者控制的方面上还有问题,基本上也不过是个构思而已。
作者: chd114    时间: 2015-8-25 13:48
Silentever 发表于 2015-8-21 22:00
单纯是个人觉得因为是自动行动所以让玩家决定对象目标不自然。也想过可以获取满足特定条件的目标,但在使 ...

这和我正在做的持续施法与施法延迟以及T君的一个延迟生效有一些共同之处···

不过麻痹那个我还是没太看明白···VA的技能使用效果里面的附加状态不就是可以设定几率的吗···
作者: chd114    时间: 2015-8-25 13:48
Silentever 发表于 2015-8-21 22:00
单纯是个人觉得因为是自动行动所以让玩家决定对象目标不自然。也想过可以获取满足特定条件的目标,但在使 ...

这和我正在做的持续施法与施法延迟以及T君的一个延迟生效有一些共同之处···

不过麻痹那个我还是没太看明白···VA的技能使用效果里面的附加状态不就是可以设定几率的吗···
作者: chd114    时间: 2015-8-25 15:00
本帖最后由 chd114 于 2015-8-24 22:01 编辑

  1.   end; def on_turn_start; super# - 回合开始 - 回合开始前使用的技能
  2. $game_actors[1].auto_skill(80)
  3. $game_actors[2].auto_skill(85)
复制代码
发现了BUG,这样做的话,两个角色会各自发动两次(当队伍里只有两个角色时)
作者: ♂雨    时间: 2015-9-11 14:55
你这个脚本解决的我一个大难题,好赞!
作者: ♂雨    时间: 2015-9-11 15:04
发现个BUG,如果技能是消耗特技值发动,那将无效。
作者: jwx555    时间: 2015-9-12 02:25
可以改叫眩晕嘛
作者: Silentever    时间: 2015-9-12 08:43
2015-09-12 更新

忙着追加新机能完全没时间测试了→看着被对到角落里的暑假作业……
BUG回报就拜托大家了(土下座
作者: ♂雨    时间: 2015-9-13 12:41
能不能有时间添加一个可以自动开启关闭?不然很麻烦。
作者: losyK    时间: 2015-9-13 14:44
有个兼容性的问题,就是和一些其他战斗类脚本会产生冲突,错误在alias make_targets 那个部分,原因是@targets没有定义导致的无法执行empty?
我是刚从xp过来的,不太了解va的脚本库,但似乎并没有找到@targets的定义啊。自己初始化一下似乎可以运行,但由于又不了解va这部分的代码,不知道这样改是不是小白了,麻烦楼主看看吧
作者: losyK    时间: 2015-9-13 14:49
本帖最后由 losyK 于 2015-9-13 14:50 编辑
losyK 发表于 2015-9-13 14:44
有个兼容性的问题,就是和一些其他战斗类脚本会产生冲突,错误在alias make_targets 那个部分,原因是@targ ...


具体来说就是脸谱战斗还有一些战斗效果的脚本,但似乎这些脚本里没有动过@targets,也没有改过Game_Action。。。不知道为什么单独运行就没问题。。。果然是我哪里小白了吗

(想点评的连楼了,sorry。。。)
作者: Silentever    时间: 2015-9-14 02:29
本帖最后由 Silentever 于 2015-9-13 21:27 编辑
losyK 发表于 2015-9-13 07:49
具体来说就是脸谱战斗还有一些战斗效果的脚本,但似乎这些脚本里没有动过@targets,也没有改过Game_Actio ...


抱歉,那个是bug。在VA里原本只有@target_index是拿来指定对象索引,执行时才会生成对象数组。我也没怎么碰过XP不知道那里是怎么处理的。

有其他问题试试把我的脚本放在最下面,我也是意识着兼容性写脚本的,或确认下是否有哪里被覆盖了,我的场合所有定义都有注上写法(New/Alias/OverWrite)。
作者: Silentever    时间: 2015-9-14 12:24
♂雨 发表于 2015-9-13 05:41
能不能有时间添加一个可以自动开启关闭?不然很麻烦。

做出来了,虽然是独立系统就是了=>https://rpg.blue/thread-383392-1-1.html
当然2个脚本放在一起也没问题(废话
作者: nc的汪海兵    时间: 2015-9-24 20:56
敌人怎么发动自发技能啊,试了好多种办法都没有效果

作者: Silentever    时间: 2015-10-28 23:03
2015-10-28最终更新,感觉没办法继续扩展,BUG修复也差不多了……除了bug修复不会继续更新
作者: 阿薩男爵    时间: 2015-10-29 05:56
的确是比较有用的脚本,虽然大多数情况我都是用公用事件来实现这个功能的,毕竟脚本我不擅长,事件更容易掌握一些,但是一些繁琐的东西还是脚本来的方便些。
作者: MOONLIT    时间: 2015-10-29 07:45
本帖最后由 MOONLIT 于 2015-10-29 20:12 编辑

脚本盲问下,
这个脚本能设置只在使用特定技能后追加自发技能吗?或者能往这个方向继续扩展吗?

比如说使用1号技能,举个例子就叫[举盾突击],会先使用强化自身防御的2号技能[举盾],再对敌人使用1号技能[举盾突击]
使用其他技能则不会触发[举盾]。
简单说,条件栏那里能写正在发动的技能的编号吗?只有满足技能编号才会追加自发技能这样。

或者反过来,只在[防御]和[使用物品]的时候不会触发25%麻痹判定,其他任何行动都会触发25%的麻痹判定,这样的范例能做出来吗?

  

作者: Silentever    时间: 2015-10-29 21:51
本帖最后由 Silentever 于 2015-10-29 14:53 编辑
MOONLIT 发表于 2015-10-29 00:45
脚本盲问下,
这个脚本能设置只在使用特定技能后追加自发技能吗?或者能往这个方向继续扩展吗?


在功能上估计没有更多的扩展空间了...不过确实可以追加一些方便使用的定义。
于是做了次小更新,单纯的追加了一些last_act方法,说明部分有使用方法。

举盾突击可以做成普通的攻击技能,自发举盾防御目标自身条件“last_act.skill?(举盾ID)”,插入时机可以是战斗开始以外任意(因为last_act设置是在回合最开始的时候)。
另一个麻痹可以追加条件“!(last_act.guard? or last_act.item?)”。
作者: MOONLIT    时间: 2015-10-30 00:00
本帖最后由 MOONLIT 于 2015-10-30 22:28 编辑
Silentever 发表于 2015-10-29 21:51
在功能上估计没有更多的扩展空间了...不过确实可以追加一些方便使用的定义。
于是做了次小更新,单纯的追 ...


应用起来是这样写么?

为什么一直会报错?



上面的没问题了,但是又有新的问题

1.


战斗结束会报错

2、

范围功能是这样用吗?也会报错

——————————————————————————————————————————————
应该没问题了,感谢带来这么一个方便的脚本。
作者: Silentever    时间: 2015-10-30 21:25
标题: *(
本帖最后由 Silentever 于 2015-10-30 14:32 编辑
MOONLIT 发表于 2015-10-29 17:00
应用起来是这样写么?

为什么一直会报错?


(主楼也更新了)

1.忘了定义这个方法了...
在end后面另起一行加入下面的代码
  1.   def last
  2.     return allies(last_act.target_index) if last_act.item.for_friend?
  3.     return oppons(last_act.target_index) if last_act.item.for_opponent?
  4.   end
复制代码
2.搜索“def self.battle_end(result)”
里面有个“$game_party”换成“$game_party.members”(补充后面的“.members”就可以了)
作者: zxz2874    时间: 2016-1-13 21:36
本帖最后由 zxz2874 于 2016-1-13 23:00 编辑

强制 这个怎么用?
作者: LHY4118    时间: 2016-2-11 18:35
问下。那个设置到底是怎么设置的。
ask[ID]={}
这样根本不行啊。。
作者: LHY4118    时间: 2016-3-27 16:57
照着脚本描述做的,设立了一个战斗开始100%发动的技能然后给人学习完,然而开战的时候什么反应都没直接就进入回合,跳过了设定技能发动并且无提示
作者: 藤井紫    时间: 2016-4-7 13:38
求助,如何兼容https://rpg.blue/thread-237131-1-1.html这个脚本呢?RTAB跟被动技能的组合应该能诞生相当有趣的效果的
作者: chd114    时间: 2016-4-10 23:25
这就最终更新了吗。。。使用自发技能需要学会,那持续施法这种要学两个技能咯?(一个用于附加施法状态,一个是真正的施法)
作者: 藤井紫    时间: 2016-4-11 16:42
按照这个构想,dot类型也可以达成啊
技能给目标状态,状态学会技能,技能通过变量指定技能原发者的参数对目标造成伤害




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