📄 ai框架说明.txt
字号:
// AI框架说明
// 仙剑修,2003.8.3
。暂不支持AGENT切屏
。模式规划:
。0_dead // 死亡模式
。1_idle // 休闲模式
。0_wait // 休闲模式中,又细分为等待组队模式
。1_follow // 和组队跟随模式
。2_fight // 战斗模式:分析战况,选择目标,同时跟随队长
。3_attack // 攻击模式:补血、发攻击命令、脱离危险
。事件
。死亡事件:接到死亡消息时,改变模式为Dead
。组队事件:接收到组队成功消息,增加TeamOK,增加IsMyLeader
。队伍解散事件:删除TeamOK
。---
。装满药品消息:增加ItemFull,增加HaveItem
。物品删除消息:如果药品少于2个时,增加NeedBuyItem
。物品删除消息:如果药品没有了,删除HaveItem
。---
。移动消息:和药店距离少于8时,增加NearShop,否则删除NearShop
。CPlayer消息:有队长标志,增加IsLeader
。CPlayer消息:是怪物,增加IsEvil
。CPlayer消息:是玩家且装备好,增加IsCoolMan
。---
。CPlayer消息:是自己的队长,增加IsMyLeader
。移动消息:清除并重新添加所有的IsLookTarget
。移动消息:清除并重新添加所有的IsCloseTarget
。失血消息:如果血够少,增加NeedCure
。被攻击消息:增加AttackMe(10),增加IsEvil(20),如果人数超过3人则增加Dangerous(10)
。收到队长坐标:如果太远,就增加MyLeaderAway
。动作
。RandomMove:随机选择可达点,设置移动目标点。
。BuyAllItem:发MSG_ACTION消息,要求装满药。
。AnalyseTalk:如果串中有“药”,增加TalkAboutItem
。TalkTo:发送MSG_TALK消息给对方。
。TeamAcceptInvite:发送组队申请。
。TeamAllyJoin:发送组队申请。
。CheckMyLeaderAway:检查队长是不是走开了,如走开了就发QUERY消息。
。ChangeMap:如果距离近,就跑过去,远了就CHGMAP。
。FastToLookPos:连续跳向能看到指定坐标的地方。
。LeavePos:和该坐标保持一定距离,否则会跳开或跑开。
。备忘:
。目前通过EVENT和ACTION来维护FACT_SET,允许同类FACT有多少个同时存在于库中。
。动作的调度按类似WIN的进程调度模式,高优先级先执行,低优先级的时间长了优先级会自动提高。
。匹配符号时,系统函数->游戏函数->fact库的顺序可优化CPU效率,但灵活性稍差。
。规则编写说明:
。规则中的符号的风格为大写字母打头的单词的组合。例如 RuleStyle 。(风格:是指不强求,只是建议如此。下同)
。符号后都可能有用圆括号包围的参数表。例如:RuleStyle(TYPE)。
。符号分为两类,一类是FACT,另一类是系统函数。(系统函数类相当于C的关键字,FACT的符号名不能和系统函数类的名相同。)
。系统函数不能放在RESULT部分,只能在CONDITION部分。
。系统函数都是小写风格,以区别于符号。例如:less(SMALL,BIG)。
。RESULT的参数表中的参数。用<>括起来的是KEY参数。KEY参数和圆括号中的参加合并为完整的参数表。例如:TalkToTarget<ROLE>("你好。")
。通过RESULT添加FACT时,KEY值相同的FACT会被冲掉。
。通过RESULT添加FACT时,如果没有KEY列表,符号相同的FACT只允许存在一个。
。参数表中的参数分为两大类。一类是直接量,如1234,或者"string",类型分为INT类型和STRING类型。另一类是哑变量。
。INT类型的直接量,只接收数字串。数字串后面允许紧接符号,但符号会被忽略。(后接符号的目的是提供数字的可读性,有点象enum)
。STRING类型的直接量,必须用双引号(")括起来。
。哑变量会在运行期被替换成相应的值。哑变量的风格是全部大写的符号串。例如:ROLE、DATA。
。INT类型的哑变量和STRING类型的哑变量不能混合使用。也就是说,一个哑变量只能是一种类型,不能即是INT又是STRING。
。变量(_)表示不需要匹配的变量。
。条件列表中的FACT分为三类。一类是存放在FACT_SET中的FACT,另一类是可调用的游戏核心函数,还有就是系统自带的函数。
。目前MODE部分不支持为空。
。目前暂不支持游戏函数和系统函数的多重匹配。
。目前暂不支持游戏函数和系统函数是的(_)符号。
。相关连的FACT的优先级最好和RULE的优先级相同,否则要么不能触发,要么会触发多次。
。符号检查顺序是:先看是否系统函数,再看是否游戏函数,最后在fact库中查找。
。系统限制:
。整数的范围是-20亿到+20亿。
。规则文本长度不超过1024。(可修改)
。规则设计方法:
。符号从设计逻辑上大体可分为两类,一类是由EVENT提交的,一类是规则运算时添加的。
。建议EVENT提交的符号由EVENT维护,规则运算产生的符号由规则运算来维护。交叉维护容易出错。
。需要互斥的FACT,都做成同一个FACT,后面带KEY变量。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -