千年的服务端主要分5个程序,本文详细介绍了服务端各类重要参数的含义,方便新手GM提高对服务端参数配置和功能的认知!
' [0 X6 m- F! M1 n, [% Q8 s, x) D' I* F k9 i9 U8 X
1:Balance 网络均衡服务器。( T' [, Z& v$ z: i) J& b
2:DB 人物数据服务器.注意:这里不包含福袋数据和门派数据等.
/ E0 ?" l. M- m) P6 N) U0 {& N% t3: GATE 网关服务器.# A* P; A# B- M5 h/ {
4: login 登陆服务器. 帐号密码等数据在这里.& f. K$ V, W+ Q! ^6 y: b$ g
5: TGS 游戏主服务器. 游戏大部分设置均在这里.
. O5 j. J! _. `- e$ \
, ^3 m5 v9 |% A) | U! X; I下面讲下他们的工作原理.
F+ \4 D& r7 B/ H8 j v; A c6 R9 k. o0 b9 Z
首先,玩家通过TCP协议3053端口连接到Balance服务器,当Balance接到连接命令后,
% g. i3 j6 L3 c将连接信息转化为UDP协议通过3030端口转到GATE服务器.简单的说Balance只是负责! J: l: U/ d: F
中转.然后GATE服务器在使用TCP协议连接TGS服务器的3052端口,若TGS端口连接正常,
; q7 {+ Y+ ^& }8 i, k% G4 t则返回信息到GATE,GATE再验证DB与login服务器,若连接正常,则发送信息连接成功到
5 B2 k/ k3 O; ~. u+ U6 o0 l( I2 d客户端.
6 h. r; n- V' o! g: F! G" s* M& o
; i4 O3 i1 {/ X' N6 r再说服务器所牵扯的端口. (以下端口均为未修改的默认端口); M1 d+ G+ q( h. {
8 g a9 I5 b9 @! B9 y
Balance服务器 对外TCP协议3053 连接GATE-UDP协议3030.
9 z: P& n2 ]; A5 j# a" d: t8 gDB服务器 TCP协议3051连接GATE.! ?( {% Q1 o* s( D5 U) n6 b
GATE服务器 对外端口3054-TCP协议.注意,虽然3054对外,但是直接连接3054会出现版本错误的提示., z0 i4 i6 c& a h _, G$ o- b" x1 G
UDP协议连接balance的3030.TCP协议连接TGS服务器的3052 TCP协议连接DB的3051 TCP协议连接login
7 u+ X. C2 m' p; h8 R- Y. O的3050 这里最重要的一个,也是很多朋友不明白的地方,那就是paid服务器的端口,paid服务器为冲卡
* x$ K7 N9 T, P# n+ j- j1 B6 K2 A验证服务器,通常做私服只需将其删除即可,也就是说并不是GATE服务器要亮4个灯才正常,这是很多朋友
, H, [2 T" o& U3 R$ z的误区.
6 v8 o8 Q# a& m; Y# b. s& Elogin服务器 TCP协议连接GATE的3050
/ t4 Q% Q! O9 Y# C+ E* iTGS服务器 TCP协议连接DB的3051 其中还有一些物品记录服务器等.$ b# |/ H. U+ e0 t1 {4 I
" b# @' [4 }: j7 m) ?
- p# ]3 P* C* Z1 w+ a# x
再讲每个服务器中的配置.
% @; U7 U3 X" B4 I
, w- ~" r- D& K( @) A: ZBalance服务器 目录中的balance.ini中配置
& W1 C' l3 G) \[BALANCE]/ a P; O2 P# j! P+ e" ^
TCPLOCALPORT=3053
. A3 ?/ ?8 Z5 P% x' j% n( y1 ?/ eUDPLOCALPORT=30302 Y) c8 j- R+ o, `9 ~/ w5 @
基本不需要修改,若你想开启一机双线,那就要双开balance和GATE,
; k$ m7 G0 q8 C# z ?: b若需要一机多区,就要双开balance,GATE,TGS。! K) m: a. y. j6 W
这也就是克星一机多区的工作原理.
7 _/ N2 g5 R2 O4 S但是官方原版的balance服务器并不读取balance中的TCP协议中设置的端口,也就是你即使设置40535 a( v; i+ G9 k6 L
他一样是在3053工作.但是UDP协议中的3030是读取的,克星就是改写了balance服务器,让他可以从
' f" X3 c/ B; \7 ?4 @4 U配置文件中读取用户所设置的端口来实现一机多区的.
: B( Q8 D9 O6 q; |5 m2 f! m% V如果你想不使用克星工具实现一机多区,应该做以下设置.$ \0 {% i9 i8 Z! u) f* C8 T
复制另一份balance出来,打开balance.ini修改
, \1 q: E' S8 ]) Y7 f2 E" @[BALANCE]+ ~. i3 c+ Y8 \
TCPLOCALPORT=4053
& M- i$ a- e+ C! ]+ `7 R/ gUDPLOCALPORT=4030
0 k5 l8 X5 Q% x0 n$ s这里修改后注意GATE.ini中UDP协议3030端口为40306 U3 g0 a3 q6 P3 l& m( g! s
然后打开UE,查找ED0B修改为D50F.注意,有很多个,修改最后一个就可以了.这样他就在4053端口监听了.- w w0 ?. A$ b3 A" f$ y+ M; t$ e
& C. H, Z. n5 |# X# z1 j: Z$ U题外话:很多朋友很不理解16进制编辑.这里我给大家稍微讲一下.
! L! R$ r& ?+ g* B+ X3 @打开windows自带的计算器,选择查看-科学型,然后选择10进制
6 @2 O4 A: v# q: K4 F! l: O0 w按下3053,再选择为16进制,你会发现3053在16进制中显示为BED
6 Y; C1 ~' q: T5 |1 x( d但是为什么要查找ED0B呢,因为在程序中这些东西都是反写的,6 r# o) J; Q- h
以两个字母为一个单位,也就是说假如为6D2E,你在查找是应该找2E6D
, O3 A3 g3 m! o4 r若是奇数就要加一个0来补齐.5 \5 P. ~- d/ t: X
& J; N3 o9 _; q. S再来看看DB服务器。: Y9 n6 w! r$ o
# s: Z5 N( s5 U5 k
DB服务器下目录比较多,我们一个个来讲
) b9 U4 `2 z4 Q, r" J* l: _backup目录本身DB服务器不产生,也不在他的目录下增加任何文件,
; a5 e/ Z4 ^5 X4 `7 y& L根据笔者猜测,他应该官方工作人员用来备份服务器资料的一个目录.删除也没什么关系.' A) k5 k# a' _% ]
log目录,web目录,均是记录玩家的情况
- f7 |* U0 d8 b6 G; N& Cuserdata下是记录当天上线所有玩家的资料,同时,当你点击DB服务器中的backup按钮时
* t, K1 a7 H1 R+ ^2 ` A他会在这个目录中产生一个备份文件,但是这个备份文件不要当作人物资料来用,具体原因
5 q$ L, L/ J0 U! W还不太明白,只知道会导致玩家元气永远比原来差一些的问题.
9 v* I3 K8 m+ s1 ^
5 ?" b9 y7 U) a5 s- xDB.exe,这个文件是DB服务器文件,没什么好讲的,说说他的按钮吧.
2 J6 U4 O: ?0 p' Q* Ureload,字面意思是重新读取,具体作用未做测试.
6 y7 l, m- Y7 J$ Gaddrecord,增加用户数量.也就是DB默认的建立最大人物资料为10000,若你服务器人气很高, Z. B7 Q% G2 M# U0 g8 S; C" P' R( z2 F
到最后玩家无法建立新角色的时候,点击这个按钮,增加数据库容量就可以了.
4 n8 z; r. H: |0 Hsave today.sdb,存盘当天玩家上线记录.0 G$ h" W* s9 J
back up,备份数据库,备份的数据库会产生在userdata目录下.
2 W. _' J4 D8 z( \
' t6 O3 p! x" t, ]; j7 C! |* T/ u$ {) X8 p/ C( q8 l: c% X, n5 y# `
DB.ini,DB服务器配置文件.5 x7 {( ~6 f4 \3 h' X7 [" b" a
[DB_SERVER] 明确服务器名称.2 q9 I' G* z( r( a" P
FileName=testdb.fdb 数据库名称.运行DB服务器后会产生一个以这个为名的数据库,但以数字区别.. S* q! x: t! W6 W
BufferSizeS2S=1048576 数据库的规格1 @4 f6 M& f% \8 a" a8 {
GateAcceptPort=3051 DB与GATE连接的端口.TCP协议.
. |7 M7 s6 b' t! cRemotePort=1024 接收端口.应该是玩家下线后TGS与DB连接的端口.
; k' C( G% \& _% W( BItemRemotePort=1020 似乎是物品记录端口,但是实际上物品记录端口在TGS下.$ e$ q) c* L8 W5 p2 X# `
7 U+ v7 V2 z# Y9 t) @% R' k
; f$ P* D7 E0 c# K* LIPList.txt文件.
5 I$ i, e/ P" h Q- e记录远程GATE连接的IP.一般设置为127.0.0.1
3 @% K" d8 Q+ T+ A( q$ N$ J" l" v0 Z) p
remoteip.txt文件.! n& J6 w3 Z# v' p
记录远程TGS连接的IP.一般设置为127.0.0.1
9 ? V: T0 N' m) C* V
5 K4 ^) g2 `$ GModifyMagic.txt文件.' b+ f* f4 c* w! `$ R0 |
感觉目前似乎没有用到.具体作用有待补充.4 }$ I/ K1 g1 q. M4 F. A
+ c+ V/ G! C/ {0 `% E' ^
) J" Z$ U& }) ?
* `$ R3 N' S% ^GATE服务器.( O0 p) ~9 X2 I: K1 c; g ]* s
* j) f! [2 A. S, T% @7 s; d& u+ u
log目录,记录目录.2 b I# H' W5 L
8 W! I* d; @0 w6 [* SCreateChar.txt文件,定义新手出生身上所带物品,但不可定义段位,不可定义数量.
7 k1 p0 S( i$ ~# Q" x1 S[CLOTHES] R% y, G8 ]" v
CLOTHES_COAT_MAN=男子上衣 男子新手出生后所拥有上衣.- E& @& m6 d; x9 O( S' o
CLOTHES_PANTS_MAN=男子短裤 男子新手出生后所拥有的裤子.' h2 v* o' |; V3 C2 q( k% _: [
CLOTHES_COAT_WOMAN=女子上衣 女子新手出生后所拥有上衣. @. {, U7 o& D) v; y1 F; _0 {
CLOTHES_PANTS_WOMAN=女子短裤 女子新手出生后所拥有的裤子
% T8 d, v4 l4 q5 j
" y* {( c" S4 R$ }* F% [& {[WEAPON]) o( ]! w9 j5 E" K3 ^0 s
WEAPON_SWORD=长剑 出生后拥有的剑 实际上即使不是此类物品也可以
2 n$ S9 }+ r, `, ?# n& n8 VWEAPON_KNIFE=长刀 出生后拥有的刀 实际上即使不是此类物品也可以
+ R8 d% u5 _$ ?3 H; [4 E) j$ l5 r* r- EWEAPON_SPEAR=长枪 出生后拥有的枪 实际上即使不是此类物品也可以+ [0 L4 T( K( R" F& \0 E
WEAPON_AX=斧头 出生后拥有的斧 实际上即使不是此类物品也可以
" a1 d) m3 @4 @; U7 e6 L4 U
; D" t2 T B' _) N[ETC]+ ?- {6 X+ F6 g' J/ H5 G
ETC_01=五色药水 新手出生后拥有的物品1.这里要说一下* X! S( S. M8 S! X% t2 s
0 d# T# W# ?5 z) K: v: m即使你定义为没有耐久的物品,他出生后还是会有耐久的.
" z. e8 N5 v3 T) Q即使你设置了ETC_02或03或着N+1都是不读取的.如果想要他读取除非去修改GATE主程序.
% t8 l) Y" T- T& ^( Q/ W S9 ^! c1 }: D: E/ E
& k; m4 J7 [! L) CDontChar.txt 定义不允许建立的角色名.
# S* ?# l6 S: L! y6 g( Z) [" { l3 ?0 A- ^8 D
: ~2 h/ f% h0 D9 y0 Ogate.ini文件,GATE服务器配置文件.这里详细说一下.
$ R, c& [( F& d! e' l/ A! Z2 E5 c- L* j
[GATE_SERVER] 定义服务器名称
+ F) y( w. ^; T2 s8 U. }% ~5 KLOCALIP=127.0.0.1 定义对外IP
8 q; T1 l U: f. K) h( mLOCALPORT=3054 定义与balance连接的端口
C# Y+ z2 j+ |3 \5 lLIMITUSERCOUNT=500 定义玩家最大上线允许 0为不限制.
' A' Q' \* f0 [" H& J5 K7 b( m) wCHECKPAIDINFO=FALSE 是否收费服务器.
% r! }3 t% F" u# U# H$ LBALANCEIP=127.0.0.1 定义balance服务器IP3 V& h; D7 ~) A k' e
BALANCEPORT=3030 定义balance服务器端口.UDP协议.
6 u) W \) `; _SERVERNAME=test 定义服务器名( _; C( ^1 G, |- V
BUFFERSIZES2S=1048576 服务器缓冲.应该是这样,若讲错请指正,不胜感激
! G% | R/ c4 m3 S B a( dBUFFERSIZES2C=8192 新手村缓冲.应该是这样,若讲错请指正,不胜感激4 B& I, l) X& _. Q
: O- ~( `& j g( E/ H[GAME_SERVER] 定义服务器名称
! o$ @# I! c6 `9 u- b$ }2 N2 xREMOTEIP=127.0.0.1 游戏主服务器IP地址,也就是TGS的IP地址.经典的3052漏洞就是这个.; W' Y$ u% x7 d0 v/ F& r
REMOTEPORT=3052 游戏主服务器端口.一定要封.
7 p0 s* C( O s& H9 {0 H
5 C- U5 v; U2 A( y5 M6 i[DB_SERVER] 定义服务器名称' H: { ]5 p9 o3 ?+ f! b) c
REMOTEIP=127.0.0.1 人物资料服务器IP地址,也就是DB服务器的IP地址.
. b8 A' W4 r# G1 O8 _REMOTEPORT=3051 人物资料服务器端口,一定要封.5 o$ X6 K3 Y4 L9 ?. \
/ y. E/ n2 T$ _! o) F7 G/ P[LOGIN_SERVER] 定义服务器名称! Y, M" k3 r3 u7 x" h0 B9 a0 }/ A
REMOTEIP=127.0.0.1 登陆服务器IP地址.
" ]( a, X, }/ l2 PREMOTEPORT=3050 登陆服务器端口
& D6 v# _! K( s, L% P
( l9 m1 m& I9 b[PAID_SERVER] 定义服务器名称 (通常删除)
# e9 p$ b2 S; J0 ?6 w) yREMOTEIP=127.0.0.1 定义冲卡验证服务器IP地址 (通常删除)
- ]: a8 D: r3 t- F' CREMOTEPORT=80 定义冲卡验证服务器端口 (通常删除)
2 S9 a! o; F; i& P# ]. V6 V, [' @
% e- r+ L* Q7 Qtgs1000.acs文件。GATE的语言库。3 {1 Y' i- P$ i: o' f5 b
# q4 t& B" X( T% PVillage.Ini文件。定义新手出生地图。这里讲一下。
! ^0 d) E, n; |2 M2 L/ ^
) F |5 {4 E3 f9 Q, {+ C$ @[VILLAGE] 定义配置文件名
* W/ }. E& y+ {. d4 T2 z/ c
7 E7 Z' P/ \" o: G% jCOUNT=1 定义新手村可选择的数量
+ ?: C6 z$ R8 I; P) S7 L1 t9 Y
# y- j3 N4 C4 V4 B; P( qNAME0=新手村 定义第一个新手村名称,其实并不读取,只是让技术员用来区别。! }6 q& Z/ z3 C1 s8 \6 T; }
X0=178 第一个新手村X坐标
+ g. q+ K0 S4 l8 l7 w& \Y0=238 第一个新手村Y坐标
: t& F& K" t; _, o: z% G, ]SERVERID0=0 第一个新手村的地图编号,对应TGS\INIT\MAP.SDB中的编号. * k; b: X9 U; S7 j' M& J3 _
|