📄 menufunctions.cpp
字号:
#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 + -