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

📄 menufunctions.cpp

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

void ClickCharacter()		//  努腐 
{
	if( SMenu[MN_FRIEND_REGIST].bActive )
	{
		EWndMgr.SetTxt(HWND_3,g_GameInfo.lpcharacter->name);//021001 lsw
	}
}

void SendSelectPartyExp( char select )
{
	SendPacketDefault( CMD_CHANGE_PARTY_SELECT_EXP, &select, 1 );
	switch( select )
	{
		case PS_EXP :
			Kein_PutMessage( KM_INFO, kein_GetMenuString( 125 ), kein_GetMenuString( 122 ) );
			break;

		case PS_TACTIC :
			Kein_PutMessage( KM_INFO, kein_GetMenuString( 125 ), kein_GetMenuString( 123 ) );
			break;

		case PS_MAGIC_TAC :
			Kein_PutMessage( KM_INFO, kein_GetMenuString( 125 ), kein_GetMenuString( 124 ) );
			break;
	}
}

void CallGetGuildItem()
{
	short int guild_code = Hero->GetGuildCode(); // CSD-030324

	if( !guild_code ) 
	{
		Kein_PutMessage( KM_FAIL, kein_GetMenuString( 75 ) );
		return;
	}
	// if( !Hero->name_status.guild_master ) return false; 	// 殿鞭俊 蝶弗 力茄

	Kein_PutMessage( KM_OK, kein_GetMenuString( 144 ) );
	if( g_Menu_Variable.m_pGuildItem )
	{
		delete g_Menu_Variable.m_pGuildItem ;
		g_Menu_Variable.m_pGuildItem = 0;
	}

	CloseAllMenu();
	
	SendDirectDB( CMD_GET_GUILD_ITEM_FIRST, &guild_code, sizeof( short int ) );
	SendDirectDB( CMD_GET_GUILD_BOX_MONEY, &guild_code, sizeof( short int ) );

	CallMenu( MN_GUILD_ITEM_GET);
	CallMenu( MN_ITEM );

	return;
}

void CallGuildItemPut()
{	//< CSD-030324
	CloseAllMenu();
	CallMenu( MN_ITEM );
	CallMenu( MN_GUILD_ITEM_PUT);
	
	short int guild_code = Hero->GetGuildCode();
	SendDirectDB( CMD_GET_GUILD_ITEM_COUNT, &guild_code, sizeof( short int ) );		// 酒捞袍 肮荐 盎脚
}	//> CSD-030324

int GetMoneyItemNumber()
{
#ifdef CHANGE_MONEY_
	return IN_NEW_COINS;
	
#else
	return IN_COINS;
#endif	
}

// 辨靛 付胶磐 函版 滚瓢阑 喘范阑锭, 皋矫瘤 冠胶 剁快扁 傈 秦具 且老
void CallChangeMaster()
{	//< CSD-030324
	if( CheckGuildMaster( Hero ) )		// 辨付啊 滚瓢阑 喘范阑锭
	{
		SendGetGuildMasterAndSubMasterName( Hero->GetGuildCode() , 2 );		// 辑宏 付胶磐 捞抚 啊廉坷扁
		strcpy( SMenu[MN_GUILD_CHANGE_INFO].nField[4].temp, kein_GetMenuString( 137 ) );
	}
	else		// 何 辨付啊 滚瓢阑 喘范阑锭
	{
		strcpy( SMenu[MN_GUILD_CHANGE_INFO].nField[4].temp, kein_GetMenuString( 139 ) );
	}
}	//> CSD-030324

void CallHtmlMessageBox( int next_menu, char *file_name )
{
	if( is_mainmenu_active ) CallSmallMenu( MN_HTML_MESSAGEBOX );
	else 
	{
		SMenu[MN_HTML_MESSAGEBOX].bActive = true;
		y_MenuFocus = MN_HTML_MESSAGEBOX;
	}
	
	int line = g_Menu_Variable.LoadingGuildRegistExplain( file_name );

	WORD page =0;
	WORD page_max = line/5+1;
	SMenu[MN_HTML_MESSAGEBOX].work = MAKELONG( page, page_max );
	SMenu[MN_HTML_MESSAGEBOX].key = line;

	SMenu[MN_HTML_MESSAGEBOX].nTemp = next_menu;
}

int GetDegree2Param( int degree )		// degree 蔼阑 颇扼皋磐肺 函版茄促.
{
	static degree2param[] = { 4, 0, 1, 2, 3 };
	return degree2param[degree];
}

// 020620 YGI
bool CheckGuildPower( int type, LPCHARACTER ch )
{	//< CSD-030324
	if( !ch ) return 0;
	if( !ch->GetGuildCode() ) return 0;
	if( type < 0 || type > GDP_MAX ) return 0;
	static bool power_table[][5] = {
		{ 1, 1, 0, 0, 0 },		// 辨靛 啊涝				// GDP_JOINING
		{ 1, 1, 0, 0, 0 },		// 辨靛 傈眉 皋矫瘤			// GDP_BBS
		{ 1, 0, 0, 0, 0 },		// 辨靛盔 流氓函版			// GDP_CHANGE_DEGREE		// 020529 acer
		{ 1, 1, 0, 0, 0 },		// 辨靛 芒绊 捞侩			// GDP_GUILD_BOX
		{ 1, 1, 0, 0, 0 },		// 碍力 辨靛 呕硼 矫虐扁	// GDP_EXIT_GUILD_HIM
		{ 1, 0, 0, 0, 0 },		// 辨靛 付农 函版			// GDP_CHANGE_MARK
		{ 1, 0, 0, 0, 0 },		// 辨靛 流氓 疙 函版		// GDP_CHANGE_DEGREE_INFO
		{ 1, 0, 0, 0, 0 },		// 辨靛 付胶磐 函版			// GDP_GUILD_CHANGE_MASTER
		{ 1, 0, 0, 0, 0 },		// 辨靛 力芭				// GDP_GUILD_BREAK
		{ 1, 0, 0, 0, 0 },		// 何辨付 殿废				// GDP_REGIST_SUB_MASTER
		{ 0, 1, 1, 1, 1 },		// 胶胶肺 辨靛 呕硼			// GDP_EXIT_GUILD_SELF
		{ 1, 0, 0, 0, 0 },		// 骏器府酒 荤扁 鼻茄		// GDP_BUY_GUILD_HOUSE
	};

	int para = GetDegree2Param( ch->name_status.guild_master );
	return power_table[type][para];
}	//> CSD-030324

void LoadFileText( char *file_name )
{
	FILE *fp = Fopen( file_name, "rt" );
	if( !fp ) return;

	/*
	if( g_Menu_Variable.m_szFileTextPut ) 
	{
		delete [] g_Menu_Variable.m_szFileTextPut;
		g_Menu_Variable.m_szFileTextPut = 0;
	}
	*/

	char temp[1024];
	while( fgets( temp, 1024, fp ) )
	{
		if( CheckContinueLine( temp[0] ) ) continue;
		g_Menu_Variable.m_szFileTextPut += temp;
		g_Menu_Variable.m_szFileTextPut += "\n";
	}

	fclose( fp );
}

void CallNationItem()
{
	CallServer( CMD_GET_NATION_ITEM );
	CallSmallMenu( MN_NATION_ITEM );
}

void CallGuildHouseInfo()
{
	char nation = Hero->name_status.nation;
	CallServer( CMD_GUILD_HOUSE_INFO );
	//SendDirectDB( CMD_GUILD_HOUSE_INFO, &nation, 1 );
}

char *GetIsGotGuildHouse( int time )		// 矫埃阑 啊瘤绊 家蜡 厚家蜡甫 魄窜.
{
	int mon, day, hour;
	GetRealTime( mon, day, hour );
	int str = 0;
	if( !time )
	{
		str = 166; // 绝澜
	}
	else if( time > 30 && day >= 25 )
	{
		str = 164; // 楷厘
	}
	else if( time < 5 || day >= 25 )
	{
		str = 165; // 固楷厘						
	}
	else
	{
		str = 163; // 家蜡
	}
	return kein_GetMenuString( str ); 
}


//020808 YGI -----------------------------
bool DecoadFile( char *filename, void *pData, int size )
{
	CHSEL_STREAM m_hsel;
	FILE *fp = Fopen( filename, "rb" );
	if( !fp ) return false;
	
	int nVersion = 0;
	fread( (void*)(&nVersion), sizeof(int), 1, fp ); 
	if (m_hsel.GetVersion() != nVersion)  return false;
	HselInit deinit;
	fread( (void*)(&deinit), sizeof(HselInit), 1, fp );
	if (!m_hsel.Initial(deinit))  return false;
	fread( pData, 1, size, fp );
	m_hsel.Decrypt((char *)pData, size);
	fclose( fp );
	return true;
}

bool IncordFile( char *filename, void *pData, int size )
{
	CHSEL_STREAM m_hsel;
	FILE *fp = Fopen( filename, "wb" );
	if( !fp ) return false;

	HselInit eninit;
	eninit.iEncryptType	=	HSEL_ENCRYPTTYPE_RAND;
	eninit.iDesCount	=	HSEL_DES_TRIPLE;
	eninit.iCustomize	=	HSEL_KEY_TYPE_DEFAULT;
	eninit.iSwapFlag	=	HSEL_SWAP_FLAG_ON;

	if (!m_hsel.Initial(eninit)) 
	{
		return false;
	}

	HselInit deinit;
	deinit = m_hsel.GetHSELCustomizeOption();
	const int nVersion = m_hsel.GetVersion();
	fwrite((void *)(&nVersion), sizeof(nVersion), 1, fp ); 
	fwrite((void *)(&deinit), sizeof(HselInit), 1, fp ); 
	m_hsel.Encrypt((char*)pData, size);
	fwrite( pData, 1, size, fp );
	fclose( fp );
	return true;
}
// ---------------------------------------------------

#ifdef LIGHT_VERSION_
CLightVersion *g_pLightVersion;
int CLightVersion::LoadLightVersionMap()
{
	FILE *fp;
	fp = Fopen( "./data/light_map.txt", "rt" );
	if( !fp ) return 0;

	Clear();		// 函荐 努府绢

	char temp[255];
	while( fgets( temp, 255, fp ) )
	{
		if( CheckContinueLine( temp[0] ) ) continue;
		m_nCount++;
	}

	fseek( fp, 0, SEEK_SET );
	m_szlpMap = new string[m_nCount];

	int count = 0;
	while( fgets( temp, 255, fp ) )
	{
		if( CheckContinueLine( temp[0] ) ) continue;
		strupr( temp );
		m_szlpMap[count++] = temp;
	}

	fclose( fp );
	return 1;
}

int CLightVersion::IsGotoMap( char *mapname )
{
	for( int i=0; i<m_nCount; i++ )
	{
		if( strcmp( mapname, m_szlpMap[i].c_str() ) == 0 ) return 1;
	}
	return 0;
}

int CLightVersion::LoadLightVersionWeapon()
{
	FILE *fp;
	fp = Fopen( "./data/light_weapon.txt", "rt" );
	if( !fp ) return 0;

	Clear();		// 函荐 努府绢

	char temp[255];
	while( fgets( temp, 255, fp ) )
	{
		if( CheckContinueLine( temp[0] ) ) continue;
		m_nWeaponCount++;
	}

	fseek( fp, 0, SEEK_SET );
	m_pWeapon = new k_light_version_weapon[m_nWeaponCount];

	int count = 0;
	char *token;
	int data = 0;
	while( fgets( temp, 255, fp ) )
	{
		if( CheckContinueLine( temp[0] ) ) continue;
		
		token = strtok( temp, "\t\n" );
		if( !token ) continue;
		data = atoi( token );
		m_pWeapon[count].weapon[0] = data;

		token = strtok( NULL, "\t\n" );
		data = atoi( token );
		m_pWeapon[count].weapon[1] = data;

		token = strtok( NULL, "\t\n" );
		data = atoi( token );
		m_pWeapon[count].weapon[2] = data;

		token = strtok( NULL, "\t\n" );
		data = atoi( token );
		m_pWeapon[count].weapon[3] = data;

		count++;
	}

	fclose( fp );
	return 1;
}
//021030 YGI
int CLightVersion::GetLightVersionWeapon( int sex, int weapon_num )
{
	if( !weapon_num ) return 0;
	// 0捞 咯磊 1捞 巢磊捞扁 锭巩俊 鉴辑甫 第笼绰促.

	sex = !sex;

	for( int i=0; i<m_nWeaponCount; i++ )
	{
		if( m_pWeapon[i].weapon[sex] == weapon_num ) 
			return m_pWeapon[i].weapon[sex+2];
	}
	return 0;
}

#endif



//021030 YGI
int RecvEventObject( k_event_object *pData )
{
	k_event_object_sound *pData3 = (k_event_object_sound *)pData;
	k_event_sound *pData2 = (k_event_sound *)pData;

	int sound = ReturnBGMNumber(MapNumber);
	if( sound > 0  )
	{
		StopWave(sound);
	}

	if( g_Menu_Variable.m_pEventObjcet )
	{
		delete g_Menu_Variable.m_pEventObjcet;
		g_Menu_Variable.m_pEventObjcet = 0;
	}

	if( pData->active & ( g_Menu_Variable.ACTIVE_EVENT_OBJECT | g_Menu_Variable.ACTIVE_EVENT_SOUND ) )
	{
		g_Menu_Variable.m_pEventObjcet = new k_event_object_sound;
		if( pData->active & g_Menu_Variable.ACTIVE_EVENT_OBJECT )
		{
			*g_Menu_Variable.m_pEventObjcet = *pData3;
		}
		else
		{
			g_Menu_Variable.m_pEventObjcet->active = pData2->active;
			g_Menu_Variable.m_pEventObjcet->sound = pData2->sound;
		}
	}

	return 1;
}

// 021107 YGI
void SendEvnetMoveMap()
{
	if( !g_Menu_Variable.m_pEventMoveMap ) return;
	if( !g_Menu_Variable.m_pEventMoveMap->IsCanMove() ) return;
	CallServer( CMD_EVENT_MOVE_MAP, &g_Menu_Variable.m_pEventMoveMap->data.event_no, sizeof(int) );
}

⌨️ 快捷键说明

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