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

📄 linecommand.cpp

📁 国内著名网络游戏dragon的客户端登陆用完整源码 配套一起上传的服务端部分可开服 无说明文档
💻 CPP
📖 第 1 页 / 共 3 页
字号:

					break;
				}
			case LC_BBS_ON:
				{
					ChatMgr.SetActiveBBS(true);
					::AddCurrentStatusMessage(FONT_COLOR_SOLID_YELLOW, lan->OutputMessage(0, 513));
					//ChatMgr.ShowLimitedList(); // 031031 kyo
					break;						
				}
			case LC_BBS_OFF:
				{
					ChatMgr.SetActiveBBS(false);
					::AddCurrentStatusMessage(FONT_COLOR_SOLID_YELLOW, lan->OutputMessage(0, 514));
					break;						
				}
				//<< 031021 kyo
			}

			return 1;
		}	

		lc = &LC[++c];
	}

	return 0;
}

void SendTotalMapConnections( void )
{
	//	t_packet p;
	//	p.h.header.type = CMD_TOTAL_MAP_CONNECTIONS;
	//	p.h.header.size = 0;
	//	QueuePacket( &p, 1 );
}

void SendTotalConnections( void )
{
	//	t_packet p;
	//	p.h.header.type = CMD_TOTAL_CONNECTIONS;
	//	p.h.header.size = 0;
	//	QueuePacket( &p, 1 );
}


void RecvTotalMapConnections( int no )
{
	AddCurrentStatusMessage( 255,255,255, lan->OutputMessage(3,53), no );//010215 lsw
}

void RecvTotalConnections( int no )
{
	AddCurrentStatusMessage( 255,170,170, lan->OutputMessage(3,54),  no );//010215 lsw
}

void LC_SendInputParty( char *name )		// 0929 YGI
{
	LPCHARACTER target = ExistHe( name );
	if( !target ) return;
	
	for( int i=0; i<6; i++ )
	{
		if( !SCharacterData.party[i].m_Name[0] ) break;
	}
	if( i == 6 ) return;
	
	SetMouseCh( target );
	SendInputParty( PARTY, i, &mouse_ch);
	memset( &mouse_ch, 0, sizeof( CharacterParty ) );
}

void SendTameCommand(int command, char* s)
{	//< CSD-031106
	char* tok = strtok(s, " ");
	
	if (tok == NULL) 
	{
		switch (command)
		{
		case LC_TAME_STOP:
			{
				AddCurrentStatusMessage(100, 100, 255, lan->OutputMessage(3, 55));
				break;
			}
		case LC_TAME_ATTACK:
			{
				AddCurrentStatusMessage(100, 100, 255, lan->OutputMessage(3, 56));
				break;
			}
		case LC_TAME_FOLLOWME:
			{
				AddCurrentStatusMessage(100, 100, 255, lan->OutputMessage(3, 57));
				break;
			}
		case LC_TAME_NAME:
			{
				AddCurrentStatusMessage(100, 100, 255, lan->OutputMessage(3, 58));
				break;
			}
		}
		
		return;
	}

	char mybaby[FILENAME_MAX];
	strcpy(mybaby, tok);
	
	tok = strtok(NULL, " \n");

	char toname[FILENAME_MAX];

	if (tok == NULL) 
	{
		toname[0] = 0;
	}
	else
	{
		strcpy(toname, tok);
	}
	
	if (toname[0] == 0)
	{
		switch (command)
		{
		/*
		case LC_TAME_ATTACK:
			{
				AddCurrentStatusMessage(100, 100, 255, lan->OutputMessage(3, 59));	
				return;
			}
		*/
		case LC_TAME_NAME:
			{
				AddCurrentStatusMessage(100, 100, 255, lan->OutputMessage(3, 60));
				return;
			}
		}
	}
	
	t_packet p;
	p.h.header.type = CMD_TAME_COMMAND;
	p.u.tame_command.cmd = command;
	mybaby[19] = 0;
	EatRearWhiteChar(mybaby);
	strcpy(p.u.tame_command.mybaby, mybaby);
	EatRearWhiteChar( toname );
	toname[19] = 0;
	strcpy(p.u.tame_command.toname, toname);
	p.h.header.size= sizeof(t_tame_command);
	QueuePacket(&p, 1);
}	//> CSD-031106

void RecvTameCommandResult( int result )
{
	switch( result )
	{
	case TAME_FAIL_CHANGE_NAME		: AddCurrentStatusMessage( 214,100,122, lan->OutputMessage(3,74));		break;//010215 lsw
	case TAME_NO_CHAR				: AddCurrentStatusMessage( 214,100,122,lan->OutputMessage(3,75) ); break;
	case TAME_NO_NAME_CHAR			: AddCurrentStatusMessage( 214,100,122, lan->OutputMessage(3,76));	break;
	case TAME_FOLLOW				: AddCurrentStatusMessage( 114,100,122, lan->OutputMessage(3,77));	break;
	case TAME_STOP					: AddCurrentStatusMessage( 114,100,122, lan->OutputMessage(3,78));	break;
	case TAME_ATTACK				: AddCurrentStatusMessage( 114,100,122, lan->OutputMessage(3,79));	break;
	case TAME_SUCCESS_CHANGE_NAME	: AddCurrentStatusMessage( 114,100,122, lan->OutputMessage(3,80));	break;//010215 lsw
	}
}

void RecvTameNameChange( t_tame_name_change *p )
{
	LPCHARACTER ch = FindCharacter( &g_CharacterList, p->id);
	if( ch == NULL ) return;
	strcpy( ch->name, p->name );
}


void RecvHostName( tame_host_name *p )
{
	LPCHARACTER ch = FindCharacter( &g_CharacterList, p->id);
	if( ch == NULL ) return;
	strcpy( ch->HostName, p->hostname );
}

//   Tamming 场..
void RecvHostEnd(  tame_end *p )
{
	LPCHARACTER ch = FindCharacter( &g_CharacterList, p->id);
	if( ch == NULL ) return;
	
	ch->HostName[0] = 0;
}

void SendBBS( char *bbs)
{
	t_packet p;
	int len;
	
	if( bbs == NULL ) return;
	len = strlen( bbs );
	if( len == 0 ) return;
	if( len >= MAX_PATH-1 ) return;
	
	p.h.header.type = CMD_BBS;
	strcpy( p.u.server_bbs.bbs, bbs );
	p.h.header.size = sizeof( t_server_bbs ) - MAX_PATH + len;
	
	QueuePacket( &p, 1 );
}

void SendBBSAll( char *bbs)
{
	t_packet p;
	int len;
	
	if( bbs == NULL ) return;
	len = strlen( bbs );
	if( len == 0 ) return;
	if( len >= MAX_MSG-1 ) return;
	
	p.h.header.type = CMD_SV_SEND_MESSAGE_ALL;
	strcpy( p.u.kein.default_msg, bbs );
	p.h.header.size = len;
	
	QueuePacket( &p, 1 );
}

////////////// 0810 lhs 涅胶飘侩  档框富 //////////////
void RecvBbs_quest( char *bbs )
{
	AddCurrentStatusMessage( 200,200,0, lan->OutputMessage(3,132) );//010215 lsw
	AddCurrentStatusMessage( 255,255,0, bbs );
}


////////////////////////////////////////////////////////////////////////////////
// CSmallTipCount member functions
CSmallTipCount	g_SmallTipCount;
int LoadSmallTipsPage()
{
	FILE *fp;
	fp = Fopen( "./data/small_tips.txt", "rt" );
	if( !fp ) return 0;
	
	char str[512];
	while( fgets( str, 512, fp ) )
	{
		if( str[0] == ':' ) break;
		char *token;
		token = strtok( str, "\t\n" );
		if( !token ) continue;
		
		int number = atoi( token );
		if( !number ) continue;
		
		token = strtok( NULL, "\t\n" );
		if( !token ) continue;
		
		while( token )
		{
			g_SmallTipCount.AddData( number, token );
			token = strtok( NULL, "\t\n" );
		}
	}
	
	fclose( fp );
	return 1;
}

int CSmallTipCount::AddData( int number, char *str )
{
	CSmallTipCount* target = this;
	
	while( target->next ) target = target->next;
	if( m_nPage == 0 )
	{
		strncpy( m_szKey, str, 49 );		// 020925 YGI
		m_szKey[49] = 0;					// 020925 YGI
		m_nPage = number;
		return 1;
	}
	else
	{
		target->next = new CSmallTipCount;
		strcpy( target->next->m_szKey, str );
		target->next->m_nPage = number;
		return 1;
	}
}

int CSmallTipCount::GetPage( char *key )
{
	if( !m_nPage ) return 0;
	
	CSmallTipCount *target = this;
	while( target )
	{
		if( strcmp( target->m_szKey, key ) == 0 ) return target->m_nPage;
		target = target->next;
	}
	return 0;
}

////////////////////////////////////////////////////////////////////////////////
void CallViewSmallTips( char *txt )
{
	if( IsDead( Hero ) ) return;
	char *token = strtok( txt, " \t\n" );
	if( !token ) token = txt;
	else
	{
		token = strtok( NULL, " \t\n" );
		if( !token ) token = txt;
	}
	static first = true;
	if( first ) 
	{
		LoadSmallTipsPage();
		first = false;
	}
	
	int t = 0;
	if( *token )
		t = g_SmallTipCount.GetPage( EatRearWhiteChar( token ) );
	
	CloseAllMenu();
	SMenu[MN_SMALL_TIPS].key = t;
	bSmallTips = true;
}

CTextCmd *g_lpTextCmd;
CEmotionCmd *g_lpEmotionCmd;
void SendLcEmotion( char *txt )
{
	return;
}

///////////////////////////////////////////////////////////////
// CTextCmd member fuction
void CTextCmd::AddText(char *txt)
{
	if( !m_txt )
	{
		m_txt = new char[strlen(txt)+1];
		strcpy( m_txt, txt );
		return;
	}
	
	for( CTextCmd *temp=this; temp->next; temp=temp->next ) ;
	
	CTextCmd *data;
	data = new CTextCmd;
	data->m_txt = new char[strlen(txt)+1];
	strcpy( data->m_txt, txt );
	temp->next = data;
	return;
}
char *CTextCmd::GetLastText()
{
	for( CTextCmd *temp=this; temp->next; temp=temp->next ) ;
	return temp->m_txt;
}
char *CTextCmd::GetFirstText()
{
	return m_txt;
}

///////////////////////////////////////////////////////////////
// CEmotionCmd member function
void CEmotionCmd::AddCmd( char *cmd )
{
	if( !m_Cmd )
	{
		m_Cmd = new char[strlen(cmd)+1];
		strcpy( m_Cmd, cmd );
		return;
	}
	
	for( CEmotionCmd *temp=this; temp->next; temp=temp->next ) ;
	
	CEmotionCmd *data;
	data = new CEmotionCmd;
	data->m_Cmd = new char[strlen(cmd)+1];
	strcpy( data->m_Cmd, cmd );
	temp->next = data;
	return;
}

int CEmotionCmd::GetCmd( char *txt )
{
	CEmotionCmd *temp = this;
	int count = 0;
	while( temp )
	{
		if( strcmp( temp->m_Cmd, txt ) == 0 )
			return count;
		count ++;
		temp = temp->next;
	}
	return -1;
}
///////////////////////////////////////////////////////////////
int LoadEmotionCmd( CEmotionCmd *lpEmotionCmd )
{
	FILE *fp;
	fp = Fopen( "./data/emotion.txt", "rt" );
	if( !fp ) return 0;
	
	char temp[256];
	while( fgets( temp, 256, fp ) )
	{
		if( temp[0] == ';' ) continue;
		lpEmotionCmd->AddCmd( EatRearWhiteChar(temp) );
	}
	fclose( fp );
	return 1;
}

void SendExitGuild()
{
	if (!CheckGuildCode(Hero->GetGuildCode())) 
	{	//< CSD-030324
		return;
	}	//> CSD-030324

	if( CheckGuildMaster( Hero ) ) return;		// 辨付绰 窍瘤 给窍霸..
	CallServer( CMD_EXIT_GUILD_SELF );
}

void ViewNk( char *name )
{
	EatRearWhiteChar( name );
	name = EatRearWhiteChar( name );
	LPCHARACTER target = ExistHe( name );
	if( !target ) target = Hero;
	
	Kein_PutMessage( KM_INFO, "[%s] Vysues NK:%3d", target->name, IsNK( target, N_VYSEUS ));
	Kein_PutMessage( KM_INFO, "[%s] Zypern NK:%3d", target->name, IsNK( target, N_ZYPERN ));
	Kein_PutMessage( KM_INFO, "[%s] Yilse  NK:%3d", target->name, IsNK( target, N_YILSE ));
}

extern int IsDead( LPCHARACTER ch );

void RecvGuildChatData( t_packet *p )
{
	if( IsDead( Hero ) ) return;
	
	static first = 1;
	if( first && !g_Menu_Variable.m_bGuildChatOn )
	{
		// 辨靛盔捞 皋矫瘤甫 焊陈嚼聪促. 辨靛 盲泼 疙飞绢甫 捞侩窍技夸 /#, /辨靛盲泼难扁, /辨靛盲泼掺扁
		Kein_PutMessage( KM_INFO, kein_GetMenuString( 70 ) );
		first = 0;
	}
	char *name = p->u.kein.guild_chat.name;
	char *msg = p->u.kein.guild_chat.msg;
	ChatMgr.AddString( name, msg, CHATTYPE_GUILD );//021001 lsw
}

void CheckShowMeDual()
{
	if( EquipItemAttr[WT_NECK].item_no == 10175 )
	{
		CallServer( CMD_SHOW_ME_DUAL_CHAR );
	}
	else
	{
		CItem *item = ItemUnit( 10175 );
		if( item )
			Kein_PutMessage( KM_FAIL, kein_GetMenuString( 78 ), item->GetItemHanName() );
	}	
}

⌨️ 快捷键说明

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