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

📄 chat.cpp

📁 完整龙族的无错反外挂登陆器,b编译后直接直接就可以放在客户端下运行
💻 CPP
📖 第 1 页 / 共 4 页
字号:
			p.h.header.size = sizeof( t_chat_set ) - 21 + len;
			QueuePacket( &p, 1 );
		break;
		}
		case CHATTYPE_WHISPER :
		{
			if( name == NULL ) 
			{
				len = 0;
			}
			else
			{
				len = strlen( name );
				if( len > 20 )
				{
					AddCurrentStatusMessage( 255,0,0, lan->OutputMessage(5,57), name ); //lsw
					Lc_ChatType = CHATTYPE_NORMAL;
					return; 
				}
			}
			char *t = strtok( name, " \t\n" );
			if( t == NULL )
				temp = NULL;
			else 
				temp = name;

			
			if( chattype == CHATTYPE_WHISPER && temp != NULL )
			{
				strcpy( Lc_TempChatName, temp );
			}
				
			p.h.header.type = CMD_CHAT_SET;
				p.u.chat_set.chattype = chattype;
				if( temp == NULL )
				{
					p.u.chat_set.chatname[0] = 0;
					len = 0;
				}
				else 
				{
					strcpy( p.u.chat_set.chatname, temp );
					len = strlen( temp );
				}
			p.h.header.size = sizeof( t_chat_set ) - 21 + len;
			QueuePacket( &p, 1 );
		break;
		}
	}
}

void RecvChatSetResult( t_chat_set_result *p )
{
	switch( p->result ) 
	{
		case 0 :	AddCurrentStatusMessage( 255,0,0, lan->OutputMessage(5,91), Lc_TempChatName );	Lc_ChatType = CHATTYPE_NORMAL;		break; //010216 lsw
		case 1 :	AddCurrentStatusMessage( 255,0,255, lan->OutputMessage(5,92), Lc_TempChatName );	Lc_ChatType = CHATTYPE_WHISPER; 	break;
		case 2 :	AddCurrentStatusMessage( 255,0,255, lan->OutputMessage(5,93) );					Lc_ChatType = CHATTYPE_NORMAL;		break;
		case 3 :	AddCurrentStatusMessage( 255,0,255, lan->OutputMessage(5,93) );					Lc_ChatType = CHATTYPE_NORMAL;		break;

		case 10 :	AddCurrentStatusMessage( 255,0,210, lan->OutputMessage(5,94) );		Lc_ChatType = CHATTYPE_PARTY;		break;
		case 11 :	AddCurrentStatusMessage( 255,0,150, lan->OutputMessage(5,95) );		Lc_ChatType = CHATTYPE_NORMAL;		break;

		case 20 : 	AddCurrentStatusMessage( 100,40,150, lan->OutputMessage(5,96) );									Lc_ChatType = CHATTYPE_NORMAL;		break;
		case 21 :	AddCurrentStatusMessage( 100,40,210, lan->OutputMessage(5,97) );		Lc_ChatType = CHATTYPE_GUILD;		break;//010216 lsw
	}
}	
	
// 001127 KHS		


//010928 lsw
extern Spr *GetSprOfMenu( int type, int nImageNumber );
Spr *chatimage[3*10];

void LoadChatImage()
{
	for( int i = 0; i <NEW_CHAT_SPR_MAX ; i ++)
	{
		chatimage[i]  = GetSprOfMenu(NEW_CHAT_IMG, i);
	}
}

//011215 lsw
int GetDisplayChatType( LPCHARACTER ch )
{	
//	return 12;//叼弃飘 陋篮 弊覆 老馆 历肪
	if( ch->type ==SPRITETYPE_CHARACTER)
	{
		if(ch->nChatType == CHATTYPE_MERCHANT_BBS)
		{
			return CHAT_COLOR_TYPE_MERCHANT_BBS; 
		}
		if(ch->nCurrentAction==ACTION_SITDOWN)
		{
			return CHAT_COLOR_TYPE_SIT_DOWN;	
		}
		if( CheckGuildMaster( ch ) )
		{
			return CHAT_COLOR_TYPE_GUILDMASTER;
		}
		if(	ch->call_job_lv == 100)	
		{
			return CHAT_COLOR_TYPE_GM;
		}//瘤骏捞匙..
		if(ch->lv>61)
		{
			return CHAT_COLOR_TYPE_HIGHLEVEL;
		}//鳖父祸 变芭
	}
	else
	{
		if( ch->sprno == 80	||  ch->sprno == 22){	return CHAT_COLOR_TYPE_TUTORIAL_NPC;	}
		if( ch->sprno == 18	||  ch->sprno == 20){	return CHAT_COLOR_TYPE_TUTORIAL_NPC;	}
		
		return CHAT_COLOR_TYPE_NPC;
	}
	return CHAT_COLOR_TYPE_DEFAULT;//叼弃飘 陋篮 弊覆 老馆 历肪
}

void DisplayChatMessage( LPCHARACTER ch )//皋技瘤, 漠扼 敲贰弊,
{		
	if( tool_ViewChat ){return;}
	if( 0  >= ch->ChatDelay ){return;}

	int	iPosMoveX = 0, iPosMoveY = 0;
	const int iChatImageType = GetDisplayChatType(ch);
	
	switch(iChatImageType)
	{
	case CHAT_COLOR_TYPE_MERCHANT_BBS://021126 lsw
	case CHAT_COLOR_TYPE_SIT_DOWN	:
		{
			iPosMoveX = -95;
			iPosMoveY = -80;
		}break;
	default:
		{
			iPosMoveX = +13;
			iPosMoveY = -65;
		}break;
	}

	if( ch->viewtype == VIEWTYPE_GHOST_ )
	{	
		iPosMoveY = -90;
	}
	char *pMsg = ch->szChatMessage;
	
	const int iX = ch->x - Mapx+iPosMoveX;
	const int iY = ch->y - Mapy+iPosMoveY;

	int iLCt = 0;
	int iChatWidth = 0;

	int iLGab = CHAT_BG_HEIGHT;//临 埃拜

	switch(iChatImageType)
	{//硅版 嘛扁
	case CHAT_COLOR_TYPE_DEFAULT:
		{
			iChatWidth = 135;
		}break;
	case CHAT_COLOR_TYPE_MERCHANT_BBS:
		{
			iLGab = MERCHANT_CHAT_BG_HEIGHT;
		}//break; 绝澜	
	default:
		{
			iChatWidth = 180;
		}break;
	}

	const int iGab = 10;//甸咯 静扁

	TxtOut.Init(COLOR_BLACK, TXT_BG_NORMAL_WIDTH,12);
		
	::Hcolor(FONT_COLOR_WHITE);
	iLCt = TxtOut.RcChatOut(iX, iY, iChatWidth,iGab,iChatImageType,"%s",pMsg);

	::Hcolor(FONT_COLOR_GREEN);
	TxtOut.RcChatHeaderOut(iX, iY-iLGab*(iLCt+1), iChatWidth,iGab,iChatImageType,"%s",ch->name);//iLCt+1 牢 捞蜡绰 捞抚 锭巩
	return;
}

void RecvCMD_LOCALWAR_CHAT(t_packet* p)						// LTS NEW LOCALWAR
{
	ChatMgr.AddString( NULL, p->u.LocalWar.LocalWarChat.Message, CHATTYPE_LOCAL_WAR );	//020515 lsw//020702 lsw
}

void RecvCMD_SQUAD_CHAT(t_packet* p)
{
//	char tempMessage[120];
//	char* tempPointer=tempMessage;

//	memcpy(tempMessage,p->u.NationWar.SquadChat.Message,p->u.NationWar.SquadChat.Size);
//	*(tempPointer+p->u.NationWar.SquadChat.Size)='\0';

	p->u.NationWar.SquadChat.Message[MAX_STRING_PK-1] = 0;

	ChatMgr.AddString( NULL, p->u.NationWar.SquadChat.Message, CHATTYPE_NATION_WAR );	//020515 lsw//020702 lsw
	
	switch (p->u.NationWar.SquadChat.Type)
	{
	case 0 :
	case 1 :
	case 2 :
	case 3 :
		PlayListAutoSounds(50,0,0,0);
		break;
	case 4 :
		PlayListAutoSounds(64,0,0,0);
		break;
	}
}

void RecvGuildAllMsg( t_packet *p )
{
	MP3( SN_EAR_MESSAGE_RECV );
	ChatMgr.AddString("!", p->u.kein.default_msg, CHATTYPE_GUILD_BBS);//021001 lsw
}

void CChatMgr::ReplyWhisper( const WORD dSenderServerIndex, const WORD dSenderCn, const char cResult )//  罐篮 皋矫瘤俊 措茄 搬苞
{
	t_packet p;
	p.h.header.type = CMD_SEND_EAR_MESSAGE_RESULT;
	p.h.header.size = sizeof( k_send_ear_message_result );

	p.u.kein.send_ear_message_result.send_game_server	=	dSenderServerIndex;
	p.u.kein.send_ear_message_result.send_server_id		=	dSenderCn;
	p.u.kein.send_ear_message_result.ret				=	cResult;

	QueuePacket( &p, 1 );
}

void CChatMgr::RecvWhisper( const char *szName, char *szMsg, const WORD dSenderServerIndex, const WORD dSenderCn)//庇加富 罐嚼聪促.
{
	char cResult = 1;//1篮 己傍 蔼捞促 檬扁摹甫 官操瘤 富巴
	if( ::IsHeroDead() ) 
	{
		cResult = 2;
	}//磷菌扁 锭巩俊 
	if( IsRefuseAllWhisper() ) 
	{
		cResult = 3;
	}
	if( IsRefuseGuy(szName) ) 
	{
		cResult = 3;
	}
	switch(cResult)
	{
	case 1:
		{
			ReplyWhisper( dSenderServerIndex, dSenderCn, cResult );//搬苞 傈价
		}break;
	default:
		{
			ReplyWhisper( dSenderServerIndex, dSenderCn, cResult );//搬苞 傈价
			return;//府畔 矫难滚覆
		}break;
	}	
	::ConvString( szMsg );
	::MP3( SN_EAR_MESSAGE_RECV );	

	AddString(szName,szMsg,CHATTYPE_WHISPER);//021001 lsw
	::InsertWisperList(szName);//庇富 焊辰 荤恩狼 捞抚 历厘
}

int GetChatMode()
{
	if(g_bCommandMode == CM_MESSAGE)
	{
		
	}
	else
	{
		
	}	
	return g_bCommandMode;
}

void SetChatMode(const int iMode,bool bIsForce)//碍力肺 器目胶甫 霸烙皋牢栏肺 笛巴牢瘤甫 悸泼 钦聪促.
{
	switch(iMode)
	{
	case CM_MESSAGE://浚磐 茄锅俊 荤咙
		{
			if( SMenu[MN_SKILLGUILD_REPAIR].bActive
			||	SMenu[MN_SKILLGUILD_BUY].bActive 
			||	SMenu[MN_SKILLGUILD_SELL].bActive
			||	SMenu[MN_SKILLGUILD_SKILL].bActive 
			||	SMenu[MN_MEM_BOOK].bActive 
			||	SMenu[MN_MAIL_WRITE].bActive
			||	SMenu[MN_MAIL_READ].bActive
			||	SMenu[MN_MAIL_MENU].bActive
			||	SMenu[MN_DIVIDE_ITEM].bActive
			||	SMenu[MN_FRIEND_REGIST].bActive
			||	SMenu[MN_BANK_REPAYMENT].bActive
			||	SMenu[MN_MERCHANT_REGISTER].bActive
			)
			{
				g_bCommandMode = CM_COMMAND;//目膏靛 葛靛肺 父甸绢 霖促
				SMenu[MN_MAININTERFACE].nField[44].nType = FT_NONE;
				SMenu[MN_MAININTERFACE].nField[47].nType = FT_NONE;
				SetFocus2(HWND_GAME_MAIN);//021001 lsw 困 牢磐其捞胶惑怕俊辑绰 盲泼 阂啊瓷捞促.
				return;
			}
//			EWndMgr.ClearAllTxt();//021001 lsw
			
			if(Hero&&Hero->viewtype == VIEWTYPE_OBSERVE_) // 030522 kyo
			{
				return;
			}
			g_bCommandMode = iMode;
		}break;
	case CM_COMMAND://目膏靛 葛靛
		{
			SMenu[MN_MAININTERFACE].nField[44].nType = FT_NONE;
			SMenu[MN_MAININTERFACE].nField[47].nType = FT_NONE;
			g_bCommandMode = iMode;
			if(bIsForce)
			{
				SetFocus2(HWND_GAME_MAIN);//021001 lsw
			}
			return;
		}break;
	default:
		{

		}break;
	}
}

bool IsChatBoxActive()
{
	return (GetChatMode() == CM_MESSAGE)?true:false;
}

int GetChatTarget()//泅犁 盲泼 惑措 啊瘤绊 坷扁
{
	const int iType =SMenu[MN_WISPER_LIST].work;
	return iType;
}

bool IsAbleChatTargetName(const int iType)//捞沫捞 棵官弗 沫牢啊
{
	switch(iType)
	{
	case CHAT_TARGET_NORMAL	:
	case CHAT_TARGET_GUILD	:
	case SELECT_WISPER_MODE	:
		{
			return true;
		}break;
	case CHAT_TARGET_WISPER1			:
	case CHAT_TARGET_WISPER2			:
	case CHAT_TARGET_WISPER3			:
	case CHAT_TARGET_WISPER4			:
	case CHAT_TARGET_WISPER5			:
		{
			if( SMenu[MN_WISPER_LIST].nField[iType].temp[0] )
			{
				return true;
			}
		}break;
	default:
		{
		}break;
	}
	return false;
}

bool IsChatBoxLock()
{
	return (SMenu[MN_MAININTERFACE].nField[47].nWillDo)?true:false;
}


bool SendChatNormal(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
	
	Hero->ChatDelay		= 60;
	strcpy( Hero->szChatMessage, msg );
	EWndMgr.ClearTxt(HWND_CHAT_INPUT);//021001 lsw
	SendChatData( msg );								// 辑滚俊 皋矫瘤甫 焊辰促.
	return true;
}

bool SendChatGuild( char *msg )
{
	if( IsDead( Hero ) ){return true;}
	EatRearWhiteChar( msg );//020725 lsw

⌨️ 快捷键说明

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