真封神游戏常见的意外事故处理方法
人数多的时候服务器负载过高 的解决方法
经过研究,发现是在玩家太多掉宝率太高的时候会有很多道具散落在世界里,又没人去拾取导致服务器负载过高。
可以用三个方法解决这个问题
第一种就是调低掉宝率
第二种就是调低道具的保留时间,在sv_tableregion.ini中的
[game] scene_item_live_time = 60,单位可能是秒
第三种就是把地图服务器分开,这种方法比较复杂,但是在我们不懈努力下还是研究出来了。
原理就是把地图分成几个部分,让不同的服务器负担不同地图的工作。
第一步,修改sv_tablescene.csv文件,可以用excel打开这个文件然后修改区域ID那一列,从0到x,
你需要修改成多少个服务器x就是多少服务器数量-1,比如说你要3个服务器,x就等于2
这个文件每一行代表一个区域,区域ID就可以决定这个区域在哪个地图服务器上运行,如果你
修改成三个地图服务器,就应该平均分配0,1,2到这些行
scene.csv在region和world服务器都有,所有的地图服务器和world的都需要修改成一样的。
第二步,复制region目录成region0,region1...regionx
第三步,到region0...regionx目录中修改region_server.ini中的region_id,分别修改成0...x
第四步,修改world里的gameworld_server.ini中的dungeon为0到x的任意数字,也可以是多个,用逗号隔开
这里要说明一下修改这个的作用,这里就是指定了副本在哪个地图服务器上运行。最早拿到的
服务器这里设置是"3, 5",但是服务器只有0,所以副本不能用,需要修改成0才能用副本。
到这里后只要启动地图服务器的时候到region0..regionx目录中各自启动一次应该就可以了
scene.csv中各个地图是什么作用我们还在研究中,等研究结果出来就进行公布。
希望大家能互相共享经验
哦,我们还发现包文件解压缩出来后不需要放在包里,直接在外面也可以被服务器读取(嘿嘿,减少了我很多修改工作)。
____________________________________________________________________________
获得所有道具ID,技能功能的方法
花了一天时间解密了真封神文件的格式。现在把代码共享给大家,转贴的时候注明是出处哦
代码用C#编写
读包然后把文件写出来的函数:
public bool ReadZfsFile(string zfsfile)
{
try
{
FileStream fs = new FileStream(zfsfile, FileMode.Open, FileAccess.Read);
BinaryReader r = new BinaryReader(fs);
// 文件头
r.ReadBytes(0x1d);
int mapoffset = r.ReadInt32();
r.ReadInt32();
int cnt = r.ReadInt32(); // 文件数
mapoffset += 23;
for (int i = 0; i 0) Directory.CreateDirectory(dir);
FileStream fw = new FileStream(file, FileMode.CreateNew);
BinaryWriter w = new BinaryWriter(fw);
byte[] con = r.ReadBytes(filesize);
w.Write(con);
w.Close();
fw.Close();
}
fs.Close();
return true;
}
catch (Exception e)
{
MessageBox.Show(e.Message);
return false;
}
}
解开region包的调用:
if (ReadZfsFile("region_server.pak"))
{
MessageBox.Show("完成");
}
解开world包的调用:
if (ReadZfsFile("gameworld_server.pak"))
{
MessageBox.Show("完成");
}
有C#的人可以用这段代码解开文件包,另外希望有人能把这个代码翻译成C++代码或者
做好执行程序让大家下载。
大家解开包以后可以把文件直接放到服务器目录下。服务器启动的时候发现外面有文件
就不会读取包里面的文件了,这样就达到替换的目的。修改就只需要修改外面的文件
而不需要用UE的二进制方法修改包文件。
---------------------------------------------------------------------------------------------------------------------------------------
数据库被清空 的解决方法
数据库被清空是南极留下的后门,就在create.sql脚本的这一句中
GRANT ALL PRIVILEGES ON * . * TO "root"@"%"IDENTIFIED BY "" WITH GRANT OPTION;
这一句会让所有用户都可以用root没有密码的方式访问数据库,可以修改成下面这句
GRANT ALL PRIVILEGES ON * . * TO "root"@"%"IDENTIFIED BY "你的密码" WITH GRANT OPTION;
"你的密码"需要你自己设置,不要让其他人知道。修改了密码就需要修改服务器的配置文件
login_server.ini 中的 [connectDatabase] password = "你的密码"
gameworld_server.ini 中的 [connectDatabase] password = "你的密码"
还有一个方法解决这个问题,就是在防火墙中关闭3306端口。
另外需要注意的是默认的帐号admin的密码是123456,大家一定要想办法修改掉。
有一个办法可以获得md5,就是在mysql里面执行下面文字
select md5(你的密码)
就可以显示32位密码,你取出中间的16就是游戏用的密码
____________________________________________________________________________
被恶意攻击 的解决方法
经过黑客朋友的分析
用UE或者其他二进制工具打开执行文件
用二进制查找
c6 86 0e 01 00 00 01
修改最后一个01为00,也就是修改成
c6 86 0e 01 00 00 00
就可以了
每个执行文件都修改一次(login_server.exe, gameworld_server.exe, region_server.exe)
每个文件应该只有一个这个内容,不要修改错了,修改错了可能会有更多错误。
被黑的原因多半是因为安全设置的问题,你可以安装你系统的最新更新。然后设置防火墙,
把不用的端口全部关闭。另外尽可能的关闭不使用的服务。
____________________________________________________________________________
服务器掉了后不会自动启动 的解决方法
做一个服务器保护工具就可以实现自动启动的功能
保护工具的作用是在服务器被攻击关闭的时候自动启动服务器。
用dos命令就可以实现这个功能,用文本编辑器输入下面三行
:start
login_server.exe
goto start
然后保存成 run_login_server.bat,把这个文件放到login目录下,
用这个命令启动服务器就可以在被攻击关闭的时候自动重新启动
同理,run_gameworld_server.bat内容为
:start
gameworld_server.exe
goto start
同理,run_region_srever.bat内容为
:start
region_server.exe
goto start
经过研究,发现是在玩家太多掉宝率太高的时候会有很多道具散落在世界里,又没人去拾取导致服务器负载过高。
可以用三个方法解决这个问题
第一种就是调低掉宝率
第二种就是调低道具的保留时间,在sv_tableregion.ini中的
[game] scene_item_live_time = 60,单位可能是秒
第三种就是把地图服务器分开,这种方法比较复杂,但是在我们不懈努力下还是研究出来了。
原理就是把地图分成几个部分,让不同的服务器负担不同地图的工作。
第一步,修改sv_tablescene.csv文件,可以用excel打开这个文件然后修改区域ID那一列,从0到x,
你需要修改成多少个服务器x就是多少服务器数量-1,比如说你要3个服务器,x就等于2
这个文件每一行代表一个区域,区域ID就可以决定这个区域在哪个地图服务器上运行,如果你
修改成三个地图服务器,就应该平均分配0,1,2到这些行
scene.csv在region和world服务器都有,所有的地图服务器和world的都需要修改成一样的。
第二步,复制region目录成region0,region1...regionx
第三步,到region0...regionx目录中修改region_server.ini中的region_id,分别修改成0...x
第四步,修改world里的gameworld_server.ini中的dungeon为0到x的任意数字,也可以是多个,用逗号隔开
这里要说明一下修改这个的作用,这里就是指定了副本在哪个地图服务器上运行。最早拿到的
服务器这里设置是"3, 5",但是服务器只有0,所以副本不能用,需要修改成0才能用副本。
到这里后只要启动地图服务器的时候到region0..regionx目录中各自启动一次应该就可以了
scene.csv中各个地图是什么作用我们还在研究中,等研究结果出来就进行公布。
希望大家能互相共享经验
哦,我们还发现包文件解压缩出来后不需要放在包里,直接在外面也可以被服务器读取(嘿嘿,减少了我很多修改工作)。
____________________________________________________________________________
获得所有道具ID,技能功能的方法
花了一天时间解密了真封神文件的格式。现在把代码共享给大家,转贴的时候注明是出处哦
代码用C#编写
读包然后把文件写出来的函数:
public bool ReadZfsFile(string zfsfile)
{
try
{
FileStream fs = new FileStream(zfsfile, FileMode.Open, FileAccess.Read);
BinaryReader r = new BinaryReader(fs);
// 文件头
r.ReadBytes(0x1d);
int mapoffset = r.ReadInt32();
r.ReadInt32();
int cnt = r.ReadInt32(); // 文件数
mapoffset += 23;
for (int i = 0; i 0) Directory.CreateDirectory(dir);
FileStream fw = new FileStream(file, FileMode.CreateNew);
BinaryWriter w = new BinaryWriter(fw);
byte[] con = r.ReadBytes(filesize);
w.Write(con);
w.Close();
fw.Close();
}
fs.Close();
return true;
}
catch (Exception e)
{
MessageBox.Show(e.Message);
return false;
}
}
解开region包的调用:
if (ReadZfsFile("region_server.pak"))
{
MessageBox.Show("完成");
}
解开world包的调用:
if (ReadZfsFile("gameworld_server.pak"))
{
MessageBox.Show("完成");
}
有C#的人可以用这段代码解开文件包,另外希望有人能把这个代码翻译成C++代码或者
做好执行程序让大家下载。
大家解开包以后可以把文件直接放到服务器目录下。服务器启动的时候发现外面有文件
就不会读取包里面的文件了,这样就达到替换的目的。修改就只需要修改外面的文件
而不需要用UE的二进制方法修改包文件。
---------------------------------------------------------------------------------------------------------------------------------------
数据库被清空 的解决方法
数据库被清空是南极留下的后门,就在create.sql脚本的这一句中
GRANT ALL PRIVILEGES ON * . * TO "root"@"%"IDENTIFIED BY "" WITH GRANT OPTION;
这一句会让所有用户都可以用root没有密码的方式访问数据库,可以修改成下面这句
GRANT ALL PRIVILEGES ON * . * TO "root"@"%"IDENTIFIED BY "你的密码" WITH GRANT OPTION;
"你的密码"需要你自己设置,不要让其他人知道。修改了密码就需要修改服务器的配置文件
login_server.ini 中的 [connectDatabase] password = "你的密码"
gameworld_server.ini 中的 [connectDatabase] password = "你的密码"
还有一个方法解决这个问题,就是在防火墙中关闭3306端口。
另外需要注意的是默认的帐号admin的密码是123456,大家一定要想办法修改掉。
有一个办法可以获得md5,就是在mysql里面执行下面文字
select md5(你的密码)
就可以显示32位密码,你取出中间的16就是游戏用的密码
____________________________________________________________________________
被恶意攻击 的解决方法
经过黑客朋友的分析
用UE或者其他二进制工具打开执行文件
用二进制查找
c6 86 0e 01 00 00 01
修改最后一个01为00,也就是修改成
c6 86 0e 01 00 00 00
就可以了
每个执行文件都修改一次(login_server.exe, gameworld_server.exe, region_server.exe)
每个文件应该只有一个这个内容,不要修改错了,修改错了可能会有更多错误。
被黑的原因多半是因为安全设置的问题,你可以安装你系统的最新更新。然后设置防火墙,
把不用的端口全部关闭。另外尽可能的关闭不使用的服务。
____________________________________________________________________________
服务器掉了后不会自动启动 的解决方法
做一个服务器保护工具就可以实现自动启动的功能
保护工具的作用是在服务器被攻击关闭的时候自动启动服务器。
用dos命令就可以实现这个功能,用文本编辑器输入下面三行
:start
login_server.exe
goto start
然后保存成 run_login_server.bat,把这个文件放到login目录下,
用这个命令启动服务器就可以在被攻击关闭的时候自动重新启动
同理,run_gameworld_server.bat内容为
:start
gameworld_server.exe
goto start
同理,run_region_srever.bat内容为
:start
region_server.exe
goto start
- 上一篇文章:修改真封神药品数量和补量
- 下一篇文章:真封神利用的玩家漏洞BUG
热门文章
热门标签