www.pudn.com > XmudOSr.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); 
		} 
	} 
}