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