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

📄 menufunctions.cpp

📁 国内著名网络游戏dragon的客户端登陆用完整源码 配套一起上传的服务端部分可开服 无说明文档
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "stdafx.h"
#include "Hangul.h"
#include "dragon.h"
#include "SmallMenuSet.h"
#include "Menu.h"
#include "SmallMenu.h"
#include "Hong_Sub.h"
#include "Hong_Sprite.h"
#include "Char.h"
#include "MenuSet.h"
#include "MenuNetwork.h"
#include "object.h"
#include "linecommand.h"
#include "directsound.h"
#include "menudef2.h"
#include "menufunctions.h"
//021030 YGI
#include "gameproc.h"
#include "map.h"


extern LPCHARACTER Hero;
// 林牢傍 某腐磐啊 辨靛甫 脚没且 荐 乐绰瘤 魄窜
// type 捞 1捞搁 抗厚 辨靛 type 捞 2 捞搁 沥侥 辨靛 
// 角菩矫 角菩 胶飘傅 锅龋 馆吵
extern int CheckOtherCharacterGuild();
int CanRegistGuild( int type )
{	//< CSD-030324
	int nStr = -1;
	switch( type )
	{
		case 1:			// 烙矫 辨靛 殿废 炼扒 眉农
			{
				nStr = 0;
				if( Hero->GetGuildCode() )  nStr = 50;		// 捞固 啊涝秦 乐促.
				else if( Hero->lv < 40 ) nStr = 51;					
				else if( GetItemMuchByMuchItem( IN_BLUE_SIGNET ) < 40 ) nStr = 52;
				else if( CheckOtherCharacterGuild() ) 
				{
					nStr = 50;
					Kein_PutMessage( KM_FAIL, kein_GetMenuString(129) ); 
				}
				break;
			}
		case 2 :		// 沥侥 辨靛 殿废 炼扒 眉农
			{
				nStr = 0;
				if( !Hero->GetGuildCode() ) nStr = 56;		// 刚历 抗厚 辨靛俊 啊涝秦具 茄促.
				else if( g_GuildMgr[Hero->GetGuildCode()].first != 1 ) nStr = 50;	// 捞固 促弗 辨靛俊 啊涝秦 乐促.
				else if( Hero->name_status.guild_master != 1 ) nStr = 57;  // 辨靛 付胶磐 父 沥侥 辨靛 啊涝阑 且 荐 乐促.
				else if( GetItemMuchByMuchItem( IN_RED_SIGNET ) < 100 ) nStr = 52;
				break;
			}
	}

	return nStr;
}	//> CSD-030324

int CallDualInterFace(int type)
{
	for (int i = 0; i < 3; ++i)
	{
		const string strName = g_mgrDual.GetClassName(Hero->class_type,
														i, 
														Hero->aStepInfo[CLS_STEP] + 1,
														Hero->lv);
		strcpy(SMenu[MN_DUAL_MAIN].nField[i].temp, strName.c_str());
	}

	const string strNone = lan->OutputMessage(1, 38);

	switch (SCharacterData.nCharacterData[SPELL])
	{
	case WIZARD_SPELL: // 付过荤 胶歧阑 啊瘤绊 乐绰 版快
		{ 
			const string strName = g_mgrDual.GetClassName(Hero->class_type,
															WIZARD, 
															Hero->aStepInfo[CLS_STEP] + 1,
															Hero->lv);
			strcpy(SMenu[MN_DUAL_MAIN].nField[WIZARD].temp, strName.c_str());
			strcpy(SMenu[MN_DUAL_MAIN].nField[PRIEST].temp, strNone.c_str());
			break;
		}
	case PRIEST_SPELL: // 己流磊 胶歧阑 啊瘤绊 乐绰 版快
		{       
			const string strName = g_mgrDual.GetClassName(Hero->class_type,
															PRIEST, 
															Hero->aStepInfo[CLS_STEP] + 1,
															Hero->lv);
			strcpy(SMenu[MN_DUAL_MAIN].nField[PRIEST].temp, strName.c_str());
			strcpy(SMenu[MN_DUAL_MAIN].nField[WIZARD].temp, strNone.c_str());
			break;
		}
	}

	const string strExplain = g_mgrDual.GetDulaExplain(Hero->class_type, 0);

	strcpy(SMenu[MN_DUAL_MAIN].nField[6].temp,  strExplain.c_str());  

	SMenu[MN_DUAL_MAIN].work = 0;

	switch (type)
	{
	case MT_DUAL_CHANGE: // 掂倔	努贰胶肺 傈券
		{
			SMenu[MN_DUAL_MAIN].nImageNumber = 2;
			SMenu[MN_DUAL_MAIN].nField[5].nRectImage = 7;
			SMenu[MN_DUAL_MAIN].nField[5].nImageNumber = 6;
			break;
		}
	case MT_DUAL_DIVIDE: // 掂倔 窜拌 惑铰
		{
			SMenu[MN_DUAL_MAIN].nImageNumber = 1;
			SMenu[MN_DUAL_MAIN].nField[5].nRectImage = 10;
			SMenu[MN_DUAL_MAIN].nField[5].nImageNumber = 9;
			SMenu[MN_DUAL_MAIN].work = Hero->aStepInfo[DUAL_CLS];//030611 lsw
			break;
		}
	}

	SMenu[MN_DUAL_MAIN].nTemp = type;
	CallSmallMenu(MN_DUAL_MAIN);
	return 1;
}

void DoDualOKButton(int type, int select)
{
  MP3(SN_DUAL_SELECT);

	switch (type)
	{	//< CSD-021003
	case MT_DUAL_CHANGE: // 掂倔	努贰胶肺 傈券
		{
			MP3(SN_DUAL_OK);
			g_mgrDual.SendDualChange(Hero, select);
			break;
		}
	case MT_DUAL_DIVIDE: // 掂倔 窜拌 惑铰
		{
			MP3(SN_DUAL_OK);
			g_mgrDual.SendDualDivide(Hero, select);
			break;
		}
	} //> CSD-021003
}

int CallInitAbility()
{
	CallSmallMenu(MN_INIT_ABILITY);
	return 1;
}

void DoInitAbility()
{
  MP3(SN_DUAL_OK);
  // 绢呼府萍 犁盒硅
  CallServer(CMD_RESET_ABILITY);
  // 绢呼府萍 牢磐其捞胶 龋免
  CallMenu(MN_ABILITY);
//	CallServer(CMD_OPEN_ABILITY);	
}

void CheckGuildActive( int guild_code )
{	//< CSD-031001
	if( !guild_code ) return;
	LPCHARACTER ch = Hero;
	while( ch )
	{
		if( ch->GetGuildCode() == guild_code )
		{
			ch->SetGuildCode(0);
			ch->name_status.guild_master = 0;
		}
		ch = ch->lpNext;
	}
}	//> CSD-031001

inline bool CheckGuildCode( int guild_code )
{	//< CSD-030324
	if( !guild_code ) return 0;
	
	if( !g_GuildMgr[guild_code].m_bInfo ) 
	{
		SendReqGuildInfo1( guild_code );		// 茄锅 夸没茄促.
	}
	
	if( !g_GuildMgr[guild_code].m_bActive ) return 0;
	return 1;
}	//> CSD-030324

inline bool CheckGuildMaster( LPCHARACTER ch )
{	//< CSD-030324
	if( !ch ) return 0;
	if( ch->name_status.guild_master != 1 ) return 0;
	return CheckGuildCode( ch->GetGuildCode() );
}	//> CSD-030324

inline bool IsSubMaster( LPCHARACTER ch )
{	//< CSD-030324
	if( !ch ) return 0;
	int code = ch->GetGuildCode();
	if( !code ) return 0;
	return IsSubMaster( code, ch->name );
}	//> CSD-030324

inline bool IsSubMaster( int guild_code, char *name )
{	//< CSD-030324
	if( strcmp( g_GuildMgr[guild_code].m_szSubGuldMasterName, name ) == 0 ) return 1;
	return 0;
}	//> CSD-030324

int CallGuildChangeInfo()
{	//< CSD-030324
	if( !CheckGuildCode( Hero->GetGuildCode() ) ) 
	{
		CallOkCancelMessageBox( y_MenuFocus, 0, 0, kein_GetMenuString( 75 ), 0 );
		return 0;
	}

	//SmallMenuClose();

	// 辑宏 付胶磐狼 捞抚阑 啊廉柯促.
	SendGetGuildMasterAndSubMasterName( Hero->GetGuildCode(), 2 );

	if( CheckGuildMaster( Hero ) )		// 辨靛 付胶磐 扼搁
	{
		SMenu[MN_GUILD_CHANGE_INFO].nField[1].nType=FT_PUT_BUTTON;
		SMenu[MN_GUILD_CHANGE_INFO].nField[2].nType=FT_PUT_BUTTON;		
		SMenu[MN_GUILD_CHANGE_INFO].nField[4].nType=FT_PUT_BUTTON;
		SMenu[MN_GUILD_CHANGE_INFO].nField[3].nType=FT_PUT_BUTTON;
		//SMenu[MN_GUILD_CHANGE_INFO].nField[5].nType=FT_NOMAL_PUT;		// 何 辨付 沥焊 函版
		{
			SMenu[MN_GUILD_CHANGE_INFO].nField[5].nType=FT_PUT_BUTTON;
			SMenu[MN_GUILD_CHANGE_INFO].nField[5].nSpecialWillDo=SWD_SET_SUB_MASTER;
			SMenu[MN_GUILD_CHANGE_INFO].nField[5].nSHideNomalCount=6;
			SMenu[MN_GUILD_CHANGE_INFO].nField[5].nRectImage=7;
			SMenu[MN_GUILD_CHANGE_INFO].nField[5].nImageNumber=8;
			SMenu[MN_GUILD_CHANGE_INFO].nField[5].nImageType=IIT_GUILD_CHANGE_INFO;
		}

		if( g_GuildMgr[Hero->GetGuildCode()].first )
		{
			SMenu[MN_GUILD_CHANGE_INFO].nField[1].nType=FT_NOMAL_PUT;
			SMenu[MN_GUILD_CHANGE_INFO].nField[2].nType=FT_NOMAL_PUT;		
			SMenu[MN_GUILD_CHANGE_INFO].nField[4].nType=FT_NOMAL_PUT;
		}
	}
	else
	{
		SMenu[MN_GUILD_CHANGE_INFO].nField[1].nType=FT_NOMAL_PUT;
		SMenu[MN_GUILD_CHANGE_INFO].nField[2].nType=FT_NOMAL_PUT;
		SMenu[MN_GUILD_CHANGE_INFO].nField[3].nType=FT_NOMAL_PUT;
		SMenu[MN_GUILD_CHANGE_INFO].nField[4].nType=FT_NOMAL_PUT;
		//SMenu[MN_GUILD_CHANGE_INFO].nField[5].nType=FT_PUT_BUTTON;	// 辨靛 呕硼
		{
			SMenu[MN_GUILD_CHANGE_INFO].nField[5].nSpecialWillDo=SWD_CALL_OKCANCEL_BOX;
			SMenu[MN_GUILD_CHANGE_INFO].nField[5].nSHideNomalCount=25;
			SMenu[MN_GUILD_CHANGE_INFO].nField[5].nRectImage=27;
			SMenu[MN_GUILD_CHANGE_INFO].nField[5].nImageNumber=26;
			SMenu[MN_GUILD_CHANGE_INFO].nField[5].nImageType=GUILD_MENU_IMG;
		}

	}

	SMenu[MN_GUILD_CHANGE_INFO].bActive = true;
	y_MenuFocus = MN_GUILD_CHANGE_INFO;
	return 1;
}	//> CSD-030324

bool CheckTempChar( char ch, char *white )
{
	int len = strlen( white );
	if( !len ) return false;

	for( int i=0; i<=len; i++ )		// NULL 鳖瘤 眉农
	{
		if( ch == white[i] ) return true;
	}
	return false;
}

void DeleteBetaFile( char *dir )		// 颇老阑 佬绢 客 弃歹甫 葛滴 瘤快扁
{
	FILE *fp = fopen( dir, "rt" );
	if( !fp ) return;

	char temp[MAX_PATH];
	while( fgets( temp, MAX_PATH, fp ) )
	{
		EatRearWhiteChar( temp );
		if( CheckTempChar( temp[0], " ;\n#" ) ) return;

		DeleteDir( temp );
	}
	fclose( fp );
}


void SaveMemorize()
{
	FILE * fp;
	char file[MAX_PATH];
	sprintf( file, "./character/%s.qm2", SCharacterData.sCharacterName);//Memorize Save
	fp = Fopen( file, "wb" );
	if( !fp ) return;

	fwrite( &magic_plus_start, sizeof( int ), 1, fp );
	fwrite( &magic_plus_count, sizeof( int ), 1, fp );
	fwrite( magic_plus, sizeof( int ), MAX_MAGIC, fp );
	fwrite( SaveMemory, sizeof( t_QuickMemory ), MAX_MAGIC_MEMORY, fp );
	fclose( fp );
}

void LoadMemorize()
{
	FILE * fp;
	char file[MAX_PATH];
	sprintf( file, "./character/%s.qm2", SCharacterData.sCharacterName );//Memorize Save
	fp = Fopen( file, "rb" );
	if( !fp ) return;

	int start, plus_count;

	if( SCharacterData.nCharacterData[SPELL] == WIZARD_SPELL )
	{
		fread( &magic_plus_start, sizeof( int ), 1, fp );
		fread( &magic_plus_count, sizeof( int ), 1, fp );
		fread( magic_plus, sizeof( int ), MAX_MAGIC, fp );
	}
	else
	{
		fread( &start, sizeof( int ), 1, fp );
		fread( &plus_count, sizeof( int ), 1, fp );
		if( magic_plus_count != plus_count )
			fseek( fp, sizeof(int)*MAX_MAGIC, SEEK_CUR );
		else
		{
			magic_plus_start = start;
			magic_plus_count = plus_count;
			fread( magic_plus, sizeof( int ), MAX_MAGIC, fp );
		}       
	}
	fread( SaveMemory, sizeof( t_QuickMemory ), MAX_MAGIC_MEMORY, fp );
	fclose( fp );
}

bool IsReporterMode()
{
	if( Hero && Hero->name_status.reporter && Hero->reporter_mode ) return true;
	else return false;
}

void CallGuildMemberListMenu()
{	//< CSD-030324
	short int guild_code = Hero->GetGuildCode();
	
	if (!guild_code) 
	{
		Kein_PutMessage( KM_FAIL, kein_GetMenuString( 94 ) );
		return;
	}

	SendGetGuildMasterAndSubMasterName( guild_code, 3 );
	SendDirectDB( CMD_GET_GUILD_NOTICE, &guild_code, sizeof( short int ) );
	CallSmallMenu( MN_GUILD_MEMBER_LIST );

	static int pos_to_degree[] = {1, 2, 3, 4, 0 };
	int pos = SMenu[MN_GUILD_MEMBER_LIST].key;
	if( !g_Menu_Variable.m_GuildMemberName.GetRecv( pos_to_degree[pos] ) )
	{
		// 辑滚 夸没
		k_get_guild_member_list_req data;
		data.guild_code = Hero->GetGuildCode();
		data.degree = pos_to_degree[pos];
		SendDirectDB( CMD_GET_NAME_GUILD_MEMBER_LIST, &data, sizeof( k_get_guild_member_list_req ) );
		g_Menu_Variable.m_GuildMemberName.SetRecv( pos_to_degree[pos] );
	}
}	//> CSD-030324

void SendGetGuildMasterAndSubMasterName(int guild_code, int type)
{	// 1:辨付父, 2:何辨付父, 3:葛滴
	k_req_guild_master_and_sub_master data;
	data.guild_code = guild_code;
	data.type = type;
	SendDirectDB(CMD_GUILD_MASTER_AND_SUBMASTER, &data, sizeof(k_req_guild_master_and_sub_master) - 40);
}

void GetFriendGroup()
{
	if( g_Menu_Variable.m_FriendGrup )
	{
		g_Menu_Variable.m_FriendGrup->clear();
	}
	else g_Menu_Variable.m_FriendGrup = new CFriendGrup;

	SendDirectDB( CMD_GET_FRIEND, Hero->name, strlen( Hero->name )+1 );
}

int CallFriendMenu()
{
	GetFriendGroup();

	CallSmallMenu(MN_FRIEND_MENU);
	return 1; 

⌨️ 快捷键说明

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