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

📄 menunetwork.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
{
	if( is_king )
	{
		MP3( SN_LOGOUT );
		AddCurrentStatusMessage( 255,255,255,lan->OutputMessage(3,69) );//010215 lsw
		AddCurrentStatusMessage( 255,255,255, lan->OutputMessage(3,70));//010215 lsw
		AddCurrentStatusMessage( 255,255,255, lan->OutputMessage(3,73));//010215 lsw
		Hero->name_status.nation = 1;
	}
	else
	{
		MP3( SN_LOGOUT );
		AddCurrentStatusMessage( 255,0,0, lan->OutputMessage(3,71));//010215 lsw
		AddCurrentStatusMessage( 255,0,0, lan->OutputMessage(3,72));//010215 lsw
		AddCurrentStatusMessage( 255,0,0, lan->OutputMessage(3,73));//010215 lsw
		Hero->name_status.nation = 0;
	}
}


//////////////////////////////////////////////////////////////////////////////
//
//	辨靛 疙飞绢甸
//
void SendGuildExit( char * name )		// 辨靛盔阑 呕硼矫挪促.
{
	if( !CheckGuildPower( GDP_EXIT_GUILD_HIM, Hero ) )		// 鼻茄捞 乐唱?
	{
		Kein_PutMessage( KM_FAIL, kein_GetMenuString( 146 ) );	// 鼻茄捞 绝嚼聪促.
		return;
	}
	LPCHARACTER ch = ExistHe( name );
	if( !ch )
	{
		// 辑滚肺 朝赴促.		// 林函俊 绝阑锭...
		t_packet p;
		
		p.h.header.type = CMD_GUILD_EXIT_COMMAND_GLOBAL;
		strcpy( p.u.kein.default_name, name );
		p.h.header.size = strlen( name )+1;
		QueuePacket( &p, 1 );
		return;
		/*
		MP3( SN_WARNING );
		AddCurrentStatusMessage( 200,60,60, lan->OutputMessage(3,82) );//010215 lsw
		return;
		*/
	}
	if( strcmp( ch->name, Hero->name ) == 0 )
	{
		MP3( SN_WARNING );
		AddCurrentStatusMessage( 200,60,60, lan->OutputMessage(3,83) );//010215 lsw
		return;
	}

	if( Hero->GetGuildCode() != ch->GetGuildCode() )
	{	//< CSD-030324
		MP3( SN_WARNING );
		AddCurrentStatusMessage( 200,60,60, lan->OutputMessage(3,84) );//010215 lsw
		return;
	}	//> CSD-030324
	
	t_packet p;
	p.h.header.type = CMD_GUILD_EXIT_COMMAND;
	p.u.kein.default_short_int = ch->id;
	p.h.header.size = sizeof( short int );
	QueuePacket( &p, 1 );
}

void RecvGuildExistYou( )
{	//< CSD-031001
	MP3(SN_WARNING );
	AddCurrentStatusMessage( 200,60,60, lan->OutputMessage(3,85) );//010215 lsw
	Hero->SetGuildCode(0);
	Hero->name_status.guild_master = 0;	
}	//> CSD-031001

void RecvGuildExistOk(  t_packet *p )
{	//< CSD-031001
	LPCHARACTER target = ReturnCharacterPoint( p->u.kein.default_short_int);
	if( !target ) return;
	
	MP3(SN_WARNING );
	AddCurrentStatusMessage( 200,60,60,lan->OutputMessage(3,86), target->name );//010215 lsw
	target->SetGuildCode(0);
	target->name_status.guild_master = 0;	
}	//> CSD-031001

void RecvGuildExistWho( t_packet *p )
{	//< CSD-031001
	LPCHARACTER target = ReturnCharacterPoint( p->u.kein.default_short_int );
	if( !target ) return;
	
	if( !CheckGuildCode( target->GetGuildCode() ) ) 
	{	
		return;
	}	
	 
	MP3(SN_WARNING );
	AddCurrentStatusMessage( 200,60,60, lan->OutputMessage(3,87), target->name, g_GuildMgr[target->GetGuildCode()].m_szName ); // CSD-030324
	target->SetGuildCode(0); 
	target->name_status.guild_master = 0;
}	//> CSD-031001

// 辨靛 啊涝
void SendGuildJoin( char *name )
{
	if( !name[0] )
	{
		MP3( SN_WARNING );
		AddCurrentStatusMessage( 200,60,60, lan->OutputMessage(3,88) );//010215 lsw
		return;
	}
	
	if( !CheckGuildPower( GDP_JOINING, Hero ) )		// 鼻茄捞 登唱?
	{
		Kein_PutMessage( KM_FAIL, kein_GetMenuString( 146 ) );
		//MP3( SN_WARNING );
		//AddCurrentStatusMessage( 200,60,60, lan->OutputMessage(3,89) );//010215 lsw
		return;
	}
	LPCHARACTER ch = ExistHe( name );
	if( !ch )
	{
		MP3( SN_WARNING );
		AddCurrentStatusMessage( 200,60,60, lan->OutputMessage(3,90) );//010215 lsw
		return;
	}
	if( strcmp( ch->name, Hero->name ) == 0 )
	{
		MP3( SN_WARNING );
		AddCurrentStatusMessage( 200,60,60, lan->OutputMessage(3,91) );//010215 lsw
		return;
	}
	if( CheckGuildCode( ch->GetGuildCode() ) )
	{	//< CSD-030324
		MP3( SN_WARNING );
		AddCurrentStatusMessage( 200,60,60, lan->OutputMessage(3,92) );//010215 lsw
		return;
	}	//> CSD-030324
	if( ch->name_status.nation != Hero->name_status.nation )
	{
		MP3( SN_WARNING );
		AddCurrentStatusMessage( 200,60,60, lan->OutputMessage(3,93) );//010215 lsw
		return;
	}
	
	
	
	t_packet p;
	
	p.h.header.type = CMD_GUILD_JOIN_SERVER;
	p.u.kein.default_short_int = ch->id;
	p.h.header.size = sizeof( short int );
	QueuePacket( &p, 1 );
}

void RecvGuildJoinOk( t_packet *p )
{	//< CSD-031001
	int target_id = p->u.kein.guild_join_ok.target_id;
	int guild_code = p->u.kein.guild_join_ok.guild_code;
	
	LPCHARACTER target = ReturnCharacterPoint( target_id );
	if( !target ) return;
	
	MP3( SN_QUEST_END );
	AddCurrentStatusMessage( 200,60,60, lan->OutputMessage(3,94), target->name, g_GuildMgr[guild_code].m_szName );
	
	target->SetGuildCode(guild_code);
	target->name_status.guild_master = 0;
}	//> CSD-031001

void RecvGuildJoinFail( t_packet *p )
{
	int target_id = p->u.kein.default_short_int;
	LPCHARACTER target = ReturnCharacterPoint( target_id );
	if( !target ) return;
	
	AddCurrentStatusMessage( 200,60,60, lan->OutputMessage(3,95), target->name );//010215 lsw
}

// 020620 YGI
void RecvGuildJoinConfirm( t_packet *p )
{	//< CSD-030324
	const int guild_ma_id = p->u.kein.default_short_int;		// 辨靛 付胶磐
	LPCHARACTER guild_ma = ReturnCharacterPoint( guild_ma_id );
	
	if( !guild_ma ) {return;}
	if( !CheckGuildPower( GDP_JOINING, guild_ma ) ) return;		// 辨靛 付胶磐啊 酒囱版快
	
	ChatMgr.RecvNeedYesNoMsg( YN_GUILD_JOIN_OK, guild_ma_id, lan->OutputMessage(3,96), g_GuildMgr[guild_ma->GetGuildCode()].m_szName, guild_ma->name );//010215 lsw
}	//> CSD-030324

void SendGuildJoinConfirmOk( short int target_id )		// 辨靛 啊涝阑 倾遏沁促.
{
	t_packet p;
	
	p.h.header.type = CMD_GUILD_JOIN_CONFIRM_OK;
	p.u.kein.default_short_int = target_id;
	p.h.header.size = sizeof( short int );
	QueuePacket( &p, 1 );
}

void SendGuildJoinConfirmNot( short int target_id )		// 辨靛 啊涝阑 芭何沁促.
{
	t_packet p;
	
	p.h.header.type = CMD_GUILD_JOIN_CONFIRM_NOT;
	p.u.kein.default_short_int = target_id;
	p.h.header.size = sizeof( short int );
	QueuePacket( &p, 1 );
}

////////////////////
// 利 胶乃
int scan_target_count;		// 焊咯临 肮荐
k_x_y scan_target_xy[MAX_ENEMY_SCAN_TARGET];
int scan_target_view_time;

void RecvScanTarget( t_packet *p )
{
	scan_target_view_time = 500;
	scan_target_count = p->u.kein.scan_target.count;
	
	memcpy( scan_target_xy, p->u.kein.scan_target.xy, sizeof( k_x_y )*scan_target_count );
	AddCurrentStatusMessage( 200,60,60, lan->OutputMessage(3,101) );//010215 lsw
}

void SendGuildAllMsg( char *msg )		// 辨靛 傍瘤
{
	ConvString( msg );
	if( !msg[0] )
	{
		MP3( SN_WARNING );
		AddCurrentStatusMessage( 200,60,60, lan->OutputMessage(3,97) );//010215 lsw
		return;
	}
	
	if( !CheckGuildPower( GDP_BBS, Hero ) )		// 鼻茄捞 登唱?
	{
		Kein_PutMessage( KM_FAIL, kein_GetMenuString( 146 ) );
		//MP3( SN_WARNING );
		//AddCurrentStatusMessage( 200,60,60, lan->OutputMessage(3,98) );//010215 lsw
		return;
	}
	
	t_packet p;
	
	p.h.header.type = CMD_GUILD_ALL_MSG;
	strcpy( p.u.kein.default_msg, msg );
	p.h.header.size = strlen(msg)+1;
	QueuePacket( &p, 1 );
}

void SendGuildChangeEachLevel( char *text )		// 辨靛盔狼 殿鞭阑 官槽促.
{
	if( !CheckGuildPower( GDP_CHANGE_DEGREE, Hero ) )		// 鼻茄捞 登唱?
	{
		Kein_PutMessage( KM_FAIL, kein_GetMenuString( 146 ) );		// 2捞惑父 啊瓷
		return;
	}
	
	AddCurrentStatusMessage( 160,160,250, lan->OutputMessage(3,99) );//010215 lsw
	
	int each_level_to_real_level[] = { 0, 1, 2, 3, 4, 0 };
	LPCHARACTER target;
	
	int lv;
	char name[20];
	if( text[0] == NULL ) goto ERR_;
	char *token;
	token = strtok( text, " " );
	if( !token ) goto ERR_;
	lv = atoi( token );
	if( !lv ) goto ERR_;
	
	token = strtok( NULL, " \n" );
	if( !token ) goto ERR_;
	
	strncpy( name, token, 19 );
	name[19] = 0;
	
	if( lv <= 0 || lv > 5 ) 
	{
		AddCurrentStatusMessage( 160,160,250, lan->OutputMessage(3,100) );//010215 lsw
		return;
	}
	if( name[0] == NULL ) 
	{
		AddCurrentStatusMessage( 160,160,250, lan->OutputMessage(3,102) );//010215 lsw
		return;
	}
	target = ExistHe( name );
	if( !target ) 
	{
		AddCurrentStatusMessage( 160,160,250, lan->OutputMessage(3,103) );//010215 lsw
		return;
	}
	if (target->GetGuildCode() != Hero->GetGuildCode())
	{	//< CSD-030324
		AddCurrentStatusMessage( 160,160,250, lan->OutputMessage(3,104) );//010215 lsw
		return;
	}	//> CSD-030324
	if( target == Hero )
	{
		AddCurrentStatusMessage( 160,160,250, lan->OutputMessage(3,105) );//010215 lsw
		return;
	}
	
	if( target->name_status.guild_master == each_level_to_real_level[lv] )
	{
		AddCurrentStatusMessage( 160,160,250, lan->OutputMessage(3,106) );//010215 lsw
		return;
	}
	
	if( lv == 1 )
	{
		AddCurrentStatusMessage( 160,160,250, lan->OutputMessage(3,107) );//010215 lsw
		return;
	}
	
	t_packet p;			// 辑滚肺 傈价
	
	p.h.header.type = CMD_GUILD_EACH_LEVEL;
	p.u.kein.guild_each_level.target_id = target->id;
	p.u.kein.guild_each_level.each_level = lv;
	p.h.header.size = sizeof( k_guild_each_level );
	QueuePacket( &p, 1 );
	return;
	
	
ERR_ :
	AddCurrentStatusMessage( 160,160,250, lan->OutputMessage(3,108) );//010215 lsw
	return;
	
	
}

void RecvGuildEachLevel( t_packet *p )		// 穿焙啊 殿鞭捞 官布促.
{
	int each_level = p->u.kein.guild_each_level.each_level;
	int target_id =  p->u.kein.guild_each_level.target_id;
	
	LPCHARACTER target = ReturnCharacterPoint( target_id );
	if( !target ) return;
	
	int each_level_to_real_level[] = { 0, 1, 2, 3, 4, 0 };
	int old_level = target->name_status.guild_master;
	target->name_status.guild_master = each_level_to_real_level[each_level];
	
	
	if( target == Hero )		// 磊扁 磊脚捞搁
	{	//< CSD-030324
		int real_level_to_each_level[]={ 5, 1, 2, 3, 4};
		if( each_level < real_level_to_each_level[old_level] ) // 铰拜 
		{
			AddCurrentStatusMessage( 60,60,250,lan->OutputMessage(3,109), CallGuildDegreeName( target->GetGuildCode(), target->name_status.guild_master ) );//010215 lsw
		}
		else
		{
			AddCurrentStatusMessage( 60,60,250, lan->OutputMessage(3,110), CallGuildDegreeName( target->GetGuildCode(), target->name_status.guild_master ) );//010215 lsw
		}
	}	//> CSD-030324
	else
	{
		AddCurrentStatusMessage( 60,60,250, lan->OutputMessage(3,111), target->name );//010215 lsw
	}	
}

void RecvGuildJoinConfirmIng( )
{
	AddCurrentStatusMessage( 200,60,60, lan->OutputMessage(3,112));//010215 lsw
}

// gm俊 殿废且父茄 磊拜捞 救登绰 酒捞 吝 割割父 眠妨辑 辑滚肺 焊郴 拳老肺 父电促.
void CheckAndSendGmRegist( int guild_count)	
{
	static char name[21]; 
	if( strcmp( name, SCharacterData.sCharacterName ) == 0 )		// 捞固 傈价沁促.
	{
		return;
	}
	//011012 lsw >
	if( SCharacterData.nJobSkill[guild_count].skillexp >= 950000 )	// 胶懦吝 绢蠢巴捞 95 捞惑牢瘤...
		//011012 lsw <
	{
		SendGMRegist( guild_count, CMD_GM_REGIST2 );
		strcpy( name, SCharacterData.sCharacterName );
	}
	//strcpy( name, SCharacterData.sCharacterName );
}

void SendGMRegist( int guild_count, int type  )
{
	t_packet p;			// 辑滚肺 傈价
	
	p.h.header.type = type;
	if( GetSysInfo( SI_GAME_MAKE_MODE ) )
	{
		p.h.header.type = CMD_GM_REGIST_GAMEMAKEMODE;
	}
	p.u.kein.gm_regist.gm_list_index= guild_count;
	p.h.header.size = sizeof( k_gm_regist );
	QueuePacket( &p, 1 );
	return;
}

void RecvBbsAll( t_packet *p )
{
	int type = p->u.kein.bbs_all.type;		// 绢恫 傍瘤荤亲捞衬?
	char *name = p->u.kein.bbs_all.name;
	
	switch( type )
	{
	case BA_GM_REGIST : ShowComeOutGM( name ); break;
	}
}

// 焊咯林绰 流诀 官操扁
int GetJobNumberByName( char *name )
{//021030 lsw
	for( int i=0; i< MAX_GM_MAIN;i++ )
	{
		if( ::strcmp( g_GmMain[i].name, name ) == 0 ) return i;//021111 lsw
	}
	return -1;
}

int GetNationByNationName( char *text )
{
	int ret = -1;
	if( !text[0] ) return ret;
	
	for( int i=3; i<7; i++ )
	{
		if( strcmp( NationName[i], text ) == 0 ) return i;
	}
	return ret;
}

void SendReqStopWar( char *text )
{
	if( Hero->name_status.king != 1 ) return;		// 瘤档磊父 荤侩且荐 乐促.
	int nation = GetNationByNationName( text );
	
	if( nation == -1 || nation == Hero->name_status.nation )
	{
		MP3( SN_WARNING );
		AddCurrentStatusMessage( 255, 0, 0, lan->OutputMessage(3,114) );//010215 lsw
		return;
	}
	
	t_packet p;			// 辑滚肺 傈价
	p.h.header.type = CMD_REQ_STOP_WAR_TO_LOGIN;
	p.u.kein.default_char = nation;
	p.h.header.size = sizeof( char );
	QueuePacket( &p, 1 );
	
	AddCurrentStatusMessage( 255, 255, 255, lan->OutputMessage(3,115) );//010215 lsw
}

int ScanTarget( int nation )		// 利阑 胶乃
{
	if( Hero->name_status.nation != nation ) return 0;
	
	//acer6
	static DWORD time = 0;
	if( (g_curr_time - time) < 20 ) return 0;
	time = g_curr_time;
	
	if (!Hero->JoinLocalWar) return 0;
	if( ViewSmallMap2(0,0) == 0 )		// 瘤档啊 绝促.
	{
		AddCurrentStatusMessage( 200,60,60, lan->OutputMessage(3,117) );//010215 lsw
		return 1;
	}
	
	main_interface.data[IF_MAP] = true;
	CallMenu(  MN_SMALL_MAP );
	SMenu[MN_SMALL_MAP].nTemp = 0;
	
	CallServer( CMD_SCAN_TARGET );
	return 1;
}

void RecvScriptMessageBox( t_packet *p )
{
	KeinMessageBox( 0, p->u.kein.default_msg );		// 020701 YGI
}

void SendSalvationMoney( DWORD money )
{
	t_packet p;			// 辑滚肺 傈价
	
	p.h.header.type = CMD_SALVATION_MONEY;
	p.u.kein.default_dword= money;
	p.h.header.size = sizeof( DWORD );
	QueuePacket( &p, 1 );
}

void RecvRepVationMoney( t_packet *p )
{
	DWORD money = p->u.kein.default_dword;
	TotalSalvation

⌨️ 快捷键说明

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