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

📄 menunetwork.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	case 2 :	CallOkCancelMessageBox( 0, 0, 0, lan->OutputMessage(5,16),0 );break;//010215 lsw
	default :	JustMsg( lan->OutputMessage(5,6)); break;
							}
								break;
	case CM_OPEN_SUPPER	:	switch( result )
							{
	case 10 :	CallOkCancelMessageBox( 0, 0, 0, lan->OutputMessage(5,17),0 );break;//010215 lsw
	case 20 :	CallOkCancelMessageBox( 0, 0, 0, lan->OutputMessage(5,18),0 );break;//010215 lsw
	case 30 :	CallOkCancelMessageBox( 0, 0, 0, lan->OutputMessage(5,19),0 );break;//010215 lsw
	default :	JustMsg( lan->OutputMessage(5,6)); break;
							}
		
	}
}


int GetLeveByExp(int nStep, DWORD exp)
{
	for (int i = 1; i < Num_Of_NPC_Lev; ++i)
	{
		if (nStep == NPC_Lev_Ref[i].nStep && exp <= NPC_Lev_Ref[i].nMaxExp)
			return i;
	}
	
	return Num_Of_NPC_Lev;
}

void RecvTacSkillExp( t_char_info_tac_skillexp *s )		// 13俺
{
	memcpy( &SCharacterData.TacticsExp, s, 13 * sizeof( DWORD ) );
	memcpy( Hero->aStepInfo, s->aStepInfo, 20* sizeof( char ) );
	
	for( int a=0; a<13; a++ )
	{
		SCharacterData.SkillId[a+88] = GetLeveByExp(Hero->aStepInfo[a + TAC_INDEX], SCharacterData.TacticsExp[a]);
		int tac_lv = SCharacterData.SkillId[a+88];
		SCharacterData.TacticsExpNext[a] = NPC_Lev_Ref[tac_lv].nMaxExp;
	}
}

void ReqTacSkillExp( )
{
	t_packet packet;
	
	packet.h.header.type = CMD_CHAR_INFO_TAC_SKILL_EXP;
	packet.h.header.size = 0;
	QueuePacket( &packet, 1 );
}

void CallServer( int type, void *msg, int size )
{
	t_packet packet;
	packet.h.header.type = type;
	packet.h.header.size = 0;
	if( size && msg )
	{
		memcpy( packet.u.data, msg, size );
		packet.h.header.size = size;
	}
	QueuePacket( &packet, 1 );
}

void RecvSkillExp( int type, t_SkillExp exp )		//31俺 楼府
{//021111 lsw
	SCharacterData.nJobSkill[type] = exp;
}

void AllReqSkillExp( int is_end )
{
	static int just_one = 0;
	
	if( is_end )	// 犁矫累 且锭, 
	{
		just_one = 0;
		return;
	}
	
	if( !just_one )	// 贸澜栏肺 胶懦 版氰摹甫 夸没茄促.
	{
		memset( SCharacterData.nJobSkill, 0, sizeof( DWORD )*MAX_MOTHER_SKILL ) ;
		just_one = 1;
		CallServer( CMD_REQ_SKILL_ALL );
	}
}

void OpenStatus()
{
	CallServer( CMD_OPEN_STATUS_REQ );
	CallServer( CMD_REQ_DMG );
}

void GetTatics()
{
	SCharacterData.tatics = 88;
	ItemAttr t = EquipItemAttr[WT_WEAPON];
	if( !t.item_no ) return;
	if( t.item_no/1000 == TOOL ) return;
	
	int type, num;
	GetItemNumber( t.item_no, type, num );
	CItem *item = ItemUnit( type, num );
	if( !item )	return;
	
	SCharacterData.tatics = item->GetSkillAbility();
}

void RecvStatusOpen( k_server_status_open *p )
{
	SCharacterData.beat = p->killmon;
	SCharacterData.ac	= p->ac;
	SCharacterData.mov = p->mov;
	SCharacterData.nCharacterAbility[FAME] = p->fame;
}

void RecvBankInventory( k_server_bank_item *i )
{
	int a = i->first;
	int b = i->second;
	
	memcpy( BankItemAttr[a][b], i->inv, sizeof(ItemAttr)*6 );
}

//RecvCharDisease( &p->u.kein.server_disease ); break;
void RecvParty( k_server_party *p )
{
	SCharacter *ch = &SCharacterData;
	for( int i=0; i<6; i++ )
	{
		strcpy( ch->party[i].m_Name, p->name[i] );
		ch->party[i].m_Gender = p->Gender[i];
		ch->party[i].m_ImageNo = p->Face[i];
		ch->party[i].m_Lv = p->Level[i];
		ch->party[i].m_Str = p->Str[i];
		ch->party[i].m_Class = p->Class[i];
	}
	/*
	*/
	
	//	CallServer( CMD_REQ_MY_PARTY );			// 颇萍盔甸吝 捞固 甸绢 柯 仇捞 乐绰瘤...
	//	SetExistMeOfParty( );					// 颇萍盔吝 唱绰 亲惑 炼牢茄 惑怕促.
}

void RecvRelation( k_server_relation *p )
{
	SCharacter *ch = &SCharacterData;
	for( int i=0; i<3; i++ )
	{
		strcpy( ch->relation[i].m_Name, p->name[i] );
		ch->relation[i].m_Gender = p->Gender[i];
		ch->relation[i].m_ImageNo = p->Face[i];
		ch->relation[i].m_Lv = p->Level[i];
		ch->relation[i].m_Str = p->Str[i];
		ch->relation[i].m_Class = p->Class[i];
	}
}

void RecvEmployment( k_server_party *p )
{
	SCharacter *ch = &SCharacterData;
	for( int i=0; i<6; i++ )
	{
		strcpy( ch->employment[i].m_Name, p->name[i] );
		ch->employment[i].m_Gender = p->Gender[i];
		ch->employment[i].m_ImageNo = p->Face[i];
		ch->employment[i].m_Lv = p->Level[i];
		ch->employment[i].m_Str = p->Str[i];
		ch->employment[i].m_Class = p->Class[i];
	}
}

int SendInputParty( int type, int ct, LpCharacterParty ch )		// 颇萍盔 肝扁 辑滚 傈价
{
	if (ch->ch != NULL)
	{ //< CSD-020628 : 某腐磐 捞寇俊绰 颇萍 阂啊
		switch (ch->ch->sprno)
		{ 
		case 0:
		case 1:
			{
				break;
			}
		default:
			{ 
				return 0;
			}
		} 
	} //> CSD-020628
	
	if( strcmp( SCharacterData.sCharacterName, mouse_ch.m_Name ) == 0 ) // 磊扁 磊脚篮 肝阑荐 绝寸.
	{
		MP3( SN_WARNING );
		if( type == PARTY )
			AddCurrentStatusMessage( 178, 189, 255, lan->OutputMessage(5,21) ); //010215 lsw
		else AddCurrentStatusMessage( 178, 189, 255, lan->OutputMessage(5,22) ); //010215 lsw
		return 0;
	}
	if( IsSameCharOfParty( type, &mouse_ch ) )	return 0; // 鞍篮 某腐磐啊 乐绰啊?
	if( !IsCheckLevelOfParty( type, &mouse_ch, ct) ) // 颇萍 殿狼 包拌甫 啊龙荐 乐绰 饭骇牢啊 犬牢
	{
		MP3( SN_WARNING );
		if( type == PARTY )
			AddCurrentStatusMessage( 178, 189, 255,lan->OutputMessage(5,23) ); //010215 lsw
		return 0;
	}
	if( !IsSameNation( type, &mouse_ch ) )
	{
		MP3( SN_WARNING );
		AddCurrentStatusMessage( 178, 189, 255, lan->OutputMessage(5,24) );//010215 lsw
		return 0;
	}
	
	t_packet packet;
	
	packet.h.header.type = CMD_DO_PARTY;
	{
		packet.u.kein.client_do_party.type= type;
		packet.u.kein.client_do_party.ct= (char) ct;
		strcpy( packet.u.kein.client_do_party.name, ch->m_Name );
	}
	packet.h.header.size = sizeof( k_client_do_party );
	QueuePacket( &packet, 1 );
	
	return 1;
}

void RecvPartyInfo( k_party_info *p )
{
	LpCharacterParty character;
	
	switch( p->type )
	{
	case PARTY :		character = &SCharacterData.party[p->index];		break;
	case RELATION :		character = &SCharacterData.relation[p->index];		break;
	case EMPLOYMENT	:	character = &SCharacterData.employment[p->index];	break;
	}
	
	strcpy( character->m_Name, p->m_Name );
	character->m_Gender	 = p->m_Gender;
	character->m_ImageNo = p->m_ImageNo;
	character->m_Lv		 = p->m_btLevel; // CSD-030806
	character->m_Str	 = p->m_Str;
	character->m_Class	 = p->m_Class;
	character->m_Join	 = (int) p->m_Join;	
	SetExistMeOfParty( );					// 颇萍盔吝 唱绰 亲惑 炼牢茄 惑怕促.
}

void RecvDeleteParty_server( int type, int index )
{
	LpCharacterParty character;
	
	switch( type )
	{
	case PARTY :		character = &SCharacterData.party[index];		break;
	case RELATION :		character = &SCharacterData.relation[index];	break;
	case EMPLOYMENT	:	character = &SCharacterData.employment[index];	break;
	}
	
	memset( character, 0, sizeof( CharacterParty ) );
}

void SendDeleteParty( int type, int ct )
{
	t_packet packet;
	
	packet.h.header.type = CMD_DELETE_PARTY;
	{
		packet.u.kein.client_do_party.type= type;
		packet.u.kein.client_do_party.ct= (char) ct;
	}
	packet.h.header.size = sizeof( k_client_delete_party );
	QueuePacket( &packet, 1 );
}

void SendLearnMagic( int magic_num )
{
	t_packet packet;
	
	packet.h.header.type = CMD_REQ_LEARN_MAGIC;
	{
		packet.u.kein.client_learn_magic.num = magic_num;
	}
	packet.h.header.size = sizeof( k_client_learn_magic );
	QueuePacket( &packet, 1 );
}

void RecvLearnMagicOk( int num )
{
	MP3( SN_LEARN_MAGIC );
	int menu;
	if( SMenu[MN_LEARN_MAGIC_BOOK].bActive )	menu = MN_LEARN_MAGIC_BOOK;
	else menu = 0;
	CallOkCancelMessageBox( menu, 0, 0, lan->OutputMessage(5,25),0 );//010215 lsw
	
	SCharacterData.MagicId[num] = true;
	if( SCharacterData.nCharacterData[SPELL] == PRIEST_SPELL ) num += 150;
	SubtractMoney( g_lpMT[num].Price );
	
	if( g_bMagicSelect ) 
	{
		if( SCharacterData.nCharacterData[SPELL] == WIZARD_SPELL && SCharacterData.nLevel > CHOBO_LEVEL ) MagicSetting();		// 困磊靛 俺凯老锭父
		else MagicSetting2();
	}
	else MagicSetting2();		// 矫裹 辑厚胶 烙矫...
}

void SendClientPreventing( int num )		// 龙捍 锅龋
{
	t_packet packet;
	
	packet.h.header.type = CMD_PREVENTING;
	{
		packet.u.kein.client_disease.disease_num = num;
	}
	packet.h.header.size = sizeof( k_client_disease );
	QueuePacket( &packet, 1 );
}

void RecvPreventingOk( short int num )
{
	int menu = 0;
	int money = 100;
	
	// 抗规俊 包茄 捣 啊廉客具 茄促.
	money = disease_tbl[num].price_prevent;
	
	if( SMenu[MN_HEAL_MAIN].bActive ) menu = MN_HEAL_MAIN;
	
	SCharacterData.disease_no_time[num] = 15*24*3600/6;
	SubtractMoney( money );
	char buf[127];
	sprintf(buf, lan->OutputMessage(5,26), SHideNomal[HN_HEAL_PREVENTING][num].temp );//010215 lsw
	CallOkCancelMessageBox( menu, 0, 0, buf ,0 );
}

void SendClientCureDisease( int num )
{
	t_packet packet;
	
	packet.h.header.type = CMD_CURE_DISEASE;
	{
		packet.u.kein.client_disease.disease_num = num;
	}
	packet.h.header.size = sizeof( k_client_disease );
	QueuePacket( &packet, 1 );
}

void RecvCureDiseaseOk( short int num )
{
	int menu = 0;
	int money = 100;
	
	// 抗规俊 包茄 捣 啊廉客具 茄促.
	money = disease_tbl[num].price_heal;
	
	if( SMenu[MN_HEAL_MAIN].bActive ) menu = MN_HEAL_MAIN;
	
	SubtractMoney( money );
	SCharacterData.disease[num] = 0;	// 摹丰
	char buf[127];
	sprintf(buf,lan->OutputMessage(5,27), SHideNomal[HN_HEAL_PREVENTING][num].temp );//010215 lsw
	CallOkCancelMessageBox( menu, 0, 0, buf ,0 );
}

//
//	item 荤绊 迫扁 绊摹扁 啊拜 夸没棺 傈价 罐绰 窃荐甸
//
void ReqItemValue_Sell( int type, POS pos )		// 混锭 绊磨锭 啊拜 啊廉 坷扁
{
	t_packet packet;
	switch( type )
	{
	case ITEM_SELL :	packet.h.header.type = CMD_REQ_ITEM_VALUE_SELL;		break;
	case ITEM_REPAIR :	packet.h.header.type = CMD_REQ_ITEM_VALUE_REPAIR;	break;
	}
	{
		packet.u.kein.server_delete_item.item_pos = pos;
	}
	packet.h.header.size = sizeof( k_server_delete_item );
	QueuePacket( &packet, 1 );
}

void ReqItemValue( int item_no )
{
	t_packet packet;
	
	packet.h.header.type = CMD_REQ_ITEM_VALUE;
	{
		packet.u.kein.client_item_no.item_no = item_no;
	}
	packet.h.header.size = sizeof( k_client_item_no );
	QueuePacket( &packet, 1 );
}

void RecvItemValue( int item_no, int money )
{
	int type, num;
	GetItemNumber( item_no, type, num );
	
	CItem *item = ItemUnit(type, num );
	if( !item ) return;
	
	item->curr_value = money;
}

void RecvItemValue_Sell( int item_no, int money )
{
	int type, num;
	GetItemNumber( item_no, type, num );
	
	CItem *item = ItemUnit(type, num );
	if( !item ) return;
	
	item->curr_value_sell = money;
}

void RecvItemValue_Repair( int item_no, int money )
{
	int type, num;
	GetItemNumber( item_no, type, num );
	
	CItem *item = ItemUnit( type, num );
	if( !item ) return;
	
	item->curr_value_repair = money;
}

void SendReqPartyInfo( int type, int num )		// 颇萍盔 瓷仿 傈价 夸没 风凭
{
	t_packet packet;
	
	packet.h.header.type =  CMD_SERVER_PARTY;
	{
		packet.u.kein.client_delete_party.type= (short int) type;
		packet.u.kein.client_delete_party.ct= (char) num;
	}
	packet.h.header.size = sizeof( k_client_delete_party );
	
	QueuePacket( &packet, 1 );
}

void SendClientInn( int type )
{
	t_packet packet;
	
	packet.h.header.type = CMD_CLIENT_INN;
	{
		packet.u.kein.client_inn.type= (char ) type;
	}
	packet.h.header.size = sizeof( k_client_inn );
	QueuePacket( &packet, 1 );
}

void RecvServerWakeUp()
{
	SCharacterData.sleep = CSC_AWAKE;
	StopWave( SN_SLEEP );
	StopWave( SN_REST );
	SetVolumeMusic( system_info.music );
	SetVolume( system_info.sound );
}

void RecvJoinGameWho( char *name )		// 捞抚栏肺 且鳖? 酒丛, 锅龋肺 且鳖?~~
{
	for( int i=0; i<6; i++ )
	{
		if( !strcmp(SCharacterData.party[i].m_Name, name) )
		{
			SCharacterData.party[i].m_Join = 1;
			SendReqPartyInfo( PARTY, i );					// 0620			YGI
			return;
		}
	}
	//	if( i==6) CallServer( CMD_REQ_PARTY_MEMBER );		// 犁傈价 夸没...
}

void RecvExitGameWho( char *name )		// 颇萍盔吝 穿焙啊 唱艾促..
{
	for( int i=0; i<6; i++ )
	{
		if( !strcmp(SCharacterData.party[i].m_Name, name) )
		{
			SCharacterData.party[i].m_Join = 0;
			return;
		}
	}
}

void RecvMyPartyExist( char *name )
{
	for( int i=0; i<6; i++ )
	{
		if( !strcmp(SCharacterData.party[i].m_Name, name) )
		{
			SCharacterData.party[i].m_Join = 1;
			return;
		}
	}
}

void RecvPartyJoinOk( char *name )
{
	for( int i=0; i<6; i++ )
	{
		if( !strcmp(SCharacterData.party[i].m_Name, name) )
		{

⌨️ 快捷键说明

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