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 CListequiplist; 
extern CListequiprentlist; 
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 ; im_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;im_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;im_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("物品名稱或狀態錯誤"); 
}