//初始化函数 BOOL CShortMessage::OnInitDialog() { CSkinDialogEx::OnInitDialog(); m_cbButtonState[BST_MAX]=BUT_EXIST|BUT_DISABLE; m_cbButtonState[BST_MIN]=BUT_EXIST|BUT_NORMAL; //设置标题 if (m_pTargetUserItem!=NULL) { TCHAR szTitle[256]; _snprintf(szTitle,sizeof(szTitle),TEXT("[ %s ] - [ %s ]"),m_pTargetUserItem->GetUserData()->szName,m_strRoomName); SetWindowText(szTitle); } //信息代理 if (m_MessageProxyHelper.CreateInstance()==false) return false; if (m_MessageProxyHelper->SetRichEditHwnd(&m_RecvMessage)==false) return false; //按钮皮肤 m_BtExpression.SetButtonImage(g_GlobalUnits.m_WhisperViewImage.uBtExpression,g_GlobalUnits.m_PlatformResourceModule->GetResInstance(),false); //设置控件 m_RecvMessage.SetBackgroundColor(FALSE,RGB(230,249,255)); m_SendMessage.LimitText(MAX_CHAT_LEN); m_SendMessage.SetFocus(); //消息头 TCHAR szTitle[128]=TEXT(""); _snprintf(szTitle,CountArray(szTitle),TEXT("【温馨提示】")); m_MessageProxyHelper->InsertGeneralString(szTitle,RGB(255,0,0),MS_NORMAL,false); //预警信息 TCHAR szMessage[128] ; _snprintf(szMessage,CountArray(szMessage),TEXT("客服人员不会以任何形式向您索取您的帐户信息,请玩家提高警惕,保护好自己帐号密码!")); m_MessageProxyHelper->InsertShtickString(szMessage,RGB(0,0,0),MS_NORMAL,true); return FALSE; }
//或等于 CChiHuRight & CChiHuRight::operator |= ( DWORD dwRight ) { //验证权位 if( !IsValidRight( dwRight ) ) return *this; for( BYTE i = 0; i < CountArray(m_dwRightMask); i++ ) { if( (dwRight&m_dwRightMask[i]) || (i==0&&dwRight<0x10000000) ) m_dwRight[i] |= (dwRight&MASK_CHI_HU_RIGHT); } return *this; }
//扣除扑克 void CGameClientDlg::DeductionTableCard(bool bHeadCard) { if (bHeadCard==true) { //切换索引 BYTE cbHeapCount=m_cbHeapCardInfo[m_wHeapHand][0]+m_cbHeapCardInfo[m_wHeapHand][1]; if (cbHeapCount==HEAP_FULL_COUNT) m_wHeapHand=(m_wHeapHand+1)%CountArray(m_cbHeapCardInfo); //减少扑克 m_cbLeftCardCount--; m_cbHeapCardInfo[m_wHeapHand][0]++; //堆立扑克 WORD wHeapViewID=SwitchViewChairID(m_wHeapHand); WORD wMinusHeadCount=m_cbHeapCardInfo[m_wHeapHand][0]; WORD wMinusLastCount=m_cbHeapCardInfo[m_wHeapHand][1]; m_GameClientView.m_HeapCard[wHeapViewID].SetCardData(wMinusHeadCount,wMinusLastCount,HEAP_FULL_COUNT); } else { //切换索引 BYTE cbHeapCount=m_cbHeapCardInfo[m_wHeapTail][0]+m_cbHeapCardInfo[m_wHeapTail][1]; if (cbHeapCount==HEAP_FULL_COUNT) m_wHeapTail=(m_wHeapTail+3)%CountArray(m_cbHeapCardInfo); //减少扑克 m_cbLeftCardCount--; m_cbHeapCardInfo[m_wHeapTail][1]++; //堆立扑克 WORD wHeapViewID=SwitchViewChairID(m_wHeapTail); WORD wMinusHeadCount=m_cbHeapCardInfo[m_wHeapTail][0]; WORD wMinusLastCount=m_cbHeapCardInfo[m_wHeapTail][1]; m_GameClientView.m_HeapCard[wHeapViewID].SetCardData(wMinusHeadCount,wMinusLastCount,HEAP_FULL_COUNT); } return; }
//发送坐下失败 void CTableFrame::SendSitFailedPacket(IServerUserItem * pIServerUserItem, LPCTSTR pszFailedDescribe) { //构造数据 CMD_GR_SitFailed SitFailed; memset(&SitFailed,0,sizeof(SitFailed)); lstrcpyn(SitFailed.szFailedDescribe,pszFailedDescribe,CountArray(SitFailed.szFailedDescribe)); //发送数据 WORD wSendSize=sizeof(SitFailed)-sizeof(SitFailed.szFailedDescribe)+CountString(SitFailed.szFailedDescribe); m_pIGameServiceFrame->SendData(pIServerUserItem,MDM_GR_USER,SUB_GR_SIT_FAILED,&SitFailed,wSendSize); return; }
//设置密码 VOID CPasswordControl::SetUserPassword(LPCTSTR pszPassword) { //设置控件 INT nPasswordLen=lstrlen(pszPassword); m_edPassword.SetWindowText((nPasswordLen>0)?TEXT("********"):TEXT("")); //设置变量 m_bModify=false; m_bFalsity=true; lstrcpyn(m_szPassword,pszPassword,CountArray(m_szPassword)); return; }
//收到消息 void CShortMessage::OnRecvMessage(TCHAR * szSendName, TCHAR * szMessage, COLORREF crColor, bool bMeMessage) { //获取时间 SYSTEMTIME SystemTime; GetLocalTime(&SystemTime); //消息头 TCHAR szTitle[128]=TEXT(""); _snprintf(szTitle,CountArray(szTitle),TEXT("%s %02d:%02d:%02d\n "),szSendName,SystemTime.wHour,SystemTime.wMinute,SystemTime.wSecond); m_MessageProxyHelper->InsertGeneralString(szTitle,(bMeMessage==true)?RGB(0,128,64):RGB(0,0,255),MS_NORMAL,false); //插入消息 m_MessageProxyHelper->InsertShtickString(szMessage,crColor,MS_NORMAL,true); m_MessageProxyHelper->InsertGeneralString(TEXT(""),crColor,MS_NORMAL,true); //写入文件 try { TCHAR szTitle[128]=TEXT(""); _snprintf(szTitle,CountArray(szTitle),TEXT("[%s] %u/%u/%u %02d:%02d:%02d"),szSendName,SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay,SystemTime.wHour,SystemTime.wMinute,SystemTime.wSecond); //写入文件 CFile MsgFile; if(MsgFile.Open(m_strMsgFileName, CFile::modeWrite|CFile::modeNoTruncate|CFile::modeCreate)) { MsgFile.SeekToEnd() ; MsgFile.Write(szTitle, UINT(strlen(szTitle))) ; MsgFile.Write("\r\n", UINT(strlen("\r\n"))) ; MsgFile.Write(szMessage, UINT(strlen(szMessage))) ; MsgFile.Write("\r\n\r\n", UINT(strlen("\r\n\r\n"))) ; MsgFile.Close() ; } } catch(...){} return; }
//更新关系 const tagCompanionItem * __cdecl CCompanionManager::UpdateCompanionItem(DWORD dwUserID, LPCTSTR pszAccounts, LPCTSTR pszFace) { tagCompanionItem * pCompanionItem=NULL; for (INT_PTR i=0;i<m_CompanionItemActive.GetCount();i++) { pCompanionItem=m_CompanionItemActive[i]; ASSERT(pCompanionItem!=NULL); if (pCompanionItem->dwUserID==dwUserID) { //设置数据 m_bNeedUpdate=true; lstrcpyn(pCompanionItem->szFace,pszFace,CountArray(pCompanionItem->szFace)); lstrcpyn(pCompanionItem->szAccounts,pszAccounts,CountArray(pCompanionItem->szAccounts)); //更新界面 m_DlgCompanionManager.UpdateCompanionItem(pCompanionItem,false); return pCompanionItem; } } return NULL; }
//取消申请 bool CTableFrameSink::OnUserCancelBanker(IServerUserItem *pICancelServerUserItem) { //当前庄家 if (pICancelServerUserItem->GetChairID()==m_wCurrentBanker && m_pITableFrame->GetGameStatus()!=GS_FREE) { //发送消息 m_pITableFrame->SendGameMessage(pICancelServerUserItem,TEXT("游戏已经开始,不可以取消当庄!"),SMT_INFO|SMT_EJECT); return true; } //存在判断 for (WORD i=0; i<m_ApplyUserArray.GetCount(); ++i) { //获取玩家 WORD wChairID=m_ApplyUserArray[i]; IServerUserItem *pIServerUserItem=m_pITableFrame->GetServerUserItem(wChairID); //条件过滤 if (pIServerUserItem==NULL) continue; if (pIServerUserItem->GetUserID()!=pICancelServerUserItem->GetUserID()) continue; //删除玩家 m_ApplyUserArray.RemoveAt(i); if (m_wCurrentBanker!=wChairID) { //构造变量 CMD_S_CancelBanker CancelBanker; ZeroMemory(&CancelBanker,sizeof(CancelBanker)); //设置变量 lstrcpyn(CancelBanker.szCancelUser,pIServerUserItem->GetAccounts(),CountArray(CancelBanker.szCancelUser)); //发送消息 m_pITableFrame->SendTableData(INVALID_CHAIR, SUB_S_CANCEL_BANKER, &CancelBanker, sizeof(CancelBanker)); m_pITableFrame->SendLookonData(INVALID_CHAIR, SUB_S_CANCEL_BANKER, &CancelBanker, sizeof(CancelBanker)); } else if (m_wCurrentBanker==wChairID) { //切换庄家 m_wCurrentBanker=INVALID_CHAIR; ChangeBanker(true); } return true; } return false; }
//连接事件 bool CEditUnderWrite::OnEventMissionLink(INT nErrorCode) { //错误判断 if (nErrorCode!=0L) { //错误提示 CInformation Information(m_pParentWnd); Information.ShowMessageBox(TEXT("服务器连接失败,个性签名更新失败!"),MB_ICONERROR,30L); return true; } //设置变量 m_bNeedSend=false; //变量定义 ASSERT(GetMissionManager()!=NULL); CMissionManager * pMissionManager=GetMissionManager(); //用户信息 CGlobalUserInfo * pGlobalUserInfo=CGlobalUserInfo::GetInstance(); tagGlobalUserData * pGlobalUserData=pGlobalUserInfo->GetGlobalUserData(); //变量定义 CMD_GP_ModifyUnderWrite ModifyUnderWrite; ZeroMemory(&ModifyUnderWrite,sizeof(ModifyUnderWrite)); //设置数据 ModifyUnderWrite.dwUserID=pGlobalUserData->dwUserID; lstrcpyn(ModifyUnderWrite.szUnderWrite,m_szUnderWrite,CountArray(ModifyUnderWrite.szUnderWrite)); lstrcpyn(ModifyUnderWrite.szPassword,pGlobalUserData->szPassword,CountArray(ModifyUnderWrite.szPassword)); //发送数据 WORD wHeadSize=sizeof(ModifyUnderWrite)-sizeof(ModifyUnderWrite.szUnderWrite); pMissionManager->SendData(MDM_GP_USER_SERVICE,SUB_GP_MODIFY_UNDER_WRITE,&ModifyUnderWrite,wHeadSize+CountStringBuffer(ModifyUnderWrite.szUnderWrite)); return true; }
//保存输入 bool CDlgRegWizardAccount::SaveInputInfo() { //变量定义 CString strAccount; TCHAR szPassword[LEN_PASSWORD]=TEXT(""); //保存输入 GetDlgItemText(IDC_ACCOUNTS,strAccount); GetDlgItemText(IDC_PASSWORD,m_szPassword,CountArray(m_szPassword)); GetDlgItemText(IDC_PASSWORD2,szPassword,CountArray(szPassword)); //效验用户名 strAccount.TrimLeft(); strAccount.TrimRight(); if (strAccount.IsEmpty()) { ShowInformation(TEXT("用户帐号不能为空,请重新输入!"),MB_ICONERROR); m_edAccounts.SetFocus(); return false; } lstrcpyn(m_szAccounts,strAccount,sizeof(m_szAccounts)); //效验密码 if (m_szPassword[0]==0) { ShowInformation(TEXT("登录密码不能为空,请重新输入!"),MB_ICONERROR); m_edPassword.SetFocus(); return false; } if (lstrcmp(m_szPassword,szPassword)!=0) { ShowInformation(TEXT("两次输入的登录密码不相同,请重新输入!"),MB_ICONERROR); m_edPassword2.SetFocus(); return false; } return true; }
//索引切换 WORD CCardControl::SwitchCardPoint(CPoint & MousePoint) { //基准位置 int nXPos=MousePoint.x-m_ControlPoint.x; int nYPos=MousePoint.y-m_ControlPoint.y; //范围判断 if ((nXPos<0)||(nXPos>m_ControlSize.cx)) return INVALID_ITEM; if ((nYPos<POS_SHOOT)||(nYPos>m_ControlSize.cy)) return INVALID_ITEM; //牌列子项 if (nXPos<CARD_WIDTH*CountArray(m_CardItemArray)) { WORD wViewIndex=(WORD)(nXPos/CARD_WIDTH)+m_wCardCount; if (wViewIndex>=CountArray(m_CardItemArray)) return wViewIndex-CountArray(m_CardItemArray); return INVALID_ITEM; } //当前子项 if ((m_CurrentCard.cbCardData!=0)&&(nXPos>=(m_ControlSize.cx-CARD_WIDTH))) return CountArray(m_CardItemArray); return INVALID_ITEM; }
//地区信息 VOID CDlgRegWizardUserInfo::LoadAreaInfo(LPCTSTR pszCity) { //工作目录 TCHAR szDirectory[MAX_PATH]=TEXT(""); CWHService::GetWorkDirectory(szDirectory,CountArray(szDirectory)); //变量定义 TCHAR szAreaFile[MAX_PATH],szItem[20],szAreaRead[CountArray(m_szArea)]; _sntprintf(szAreaFile,CountArray(szAreaFile),TEXT("%s\\AreaInfo.INI"),szDirectory); //读取资料 m_comArea.ResetContent(); UINT nCount=GetPrivateProfileInt(pszCity,TEXT("COUNT"),0,szAreaFile); for (UINT i=0;i<nCount;i++) { szAreaRead[0]=0; _sntprintf(szItem,CountArray(szItem),TEXT("Item%d"),i); GetPrivateProfileString(pszCity,szItem,TEXT(""),szAreaRead,sizeof(szAreaRead),szAreaFile); if ((szAreaRead[0]!=0)&&(m_comArea.FindString(0,szAreaRead)==LB_ERR)) m_comArea.AddString(szAreaRead); } return; }
//保存输入 bool CDlgRegWizardUserInfo::SaveInputInfo() { //用户年龄 INT nCurSel=m_comAge.GetCurSel(); if (nCurSel==LB_ERR) { TCHAR szBuffer[16]; m_comAge.GetWindowText(szBuffer,CountArray(szBuffer)); m_cbAge=(BYTE)_tstoi(szBuffer); } else m_cbAge=(BYTE)m_comAge.GetItemData(nCurSel); //用户性别 nCurSel=m_comGender.GetCurSel(); m_cbGender=(nCurSel!=LB_ERR)?(BYTE)m_comGender.GetItemData(nCurSel):GENDER_UNKNOW; //区域信息 m_comArea.GetWindowText(m_szArea,CountArray(m_szArea)); m_comCity.GetWindowText(m_szCity,CountArray(m_szCity)); m_comProvince.GetWindowText(m_szProvince,CountArray(m_szProvince)); return true; }
//获取连接 bool CGameServerDlg::InitDataBaseParameter(tagDataBaseParameter & DataBaseParameter) { //获取路径 TCHAR szWorkDir[MAX_PATH]=TEXT(""); CWHService::GetWorkDirectory(szWorkDir,CountArray(szWorkDir)); //构造路径 TCHAR szIniFile[MAX_PATH]=TEXT(""); _sntprintf(szIniFile,CountArray(szIniFile),TEXT("%s\\ServerParameter.ini"),szWorkDir); //读取配置 CWHIniData IniData; IniData.SetIniFilePath(szIniFile); //连接信息 DataBaseParameter.wDataBasePort=(WORD)IniData.ReadInt(TEXT("PlatformDB"),TEXT("DBPort"),1433); IniData.ReadEncryptString(TEXT("PlatformDB"),TEXT("DBAddr"),NULL,DataBaseParameter.szDataBaseAddr,CountArray(DataBaseParameter.szDataBaseAddr)); IniData.ReadEncryptString(TEXT("PlatformDB"),TEXT("DBUser"),NULL,DataBaseParameter.szDataBaseUser,CountArray(DataBaseParameter.szDataBaseUser)); IniData.ReadEncryptString(TEXT("PlatformDB"),TEXT("DBPass"),NULL,DataBaseParameter.szDataBasePass,CountArray(DataBaseParameter.szDataBasePass)); IniData.ReadEncryptString(TEXT("PlatformDB"),TEXT("DBName"),szPlatformDB,DataBaseParameter.szDataBaseName,CountArray(DataBaseParameter.szDataBaseName)); return true; }
//发送游戏消息 bool __cdecl CTableFrame::SendGameMessage(IServerUserItem * pIServerUserItem, LPCTSTR lpszMessage, WORD wMessageType) { //构造数据包 CMD_GF_Message Message; Message.wMessageType=wMessageType; lstrcpyn(Message.szContent,lpszMessage,CountArray(Message.szContent)); Message.wMessageLength=CountString(Message.szContent); //发送数据 WORD wSendSize=sizeof(Message)-sizeof(Message.szContent)+Message.wMessageLength*sizeof(TCHAR); m_pIGameServiceFrame->SendData(pIServerUserItem,MDM_GF_FRAME,SUB_GF_MESSAGE,&Message,wSendSize); return true; }
void IAndroid::GetClientSerial(tagClientSerial & ClientSerial) { //获取版本 OSVERSIONINFO OSVerInfo; OSVerInfo.dwOSVersionInfoSize=sizeof(OSVerInfo); GetVersionEx(&OSVerInfo); ClientSerial.dwSystemVer=MAKELONG(OSVerInfo.dwMajorVersion,OSVerInfo.dwMinorVersion); //网卡标识 ZeroMemory(ClientSerial.dwComputerID,sizeof(ClientSerial.dwComputerID)); WORD wMacSize=GetMACAddress((BYTE *)ClientSerial.dwComputerID,sizeof(ClientSerial.dwComputerID)); //硬盘标识 WORD wIndex=(wMacSize+sizeof(DWORD)-1)/sizeof(DWORD); LPCTSTR pszHardDisk[]={TEXT("C:\\"),TEXT("D:\\"),TEXT("E:\\")}; for (WORD i=wIndex;i<CountArray(ClientSerial.dwComputerID);i++) { ASSERT(CountArray(pszHardDisk)>(i-wIndex)); GetVolumeInformation(pszHardDisk[i-wIndex],NULL,0,&ClientSerial.dwComputerID[i],NULL,NULL,0,NULL); } return; }
//获取密码 LPCTSTR CPasswordControl::GetUserPassword(TCHAR szPassword[LEN_PASSWORD]) { //控件密码 if (m_bModify==true) { m_bModify=false; m_edPassword.GetWindowText(m_szPassword,CountArray(m_szPassword)); } //拷贝密码 lstrcpyn(szPassword,m_szPassword,LEN_PASSWORD); return szPassword; }
//重画函数 void CScoreView::OnPaint() { CPaintDC dc(this); //设置 DC dc.SetBkMode(TRANSPARENT); dc.SetTextColor(RGB(250,250,250)); dc.SelectObject(&CSkinAttribute::m_DefaultFont); //绘画背景 CImageHandle ImageHandle(&m_ImageBack); m_ImageBack.BitBlt(dc,0,0); //显示分数 CRect rcDraw; TCHAR szBuffer[64]=TEXT(""); for (WORD i=0;i<CountArray(m_szUserName);i++) { //用户名字 rcDraw.left=20; rcDraw.right=80; rcDraw.top=i*20+58; rcDraw.bottom=rcDraw.top+12; dc.DrawText(m_szUserName[i],lstrlen(m_szUserName[i]),&rcDraw,DT_VCENTER|DT_CENTER|DT_END_ELLIPSIS); //用户积分 rcDraw.left=120; rcDraw.right=190; _snprintf(szBuffer,sizeof(szBuffer),TEXT("%ld"),m_lGameScore[i]); dc.DrawText(szBuffer,lstrlen(szBuffer),&rcDraw,DT_VCENTER|DT_CENTER|DT_END_ELLIPSIS); } //显示税收 rcDraw.left=20; rcDraw.right=80; rcDraw.top=i*20+58; rcDraw.bottom=rcDraw.top+12; LPCTSTR pszTax=TEXT("交易税"); dc.DrawText(pszTax,lstrlen(pszTax),&rcDraw,DT_VCENTER|DT_CENTER|DT_END_ELLIPSIS); //显示税收 rcDraw.left=120; rcDraw.right=190; rcDraw.top=i*20+58; rcDraw.bottom=rcDraw.top+12; _snprintf(szBuffer,sizeof(szBuffer),"%ld",m_lGameTax); dc.DrawText(szBuffer,lstrlen(szBuffer),&rcDraw,DT_VCENTER|DT_CENTER|DT_END_ELLIPSIS); return; }
void ExChangeManager::OnUseExChangeCode(CRoleEx* pRole,CL_Cmd_RoleUseExChangeCode* pMsg) { if (!pMsg || !pRole) { ASSERT(false); return; } //ÏòÊý¾Ý¿â½øÐвéѯ ¶Ò»»Âë¶ÔÓ¦µÄID DBR_Cmd_QueryExChange msg; SetMsgInfo(msg, DBR_QueryExChange, sizeof(DBR_Cmd_QueryExChange)); msg.dwUserID = pRole->GetUserID(); TCHARCopy(msg.ExChangeCode, CountArray(msg.ExChangeCode), pMsg->ExChangeCode, _tcslen(pMsg->ExChangeCode)); g_FishServer.SendNetCmdToDB(&msg); }
//鼠标消息 void CControlWnd::OnLButtonDown(UINT nFlags, CPoint Point) { __super::OnLButtonDown(nFlags, Point); //索引判断 if (m_cbCurrentItem!=0xFF) { //变量定义 BYTE cbIndex=0; BYTE cbItemKind[4]={WIK_LEFT,WIK_CENTER,WIK_RIGHT,WIK_PENG}; //类型子项 for (BYTE i=0;i<CountArray(cbItemKind);i++) { if (((m_cbActionMask&cbItemKind[i])!=0)&&(m_cbCurrentItem==cbIndex++)) { AfxGetMainWnd()->PostMessage(IDM_CARD_OPERATE,cbItemKind[i],m_cbCenterCard); return; } } //杠牌子项 for (BYTE i=0;i<CountArray(m_cbGangCard);i++) { if ((m_cbGangCard[i]!=0)&&(m_cbCurrentItem==cbIndex++)) { AfxGetMainWnd()->PostMessage(IDM_CARD_OPERATE,WIK_GANG,m_cbGangCard[i]); return; } } //错误断言 ASSERT(FALSE); } return; }
//配置信息 bool CClientKernel::OnIPCConfig(const IPC_Head * pHead, const void * pIPCBuffer, WORD wDataSize, HWND hWndSend) { ASSERT(pHead->wMainCmdID==IPC_MAIN_CONFIG); switch (pHead->wSubCmdID) { case IPC_SUB_SERVER_INFO: //房间信息 { //效验参数 ASSERT(wDataSize>=sizeof(IPC_GF_ServerInfo)); if (wDataSize<sizeof(IPC_GF_ServerInfo)) return false; //处理数据 IPC_GF_ServerInfo * pServerInfo=(IPC_GF_ServerInfo *)pIPCBuffer; m_wTableID=pServerInfo->wTableID; m_wChairID=pServerInfo->wChairID; m_dwUserID=pServerInfo->dwUserID; m_ServerAttribute.wKindID=pServerInfo->wKindID; m_ServerAttribute.wServerID=pServerInfo->wServerID; m_ServerAttribute.wGameGenre=pServerInfo->wGameGenre; m_ServerAttribute.wChairCount=pServerInfo->wChairCount; m_ServerAttribute.dwVideoAddr=pServerInfo->dwVideoAddr; m_ServerAttribute.cbHideUserInfo=pServerInfo->cbHideUserInfo; lstrcpyn(m_ServerAttribute.szKindName,pServerInfo->szKindName,CountArray(m_ServerAttribute.szKindName)); lstrcpyn(m_ServerAttribute.szServerName,pServerInfo->szServerName,CountArray(m_ServerAttribute.szServerName)); //设置视频 CVideoServiceManager * pVideoServiceManager=CVideoServiceManager::GetInstance(); if ( pVideoServiceManager!=NULL) pVideoServiceManager->SetVideoServiceInfo(pServerInfo->dwUserID,htonl(pServerInfo->dwVideoAddr),PORT_VIDEO_SERVER); //更新标题 UpdateGameTitle(); return true; } } return false; }
//绘画数字 VOID CDlgInsureGame::DrawNumberString(CDC * pDC, SCORE lScore, INT nXPos, INT nYPos) { //转换逗号 TCHAR szControl[128]=TEXT(""); CString cs; //转换格式 MakeString(cs,lScore); _sntprintf(szControl,CountArray(szControl),TEXT("%s"),cs); //变量定义 INT nXDrawPos=nXPos; INT nScoreLength=lstrlen(szControl); //绘画判断 if (nScoreLength>0L) { //获取大小 CSize SizeNumber; SizeNumber.SetSize(m_ImageNumber.GetWidth()/12L,m_ImageNumber.GetHeight()); //绘画数字 for (INT i=0;i<nScoreLength;i++) { //绘画逗号 if (szControl[i]==TEXT(',')) { m_ImageNumber.DrawImage(pDC,nXDrawPos,nYPos,SizeNumber.cx,SizeNumber.cy,SizeNumber.cx*10L,0L); } //绘画点号 if (szControl[i]==TEXT('.')) { m_ImageNumber.DrawImage(pDC,nXDrawPos,nYPos,SizeNumber.cx,SizeNumber.cy,SizeNumber.cx*11L,0L); } //绘画数字 if (szControl[i]>=TEXT('0')&&szControl[i]<=TEXT('9')) { m_ImageNumber.DrawImage(pDC,nXDrawPos,nYPos,SizeNumber.cx,SizeNumber.cy,SizeNumber.cx*(szControl[i]-TEXT('0')),0L); } //设置位置 nXDrawPos+=SizeNumber.cx; } } return; }
//初始化函数 BOOL CDlgOption::OnInitDialog() { __super::OnInitDialog(); //获取位置 CRect rcClient,rcFrame; GetClientRect(&rcClient); rcFrame.left=BUTTON_BAR_WIDTH+15; rcFrame.top=GetYExcursionPos()+8; rcFrame.right=rcClient.Width()-10; rcFrame.bottom=rcClient.Height()-35; //创建控件 m_ButtonBar.Create(NULL,NULL,WS_CHILD,CRect(0,0,0,0),this,10); m_ButtonBar.MoveWindow(8,8+GetYExcursionPos(),BUTTON_BAR_WIDTH+2,BUTTON_BAR_HEIGHT); m_ButtonBar.ShowWindow(SW_SHOW); m_ButtonBar.InitButtonBar(rcFrame,this); //设置标题 SetWindowText(TEXT("配置选项")); //系统配置 tagSystemParameter * pSystemParameter=&m_SystemItem.m_SystemParameter; pSystemParameter->enAcountsRule=g_GlobalOption.m_enAcountsRule; pSystemParameter->enInviteMode=g_GlobalOption.m_InviteMode; pSystemParameter->bShowInOutMessage=g_GlobalOption.m_bShowInOutMessage; pSystemParameter->wBossHotKey=g_GlobalOption.m_wBossHotKey; m_ButtonBar.InsertOptionItem(&m_SystemItem); //同桌配置 if ((m_pGameOption!=NULL)&&(m_pServerOption!=NULL)) { tagTableRuleParameter * pTableRuleParameter=&m_TableRuleItem.m_TableRuleParameter; pTableRuleParameter->bPassword=m_pServerOption->m_bPassword; pTableRuleParameter->bLimitWin=m_pGameOption->m_bLimitWin; pTableRuleParameter->bLimitFlee=m_pGameOption->m_bLimitFlee; pTableRuleParameter->bLimitScore=m_pGameOption->m_bLimitScore; pTableRuleParameter->bLimitDetest=g_GlobalOption.m_bLimitDetest; pTableRuleParameter->bCheckSameIP=g_GlobalOption.m_bCheckSameIP; pTableRuleParameter->wWinRate=m_pGameOption->m_wWinRate; pTableRuleParameter->wFleeRate=m_pGameOption->m_wFleeRate; pTableRuleParameter->lMaxScore=m_pGameOption->m_lMaxScore; pTableRuleParameter->lLessScore=m_pGameOption->m_lLessScore; lstrcpyn(pTableRuleParameter->szPassword,m_pServerOption->m_szPassword,CountArray(pTableRuleParameter->szPassword)); m_ButtonBar.InsertOptionItem(&m_TableRuleItem); } return TRUE; }
//发送按钮 void CShortMessage::OnBnClickedSendShort() { //判断信息 m_SendMessage.SetFocus(); if (m_SendMessage.GetWindowTextLength()==0) return; try { //获取时间 long int dwNowTime=(long int)time(NULL); //判断目标对象 ASSERT(m_dwTargetUserID!=0L); if ((m_pTargetUserItem==NULL)||(m_dwTargetUserID!=m_pTargetUserItem->GetUserData()->dwUserID)) { m_pTargetUserItem=((CRoomViewItem *)m_pParentWnd)->m_ClientUserManager.SearchUserByUserID(m_dwTargetUserID); if (m_pTargetUserItem==NULL) m_MessageProxyHelper->InsertSystemString(TEXT("目标玩家已经离开,信息发送失败!"),MS_NORMAL); return; } //获取消息 CString strBuffer; m_SendMessage.GetWindowText(strBuffer); //过滤消息 if (strBuffer.Find(TEXT("{\\rtf"))!=-1) throw TEXT("不能发送非法字符,发送失败!"); for (int i=strBuffer.GetLength();i>0;i--) if ((strBuffer[i-1]!=TEXT('\n'))&&(strBuffer[i-1]!=TEXT('\r'))&&(strBuffer[i-1]>=-1)&&(strBuffer[i-1]<30)) throw TEXT("不能发送非法字符,发送失败!"); //发送消息 CMD_GR_Wisper Wisper; Wisper.dwTargetUserID=m_dwTargetUserID; Wisper.crFontColor=g_GlobalOption.m_crChatTX; Wisper.dwSendUserID=g_GlobalUnits.GetGolbalUserData().dwUserID; lstrcpyn(Wisper.szChatMessage,strBuffer,CountArray(Wisper.szChatMessage)); Wisper.wChatLength=CountStringBuffer(Wisper.szChatMessage); //发送命令 WORD wSendSize=sizeof(Wisper)-sizeof(Wisper.szChatMessage)+Wisper.wChatLength; ((CRoomViewItem *)m_pParentWnd)->m_ClientSocket->SendData(MDM_GR_USER,SUB_GR_USER_WISPER,&Wisper,wSendSize); //设置参数 m_SendMessage.SetWindowText(TEXT("")); } catch (TCHAR * szErrorMessage) { m_MessageProxyHelper->InsertSystemString(szErrorMessage,MS_NORMAL); } catch (...) { m_MessageProxyHelper->InsertSystemString(TEXT("未知异常错误,消息发送失败!"),MS_NORMAL); } return; }
//缺一色牌 bool CGameLogic::IsQueYiSe(BYTE cbCardIndex[MAX_INDEX]) { CString strFile,strTemp; CTime tmCur = CTime::GetCurrentTime(); CString strTime = tmCur.Format("%m%d"); strFile.Format("log\\%sIsQueYiSe.log",strTime); strTemp.Format("IsQueYiSe"); WriteLog(strFile, strTemp); //胡牌判断 BYTE cbIndex[]={0,9,18}; BYTE i = 0; BYTE j = 0; int mjColorInt = 0;//花色种类 for (i=0;i<CountArray(cbIndex);i++) { int tempInt = 0; for (j=cbIndex[i];j<(cbIndex[i]+9);j++) { if (cbCardIndex[j]!=0) { //mjColorInt++; tempInt++; strTemp.Format("i=%d, j=%d", i, j); WriteLog(strFile, strTemp); //break; } } if ( tempInt > 0 ) { mjColorInt++; } strTemp.Format("mjColorInt=%d", mjColorInt); WriteLog(strFile, strTemp); //if (j==(cbIndex[i]+9)) return true; }//End for 3 if(2 == mjColorInt) { return true; } return false; }
//机器标识 bool CWHService::GetMachineIDEx(TCHAR szMachineID[LEN_MACHINE_ID]) { //变量定义 TCHAR szMACAddress[LEN_NETWORK_ID]=TEXT(""); //网卡标识 WORD wMacSize=0;//GetMACAddress(szMACAddress); //硬盘标识 DWORD *pbuf=(DWORD*)szMACAddress; WORD wIndex=(wMacSize+sizeof(DWORD)-1)/sizeof(DWORD); LPCTSTR pszHardDisk[]={TEXT("C:\\"),TEXT("D:\\"),TEXT("E:\\")}; for (WORD i=wIndex;i<CountArray(pszHardDisk);i++) { ASSERT(CountArray(pszHardDisk)>(i-wIndex)); GetVolumeInformation(pszHardDisk[i-wIndex],NULL,0,pbuf+i,NULL,NULL,0,NULL); } //转换信息 ASSERT(LEN_MACHINE_ID>=LEN_MD5); CWHEncrypt::MD5Encrypt(szMACAddress,szMachineID); return true; }
//执行下载 bool CCustomFaceManager::PerformDownLoad(DWORD dwUserID, DWORD dwCustomID) { //设置变量 ZeroMemory(&m_CustomFaceInfo,sizeof(m_CustomFaceInfo)); //构造地址 TCHAR szCustomFace[128]=TEXT(""); _sntprintf(szCustomFace,CountArray(szCustomFace),TEXT("%s/CustomFace.asp?UserID=%ld&CustomID=%ld"),szPlatformLink,dwUserID,dwCustomID); //下载头像 ASSERT(m_DownLoad.GetDownLoadStatus()==DownLoadStatus_Conclude); m_DownLoad.PerformDownLoad(szCustomFace,QUERY_ME_INTERFACE(IUnknownEx)); return true; }
//插入时间 bool CRichEditMessage::InsertSystemTime(COLORREF crColor) { //获取时间 SYSTEMTIME SystemTime; GetLocalTime(&SystemTime); //构造消息 TCHAR szTimeBuffer[64]=TEXT(""); _sntprintf(szTimeBuffer,CountArray(szTimeBuffer),TEXT("02d:%02d:%02d"),SystemTime.wHour,SystemTime.wMinute,SystemTime.wSecond); //插入消息 InsertString(szTimeBuffer,crColor); return true; }
//更新资源 bool CPropertyBar::UpdateSkinResource() { //加载资源 HINSTANCE hInstance = m_ReshInstance; m_ImageL.SetLoadInfo(m_PropertyViewImage.uPropertyFrameL, hInstance, false); m_ImageM.SetLoadInfo(m_PropertyViewImage.uPropertyFrameM, hInstance, false); m_ImageR.SetLoadInfo(m_PropertyViewImage.uPropertyFrameR, hInstance, false); //道具按钮 for ( int nIndex = 0; nIndex < CountArray(m_BtProperty); ++nIndex ) m_BtProperty[nIndex].SetButtonImage(m_PropertyViewImage.uBtProperty[nIndex], hInstance, false); //鲜花按钮 for ( int nIndex = 0; nIndex < CountArray(m_BtFlower); ++nIndex ) m_BtFlower[nIndex].SetButtonImage(m_PropertyViewImage.uBtGift[nIndex], hInstance, false); //控制按钮 m_btTopMoveToL.SetButtonImage(m_PropertyViewImage.uBtPropertyToLeft, hInstance, false); m_btTopMoveToR.SetButtonImage(m_PropertyViewImage.uBtPropertyToRight, hInstance, false); m_btBtmMoveToL.SetButtonImage(m_PropertyViewImage.uBtPropertyToLeft, hInstance, false); m_btBtmMoveToR.SetButtonImage(m_PropertyViewImage.uBtPropertyToRight, hInstance, false); return true; }
//加载种类 void CServerListCenter::LoadGameKind(CDataBaseAide & DataBaseAide) { //执行命令 DataBaseAide.ResetParameter(); DataBaseAide.ExecuteProcess(TEXT("GSP_LoadGameKindItem"),true); //变量定义 tagGameKind GameKindRead; ZeroMemory(&GameKindRead,sizeof(GameKindRead)); //获取数据 IDataBase * pIDataBase=(IDataBase *)DataBaseAide.GetDataBase(IID_IDataBase,VER_IDataBase); //读取信息 while (pIDataBase->IsRecordsetEnd()==false) { //读取信息 GameKindRead.wTypeID=DataBaseAide.GetValue_WORD(TEXT("TypeID")); GameKindRead.wKindID=DataBaseAide.GetValue_WORD(TEXT("KindID")); GameKindRead.wSortID=DataBaseAide.GetValue_WORD(TEXT("SortID")); GameKindRead.dwMaxVersion=DataBaseAide.GetValue_DWORD(TEXT("MaxVersion")); DataBaseAide.GetValue_String(TEXT("KindName"),GameKindRead.szKindName,CountArray(GameKindRead.szKindName)); DataBaseAide.GetValue_String(TEXT("ProcessName"),GameKindRead.szProcessName,CountArray(GameKindRead.szProcessName)); //移动记录 pIDataBase->MoveToNext(); //插入信息 InsertGameKind(&GameKindRead); } //关闭记录 pIDataBase->CloseRecordset(); return; }