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 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); } } }