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

📄 chat.cpp

📁 完整龙族的无错反外挂登陆器,b编译后直接直接就可以放在客户端下运行
💻 CPP
📖 第 1 页 / 共 4 页
字号:

	const int iSize = strlen( msg );
	if(0 > iSize ){	return true;}
	else if( 0 == iSize )
	{
		SetChatTarget(CHAT_TARGET_GUILD);
		return false;
	}
	
	if( IsLineCommand( msg, iSize) ) 
	{
		EWndMgr.ClearTxt(HWND_CHAT_INPUT);//021001 lsw
		return false;		// 疙飞绢扼搁 贸府饶 府畔
	}

	ConvString( msg );// 垮汲 鞘磐	//020725 lsw

	g_Menu_Variable.m_bGuildChatOn = true;
	
	t_packet packet;
	packet.h.header.type = CMD_GUILD_CHAT;
	packet.h.header.size = iSize;
	strcpy( (char *)packet.u.data, msg );
	QueuePacket( &packet, 1 );
	return true;
}

bool SendChatWisper(const char *name, char *msg)
{
	const int iSize = strlen( msg );
	if(0 >= iSize ){return true;}

	EatRearWhiteChar( msg );//020725 lsw

	if( IsLineCommand( msg, iSize) ) 
	{
		EWndMgr.ClearTxt(HWND_CHAT_INPUT);//021001 lsw
		return false;		// 疙飞绢扼搁 贸府饶 府畔
	}

	ConvString( msg );// 垮汲 鞘磐//020725 lsw

	const int iNameLen	= strlen(name);
	const int iMsgLen	= strlen(msg);
	if( (20 < iNameLen ) || !iNameLen || (200 <= iMsgLen) )
	{
		AddCurrentStatusMessage( FONT_COLOR_YELLOW,lan->OutputMessage(0,501));//"措惑狼 捞抚捞 肋给 登菌芭唱, 庇加富捞 呈公 遍聪促."
		return false;//皋技瘤 焊郴瘤 臼澜 
	}
	
	InsertWisperList(name);

	t_packet p;
	p.h.header.type = CMD_SEND_EAR_MESSAGE;
	p.h.header.size = sizeof( k_send_ear_message )-200+iMsgLen;
	strcpy( p.u.kein.send_ear_message.name, name);
	strcpy( p.u.kein.send_ear_message.message, msg);
	QueuePacket( &p, 1 );
	return true;
}

void SendWisperByLineCommand( char *str_buf )//SendEarMessageByLineCommand捞芭甫 函屈 秦辑 泅犁 盲泼芒俊辑 皋技瘤 啊档废
{
	char name[21]="";
	char msg[255]="";
	str_buf = EatFrontWhiteChar(str_buf);
	sscanf( str_buf, "%20s %s", name, msg );

	if(msg[0])//捞抚 涝仿 登菌绊 皋技瘤 霉 何盒捞 乐促搁
	{
		char *pdest = strstr( str_buf, msg );
//		const int  result = pdest - string + 1;
		if( NULL != pdest )
		{
			SendChatWisper(name,pdest);
		}
	}
	else
	{
		SetChatMode(CM_MESSAGE);//盲泼 涝仿 措扁 惑怕
		SetChatTarget(SELECT_WISPER_MODE);//庇加富 惑措 涝仿 葛靛
		EWndMgr.SetTxt(HWND_CHAT_TARGET_INPUT,name);//021001 lsw//涝仿芒篮 努府绢//捞抚 涝仿 秦 林绊
		EWndMgr.ClearTxt(HWND_CHAT_INPUT);//021001 lsw//涝仿芒篮 努府绢
		if(name[0])//捞抚 涝仿捞 乐促搁
		{
			SetFocus2(HWND_CHAT_INPUT);//021001 lsw
		}
		else//捞抚涝仿档 绝唱..
		{	//器目胶甫 捞抚 涝仿栏肺 霖促
			SetFocus2(HWND_CHAT_TARGET_INPUT);//021001 lsw
		}
	}
}

void SendPartyChatByLineCommand( char *str_buf )//SendEarMessageByLineCommand捞芭甫 函屈 秦辑 泅犁 盲泼芒俊辑 皋技瘤 啊档废
{
	if(str_buf[0])//捞抚 涝仿 登菌绊 皋技瘤 霉 何盒捞 乐促搁
	{
		SendChatData( str_buf, CHATTYPE_PARTY);
	}
}

void SendLocalWarChat(char* Arg)		// LTS NEW LOCALWAR	
{
	if (g_LocalWarBegin)
	{
		if (Hero->JoinLocalWar)
		{
			t_packet packet;
			packet.h.header.type=CMD_LOCALWAR_CHAT;
			
			packet.u.LocalWar.LocalWarChat.NationIndex=GetNationIndex(Hero->name_status.nation);		// Broad Cast Use
			
			sprintf(packet.u.LocalWar.LocalWarChat.Message,"%s : %s",Hero->name,Arg);
			ConvString( packet.u.LocalWar.LocalWarChat.Message );// 垮汲 鞘磐
			EatRearWhiteChar( packet.u.LocalWar.LocalWarChat.Message );
			
			packet.h.header.size=strlen(packet.u.LocalWar.LocalWarChat.Message)+1;
			QueuePacket(&packet,1);
		}
		else 
		{
			AddCurrentStatusMessage( 255,255,0,lan->OutputMessage(0,370));//"惫瘤傈俊 曼咯窍寂具父 荤侩且荐 乐嚼聪促.");
		}
	}
	else AddCurrentStatusMessage( 255,255,0,lan->OutputMessage(0,371));//"惫瘤傈 惑炔俊辑父 荤侩且荐 乐嚼聪促.");
}

/////////////////////////////////////////////////////////////////////////////////////////////
//Yes or No 矫胶袍
// yes no system ----------------------------------------------------------
//-------------------------------------------------------------------------
int CChatMgr::RecvNeedYesNoMsg( const int iType, const int iDemanderCn, const char *szMsg, ... ) 
{
	if(IsCheckYesNoAble())
	{
#ifdef _DEBUG
		::AddCurrentStatusMessage( FONT_COLOR_BLIGHT_BLUE, "recv Type = %d", iType );
#endif
		::AddCurrentStatusMessage( FONT_COLOR_BLIGHT_BLUE, lan->OutputMessage(2,760));
		return 0;
	}
	char szTemp[512] = {0,};
    va_list arg;
    va_start( arg, szMsg );
    vsprintf( szTemp, szMsg, arg );
    va_end( arg );

	m_iYesOrNoType			= iType;
	m_iYesOrNoDemanderCn	= iDemanderCn;
	m_dwSelectWaitTime		= ::timeGetTime()+MAX_CHAT_DISPLAY_TIME;
	
	AddString(NULL,szTemp,CHATTYPE_YES_OR_NO);//皋技瘤 负篮吧 笼绢 持绢扼
	return 1;
}
//////////////////////////////////////////////////////////////////////////		yex_no system

void CChatMgr::CheckYesNo( const int iIsYes )
{
	if(!ChatMgr.IsCheckYesNoAble()){return;}//矫埃 檬苞 
	switch( m_iYesOrNoType )
	{
	case YN_GUILD_JOIN_OK : 
		{
			(iIsYes)?
				SendGuildJoinConfirmOk( m_iYesOrNoDemanderCn ):
				SendGuildJoinConfirmNot( m_iYesOrNoDemanderCn );
		}break;
	default:
		{//咯扁 坷搁 俊矾牢单.. 
		}break;
	}
	ClearYesNo();//努府绢甫 矫难霖促
}

int CheckLanguageForMenu( LPSTR lpStr ) // 皋春俊辑 荤侩且 攫绢 矫胶袍
{
	if( ChatMgr.IsCheckYesNoAble() )		// yes, no甫 急琶秦具 且锭
	{
		if( stricmp(lpStr,lan->OutputMessage(7,96))==0 
		||	stricmp(lpStr,lan->OutputMessage(7,97))==0 
		||	stricmp(lpStr,lan->OutputMessage(7,98))==0 
		||	stricmp(lpStr,"YES")==0 )
		{
			ChatMgr.CheckYesNo( 1 );
			return 0;
		}
		if(	stricmp(lpStr,lan->OutputMessage(7,99))==0 
		||	stricmp(lpStr,"NO")==0 
		|| 	stricmp(lpStr,lan->OutputMessage(7,100))==0  )//010215 lsw
		{
			ChatMgr.CheckYesNo( 0 );
			return 0;
		}
	}

	if( SCharacterData.believe_god )//&& SCharacterData.faith > 50  )
	{
		switch( SCharacterData.believe_god )
		{
			case EDELBLHOY		:	if( !stricmp( lpStr, lan->OutputMessage(7,93) )) CallServer( CMD_DIVINE_UP ); break;//010215 lsw
			case TEFFERY		:	if( !stricmp( lpStr, lan->OutputMessage(7,94))) CallServer(CMD_DIVINE_UP ); break;//010215 lsw
			case LETTY			:	if( !stricmp( lpStr, lan->OutputMessage(7,95))) CallServer( CMD_DIVINE_UP ); break;//010215 lsw
//			case OREM			:	if( !stricmp( lpStr, lan->OutputMessage(7,95))) CallServer( CMD_DIVINE_UP ); break;//010215 lsw
			default : break;
		}
	}

	const int Len = strlen( lpStr );
	if( g_FightMapStart )
	{
		t_packet packet;
		packet.h.header.type = CMD_CHAT_DATA;
		packet.h.header.size = sizeof( t_client_chat_data ) - TEXT_LENGTH + Len;

		packet.u.client_chat_data.type = CHATTYPE_COLOSSUS; // 傈眉俊霸 焊辰促. 
		packet.u.client_chat_data.length = Len;
		memcpy( packet.u.client_chat_data.text, lpStr, Len );
		
		QueuePacket( &packet, 1 );
		return 0;
	}
	languageSystem( lpStr );			// 0605 Woo
	return 1;
}

void RecvWhisperReply( const int type, const char *szName )		// 庇加富..		// 鞍篮 辑滚俊 乐阑 版快 搬苞
{
	switch( type )
	{
		case CMD_SEND_EAR_MESSAGE_OK	:	::AddCurrentStatusMessage( 255, 0, 255, lan->OutputMessage(5,41), szName); break;//010215 lsw
		case CMD_SEND_EAR_MESSAGE_NOT	:	::AddCurrentStatusMessage( 255, 0, 0, lan->OutputMessage(5,42), szName); break;//010215 lsw
	}
}

void RecvWhisperReply2( const int ret )
{
	switch( ret )
	{
	case 1:		::AddCurrentStatusMessage( 255, 0, 255, lan->OutputMessage(5,43));	break;//010215 lsw
	case 2:		::AddCurrentStatusMessage( 255, 0, 0, lan->OutputMessage(5,44));	break;//磷篮
	case 3:		::AddCurrentStatusMessage( 255, 0, 0, lan->OutputMessage(5,45));	break;//芭例 
	case 4:		::AddCurrentStatusMessage( 255, 0, 0, lan->OutputMessage(5,46));	break;//促弗惫啊
	default :	::AddCurrentStatusMessage( 255, 0, 0, lan->OutputMessage(5,47));	break;//傈崔角菩
	}
}

void RecvWhisperReplyEtc( t_packet *p )
{
	const int ret = p->u.kein.default_char;
	switch( ret )
	{
		case -1 : ::AddCurrentStatusMessage( 255, 10, 20, lan->OutputMessage(3,51)); break;//010215 lsw
		default : break;
	}
}

void CChatMgr::DisplayRefuseList()//庇富 芭何 府胶飘 免仿
{
	if( ChatMgr.IsRefuseAllWhisper() ) 
	{
		::AddCurrentStatusMessage( 200, 255 , 200 , lan->OutputMessage(7,120) );//010215 lsw
		return;
	}
	else
	{
		::AddCurrentStatusMessage( 255, 200 , 255 , lan->OutputMessage(7,121) );//010215 lsw
	}

	for(vpcitor itor = vRefuseList.begin();vRefuseList.end() != itor;itor++)
	{
		::AddCurrentStatusMessage( 100, 200 , 100 , lan->OutputMessage(7,122), (*itor) );//010215 lsw
	}		
}

void SetChatTarget(const int iType)
{
	const int iNow = GetChatTarget();
	if(IsAbleChatTargetName(iType) )
	{
		SMenu[MN_WISPER_LIST].work = iType;
		if(SELECT_WISPER_MODE==iType)
		{
			EWndMgr.ClearTxt(HWND_CHAT_TARGET_INPUT);//021001 lsw
			SetFocus2(HWND_CHAT_TARGET_INPUT);//021001 lsw
		}
	}
	else
	{
		SMenu[MN_WISPER_LIST].work = CHAT_TARGET_NORMAL;
	}
}

int InsertWisperList(const char* name)//捞抚 历厘饶 历厘等 磊府甫 府畔
{
	int i = CHAT_TARGET_WISPER_START;
	for(;i<CHAT_TARGET_WISPER_END;i++)
	{
		if(!stricmp(SMenu[MN_WISPER_LIST].nField[i].temp,name))//厚背搬苞 捞抚捞 促福促搁
		{	//捞固 弊 捞抚篮 历厘 窍绊乐绢
			return i;//包抵
		}
		if(!SMenu[MN_WISPER_LIST].nField[i].temp[0])//酒抗 捞抚捞 绝促搁
		{
			strcpy(SMenu[MN_WISPER_LIST].nField[i].temp,name);//绝绰磊府俊 持绊
			return i;// 持绊 包抵扼
		}					
	}
	if(i==CHAT_TARGET_WISPER_END)//持阑 磊府啊 华华 窍搁
	{
//		strcpy(SMenu[MN_WISPER_LIST].nField[CHAT_TARGET_WISPER9].temp,SMenu[MN_WISPER_LIST].nField[CHAT_TARGET_WISPER8].temp);
//		strcpy(SMenu[MN_WISPER_LIST].nField[CHAT_TARGET_WISPER8].temp,SMenu[MN_WISPER_LIST].nField[CHAT_TARGET_WISPER7].temp);
//		strcpy(SMenu[MN_WISPER_LIST].nField[CHAT_TARGET_WISPER7].temp,SMenu[MN_WISPER_LIST].nField[CHAT_TARGET_WISPER6].temp);
//		strcpy(SMenu[MN_WISPER_LIST].nField[CHAT_TARGET_WISPER6].temp,SMenu[MN_WISPER_LIST].nField[CHAT_TARGET_WISPER5].temp);
		strcpy(SMenu[MN_WISPER_LIST].nField[CHAT_TARGET_WISPER5].temp,SMenu[MN_WISPER_LIST].nField[CHAT_TARGET_WISPER4].temp);
		strcpy(SMenu[MN_WISPER_LIST].nField[CHAT_TARGET_WISPER4].temp,SMenu[MN_WISPER_LIST].nField[CHAT_TARGET_WISPER3].temp);
		strcpy(SMenu[MN_WISPER_LIST].nField[CHAT_TARGET_WISPER3].temp,SMenu[MN_WISPER_LIST].nField[CHAT_TARGET_WISPER2].temp);
		strcpy(SMenu[MN_WISPER_LIST].nField[CHAT_TARGET_WISPER2].temp,SMenu[MN_WISPER_LIST].nField[CHAT_TARGET_WISPER1].temp);
		strcpy(SMenu[MN_WISPER_LIST].nField[CHAT_TARGET_WISPER1].temp,name);
		i = CHAT_TARGET_WISPER1;
	}
	return i;
}

//////////////////////////////////////////////////////////////////////
//1.3 傍瘤 力茄
/*
int CChatMgr::CompareString(string szLef, string szRig)//kyo 唱吝俊 checkLimitedBBSName绊磨锭 昏力茄促.
{
	return szLef.compare( szRig);
}

int CompareString(string szLef, string szRig)//kyo 唱吝俊 checkLimitedBBSName绊磨锭 昏力茄促.
{
	return szLef.compare( szRig);
}
*/
void CChatMgr::ClearLimiteBBS()
{
	m_bIsActiveBBS = true;	
	m_szLimiteName.clear();
}

bool CChatMgr::AddLimintedBBSName(char* szLimitList)
{
	if( NULL == szLimitList|| strlen(szLimitList) <= 0)
	{		
		m_szLimiteName.clear();
		::AddCurrentStatusMessage( FONT_COLOR_SOLID_YELLOW, lan->OutputMessage(0,511) );
		return true;
	}
	
	int nSize = m_szLimiteName.size();
	char *szName;
	szName = strtok( szLimitList, " " );
	while( szName!= NULL )
	{
		if( MAX_LIMIT_USER < nSize)
		{//力茄牢盔俊 吧赴促. 
			return false;
		}
		if( AddLimintedBBSNameOne( szName ) )
		{
			nSize++;
		}
		szName = strtok( NULL, " " );
	}
	return true;
}

bool CChatMgr::AddLimintedBBSNameOne( const string szName)
{
	if( !IsLimitedBBSName( szName ) )
	{
		m_szLimiteName.push_back(szName);
		sort(m_szLimiteName.begin(), m_szLimiteName.end());
		return true;
	}	
	return false;
}

bool CChatMgr::IsLimitedBBSName( const string szName )
{
	if( binary_search(m_szLimiteName.begin(), m_szLimiteName.end(), szName))//, ::CompareString) ) //kyo 唱吝俊 Cmp甫 促甫 窃
	{
		return true;
	}
	
	return false;
}

void CChatMgr::ShowLimitedList()
{// not use now.. 031021
	string szNameList;
	for( vector<string>::iterator it = m_szLimiteName.begin(); it != m_szLimiteName.end(); it++)
	{
		szNameList += (*it);
		szNameList +=" ";
	}
	::AddCurrentStatusMessage(0,174,239, "Limited User is %s", szNameList.c_str() );
}

//
//////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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