MoleServer游戏服务器框架使用教程(四)

 

这将是本教程的最后一篇,我们将在这篇教程中详细讲解游戏中机器人的添加,管理,如何编写,已经如何接入代理,代码系统的使用。

首先打开网站后台,“玩家”-》“机器人管理”-》“机器人列表”-》“添加机器人”:

lua 游戏服务器 游戏服务器教程_lua 游戏服务器


 

然后就可以为某个具体游戏的具体某台服务器添加机器人了。机器人添加后,还需要设置机器人的工作时间:

lua 游戏服务器 游戏服务器教程_lua 游戏服务器_02


 

只有设置了某一段时间,机器人才会在这段时间进入服务器进行工作,当然这里可以设置多个时间段,时间段是24小时制,比如3:00:00-18:00:00。

机器人添加完成后,机器人就会在相应的时间段进入游戏服务器进行工作。

到这里,我们网站方面的配置就完成了,但游戏服务器中的接口在哪里呢,比如我们这个游戏例子,具体的机器人逻辑就在moleserver/games/example/crobotlogicframe.h文件中,它有下面一些接口:

/// 用于处理用户准备后的消息
virtual void OnProcessPlayerReadyMes(int playerId);
/// 用于处理用户开始游戏开始消息
virtual void OnProcessPlayerGameStartMes();
/// 用于处理用户结束游戏消息
virtual void OnProcessPlayerGameOverMes(void);
/// 用于处理用户进入游戏房间后的消息
virtual void OnProcessPlayerRoomMes(Json::Value &mes);
/// 处理用户进入房间消息
virtual void OnProcessEnterRoomMsg(int playerId);
/// 处理用户离开房间消息
virtual void OnProcessLeaveRoomMsg(int playerId);
/// 处理用户断线重连消息
virtual void OnProcessReEnterRoomMes(int playerId);
/// 处理用户断线消息
virtual void OnProcessOfflineRoomMes(int playerId);
/// 处理用户定时器消息
virtual void OnProcessTimerMsg(int timerId,int curTimer);

如果你看过前一篇文章你就会发现,和正常玩家的接口是一样的,这里唯一的区别是逻辑中比如管理定时器,发送消息的方法不再走房间类,而是走玩家类。

我们看下Player类提供下面结构方法:

/// 开始一个定时器
virtual bool StartTimer(int timerId,int space) = 0;
/// 关闭一个定时器
virtual void StopTimer(int id) = 0;
/// 关闭所有的定时器
virtual void StopAllTimer(void) = 0;
  
/// 发送游戏数据(此函数只限于机器人使用,正常用户使用请使用房间消息发送函数)
virtual void SendGameMsg(Json::Value &msg) = 0;
/// 发送准备消息
virtual void SendReadyMsg(void) = 0;
以上就是机器人的相关的内容,下面我们再来看看代理方面的东西,一个玩家如果要成为某个代理的会员,主要在注册这个接口,我们来看看账号服务器管理注册方面的处理代码
/**
* 处理用户注册消息
*
* @param connId 要处理网络消息的客户端ID
* @param mes 要处理的网络消息
*/
void GameFrameManager::OnProcessUserRegisterMes(uint32 connId,Json::Value &mes)
{
std::string pUserName = mes["UserName"].asString();
std::string pUserPW = mes["UserPW"].asString();
std::string pEmail = mes["Email"].asString();
int pSex = mes["Sex"].asInt();
std::string pRealName = mes["RealName"].asString();
std::string pTelephone = mes["Telephone"].asString();
std::string pAvatorIndex = mes["AvatorIndex"].asString();
std::string pReferrer = mes["Referrer"].asString();
std::string pcardnumber = mes["cardnumber"].asString();

pReferrer 这个参数就是代理的账号,如果填写了这个代理账号,那么这个玩家就是这个代理旗下的会员。

顶级代理是在后台设置的,而分级代理由代理自己通过代理后台去设置。

lua 游戏服务器 游戏服务器教程_MoleServer_03


 

代理管理系统的访问地址为:

http://127.0.0.1/agentuser/index/index.html

 

好,以上就是我们整套教程内容,欢迎来信交流,学习。