千年的服务端主要分5个程序,本文详细介绍了服务端各类重要参数的含义,方便新手GM提高对服务端参数配置和功能的认知!2 x' X/ W; }( _7 T
7 B3 K* _2 [2 I7 F1:Balance 网络均衡服务器。5 P# [9 V, Z2 H+ S# z P& F) s
2:DB 人物数据服务器.注意:这里不包含福袋数据和门派数据等.; r4 I- v6 s7 ^
3: GATE 网关服务器.
# k( _/ S" S/ ^/ S# ]$ `4: login 登陆服务器. 帐号密码等数据在这里.! z- C6 W) l: |, V! _# e
5: TGS 游戏主服务器. 游戏大部分设置均在这里.
, f9 |9 B, ]$ X% k: N' F! }& p" Y5 U8 G2 a+ u ], K5 g4 J
下面讲下他们的工作原理.
, P1 N; j/ F! j% e, O2 V' I: ~
z$ Z( G! f; ]% S1 ~1 r首先,玩家通过TCP协议3053端口连接到Balance服务器,当Balance接到连接命令后,
+ @5 X4 ^3 O4 r将连接信息转化为UDP协议通过3030端口转到GATE服务器.简单的说Balance只是负责& J- ?1 _5 \" ?! t% `/ ~! u
中转.然后GATE服务器在使用TCP协议连接TGS服务器的3052端口,若TGS端口连接正常,; ^ h: f* I6 Q/ @
则返回信息到GATE,GATE再验证DB与login服务器,若连接正常,则发送信息连接成功到
0 E# Z* r# J0 m4 W' g2 _ B& t6 B客户端./ @2 m+ ]' D1 s2 |! M5 R4 P, n+ G8 H
) R( S& n' H S1 s再说服务器所牵扯的端口. (以下端口均为未修改的默认端口)+ z- J: Z. N- q% d& ]7 K
9 p! a8 r/ G2 X4 h+ h
Balance服务器 对外TCP协议3053 连接GATE-UDP协议3030.
- ? L" t [! b1 HDB服务器 TCP协议3051连接GATE.3 S6 x" w2 n" `! o J
GATE服务器 对外端口3054-TCP协议.注意,虽然3054对外,但是直接连接3054会出现版本错误的提示.
! \+ \ b7 m ?; D; c6 j) k3 c) YUDP协议连接balance的3030.TCP协议连接TGS服务器的3052 TCP协议连接DB的3051 TCP协议连接login
Q; @7 |" X* n的3050 这里最重要的一个,也是很多朋友不明白的地方,那就是paid服务器的端口,paid服务器为冲卡
' T$ I) @9 x4 S0 a验证服务器,通常做私服只需将其删除即可,也就是说并不是GATE服务器要亮4个灯才正常,这是很多朋友
* P) Q/ ^. L5 @0 T3 b& e的误区.
* Q/ {1 Y9 D4 y4 y! R1 v+ ologin服务器 TCP协议连接GATE的30506 `* h/ r( E4 B, {. Q
TGS服务器 TCP协议连接DB的3051 其中还有一些物品记录服务器等.
) j( v; K1 G2 s: ~" M E- q2 ^+ j, V c& \( K9 [+ X Z1 e/ o/ \- [
: [7 w7 I% b. T- ^: Z+ q# ] f再讲每个服务器中的配置.; }# f* S/ j. C2 z% w
7 u2 E; l8 R6 U& `
Balance服务器 目录中的balance.ini中配置3 m( X' \5 N9 i1 H
[BALANCE]- W6 r0 `0 i" Z' Z; \/ k; n( g o
TCPLOCALPORT=3053
( _/ U/ Y& ~& j: s4 @4 PUDPLOCALPORT=3030
2 ]1 R+ A& m% n* b基本不需要修改,若你想开启一机双线,那就要双开balance和GATE,
[- t' g0 S- _: R. W( Z若需要一机多区,就要双开balance,GATE,TGS。3 o( z% Q) D5 t
这也就是克星一机多区的工作原理.+ p! C% b g8 y
但是官方原版的balance服务器并不读取balance中的TCP协议中设置的端口,也就是你即使设置40531 d- I: B5 ?: y1 V+ V
他一样是在3053工作.但是UDP协议中的3030是读取的,克星就是改写了balance服务器,让他可以从
0 c6 o3 z+ g$ T+ P4 B配置文件中读取用户所设置的端口来实现一机多区的.
0 a9 F* p' N! N, \( G如果你想不使用克星工具实现一机多区,应该做以下设置.
7 g r9 i2 J: ~6 m0 [6 u+ V# g复制另一份balance出来,打开balance.ini修改' T+ t( I, O7 O1 I/ w
[BALANCE]$ \! J4 C; h; {! f4 C1 D! Q
TCPLOCALPORT=4053
6 b6 c7 f0 g9 A' X0 }+ KUDPLOCALPORT=4030
# s5 l1 h9 o" P6 B v这里修改后注意GATE.ini中UDP协议3030端口为4030
% \) G0 y3 b0 b7 B. H然后打开UE,查找ED0B修改为D50F.注意,有很多个,修改最后一个就可以了.这样他就在4053端口监听了.
& P- a. F8 u$ D2 N3 o& _5 N3 M( M& e) T1 U2 M* O8 [; ?4 m2 p
题外话:很多朋友很不理解16进制编辑.这里我给大家稍微讲一下." Z8 {5 ?+ k* U4 j! D# o
打开windows自带的计算器,选择查看-科学型,然后选择10进制4 ]( G$ a) r) @9 r
按下3053,再选择为16进制,你会发现3053在16进制中显示为BED
. ], E9 s- ~3 y& N4 R) E但是为什么要查找ED0B呢,因为在程序中这些东西都是反写的,* j- ] j- l; k0 {" x
以两个字母为一个单位,也就是说假如为6D2E,你在查找是应该找2E6D6 }( B* E4 g- g J4 V- y
若是奇数就要加一个0来补齐.
; a. K& t4 q+ Q
Q4 g& P5 R& B; Z+ ? M再来看看DB服务器。
; \. y3 y; N6 M# s1 J9 Z8 g
# x2 F/ i) b. [4 b: s/ o( pDB服务器下目录比较多,我们一个个来讲
% a5 b; T- Q7 C( v1 X9 fbackup目录本身DB服务器不产生,也不在他的目录下增加任何文件,
3 J% Z2 t8 }# }$ y/ p' g根据笔者猜测,他应该官方工作人员用来备份服务器资料的一个目录.删除也没什么关系.
; {9 K3 s/ X9 ?log目录,web目录,均是记录玩家的情况& f8 G! O4 k0 F2 @
userdata下是记录当天上线所有玩家的资料,同时,当你点击DB服务器中的backup按钮时
5 O+ A) V' A/ l! _1 W+ u1 A& y他会在这个目录中产生一个备份文件,但是这个备份文件不要当作人物资料来用,具体原因8 E j* i0 |+ D
还不太明白,只知道会导致玩家元气永远比原来差一些的问题.
2 G- S. Y$ h8 K; `; W" [3 O* u* ?
DB.exe,这个文件是DB服务器文件,没什么好讲的,说说他的按钮吧.
+ V1 x% o: \4 G7 t% R3 y: P+ Breload,字面意思是重新读取,具体作用未做测试.; l, P4 E7 \9 A' V/ V H8 f; b
addrecord,增加用户数量.也就是DB默认的建立最大人物资料为10000,若你服务器人气很高,
4 h3 o% _" U' u4 r+ u- |3 _9 s0 B到最后玩家无法建立新角色的时候,点击这个按钮,增加数据库容量就可以了.
( V% q2 ]( R& b- }8 g4 r3 E) D; b, Q# Asave today.sdb,存盘当天玩家上线记录.% ~2 J, S* B7 W# c2 b ^
back up,备份数据库,备份的数据库会产生在userdata目录下.% a) o; A2 R6 p8 f ~
" ~. b: k) O( Q) m
' \8 v/ G2 ?3 @1 F( }9 E# h9 RDB.ini,DB服务器配置文件.
6 j) o" N/ \- M7 @- o- t+ e: v[DB_SERVER] 明确服务器名称.
h" L$ t4 [$ gFileName=testdb.fdb 数据库名称.运行DB服务器后会产生一个以这个为名的数据库,但以数字区别.) o5 }3 j, t3 K1 {. _, Y
BufferSizeS2S=1048576 数据库的规格
, ]8 P! [9 V9 h: BGateAcceptPort=3051 DB与GATE连接的端口.TCP协议.
! a" y8 p$ @$ B. ^* f3 _RemotePort=1024 接收端口.应该是玩家下线后TGS与DB连接的端口.
: G7 A0 I& T8 T0 XItemRemotePort=1020 似乎是物品记录端口,但是实际上物品记录端口在TGS下.2 w) h2 `: y/ \7 ^7 s* {
. b. d2 h$ U% g* d: H
' @% ^5 g6 N T! _& d. {" \3 xIPList.txt文件.) V- d% S- A2 e7 u
记录远程GATE连接的IP.一般设置为127.0.0.1
6 w1 k$ ^+ j a" Y3 q- ~
' k7 ~& S- c& oremoteip.txt文件.
. u* e% \* P% ? a记录远程TGS连接的IP.一般设置为127.0.0.1/ \$ E6 W7 v4 ?: T/ u
/ d! i( d7 N' }! I5 T2 _
ModifyMagic.txt文件.
( c. X& \- R# t# R& {- \感觉目前似乎没有用到.具体作用有待补充.8 |& ^( M) m9 E# W# v4 W
: q6 b7 d1 R( y. r- y+ {1 P/ C0 A& j* N: Y- `
9 {/ W7 j9 ]3 E9 W" M
GATE服务器.
/ V' w& z8 C' s+ P+ |
* n& m2 d5 m! _log目录,记录目录.# M+ t. O) l3 X
& m: n7 G) L6 o7 [CreateChar.txt文件,定义新手出生身上所带物品,但不可定义段位,不可定义数量.
& k% _2 M2 C, t5 A! Q l6 h+ Y r[CLOTHES]
* n- Y) e2 b8 Y8 s* LCLOTHES_COAT_MAN=男子上衣 男子新手出生后所拥有上衣.
% F6 V. `0 h1 X! t. KCLOTHES_PANTS_MAN=男子短裤 男子新手出生后所拥有的裤子.
1 j ^) h! z3 m3 D1 e9 Y) vCLOTHES_COAT_WOMAN=女子上衣 女子新手出生后所拥有上衣.1 L& j2 p: x4 ]6 o) J
CLOTHES_PANTS_WOMAN=女子短裤 女子新手出生后所拥有的裤子
2 e, ~5 o) E. d+ u3 X$ `
! g. B: x+ T% l5 o1 L2 @+ p C[WEAPON]
: N( W& A; g& _& m! xWEAPON_SWORD=长剑 出生后拥有的剑 实际上即使不是此类物品也可以" ~: K, `4 [6 M" h, m2 J- q+ C: T
WEAPON_KNIFE=长刀 出生后拥有的刀 实际上即使不是此类物品也可以
) c; F. V/ J- d; H% SWEAPON_SPEAR=长枪 出生后拥有的枪 实际上即使不是此类物品也可以/ f( N+ U- C! d" b5 X7 I
WEAPON_AX=斧头 出生后拥有的斧 实际上即使不是此类物品也可以
# X2 a+ N8 O# R/ ?& W9 v. O: a: q: i3 {( E! [+ Q! |
[ETC]
" N/ R& d+ @! [) q! g% B! iETC_01=五色药水 新手出生后拥有的物品1.这里要说一下
- ]) H) M$ H3 x+ E
3 A$ o: @' W* _) _4 B) h G W即使你定义为没有耐久的物品,他出生后还是会有耐久的., d; |0 z5 k+ J! V
即使你设置了ETC_02或03或着N+1都是不读取的.如果想要他读取除非去修改GATE主程序.8 `& w! W" U$ O6 N
$ G4 r3 g# X5 |1 t( @* ]( ?) k: p
2 ]' H% E# k, [, b
DontChar.txt 定义不允许建立的角色名.& q: } q1 ?$ [' h
- h% V, J R6 T6 r% x
; A. \. ?+ i, c; H( H" d& p8 igate.ini文件,GATE服务器配置文件.这里详细说一下.
& G4 W& B0 t$ U: j& Q- z0 [7 i* Z5 ?+ r* A& O
[GATE_SERVER] 定义服务器名称; z W I9 Y0 g& P" B- |% l% Q5 H
LOCALIP=127.0.0.1 定义对外IP
% T$ h0 X% @4 ELOCALPORT=3054 定义与balance连接的端口
3 q' u) z1 C9 k3 K7 I0 T3 LLIMITUSERCOUNT=500 定义玩家最大上线允许 0为不限制.
# v# A7 i2 \1 kCHECKPAIDINFO=FALSE 是否收费服务器.
; ^4 e- u: E9 }9 p y2 uBALANCEIP=127.0.0.1 定义balance服务器IP% C: P* {# W3 i/ L
BALANCEPORT=3030 定义balance服务器端口.UDP协议." X1 q. g: w t8 S+ p& Z2 y( c* c
SERVERNAME=test 定义服务器名
1 {! }/ o. h( BBUFFERSIZES2S=1048576 服务器缓冲.应该是这样,若讲错请指正,不胜感激: \% j0 Q" Y- x2 |! E
BUFFERSIZES2C=8192 新手村缓冲.应该是这样,若讲错请指正,不胜感激% ~* }% m' E9 e" w! ]' O2 ^
1 \! D9 ]# v% d2 N[GAME_SERVER] 定义服务器名称* O9 e: u8 @8 j, A$ T
REMOTEIP=127.0.0.1 游戏主服务器IP地址,也就是TGS的IP地址.经典的3052漏洞就是这个.
% ~- p2 F8 a6 |4 u4 EREMOTEPORT=3052 游戏主服务器端口.一定要封.6 w- \* H0 Q) a+ @ z) f" _) p
9 D( Y% u) Y0 h; y/ x9 d[DB_SERVER] 定义服务器名称% e; s; S! G% O/ i/ D
REMOTEIP=127.0.0.1 人物资料服务器IP地址,也就是DB服务器的IP地址.
- s, p$ z: W6 r6 GREMOTEPORT=3051 人物资料服务器端口,一定要封. d2 s" h- c* P4 s
; j" s8 h% I# n) r
[LOGIN_SERVER] 定义服务器名称
1 Z; O1 c3 q5 k P! a* v& y% h8 cREMOTEIP=127.0.0.1 登陆服务器IP地址.
% l- T- J, k' [1 _) I- O! E( ?REMOTEPORT=3050 登陆服务器端口
8 v4 l0 ~7 H* N+ z2 D* j0 M) u4 L# p, B/ i, |
[PAID_SERVER] 定义服务器名称 (通常删除)
* N M* A9 B, e( h2 i A- tREMOTEIP=127.0.0.1 定义冲卡验证服务器IP地址 (通常删除)6 o p" f6 W. d7 ]6 g7 i
REMOTEPORT=80 定义冲卡验证服务器端口 (通常删除)8 W0 \: V& M1 w6 ?
9 r: M$ F$ R7 ?' B9 Q' r" [$ {# E" C5 T _9 s" [
tgs1000.acs文件。GATE的语言库。
# x, m" {8 D _9 a5 `8 w6 {( h# a- u% W8 L" t5 `# |/ o9 f
Village.Ini文件。定义新手出生地图。这里讲一下。
" P5 x& ^' i5 M$ c! f& t5 J- ]8 F/ u7 q3 i
[VILLAGE] 定义配置文件名
3 o, p' b: r' \% G0 M( }% t* z: F" x( F1 K$ [
COUNT=1 定义新手村可选择的数量" `% z2 `5 T, K+ U& ~ j
' }, q) t8 v2 X
NAME0=新手村 定义第一个新手村名称,其实并不读取,只是让技术员用来区别。' {& K5 q- @: K& {- x
X0=178 第一个新手村X坐标# [( I; \' @8 B4 w* |( e$ z
Y0=238 第一个新手村Y坐标
3 Y7 {+ K# @ @8 n" L! C tSERVERID0=0 第一个新手村的地图编号,对应TGS\INIT\MAP.SDB中的编号.
% n \! V/ B0 c8 o8 v |