Project1

标题: 請問敵人使用的補血技能、對象可否更改為HP最低者? [打印本页]

作者: a000b1745    时间: 2014-6-1 10:58
标题: 請問敵人使用的補血技能、對象可否更改為HP最低者?
是這樣的,我設置了一個給敵人"邪惡祭司"弄了個補血技能"治癒術",在效果範圍那邊設定為"我方單體"。

但是在戰鬥中,邪惡祭司幾乎都幫自己補血,而不是幫隊伍裡面血少的怪物補血...{:2_276:}
請問有沒有辦法加上個怪物補血AI、
能選擇幫自己隊伍中血量比例最少或是目前血量最低的隊友補血的方法?? (治癒術技能欄+備注or腳本?)

作者: 鑫晴    时间: 2014-6-1 11:22
敌群战斗事件里面貌似可以比较麻烦的完成....
作者: 上贺茂润    时间: 2014-6-1 11:28
直接在敌人信息里设置HP多少一下使用技能
作者: 鑫晴    时间: 2014-6-1 12:22
本帖最后由 鑫晴 于 2014-6-1 12:33 编辑

我的思路是:

新建一个技能:补充节操
效果范围:单个队友
使用效果:恢复体力值 100%

新建一个状态:是时候丢节操了
解除条件:

新建一个敌人:节操君
行为模式:补充节操
行动条件:状态「是时候丢节操了」

新建一个敌群:节操君&史莱姆
战斗事件:
条件:敌人「史莱姆」 的体力值在60%以下
更改敌人状态[2.节操君], +「是时候丢节操了」


未测试



作者: taroxd    时间: 2014-6-1 12:25
本帖最后由 taroxd 于 2014-6-1 13:34 编辑
鑫晴 发表于 2014-6-1 12:22
我的思路是:

新建一个技能:补充节操


似乎是不错的思路

还可以状态「是时候向1号丢节操了」、「是时候向2号丢节操了」……也许这样要强制战斗指令?
作者: a000b1745    时间: 2014-6-8 16:25
有人有想法嗎?
試了幾天還是沒有頭緒...
如果在注釋規定技能<指定同隊HP最低者>
或是像是 @九夜神尊 曾經寫過的腳本來變更技能使用範圍
http://rpg.blue/thread-235239-1-1.html
不知這樣想法可行嗎?
作者: taroxd    时间: 2014-6-8 17:50
a000b1745 发表于 2014-6-8 16:25
有人有想法嗎?
試了幾天還是沒有頭緒...
如果在注釋規定技能

非常可行,在技能中备注 <指定同隊HP最低者>
但是注意,别让自己人用这个技能,会出bug的。

RUBY 代码复制
  1. class Game_Action
  2.   alias targets_for_friends_20140608 targets_for_friends
  3.   def targets_for_friends
  4.     if item.note.include?('<指定同隊HP最低者>')
  5.       [friends_unit.members.min_by(&:hp)]
  6.     else
  7.       targets_for_friends_20140608
  8.     end
  9.   end
  10. end

作者: a000b1745    时间: 2014-6-9 22:18
taroxd 发表于 2014-6-8 17:50
非常可行,在技能中备注
但是注意,别让自己人用这个技能,会出bug的。

設定好後,邪惡祭司無法使出那個技能(會輪到他行動但是沒做啥)??
我有用上橫板戰鬥Sideview不知有沒有影響...
作者: a000b1745    时间: 2014-6-11 01:47
taroxd 发表于 2014-6-8 17:50
非常可行,在技能中备注
但是注意,别让自己人用这个技能,会出bug的。

我把衝突腳本解決哩 :)
目前是<指定同隊HP最低者>="我方HP最低者"
請問還能增加
<指定同隊HP最高者>
<指定敵隊HP最低者>
<指定敵隊HP最高者>嗎~?{:2_280:}
這樣貌似怪物的AI更高了
作者: taroxd    时间: 2014-6-11 06:18
本帖最后由 taroxd 于 2014-6-21 07:23 编辑
a000b1745 发表于 2014-6-11 01:47
我把衝突腳本解決哩 :)
目前是="我方HP最低者"
請問還能增加


未测试,但应该没有什么大问题。同样的,别把这个技能给自己人使用

另外,如果需要增加怪物AI的话,应该有人写过脚本来着……

RUBY 代码复制
  1. class Game_Action
  2.   alias targets_for_friends_20140611 targets_for_friends
  3.   def targets_for_friends
  4.     if item.note.include?('<指定同隊HP最低者>')
  5.       [friends_unit.alive_members.min_by(&:hp_rate)]
  6.     elsif item.note.include?('<指定同隊HP最高者>')
  7.       [friends_unit.alive_members.max_by(&:hp_rate)]
  8.     else
  9.       targets_for_friends_20140611
  10.     end
  11.   end
  12.  
  13.   alias targets_for_opponents_20140611 targets_for_opponents
  14.   def targets_for_opponents
  15.     if item.note.include?('<指定敵隊HP最低者>')
  16.       [opponents_unit.alive_members.min_by(&:hp_rate)]
  17.     elsif item.note.include?('<指定敵隊HP最高者>')
  18.       [opponents_unit.alive_members.max_by(&:hp_rate)]
  19.     else
  20.       targets_for_opponents_20140611
  21.     end
  22.   end
  23. end


@Sion 发帖20天了,结贴吧~
作者: 九夜神尊    时间: 2014-6-13 22:20
我也来凑热闹了
想给敌人增加AI的话,建议你写一个构架,敌方AI管理器。
而不是想出一个就添加一个,到时候很难维护,越多越乱,会导致坑掉的。

奉献思路一枚,我想照此写出来,以前狂按确定的几个小B配合就让玩家抓狂了。
首先,是一个可调AI强度,0-10。
写一个战斗力评估算法,这个根据自己的游戏设置来具体评估的。
比如   战斗力 = (攻击力*20+防御力*10+敏捷*10……)*HP百分比+MP等等等等……技能,这是很复杂的算法,但是你可以自己想出来,并且写出来。

战斗开始时,将所有敌人加入队友集。(以下敌人,主角均面向玩家而言。)
等到敌人行动时,遍历该敌人所有的行动。比如攻击→主角1234,技能1→主角1234,回复→敌人12345
复制对象,并且模拟使用后的结果,记录下评分。全部遍历完后对比所有的结果评分。所谓的评分,就是我方战斗力-敌方战斗力。
如果AI强度是1的话,选择评分最高的行动。
如果 AI强度是2的话,选择评分前30%的行动。再次迭代下一个行动的角色的行动获得全部评分。
如果下一个行动是主角,遍历所有的行动,并对结果进行分析,将评分最低的30%的行动进行统计。如此递归
总的来说,AI强度每强1级,电脑就会想一步,如果AI强度为10,它会计算接下来10次行动可能造成的结果,来决定这次行动。
当然那计算量相当大。

以上要多看几遍,并且有人讨论才能完成。
简单地说,就是遍历所有的行动,所造成的结果进行评分统计。
也支持对以后的行动进行预测评分。




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