一、项目流程大概图:
二、添加servant流程
1.进入目录 “添加Servant模板” 选择对应进程目录
2.编写idl文件 对应目录下有example.idl
支持类型 uint8,uint16,uint32,uint64,string,vector(命名规则下面在总结)
3.运行 “添加Servant.bat” 如果只是修改协议体 运行 “添加Servant - NO.bat” 忽略以下步骤
4.vs对应工程添加上步骤新增的servant文件(也就是相应的.cpp和.h)
5.对应进程的main.cpp 注册协议servant类
g_DaServer->addServant();
三、命名规则
1.局部变量定义
int类型 nPlayerID(整型局部变量n开头)
string类型 strNickName(字符串型局部变量str开发)
char 类型 cName(字符型用c)
指针类型 pUser(指针用p)
vector 类型 vecMembers(vector容器用vec)
list 类型 listNews(list容器用list)
map<T,T> 类型 mapReward (map容器用map)
2.成员变量 m_
m_nPlayerID
3.全局变量
g_nServerID
3.宏定义,枚举 使用大写字母
4.类定义 class CPlayerInfo (类第一个字母大写)
四、建表指定
- 只用下面四种数据类型
数值类: 大于255, bigint(20) unsigned
数值类: 小于255, tinyint(4) unsigned
日期类: datetime
文本型: varchar(xxx)
每个表必须包含 status, created_date, last_modified_date 三个字段
2.表名规定
静态表(加载到内存) tb_table_
玩家表(部分加载到内存) tb_player_
历史表(不加载到内存) tb_his_ 每次insert都要remove
列子:
CREATE TABLE `tb_player_xxxx` (
`id` bigint(20) unsigned NOT NULL,
`player_id` bigint(20) unsigned NOT NULL,
`status` tinyint(4) unsigned NOT NULL,
`created_date` datetime NOT NULL,
`last_modified_date` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
修改玩家名称按例:
1、先注册一个协议(每次增加1), 到gateway main.cpp
然后去geteway main.cpp 里面完成 execute的代码 进行(这个协议是客户端cliend_gateway.idl的)
去gwgmcodeservant.cpp
/gmcode change_name test222
if (vecParams[1] == "change_name" && vecParams.size() == 3)
{
CGWModnameRequestPtr pReq = CGWModnameRequestPtr::createInstance();
pReq->m_strName = vecParams[2];
g_DaServer->callServant(GW_MODNAME_OPT,pReq.get(),NULL,0,NULL,NULL,Player->getSessionID());
}
dbservermain.cpp //里面完成 execute的代码
//修改用户名称
execute的代码
同步到场景已经完成,代码后序补上。