浆糊论坛-RO小站's Archiver

WAKATA 发表于 2006-1-2 12:11

[求助]人工生命体 AI

详情在10楼

[[i] 本帖最后由 WAKATA 于 2006-1-2 14:37 编辑 [/i]]

KL王道 发表于 2006-1-2 12:12

看的晕了...........

yyy8652938 发表于 2006-1-2 12:12

**** 作者被禁止或删除 内容自动屏蔽 ****

WAKATA 发表于 2006-1-2 12:13

有些乱  大家将就一下

darkmomo 发表于 2006-1-2 12:13

这个说明还蛮眼熟的。。。是不是客户端的ai文件夹下面的那个?

永恒の繁星 发表于 2006-1-2 12:14

某人90的鸟 ATK608 ASPD187 HIT和FLEE都在200左右
膜拜ING

WAKATA 发表于 2006-1-2 12:15

[quote]原帖由 [i]darkmomo[/i] 于 2006-1-2 12:13 发表
这个说明还蛮眼熟的。。。是不是客户端的ai文件夹下面的那个? [/quote]


恩  看不太懂   所以发上来  或许有帮忙

应该有达人会弄的

没看有人发过  所以我就发了

KL王道 发表于 2006-1-2 12:15

90的鸟?谁这么厉害...........这才几天啊...果然CRO是不真实的........

永恒の繁星 发表于 2006-1-2 12:16

他是变态 双倍结束的时候是80  那只鸟在混古城...

KL王道 发表于 2006-1-2 12:17

...............人人都有的东西就不用发了吧..一开始看竟然被唬住了,以为是LZ自己写的解释............

WAKATA 发表于 2006-1-2 12:21

请能看懂的达人  帮忙编一个丽芙的AI

[color=red]平时跟随主人  非主动攻击  在我按了ALT+T才去攻击[/color]

[color=blue]如果可以的话  能设置主人HP少于多少%时 加那个治愈技能  就更好了  按时间间隔加加速也挺不错的  呵呵[/color]  

红字部分  是我需要的
蓝字部分  可有可无  最好是能有  呵呵

[[i] 本帖最后由 WAKATA 于 2006-1-4 17:53 编辑 [/i]]

WAKATA 发表于 2006-1-2 12:22

[quote]原帖由 [i]KL王道[/i] 于 2006-1-2 12:17 发表
...............人人都有的东西就不用发了吧..一开始看竟然被唬住了,以为是LZ自己写的解释............ [/quote]


我发帖的目的  是想让达人分享一下AI

佐胁良之 发表于 2006-1-2 12:26

直接切入正题不就好了...我以为是你自己刚写的.......

KL王道 发表于 2006-1-2 12:30

[quote]原帖由 [i]WAKATA[/i] 于 2006-1-2 12:22 发表



我发帖的目的  是想让达人分享一下AI [/quote]
貌似所有玩GF的人客户端里都有这东西...所以没撒好发的,不过不理解怎么这东西出来这么久了还没有人拿出什么有实质性意义的个人作品出来

WAKATA 发表于 2006-1-2 12:31

因为好多人  都不看客户端文件夹里的东西的

所以发出来  或许会有些帮助

只是希望RO的AI系统能快点发展

佐胁良之 发表于 2006-1-2 12:33

会搞的人总归是能打开的..不会的人总归是不知道那是做什么的....而我,属于后者,搞不来,哇卡卡

WAKATA 发表于 2006-1-2 12:35

恩  我也不会  所以  可见[color=red]10楼[/color]   呵呵

cloudzbr 发表于 2006-1-2 13:32

90级肥鸟....这速度的确BT

狂掉白、蓝水的吧

其它几个人工生命应该不行了

出云隐者 发表于 2006-1-2 13:36

勉强能看懂,但是不知道那些参数如何生效,或者说,能有什么样的作用?

非注册用户 发表于 2006-1-2 14:14

90的话生命体的样子变了吗?

yyy8652938 发表于 2006-1-2 14:18

**** 作者被禁止或删除 内容自动屏蔽 ****

roropig 发表于 2006-1-2 14:23

差点看晕了...........拜一下先....Orz.....90级的LOLI啊.......

yyy8652938 发表于 2006-1-2 14:25

**** 作者被禁止或删除 内容自动屏蔽 ****

非注册用户 发表于 2006-1-2 14:41

你们那儿是哪儿?
没有进化就没有意思了.丽弗进化了很漂亮哦.

WAKATA 发表于 2006-1-2 17:52

求助   求助内容在[color=red]10楼[/color]   谢谢帮忙!~~~:)

就素那浮云 发表于 2006-1-2 18:13

鸟的确让人期待。  现在30级练的好累……

小猪の无尾熊 发表于 2006-1-2 18:18

我丢把鸟带去那里让它自己啄- -几分钟切回来喂吃的和扔水...23了

arielpapaya 发表于 2006-1-4 00:26

难道你的鸟不会死- -
补充一句,古城算什么,南门才恐怖。。。。。。。。

喵喵の狗狗 发表于 2006-1-4 04:36

ai修改方法

首先确定你的生命体的类型
精灵是LIF
鸟是FILIR
羊(也有人叫狗)是AMISTR
布丁(过着果冻)是VANILMIRTH

关于名字的定义可以参考Homunculus’s Artificial Intelligence User’s Manual.htm
其中提到如下:
有关GetV (V_HOMUNTYPE, id)的 归还值
LIF                =     1                   : 丽芙
AMISTR                =     2                   : 艾咪斯可鲁
FILIR                =     3                   : 飞里乐
VANILMIRTH        =     4                   : 巴尼米乐斯
LIF_H                =     5                   : 进化的 丽芙
AMISTR_H                =     6                   : 进化的 艾咪斯可鲁
FILIR_H                =     7                   : 进化的 飞里乐
VANILMIRTH_H        =     8                   : 进化的 巴尼米乐斯


然后打开你ro的文件夹,找到ai文件夹,可以看到4个文件和一个文件夹,用记事本打开ai.lua。

搜索字节
function        GetMyEnemy
然后会看到如下一段
function        GetMyEnemy (myid)
        local result = 0

        local type = GetV (V_HOMUNTYPE,myid)
        if (type == LIF or type == LIF_H or type == AMISTR or type == AMISTR_H) then
                result = GetMyEnemyA (myid)
        elseif (type == FILIR or type == FILIR_H or type == VANILMIRTH or type == VANILMIRTH_H) then
                result = GetMyEnemyB (myid)

上面的[color=Blue]result = GetMyEnemyA[/color]就是把攻击自己和主人作为敌人攻击,[color=Blue]result = GetMyEnemyB [/color]就是把所有的怪物作为敌人攻击。
(当然要声明的是npc怪物,比如艾思恩魔女面具中的3个npc就不会被当作怪物,虽然鼠标放上去会变成刀。)

现在就开始修改了

如果你想目前所有种类的生命体都处于非主动攻击状态
就把type == FILIR 还有type == VANILMIRTH 放置到result = GetMyEnemyA 中。
结果如下:
function        GetMyEnemy (myid)
        local result = 0

        local type = GetV (V_HOMUNTYPE,myid)
        if (type == LIF or type == LIF_H or type == AMISTR or type == AMISTR_H or type ==FILIR or type == VANILMIRTH) then
                result = GetMyEnemyA (myid)
        elseif (type == FILIR_H or type == VANILMIRTH_H) then
                result = GetMyEnemyB (myid)

如果想要目前所有种类的生命体都处于主动攻击状态
就修改成如下结果:
function        GetMyEnemy (myid)
        local result = 0

        local type = GetV (V_HOMUNTYPE,myid)
        if (type == LIF_H or type == AMISTR_H) then
                result = GetMyEnemyA (myid)
        elseif (type == LIF or type == AMISTR or type == FILIR or type == FILIR_H or type == VANILMIRTH or type == VANILMIRTH_H) then
                result = GetMyEnemyB (myid)

保存修改结果就可以了,目前根据ai目录下的帮助档Homunculus’s Artificial Intelligence User’s Manual.htm中提到的ai脚本的作用如下

[color=Blue]RO Client是从Client程序,在生命体新形成的时机,以解读AI.lua, Util.lua档案后,才会启动人工智能的。[/color]

因此只要重新启动游戏就能正常启用刚才的修改后的ai了。

如有什么不懂可以参考Homunculus’s Artificial Intelligence User’s Manual.htm,此脚本支持c++的所有脚本调试平台,使用语言为lua。

(八卦一句,根据天野和romp3的资料,这里脚本中写到的LIF_H,AMISTR_H,FILIR_H,VANILMIRTH_H这4种生命体的进化形态,10-3开启。)

[[i] 本帖最后由 喵喵の狗狗 于 2006-1-4 05:31 编辑 [/i]]

喵喵の狗狗 发表于 2006-1-4 04:43

上面的方法只是简单的修改,其实在帮助档中的
[color=Blue]所谓“有我的敌人” 的条件是怎么判断的呢? [/color]
一处提到了如果让生命体判断敌人的方式中提到的具体的编译方法
for i,v in ipairs(actors) do

              if (v ~= owner and v ~= myid) then
                     target = GetV (V_TARGET,v)                           
                     if (target == myid) then                              
                            enemys[index] = v  
                            index = index+1

这是只攻击已经攻击了自己或者主人的语段

[color=Red]V_TARGET                =     5                  -- 攻击或是使用技能目标 归还[/color]
这是[color=Red]V_TARGET[/color]的说明

以及
for i,v in ipairs(actors) do
              if (v ~= owner and v ~= myid) then
                     if (1 == IsMonster(v))     then
                            enemys[index] = v            
                            index = index+1

这是对于视野中所有怪物攻击的语段

[color=Red]13)  IsMonster (id)
id : 游戏内的物体
归还值 : id 所包含的东西是魔物的话可归换1,若不是的话可归换为0
机能 : 可判别魔物[/color]
这是[color=Red]monster[/color]语句的说明

上面的[color=Pink]v[/color]都是默认变量名

这就是其中的不同之处了
如果直接把GetMyEnemyB部分的语句替换成GetMyEnemyA相同的
也可以起到相同的作用,当然事先最好备份好初始的ai就行了

[[i] 本帖最后由 喵喵の狗狗 于 2006-1-4 05:28 编辑 [/i]]

页: [1] 2 3

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.