本帖最后由 傻傻^_^ 于 2010-6-7 13:30 编辑
呃,为什么是我加油捏,你们也加油吧,谁学会了谁就去做GM,嘿嘿
话说上篇这么多理论的东东,这里写一下实际操作吧
1 准备软件
TortoiseHg
http://tortoisehg.bitbucket.org/
Visual C++ 2008 Express Edition(Visual C++ 2010 Express Edtion转化项目不成功,放弃)
http://www.microsoft.com/express/Downloads/
PHPnow(Apache+PHP+MYSQL环境套件包,不用自己集成环境了,注册页与服务器数据库用)
http://phpnow.org/
.NET Framework 3.5
http://www.skycn.com/soft/43773.html
Navicat(下载免费版的,一般管理比较方便)
http://www.navicat.net.cn/navicat2010/download.html
2 下载和编译源码
2.1 下载源码
以我的机器为例
D:\trinity\trinitycore放置trinitycore源码
        当你安装好TortoiseHg后,右键点击trinitycore文件夹,选择TortoiseHg -> Create Repository Here,创建本地库。完成后再次右键点击trinitycore文件夹,选择TortoiseHg -> Clone...
        点击Clone开始复制数据到本地,完成后可以看到里面的cmake, contrib, dep, doc, sql, src, win文件夹。
       
        Trinitycore 会经常打包一些版本(不知道算不算官方稳定版),下载地址是
        http://code.google.com/p/trinitycore/downloads/list
这样就不用自己更新本地库了。
2.2 编译源代码
在trinitycore的win文件夹下,有个TrinityCore&Script VC90.sln的工程项目,可以用visual C++ 2008打开。
选择Release,Win32,再选择菜单生成(B) -> 生成解决方案(B)(或者按F7),开始编译trinitycore源码,大约需要15~30分钟。
编译成功的话会生成下列消息
一旦编译成功,你会发现下面的消息:
==========生成:10完成,0失败,0上升到最新,0已跳过==========
编译中出现的warning一般可以忽略,我遇到过的都是一些特殊的字符不能保存,需要将文本转为unicode格式云云。
编译中我也遇到过一处error,查看代码发现是有一处乱码造成1个{ 被注释掉,缺了个大括号,如果有问题的可以先检查一下。当然,也有可能是项目组的失误,这时应该关注一下http://code.google.com/p/trinitycore/updates/list,一般都会有人反应编译问题,然后出修正版本的。
2.3 代码的更新
        右键点击文件夹trinitycore -> TortoiseHg -> Synchronize,
选Pull进行更新。
3 安装数据库
3.1 下载数据库
D:\trinity\trinitydb  放置trinitydb源码
方法与2.1 下载源码相同
3.2 安装数据库
将PHPnow解压出来,重命名为web_server,路径D:\trinity\web_server
运行Init.cmd进行安装,就可以得到Apache+PHP+MYSQL的完整环境了
PnCp.cmd可以执行一些基本的命令,如重启服务。
3.3 安装Trinity数据库
Trinity的运行需要三个数据库:
realmd - 保存账户数据。
characters - 保存人物数据。
world - 保存游戏内容,如物品,资料,任务等
前两个包含在TrinityCore目录中,world数据库可以从TrinityDB目录中得到。
1)通过导入D:\trinity\trinitycore\hg\sql\create_mysql.sql创建三个数据库。您现在有三个数据库为realmd, characters and world。 (推荐用命令行方式导入,不要用sql客户端工具,这是保证执行效率和文件兼容必须的,world数据库在2分钟内能完成导入!)
2)导入D:\trinity\trinitycore\hg\sql\realmd.sql生成realmd数据库。
3)导入D:\trinity\trinitycore\hg\sql\characters.sql生成characters数据库。
以上的sql文件由trinitycore源码提供
4)解压 D:\trinity\trinitydb\hg\full_db\TDB_333.9.29_7925.zip 并导入TDB_333.9.29_7925.sql生成world数据库。 
5)在world数据库中按顺序导入下列文件:
D:\trinity\trinitydb\hg\updates\333.9\30_01_corepatch_world_7925_8307.sql -- 这个是将7925的数据库升级到8307数据库必须的文件
D:\trinity\trinitydb\hg\updates\333.9\30_02_procedures_world.sql -- trinitydb
D:\trinity\trinitydb\hg\updates\333.9\30_03_updatepack_world.sql
******************************************************************************
注意:
其中trinitydb还包含有2个sql文件,分别是 
30_corepatch_characters_7925_8307.sql
30_corepatch_realmd_7925_8307.sql
这2个sql文件与30_01_corepatch_world_7925_8307.sql一样,是trinitycore源码中提供的,对应trinitycore 7925版本到8307版本的数据库characters, realmd, world的sql更新。trinitydb将它们集成到了一起。
一般来说我们拿到的trinitycore高于trinitydb版本,建议使用与trinitydb版本相差不大的trinitycore版本,此时的characters与realmd变化不太,可以保证稳定性,world也应该使用trinitydb提供的更新,如上面的D:\trinity\trinitydb\hg\updates\333.9\30_01_corepatch_world_7925_8307.sql,而不要使用trinitycore提供高于8307版本的最新更新,有时会产生数据的兼容问题(被我碰到了)
总之,数据库的所有更新以trinitydb为准,trinitycore版本应与trinitydb保持一致。*******************************************************************************
3.4 更新数据库
同2.3 代码的更新
       
4 设置服务器
4.1 提取dbc,  maps和vmaps文件
4.1.1 dbc和maps文件
        将之前从visual C++ 2008 编译得到的\bin\Win32_Release文件夹放到D:\trinity,重命名为wow_server,再把D:\trinity\trinitycore\hg\contrib\map_extractor中的ad.exe复制到WOW文件夹下,双击运行,将生成的dbc和maps文件夹放到D:\trinity\wow_server下
4.1.2 vmaps
        将D:\trinity\trinitycore\hg\contrib\vmap_extract_assembler_bin下的所有文件复制到WOW文件夹下,双击运行makevmaps_SIMPLE.bat,将生成的vmaps文件夹放到D:\trinity\wow_server下
4.2 配置服务器
更改文件扩展名
TrinityCore.conf.dist -> TrinityCore.conf 
TrinityRealm.conf.dist -> TrinityRealm.conf。 
4.2.1 TrinityCore.conf
编辑MySQL账户的用户名和密码(替代Trinity;Trinity)。
LoginDatabaseInfo     = "127.0.0.1;3306;trinity;trinity;realmd"
WorldDatabaseInfo     = "127.0.0.1;3306;trinity;trinity;world"
CharacterDatabaseInfo = "127.0.0.1;3306;trinity;trinity;characters"
提取vmaps设置如下:
vmap.enableLOS = 1 -- 设置为1
vmap.enableHeight = 1 -- 设置为1
vmap.ignoreMapIds = "369"
vmap.ignoreSpellIds = "7720"
vmap.petLOS = 1 -- 设置为1
当然,还有很多其它的设置,如经验倍率等,都在这里。
4.2.2 TrinityRealm.conf
编辑MySQL账户的用户名和密码(替代Trinity;Trinity)。
LoginDatabaseInfo     = "127.0.0.1;3306;trinity;trinity;realmd"
4.2.3 Realmlist表
在realmd数据库的realmlist表中,name是服务器名字,比如说改为“和谐你全家”,address默认为127.0.0.1,如果改成你当前机器的IP,那么外网就可以访问你的机器,变成一台公共服务器了。
5 注册页面
        这个确实说不了多少,网上N多的服务端都提供了注册页面,本着拿来主义的原则,改改用算了。最简化的东东就是往realmd数据库的account表里面写2条数据(username, sha_pass_hash),呃,明文密码消失好多年。
        Username不用说了,就是用户名,
        sha_pass_hash就是SHA1(CONCAT(UPPER('$username'),':',UPPER('$password')) (用户名和密码连起来做sha1加密?其实我不懂)
 最后放到D:\trinity\web_server\htdocs下,启动web_server,启动trinitycore.exe, trinityrealm.exe,再改下自己WOW客户端要登录的服务器的IP,进去玩游戏吧。 |