软件简介:
0 Y( |4 K, \5 `" ]争霸网络 中国GM门户站 为感谢各位GM门的支持# H+ @3 q ^8 D$ x$ P8 E: d; [
特此 站长:单身仔仔
. v) w* E/ }- c0 W; B# I1 v3 o/ K6 F把魔域 的源代码 发布出来给所有喜欢魔域
; W, p0 |4 j- d' U' P- M的各位GM研究使用.在研究使用过程中( h+ t4 d+ D2 M
本站不会提供技术咨询自行研究' n8 n1 `- c: q
内部有相关说明文件.希望制作出的各家特色后
; @1 z# T& ?+ h+ P% Y+ s, S发布www.20921.com/bbs中国GM门户 共享使用6 I( x7 _+ q' L4 [9 u
更希望那些卖端的请不要那么自信的卖出高价格
! i& u. X0 P5 t F6 e( ]& l给GM门经济上增加难度。祝GM们2008新春快乐
5 V; j2 E6 c* T7 N6 V& q8 I! J中国GM门户站 是中国最具有权威性.的GM门户站
6 _; x) ?9 J$ L) a; F$ s地址:www.20921.com$ s8 E5 g# u# b) x
GM门户 GM资源 以及游戏源代码的起源地!/ N1 p( p1 L8 D. K
8 L: Q; V6 X2 ~ ~3 A- L
// AI框架说明# M. l5 k( j, D, ~& P* ]3 W& |$ `
// ,2007.8.3
# u: ^7 w- R8 T. Q。暂不支持AGENT切屏4 ~3 {6 ?* Y- \- ?/ x- Z
2 R; w8 v9 s1 c9 k( t0 {. T- L" |。模式规划:
& l' {! o+ s! k* a4 I$ c' d* c。0_dead// 死亡模式
- w" m& L5 {( `& f$ f。1_idle// 休闲模式
u# @4 N. N7 `: c) }( z。0_wait// 休闲模式中,又细分为等待组队模式; T% C2 E* X( H* b. M8 E
。1_follow//和组队跟随模式
" t% x; S0 s/ d。2_fight// 战斗模式:分析战况,选择目标,同时跟随队长
- ~) ^' T) V) u& }5 r9 x' j。3_attack// 攻击模式:补血、发攻击命令、脱离危险
4 r7 s) g. u: v3 u9 R& p2 D$ y( d+ Z, u, _- ]4 Y
。事件8 S# L+ X- C9 A
。死亡事件:接到死亡消息时,改变模式为Dead, m/ s! j' f& s- y0 K1 r; w
。组队事件:接收到组队成功消息,增加TeamOK,增加IsMyLeader
8 N& }( R; Q- R; F1 z。队伍解散事件:删除TeamOK4 m- U' Y6 S3 m# Z
。---
0 Z" T; m* [7 f7 l% A+ @2 J。装满药品消息:增加ItemFull,增加HaveItem' W: U4 v& o1 c( R" I! d! [
。物品删除消息:如果药品少于2个时,增加NeedBuyItem
, T4 q, u+ c2 T8 o1 u' H3 n; ^7 x。物品删除消息:如果药品没有了,删除HaveItem+ l- a% F1 s/ l7 _; h
。---- i) O; ~" E& d) ?) G; l1 D2 W
。移动消息:和药店距离少于8时,增加NearShop,否则删除NearShop; c" ?( a) s& W
。CPlayer消息:有队长标志,增加IsLeader$ [ j2 p3 t3 _5 y* l
。CPlayer消息:是怪物,增加IsEvil) @& V4 z" A \- P
。CPlayer消息:是玩家且装备好,增加IsCoolMan
2 j' S8 {7 N! _, [$ b) B。---
% H; n8 J/ B' k' E+ f3 b; J。CPlayer消息:是自己的队长,增加IsMyLeader2 `: W! N9 C8 N8 R/ F6 ^0 G2 {
。移动消息:清除并重新添加所有的IsLookTarget
0 g7 \- V$ d; `) } {4 I。移动消息:清除并重新添加所有的IsCloseTarget4 l$ b; v7 B( Z5 i6 W) k
。失血消息:如果血够少,增加NeedCure. `) l8 h9 |: |7 u, h+ _
。被攻击消息:增加AttackMe(10),增加IsEvil(20),如果人数超过3人则增加Dangerous(10)6 Q" W* P( @6 p: p- b" L, g
。收到队长坐标:如果太远,就增加MyLeaderAway
2 d3 D/ @, \2 v0 r
5 E' [& d7 d8 a* W1 b8 `$ g8 N。动作* y) V# H7 `: E
。RandomMove:随机选择可达点,设置移动目标点。# E) d+ l/ \ X v0 {, _$ f
。BuyAllItem:发MSG_ACTION消息,要求装满药。, C1 k$ ?/ J: X1 V& m& o
。AnalyseTalk:如果串中有药,增加TalkAboutItem
9 s# r$ H9 m4 ?! ?. L' R。TalkTo:发送MSG_TALK消息给对方。8 h" k7 s/ u/ S B, C
。TeamAcceptInvite:发送组队申请。
$ t8 ~ _8 T- f0 p5 n- Z5 h。TeamAllyJoin:发送组队申请。( @* |+ k& l7 c; b% _5 k
。CheckMyLeaderAway:检查队长是不是走开了,如走开了就发QUERY消息。* q" O! b% S' I# w2 ?0 v% G
。ChangeMap:如果距离近,就跑过去,远了就CHGMAP。. l* n- Y2 c. d- t2 o% g
。FastToLookPos:连续跳向能看到指定坐标的地方。
& v! K5 ~: g7 @; u。LeavePos:和该坐标保持一定距离,否则会跳开或跑开。
9 c3 r2 s2 l7 R。备忘:% r) `9 N# h: r: S8 }- F- P6 {
。目前通过EVENT和ACTION来维护FACT_SET,允许同类FACT有多少个同时存在于库中。
8 \) i# y/ `; L+ y。动作的调度按类似WIN的进程调度模式,高优先级先执行,低优先级的时间长了优先级会自动提高。
U3 S2 [4 z3 a: i# U。匹配符号时,系统函数-游戏函数-fact库的顺序可优化CPU效率,但灵活性稍差。
4 t3 o$ r _9 X" K, Y' z3 l4 K3 ~. R3 l- w" [/ k4 z
。规则编写说明:
5 J# a& G/ A( W1 y1 G7 b( ]3 d。规则中的符号的风格为大写字母打头的单词的组合。例如 RuleStyle 。(风格:是指不强求,只是建议如此。下同). ?+ W' w$ P7 S
。符号后都可能有用圆括号包围的参数表。例如:RuleStyle(TYPE)。+ d0 H/ N) {+ W. ^" n$ o
。符号分为两类,一类是FACT,另一类是系统函数。(系统函数类相当于C的关键字,FACT的符号名不能和系统函数类的名相同。)/ F* H- q/ ]7 x: D: h, i& r: O H
。系统函数不能放在RESULT部分,只能在CONDITION部分。4 \3 z. L/ }$ C( \4 Q, O$ K
。系统函数都是小写风格,以区别于符号。例如:less(SMALL,BIG)。( @+ `7 v) D9 ]2 {0 ~4 q
。RESULT的参数表中的参数。用括起来的是KEY参数。KEY参数和圆括号中的参加合并为完整的参数表。例如:TalkToTargetROLE(你好。)
7 L1 Y$ N, F+ V( B/ E。通过RESULT添加FACT时,KEY值相同的FACT会被冲掉。 M' V- X! w% Z# X0 S& F6 E1 [) a
。通过RESULT添加FACT时,如果没有KEY列表,符号相同的FACT只允许存在一个。
( v2 W2 {1 n7 c3 M6 w。参数表中的参数分为两大类。一类是直接量,如1234,或者string,类型分为INT类型和STRING类型。另一类是哑变量。
+ R1 W& u* Z) C。INT类型的直接量,只接收数字串。数字串后面允许紧接符号,但符号会被忽略。(后接符号的目的是提供数字的可读性,有点象enum)
) u8 F9 D3 V( E' c6 r2 x。STRING类型的直接量,必须用双引号()括起来。( m% s& L. @9 J$ W1 r
。哑变量会在运行期被替换成相应的值。哑变量的风格是全部大写的符号串。例如:ROLE、DATA。8 u) }6 N- Y* a8 U- L3 D
。INT类型的哑变量和STRING类型的哑变量不能混合使用。也就是说,一个哑变量只能是一种类型,不能即是INT又是STRING。
+ Z) d6 D B; @4 O" j# A。变量(_)表示不需要匹配的变量。" }4 f- R7 v( E, S, h1 K* }; P4 w
。条件列表中的FACT分为三类。一类是存放在FACT_SET中的FACT,另一类是可调用的游戏核心函数,还有就是系统自带的函数。" U8 g+ x. O, r
。目前MODE部分不支持为空。# C6 t* g6 U+ E: h
。目前暂不支持游戏函数和系统函数的多重匹配。# q+ h5 L) f4 t+ {
。目前暂不支持游戏函数和系统函数是的(_)符号。" k7 a7 L9 P6 K, Q7 c$ h2 B* {
。相关连的FACT的优先级最好和RULE的优先级相同,否则要么不能触发,要么会触发多次。
4 M- g+ a+ S6 m9 H0 t: W: v。符号检查顺序是:先看是否系统函数,再看是否游戏函数,最后在fact库中查找。
* @: Q9 B) J9 U1 q1 s。系统限制:- ^4 K. l) N9 b& H2 c6 R
。整数的范围是-20亿到+20亿。
# _- W5 }$ |: ~2 S9 w) f- q- g2 q。规则文本长度不超过1024。(可修改)
c- M: F8 Y) n) p+ t。规则设计方法:9 o) `" @+ {! Z, q2 q
。符号从设计逻辑上大体可分为两类,一类是由EVENT提交的,一类是规则运算时添加的。
0 T( x+ H' y) I: N0 G。建议EVENT提交的符号由EVENT维护,规则运算产生的符号由规则运算来维护。交叉维护容易出错。
$ ]( v9 G: T% L4 Z。需要互斥的FACT,都做成同一个FACT,后面带KEY变量。( o3 o! |" \+ N
下载地址:
|