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

📄 chatmanager.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "stdafx.h"

#ifdef _CHEATENABLE_				//KES CHEAT!!!
#include "CheatMsgParser.h"
#endif	//_CHEATENABLE_			//KES CHEAT!!!

#include "MacroManager.h"
#include "ChatManager.h"
#include "Chatdialog.h"
#include "ObjectManager.h"
#include "FriendManager.h"
#include "FilteringTable.h"
#include "PartyManager.h"

#include "./Input/cIMEWnd.h"
#include "cIMEex.h"
#include "./Interface/cResourceDef.h"
#include "./Interface/cEditBox.h"
#include "GMNotifyManager.h"

#include "./Interface/cWindowManager.h"
#include "./Interface/cListDialog.h"
#include "cMsgBox.h"
#include "GuildManager.h"

#ifdef _GMTOOL_
#include "GMToolManager.h"
#include "MainGame.h"
#endif





GLOBALTON(CChatManager)


CChatManager::CChatManager()
{
	ZeroMemory( m_pChatMsg, sizeof( m_pChatMsg ) );
//	ZeroMemory( &m_ChatOption, sizeof( m_ChatOption ) );

	m_bPause		= FALSE;
	m_pChatDialog	= NULL;

	m_strLastName[0] = 0;
	m_NULL	= 0;

	m_dwLastChatTime = 0;
}

CChatManager::~CChatManager()
{
	Release();
}
/*
void CChatManager::LoadUserOption()
{
	if( !LoadOption( "./INI/ChatOption.cto" ) )
	{
		SetDefaultOption();
	}
}

void CChatManager::SaveUserOption()
{
	SaveOption( "./INI/ChatOption.cto" );
}


void CChatManager::SetDefaultOption()
{
	m_ChatOption.bOption[CTO_PARTYTOWHOLE]	= FALSE;
	m_ChatOption.bOption[CTO_MUNPATOWHOLE]	= FALSE;
	m_ChatOption.bOption[CTO_NOWHISPER]		= FALSE;
	m_ChatOption.bOption[CTO_ATTACKED]		= TRUE;
	m_ChatOption.bOption[CTO_KILLED]		= TRUE;
	m_ChatOption.bOption[CTO_ATTACK]		= TRUE;
	m_ChatOption.bOption[CTO_DEFENCE]		= TRUE;
	m_ChatOption.bOption[CTO_DEFENCED]		= TRUE;
	m_ChatOption.bOption[CTO_MPWARNING]		= TRUE;
	m_ChatOption.bOption[CTO_HPWARNING]		= TRUE;
	m_ChatOption.bOption[CTO_GETITEM]		= TRUE;
	m_ChatOption.bOption[CTO_GETMONEY]		= TRUE;
}


BOOL CChatManager::LoadOption( LPCTSTR strPath )
{
	HANDLE	hFile;

	hFile = CreateFile( strPath, GENERIC_READ, 0, NULL, 
						OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );

	if( hFile == INVALID_HANDLE_VALUE )
		return FALSE;

	DWORD dwRead;
	
	if( !ReadFile( hFile, &m_ChatOption, sizeof(m_ChatOption), &dwRead, NULL ) )
	{
		CloseHandle( hFile );
		return FALSE;
	}

	CloseHandle( hFile );

	return TRUE;
}


BOOL CChatManager::SaveOption( LPCTSTR strPath )
{
	HANDLE	hFile;

	hFile=CreateFile( strPath, GENERIC_WRITE, 0, NULL, 
						CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );

	if( hFile == INVALID_HANDLE_VALUE )
		return FALSE;
	
	DWORD dwWritten;
	
	if( !WriteFile( hFile, &m_ChatOption, sizeof(m_ChatOption), &dwWritten, NULL ) )
	{
		CloseHandle( hFile );
		return FALSE;
	}

	CloseHandle( hFile );

	return TRUE;
}
*/

void CChatManager::Init()
{
	m_bPause = FALSE;
	LoadChatMsg();		//皋技瘤冠胶档 窃膊 荤侩窍骨肺.. 促弗镑俊 困摹窍绰巴捞?
//	LoadUserOption();

	//init傈俊 促捞倔肺弊啊 父甸绢廉 乐绰瘤 犬牢... 
//	m_pChatDialog = (CChatDialog*)WINDOWMGR->GetWindowForID( CTI_TABDLG );
}

void CChatManager::SetChatDialog( CChatDialog* pChatDlg )
{
	m_pChatDialog = pChatDlg;

	if( m_ChatOption.bOption[CTO_AUTOHIDECHAT] == TRUE )
	if( m_pChatDialog )
		m_pChatDialog->HideChatDialog( TRUE );
}

void CChatManager::Release()
{
	for( int i = 0 ; i < MAX_CHATMSGNUM ; ++i )
	{
		if( m_pChatMsg[i] )
		{
			delete[] m_pChatMsg[i];
			m_pChatMsg[i] = NULL;
		}
	}

	m_pChatDialog = NULL;

	ReleaseChatList();
}

void CChatManager::LoadChatMsg()
{
	char msg[256] = {0,};

	CMHFile fp;
	int nIndex;
	int nLen = 0;
	
#ifdef _FILE_BIN_
	if( !fp.Init( FILE_CHAT_MSG, "rb" ) )
		return;	
#else
	if( !fp.Init( FILE_CHAT_MSG, "rt" ) )
		return;	
#endif

	while( TRUE )
	{
		nIndex = fp.GetInt();
//		if(nIndex == 441)
//		{
//			int a=0;
//		}
		if( fp.IsEOF() ) break;
		if( nIndex < 0 || nIndex >= MAX_CHATMSGNUM ) break;	//511锅鳖瘤父.
	
		fp.GetStringInQuotation(msg);

		nLen = strlen( msg );
		if( nLen > 0 )
		{
			m_pChatMsg[nIndex] = new char[nLen+1];
			memcpy( m_pChatMsg[nIndex], msg, nLen+1 );
			fp.GetLine(msg, 256);
		}
	}

	fp.Release();
}

char* CChatManager::GetChatMsg( int nMsgNum )
{ 
	if( m_pChatMsg[nMsgNum] )
		return m_pChatMsg[nMsgNum];
	else
		return &m_NULL;
}

/*
void CChatManager::AddMsg( int nClass, int PredefinedMsg, ... )
{
	char* str = GetChatMsg(PredefinedMsg);
	if( str == NULL ) return;
	
	char msg[256];
	va_list argList;

	va_start(argList, str);
	vsprintf(msg,str,argList);
	va_end(argList);

	PrintMsg( nClass, msg );
}
*/

void CChatManager::AddMsg( int nClass, char* str, ... )
{
	if( str == NULL ) return;
	
	char msg[256];
	va_list argList;

	va_start(argList, str);
	vsprintf(msg,str,argList);
	va_end(argList);

	PrintMsg( nClass, msg );
}

void CChatManager::PrintMsg( int nClass, char* msg )
{
	DWORD dwColor = dwChatTextColor[ nClass ];

	switch( nClass )
	{
	case CTC_OPERATOR:		//款康磊皋技瘤
		AddChatMsgAll( dwColor, msg );
		if( m_pChatDialog )
		{
			NOTIFYMGR->AddMsg( msg );
		}
		break;

	case CTC_GMCHAT:
		AddChatMsg( WHOLE, dwColor, msg );
		break;
		
	case CTC_GENERALCHAT:	//老馆盲泼
		if( m_ChatOption.bOption[CTO_NOCHATMSG] )
			break;
		AddChatMsg( WHOLE, dwColor, msg );
		break;

	case CTC_PARTYCHAT:		//颇萍盲泼
		AddChatMsg( PARTY, dwColor, msg );
		AddChatMsg( WHOLE, dwColor, msg );
		break;

	case CTC_GUILDCHAT:		//巩颇盲泼
		AddChatMsg( MUNPA, dwColor, msg );
		AddChatMsg( WHOLE, dwColor, msg );
		break;

	case CTC_WHISPER:		//庇富
		AddChatMsgAll( dwColor, msg );
		break;

	case CTC_ATTACK:		//傍拜
		if( !m_ChatOption.bOption[CTO_NOSYSMSG] )
			AddChatMsg( WHOLE, dwColor, msg );
		break;

	case CTC_ATTACKED:		//惑措啊 傍拜
		if( !m_ChatOption.bOption[CTO_NOSYSMSG] )
			AddChatMsg( WHOLE, dwColor, msg );
		break;

	case CTC_DEFENCE:		//规绢
		if( !m_ChatOption.bOption[CTO_NOSYSMSG] )
			AddChatMsg( WHOLE, dwColor, msg );
		break;

	case CTC_DEFENCED:		//惑措啊 规绢
		if( !m_ChatOption.bOption[CTO_NOSYSMSG] )
			AddChatMsg( WHOLE, dwColor, msg );
		break;

	case CTC_KILLED:		//磷澜
		if( !m_ChatOption.bOption[CTO_NOSYSMSG] )
		{
			AddChatMsgAll( dwColor, msg );
		}
		break;

	case CTC_MPWARNING:		//郴傍版绊
		if( !m_ChatOption.bOption[CTO_NOSYSMSG] )
		{
			AddChatMsgAll( dwColor, msg );
		}
		break;

	case CTC_HPWARNING:		//积疙仿版绊
		if( !m_ChatOption.bOption[CTO_NOSYSMSG] )
		{
			AddChatMsgAll( dwColor, msg );
		}
		break;
	
	case CTC_GETITEM:		//酒捞袍裙垫
		if( !m_ChatOption.bOption[CTO_NOITEMMSG] )
		{
			AddChatMsgAll( dwColor, msg );
		}
		break;

	case CTC_GETMONEY:		//捣裙垫
		if( !m_ChatOption.bOption[CTO_NOITEMMSG] )
		{
			AddChatMsgAll( dwColor, msg );
		}
		break;

	case CTC_GETEXP:
		if( !m_ChatOption.bOption[CTO_NOEXPMSG] )
		{
			AddChatMsgAll( dwColor, msg );
		}
		break;
		
	case CTC_SYSMSG:
		if( !m_ChatOption.bOption[CTO_NOSYSMSG] )
		{
			AddChatMsgAll( dwColor, msg );
		}
		break;

	case CTC_TOWHOLE:
		AddChatMsg( WHOLE, dwColor, msg );
		break;

	case CTC_TOPARTY:
		AddChatMsg( PARTY, dwColor, msg );
		break;

	case CTC_TOMUNPA:
		AddChatMsg( MUNPA, dwColor, msg );
		break;
	default:
		AddChatMsgAll( dwColor, msg );
		break;
	}
}

void CChatManager::SetOption( sChatOption* pChatOption )
{
	m_ChatOption = *pChatOption;

	if( m_pChatDialog )
	{
		if( m_ChatOption.bOption[CTO_AUTOHIDECHAT] )
			m_pChatDialog->HideChatDialog( TRUE );
		else
			m_pChatDialog->HideChatDialog( FALSE );
	}
}

void CChatManager::MsgProc( UINT msg, WPARAM wParam )
{

//	//皋技瘤 冠胶啊 乐阑锭绰 return 捞 救冈绰促...
	if( msg == WM_KEYDOWN && wParam == VK_RETURN )
	if( !CIMEWND->IsDocking() )
	{
		cMsgBox* pMsgBox = WINDOWMGR->GetFirstMsgBox();
		if( pMsgBox )
		{
			if( pMsgBox->PressDefaultBtn() )
				return;
		}
	}
//

	if( !m_pChatDialog || m_bPause ) //烙矫规祈
		return;

	cEditBox* pEdit = m_pChatDialog->GetChatEditBox();
	if( pEdit == NULL ) return;

	switch( msg )
	{
	case WM_CHAR:
	case WM_IME_CHAR:
	case WM_IME_COMPOSITION:

		if( MACROMGR->IsChatMode() )		//牧飘费虐 犬牢
		{
			if( !pEdit->IsFocus() )
			{
				if( !CIMEWND->IsDocking() && m_pChatDialog->GetChatEditBox()->GetIME()->IsValidChar( (unsigned char*)&wParam ) )
				{
					pEdit->SetFocusEdit( TRUE );
				}
			}
		}
		break;

	case WM_KEYDOWN:	//泅犁 MI_ChatEditFunc窃荐焊促 角青鉴辑啊 刚历烙

		if( wParam == VK_RETURN )
		{
			if( !CIMEWND->IsDocking() )		//促弗俊叼磐俊 器目胶啊 绝促搁.
			{
//				cMsgBox* pMsgBox = WINDOWMGR->GetFirstMsgBox();
//				BOOL bMsgBoxProcessd = FALSE;
//				if( pMsgBox )
//					bMsgBoxProcessd = pMsgBox->PressDefaultBtn();
				
				pEdit->SetFocusEdit( TRUE );
			}
			else
			{
				char* strChat = pEdit->GetEditText();

				if( *strChat != 0 )
				{
					OnInputChatMsg( strChat );
					pEdit->SetEditText("");
				}

				pEdit->SetFocusEdit( FALSE );
			}
		}		

		break;
	}
}

void CChatManager::OnInputChatMsg( char* str )
{

//#ifndef _CHEATENABLE_	//趣矫 鞘磐傅俊 吧妨辑 摹飘啊 救瞪鳖毫
#ifdef _CHEATENABLE_
	if( !CHEATMGR->IsCheatEnable() )
#endif
	if( FILTERTABLE->FilterChat( str ) )
	{
		AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(27) );
		return;
	}
//#endif

	if( gCurTime - m_dwLastChatTime < 1000 )	//老窜 1檬
	{
		CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(697) );
		return;
	}

⌨️ 快捷键说明

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