游戏服务器之第三方库tolua++的使用
2014-02-15 11:51
225 查看
tolua++ 是使用lua与c++交互的第三方库。可以跨windows和linux平台的。
使用步骤:
1、把tolua++.exe(在tolua++-1.0.93.rar中) 添加到环境变量path中(或者把tolua++.exe、lua5.1.dll放到当前目录)
2、复制头文件到文件夹pack(若新加头文件,否则就直接修改对应pkg文件)
3、把头文件拓展名改为pkg
4、去掉宏和 typedef、 inline 关键字
5、去掉函数的函数体(若有函数体)
6、去掉非私有的成员变量和成员函数
7、在汇总文件(如serverInterface.pkg)加入这个新加的文件,格式如$pfile "Player.pkg"
8、在命令行执行导出代码(如tolua++ -o ServerLuaInterface.cpp ServerInterface.pkg ,可以写到脚本文件)
9、把ServerLuaInterface.cpp复制到项目中的文件夹LuaInteract(项目里lua的交互目录下)
汇总文件如下:
$#include "StdAfx.h"
$pfile "SSTTypes.pkg"
$pfile "PlayerNpcTalk.pkg"
$pfile "ActorModule.pkg"
$pfile "PlayerQuest.pkg"
$pfile "AbilData.pkg"
$pfile "ActorAbility.pkg"
$pfile "BaseObject.pkg"
$pfile "Entity.pkg"
$pfile "Doer.pkg"
$pfile "Player.pkg"
$pfile "StdSceneProvider.pkg"
$pfile "mapManager.pkg"
$pfile "LogicServer.pkg"
对于继承的类,要把父类和子类都到处。如果CPlayer 继承CActor,则Doer.pkg和Player.pkg 都需要导出。
Player.pkg 内容如;
class CPlayer : public CDoer
{
public:
CPlayer();
~CPlayer();
//例行逻辑处理
virtual void run(TickTime dwCurrTick);
//初始化角色
virtual bool initialize();
//设置身份数据
...
char m_sAccount[64];//玩家账号字符串
int m_nAccountId;//玩家账号ID
int m_nCreateTime;//玩家第一次登陆的时间
int m_nClientAddr;//客户端地址
...
CGuild*
m_pGuild;//玩家所在帮会对象
int m_nCoin;//银两数量
PlayerId
m_DearId;//伴侣角色ID
char m_sDearName[48];//伴侣名称
CPlayerBag
m_Bag;//角色背包
CPlayerEquip
m_Equip;//角色装备
CPlayerQuest
m_Quest;//角色任务
CPlayerNpcTalk
m_NpcTalk;//玩家与npc交互系统
...
};
使用步骤:
1、把tolua++.exe(在tolua++-1.0.93.rar中) 添加到环境变量path中(或者把tolua++.exe、lua5.1.dll放到当前目录)
2、复制头文件到文件夹pack(若新加头文件,否则就直接修改对应pkg文件)
3、把头文件拓展名改为pkg
4、去掉宏和 typedef、 inline 关键字
5、去掉函数的函数体(若有函数体)
6、去掉非私有的成员变量和成员函数
7、在汇总文件(如serverInterface.pkg)加入这个新加的文件,格式如$pfile "Player.pkg"
8、在命令行执行导出代码(如tolua++ -o ServerLuaInterface.cpp ServerInterface.pkg ,可以写到脚本文件)
9、把ServerLuaInterface.cpp复制到项目中的文件夹LuaInteract(项目里lua的交互目录下)
汇总文件如下:
$#include "StdAfx.h"
$pfile "SSTTypes.pkg"
$pfile "PlayerNpcTalk.pkg"
$pfile "ActorModule.pkg"
$pfile "PlayerQuest.pkg"
$pfile "AbilData.pkg"
$pfile "ActorAbility.pkg"
$pfile "BaseObject.pkg"
$pfile "Entity.pkg"
$pfile "Doer.pkg"
$pfile "Player.pkg"
$pfile "StdSceneProvider.pkg"
$pfile "mapManager.pkg"
$pfile "LogicServer.pkg"
对于继承的类,要把父类和子类都到处。如果CPlayer 继承CActor,则Doer.pkg和Player.pkg 都需要导出。
Player.pkg 内容如;
class CPlayer : public CDoer
{
public:
CPlayer();
~CPlayer();
//例行逻辑处理
virtual void run(TickTime dwCurrTick);
//初始化角色
virtual bool initialize();
//设置身份数据
...
char m_sAccount[64];//玩家账号字符串
int m_nAccountId;//玩家账号ID
int m_nCreateTime;//玩家第一次登陆的时间
int m_nClientAddr;//客户端地址
...
CGuild*
m_pGuild;//玩家所在帮会对象
int m_nCoin;//银两数量
PlayerId
m_DearId;//伴侣角色ID
char m_sDearName[48];//伴侣名称
CPlayerBag
m_Bag;//角色背包
CPlayerEquip
m_Equip;//角色装备
CPlayerQuest
m_Quest;//角色任务
CPlayerNpcTalk
m_NpcTalk;//玩家与npc交互系统
...
};
相关文章推荐
- 网络游戏服务器开发:脚本系统的制作,linux下使用tolua制作Lua脚本系统(不需要PKG文件)
- 使用gdb调试游戏服务器
- 游戏免费的服务器使用
- 游戏服务器:到底使用UDP还是TCP
- 为使用 DB2 UDB 配置第三方应用服务器
- 浅谈XUtils第三方工具包的使用,主要用于客户端和服务器数据对接,适合初学者,
- Django学习之第三方储存服务器的使用
- 高性能服务器-关于游戏服务器中多线程的使用
- 游戏服务器:到底使用UDP还是TCP
- 游戏服务器:到底使用UDP还是TCP
- ASM在游戏服务器的使用
- [dika 记录] erlang游戏网关,及一些第三方erlang开源项目的使用
- 游戏服务器:到底使用UDP还是TCP
- 使用第三方广告服务器的好处
- Python游戏服务器开发日记(四)scons编译工具、C和C++混合使用
- Unity3D 游戏引擎之C#使用Socket与HTTP连接服务器传输数据包
- 【转】在服务器上使用第三方独立组件对Word/Excel进行编程
- Golang 使用VSCode搭建一个简单的游戏服务器
- Unity3D 游戏引擎之C#使用Socket与HTTP连接服务器传输数据包