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 CList  animationlist; 
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 CListplayerlist; 
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;im_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;im_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); 
}