http://www.cnblogs.com/linbc/archive/2009/11/20/1606493.html
都说魔兽世界是最经典的网游,可惜我沉迷于程序的世界,都没有机会去体会一下!正好看了别人一篇blog,写着怎么架设魔兽世界,想想我就自己动手架一个看看了!
等弄完之后,发现,那个服务器是2.3的客户端吧,好像!现在都3.13了,根本没用,后来到去sf.net找了一下,用svn把代码down下来,都很老了。后来啃了一点英文,才发现,现在源码管理已经迁移到git上面了。题外话,这个就是linux之父炮轰c++里面的一个证据之一,用纯C写的~!
这是好久之前弄的,现在忘得差不多了,只记个大概吧!
用以下命令down源码
git clone git://github.com/mangos/mangos.git
编译的时候会出错,找不到以下两个文件
revision.h
SystemConfig.h
其实以上文件只是简单的定义同个编译的宏而已,自己动手写一个就可以了!
然后编译就没有问题了。
1)Exracting maps and DBC files,导出地图及DBC文件
在源码找到这个路径mangos\contrib\extractor
编译后得到可执行文件ad.exe拷贝到魔兽目录下执行后,没那么快,得等会儿
得到目录maps,dbc两个文件夹,拷到大芒果的可执行目录下
2) 现在要安装数据库了
具体怎么安装mysql数据就不费话了,最省事的办法下个XAMP吧~
建三个库realmd;mangos;characters
直接执行mangos/sql下面的create_mysql.sql就可以建三个库了
紧接着分别选中库,然后执行该目录下的realmd.sql;mangos.sql;characters.sql;
操作完上面就有了基本的数据库结构了,当然,里面什么东西都没有
3)配置mangos
打开mangosd.conf,找到LoginDatabaseInfo,WorldDatabaseInfo,CharacterDatabaseInfo;分别按照这样的格式写入
服务器;端口;用户名;密码;数据库名
如我的是这样的:
LoginDatabaseInfo = "cheng;3306;linbc;asdf;realmd"
WorldDatabaseInfo = "cheng;3306;linbc;asdf;mangos"
CharacterDatabaseInfo = "cheng;3306;linbc;asdf;characters"
打开realmd.conf,也配置一下
LoginDatabaseInfo = "[Server IP];3306;root;[SQL password];realmd"
4)配置客户端的服务器ip及端口
在魔兽世界的客户端路径下打开Data\zhCN
里面有一个文件realmlist.wtf,打开后修改为
set realmlist [server IP] set patchlist [server IP]
现在,可以启动你的服务器了
执行 mangosd.exe 和 realmd.exe,应该没有任何错误
运行之前是命令行程序,可以输入命令,你可以先输入help就可以看这些命令怎么样,如创建帐号
create linbc passwd
可以设置为GM
setgm [username] [anything from 0 to 3, 3 being administrator, 0 being player]
好吧,现在可以进游戏了,这个时候你可能会碰到客户端版本太高不支持的情况,不要紧,自己动手改一下就可以了
在源码目录下找开文件realmd\AuthSocket.cpp差不多527行找到
#if 0
int accepted_versions[] = EXPECTED_MANGOS_CLIENT_BUILD;
#else
int accepted_versions[] = {10146,0};
#endif
当然,你改这个宏就更好了
现在进游戏肯定没有问题了,不过里面空空如野什么都没有
你还是去下载数据,当然,我们玩的话还要是汉化的数据,我花了两三天才找到的,太晚了,睡觉了
提醒自己,做完之后要马上记下来,不要用回忆去写blog,写得真烂,惨不忍睹,贴一张图吧
下面这些是几个命令挺好用
http://zhidao.baidu.com/question/103542573.html
--------------------------------------------------------------------------------------
mysql -h localhost -u root -p mysql
grant all privileges on *.* to linbc@localhost identified by ‘’ with grant option;