Board logo

标题: [历史] [求助]人工生命体 AI [打印本页]

作者: WAKATA    时间: 2006-1-2 12:11     标题: [求助]人工生命体 AI

详情在10楼

[ 本帖最后由 WAKATA 于 2006-1-2 14:37 编辑 ]
作者: 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

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



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

应该有达人会弄的

没看有人发过  所以我就发了
作者: 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

平时跟随主人  非主动攻击  在我按了ALT+T才去攻击

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

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

[ 本帖最后由 WAKATA 于 2006-1-4 17:53 编辑 ]
作者: WAKATA    时间: 2006-1-2 12:22

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



我发帖的目的  是想让达人分享一下AI
作者: 佐胁良之    时间: 2006-1-2 12:26

直接切入正题不就好了...我以为是你自己刚写的.......
作者: KL王道    时间: 2006-1-2 12:30

原帖由 WAKATA 于 2006-1-2 12:22 发表



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

貌似所有玩GF的人客户端里都有这东西...所以没撒好发的,不过不理解怎么这东西出来这么久了还没有人拿出什么有实质性意义的个人作品出来
作者: WAKATA    时间: 2006-1-2 12:31

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

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

只是希望RO的AI系统能快点发展
作者: 佐胁良之    时间: 2006-1-2 12:33

会搞的人总归是能打开的..不会的人总归是不知道那是做什么的....而我,属于后者,搞不来,哇卡卡
作者: WAKATA    时间: 2006-1-2 12:35

恩  我也不会  所以  可见10楼   呵呵
作者: 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

求助   求助内容在10楼   谢谢帮忙!~~~:)
作者: 就素那浮云    时间: 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)

上面的result = GetMyEnemyA就是把攻击自己和主人作为敌人攻击,result = GetMyEnemyB 就是把所有的怪物作为敌人攻击。
(当然要声明的是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脚本的作用如下

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

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

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

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

[ 本帖最后由 喵喵の狗狗 于 2006-1-4 05:31 编辑 ]
作者: 喵喵の狗狗    时间: 2006-1-4 04:43

上面的方法只是简单的修改,其实在帮助档中的
所谓“有我的敌人” 的条件是怎么判断的呢?
一处提到了如果让生命体判断敌人的方式中提到的具体的编译方法
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

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

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

以及
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

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

13)  IsMonster (id)
id : 游戏内的物体
归还值 : id 所包含的东西是魔物的话可归换1,若不是的话可归换为0
机能 : 可判别魔物

这是monster语句的说明

上面的v都是默认变量名

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

[ 本帖最后由 喵喵の狗狗 于 2006-1-4 05:28 编辑 ]
作者: 喵喵の狗狗    时间: 2006-1-4 05:00

至于你提到的治愈技能自动使用方面
在command process  这一部分有写,目前我还在研究,因为这个技能是直接点击后对主人使用,我只找到了固定时间使用这个技能的方法,而根据主人hp修改的方法还不知道怎么编译,应该能很快找到方法吧。
作者: 喵喵の狗狗    时间: 2006-1-4 05:03

这里无聊贴上我在romp3找到的进化型lif的图片,似乎有2个姿态阿



[ 本帖最后由 喵喵の狗狗 于 2006-1-4 05:12 编辑 ]
作者: 喵喵の狗狗    时间: 2006-1-4 05:36

附加,在帮助档里也提到了如何切换ai的方法:
3) 增加了使用者人工智能档案夹,有基本的人工智能和使用者人工智能,还增加了两者转换的键盘输入和对话窗命令语,

使用者人工智能档案夹里,基本上提供的人工智能,是不会受改版的影响而制作的,

使用者人工智能档案夹里,人工智能剧本启动的必要条件是,AI.lua 档案和定义 AI.lua 档案的 AI (myid) 函数。

/生命体智能或是在对话窗口输入 /hoai,会转换成人工智能和使用者人工智能的,假如有仙境玩家想要使用自己制作的人工智能剧本的话,请在先有的

AI 档案夹里面,在USER_AI 档案夹里复制剧本即可。
作者: 喵喵の狗狗    时间: 2006-1-4 07:08

目前根据我的修改alt+t切换的状态跟ai文本无关,是强制切换为OnHOLD_CMD_ST+OnSTOP_CMD_ST+OnFOLLOW_ST,通过修改ai只能更改alt+鼠标指令后生命体的ai

可以通过替换OnHOLD_CMD_ST,OnSTOP_CMD_ST,OnFOLLOW_ST这3个语段来试验,经过试验并没有影响到alt+t的效果。

[ 本帖最后由 喵喵の狗狗 于 2006-1-4 07:09 编辑 ]
作者: 喵喵の狗狗    时间: 2006-1-4 07:28

如果你已经对计算机语言有所了解,那么可以参考这篇文章来初步了解lua语言的使用方法
http://202.113.13.169/site/mybbs/read.php?tid=35
作者: alone007    时间: 2006-1-4 07:43

原帖由 喵喵の狗狗 于 2006-1-4 05:03 发表
这里无聊贴上我在romp3找到的进化型lif的图片,似乎有2个姿态阿

[IMG]http://miaomiaonodog.blog.park4u.com/UploadFiles/2 ...

不是2个形态,下面那个是另一种人工生命体了,是以前开放的四种人工生命体中的一个的进化形。
作者: 喵喵の狗狗    时间: 2006-1-4 08:35     标题: 解读util.lua

--------------------------------------------
-- List utility
--------------------------------------------

这一部分是对list系函数的编译,说明档中翻译成数据的顺序构成
分别是7条函数变量
List.new ()                           -- 新的清单 归还
List.pushleft (list, value)                   -- list 左边的要素增加
List.pushright (list, value)          -- list 右边的要素增加
List.popleft (list)                  -- 把 list 左边的第一个数值拿过来
List.popright (list)                -- 把 list 右边的第一个数值拿过来
List.clear (list)                      --把 list 清空
List.size (list)                       --在 list 里面的要素个数

这部分可以不必修改

接着是对距离的定义
第一段是GetDistance,这是所有距离的运算公式的定义,用的是最基本的利用勾股定理的运算,当然不会错啦,不用修改。

第二段是GetDistance2,这是对距离判定的函数,针对所有物体。呃……也没有人需要改这个吧……

第三段是GetOwnerPosition,当然是对主人方位的判定啦,定义上也没有问题。

第四段是GetDistanceFromOwner,这是根据上断判断自己与主人距离的,也没有问题。

第五段是IsOutOfSight,这是对第2断的补充,用以判断物体是否超出视野,默认判定距离是20,这里想让自己的生命体不乱飞的同志就可以修改了,比如你召唤的是飞里乐,那么就可以把这个距离设定到你希望的距离,比如老鹰的12,魔法的10,之类的。

第六段是IsInAttackSight,也是对第2段的补充,是对敌人使用技能及攻击时,判断距离是否超出攻击范围。

完结

函数中的变量可以参考Homunculus’s Artificial Intelligence User’s Manual.htm中的
3- 仙境传说Client端 内建函数 说明
一段,这里有交待,这些变量在roClient中都是预先定义好的,看来alt+t指令也是如此。
但是先要区分id1 : 攻击者 id2 : 非攻击者就行了。

[ 本帖最后由 喵喵の狗狗 于 2006-1-4 08:56 编辑 ]
作者: adamsking    时间: 2006-1-4 09:23

仰视楼上的~崇拜ing~
作者: 喵喵の狗狗    时间: 2006-1-4 09:26

要能讨论出一个结果才是,我也是第一次使用lua,虽然跟c相似处很多,但是实际上主要运用的都是function构成的函数,其实只要分清楚变量,略懂c的人也参与编译。
作者: adamsking    时间: 2006-1-4 09:32

我就想知道,能不能做到,让鸟主动用技能攻击
作者: 喵喵の狗狗    时间: 2006-1-4 09:35

目前根据ai文件的内容可以,但是我不知道生命体技能在Client中的对应名是什么。上面提供了编译的地方
作者: honeylix    时间: 2006-1-4 09:38

膜拜一几...楼上哈厉害 C只学了一半 然后就仍掉了......残念
作者: 喵喵の狗狗    时间: 2006-1-4 09:42

ai.lua中

function OnSKILL_OBJECT_CMD_ST ()
       
end

这一段就是留给填写技能的语句,目前次句未被编译。
作者: 暗黑殿堂    时间: 2006-1-4 09:47




明显是后面一个好看啊
作者: 喵喵の狗狗    时间: 2006-1-4 09:50

原帖由 暗黑殿堂 于 2006-1-4 09:47 发表


明显是后面一个好看啊


大家还是讨论楼主的问题吧……如果还是争论这个图片我就编辑掉了,其实我也希望有懂lua的达人能解决这个问题。目前似乎wow也用到了lua脚本
作者: 永恒の繁星    时间: 2006-1-4 09:50

同上上 越邪恶越好```
作者: 这该死的爱    时间: 2006-1-4 09:55

我的人工重来不会主动攻击。。。。。。。
作者: 喵喵の狗狗    时间: 2006-1-4 10:01

你的如果是飞里乐(就是鸟)或者巴尼米乐斯 (果冻)默认ai的都是设定的会主动攻击的,如果你的是丽芙(精灵)或者艾咪斯可鲁(羊或者狗)就不会。
作者: WAKATA    时间: 2006-1-4 12:12

生命体的AI   我看不懂

所以需要达人相助!~~
作者: mawen    时间: 2006-1-4 13:40

好东西研究下,只要知道这个语言的函数定义以及是做什么用的,自己做AI应该不难
作者: 非注册用户    时间: 2006-1-4 14:14

楼主在吗?
发个RO目录下的那个LUA.html文件吧.
我在公司没有呀.贴上来我打印份研究下...谢了~
作者: loveya    时间: 2006-1-4 15:35

lua语言。。。。不懂。。。。
作者: WAKATA    时间: 2006-1-4 16:38

这段没用了  编辑掉~~~~~~~~~~~~

[ 本帖最后由 WAKATA 于 2006-1-4 17:44 编辑 ]
作者: らёгαρん    时间: 2006-1-4 16:39

这个只是简单介绍而已...........
要学一门语言不是这样就够的
作者: WAKATA    时间: 2006-1-4 16:40

原帖由 らёгαρん 于 2006-1-4 16:39 发表
这个只是简单介绍而已...........
要学一门语言不是这样就够的


恩  说实话  我一点也看不懂  呵呵
作者: 非注册用户    时间: 2006-1-4 16:42

我只是要针对RO来看看.这个东西在WOW里还是比较流行的.用的也是比较多的.
有要学习LUA的话.我推荐二个网站.里面的东西还可以.都是基础.
http://www.luachina.net/bbs/
http://www.lua.org.cn/
PS:感谢52楼的朋友.我只是打出来看看.纸质的东西看着会比较舒服.
作者: らёгαρん    时间: 2006-1-4 16:45

我怎么没想到加个CN.......
这个域名真ORZ......
作者: shine7th    时间: 2006-1-4 16:47

前断时间楼主还是谁不是发了个AI得修改器么···里面唯一两个英文就是HP和SP····其他是韩文得···还在找翻译达人····
作者: WAKATA    时间: 2006-1-4 16:54

不是我  肯定是别的达人  呵呵

我看到这几串 函数    头就大了  呵呵
作者: hardh3    时间: 2006-1-4 17:42

看到那段红字 彻底晕了。。。 @_@
作者: WAKATA    时间: 2006-1-4 17:51

那段东西  已经编辑掉了

求助内容  在10楼




欢迎光临 浆糊论坛-RO小站 (http://bbs.rohome.cn/) Powered by Discuz! 7.2