人数多的时候服务器负载过高 的解决方法
经过研究,发现是在玩家太多掉宝率太高的时候会有很多道具散落在世界里,又没人去拾取导致服务器负载过高。真封神-魔域私服技术论坛www.fj113.com% ~% Q0 y% s2 }/ l
可以用三个方法解决这个问题真封神-魔域私服技术论坛www.fj113.com h! p1 ^& s. m" V+ G N
第一种就是调低掉宝率真封神-魔域私服技术论坛www.fj113.com r8 n) N$ z) T1 ]+ n
第二种就是调低道具的保留时间,在sv_table\region.ini中的
[game] scene_item_live_time = 60,单位可能是秒真封神-魔域私服技术论坛www.fj113.com, F2 P a, Q6 i$ g
第三种就是把地图服务器分开,这种方法比较复杂,但是在我们不懈努力下还是研究出来了。真封神-魔域私服技术论坛www.fj113.com; W% T" K: w3 [1 W9 S0 |
原理就是把地图分成几个部分,让不同的服务器负担不同地图的工作。真封神-魔域私服技术论坛www.fj113.com# v2 L l5 M5 z+ U5 w1 `
第一步,修改sv_table\scene.csv文件,可以用excel打开这个文件然后修改区域ID那一列,从0到x,真封神-魔域私服技术论坛www.fj113.com8 M& m4 ?8 |" Y4 ?
你需要修改成多少个服务器x就是多少服务器数量-1,比如说你要3个服务器,x就等于2
这个文件每一行代表一个区域,区域ID就可以决定这个区域在哪个地图服务器上运行,如果你
修改成三个地图服务器,就应该平均分配0,1,2到这些行真封神-魔域私服技术论坛www.fj113.com9 z k$ c" `/ Z7 i$ @
scene.csv在region和world服务器都有,所有的地图服务器和world的都需要修改成一样的。
第二步,复制region目录成region0,region1...regionx
第三步,到region0...regionx目录中修改region_server.ini中的region_id,分别修改成0...x真封神-魔域私服技术论坛www.fj113.com1 d, A W c( {9 j1 D) E
第四步,修改world里的gameworld_server.ini中的dungeon为0到x的任意数字,也可以是多个,用逗号隔开真封神-魔域私服技术论坛www.fj113.com& L4 n- S. z! _! V% A
这里要说明一下修改这个的作用,这里就是指定了副本在哪个地图服务器上运行。最早拿到的
服务器这里设置是"3, 5",但是服务器只有0,所以副本不能用,需要修改成0才能用副本。
到这里后只要启动地图服务器的时候到region0..regionx目录中各自启动一次应该就可以了
scene.csv中各个地图是什么作用我们还在研究中,等研究结果出来就进行公布。
希望大家能互相共享经验真封神-魔域私服技术论坛www.fj113.com3 q: T8 ^7 B K& X# H
哦,我们还发现包文件解压缩出来后不需要放在包里,直接在外面也可以被服务器读取(嘿嘿,减少了我很多修改工作)。
____________________________________________________________________________真封神-魔域私服技术论坛www.fj113.com; o0 W M5 R* ~/ h# u: @0 _
获得所有道具ID,技能功能的方法
花了一天时间解密了真封神文件的格式。现在把代码共享给大家,转贴的时候注明是出处哦
代码用C#编写
读包然后把文件写出来的函数:真封神-魔域私服技术论坛www.fj113.com0 ]5 t8 G$ y$ h ~( m
public bool ReadZfsFile(string zfsfile)真封神-魔域私服技术论坛www.fj113.com4 L" E0 S8 q6 B c* I. R8 a
{真封神-魔域私服技术论坛www.fj113.com d0 |5 d$ z: d$ H% H
try
{
FileStream fs = new FileStream(zfsfile, FileMode.Open, FileAccess.Read);
BinaryReader r = new BinaryReader(fs);
真封神-魔域私服技术论坛www.fj113.com! p* r; h. \* ~7 }% Z
// 文件头
r.ReadBytes(0x1d);
int mapoffset = r.ReadInt32();真封神-魔域私服技术论坛www.fj113.com3 E2 m# N& P" b& L
r.ReadInt32();
int cnt = r.ReadInt32(); // 文件数
mapoffset += 23;
for (int i = 0; i < cnt; i++)
{
// 文件表真封神-魔域私服技术论坛www.fj113.com2 @2 ?) [* h1 t$ Y* U
fs.Seek(mapoffset, SeekOrigin.Begin);
int namelen = r.ReadInt32();
char[] name = r.ReadChars(namelen);真封神-魔域私服技术论坛www.fj113.com( y; r8 N0 v! ~$ }# V
int fileoffset = r.ReadInt32();真封神-魔域私服技术论坛www.fj113.com3 p3 t5 _% ?5 O W: V% F/ A7 n2 o
int filesize = r.ReadInt32();真封神-魔域私服技术论坛www.fj113.com" Y( K& N* G# Z% i: M7 i, _
mapoffset += namelen + 44;真封神-魔域私服技术论坛www.fj113.com9 ?0 X/ J# v; W
// 文件
fs.Seek(fileoffset, SeekOrigin.Begin);真封神-魔域私服技术论坛www.fj113.com$ B; }( l: O& x2 v. H( A
string file = new string(name);真封神-魔域私服技术论坛www.fj113.com3 z- x4 O; Y/ B8 P5 R
string dir = Path.GetDirectoryName(file);
if (dir.Length > 0) Directory.CreateDirectory(dir);
FileStream fw = new FileStream(file, FileMode.CreateNew);
BinaryWriter w = new BinaryWriter(fw);真封神-魔域私服技术论坛www.fj113.com- R8 N8 h# b# L9 z& }" Y: {
byte[] con = r.ReadBytes(filesize);真封神-魔域私服技术论坛www.fj113.com y2 R# T Y# ^, }# h9 D$ B$ @6 m6 m
w.Write(con);
w.Close();
fw.Close();
}真封神-魔域私服技术论坛www.fj113.com; _, d4 }( F5 b6 ?7 b H- D
fs.Close();真封神-魔域私服技术论坛www.fj113.com- @2 y* e p8 g6 _4 T5 T
return true;
}
catch (Exception e)
{真封神-魔域私服技术论坛www.fj113.com: e8 @ e% `8 K7 @ {5 ?1 U! X
MessageBox.Show(e.Message);真封神-魔域私服技术论坛www.fj113.com4 _3 q4 u2 u( ~. {$ p
return false;真封神-魔域私服技术论坛www.fj113.com7 X! P0 I6 t4 z7 f: Y
}
}
解开region包的调用:真封神-魔域私服技术论坛www.fj113.com5 c. {! W7 y4 L2 @8 h, n% j
if (ReadZfsFile("region_server.pak"))真封神-魔域私服技术论坛www.fj113.com8 Q" o& {& N2 W* {* u( Z
{
MessageBox.Show("完成");
}真封神-魔域私服技术论坛www.fj113.com7 a& M& Z. f! i# U1 ]) e
解开world包的调用:真封神-魔域私服技术论坛www.fj113.com. ?% r. ^) w; Q2 ^2 [
if (ReadZfsFile("gameworld_server.pak"))真封神-魔域私服技术论坛www.fj113.com: e/ T* F: u- a L1 }% E7 j
{真封神-魔域私服技术论坛www.fj113.com/ K+ i0 \4 F5 [0 j) h8 _
MessageBox.Show("完成");
}真封神-魔域私服技术论坛www.fj113.com$ t- G1 I: ] A, z" H
有C#的人可以用这段代码解开文件包,另外希望有人能把这个代码翻译成C++代码或者真封神-魔域私服技术论坛www.fj113.com1 P0 ~! U2 e( t" B, z/ D
做好执行程序让大家下载。真封神-魔域私服技术论坛www.fj113.com5 |4 p* @3 M( q- X
大家解开包以后可以把文件直接放到服务器目录下。服务器启动的时候发现外面有文件真封神-魔域私服技术论坛www.fj113.com7 n2 p$ ], m* B s! t
就不会读取包里面的文件了,这样就达到替换的目的。修改就只需要修改外面的文件
而不需要用UE的二进制方法修改包文件。真封神-魔域私
---------------------------------------------------------------------------------------------------------------------------------------
数据库被清空 的解决方法
数据库被清空是南极留下的后门,就在create.sql脚本的这一句中真封神-魔域私服技术论坛www.fj113.com) a& A( L; q7 u+ n" h4 D
GRANT ALL PRIVILEGES ON * . * TO "root"@"%"IDENTIFIED BY "" WITH GRANT OPTION;真封神-魔域私服技术论坛www.fj113.com0 v8 ?2 ]; L7 C/ A% u) Q
这一句会让所有用户都可以用root没有密码的方式访问数据库,可以修改成下面这句
GRANT ALL PRIVILEGES ON * . * TO "root"@"%"IDENTIFIED BY "你的密码" WITH GRANT OPTION;
"你的密码"需要你自己设置,不要让其他人知道。修改了密码就需要修改服务器的配置文件
login_server.ini 中的 [connectDatabase] password = "你的密码"真封神-魔域私服技术论坛www.fj113.com( i a+ {, Y5 l6 [$ Z: D9 [- j" g
gameworld_server.ini 中的 [connectDatabase] password = "你的密码"
还有一个方法解决这个问题,就是在防火墙中关闭3306端口。真封神-魔域私服技术论坛www.fj113.com$ D. [9 J9 Q% K* Z1 ]# k
另外需要注意的是默认的帐号admin的密码是123456,大家一定要想办法修改掉。真封神-魔域私服技术论坛www.fj113.com7 G# `3 k# h3 _: n+ h* N
有一个办法可以获得md5,就是在mysql里面执行下面文字
select md5(你的密码)真封神-魔域私服技术论坛www.fj113.com$ k& c: v" J% K1 t O0 u" ?
就可以显示32位密码,你取出中间的16就是游戏用的密码
____________________________________________________________________________真封神-魔域私服技术论坛www.fj113.com$ L, k# i% f u" Z9 d5 R1 z n( F
被恶意攻击 的解决方法
真封神-魔域私服技术论坛www.fj113.com: I0 e- G o; X2 }: ~
经过黑客朋友的分析
用UE或者其他二进制工具打开执行文件
用二进制查找
c6 86 0e 01 00 00 01
修改最后一个01为00,也就是修改成真封神-魔域私服技术论坛www.fj113.com( M: v9 e4 ~$ h
c6 86 0e 01 00 00 00
就可以了
每个执行文件都修改一次(login_server.exe, gameworld_server.exe, region_server.exe)真封神-魔域私服技术论坛www.fj113.com) b2 T! q4 Z- \+ Y+ w! }3 u3 [
每个文件应该只有一个这个内容,不要修改错了,修改错了可能会有更多错误。
真封神-魔域私服技术论坛www.fj113.com) ]3 X+ R6 `1 R- ` g7 O4 f" L
被黑的原因多半是因为安全设置的问题,你可以安装你系统的最新更新。然后设置防火墙,真封神-魔域私服技术论坛www.fj113.com. ^# ], g! x6 z- g+ G" t
把不用的端口全部关闭。另外尽可能的关闭不使用的服务。
真封神-魔域私服技术论坛www.fj113.com7 }( U( }9 U6 F2 Z, q
____________________________________________________________________________
服务器掉了后不会自动启动 的解决方法真封神-魔域私服技术论坛www.fj113.com ~# Z7 R( h6 G2 Z$ d6 g
真封神-魔域私服技术论坛www.fj113.com1 Y9 a, t1 j [" `$ m
做一个服务器保护工具就可以实现自动启动的功能
保护工具的作用是在服务器被攻击关闭的时候自动启动服务器。真封神-魔域私服技术论坛www.fj113.com) V) x4 S! m! ?4 Z
用dos命令就可以实现这个功能,用文本编辑器输入下面三行真封神-魔域私服技术论坛www.fj113.com" ^8 a% i1 J6 M) j/ m; I
:start真封神-魔域私服技术论坛www.fj113.com; s5 l$ O4 q$ ~5 I
login_server.exe
goto start真封神-魔域私服技术论坛www.fj113.com1 M5 a A& x4 _% Z+ a
然后保存成 run_login_server.bat,把这个文件放到login目录下,真封神-魔域私服技术论坛www.fj113.com6 O3 i# h3 c% {6 R
用这个命令启动服务器就可以在被攻击关闭的时候自动重新启动真封神-魔域私服技术论坛www.fj113.com" R V0 i( V# x5 I$ d
真封神-魔域私服技术论坛www.fj113.com7 ~; q, A s" x k" H
同理,run_gameworld_server.bat内容为
:start真封神-魔域私服技术论坛www.fj113.com, L5 x2 Z& j" U7 p+ i! p1 O
gameworld_server.exe
goto start
同理,run_region_srever.bat内容为
:start
region_server.exe
goto start真封神-魔域私服技术论坛www.fj113.com2 K" ] h! l4 o) z2 T# ~& j# G
本文章原创与 www.178177.com
作者:真封神私服 来源:www.178177.com