📄 menunetwork.cpp
字号:
t_packet p;
p.h.header.type = CMD_CHANGE_MAP_KEIN;
{
p.u.kein.send_game_port.game_port = port;
}
p.h.header.size = sizeof( k_send_game_port );
QueuePacket( &p, 1 );
}
void RecvOpenSupper( char much )
{
SCharacterData.much_supper = much;
CallSmallMenu(MN_GOD_SUPPER);
}
void SendIGetItemOfSupper( short int item_no )
{
t_packet packet; // 郴啊 啊龙妨绰 酒捞袍 锅龋甫 焊郴绊
// 牢刘 罐霸 登搁 弊 酒捞袍阑 辑滚俊辑 罐绰促.
packet.h.header.type = CMD_I_GET_ITEM_OF_SUPPER;
{
packet.u.kein.i_get_item_of_supper.item_no = item_no;
}
packet.h.header.size = sizeof( k_i_get_item_of_supper );
QueuePacket( &packet, 1 );
}
extern int g_Note_Meeting;
extern char g_Note_Meeting_message[256];
void RecvSetNoteMeetingMessage( short int god, short int type )
{
g_Note_Meeting = 1;
char *god_name = NULL;
switch( god )
{
case EDELBLHOY : god_name = "EDELBLHOY"; break;
case TEFFERY : god_name = "TEFFERY"; break;
case LETTY : god_name = "LETTY"; break;
case OREM : god_name = "OREM"; break;
default : god_name = NULL; break;
}
switch( type )
{
case 3: // 楷 抗硅
if( !god_name ) return;
sprintf( g_Note_Meeting_message, lan->OutputMessage(6,26), god_name);//010215 lsw
break;
case 2: // 岿 抗硅
if( !god_name ) return;
sprintf( g_Note_Meeting_message, lan->OutputMessage(6,27), god_name );//010215 lsw
break;
}
}
void SendReqCharInfo( int id ) // 目辑甫 措绊 乐绰 悼救 某腐磐狼 沥焊甫 啊廉柯促.
{
t_packet p;
p.h.header.type = CMD_REQ_CHAR_INFO;
p.u.debug_client_req_char_info.id = id;
p.h.header.size = sizeof( t_debug_client_req_char_info );
QueuePacket( &p, 1 );
}
void RecvReqCharInfo( k_server_req_char_info *p )
{
LPCHARACTER ch = ReturnCharacterPoint( p->id );
if( ch == NULL ) return;
ch->_Hp = p->Hp;
ch->_HpMax = p->HpMax;
ch->viewdebugcharinfo = 75;
}
void SendReqHpOfParty( char *party_name )
{
t_packet p;
p.h.header.type = CMD_REQ_PARTY_INFO;
strcpy( p.u.kein.req_party_info.party_name, party_name );
p.h.header.size = sizeof( k_req_party_info );
QueuePacket( &p, 1 );
}
void RecvReqPartyInfo( k_rep_party_info *p )
{
for( int i=0; i<6; i++ )
{
if( !strcmp( SCharacterData.party[i].m_Name, p->party_name) )
{
SCharacterData.party[i].m_Hp = p->hp;
SCharacterData.party[i].x = p->x / TILE_SIZE;
SCharacterData.party[i].y = p->y / TILE_SIZE;
SCharacterData.party[i].xy_on = 150;
break;
}
}
}
bool recv_learn_item; // 辑滚俊辑 硅款 酒捞袍阑 傈价 罐绊 胶懦 单捞鸥甫 肺靛秦坷绊 弊繁促澜俊 硅快绊 矫累窍绰 酒捞袍阑 悸泼秦具 茄促.
void RecvLearnedItem( k_server_learn_item *p )
{
memcpy( SCharacterData.ItemId, p->item, sizeof( short int )*p->item_count );
SCharacterData.ItemIdCount = p->item_count;
if( recv_learn_item ) SetLearnItem( );
else recv_learn_item = 1;
}
void RecvPartyNotByLevel( short int type )
{
switch( type )
{
case PARTY : AddCurrentStatusMessage( 200, 50, 50, lan->OutputMessage(5,82) ); break;//010215 lsw
case RELATION :
case EMPLOYMENT : break;
}
}
void RecvDoPartyOk( char *name, short int type )
{
switch( type )
{
case PARTY : AddCurrentStatusMessage( 255, 255, 255, lan->OutputMessage(5,83), name ); break;//010215 lsw
case RELATION :
case EMPLOYMENT : break;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////
void SendReqQuestIndex( int page)
{
if( SysInfo.notconectserver )
{
k_rep_quest_index QUEST_p;
for (int i = 0 ; i < 14 ; i++){
QUEST_p.quest[i].index = rand()%13+50;
QUEST_p.quest[i].ret = 5;
if( QUEST_p.quest[i].ret == rand()%6 ) QUEST_p.quest[i].ret = 2000;
}
QUEST_p.max = 14;
RecvQuestIndex(&QUEST_p);
}
else
{
t_packet p;
p.h.header.type = CMD_REQ_QUEST_INDEX;
p.u.kein.default_char = page;
p.h.header.size = sizeof( char );
QueuePacket( &p, 1 );
// CallServer( CMD_REQ_QUEST_INDEX );
}
}
void RecvQuestIndex( k_rep_quest_index *p )
{
/*
short int index[6];
short int ret[6];
*/
int max = p->max;
for( int i=0; i<max; i++ )
{
int ret = 0;
for( int j=0; j<QUEST_COUNT; j++ )
{
if( quest_num[j] == p->quest[i].index-50 )
{
if( p->quest[i].ret == 2000 ) SetEndQuest(j);
ret = 1;
break;
}
}
if( ret ) continue;
if( p->quest[i].index <= 50 ) continue;
if( p->quest[i].index ) {
// 惯积茄 涅胶飘 俊促 涅胶飘甫 持绰促.
if( QUEST_COUNT == 200) return;
quest_num[QUEST_COUNT++] = p->quest[i].index-50; // 50何磐 矫累
// 胶跑捞 2000 捞搁 场抄 涅胶飘扼备 龋铰揪啊 弊法澜
if( p->quest[i].ret == 2000 )
{
SetEndQuest(QUEST_COUNT-1);
// 己傍茄 涅胶飘
}
}
else {
if( QUEST_COUNT == 200) return;
QUEST_COUNT++;
}
// 涅胶飘啊 绝备 弊矾搁 滚瓢档 逞绢 啊搁 臼登聪瘪
}
return;
}
///////////////////////////////////////////////////////////////////////////////////////////
void SendPacketDefault(const int type, void *data, const int size )
{
t_packet p; // 辑滚肺 脚没
p.h.header.type = type; // 铰倡
p.h.header.size = 0;
if( data && size )
{
::memcpy( p.u.data, data, size );
p.h.header.size = size;
}
::QueuePacket( &p, 1 );
}
void SendResetJob( char job, char cls, char *name )
{
if( job < J_FAMER || job > J_MERCHANT ) return;
t_packet p;
p.h.header.type = CMD_RESET_JOB;
p.u.kein.reset_job.job= job;
p.u.kein.reset_job.cls= cls;
strcpy( p.u.kein.reset_job.name, name );
p.h.header.size = sizeof( k_reset_job ) - 20+strlen( name )+1;
QueuePacket( &p, 1 );
}
void SendSelectNation( int nation, char *name )
{
if( nation <= 0 || nation > N_YILSE ) return;
t_packet p;
p.h.header.type = CMD_SELECT_NATION;
p.u.kein.default_char= nation;
// strcpy( p.u.kein.select_nation.name, name );
p.h.header.size = sizeof( char);
// p.h.header.size = sizeof( k_select_nation) - 20+strlen( name )+1;
QueuePacket( &p, 1 );
}
void SendChangeScriptValue( int script_num, int value )
{
t_packet p;
p.h.header.type = CMD_SCRIPT_CHANGE;
p.u.kein.script_change.script_num = script_num;
p.u.kein.script_change.value = value;
p.h.header.size = sizeof( k_script_change );
QueuePacket( &p, 1 );
}
void RecvChangeDuration( t_packet *p )
{
POS *pos = &p->u.kein.change_dur.pos;
DWORD dur = p->u.kein.change_dur.dur;
ItemAttr *target = ::GetItemByPos( *pos );
if( target && target->item_no )
{
target->attr[IATTR_DURATION] = dur;
}
return;
}
void SendIsThereCharNameForNation( char *name ) // 唱扼 厚背甫 困秦 傈价
{
t_packet p;
p.h.header.type = CMD_ISSAME_MY_NATION;
strcpy( p.u.kein.default_name, name );
p.h.header.size = strlen( name )+1;
QueuePacket( &p, 1 );
}
int CheckCharNameAndNation( char *name )
{
if( name == NULL )
{
return 0;
}
if( ::stricmp( name, kein_GetMenuString( 47 ) ) == 0 )
{
return 1;
}
double StartTime, Duration;
SendIsThereCharNameForNation( name );
StartTime = ::timeGetTime( );
ListenCommand = CMD_NONE;
while( 1 )
{
Duration = ::timeGetTime( ) - StartTime; // 5檬甫 扁促赴促.
if ( Duration > 5000 )
{
return FALSE;
}
if ( !HandleRunning(&connections ) )
{
Release(&connections );
return 0;
}
else if( ListenCommand == CMD_THEREIS_NO_CHARNAME )
{
if( Hero->IsCounselor() ){return 1;}
return 0; // 促弗 唱扼捞促
}
else if( ListenCommand == CMD_THEREIS_CHARNAME )
{
return 1; // 鞍篮 唱扼捞促
}
}
}
void RecvCallRegistCandidate( )
{
CallSmallMenu( MN_VOTE_REGIST );
}
void RecvRegistCandidateNot()
{
g_CanRegistCandidate = -1; // 殿废 且荐 乐绰 荤恩捞 酒聪促..
SendCheckVote(); // 捧钎 皋春甫 剁匡瘤 酒匆瘤...
}
void RecvCallVoteSupport( t_packet *p )
{
const int ret = p->u.kein.default_char;
/* switch( ret )
{
default : break;
}
*/ RecvRegistCandidateNot();
}
void RecvCheckVoteOk( t_packet *p ) // 饶焊 沥焊甫 啊瘤绊 客辑 谎妨霖促.
{
int count = p->u.kein.check_vote_client_ok.candidate_count;
k_candidate *target = p->u.kein.check_vote_client_ok.candidate;
if( count < 0 || count >=3 ) return;
int nation = target->nation;
memset( Candidate, 0, sizeof( k_client_candidate )*3 );
g_Candidate_max = count;
for( int i=0; i<count; i++ )
{
Candidate[i].number = target[i].number;
Candidate[i].lv = target[i].lv;
Candidate[i].class_type = target[i].class_type;
Candidate[i].gender = target[i].gender;
Candidate[i].nation = target[i].nation;
Candidate[i].guild_code = target[i].guild_code;
Candidate[i].face = target[i].face;
strcpy( Candidate[i].name, target[i].name );
}
CallSmallMenu( MN_VOTE_SUPPORT );
}
int CanVote()
{
if( !SCharacterData.nation ) return -2;
return g_CurrVote;
}
void SendCheckVote( )
{
switch( g_CurrVote )
{
case -2: AddCurrentStatusMessage( 250, 30, 30, lan->OutputMessage(3,52));MP3( SN_WARNING ); return;//010215 lsw
// case -1:
// AddCurrentStatusMessage( 250, 30, 30, "急芭 扁埃捞 酒凑聪促.");MP3( SN_WARNING );
// g_CurrVote=0; // 犁瞒 急芭 扁埃牢瘤甫 犬牢且锭甫 措厚秦辑
// return;
case -3:
{
// 捧钎 泅炔魄 焊咯林扁
SendReqVoteScore();
return;
}
default : CallServer( CMD_CHECK_VOTE ); break;
}
}
void RecvCheckVoteNot( t_packet *p )
{
g_CurrVote = p->u.kein.default_char;
switch( g_CurrVote )
{
case -2 : CallOkCancelMessageBox( 0, 0, 0, lan->OutputMessage(3,61), 0 ); break;//010215 lsw
case -1 : CallOkCancelMessageBox( 0, 0, 0, lan->OutputMessage(3,62), 0 ); break;//010215 lsw
case -3 :
{
AddCurrentStatusMessage( 240, 60, 60, lan->OutputMessage(3,63));//010215 lsw
if( SendReqVoteScore() == -1 ) MP3( SN_WARNING );
break;
}
}
}
bool CanVoteSupport( short int num )
{
if( num > g_Candidate_max ) return false;
// if( g_CanRegistCandidate < 0 ) return false;
if( !SCharacterData.nation ) return false;
return true;
}
void SendVoteSupport( short int num ) // 饶焊 锅龋
{
if( !CanVoteSupport( num ) )
AddCurrentStatusMessage( 240, 60, 60, lan->OutputMessage(3,64));//010215 lsw
t_packet p;
p.h.header.type = CMD_VOTE_GAME2LOGIN;
p.u.kein.default_char = (char) num;
p.h.header.size = sizeof( char );
QueuePacket( &p, 1 );
}
int SendReqVoteScore()
{
if( !SCharacterData.nation ) g_CurrVote = -2;
switch( g_CurrVote )
{
case -2 : AddCurrentStatusMessage( 250, 30, 30, lan->OutputMessage(3,65)); return -1;//010215 lsw
//case -1 : AddCurrentStatusMessage( 250, 30, 30, "急芭 扁埃捞 酒凑聪促.", 0 ); return -1;
}
CallServer( CMD_REQ_VOTE_SCORE );
return 1;
}
int RecvVoteScore( t_packet *p )
{
int max = p->u.kein.client_rep_vote_score.max;
k_score_and_name *target = p->u.kein.client_rep_vote_score.name_score;
g_Candidate_max = 0;
for( int i=0; i<max; i++ )
{
Candidate[i].score = target[i].score;
if( target[i].name[0] )
{
strcpy( Candidate[i].name, target[i].name);
g_Candidate_max ++;
}
}
g_VoteSignExist = 400; // 泅炔魄 焊咯林扁
return 1;
}
void SendAllMsgNation( char *text )
{
if( !Hero->name_status.king )
{
MP3( SN_WARNING );
AddCurrentStatusMessage( 220,30,30, lan->OutputMessage(3,66));//010215 lsw
return;
}
int len = strlen( text );
if( len >= MAX_MSG ) AddCurrentStatusMessage( 220,30,30, lan->OutputMessage(3,67));//010215 lsw
if( !text[0] ) return;
ConvString( text );
t_packet p;
p.h.header.type = CMD_SEND_ALL_MSG;
strcpy( p.u.kein.default_msg, text );
p.h.header.size = len+1 ;
QueuePacket( &p, 1 );
}
void RecvNationMassage( char *text )
{
MP3( SN_EAR_MESSAGE_RECV );
recv_nation_msg_count = 250;
strcpy( recv_nation_msg_text, text );
}
void RecvYouAreKing( int is_king )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -