www.pudn.com > 3D_OnlineGame_Humen.rar > CmdEatAndDrink.cpp
#include "stdafx.h" #include "XMudClient.h" #include "CommandCheck.h" #include "MenuCreateNew.h" #include "CommunicateMsg.h" #include "midi.h" #include "faceplate.h" #include "CmdFunction.h" #include "FileFunctionItem.h" #include "D3DRMScreen.h" #include "MainScreen.h" extern rmfullglobals myglobs; extern int g_nGameState; extern CMenuCreateNew m_MenuCreateNew; extern SOCKET hLCltForRSvrSock; extern BOOL g_bGetInputMessage; extern CStringList g_strlistChannel; extern CStringList g_strlistSelfMsg; extern CStringList g_strlistMesssage; extern CStringList g_strlistPlayerOnline; extern CListplayerlist; extern CList skilllist; extern CList equiplist; extern CList equiprentlist; extern CList itemlist; extern CRITICAL_SECTION csAnimation; extern CList animationlist; extern CMainScreen m_MainScreen; void CmdUseProc(char *szItem ,char * Usenum) { CEquipInfo * lpEquipInfo; CString strtmp; int i,j,uNum=0; uNum = atoi( Usenum); if( uNum > 1000 || uNum < 0 ) strcpy(Usenum,"1"); BOOL bFindItem = FALSE; j = equiplist.GetCount(); for( i=0 ; i m_sCNAME,szItem) ) { bFindItem = TRUE; break; } } if(!bFindItem) { strtmp = szGreenLow; strtmp += CString("你並沒有")+ szItem + ("這個東西啊"); AddSelfMsg(strtmp); return; } strtmp = SZUSE; strtmp += CString(" ") + lpEquipInfo->m_sCNAME + (" ") + CString (Usenum); Send(hLCltForRSvrSock,strtmp); } void SrvCmdUseProc(CStringList * slUseData) { CPlayerInfo * lpPlayerInfo; BOOL bFindGood = FALSE; CString strtmp; lpPlayerInfo = playerlist.GetHead(); if( slUseData->GetAt(slUseData->FindIndex(1)) == "OK") { strtmp = szGreenLow; strtmp += slUseData->GetAt(slUseData->FindIndex(2)); AddSelfMsg(strtmp); if(slUseData->GetCount()>2) { strtmp = slUseData->GetTail(); strtmp.Replace(","," "); sscanf(strtmp,"%d %d", &lpPlayerInfo->m_iEAT, &lpPlayerInfo->m_iDRINK); } m_MainScreen.bDrawPlayInfo[0] = TRUE; m_MainScreen.bDrawPlayInfo[1] = TRUE; return; }else { strtmp = szRedLow; strtmp += slUseData->GetAt(slUseData->FindIndex(2)); AddSelfMsg(strtmp); } } void CmdEatProc(char * szItem) { CEquipInfo * lpEquipInfo; CString strtmp; int i,j; BOOL bFindItem = FALSE; j = equiplist.GetCount(); for(i=0;i m_sCNAME,szItem) ){ bFindItem = TRUE; break; } } if(!bFindItem){ strtmp = szGreenLow; strtmp += CString("你並沒有")+ szItem + ("這個東西啊"); AddSelfMsg(strtmp); return; } CPlayerInfo * lpPlayerInfo; lpPlayerInfo = playerlist.GetHead(); if(lpPlayerInfo->m_iEAT >= lpPlayerInfo->m_iMAXEAT){ strtmp = szGreenLow; strtmp += CString("你已經吃的太飽,再也塞不下任何東西了。"); AddSelfMsg(strtmp); return; } strtmp = SZEAT; strtmp += CString(" ") + lpEquipInfo->m_sCNAME; Send(hLCltForRSvrSock,strtmp); } void SrvCmdEatProc(CStringList * slEatData) { CPlayerInfo * lpPlayerInfo; BOOL bFindGood = FALSE; CString strtmp; lpPlayerInfo = playerlist.GetHead(); if( slEatData->GetAt(slEatData->FindIndex(1)) == "OK"){ strtmp = szGreenLow; strtmp += slEatData->GetAt(slEatData->FindIndex(2)); AddSelfMsg(strtmp); strtmp = slEatData->GetTail(); strtmp.Replace(","," "); sscanf(strtmp,"%d %d", &lpPlayerInfo->m_iEAT, &lpPlayerInfo->m_iDRINK); m_MainScreen.bDrawPlayInfo[0] = TRUE; m_MainScreen.bDrawPlayInfo[1] = TRUE; return; }else{ strtmp = szRedLow; strtmp += slEatData->GetAt(slEatData->FindIndex(2)); AddSelfMsg(strtmp); } } void CmdDrinkProc(char * szItem) { CEquipInfo * lpEquipInfo; CString strtmp; int i,j; BOOL bFindItem = FALSE; j = equiplist.GetCount(); for(i=0;i m_sCNAME,szItem) ){ bFindItem = TRUE; break; } } if(!bFindItem){ strtmp = szGreenLow; strtmp += CString("你並沒有")+ szItem + ("這個東西啊"); AddSelfMsg(strtmp); return; } CPlayerInfo * lpPlayerInfo; lpPlayerInfo = playerlist.GetHead(); if(lpPlayerInfo->m_iDRINK >= lpPlayerInfo->m_iMAXDRINK){ strtmp = szGreenLow; strtmp += CString("你已經喝的太撐,再也灌不下一滴水了。"); AddSelfMsg(strtmp); return; } strtmp = SZDRINK; strtmp += CString(" ") + lpEquipInfo->m_sCNAME; Send(hLCltForRSvrSock,strtmp); } void SrvCmdDrinkProc(CStringList * slDrinkData) { CPlayerInfo * lpPlayerInfo; BOOL bFindGood = FALSE; CString strtmp; lpPlayerInfo = playerlist.GetHead(); if( slDrinkData->GetAt(slDrinkData->FindIndex(1)) == "OK"){ strtmp = szGreenLow; strtmp += slDrinkData->GetAt(slDrinkData->FindIndex(2)); AddSelfMsg(strtmp); strtmp = slDrinkData->GetTail(); strtmp.Replace(","," "); sscanf(strtmp,"%d %d", &lpPlayerInfo->m_iEAT, &lpPlayerInfo->m_iDRINK); m_MainScreen.bDrawPlayInfo[0] = TRUE; m_MainScreen.bDrawPlayInfo[1] = TRUE; }else{ strtmp = szRedLow; strtmp += slDrinkData->GetAt(slDrinkData->FindIndex(2)); AddSelfMsg(strtmp); } } void SrvCmdSubGoods(CStringList * strComList) { CEquipInfo * lpEquipInfo; CPlayerInfo * lpPlayerInfo; CString szName, szNow; int nCount, nMoneyChange; if (strComList->GetCount()<5) { return; } szName = strComList->GetAt(strComList->FindIndex(1)); szNow = strComList->GetAt(strComList->FindIndex(2)); nCount = atoi((char *)(LPCTSTR)strComList->GetAt(strComList->FindIndex(3))); if (strComList->GetCount()>=6) { nMoneyChange = atoi((char *)(LPCTSTR)strComList->GetAt(strComList->FindIndex(5))); } else { nMoneyChange = 0; } lpPlayerInfo = playerlist.GetHead(); if(szNow == "空") szNow.Empty(); POSITION pos = equiplist.GetHeadPosition(); while(pos != NULL) { lpEquipInfo = equiplist.GetNext(pos); if( (lpEquipInfo->m_sCNAME == szName)&&(lpEquipInfo->m_sNOW == szNow ) ){ lpPlayerInfo->m_iMONEY += nMoneyChange; m_MainScreen.bDrawPlayInfo[0] = TRUE; m_MainScreen.bDrawPlayInfo[1] = TRUE; lpEquipInfo->m_iCOUNT -= nCount; if(lpEquipInfo->m_iCOUNT <= 0){ if(pos != NULL) equiplist.GetPrev(pos); else pos = equiplist.GetTailPosition(); equiplist.RemoveAt(pos); } if(m_MainScreen.mFirstFD.nShowState == SHOWEQUIP){ m_MainScreen.mFirstFD.bReDraw[0] = TRUE; m_MainScreen.mFirstFD.bReDraw[1] = TRUE; m_MainScreen.mFirstFD.ResetCount(); } return; } } ASSERT(FALSE); TRACE("物品名稱或狀態錯誤"); } void SrvCmdAddGoods(CStringList * strComList) { CEquipInfo * lpEquipInfo; CPlayerInfo * lpPlayerInfo; CString szName, szNow, szUnit; int nCount, nMoneyChange; if (strComList->GetCount()<5) { return; } szName = strComList->GetAt(strComList->FindIndex(1)); szNow = strComList->GetAt(strComList->FindIndex(2)); nCount = atoi((char *)(LPCTSTR)strComList->GetAt(strComList->FindIndex(3))); szUnit = strComList->GetAt(strComList->FindIndex(4)); if (strComList->GetCount()>=6) { nMoneyChange = atoi((char *)(LPCTSTR)strComList->GetAt(strComList->FindIndex(5))); } else { nMoneyChange = 0; } lpPlayerInfo = playerlist.GetHead(); if(szNow == "空") szNow.Empty(); POSITION pos = equiplist.GetHeadPosition(); while(pos != NULL){ lpEquipInfo = equiplist.GetNext(pos); if( (lpEquipInfo->m_sCNAME == szName)&&(lpEquipInfo->m_sNOW == szNow ) ){ lpPlayerInfo->m_iMONEY += nMoneyChange; m_MainScreen.bDrawPlayInfo[0] = TRUE; m_MainScreen.bDrawPlayInfo[1] = TRUE; lpEquipInfo->m_iCOUNT += nCount; if(m_MainScreen.mFirstFD.nShowState == SHOWEQUIP){ m_MainScreen.mFirstFD.bReDraw[0] = TRUE; m_MainScreen.mFirstFD.bReDraw[1] = TRUE; m_MainScreen.mFirstFD.ResetCount(); } return; } } lpPlayerInfo->m_iMONEY += nMoneyChange; m_MainScreen.bDrawPlayInfo[0] = TRUE; m_MainScreen.bDrawPlayInfo[1] = TRUE; if(szName != "temp"){ lpEquipInfo = new CEquipInfo; lpEquipInfo->m_sCNAME = szName; lpEquipInfo->m_sNOW = szNow; lpEquipInfo->m_iCOUNT = nCount; lpEquipInfo->m_sUNIT = szUnit; equiplist.AddTail(lpEquipInfo); if(m_MainScreen.mFirstFD.nShowState == SHOWEQUIP){ m_MainScreen.mFirstFD.bReDraw[0] = TRUE; m_MainScreen.mFirstFD.bReDraw[1] = TRUE; m_MainScreen.mFirstFD.ResetCount(); } } } void SrvCmdAddRentGoods(CStringList * strComList) { CEquipInfo * lpEquipInfo; CPlayerInfo * lpPlayerInfo; CString szName, szNow, szUnit; int nCount, nMoneyChange; if (strComList->GetCount()<5) { return; } szName = strComList->GetAt(strComList->FindIndex(1)); szNow = strComList->GetAt(strComList->FindIndex(2)); nCount = atoi((char *)(LPCTSTR)strComList->GetAt(strComList->FindIndex(3))); szUnit = strComList->GetAt(strComList->FindIndex(4)); if (strComList->GetCount()>=6) { nMoneyChange = atoi((char *)(LPCTSTR)strComList->GetAt(strComList->FindIndex(5))); } else { nMoneyChange = 0; } lpPlayerInfo = playerlist.GetHead(); if(szNow == "空") szNow.Empty(); POSITION pos = equiprentlist.GetHeadPosition(); while(pos != NULL) { lpEquipInfo = equiprentlist.GetNext(pos); if( (lpEquipInfo->m_sCNAME == szName)&&(lpEquipInfo->m_sNOW == szNow ) ) { lpPlayerInfo->m_iMONEY += nMoneyChange; m_MainScreen.bDrawPlayInfo[0] = TRUE; m_MainScreen.bDrawPlayInfo[1] = TRUE; lpEquipInfo->m_iCOUNT += nCount; if(m_MainScreen.mFirstFD.nShowState == SHOWEQUIP){ m_MainScreen.mFirstFD.bReDraw[0] = TRUE; m_MainScreen.mFirstFD.bReDraw[1] = TRUE; m_MainScreen.mFirstFD.ResetCount(); } return; } } lpPlayerInfo->m_iMONEY += nMoneyChange; m_MainScreen.bDrawPlayInfo[0] = TRUE; m_MainScreen.bDrawPlayInfo[1] = TRUE; if(szName != "temp"){ lpEquipInfo = new CEquipInfo; lpEquipInfo->m_sCNAME = szName; lpEquipInfo->m_sNOW = szNow; lpEquipInfo->m_iCOUNT = nCount; lpEquipInfo->m_sUNIT = szUnit; equiprentlist.AddTail(lpEquipInfo); if(m_MainScreen.mFirstFD.nShowState == SHOWEQUIP){ m_MainScreen.mFirstFD.bReDraw[0] = TRUE; m_MainScreen.mFirstFD.bReDraw[1] = TRUE; m_MainScreen.mFirstFD.ResetCount(); } } } void SrvCmdSubRentGoods(CStringList * strComList) { CEquipInfo * lpEquipInfo; CPlayerInfo * lpPlayerInfo; CString szName, szNow; int nCount, nMoneyChange; if (strComList->GetCount()<5) { return; } szName = strComList->GetAt(strComList->FindIndex(1)); szNow = strComList->GetAt(strComList->FindIndex(2)); nCount = atoi((char *)(LPCTSTR)strComList->GetAt(strComList->FindIndex(3))); if (strComList->GetCount()>=6) { nMoneyChange = atoi((char *)(LPCTSTR)strComList->GetAt(strComList->FindIndex(5))); } else { nMoneyChange = 0; } lpPlayerInfo = playerlist.GetHead(); if(szNow == "空") szNow.Empty(); POSITION pos = equiprentlist.GetHeadPosition(); while(pos != NULL){ lpEquipInfo = equiprentlist.GetNext(pos); if( (lpEquipInfo->m_sCNAME == szName)&&(lpEquipInfo->m_sNOW == szNow ) ){ lpPlayerInfo->m_iMONEY += nMoneyChange; m_MainScreen.bDrawPlayInfo[0] = TRUE; m_MainScreen.bDrawPlayInfo[1] = TRUE; lpEquipInfo->m_iCOUNT -= nCount; if(lpEquipInfo->m_iCOUNT <= 0){ if(pos != NULL) equiprentlist.GetPrev(pos); else pos = equiprentlist.GetTailPosition(); equiprentlist.RemoveAt(pos); } if(m_MainScreen.mFirstFD.nShowState == SHOWEQUIP){ m_MainScreen.mFirstFD.bReDraw[0] = TRUE; m_MainScreen.mFirstFD.bReDraw[1] = TRUE; m_MainScreen.mFirstFD.ResetCount(); } return; } } ASSERT(FALSE); TRACE("物品名稱或狀態錯誤"); }