⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 npctxtanalysis.cpp

📁 好游戏的客户端原码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
							break;
							case '7':		// <7> 老版快 臂磊祸 Navy
							{
								cColor = RGB(0,0,128);
							}
							break;
							case '8':		// <8> 老版快 臂磊祸 Silver
							{
								cColor = RGB(192,192,192);
							}
							break;
							case '9':		// <9> 老版快 臂磊祸 Purple
							{
								cColor = RGB(128,0,128);
							}
							break;
							case 'A':		// <A> 老版快 臂磊祸 Lime
							{
								cColor = RGB(0,255,0);
							}
							break;
							case 'B':		// <B> 老版快 臂磊祸 Blue
							{
								cColor = RGB(0,0,255);
							}
							break;
							case 'C':		// <C> 老版快 臂磊祸 White
							{
								cColor = RGB(255,255,255);
							}
							break;
							case 'D':		// <D> 老版快 臂磊祸 Fuchsia
							{
								cColor = RGB(255,0,255);
							}
							break;
							case 'E':		// <E> 老版快 臂磊祸 Aqua
							{
								cColor = RGB(0,255,255);
							}
							break;
							case 'F':		// <F> 老版快 臂磊祸 Yellow
							{
								cColor = RGB(255,255,0);
							}
							break;
							case 'X':		// <Z> 老版快 臂磊祸 Default
							{
								cColor = RGB(1,1,1);
							}
							break;
						} // endswitch
						szTemp = NULL;
						szTemp = GetValidStr(CmdStr,CmdStr,'/');
						ZeroMemory(CmdParamStr,MAX_BUFFER_SIZE);
						if(szTemp[0]!=NULL)
							strncpy(CmdParamStr,szTemp,strlen(szTemp)-1);
						szTemp = NULL;

					}  // endif
					else
					{
						// 辆搬 <> 啊 乐栏搁 辆丰
					}  // endifelse

					if(strlen(Fdata)!=0)		// '<' 傈俊 乐绰 Text甫 老馆 Text俊 眠啊
					{	// 老馆 Text 眠啊
						CMText* pxTmpTxt;
						pxTmpTxt = new CMText;
						pxTmpTxt->pText = new CHAR[strlen(Fdata)+1];
						// Text 汲沥
						pxTmpTxt->bDrawCenter = DrawCenter;
						pxTmpTxt->fColor =	cColor!=RGB(1,1,1) ? cColor : DEFAULT_TXT_COLOR;		// 祸篮 Tag俊 狼秦 搬沥秦 林绢具窃.
						pxTmpTxt->nLine = nLineCount;
						pxTmpTxt->nPosx = nPosX;
						strcpy(pxTmpTxt->pText,Fdata);
						m_pxpTxt->AddNode(pxTmpTxt);
						tSize = m_pxGWND->GetStrLength(NULL,NULL,"%s",Fdata);
						nPosX=nPosX+tSize.cx;
						delete[] Fdata;
						Fdata = NULL;
						cColor = RGB(1,1,1);
					} // endif

					if(strlen(CmdParamStr)!=0)//CmdStr)!=0)
					{
						RECT tRect;
						tRect.top =0;
						tRect.left = nPosX;

						tSize = m_pxGWND->GetStrLength(NULL,NULL,"%s",CmdStr);
						tRect.right = tSize.cx;					
						tRect.bottom = tSize.cy;

						// Text 滚瓢 积己
						m_pxBtn->AddButton(CmdStr,tRect,nLineCount,CmdParamStr,(cColor!=RGB(1,1,1) ? cColor : DEFAULT_BTN_COLOR),DEFAULT_BTN_CLICK_COLOR);

						nPosX=nPosX+tSize.cx;

					}	// Text Button  // endif
					if(Fdata!=NULL)
					{
						delete[] Fdata;
						Fdata = NULL;
					}
				} // end while
				// '>'缔何盒 趣篮 '<','>' 绝绰 扁成 Text老 版快
				if(strlen(szStr)!=0)
				{
					do
					{
						// Line 阑 唱穿绊 弊 搬苞甫 Text List 俊 持绰促.
						CHAR  *szTemp1=NULL,*szTemp2=NULL;
						szTemp1 = new CHAR[MAX_BUFFER_SIZE];
						ZeroMemory(szTemp1,MAX_BUFFER_SIZE);

						// Line Divider
						szTemp2 =  GetValidStr(szStr,szTemp1,LINE_DIVIDER);	
						strcpy(szStr,szTemp2);
						
						// Text 积己
						CMText* pxTmpTxt;
						pxTmpTxt = new CMText;
						pxTmpTxt->pText = new CHAR[strlen(szTemp1)+1];

						// Text 汲沥
						pxTmpTxt->bDrawCenter = DrawCenter;
						pxTmpTxt->fColor =	cColor!=RGB(1,1,1) ? cColor : DEFAULT_TXT_COLOR;			// 烙矫 Tag俊 狼窍咯 祸函券
						pxTmpTxt->nLine = nLineCount;
						pxTmpTxt->nPosx = nPosX;
						strcpy(pxTmpTxt->pText,szTemp1);
						m_pxpTxt->AddNode(pxTmpTxt);

						tSize = m_pxGWND->GetStrLength(NULL,NULL,"%s",szTemp1);
						nPosX=nPosX+tSize.cx;

						delete[] szTemp1;
					}while(strlen(szStr)!=0);
					// Draw Normal Text
				} // endif
			}	// endif
			// Line Feed
			nLineCount ++;
			nPosX = 20;		//矫累篮 20 pixel 何磐
			pxpTxt->MoveNextNode();
		} // end while
		delete[] CmdParamStr;
		delete[] CmdStr;
		delete[] szStr;
		m_bReady = TRUE;
	} // endif
	else
	{
		m_bReady = FALSE;
	} // end ifelse
}


void CNPCTxtAnalysis::AnalySisText(CHAR* Msg)
{
	BOOL	DrawCenter = FALSE;
	CHAR*	szTemp;
	CHAR*	CmdStr;
	CHAR*	CmdParamStr;
	CHAR*	szStr;

	INT	nPosX =0;
	INT nLineCount = 0;
	COLORREF	cColor = 0;

	SIZE	tSize;

	if(m_bInited)
	{

		// Init Buffers
		CmdParamStr	=	new CHAR[MAX_BUFFER_SIZE];
		CmdStr		=	new CHAR[MAX_BUFFER_SIZE];
		szStr		=	new CHAR[MAX_BUFFER_SIZE];


		ZeroMemory(CmdParamStr,MAX_BUFFER_SIZE);
		ZeroMemory(CmdStr,MAX_BUFFER_SIZE);
		ZeroMemory(szStr,MAX_BUFFER_SIZE);


		while(true)
		{
			if(strlen(Msg)==0) break;

			szTemp =  GetValidStr(Msg,szStr,LINE_DIVIDER);				// Line Divider
			strcpy(Msg,szTemp);

			if(strlen(szStr)!=0)
			{

				while((FindChr(szStr,'<')>0)&&(FindChr(szStr,'>')>0) && (strlen(szStr)!=0))
				{
					CHAR*	Fdata;
					Fdata	=	new CHAR[MAX_BUFFER_SIZE];
					ZeroMemory(Fdata,MAX_BUFFER_SIZE);
					// <>Tag 盒府 Text Button 积己
					if((szStr[0])!='<')
					{
						szTemp =  GetValidStr(szStr,Fdata,'<');
						strcpy(szStr,"<");
						strcat(szStr,szTemp);				
					}

					// <>救俊 乐绰 郴侩 CmdStr肺
					szTemp = ArrestString(szStr,'<','>',CmdStr);
					strcpy(szStr,szTemp);
					szTemp = NULL;
					
					if(strlen(CmdStr)!=0)
					{
						switch(UpperCase(CmdStr[0]))
						{
							case '0':		// <0> 老版快 臂磊祸 BLACK
							{
								cColor = RGB(0,0,0);
								continue;
							}
							break;
							case '1':		// <1> 老版快 臂磊祸 RED
							{
								cColor = RGB(255,0,0);
								continue;
							}
							break;
							case '2':		// <2> 老版快 臂磊祸 GREEN
							{
								cColor = RGB(0,128,0);
								continue;
							}
							break;
							case '3':		// <3> 老版快 臂磊祸 Olive
							{
								cColor = RGB(128,128,0);
								continue;
							}
							break;
							case '4':		// <4> 老版快 臂磊祸 GRAY
							{
								cColor = RGB(128,128,128);
								continue;
							}
							break;
							case '5':		// <5> 老版快 臂磊祸 Maroon
							{
								cColor = RGB(128,0,0);
								continue;
							}
							break;
							case '6':		// <6> 老版快 臂磊祸 Teal
							{
								cColor = RGB(0,128,128);
								continue;
							}
							break;
							case '7':		// <7> 老版快 臂磊祸 Navy
							{
								cColor = RGB(0,0,128);
								continue;
							}
							break;
							case '8':		// <8> 老版快 臂磊祸 Silver
							{
								cColor = RGB(192,192,192);
								continue;
							}
							break;
							case '9':		// <9> 老版快 臂磊祸 Purple
							{
								cColor = RGB(128,0,128);
								continue;
							}
							break;
							case 'A':		// <A> 老版快 臂磊祸 Lime
							{
								cColor = RGB(0,255,0);
								continue;
							}
							break;
							case 'B':		// <B> 老版快 臂磊祸 Blue
							{
								cColor = RGB(0,0,255);
								continue;
							}
							break;
							case 'C':		// <C> 老版快 臂磊祸 White
							{
								cColor = RGB(255,255,255);
								continue;
							}
							break;
							case 'D':		// <D> 老版快 臂磊祸 Fuchsia
							{
								cColor = RGB(255,0,255);
								continue;
							}
							break;
							case 'E':		// <E> 老版快 臂磊祸 Aqua
							{
								cColor = RGB(0,255,255);
								continue;
							}
							break;
							case 'F':		// <F> 老版快 臂磊祸 Yellow
							{
								cColor = RGB(255,255,0);
								continue;
							}
							break;
							case 'X':		// <Z> 老版快 臂磊祸 Default
							{

								cColor = RGB(1,1,1);
								continue;
							}
							break;
						}

/*						szTemp = new CHAR[2];
						strncpy(szTemp,CmdStr,2);
						szTemp = UpperCase(szTemp);
						if(strncmp(szTemp,"/C",2)==0)		// </C> 老 版快 啊款单 嘛扁 场
						{
							DrawCenter = FALSE;
							delete[] szTemp;
							szTemp = NULL;
							continue;
						}
						delete[] szTemp;
*/						szTemp = NULL;
						szTemp = GetValidStr(CmdStr,CmdStr,'/');
						strcpy(CmdParamStr,szTemp);
						szTemp = NULL;

					}
					else
					{
						// 辆搬 <> 啊 乐栏搁 辆丰
					}

					if(strlen(Fdata)!=0)		// '<' 傈俊 乐绰 Text甫 老馆 Text俊 眠啊
					{	// 老馆 Text 眠啊
						CMText* pxTmpTxt;
						pxTmpTxt = new CMText;
						pxTmpTxt->pText = new CHAR[strlen(Fdata)+1];
						// Text 汲沥
						pxTmpTxt->bDrawCenter = DrawCenter;
						pxTmpTxt->fColor =	cColor!=RGB(1,1,1) ? cColor : DEFAULT_TXT_COLOR;		// 祸篮 Tag俊 狼秦 搬沥秦 林绢具窃.
						pxTmpTxt->nLine = nLineCount;
						pxTmpTxt->nPosx = nPosX;
						strcpy(pxTmpTxt->pText,Fdata);

						m_pxpTxt->AddNode(pxTmpTxt);
						tSize = m_pxGWND->GetStrLength(NULL,NULL,"%s",Fdata);
						nPosX=nPosX+tSize.cx;
					}

					if(strlen(CmdStr)!=0)
					{
						RECT tRect;
						tRect.top =0;
						tRect.left = nPosX;

						tSize = m_pxGWND->GetStrLength(NULL,NULL,"%s",CmdStr);
						tRect.right = tSize.cx;					
						tRect.bottom = tSize.cy;

						// Text 滚瓢 积己
						m_pxBtn->AddButton(CmdStr,tRect,nLineCount,CmdParamStr,(cColor!=RGB(1,1,1) ? cColor : DEFAULT_BTN_COLOR),DEFAULT_BTN_CLICK_COLOR);

						nPosX=nPosX+tSize.cx;

					}	// Text Button
				}
				// '>'缔何盒 趣篮 '<','>' 绝绰 扁成 Text老 版快
				if(strlen(szStr)!=0)
				{
					do
					{
						// Line 阑 唱穿绊 弊 搬苞甫 Text List 俊 持绰促.
						CHAR  *szTemp1=NULL,*szTemp2=NULL;
						szTemp1 = new CHAR[MAX_BUFFER_SIZE];
						ZeroMemory(szTemp1,MAX_BUFFER_SIZE);

						// Line Divider
						szTemp2 =  GetValidStr(szStr,szTemp1,LINE_DIVIDER);	
						strcpy(szStr,szTemp2);
						
						// Text 积己
						CMText* pxTmpTxt;
						pxTmpTxt = new CMText;
						pxTmpTxt->pText = new CHAR[strlen(szTemp1)+1];

						// Text 汲沥
						pxTmpTxt->bDrawCenter = DrawCenter;
						pxTmpTxt->fColor =	cColor!=RGB(1,1,1) ? cColor : DEFAULT_TXT_COLOR;			// 烙矫 Tag俊 狼窍咯 祸函券
						pxTmpTxt->nLine = nLineCount;
						pxTmpTxt->nPosx = nPosX;
						strcpy(pxTmpTxt->pText,szTemp1);
						m_pxpTxt->AddNode(pxTmpTxt);

						tSize = m_pxGWND->GetStrLength(NULL,NULL,"%s",szTemp1);
						nPosX=nPosX+tSize.cx;

						delete[] szTemp1;

						nPosX = 20;		// 矫累篮 20 pixel 何磐
						nLineCount ++;	// Line Feed
					}while(strlen(szStr)!=0);
					// Draw Normal Text
				}
			}
			// Line Feed
			nLineCount ++;
			nPosX = 20;		//矫累篮 20 pixel 何磐
		}
		delete CmdParamStr;
		delete CmdStr;
		delete szStr;
		m_bReady = TRUE;
	}
	else
	{
		m_bReady = FALSE;
	}
}

BOOL CNPCTxtAnalysis::IsReadyToDisplay(VOID)
{
	return m_bReady;
}

BOOL CNPCTxtAnalysis::IsInitialized(VOID)
{
	return m_bInited;
}

// 侩扁
BOOL CNPCTxtAnalysis::StringDivide(INT nDivideWidth, INT& nDividedLine, CHAR* szSrc,CDLList<CHAR*>* m_pxpStr)
{
	CHAR szTmpCheck[MAX_PATH];
	CHAR szResult[MAX_PATH];
	
	nDividedLine = 1;

	INT nStartLen	= 0;
	INT nEndLen		= 0;
	INT nResultLen	= 0;
	INT nWordCheck	= 0;

	if ( szSrc[0] != NULL )
	{
		ZeroMemory(szResult,MAX_PATH);

		for ( INT nCnt = 0; nCnt < (INT)strlen(szSrc); nCnt++)
		{
			ZeroMemory(szTmpCheck, MAX_PATH);
			nEndLen = nCnt+1;

			// 泅犁何盒鳖瘤狼 巩磊凯阑 佬绰促.
			memcpy(&szTmpCheck, &szSrc[nStartLen], nEndLen-nStartLen);
			SIZE sizeLen;
			sizeLen = m_pxGWND->GetStrLength(NULL,NULL, szTmpCheck);

			// 泅犁鳖瘤 佬绢柯 何盒捞 倾侩承捞甫 逞绢脊阑锭.
			if ( sizeLen.cx > nDivideWidth )
			{
				// 泅犁 2官捞飘 巩磊扼搁. 
				if ( szSrc[nEndLen-1] < 0 )
				{
					// 泅犁 菊俊巩磊啊 2官捞飘 巩磊啊 酒聪扼搁
					if ( !(nWordCheck%2) )
					{
						nStartLen += strlen(szTmpCheck)-1;
						nCnt--;
						CHAR* pszNewLine;
						pszNewLine = new CHAR[nResultLen+1];
						memcpy(pszNewLine,szResult,nResultLen);
						pszNewLine[nResultLen]=NULL;
						m_pxpStr->AddNode(pszNewLine);
						nResultLen = 0;
						nDividedLine++;
					}
					else
					{
						nStartLen += strlen(szTmpCheck)-2;
						nCnt -= 2;
						CHAR* pszNewLine;
						pszNewLine = new CHAR[nResultLen];
						memcpy(pszNewLine,szResult,nResultLen-1);
						pszNewLine[nResultLen-1]=NULL;
						m_pxpStr->AddNode(pszNewLine);
						nResultLen = 0;
						nDividedLine++;
						nWordCheck--;
					}
				}
				// 1官捞飘 巩磊. 
				// 泅犁焊促 茄官捞飘菊何盒鳖瘤父 绊妨秦林搁 等促.
				else
				{
					nStartLen += strlen(szTmpCheck)-1;
					nCnt--;
					CHAR* pszNewLine;
					pszNewLine = new CHAR[nResultLen+1];
					memcpy(pszNewLine,szResult,nResultLen);
					pszNewLine[nResultLen]=NULL;
					m_pxpStr->AddNode(pszNewLine);
					nResultLen=0;
					nDividedLine++;
				}
			}
			else if(szSrc[nEndLen-1]=='\n')	// 碍力俺青     \n栏肺窍搁  Error ????
			{
				nStartLen += strlen(szTmpCheck)-1;
				CHAR* pszNewLine;
				pszNewLine = new CHAR[nResultLen+1];
				memcpy(pszNewLine,szResult,nResultLen);
				pszNewLine[nResultLen]=NULL;
				m_pxpStr->AddNode(pszNewLine);
				nResultLen=0;
				nDividedLine++;
			}
			else
			{
				if ( szSrc[nEndLen-1] < 0 )
					nWordCheck++;

				szResult[nResultLen] = szSrc[nEndLen-1];
				nResultLen++;
			}
		}
		if(nResultLen!=0)
		{
			CHAR* pszNewLine;
			pszNewLine = new CHAR[nResultLen+1];
			memcpy(pszNewLine,szResult,nResultLen);
			pszNewLine[nResultLen]=NULL;
			m_pxpStr->AddNode(pszNewLine);
			nDividedLine++;
			nResultLen=0;
		}
		return TRUE;
	}
	return FALSE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -