软件简介:, Z. B3 A+ e# A; W# [1 W
凌天科技系列教程 8 C( O4 H( \% Z( s
# w9 L4 Y n+ A3 m2 g
教程第一课: V% ?6 C& n/ A
DBC2000数据库的介绍以及单机游戏的架设以及外网游戏的架设方法
/ E% Q2 c/ u; X+ R( E7 J1 N/ P安装DBC2000数据库
5 B5 c, M$ h1 B/ q建立DBC2000数据库与服务端mirserver/mud2/DB文件夹的数据库连接9 I X: u0 I6 G
启动Gamecenter 选择控制向导 数据库名称 heroDB(对应DB数据库名称)" X1 L3 O3 v- g1 f
填写服务端路径 并正确填写DBC正确路径/ N; H1 E, o0 {1 \9 @4 ~6 u
内网IP地址为 127.0.0.1
: d( S5 y9 A' u; f# F2 S. h) S* `查询外网IP并填写启动服务端: Y. C4 D/ c# h4 }( k5 C! ^
www.ip138.com2 a9 I. E9 q3 G9 B. B) _3 o6 \
填写我们查询到的IP地址并启动服务端
3 r- v( a; J, j+ p0 m/ \架设外网成功1 b4 m: o+ }0 S& j: u
4 k1 p E1 M4 }1 \第二课
, J6 r+ K/ q; V一机多区的架设方法以及对服务器进行合区
0 a9 i: c2 T* \9 ~6 V4 s: B更换我们的所有端口 然后启动服务器 在登陆器上面对应每个区的网关端口
- `0 W8 _9 |1 f8 n& _+ t使用引擎合区工具进行合区
: M9 ~/ @- c. T8 y, G2 v, k6 w4 h' t3 F/ F3 H
第三课: ]4 b$ @0 ^4 Z
游戏NPC的添加 NPC脚本代码对应位置
?9 N. l, L8 o8 A r3 R( E, u找到mirserver/mir200/envir/MerChant.txt2 y+ _7 Q1 u) d$ Q4 H5 v9 Q
在最下面添加NPC2 }) e/ |- H8 j$ Q
Market_Def下面的哪个文件夹/脚本文件名称地图号 X坐标 Y坐标 NPC名称 NPC外观代码
7 e! |) m# d% \( N7 X, H/ Z- ]2 \脚本文件开头
6 H! O% \. R* b* b1 H; u6 A' v, g[@main](所有脚本通用开头)
. g( l, ]# F9 g5 G. T& a) h第四课
) u. i1 _. Z+ @$ b/ _装备的添加
; n7 t8 b! A( i5 g物品代码
2 y- M" P( {# J0 T: q装备属性、隐藏属性代码、套装功能、装备名字颜色代码。
4 A% h8 w2 V2 i& n _装备属性使用万游编辑器修改 隐藏属性(万游) 详见M2引擎说明书物品代码表3 m0 }/ g$ n6 d- g) l
套装功能对应M2server - 查看 - 列表信息 - 其他设置 - 套装功能
* W6 F' S1 ^4 [1 E套装功能中套装编号对应数据库 (特殊属性栏数值) 套装属性为10-255
- c. W8 B3 _" @6 y+ @7 M
( a4 ^0 y3 u. o8 s2 `7 P3 h0 i第五课# X# g1 j) u8 z* s* @
脚本的编写、登陆脚本、实战冲级奖励的编写。7 N* l& G& D& m! M* h
脚本文件对应NPC创建* z' d4 Q" X4 j! Y! ?' N
以[@main]开头! g1 C; z- h# s) F+ z' v& Z0 U
下面一#IF开始 #ACT执行 #elseact否则执行
& q7 k% q# J3 O; |! u+ J登陆脚本
1 u8 n4 |5 G( N8 Ymirserver/mir200/envir/MapQuest_def/QManage.txt
\6 A3 q3 J! o. ysengmsg 0 全服提示 谁谁上线
4 L# T- f. G! ?5 k& A: ]' c第六课
+ `' N$ s+ K! B! K# a装备外观的添加计算方法、以及装备内观
8 Y( S8 g6 T# Y( W. U! f, M {工具:wil编辑器
8 r1 s6 t4 H8 {; u$ Y& Z背包物品外观在items.wil 掉落地上的外观在dnitems.wil 装备栏的外观在:stateitems.wil
4 s1 u- [/ v4 F4 U/ [5 h* M武器动作在 热血传奇目录:Graphics下 weapon文件夹代表武器 human文件夹代表衣服
! x x; l+ |& X+ _4 A- X文件名字对应万游中武器衣服的外观代码* W8 F: }5 [! K M Q& p6 U
补丁文件后面加1的情况 HERO的引擎是图片代码+100009 u" T5 W& T( v+ i! p5 B
NPC外观代码,
( d% F! g4 s; `: D: j怪物补丁的计算方法以及添加怪物* [% i) \/ @5 I" Z0 B1 z; ^8 W
mon*.wil (*-1)X10= 然后WIL编辑器打开怪物文件
' }4 ]" l% W; t- t3 Ymon14.wil (14-1)X10=130 蛇蝎=130赤月恶魔=131幻影蜘蛛=132
# a# B# H8 M9 _第一个怪物就在个位用0 第二个用1 依次类推
/ S( Y7 ~/ o! ?* `" ?: |3 d怪物补丁为热血传奇目录下面的DATA文件夹下MON.wil-mon99.wil文件 & F6 s V0 e# l5 }9 K$ K: u
攻击图像详见传奇怪物攻击图像代码5 [- T' o& Y, W+ r, Q% t, j
具体怪物攻击带特殊属性详见攻击代码
0 r" O' w# O# g8 ~1 [第七课
: S- U/ N, k1 z' W7 |$ {# L地图的添加以及地图限制代码的方式、地图与地图之间的连接、地图刷怪% i9 u6 ~ O+ q; c. u
首先修改地图素材名字(字母跟数字组合)然后放到mirserver/mir200/map当中, n6 y3 ?! g. c8 A; z8 K( p
地图信息添加在mirserver/mir200/envir 下面的MapInfo.txt当中5 A" b7 M; l4 W. t
格式:[地图号|地图文件名(地图文件在mirserver下面的mir200下面的MPA文件夹) 地图名称] 后面以空格跟上地图限制代码或功能代码
7 r d- o. T, q# ^$ f6 a! X加入盟重土城地图0 w3 h1 X0 F0 I3 Z* S- o: V. ^- ^
找到我们盟重土城调用的地图文件,按照上面的格式添加地图
; n: m4 V1 i! d* G9 I2 e找到我们需要进行连接的两个地图的地图号% j8 M# G! U- ^1 n9 o+ M
A地图号 X坐标 Y坐标 - B地图号 X坐标 Y坐标
6 N- F. }& H% q, h) ]刷怪:/ g# i y5 ]" I3 {
地图号 X坐标 Y坐标 怪物名称 刷怪范围 刷怪数量 刷怪间隔时间(分钟)9 @2 j3 a0 K3 }5 ?7 ^* Z
6 Q6 f6 |* {; ]1 X: l5 b第八课
: R2 O1 p, i- p4 N! z$ n利用M2引擎 铸造装备 快速写合成
3 m) Z. ^2 z4 y. a* c在mirserver/mir200/envir/ 下面的FoundryList.txt文档中2 d0 K; x5 v* i1 g1 a6 z
格式为:
2 z3 @; O7 B1 `: d$ [3 r1 M合成物品 数量 成功率(100%) 需要物品 数量 失败是否消失 元宝 数量 失败是否消失+ z& Y3 J5 j# C6 F j
开天 1 100 屠龙 1 1 元宝 100 1+ J, Y5 B4 j2 _" N
NPC内的脚本格式为:8 X( R% _" k! e$ w# Q( I8 X# H
#IF, I Y4 u# I6 Q5 H( {
CheckFoundryItem 开天
4 n1 p) L! G" S. \& j0 t#ACT! {- G' o" [% j6 U# e. e9 P
GiveFoundryItem 开天
+ e# P1 ?- P7 cSENDMSG 1 公告:$USERNAME 成功打造开天 一代天骄即将纵横出世!!颠覆整个玛法大陆!!!
7 v3 v; n2 }! \#ELSEACT3 E5 {; B! j" }
SendMsg 5 缺少合成物品%Item
: ?: e* ]* y5 k8 l[@FoundryFail]/ A2 T: |& a5 m8 n& `
#ACT' A0 H( |# v2 ^( Y; _$ p
SendMsg 5 合成 %Item 失败!
+ P4 d2 n2 b7 \, r6 p) f合成装备脚本的快速写法-运用铸造功能写合成装备
$ _# I. l. \" E- c& K9 C9 a6 }0 o- I* R0 B
第九课0 j8 l# N! v+ i- C
转生等级的设置以及转生名字变色。
4 E, l/ V$ o5 w% t通过转生来设置会员- X6 ?% v j# T: ]/ o' X
调整转生等级NPC脚本代码: RENEWLEVEL 1 0 100 最高转生限制是255转: c) d' h( ~! e# k
检查转生等级NPC脚本代码: CHECKRENEWLEVEL = 5" u6 m0 W4 R# u2 ?- g
) [* x# G O9 \8 P* ^第十课: o8 q& U- F4 r& h+ Y8 M$ ~
人物头上的图标封号介绍; F: Y* c' k1 T1 a6 F. F
在登陆脚本中检查特定的人物 ' ~0 R# J7 R3 [! V* L; b4 Y9 }
然后使用ICON.WIL中的图片数字 data\icon.wil 8 U; D1 s' w3 {1 Q" }8 i% {7 V
格式为:
0 t9 e. _3 d8 h4 @4 g7 L* H) E#IF% W' y+ x8 p" v2 i: Y$ Q8 N
#ACT
! [% e5 x2 m8 f8 w* t4 Q* }2 K5 |SetIcon 0 1 -25 -10
# E/ T) Y, w# X9 U0 q S* `% fSetIcon 位置(0-4) 头像编号(0-65535) X Y
7 f3 Y* K. b9 V1 e% M+ A第十一课6 o3 R. W9 T9 x5 b* i' t
人物幸运触发变色脚本" K) Z" t, t+ S' f4 e8 L' y
QFunction-0! j4 b+ b3 a$ G& b4 h; l
[@TAKEON1]
0 }# W- [1 a# `% h#IF
3 z K+ M, F2 ~1 O9 S" p& T7 t4 O- [CHECK [135] 1
1 k! y$ l) L7 Z% t) |#ACT
1 C* k1 w5 m' T/ kgoto @123553 h @8 q& t, x" ~) |1 W7 g
break4 r* l- h8 O! R }
#IF u* E* C+ K( c' f! L
CheckLuckPoint 8
" G3 G: i- W6 y: U% d( m( I0 f#ACT
/ N) K( d: O y# r3 p: ^2 ^/ |set [135] 1
4 e1 P& V/ \& ^GMexecute TestStatus 4 65535
' o% \0 U% c0 N3 bSendMsg 0 玩家【%s】全身幸运+9的触发人物最佳状态,各位小心此人物危险. ( ~1 e, Q( A! Q2 B
BREAK( B# M1 N& Q* B8 P- I
[@TAKEON3] ?$ ^: n. @' ^6 @7 [9 r# ^, g
#IF3 r% t4 V! C% m+ k
CHECK [135] 1
& g. y1 f+ V; d- q; Z& ^#ACT
) w" o$ n' _/ sgoto @12355
, w% N3 z: ~9 jbreak3 i% q" {1 \1 S; V, t% ^, A
#IF
0 b5 z* C, m) W6 R$ jCheckLuckPoint 8& v' e1 H' [5 ~+ @1 W
#ACT
# X# r( _# C6 H' H" kset [135] 1
; l" Q) {' x) g [; xGMexecute TestStatus 4 65535
' @9 ]/ i" W! l% h# o6 TSendMsg 0 玩家【%s】全身幸运+9的触发人物最佳状态,各位小心此人物危险.
6 z" f9 z( n( @( \BREAK
! I# n6 b3 g) ~ k[@12355]
4 ?- _: h }' i& K4 j#IF
+ }3 ~9 Y, l% pCHECK [135] 05 f* M: U9 ~1 c
#ACT
& k+ _( k9 |9 K) K3 j$ h7 X( ~; fBREAK
0 I1 q$ F- Q! ?1 V: t8 l) S8 }#IF/ B j" u6 P# m4 Y/ ^+ d! L) ~1 ]
CheckLuckPoint 8
: [' t0 _3 X5 b0 N#ACT3 a' P0 o; M8 T. t
SET [135] 02 t* y+ w/ |% @' @6 d7 {
GMexecute TestStatus 4 0
3 v: W; G4 H9 b) B1 aBREAK- f7 y1 X/ p: I; Q
[@TAKEOFF1]
9 D( s& e/ c9 e, d#IF: v" r9 ~5 |; j; |$ S" ]+ B
CHECK [135] 1
- ?% W9 f" A, s3 j* z4 T) T#ACT
, Q' C6 H: U6 R8 |' k5 U. ^goto @12355
6 ^( Q% [+ ^: M5 X: Fbreak
$ N5 K0 A! w, y[@TAKEOFF3]
8 k4 n; ?4 n7 D& Z5 ]2 r#IF
. V% V/ u* ~0 Q9 M) GCHECK [135] 1
. T, o( A4 I4 v3 R#ACT
4 z3 c/ F9 t8 Q I1 m. Pgoto @12355! q6 Z: m8 A$ {4 Z" y5 y# ?, J
break; u3 p7 [6 O1 @2 O
第十二课) k: }, V$ f1 X! p
标志位的详细讲解/ Z0 Y$ }+ \5 g
1-255 ! H/ h. ?+ }% a
check ' p2 v( }- S: k; R6 [2 t0 L
set
' B* I2 o( K) u1 F+ g) xreset
- M7 x$ q9 x) _2 R ^
) P. J! A- k9 A* }第十三课: i$ Y; \ J) O' \6 d
怪物触发脚本 2 y) |% V' K- g- i7 H2 T
首先来到mirserver\mir200\envir 找到下面的MapQuest.txt - 怪物触发脚本8 F' A1 G8 u7 V9 \
脚本格式为. X A! c) k: A* v
地图号 怪物死亡触发序号 0 怪物名称 * Q0-Q800
' K3 g: B6 q' R( i3 [. g0 }文件来自于 mirserver\mir200\envir\mapquest_def1 G3 A6 [( Q! Q' l! t
第十二课! y) x1 ?7 L5 }7 {: Y _4 }: @7 X
沙巴克城战的添加以及攻城时间设定
( G1 M) c- e" I在m2server上面点击 管理-城堡管理-沙巴克-攻城设置
5 F" c M3 f. f& O3 |申请所有行会攻城-确定; ^8 N# u, U8 q" V; C& M
修改-参数设置-时间设置3 N1 L. }+ y9 C ~/ U
第十三课
, g3 W1 i! \5 v. E8 o自定义脚本变量/ O8 S9 R; R8 \2 a* W p4 a
首先在QMannge当中产生变量 格式为:1 K( P8 G( _$ K7 s
VAR Integer HUMAN YY(变量名称)/ {, G6 n M, T
加下来继续写读取变量,格式为:
8 h" P8 k- `6 VLOADVAR HUMAN YY ..\QuestDiary\测试\Q123.txt5 V/ f/ r( f# ^% C( S B3 \/ w( ?
在QuestDiary\测试 下新建一个名字为YY.txt的文档4 |. R5 e2 L. E3 Y2 j
接下来使用变量即可
! |* ?. U+ B |- d, D2 i详见使用说明书:自定义变量1 H- \+ c( T ^6 e" ?
! @5 J( G% \# {
第十四课
h( o; F0 n7 v% {游戏界面的修改以及登陆界面的修改8 {' p7 [1 T* y2 K q
gameplan.wil- v( E- J, c( T9 b
游戏登陆过场动画 103 @: U8 G# z$ N
游戏下方的窗口图片 53: E; h1 L( `0 t
第十五课
( H: U$ ]' ]6 S3 Z) c机器人脚本(也就是自动执行脚本)
! a: d2 F6 G2 N0 _- }mirserver\mir200\envir\Robot_def
$ \# ]6 y* y0 n9 _- X6 lAutoRunRobot.txt 自动执行 RobotManage.txt
4 q1 u2 q# G3 k) ~5 ~: s在AutoRunbot.txt 当中格式为
0 X+ R) q6 H. j2 F5 w) m#AutoRun NPC 时间类型(MIN分钟 ** / SEC秒数 ** / RUNONDAY **:** / RUNONWEEK *:**:**) @****(RobotManage.txt 脚本段)
/ ^ _" \) b0 p# M) P o1 p+ Y. B第十六课5 C; ^' F3 s! U9 ^. W
升级宝石的添加以及打不死的经验怪
( }" v; q5 p0 B8 j$ P! z9 e5 HStdMode=57(升级符合类型的装备)
* @& {" k( u/ F p LSource=(等于2)% i# x0 x7 g. [; K+ y* I
Shape=(等于0升级符合类型的装备,指定类型时填写待升级装备的StdMode值), Y2 W9 I" B8 E9 ]
注意:此类宝石只增加攻击,道术和魔法.3 g- V N( D2 {. ^/ c$ f {
DC2,MC2,SC2=(升级装备的攻击,魔法等,必须是可增加攻击和魔法等属性的装备才可以升级,例如:武器,项链等)
3 `1 ~2 i$ d& s% f( Lduramax为升级成功率 Anicount为可使用该物品升级次数
6 l9 _' q3 f! W! z+ [' c/ g, Q2 _4 m宝石类型6:: u1 y1 J( ?& g: P$ J
StdMode=59(增加升级成功率)- e( P3 D7 Q. |( z0 p) B9 J" s
Shape=(0表示所有类型,指定类型时填写待升级装备的StdMode值)
4 S/ y- Z5 L6 u4 x# X: L UDuraMax=(提高成功机率,例如:设定5即为提高5%的机率)
2 p" K& X0 p# ^6 U
4 O! ~# Y; k* c/ A1 l2 z, D1 s2 n/ b把怪加在哪个地图 找到地图号 后面加参数 HITMON(@XXXX)0 Y- w V, e- Q, J
在QFunction-0.txt里加入触发脚本段 [@XXXX], B# t9 x& M- l) _3 K
在万游设置器里添加怪物数据
% M: \, v7 U; D攻击类型 120 攻击图像 18% H4 a" L, a1 _+ o l) o- N
checkhitmonname 怪物名字
q q# K4 A7 Y: b刷怪文件 Mir200\Envir\MonGen.txt
' J% m" K* |4 O) G8 ^6 T0 n2 ]' n7 r' _% W( s, @( c' L4 V( j: J
实战效果课程 k$ A, u' x' n' b. @6 A3 ]: k
自定义变量 G A I S 1 N+ |1 D. f1 d* e$ H( |
G变量为数字型系统保存
2 y/ B" `$ D- A6 l5 ^0 G2 X: vA变量为数字型脚本保存% E' _ n/ D4 D/ k
I变量为文字型系统保存/ z! |6 l! s; {( p
S变量为文字型脚本保存
1 j! ^3 T3 @3 g5 q$变量名称
0 b: ^' R8 a- ^2 u首先把奖励名额(变量)进行赋值 ! I4 j. @! r6 J, _* |: k
首先我们把他所点击的等级移动到一个脚本保存变量
# ?( }9 V. D% J, G( [! p可以用S0 S0=他所点击的那个奖励的等级& v9 t* M" y8 r/ [3 b7 Y
接下来检查该等级奖励名额的变量是否没有了 也就是等于0
, N* P6 ^! ^# Z如果是的就进行一个 跳转告诉他领完了
0 u3 H1 L7 a5 o: H如果不是的就跳转到 领取的地方 再进行检测 因为我们还没有检测他的等级 以及他是否领取过
i: R8 {& s- p首先检测他的等级是否小于该奖励的等级(S0)7 V0 l' U/ L# ~( p( b$ [; [ f
如果是的就告诉他等级不够 也可以使用 $STR(S0)等级不够
- q5 v% P- ]4 X0 ?1 K再用break进行连接再进行检测3 o& G4 c( }/ }6 p; @) J
接下来再进行检查他是否已经领取过 可以是标志位 可以检查文本文档" R: E# z2 I$ t0 Y+ _# s8 Y$ E
CheckNameList ..\QuestDiary\奖励\升级领奖\$STR(S0)级.txt9 J ]- S9 X8 j
如果他在这个文档当中就告诉他 他已经领取过$STR(S0)级的奖励了% G# M, P; z" p
如果他的名字没有在我们的那个奖励记录的txt当中的话 我们就让他去领取
0 H( o% O' Y1 i下载地址:
|