千年的服务端主要分5个程序,本文详细介绍了服务端各类重要参数的含义,方便新手GM提高对服务端参数配置和功能的认知! v' e. F$ m5 F1 N) l2 @
" M1 Y5 H {/ Y
1:Balance 网络均衡服务器。0 ~1 L( [+ @7 Q1 N& ?6 @( R3 O8 g
2:DB 人物数据服务器.注意:这里不包含福袋数据和门派数据等.
4 r% I% X+ C* w6 x9 A+ O3 R3: GATE 网关服务器.6 B& { X4 x& S k
4: login 登陆服务器. 帐号密码等数据在这里.: q0 Y* g8 ?2 q5 X; D3 l/ B, V
5: TGS 游戏主服务器. 游戏大部分设置均在这里.
- q X* m8 [! ^( n- g% V3 V$ ^" Q: @8 C4 L
下面讲下他们的工作原理.
. [; q( H3 f+ D, _) f+ Z6 W
3 Y j! Y Z. N0 d# x首先,玩家通过TCP协议3053端口连接到Balance服务器,当Balance接到连接命令后,
9 S* F6 L" f I% ^' ]将连接信息转化为UDP协议通过3030端口转到GATE服务器.简单的说Balance只是负责
+ Y. M S5 B( V! X4 P/ Q f中转.然后GATE服务器在使用TCP协议连接TGS服务器的3052端口,若TGS端口连接正常,
; X8 s! l e4 s则返回信息到GATE,GATE再验证DB与login服务器,若连接正常,则发送信息连接成功到, [3 j, u w' y2 ?
客户端.0 S6 d+ @: o5 z
" I9 n! H! r! b2 H0 K
再说服务器所牵扯的端口. (以下端口均为未修改的默认端口)
7 |1 J: X5 K; D+ j7 ?
7 ~2 W" r! L f! ?+ n8 oBalance服务器 对外TCP协议3053 连接GATE-UDP协议3030.8 ]# y1 B1 A' m9 m
DB服务器 TCP协议3051连接GATE.
" J) A. Z7 H1 G o; }GATE服务器 对外端口3054-TCP协议.注意,虽然3054对外,但是直接连接3054会出现版本错误的提示.
0 |: l7 x! k! K# j1 J9 P2 Q; s5 gUDP协议连接balance的3030.TCP协议连接TGS服务器的3052 TCP协议连接DB的3051 TCP协议连接login
8 Y9 P& b* a+ \的3050 这里最重要的一个,也是很多朋友不明白的地方,那就是paid服务器的端口,paid服务器为冲卡
# ~% n6 J2 Q/ V7 Y) m+ j$ w+ U+ V# q验证服务器,通常做私服只需将其删除即可,也就是说并不是GATE服务器要亮4个灯才正常,这是很多朋友5 y: f) s* L2 r' e2 f- ]4 o
的误区.
7 O! g5 R2 k) e5 {login服务器 TCP协议连接GATE的3050% Y" t7 l1 X3 h; y9 i
TGS服务器 TCP协议连接DB的3051 其中还有一些物品记录服务器等.
, A* f; B! z& A# x, P) h
`7 z/ v4 p2 b2 I
$ |# @/ c7 j. U4 ]) ?2 H% i( L0 X再讲每个服务器中的配置.& ~4 k X' [3 ]( d8 E3 E2 M
3 r/ T& c4 C3 j, e$ Y3 c! C/ c$ ]
Balance服务器 目录中的balance.ini中配置
; M1 W/ q- V& J) X$ Z9 g# `4 b[BALANCE]
+ w1 t6 R" z; g" j0 sTCPLOCALPORT=30534 J e" B) x6 t/ V) K8 u
UDPLOCALPORT=3030
! D7 ]- \1 s8 ]' U基本不需要修改,若你想开启一机双线,那就要双开balance和GATE,8 _* I8 H/ D: }# x
若需要一机多区,就要双开balance,GATE,TGS。
' i0 O! w: e& h z/ f这也就是克星一机多区的工作原理.
* f! A. k0 R9 U/ B但是官方原版的balance服务器并不读取balance中的TCP协议中设置的端口,也就是你即使设置4053
* }+ w& ?9 V, V& I# _5 D- [2 s# x" b他一样是在3053工作.但是UDP协议中的3030是读取的,克星就是改写了balance服务器,让他可以从
( P4 }; _$ F: ^配置文件中读取用户所设置的端口来实现一机多区的.
) A+ t+ t% c1 y如果你想不使用克星工具实现一机多区,应该做以下设置.0 \) \: z( [0 P& e4 L g
复制另一份balance出来,打开balance.ini修改) \$ ^/ x) G- w1 V
[BALANCE]
O5 B/ z$ W; m# C2 W+ E" i1 HTCPLOCALPORT=4053
( \) t' M. u$ s. m6 z6 NUDPLOCALPORT=4030
# `* j! I( b/ @8 c这里修改后注意GATE.ini中UDP协议3030端口为4030
/ N) j" @7 j5 R) {2 L然后打开UE,查找ED0B修改为D50F.注意,有很多个,修改最后一个就可以了.这样他就在4053端口监听了.
3 r2 V' w" ^- `: V" e, `" M! `+ q+ u f6 Q$ ~% t5 K" X
题外话:很多朋友很不理解16进制编辑.这里我给大家稍微讲一下.( O& X3 E! B y5 B! ?6 q
打开windows自带的计算器,选择查看-科学型,然后选择10进制
$ A; E4 s6 ?' I! f- }2 E按下3053,再选择为16进制,你会发现3053在16进制中显示为BED
6 j7 Z% f! R+ o1 ~4 j- }但是为什么要查找ED0B呢,因为在程序中这些东西都是反写的,8 ? P: l7 X5 g- H
以两个字母为一个单位,也就是说假如为6D2E,你在查找是应该找2E6D
1 j1 N6 O$ q6 }- b) K% r若是奇数就要加一个0来补齐.( r6 n9 c1 s, L$ B, y
3 t7 f" x4 ]3 A8 B8 Z0 U3 V再来看看DB服务器。) J' L+ C: y7 C4 j$ ]9 f
. B! a3 l |" g: S. T5 V0 k/ S% t. |/ L2 e
DB服务器下目录比较多,我们一个个来讲
" J4 u! |" O4 Ubackup目录本身DB服务器不产生,也不在他的目录下增加任何文件,! L" k" m3 i+ i- T
根据笔者猜测,他应该官方工作人员用来备份服务器资料的一个目录.删除也没什么关系.
) x# Y& D* ?- b2 c2 jlog目录,web目录,均是记录玩家的情况( g4 c+ A# ]$ q; T+ l9 R: f9 w, C
userdata下是记录当天上线所有玩家的资料,同时,当你点击DB服务器中的backup按钮时
; {. K4 U$ @" A) h& S0 h3 S他会在这个目录中产生一个备份文件,但是这个备份文件不要当作人物资料来用,具体原因. L# G- S' f7 z, C7 i+ `3 E4 J
还不太明白,只知道会导致玩家元气永远比原来差一些的问题.4 }$ Z7 b2 h& q$ Q3 T+ R8 L1 e1 U
, F# @- p A1 ADB.exe,这个文件是DB服务器文件,没什么好讲的,说说他的按钮吧.; \# W( J5 W3 ?5 S- }# ~
reload,字面意思是重新读取,具体作用未做测试.# `/ `9 R1 H5 y* T C, j
addrecord,增加用户数量.也就是DB默认的建立最大人物资料为10000,若你服务器人气很高,
: x2 V/ I! { z. P, H& T9 X: A' }! Z) n到最后玩家无法建立新角色的时候,点击这个按钮,增加数据库容量就可以了.
: u: z$ s# k7 b+ Psave today.sdb,存盘当天玩家上线记录.3 B. J+ U) a2 Z- o- m
back up,备份数据库,备份的数据库会产生在userdata目录下.
; Z1 |# i" b7 Q4 P( N+ ~ F4 m3 n
+ c4 `+ i; _3 t1 i; I- s6 T. J" x9 Y. G) |2 a' F- g5 V6 l7 f; x: m
DB.ini,DB服务器配置文件.; ?9 b }* M k
[DB_SERVER] 明确服务器名称.
0 }# R9 y9 k$ pFileName=testdb.fdb 数据库名称.运行DB服务器后会产生一个以这个为名的数据库,但以数字区别.
7 c. V; G! h3 _7 o1 GBufferSizeS2S=1048576 数据库的规格' ?- g) F! \( ]. |1 Y8 g
GateAcceptPort=3051 DB与GATE连接的端口.TCP协议.
1 H3 N2 |1 ]. m5 F9 ~# W' H: LRemotePort=1024 接收端口.应该是玩家下线后TGS与DB连接的端口.
/ O: x+ H" [3 X0 T0 p$ m [ItemRemotePort=1020 似乎是物品记录端口,但是实际上物品记录端口在TGS下.
: m. G7 d8 ?; p* C! W. z9 |& g; X M; r1 }0 z8 l( ]% G
: W$ b! v* {' L2 e5 n$ \
IPList.txt文件.
4 H3 d v: m& A. U( c1 D, W记录远程GATE连接的IP.一般设置为127.0.0.1
6 l; N0 r5 O5 N( u/ L8 U! X7 i: N: R9 Y3 Q7 I7 T
remoteip.txt文件./ U' U6 h9 |- Z: x M$ {+ i4 R
记录远程TGS连接的IP.一般设置为127.0.0.1
7 f1 G7 I; L$ k6 `/ F% L5 t0 J9 Z& E6 k# r. i
ModifyMagic.txt文件.
S. t* }( Z$ B: \: o2 Q5 H6 \: Y感觉目前似乎没有用到.具体作用有待补充., \0 U; V/ `; U6 v. j- I% U
8 f* G( ]% h5 @, G; `5 W! v% [2 q
/ X6 z2 B0 N4 B- mGATE服务器.
6 G4 ]. V3 d# \ Y: s$ Q& m
) g6 s& m7 T. ]" c8 Z, R( n5 tlog目录,记录目录.1 \0 k- O8 o9 L& P
. r7 _+ X4 w$ ~
CreateChar.txt文件,定义新手出生身上所带物品,但不可定义段位,不可定义数量.
: G2 p) v1 _+ V0 c7 ?2 X- n[CLOTHES]2 T4 z8 i9 l3 d( Q1 t
CLOTHES_COAT_MAN=男子上衣 男子新手出生后所拥有上衣.- Y. y" i# W' Q3 J3 F P
CLOTHES_PANTS_MAN=男子短裤 男子新手出生后所拥有的裤子.0 j; r$ \, f- O# r& B; v* F
CLOTHES_COAT_WOMAN=女子上衣 女子新手出生后所拥有上衣.
! u; Q& o) |0 P( H3 Q0 z1 ^6 NCLOTHES_PANTS_WOMAN=女子短裤 女子新手出生后所拥有的裤子+ f, U% R( C; d+ a0 h
; x8 C8 ^& Q8 V) w+ B$ N0 I2 u[WEAPON]
/ m" G1 c, I8 w7 UWEAPON_SWORD=长剑 出生后拥有的剑 实际上即使不是此类物品也可以
. R5 Q4 q# e& ^WEAPON_KNIFE=长刀 出生后拥有的刀 实际上即使不是此类物品也可以
/ \" {& _( m7 Z* F3 {WEAPON_SPEAR=长枪 出生后拥有的枪 实际上即使不是此类物品也可以
2 t0 @* c) ?6 o3 j3 \# YWEAPON_AX=斧头 出生后拥有的斧 实际上即使不是此类物品也可以
$ d& K0 e0 k" D7 x1 G
! V3 C8 `7 K2 R# D' h% n[ETC], H: J$ F, p/ ]1 F' R) S
ETC_01=五色药水 新手出生后拥有的物品1.这里要说一下
1 Z) ^" @$ h7 L2 q9 Q. u+ q& U( ^4 J; j. R2 f
即使你定义为没有耐久的物品,他出生后还是会有耐久的.+ _0 Y: ^" r, S: l k3 S# [
即使你设置了ETC_02或03或着N+1都是不读取的.如果想要他读取除非去修改GATE主程序.6 h+ r/ Y8 y) I! t
: c$ S4 f5 F& ~" ?. k
# Q* F. h# s' _DontChar.txt 定义不允许建立的角色名.
% b( i8 }8 g; n# p* A! A% Q6 {! W6 ^. v5 m! V& d
2 I5 }4 f" G4 f: b' u* M
gate.ini文件,GATE服务器配置文件.这里详细说一下.7 R+ u% x8 e- k; X
N* ~% b" g: [, I
[GATE_SERVER] 定义服务器名称
2 o% Q" Q: @/ A- @! l) C+ fLOCALIP=127.0.0.1 定义对外IP
$ M& d p; B1 v! [LOCALPORT=3054 定义与balance连接的端口
% m3 F# t( a8 ]1 z" p A- bLIMITUSERCOUNT=500 定义玩家最大上线允许 0为不限制.
# H) q' @# g' b) [, G! D8 vCHECKPAIDINFO=FALSE 是否收费服务器.0 O4 a& f; F( O; y1 s$ ^
BALANCEIP=127.0.0.1 定义balance服务器IP% i9 h; F3 Y# `* e5 }. _
BALANCEPORT=3030 定义balance服务器端口.UDP协议.
2 u( ~' A0 Q' Q/ bSERVERNAME=test 定义服务器名
6 @) x+ i& `/ M# oBUFFERSIZES2S=1048576 服务器缓冲.应该是这样,若讲错请指正,不胜感激
/ _/ f* N% p U6 m, `BUFFERSIZES2C=8192 新手村缓冲.应该是这样,若讲错请指正,不胜感激8 Z6 ]" e& r! f" S) s0 R
- F/ I5 a/ @9 ^: `* n" }4 [ h( r
[GAME_SERVER] 定义服务器名称$ h0 f& g$ ]6 p ]7 W' b
REMOTEIP=127.0.0.1 游戏主服务器IP地址,也就是TGS的IP地址.经典的3052漏洞就是这个.) Z9 ^; C# Z1 I8 T; r. I4 o
REMOTEPORT=3052 游戏主服务器端口.一定要封.. E3 q) ~) k& f" d* @% x) Q/ n9 G
# {) w$ j; M8 p# Q3 \7 y. h+ E
[DB_SERVER] 定义服务器名称
+ ^$ W5 s6 V4 WREMOTEIP=127.0.0.1 人物资料服务器IP地址,也就是DB服务器的IP地址.# c% h$ }- P/ N, s- Z/ n1 A
REMOTEPORT=3051 人物资料服务器端口,一定要封.. t7 g3 ^; U4 G3 J9 z' ]$ D
& X- c" m: t2 M2 W. R; e
[LOGIN_SERVER] 定义服务器名称
! b! @/ X* R5 Y/ `" H( S! zREMOTEIP=127.0.0.1 登陆服务器IP地址.
; L& n4 E. O0 n8 J- ?' dREMOTEPORT=3050 登陆服务器端口
& c+ |6 _( u) P8 O b- M/ w) D9 n; Q
[PAID_SERVER] 定义服务器名称 (通常删除) z' Q5 x4 K0 a. ^
REMOTEIP=127.0.0.1 定义冲卡验证服务器IP地址 (通常删除)' B2 \ d" n# h' F9 g2 ?
REMOTEPORT=80 定义冲卡验证服务器端口 (通常删除)
7 a* ^1 j0 L m
' U6 R* r/ f% ~" f) t2 S
; t& C" I7 t2 m* S4 }$ ~tgs1000.acs文件。GATE的语言库。* ^ W3 z0 z* Q* a+ O3 N4 x
; ^+ K E6 F& m% c
Village.Ini文件。定义新手出生地图。这里讲一下。$ P1 d7 T+ l+ b5 x/ Z# I h) u
0 Y# b3 p2 J1 N# F
[VILLAGE] 定义配置文件名
F j6 g9 K; a& t _% C! r* i* G
COUNT=1 定义新手村可选择的数量; x1 O- C i" f: y6 _
1 \% d/ I* [) m5 K, M+ xNAME0=新手村 定义第一个新手村名称,其实并不读取,只是让技术员用来区别。7 L3 A4 u% |, w+ ~3 b2 I8 p S
X0=178 第一个新手村X坐标
; r0 Q. R7 f4 F+ DY0=238 第一个新手村Y坐标) N" p6 U/ d( {& p" R- S. E
SERVERID0=0 第一个新手村的地图编号,对应TGS\INIT\MAP.SDB中的编号. - [& U& F z0 k2 h3 `
|