百人二八杠部分源码

来源:互联网 发布:大数据的利与弊 编辑:程序博客网 时间:2024/05/01 09:38


本篇接着《百人二八杠(控制+机器人)源码下载》一文,为大家分享百人二八杠源码。


#include "StdAfx.h"
#include "Tableframesink.h"
#include "GameServerManager.h"


//////////////////////////////////////////////////////////////////////////


//机器定义
#ifndef _DEBUG
#define ANDROID_SERVICE_DLL_NAME TEXT("28GangBattleAndroid.dll")//组件名字
#else
#define ANDROID_SERVICE_DLL_NAME TEXT("28GangBattleAndroid.dll")//组件名字
#endif


//构造函数
CGameServiceManager::CGameServiceManager(void)
{
//设置属性
m_GameServiceAttrib.wKindID=KIND_ID;
m_GameServiceAttrib.wChairCount=GAME_PLAYER;
m_GameServiceAttrib.wSupporType=(GAME_GENRE_GOLD|GAME_GENRE_SCORE|GAME_GENRE_MATCH|GAME_GENRE_EDUCATE);


//功能标志
m_GameServiceAttrib.cbDynamicJoin=TRUE;
m_GameServiceAttrib.cbAndroidUser=TRUE;
m_GameServiceAttrib.cbOffLineTrustee=FALSE;


//服务属性
m_GameServiceAttrib.dwServerVersion=VERSION_SERVER;
m_GameServiceAttrib.dwClientVersion=VERSION_CLIENT;
lstrcpyn(m_GameServiceAttrib.szGameName,GAME_NAME,CountArray(m_GameServiceAttrib.szGameName));
lstrcpyn(m_GameServiceAttrib.szDataBaseName,szTreasureDB,CountArray(m_GameServiceAttrib.szDataBaseName));
lstrcpyn(m_GameServiceAttrib.szClientEXEName,TEXT("28GangBattle.exe"),CountArray(m_GameServiceAttrib.szClientEXEName));
lstrcpyn(m_GameServiceAttrib.szServerDLLName,TEXT("28GangBattleServer.dll"),CountArray(m_GameServiceAttrib.szServerDLLName));


return;
}


//析构函数
CGameServiceManager::~CGameServiceManager(void)
{
}


//接口查询
VOID * CGameServiceManager::QueryInterface(const IID & Guid, DWORD dwQueryVer)
{
QUERYINTERFACE(IGameServiceManager,Guid,dwQueryVer);
QUERYINTERFACE_IUNKNOWNEX(IGameServiceManager,Guid,dwQueryVer);
return NULL;
}


//创建游戏桌
VOID * CGameServiceManager::CreateTableFrameSink(REFGUID Guid, DWORD dwQueryVer)
{
//建立对象
CTableFrameSink * pTableFrameSink=NULL;
try
{
pTableFrameSink=new CTableFrameSink();
if (pTableFrameSink==NULL) throw TEXT("创建失败");
void * pObject=pTableFrameSink->QueryInterface(Guid,dwQueryVer);
if (pObject==NULL) throw TEXT("接口查询失败");
return pObject;
}
catch (...) {}


//清理对象
SafeDelete(pTableFrameSink);


return NULL;
}


//获取属性
bool CGameServiceManager::GetServiceAttrib(tagGameServiceAttrib & GameServiceAttrib)
{
GameServiceAttrib=m_GameServiceAttrib;
return true;
}


//参数修改
bool CGameServiceManager::RectifyParameter(tagGameServiceOption & GameServiceOption)
{
//效验参数
ASSERT(&GameServiceOption!=NULL);
if (&GameServiceOption==NULL) return false;


//单元积分
GameServiceOption.lCellScore=__max(1L,GameServiceOption.lCellScore);


//积分下限
//金币游戏
if (GameServiceOption.wServerType&(GAME_GENRE_GOLD|SCORE_GENRE_POSITIVE))
{
GameServiceOption.lMinTableScore=__max(GameServiceOption.lCellScore*50L,GameServiceOption.lMinTableScore);
}


//输分限制(原来的积分上限)
if (GameServiceOption.lRestrictScore!=0L)
{
GameServiceOption.lRestrictScore=__max(GameServiceOption.lRestrictScore,GameServiceOption.lMinTableScore);
}


//积分上限
if (GameServiceOption.wServerType!=GAME_GENRE_SCORE)
{
if(GameServiceOption.lMaxEnterScore<=GameServiceOption.lMinTableScore)
GameServiceOption.lMaxEnterScore=0L;
else if(GameServiceOption.lRestrictScore>0)
GameServiceOption.lMaxEnterScore=__min(GameServiceOption.lMaxEnterScore,GameServiceOption.lRestrictScore);
}


return true;
}


//获取配置
bool CGameServiceManager::SaveCustomRule(LPBYTE pcbCustomRule, WORD wCustonSize)
{
/*//效验状态
ASSERT(m_pDlgCustomRule!=NULL);
if (m_pDlgCustomRule==NULL) return false;


//变量定义
ASSERT(wCustonSize>=sizeof(tagCustomRule));
tagCustomRule * pCustomRule=(tagCustomRule *)pcbCustomRule;


//获取配置
if (m_pDlgCustomRule->GetCustomRule(*pCustomRule)==false)
{
return false;
}
*/
return true;
}

//默认配置
bool CGameServiceManager::DefaultCustomRule(LPBYTE pcbCustomRule, WORD wCustonSize)
{
return true;
}


//创建窗口
HWND CGameServiceManager::CreateCustomRule(CWnd * pParentWnd, CRect rcCreate, LPBYTE pcbCustomRule, WORD wCustonSize)
{
//创建窗口
/*if (m_pDlgCustomRule==NULL)
{
m_pDlgCustomRule=new CDlgCustomRule;
}


//创建窗口
if (m_pDlgCustomRule->m_hWnd==NULL)
{
//设置资源
AfxSetResourceHandle(GetModuleHandle(m_GameServiceAttrib.szServerDLLName));


//创建窗口
m_pDlgCustomRule->Create(IDD_CUSTOM_RULE,pParentWnd);


//还原资源
AfxSetResourceHandle(GetModuleHandle(NULL));
}


//设置变量
ASSERT(wCustonSize>=sizeof(tagCustomRule));
m_pDlgCustomRule->SetCustomRule(*((tagCustomRule *)pcbCustomRule));


//显示窗口
m_pDlgCustomRule->SetWindowPos(NULL,rcCreate.left,rcCreate.top,rcCreate.Width(),rcCreate.Height(),SWP_NOZORDER|SWP_SHOWWINDOW);


return m_pDlgCustomRule->GetSafeHwnd();*/


return NULL;
}


//创建机器
VOID * CGameServiceManager::CreateAndroidUserItemSink(REFGUID Guid, DWORD dwQueryVer)
{
   try
{
//加载模块
if (m_hDllInstance==NULL)
{
m_hDllInstance=AfxLoadLibrary(ANDROID_SERVICE_DLL_NAME);
if (m_hDllInstance==NULL) throw TEXT("机器人服务模块不存在");
}


//寻找函数
ModuleCreateProc * CreateProc=(ModuleCreateProc *)GetProcAddress(m_hDllInstance,"CreateAndroidUserItemSink");
if (CreateProc==NULL) throw TEXT("机器人服务模块组件不合法");


//创建组件
return CreateProc(Guid,dwQueryVer);
}
catch(...) {}


return NULL;
}


//创建数据
VOID * CGameServiceManager::CreateGameDataBaseEngineSink(REFGUID Guid, DWORD dwQueryVer)
{
return NULL;
}


//////////////////////////////////////////////////////////////////////////


//建立对象函数
extern "C" __declspec(dllexport) VOID * CreateGameServiceManager(REFGUID Guid, DWORD dwInterfaceVer)
{
static CGameServiceManager GameServiceManager;
return GameServiceManager.QueryInterface(Guid,dwInterfaceVer);
}


完整百人二八杠源码请访问棋牌社区下载。


0 0
原创粉丝点击