www.pudn.com > 3D_OnlineGame_Humen.rar > CommandCheck.cpp
#include "stdafx.h" #include "XMudClient.h" #include "CommandCheck.h" #include "MenuCreateNew.h" #include "MenuLoadOldPlay.h" #include "CommunicateMsg.h" #include "midi.h" #include "faceplate.h" #include "CmdFunction.h" #include "InitInternet.h" #include "ChessWnd.h" #include "MainScreen.h" #include "3DFunction.h" #include "D3DRMScreen.h" #include "MyMusic.h" extern LPDIRECT3DRMFRAME3 g_lpplayer; extern LPDIRECT3DRMFRAME3 g_sFrame; extern D3DVECTOR g_PlayAndCameraPos; extern CListanimationlist; extern PathInfo info; extern int g_playerState; extern LPDIRECT3DRM3 g_lpD3DRM; extern rmfullglobals myglobs; extern int g_nGameState; extern CMenuCreateNew m_MenuCreateNew; extern CMenuLoadOldPlay m_MenuLoadOldPlay; extern SOCKET hLCltForRSvrSock; extern BOOL g_bGetInputMessage; extern CList playerlist; extern D3DVECTOR g_lightgammer; extern LPDIRECT3DRMLIGHT g_parallel; extern CMainScreen m_MainScreen; extern int playershout = 0; CStringList g_strlistChannel; CStringList g_strlistSelfMsg; CStringList g_strlistMesssage; CStringList g_strlistPlayerOnline; CStringList g_strlistOnline; CStringList g_equiprentlist; CStringList ListCom; TOldMsg m_OldMsg; extern long GetParameterLength(CString MyString); extern BOOL g_Clear3DMessage[2]; extern BOOL bSelectDefault; extern void SaveConfigFile(void); void SendShowMsg(char *ps) { long ExLength=0; CString szRecMess, szTmp, szName; szRecMess = ps; szTmp = szName = szRecMess.Left(5); if(!stricmp(szTmp,szNewColor)) { ExLength = GetParameterLength(szRecMess); szTmp = szName = szRecMess.Left(5+ExLength); } for(int i=5+ExLength;i = 79){ if(g_strlistMesssage.GetCount() > 17){ g_strlistMesssage.RemoveHead(); } g_strlistMesssage.AddTail(szTmp); szTmp = szName; } } if(szTmp.GetLength() > 5+ExLength){ if(g_strlistMesssage.GetCount() > 17){ g_strlistMesssage.RemoveHead(); } g_strlistMesssage.AddTail(szTmp); szTmp = szName; } g_Clear3DMessage[0]=TRUE; g_Clear3DMessage[1]=TRUE; } void AddSelfMsg(CString ps) { CString szRecMess, szTmp, szName; int Scroll = 0; szRecMess = ps; szTmp = szName = szRecMess.Left(5); for(int i=5;i = 79) { if(g_strlistSelfMsg.GetCount() > 99) { g_strlistSelfMsg.RemoveHead(); } g_strlistSelfMsg.AddTail(szTmp); szTmp = szName; Scroll++; } } if(szTmp.GetLength() > 5) { if(g_strlistSelfMsg.GetCount() > 99) { g_strlistSelfMsg.RemoveHead(); } g_strlistSelfMsg.AddTail(szTmp); szTmp = szName; Scroll++; } m_MainScreen.mTalkFD.bReDraw[0]=TRUE; m_MainScreen.mTalkFD.bReDraw[1]=TRUE; m_MainScreen.DisplaySelfMessage(TRUE); } void GetCommandMsg(CString strMsg) { if(strMsg.IsEmpty()) return; switch(g_nGameState){ case GAME_CREATEPLAYER: if(g_bGetInputMessage){ if(strMsg.IsEmpty()){ g_bGetInputMessage = FALSE; return; } m_MenuCreateNew.CreateNewInputMsg(strMsg); } break; default: break; } return; } void InitCommandList() { ListCom.AddTail("JoinChannel"); ListCom.AddTail("Channel"); ListCom.AddTail("Talk"); ListCom.AddTail("Shout"); ListCom.AddTail("Tell"); ListCom.AddTail("Who-l"); ListCom.AddTail("Who"); ListCom.AddTail("LeaveChannel"); ListCom.AddTail("DefendTell"); ListCom.AddTail("DefendDel"); ListCom.AddTail("GetOut"); ListCom.AddTail("Ask"); //ListCom.AddTail("Look"); ListCom.AddTail("Apprentice"); ListCom.AddTail("Skill"); ListCom.AddTail("Fight"); ListCom.AddTail("Kill"); ListCom.AddTail("DaZuo"); ListCom.AddTail("TuNa"); ListCom.AddTail("YunGong"); ListCom.AddTail("Mapping"); ListCom.AddTail("Escape"); ListCom.AddTail("Restart"); ListCom.AddTail("Use"); ListCom.AddTail("Look"); ListCom.AddTail("Give"); ListCom.AddTail("Drop"); ListCom.AddTail("Arm"); ListCom.AddTail("Unarm"); ListCom.AddTail("Practice"); ListCom.AddTail("JoinTeam"); ListCom.AddTail("LeaveTeam"); ListCom.AddTail("Who-t"); ListCom.AddTail("Format"); ListCom.AddTail("Unformat"); ListCom.AddTail("Assign"); ListCom.AddTail("Cancel"); ListCom.AddTail("NewLeader"); ListCom.AddTail("NewFamily"); ListCom.AddTail("NewNPC"); ListCom.AddTail("SetSkill"); ListCom.AddTail("Exit"); ListCom.AddTail("MusicOff"); ListCom.AddTail("MusicOn"); ListCom.AddTail("+"); ListCom.AddTail("-"); ListCom.AddTail("SwitchPort"); ListCom.AddTail("AcceptFight"); ListCom.AddTail("RejectFight"); ListCom.AddTail("Save"); ListCom.AddTail("Help"); ListCom.AddTail("Rent"); } void CheckInputCom(char * szSendMsg) { CComApprentice m_ComApprentice; CPlayerInfo *lpPlayerInfo; CChessWnd m_ChessWnd; lpPlayerInfo = playerlist.GetHead(); CStringList strls; CString parm,strtmp; CString msg; char *ps; int i = 0,j; msg=(LPSTR)DONT_KNOW; parm=CString(" \n\t\r"); ps=strtok(szSendMsg,(const char*)parm); while (ps) { strls.AddTail(ps); ps=strtok(NULL,(const char*)parm); } if(strls.GetCount() < 1) return; strtmp=strls.GetHead(); if(strtmp[0] == ':') { if( (GetTickCount() - myglobs.nWaitNext) > 1000 ) { POSITION pos; CMainScreen::TEmote * lpEmote; strtmp = strtmp.Right(strtmp.GetLength()-1); pos = m_MainScreen.listAllEmote.GetHeadPosition(); while (pos != NULL) { lpEmote = m_MainScreen.listAllEmote.GetNext(pos); if(lpEmote->szEmote == strtmp) { pos = m_MainScreen.listAllEmote.GetHeadPosition(); break; } } if(pos != NULL) { bool bErr = false; CString szName; szName.Empty(); if(strls.GetCount() == 1) { if(!(lpEmote->nType & EMT_HAVE_NONAME)) bErr = true; }else { szName = strls.GetAt(strls.FindIndex(1)); if(szName == "me") { if(!(lpEmote->nType & EMT_HAVE_SELF)) bErr = true; }else if(!(lpEmote->nType & EMT_HAVE_TARGET)) bErr = true; } if(bErr) { szName = strtmp; strtmp.Format("%s這個emote[%s]不能這樣使用!",szGreenLow,szName); AddSelfMsg(strtmp); }else { strtmp = CString(szEMOTE) + (" ") + lpPlayerInfo->m_sChannel + (" ") + strtmp + (" ") + szName; Send(hLCltForRSvrSock,strtmp); m_OldMsg.szEmote = szName; } }else { msg.Format("%s沒有這個emote命令[%s]!請察看左邊的emote框中的命令。",szGreenLow,strtmp); AddSelfMsg(msg); } myglobs.nWaitNext = GetTickCount(); } return; }else if(!stricmp(strtmp,"Who")) { if(!lpPlayerInfo->m_sChannel.IsEmpty()) { strtmp = szWhoInGame; strtmp += CString(" ") + lpPlayerInfo->m_sChannel; Send(hLCltForRSvrSock,strtmp); }else { strtmp = szGreenLow; strtmp += CString("請先建立或加入一個聊天頻道(使用命令[channel]查看頻道,[joinchannel]建立或加入頻道)"); AddSelfMsg(strtmp); } return; }else if(!stricmp(strtmp,"Tell")) { if( (GetTickCount() - myglobs.nWaitNext) > 1000 ) { j = strls.GetCount(); parm=CString("\t"); strtmp.Empty(); for(i=2;i 1000 ) { if(!lpPlayerInfo->m_sChannel.IsEmpty()) { j = strls.GetCount(); parm=CString("\t"); strtmp.Empty(); for(i=1;i m_sChannel + (" ") + ("[") + lpPlayerInfo->m_sCNAME + ("]說道:") + strtmp; Send(hLCltForRSvrSock,strtmp); } }else { strtmp = szGreenLow; strtmp += CString("請先建立或加入一個聊天頻道(使用命令[channel]查看頻道,[joinchannel]建立或加入頻道)"); AddSelfMsg(strtmp); } myglobs.nWaitNext = GetTickCount(); } return; }else if(!stricmp(strtmp,"Shout")) { if( (GetTickCount() - playershout) > 1000 ) { j = strls.GetCount(); parm=CString("\t"); strtmp.Empty(); for(i=1;i 1) { strtmp = strls.GetAt(strls.FindIndex(1)); if(strtmp == lpPlayerInfo->m_sChannel) { strtmp = szGreenLow; strtmp += CString("你已經在這個頻道裡了"); AddSelfMsg(strtmp); }else { if(strtmp.GetLength()>16) strtmp = strtmp.Left(16); strtmp = CString(SZJOINCHANNEL) + (" ") + strtmp; if (strls.GetCount() > 2) { strtmp += (" ") + strls.GetAt(strls.FindIndex(2)); } Send(hLCltForRSvrSock,strtmp); } } return; }else if( !stricmp(strtmp,"Who-l") ) { Send(hLCltForRSvrSock,szALLWhoInGame); return; }else if(!stricmp(strtmp,"ShowGM")) { Send(hLCltForRSvrSock,szShowGM); return; } else if(!stricmp(strtmp,"LeaveChannel")) { if(lpPlayerInfo->m_sChannel.IsEmpty()) { strtmp = szGreenLow + CString("你沒有加入任何頻道"); AddSelfMsg(strtmp); } else { Send(hLCltForRSvrSock,szExitChannel); lpPlayerInfo->m_sChannel.Empty(); } return; } else if(!stricmp(strtmp,"DefendTell")) { j = strls.GetCount(); parm=CString("\t"); strtmp.Empty(); for(i=1;i m_sChannel + (" "); strtmp += strls.GetAt(strls.FindIndex(i)); } if(!strtmp.IsEmpty()) { GetOutProc(strtmp); }else { strtmp = szGreenLow; strtmp += CString("請在GetOut後面輸入你想要踢的人名"); AddSelfMsg(strtmp); } return; }else if(!stricmp(strtmp,"Ask")) { if(!lpPlayerInfo->m_sPERSONA.IsEmpty() && (lpPlayerInfo->m_iSTATUS == AOS_facesb)) { if(strls.GetCount() > 2) { strtmp.Format("%s %s %s %s",SZASK, lpPlayerInfo->m_sPERSONA, strls.GetAt(strls.FindIndex(1)), strls.GetAt(strls.FindIndex(2))); Send(hLCltForRSvrSock, strtmp); m_OldMsg.szAsk = strls.GetAt(strls.FindIndex(1)); }else if(strls.GetCount() > 1) { strtmp.Format("%s %s %s $NONE$",SZASK, lpPlayerInfo->m_sPERSONA, strls.GetAt(strls.FindIndex(1))); Send(hLCltForRSvrSock, strtmp); m_OldMsg.szAsk = strls.GetAt(strls.FindIndex(1)); }else { strtmp.Format("%s %s $QUERY$ $NONE$",SZASK, lpPlayerInfo->m_sPERSONA); Send(hLCltForRSvrSock, strtmp); } }else { strtmp = szGreenLow; strtmp += CString("你必須走到npc的面前,才能詢問(按滑鼠右鍵點選)"); AddSelfMsg(strtmp); } return; } else if(!stricmp(strtmp,"Look")) { if(!lpPlayerInfo->m_sPERSONA.IsEmpty() && (lpPlayerInfo->m_iSTATUS == AOS_facesb)) { strtmp.Format("%s %s $QUERYNPC$",SZLOOK, lpPlayerInfo->m_sPERSONA); Send(hLCltForRSvrSock, strtmp); }else { if(strls.GetCount() > 1) { strtmp.Format("%s %s $QUERYGOODS$",SZLOOK,strls.GetAt(strls.FindIndex(1))); Send(hLCltForRSvrSock, strtmp); }else { strtmp.Format("%s $NONE$ $QUERYMAP$",SZLOOK); Send(hLCltForRSvrSock, strtmp); } } return; }else if(!stricmp(strtmp,"Rent")) { Send(hLCltForRSvrSock,SZRENTLIST); return; }else if(!stricmp(strtmp,"Apprentice")) { if(!lpPlayerInfo->m_sPERSONA.IsEmpty() && (lpPlayerInfo->m_iSTATUS == AOS_facesb)) { m_ComApprentice.DoApprenticeProc(); }else { strtmp = szGreenLow; strtmp += CString("你必須走到你需要拜師的npc面前(按滑鼠右鍵點選)"); AddSelfMsg(strtmp); } return; }else if(!stricmp(strtmp,"Skill")) { if(!lpPlayerInfo->m_sPERSONA.IsEmpty() && (lpPlayerInfo->m_sPERSONA == lpPlayerInfo->m_sTEACHER) && (lpPlayerInfo->m_iSTATUS == AOS_facesb)) { m_ComApprentice.OpenNpcSkill(); }else { strtmp = szGreenLow; strtmp += CString("你必須走到你的老師面前才能察看師父技能(按滑鼠右鍵點選)"); AddSelfMsg(strtmp); } return; }else if(!stricmp(strtmp,"Learn")) { if(strls.GetCount() < 3) { strtmp = szGreenLow; strtmp += CString("請輸入欲消潛能數!"); AddSelfMsg(strtmp); return; } int aTimes = atoi((char*)(LPCSTR)(strls.GetAt(strls.FindIndex(2)))); if( (GetTickCount() - playershout) < 1000 /*((CPlayerInfo*)pvPlayer)->nWaitNext) > 1000*/ ) { strtmp = szGreenLow; strtmp += CString("請一次輸入欲消潛能數!"); AddSelfMsg(strtmp); playershout = GetTickCount(); return ; } if( aTimes <= 9 ) playershout = GetTickCount(); if(!lpPlayerInfo->m_sPERSONA.IsEmpty() && (lpPlayerInfo->m_sPERSONA == lpPlayerInfo->m_sTEACHER) && (lpPlayerInfo->m_iSTATUS == AOS_facesb)) { if(strls.GetCount() > 2) { int nTimes = atoi((char*)(LPCSTR)(strls.GetAt(strls.FindIndex(2)))); if( (!nTimes) || (nTimes<1) ) { strtmp = szGreenLow; strtmp += CString("請在後面輸入正確的學習次數"); AddSelfMsg(strtmp); }else { m_ComApprentice.LearnNpcSkill( strls.GetAt(strls.FindIndex(1)) , (char*)(LPCSTR)(strls.GetAt(strls.FindIndex(2))) ); m_OldMsg.szLearn = strls.GetAt(strls.FindIndex(1)); } }else if(strls.GetCount() > 1) { strtmp = szGreenLow; strtmp += CString("請在後面輸入你想要學習的次數"); AddSelfMsg(strtmp); }else { strtmp = szGreenLow; strtmp += CString("請在Learn後面輸入你想要學習的技能(中文)及次數"); AddSelfMsg(strtmp); } }else { strtmp = szGreenLow; strtmp += CString("你必須走到你師傅的面前,才能學習技能(按滑鼠右鍵點選)"); AddSelfMsg(strtmp); } return; }else if(!stricmp(strtmp,"Kill")) { if(!lpPlayerInfo->m_sPERSONA.IsEmpty() && (lpPlayerInfo->m_iSTATUS == AOS_facesb)) { lpPlayerInfo->m_nEscapeNow = 0; strtmp.Format("%s %s",SZKILLSB, lpPlayerInfo->m_sPERSONA); Send(hLCltForRSvrSock,strtmp); }else { msg.Format("%s你必須走到某人的面前,才能下Kill的命令(按滑鼠右鍵點選)",szGreenLow); AddSelfMsg(msg); } return; } else if(!stricmp(strtmp,"Fight")) { if(!lpPlayerInfo->m_sPERSONA.IsEmpty() && (lpPlayerInfo->m_iSTATUS == AOS_facesb)) { if(strls.GetCount() >1) { strtmp.Format("%s %s %s",SZFIGHTSB, lpPlayerInfo->m_sPERSONA,strls.GetAt(strls.FindIndex(1))); Send(hLCltForRSvrSock, strtmp); }else { strtmp.Format("%s %s",SZFIGHTSB, lpPlayerInfo->m_sPERSONA); Send(hLCltForRSvrSock, strtmp); } }else { strtmp = szGreenLow; strtmp += CString("你必須叫住其他玩家或NPC,才能下切磋的命令(按滑鼠右鍵點選)"); AddSelfMsg(strtmp); } return; }else if(!stricmp(strtmp,"Mapping")) { if(strls.GetCount() > 2) { m_OldMsg.szMapping= strls.GetAt(strls.FindIndex(1)); m_OldMsg.szMapping2 = strls.GetAt(strls.FindIndex(2)); strtmp = CString(SZMAPPING) + (" ") + m_OldMsg.szMapping + " " + m_OldMsg.szMapping2; Send(hLCltForRSvrSock,strtmp); }else { strtmp = szGreenLow; strtmp += CString("請在Mapping後面輸入你想要把什麼技能準備到什麼技能(如:Mapping 基本輕功 踏雪無痕)"); AddSelfMsg(strtmp); } return; }else if(!stricmp(strtmp,"YunGong")) { if(lpPlayerInfo->m_iSTATUS != AOS_none) { strtmp = szGreenLow; strtmp += CString("你正忙著呢!"); AddSelfMsg(strtmp); return; }else if(lpPlayerInfo->m_iEFFNEILI < 10) { strtmp = szGreenLow; strtmp += CString("你的內力不足"); AddSelfMsg(strtmp); return; }else if(lpPlayerInfo->m_iEFFJINLI < 3) { strtmp = szGreenLow; strtmp += CString("你的精力不足"); AddSelfMsg(strtmp); return; }else if(strls.GetCount() > 1) { m_OldMsg.szYunGong = strls.GetAt(strls.FindIndex(1)); if(atoi((char*)(LPCSTR)m_OldMsg.szYunGong) < 10) { strtmp = szGreenLow; strtmp += CString("運功至少要消耗10點內力"); AddSelfMsg(strtmp); return; } strtmp = CString(SZYUNGONG) + (" ") + m_OldMsg.szYunGong; Send(hLCltForRSvrSock,strtmp); }else { strtmp = szGreenLow; strtmp += CString("請在YunGong後面輸入你要運行多少內力(如:YunGong 10)"); AddSelfMsg(strtmp); } return; }else if(!stricmp(strtmp,"DaZuo")) { if(lpPlayerInfo->m_iSTATUS != AOS_none) { strtmp = szGreenLow; strtmp += CString("你正忙著呢!"); AddSelfMsg(strtmp); return; }else if((lpPlayerInfo->m_iEFFJING < 20) || (lpPlayerInfo->m_iEFFQI < 20)) { strtmp = szGreenLow; strtmp += CString("你現在太累了,無法集中精神"); AddSelfMsg(strtmp); return; }else if(strls.GetCount() > 1) { m_OldMsg.szDaZuo = strls.GetAt(strls.FindIndex(1)); if(atoi((char*)(LPCSTR)m_OldMsg.szDaZuo) >= 20) { strtmp = CString(SZDAZUO) + (" ") + m_OldMsg.szDaZuo; Send(hLCltForRSvrSock,strtmp); } else { strtmp = szGreenLow; strtmp += CString("打坐至少要消耗20點氣"); AddSelfMsg(strtmp); } }else { strtmp = szGreenLow; strtmp += CString("請在DaZuo後面輸入你想要消耗的氣的數量"); AddSelfMsg(strtmp); } return; }else if(!stricmp(strtmp,"TuNa")) { if(lpPlayerInfo->m_iSTATUS != AOS_none) { strtmp = szGreenLow; strtmp += CString("你正忙著呢!"); AddSelfMsg(strtmp); return; }else if((lpPlayerInfo->m_iEFFJING < 20) || (lpPlayerInfo->m_iEFFQI < 20)) { strtmp = szGreenLow; strtmp += CString("你現在太累了,無法集中精神"); AddSelfMsg(strtmp); return; }else if(strls.GetCount() > 1) { m_OldMsg.szTuNa = strls.GetAt(strls.FindIndex(1)); if(atoi((char*)(LPCSTR)m_OldMsg.szTuNa) >= 20) { strtmp = CString(SZTUNA) + (" ") + m_OldMsg.szTuNa; Send(hLCltForRSvrSock,strtmp); } else { strtmp = szGreenLow; strtmp += CString("吐納至少要消耗20點精"); AddSelfMsg(strtmp); } }else { strtmp = szGreenLow; strtmp += CString("請在TuNa後面輸入你想要消耗的精的數量"); AddSelfMsg(strtmp); } return; }else if(!stricmp(strtmp,"Escape")) { if(lpPlayerInfo->m_iSTATUS == AOS_kill) { if(lpPlayerInfo->m_nEscapeNow == 1) return; else lpPlayerInfo->m_nEscapeNow = 1; Send(hLCltForRSvrSock,SZESCAPE); }else { strtmp.Format("%s你並沒有在進行死鬥",szGreenLow); AddSelfMsg(strtmp); } return; }else if(!stricmp(strtmp,"Use")) { if(strls.GetCount() > 2) { CmdUseProc((char *)(LPCSTR)strls.GetAt(strls.FindIndex(1)),(char *)(LPCSTR)strls.GetAt(strls.FindIndex(2))); m_OldMsg.szUse = strls.GetAt(strls.FindIndex(1)); }else if(strls.GetCount() > 1) { CmdUseProc((char *)(LPCSTR)strls.GetAt(strls.FindIndex(1)) ,(char *)(LPCSTR)("1")); m_OldMsg.szUse = strls.GetAt(strls.FindIndex(1)); }else { strtmp = szGreenLow; strtmp += CString("請在Use後面輸入你想要使用的東西(中文)"); AddSelfMsg(strtmp); } return; } if(!stricmp(strtmp,"Arm")) { if(lpPlayerInfo->m_iSTATUS != AOS_none) { strtmp = szGreenLow; strtmp += CString("你正忙著呢!"); AddSelfMsg(strtmp); return; } if(strls.GetCount() > 1) { m_OldMsg.szArm = strls.GetAt(strls.FindIndex(1)); strtmp.Format("%s %s",SZARM, strls.GetAt(strls.FindIndex(1))); Send(hLCltForRSvrSock,strtmp); }else { strtmp = szGreenLow; strtmp += CString("請在Arm後面輸入裝備名稱(中文)"); AddSelfMsg(strtmp); } return; } if(!stricmp(strtmp,"Unarm")) { if(lpPlayerInfo->m_iSTATUS != AOS_none) { strtmp = szGreenLow; strtmp += CString("你正忙著呢!"); AddSelfMsg(strtmp); return; } if(strls.GetCount() > 1) { m_OldMsg.szUnArm = strls.GetAt(strls.FindIndex(1)); strtmp.Format("%s %s",SZUNARM,strls.GetAt(strls.FindIndex(1))); Send(hLCltForRSvrSock,strtmp); }else { strtmp = szGreenLow; strtmp += CString("請在Unarm後面輸入裝備名稱(中文)"); AddSelfMsg(strtmp); } return; }else if(!stricmp(strtmp,"Give")) { if(!lpPlayerInfo->m_sPERSONA.IsEmpty() && (lpPlayerInfo->m_iSTATUS == AOS_facesb)) { if(strls.GetCount() > 2) { strtmp.Format("%s %s %s %s",SZGIVE, lpPlayerInfo->m_sPERSONA, strls.GetAt(strls.FindIndex(1)), strls.GetAt(strls.FindIndex(2))); Send(hLCltForRSvrSock, strtmp); m_OldMsg.szGive = strls.GetAt(strls.FindIndex(1)); m_OldMsg.szGive2 = strls.GetAt(strls.FindIndex(2)); }else if(strls.GetCount() > 1) { strtmp.Format("%s %s %s $NONE$",SZGIVE, lpPlayerInfo->m_sPERSONA, strls.GetAt(strls.FindIndex(1))); Send(hLCltForRSvrSock, strtmp); m_OldMsg.szGive = strls.GetAt(strls.FindIndex(1)); m_OldMsg.szGive2.Empty(); }else { strtmp = szGreenLow; strtmp += CString("請在Give後面輸入給什麼東西,可加數量(Give 物品 數量)"); AddSelfMsg(strtmp); } }else { msg.Format("%s你必須走到某人的面前,才能下Give的命令(按滑鼠右鍵點選)",szGreenLow); AddSelfMsg(msg); } return; }else if(!stricmp(strtmp,"Drop")) { if(lpPlayerInfo->m_iSTATUS != AOS_none) { strtmp = szGreenLow; strtmp += CString("你正忙著呢!"); AddSelfMsg(strtmp); return; }else if(strls.GetCount() > 1) { m_OldMsg.szDrop = strls.GetAt(strls.FindIndex(1)); strtmp.Format("%s %s",SZDROP, strls.GetAt(strls.FindIndex(1))); Send(hLCltForRSvrSock,strtmp); }else { strtmp = szGreenLow; strtmp += CString("請在Drop後面輸入你想要丟棄的東西(中文)"); AddSelfMsg(strtmp); } return; } else if(!stricmp(strtmp,"Practice")) { if(lpPlayerInfo->m_iSTATUS != AOS_none) { strtmp = szGreenLow; strtmp += CString("你正忙著呢!"); AddSelfMsg(strtmp); return; } if(strls.GetCount() > 2) { int nTimes = atoi((char*)(LPCSTR)(strls.GetAt(strls.FindIndex(2)))); if( (!nTimes) || (nTimes<1) ) { strtmp = szGreenLow; strtmp += CString("請在後面輸入正確的練習次數"); AddSelfMsg(strtmp); }else { m_OldMsg.szPractice = strls.GetAt(strls.FindIndex(1)); strtmp.Format("%s %s %s",SZPRACTICE,strls.GetAt(strls.FindIndex(1)),strls.GetAt(strls.FindIndex(2))); Send(hLCltForRSvrSock,strtmp); } }else if(strls.GetCount() > 1) { strtmp = szGreenLow; strtmp += CString("請在武功秘笈後面輸入你想要練習的次數"); AddSelfMsg(strtmp); }else { strtmp = szGreenLow; strtmp += CString("請在Practice後面輸入你想要練習的武功秘笈(中文)及次數"); AddSelfMsg(strtmp); } return; } else if(!stricmp(strtmp,"Save")) { if(myglobs.bSaved) { strtmp = szGreenLow; strtmp += CString("你剛剛才儲存過進度"); AddSelfMsg(strtmp); } else { strtmp = SZSAVE; Send(hLCltForRSvrSock,strtmp); } return; } else if( !stricmp(strtmp ,"Exit") ) { if( lpPlayerInfo->m_iSTATUS != AOS_none ) { if(g_playerState == DEAD) { strtmp.Format("%s請先將人物復活後再退出遊戲",szGreenLow); }else { strtmp.Format("%s你正在忙!",szGreenLow); } AddSelfMsg(strtmp); }else { Send(hLCltForRSvrSock, SZEXITGAME); PostMessage(myglobs.hWndMain,WM_CLOSE,0,0); } return; }else if(!stricmp(strtmp,"Help")) { OpenIE("http://www.waei.net/"); return; }else if( !stricmp(strtmp ,"SwitchPort") ) { bSelectDefault=!bSelectDefault; SwitchMusicPort(); PlayDirectMusic(g_sFileName); SaveConfigFile(); return; }else if(!stricmp(strtmp,"MusicOff")) { m_OldMsg.szMusic = "MusicON"; PauseMidi(); return; }else if(!stricmp(strtmp,"MusicON")) { m_OldMsg.szMusic = "MusicOFF"; ResumeMidi(); return; }else if( !stricmp(strtmp,"Restart") ) { g_nGameState = GAME_WAIT; strtmp = SZRESTART; Send(hLCltForRSvrSock,strtmp); return; }else if(!stricmp(strtmp,"+")) { g_lightgammer.x += 0.2f; g_lightgammer.y += 0.2f; g_lightgammer.z += 0.2f; g_parallel->SetColorRGB( g_lightgammer.x,g_lightgammer.y,g_lightgammer.z); SaveConfigFile(); return; }else if(!stricmp(strtmp,"-")) { g_lightgammer.x -= 0.2f; g_lightgammer.y -= 0.2f; g_lightgammer.z -= 0.2f; g_parallel->SetColorRGB( g_lightgammer.x,g_lightgammer.y,g_lightgammer.z); SaveConfigFile(); return; }else if(!stricmp(strtmp,"AcceptFight")) { if (lpPlayerInfo->m_iPLAYERSTATUS & PS_nofight) { Send(hLCltForRSvrSock,SZACCEPTFIGHT); } else { strtmp.Format("%s你原本就是設定成接受切磋的狀態",szGreenLow); AddSelfMsg(strtmp); } return; }else if(!stricmp(strtmp,"RejectFight")) { if (!(lpPlayerInfo->m_iPLAYERSTATUS & PS_nofight)) { Send(hLCltForRSvrSock,SZREJECTFIGHT); } else { strtmp.Format("%s你原本就是設定成拒絕切磋的狀態",szGreenLow); AddSelfMsg(strtmp); } return; } msg.Format("%s未知的命令[%s].",szGreenLow, strtmp); AddSelfMsg(msg); }