www.pudn.com > 3D_OnlineGame_Humen.rar > CmdBuy.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 "MapInfo.h" 
#include "NpcInfo.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 CListequiplist; 
extern CListequiprentlist; 
extern CList itemlist; 
extern CRITICAL_SECTION csAnimation; 
extern CList  animationlist; 
extern CRITICAL_SECTION csMaplist; 
extern CList  maplist; 
extern CList  npclist; 
extern char g_tszPathName[256]; 
 
void CmdListProc() 
{ 
	CPlayerInfo *lpPlayerInfo; 
	CMapInfo *lpMapInfo; 
	CString strtmp; 
	int i,j; 
	BOOL bFindInMap = FALSE; 
	BOOL bAcceptBuy = FALSE; 
	lpPlayerInfo = playerlist.GetHead(); 
	if(lpPlayerInfo->m_sPERSONA.IsEmpty()){ 
		strtmp = szYellowLow; 
		strtmp += CString("你需要走到對象的面前才可以下達這個指令"); 
		AddSelfMsg((char*)(LPCSTR)strtmp); 
		return; 
	} 
	EnterCriticalSection(&csMaplist); 
	j = maplist.GetCount(); 
	for(i=0;im_sPERSONA,lpMapInfo->m_sENAME)) 
		{ 
			bFindInMap = TRUE; 
			break; 
		} 
	} 
	LeaveCriticalSection(&csMaplist); 
	if(!bFindInMap){ 
		strtmp = szYellowLow; 
		strtmp += CString("奇怪的錯誤,你面對的對象不在這個地圖裡面"); 
		AddSelfMsg((char*)(LPCSTR)strtmp); 
		return; 
	} 
} 
 
void CmdBuyProc(char * szItem) 
{ 
	CPlayerInfo *lpPlayerInfo; 
	CString strtmp; 
	if(equiplist.GetCount() > 30){ 
		strtmp = szRedLow; 
		strtmp += "你已經裝備不了任何東西了"; 
		AddSelfMsg(strtmp); 
		return; 
	} 
	lpPlayerInfo = playerlist.GetHead(); 
	if(lpPlayerInfo->m_sPERSONA.IsEmpty()){ 
		strtmp = szYellowLow; 
		strtmp += CString("你需要走到對象的面前才可以下達這個指令"); 
		AddSelfMsg((char*)(LPCSTR)strtmp); 
		return; 
	} 
	if(equiplist.GetCount() >=30 ){ 
		strtmp = szYellowLow; 
		strtmp += CString("你已經有30個物品,不能在多了"); 
		AddSelfMsg((char*)(LPCSTR)strtmp); 
		return; 
	} 
	strtmp = CString(SZBUY) + (" ") + lpPlayerInfo->m_sPERSONA + (" ") + szItem; 
	Send(hLCltForRSvrSock,strtmp); 
} 
 
void SrvBuyProc(char *szItem,char *szFlag) 
{ 
	CString strtmp; 
	CPlayerInfo *lpPlayerInfo; 
	CGenItemData * lpGenItemData; 
	lpPlayerInfo = playerlist.GetHead(); 
	if(!stricmp(szFlag,"ITEMF"))//ITEMF,東西不存在 
	{ 
		strtmp = szRedLow; 
		strtmp += (CString)szItem + ("這個東西不存在"); 
		AddSelfMsg(strtmp); 
	} 
	else if(!stricmp(szFlag,"ITEMN"))//ITEMN,NPC不賣這個東西 
	{ 
		strtmp = szRedLow; 
		strtmp += lpPlayerInfo->m_sPERSONA + "不賣"; 
		strtmp += (CString)szItem + ("這個東西"); 
		AddSelfMsg(strtmp); 
	} 
	else if(!stricmp(szFlag,"NPCN"))//NPCN,NPC不存在 
	{ 
		strtmp = szRedLow; 
		strtmp += lpPlayerInfo->m_sPERSONA + "系統不存在,不是你杜撰的吧!"; 
		AddSelfMsg(strtmp); 
	} 
	else if(!stricmp(szFlag,"NPCF"))//NPCF,NPC不接受這個命令 
	{ 
		strtmp = szRedLow; 
		strtmp += lpPlayerInfo->m_sPERSONA + "沒有東西可以賣給你"; 
		AddSelfMsg(strtmp); 
	} 
	else if(!stricmp(szFlag,"FULL"))//FULL,物品已經滿了 
	{ 
		strtmp = szRedLow; 
		strtmp += "你已經裝備不了任何東西了"; 
		AddSelfMsg(strtmp); 
	} 
	else if(!stricmp(szFlag,"MEMLOW"))//MEMLOW,服務器內存不夠 
	{ 
		strtmp = szRedLow; 
		strtmp += "伺服器主機的記憶體不足,請與客服連繫"; 
		AddSelfMsg(strtmp); 
	} 
	else if(!stricmp(szFlag,"ML")){ 
		strtmp = szRedLow; 
		strtmp += "你的錢不夠"; 
		AddSelfMsg(strtmp); 
	} 
	else if(!stricmp(szFlag,"T")){ 
		CFile file; 
		strtmp = CString(g_tszPathName) + "\\muddata\\iteminfo\\geniteminfo.dat"; 
		if(!file.Open(strtmp,CFile::modeRead)){ 
			strtmp = szRedLow; 
			strtmp += "打物品索引不開文件"; 
			AddSelfMsg(strtmp); 
			PostMessage(myglobs.hWndMain,WM_CLOSE,0,0); 
		} 
		lpGenItemData = new CGenItemData; 
		if(!lpGenItemData){ 
			strtmp = szRedLow; 
			strtmp += "內存不夠"; 
			AddSelfMsg(strtmp); 
			PostMessage(myglobs.hWndMain,WM_CLOSE,0,0); 
		} 
		while(file.Read(lpGenItemData,sizeof(CGenItemData))) 
		{ 
			if(!stricmp(lpGenItemData->itemCname,szItem)) 
			{ 
				break; 
			} 
		} 
		file.Close(); 
		strtmp = CString("muddata\\") + lpGenItemData->itemfilename; 
		delete lpGenItemData; 
		if(!GetItemInfo(strtmp)) 
		{ 
			strtmp = szRedLow; 
			strtmp += CString(szItem) + "文件丟失,無法繼續"; 
			AddSelfMsg(strtmp); 
			PostMessage(myglobs.hWndMain,WM_CLOSE,0,0); 
		} 
	} 
}