编译问题总结

1.fopen函数注意DEBUG的时候走的是Working Directory

2.     ogreMain.vcproj           AssemblyDebug="1"

3       WXClient.vcproj         UsePrecompiledHeader="1"
                 WarningLevel="0"

 

  天龙八部架设需要分别在Windows和Linux两款操作系统上进行,也就是说需要两台服务器。Windows服务器上安装oracle数据库,主要负责管理玩家的帐号和验证玩家的登陆信息。Linux服务器上需安装mysql数据库,主要负责游戏主程序的运行。玩家登陆游戏过程客户端是向Windows服务器请求连接,Windows服务器验证玩家的登陆帐号和密码正确把连接转交给Linux服务器,然后Linux服务器负责玩家所有的游戏数据。注:如果你只有一台Windows服务器可安装虚拟主机软件,虚拟出一台Linux服务器即可。

架设天龙八部私服所需工具软件
1、天龙八部服务端(天龙八部游戏主程序)
2、Oracle10_database(Oracle数据库服务端)
3、PLSQL Developer(oracle数据库管理软件)
4、Oracle10_client(客户端)
5、mysql-5.0.45(mysql数据库)
6、mysql-connector-odbc-3.51.25-0.i386.rpm(mysql数据源Linux软件包)
7、Winscp(用于Windows与Linux之间的文件传输)
8、SecureCRT(用于连接Linux命令窗口执行命令)

Windows服务器操作


  我们先配置天龙八部数据库和导入数据,如果你还没安装Oracle数据库请看:天龙八部帐号数据库(Oracle)安装.运行oracle数据库管理软件PLSQL Developer,使用系统用户system和安装Oracle数据库时填写的密码和连接符orcl,如上图.

 

  登陆数据库管理后点击新建菜单选择命令窗口,在命令窗口分别复制以下四段代码按回车键执行,如上图

第一段代码:添加天龙八部游戏数据库用户及密码(3个用户:tlbb tl_gameuser tlbb_read,密码:iernei37d)
create user tlbb IDENTIFIED BY iernei37d;
create user tl_gameuser IDENTIFIED BY iernei37d;
create user tlbb_read IDENTIFIED BY iernei37d;

第二段代码:赋予tlbb用户权限
-- Grant/Revoke role privileges
grant connect to TLBB;
grant resource to TLBB;
-- Grant/Revoke system privileges
grant alter session to TLBB;
grant create cluster to TLBB;
grant create database link to TLBB;
grant create sequence to TLBB;
grant create session to TLBB;
grant create synonym to TLBB;
grant create table to TLBB;
grant create view to TLBB;

第三段代码:赋予tl_gameuser用户权限
-- Grant/Revoke role privileges
grant connect to tl_gameuser;
grant resource to tl_gameuser;
-- Grant/Revoke system privileges
grant alter session to tl_gameuser;
grant create cluster to tl_gameuser;
grant create database link to tl_gameuser;
grant create sequence to tl_gameuser;
grant create session to tl_gameuser;
grant create synonym to tl_gameuser;
grant create table to tl_gameuser;
grant create view to tl_gameuser;

第四段代码:赋予tlbb_read用户权限
-- Grant/Revoke role privileges
grant connect to tlbb_read;
grant resource to tlbb_read;
-- Grant/Revoke system privileges
grant alter session to tlbb_read;
grant create cluster to tlbb_read;
grant create database link to tlbb_read;
grant create sequence to tlbb_read;
grant create session to tlbb_read;
grant create synonym to tlbb_read;
grant create table to tlbb_read;
grant create view to tlbb_read;

 

  以上步骤完成了我们就可以开始导入天龙八部帐号数据库了,把天龙八部数据库文件tlbb.dmp,tl_gameuser.dmp复制到C盘根目录下,进入开始菜单点击运行,输入CMD,在命令行窗口分别执行两条命令:Imptlbb/iernei37d@orcl file=C:\tlbb.dmp ignore=y和Imptl_gameuser/iernei37d@orcl file=C:\tl_gameuser.dmp ignore=y(注:tlbb和tl_gameuser是上面步骤所建的数据库用户,iernei37d是密码).上图为数据库导入成功.

 

  数据库导入完成我们开始配置天龙八部数据库用户.运行PLSQL Developer以system用户登录,User-tlbb-右键编辑,在对象权限的对象栏中加入tl_gameuser.seq_user_basic_uin,后面选择1个Yes,对象栏中加入tl_gameuser.user_basic,后面选择4个Yes,应用.展开User-tlbb-Objects-Procedures-P_SAVEPOINT右键选择重新编译,有提示显示编译成功.

Linux服务器操作
首先确保你的Linux服务器已正确安装mysql数据库,新手请看:天龙八部游戏数据库mysql安装.打开SecureCRT连接Linux服务器终端.

配置数据库
1,启动mysql服务
/usr/local/mysql-5.0.45/bin/mysqld_safe --user=root &

2,进入mysql操作,密码为空直接回车确认
mysql -u root -p

3,设置mysql管理员密码,这里的密码是iernei37d
use mysql;  update user set Password=PASSWORD('iernei37d') where User='root';

4,添加数据库用户及权限(下面两段代码分别为添加用户tlbb和tlbbtools,密码:iernei37d)
insert into mysql.user (Host,  User,  Password,  Select_priv,  Insert_priv,  Update_priv,  Delete_priv,  Create_priv,  Drop_priv,  Reload_priv,  Shutdown_priv,  Process_priv,  File_priv,  Grant_priv,  References_priv,  Index_priv,  Alter_priv,  Show_db_priv,  Super_priv,  Create_tmp_table_priv,  Lock_tables_priv,  Execute_priv,  Repl_slave_priv,  Repl_client_priv,  Create_view_priv,  Show_view_priv,  Create_routine_priv,  Alter_routine_priv,  Create_user_priv,  ssl_type,  ssl_cipher,  x509_issuer,  x509_subject,  max_questions,  max_updates,  max_connections,  max_user_connections) value ('%', 'tlbb', PASSWORD('iernei37d'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);
insert into mysql.user (Host,  User,  Password,  Select_priv,  Insert_priv,  Update_priv,  Delete_priv,  Create_priv,  Drop_priv,  Reload_priv,  Shutdown_priv,  Process_priv,  File_priv,  Grant_priv,  References_priv,  Index_priv,  Alter_priv,  Show_db_priv,  Super_priv,  Create_tmp_table_priv,  Lock_tables_priv,  Execute_priv,  Repl_slave_priv,  Repl_client_priv,  Create_view_priv,  Show_view_priv,  Create_routine_priv,  Alter_routine_priv,  Create_user_priv,  ssl_type,  ssl_cipher,  x509_issuer,  x509_subject,  max_questions,  max_updates,  max_connections,  max_user_connections) value ('%', 'tlbbtools', PASSWORD('iernei37d'), 'Y','Y','Y','Y','N','Y','N','N','N','N','N','Y','Y','N','N','N','Y','N','Y','N','N','Y','Y','N','N','N','','','','',0,0,0,0);

5,创建天龙八部数据库(下面代码分别为创建数据库tlbbdb和tlbbdb_stat)
flush privileges;
create database tlbbdb;
create database tlbbdb_stat;
 

6,指定数据库用户
insert into mysql.db ( Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Create_tmp_table_priv, Lock_tables_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Execute_priv) value( '192.168.%.%', 'tlbbdb','tlbb', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');
insert into mysql.db ( Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Create_tmp_table_priv, Lock_tables_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Execute_priv) value( '192.168.%.%', 'tlbbdb','tlbbtools', 'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'N', 'Y', 'Y', 'N', 'Y', 'N', 'Y', 'Y', 'N', 'N', 'Y');
insert into mysql.db ( Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Create_tmp_table_priv, Lock_tables_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Execute_priv) value( '192.168.%.%', 'tlbbdb_stat','tlbb', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N');

7,退出mysql操作
exit

8,导入天龙八部数据库文件
把天龙八部数据库文件DBInit_0_31_0180_data_mysql和DBInit_0_31_0180_table_mysql传至/home目录执行导人命令:
mysql -uroot -prootvi5p tlbbdb < DBInit_0_31_0180_data_mysql
mysql -uroot -prootvi5p tlbbdb_stat < DBInit_0_31_0180_table_mysql
mysql部分到此结束.

配置天龙八部服务端
  上传天龙八部服务端到Linux服务器/home目录下,配置前请确保服务器已安装Oracle客户端.

1、设置游戏目录权限
   cd /home/tlbb/Billing
   chmod 777 *

2、修改服务端配制信息
  修改/home/tlbb/etc下gbs.conf db_hash.conf host.lst三个文件的配制信息:
   db_hash.conf 文件
   #散列数量:
   HASHING_NUM  = 1

   #散列表0:
   MAXDBCONNS0  = 1
   DBUSER_DB0  = tlbb   ;oracle数据库用户名称
   DBPASS_DB0 = c46234f7081f758997cffa62686d02e800000090191d0ac640cd86621f6008d8cbbf1662  ;密码
   DBTNS_DB0 = orcl       ;oracle全局数据库名称
  
   gbs.conf 文件
   MAXDBCONNS_BILL      = 20
   DBUSER_GAMEBILL     = tlbb    oracle数据库用户名称
   DBPASS_GAMEBILL     = c46234f7081f758997cffa62686d02e800000090191d0ac640cd86621f6008d8cbbf1662   ;密码
   DBTNS_GAMEBILL      = orcl       ;oracle全局数据库名称
 
   MAXDBCONNS_AUTH      = 20
   DBUSER_GAMEAUTH     = tl_gameuser   oracle数据库用户名称
   DBPASS_GAMEAUTH     = c46234f7081f758997cffa62686d02e800000090191d0ac640cd86621f6008d8cbbf1662      ;密码
   DBTNS_GAMEAUTH      = orcl       ;oracle全局数据库名称

   host.lst 文件
   192.168.1.188      --linux机的IP
   192.168.1.188 --linux机的IP

  修改/home/tlbb/Server/Config下LoginInfo.ini,ServerInfo.ini,ShareMemInfo.ini三个文件的配制信息:
修改里面的IP和mysql数据库连接信息.

配置mysql数据源
  替换odbc.ini与odbcinst.ini内容如下:
odbc.ini
   [tlbbdb]
   Trace    = Off
   TraceFile= stderr
   Driver   = /usr/lib/libmyodbc3.so
   DSN      = tlbbdb
   SERVER   = 192.168.1.188    换成你L机IP就OK
   USER     = tlbb
   PASSWORD = t!lbb
   PORT     = 3306
   DATABASE = tlbbdb
   TEXTSIZE = 409600

odbcinst.ini
[PostgreSQL]
Description             = ODBC for PostgreSQL
Driver          = /usr/lib/libodbcpsql.so
Setup           = /usr/lib/libodbcpsqlS.so
FileUsage               = 1

[MySQL ODBC 3.51 Driver]
DRIVER          = /usr/lib/libmyodbc3.so
SETUP           = /usr/lib/libmyodbc3S.so
UsageCount              = 1

3、添加oracle客户端连接服务端配置文件
  复制Windows服务器oracle数据库安装目录oracle/product/10.2.0/db_1/network/admin下的tnsnames.ora文件到linux服务器oracle客户端安装目录/oracle/product/10.2.0/db_1/network/admin并修改HOST = 你的WindowsIP地址

启动游戏服务端程序
1、设置服务端目录权限
   cd /home/tlbb/Server
   chmod 777 *

2、启动billing服务
   cd /home/tlbb/Billing
  ./tlbb start
出现**************draw information end************ 的字样就表示启动成功了

3、启动游戏主程序
   cd /home/tlbb/Server
   ./shm start(启动)     ./shm stop(停止)
出现Loop...Start shm就表示启动好了

   cd /home/tlbb/Server
   ./Login
出现链接world错误 就是启动好了  world启动了就不会提示了

cd /home/tlbb/Server           出现MotherClient 说明world也没问题了
   ./World
出现MotherClient 说明world也没问题了

   cd /home/tlbb/Server
   ./Server
启动Server比较慢,一般看到出现加载地图名称就没问题了

登陆游戏
  来到你电脑上天龙八部客户端安装目录,把Patch\LoginServer.txt文件里的IP修改成你服务器IP和端口.Bin\Game.exe发送到桌面快捷方式,右健属性,地址后面加个-fl既可登陆游戏.


//--------------------------------------------------------------------------------------------

     首先要想顺利编译通过(只是编译通过哈),你得改几处地方。

     1.将OgrePlatform.h中的 #define vsnprintf _vsnprintf  改成: #if (_MSC_VER < 1500) #define vsnprintf

_vsnprintf #endif

     2.将WXClient工程与WXRender工程里的stdafx.h文件里的以下两句注释

              #define _WIN32_WINDOWS (0x0410) //Windows 98

              #define _WIN32_WINNT (0x0500) //Windows 2000

     3.由于用到了luaplus,很多地方需要加上using namespace LuaPlus; 不过由于我的懒惰性,我直接在luaplus.h的

#endif LUAPLUS_H前加了using namespace LuaPlus; (虽然这个做法很不好,但是却很有效)

 


    以上修改基本能保证编译了,不过编译时编译,跟运行可没什么关系,要想成功运行,还得做几处修改。

    1.在OgreMain的属性下忽略MSVCRT;MSVCR90这两个特定库。

    2.将有fopen并且有 "a+w"的地方的"a+w"改成"a",这个是微软干的好事,改就是了。

    以上编译下来基本就是运行的问题了,运行的时候可能会却很多库,可以尝试用Dependency Walker查看需要什么库,并

且库的版本必须要对。

    一般可能却的库是d3d9.dll 与DevIL.dll  还有我本子上运行的时候那个ILU.dll(这个杀千刀的库)的库版本似乎不

对,反正就很让人纠结。。。

    剩下的基本就是运行了 我运行的时候还出来个

    Error #: 7

    Function: LogicModelManager::createLogicModel

    Description: Cannot find required Logic Model template '女主角.obj'.

    File: e:\ogre\ogre\游戏资料\游戏资料\天龙八部代码(服务器客户端)\天龙八部代码(服务器客户端)\天龙代码\客

    户端\client\wxcore\modelsystem\wxlogicmodelmanager.cpp

    Line: 723

    Stack unwinding: <<beginning of stack>>

   这个原因是你的Data不完善造成的。。。找个比较完善的资源就是了。。。

 


   没有服务器的情况下,能看到选择服务器的界面(不是最开始弹出的那个小对话框)就可以了。。。





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值