游戏服务器之第三方库tolua++的使用

来源:互联网 发布:淘宝店铺发布宝贝属性 编辑:程序博客网 时间:2024/05/21 17:46

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;//角色任务
CPlayerNpcTalkm_NpcTalk;//玩家与npc交互系统
 ...
};

0 0
原创粉丝点击