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 CList equiplist; extern CList equiprentlist; 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;i m_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); } } }