📄 menunetwork.cpp
字号:
SCharacterData.party[i].m_JoinOk = 1;
SearchMyPartyOfMySight( &SCharacterData.party[i]); // 檬扁 矫具鼻救俊 颇萍 乐绰瘤 眉农..
return;
}
}
}
void RecvPartyJoinRelease( char *name )
{
for( int i=0; i<6; i++ )
{
if( !strcmp(SCharacterData.party[i].m_Name, name) )
{
SCharacterData.party[i].m_JoinOk = 0;
return;
}
}
}
void RecvServerEachItem( K_ITEM *item )
{
ItemAttr *target = ::GetItemByPos( item->item_pos );
if(!target) DropItemOnHero(item->item_attr);
else *target = item->item_attr;
}
void RecvServerResist( k_server_resist *p )
{
SCharacterData.naBasicResist[RT_POISON ] = p->naBasicResist[RT_POISON ];//030227 lsw
SCharacterData.naBasicResist[RT_CURSE ] = p->naBasicResist[RT_CURSE ];
SCharacterData.naBasicResist[RT_HOLY ] = p->naBasicResist[RT_HOLY ];
SCharacterData.naBasicResist[RT_FIRE ] = p->naBasicResist[RT_FIRE ];
SCharacterData.naBasicResist[RT_ICE ] = p->naBasicResist[RT_ICE ];
SCharacterData.naBasicResist[RT_ELECT ] = p->naBasicResist[RT_ELECT ];
SCharacterData.naExtentionResist[RT_POISON ] = p->naExtentionResist[RT_POISON ];//030227 lsw
SCharacterData.naExtentionResist[RT_CURSE ] = p->naExtentionResist[RT_CURSE ];
SCharacterData.naExtentionResist[RT_HOLY ] = p->naExtentionResist[RT_HOLY ];
SCharacterData.naExtentionResist[RT_FIRE ] = p->naExtentionResist[RT_FIRE ];
SCharacterData.naExtentionResist[RT_ICE ] = p->naExtentionResist[RT_ICE ];
SCharacterData.naExtentionResist[RT_ELECT ] = p->naExtentionResist[RT_ELECT ];
}
void SendBankInfo(int type, DWORD money )
{
t_packet packet;
packet.u.kein.client_bank_deposit.money = money;
packet.h.header.type = type;
packet.h.header.size = sizeof( k_client_bank_deposit );
QueuePacket( &packet, 1 );
}
void SendCharInfoBasic( int kind, DWORD data )
{
#ifdef _DEBUG
t_packet p;
p.h.header.type = CMD_CHAR_INFO_BASIC;
{
p.u.char_info_basic.password = (char)111;
p.u.char_info_basic.kind = (char) kind;
p.u.char_info_basic.data = data;
}
p.h.header.size = sizeof( t_char_info_basic );
QueuePacket( &p, 1 );
#endif
}
extern DWORD g_ClientTimeNoGap; //011122 lsw
void RecvCharInfoBasic( t_char_info_basic *p )
{
if( p->kind < 0 ) return;
DWORD d = p->data;
switch( p->kind )
{
case STR :
case CON :
case DEX :
case WIS :
case INT_ :
case MOVP :
case CHA :
case ENDU :
case MOR :
case LUCK :
case WSPS :
case HEALTH :
case MOV :
case AC :
case FAME :
case DAMAGE :
case HIT :
case TACTICE : SCharacterData.nCharacterAbility[p->kind] = d;
break;
case MONEY : SCharacterData.nMoney = d; break;
case HP : SCharacterData.nCharacterHP = Hero->hp = d; break; // HP客 MP甫 历厘窍绰 函荐
case MAX_HP : SCharacterData.nCharacterMAXHP = d; break;
case MP : SCharacterData.nCharacterMP = d; break; // HP客 MP狼 弥措摹
case MAX_MP : SCharacterData.nCharacterMAXMP = d; break;
case SP : SCharacterData.nCharacterSP = d; break;
case MAX_SP : SCharacterData.nCharacterMAXSP = d; break;
case CP:
{ //< CSD-TW-030624
switch (Hero->nRecoveryCombat)
{
case BURNING_BLOODY: InsertMagic(Hero, Hero, 659, 0, 0, 0, 0, 0); break;
case ACUQUIRE_DARK: InsertMagic(Hero, Hero, 660, 0, 0, 0, 0, 0); break;
}
iCSPNow = d;
break;
} //> CSD-TW-030624
case MAX_CP: iCSPMax = d; break;
case BP: iCSPCNow = d; break;
case MAX_BP: iCSPCMax = d; break;
case BANKMONEY : SCharacterData.BankMoney = d; break;
case EXP : SCharacterData.nExp = d; break;
case FAITH : SCharacterData.faith = d; break;
case CIB_POTION_BOX: SCharacterData.potion_box1 = d; break;
//020314 lsw
case VIEWGHOST :
{
(d)?Hero->bCanViewGhost = true:Hero->bCanViewGhost = false;
Hero->dwCanViewGhostTime = g_ClientTimeNoGap +(d*1000);
}break;
case VIEWBOMB :
{
(d)?Hero->bCanViewBomb = true:Hero->bCanViewBomb = false;
Hero->dwCanViewBombTime = g_ClientTimeNoGap +(d*1000);
}break;
case VIEWTRAP :
{
(d)?Hero->bCanViewTrap = true:Hero->bCanViewTrap = false;
Hero->dwCanViewTrapTime = g_ClientTimeNoGap +(d*1000);
}break;
default :
{
char buf[255];
sprintf(buf, lan->OutputMessage(7,63), p->kind );//010215 lsw
JustMsg(buf);
break;
}
}
}
void RecvItemAttrChange( int type, k_server_item_attr *p )
{
ItemAttr *item = ::GetItemByPos( p->pos );
if( !item ) return; // 促矫 傈价秦 崔扼绊 秦具窍唱?
switch( type )
{
case CIA_DURATION : item->attr[IATTR_DURATION] = p->attr; break;
case CIA_MUCH : item->attr[IATTR_MUCH] = p->attr; break;
}
return;
}
void RecvOtherGhost( )
{
memset( You.inv, 0, sizeof( ItemAttr ) * OTHER_INV_MAX );
}
void RecvCreateAbility( ) // 林荤困 倒府扁傈 扁夯荐摹 檬扁拳
{
int basic_ability[5][11] = {
{ 50, 10, 30, 10, 10, 10, 10, 10, 10, 10, 10 },
{ 10, 40, 20, 10, 10, 10, 20, 10, 10, 10, 20 },
{ 10, 50, 20, 10, 10, 10, 20, 10, 10, 10, 10 },
{ 10, 10, 15, 10, 40, 10, 10, 20, 10, 25, 10 },
{ 10, 10, 20, 35, 10, 10, 10, 20, 10, 25, 10 },
};
for( int i=STR; i<=LUCK; i++ )
SCharSource.nCharacterAbility[i] = basic_ability[SCharSource.nCharacterData[CLASS]][i];
g_GoDice= true;
}
void RecvServerMagery(char nStep, DWORD magery)
{
int type;
if( SCharacterData.nCharacterData[SPELL] == WIZARD_SPELL ) type = MAGERY;
else if( SCharacterData.nCharacterData[SPELL] == PRIEST_SPELL ) type = ORISON;
else return;
Hero->aStepInfo[type + TAC_INDEX] = nStep;
SCharacterData.TacticsExp[type] = magery;
SCharacterData.SkillId[type+88] = GetLeveByExp(nStep,
SCharacterData.TacticsExp[type]);
int tac_lv = SCharacterData.SkillId[type+88];
SCharacterData.TacticsExpNext[type] = NPC_Lev_Ref[tac_lv].nMaxExp;
}
void RecvThrowDice( start_throw_dice *p )
{
g_GoDiceRecv = true;
static int class_ability[5][2] = {
{ STR, CON , },
{ DEX, MOVP, },
{ DEX, CON, },
{ INT_, WSPS, },
{ WIS, WSPS, }, };
int first = SCharSource.nCharacterData[CLASS];
SCharSource.nAbilityMax[class_ability[first][0]] = p->ability1;
SCharSource.nAbilityMax[class_ability[first][1]] = p->ability2;
}
void SendThrowDice( char type )
{
t_packet p;
p.h.header.type = CMD_THROW_DICE;
{
p.u.kein.client_throw_dice.type = type;
}
p.h.header.size = sizeof( k_client_throw_dice );
QueuePacket( &p, 1 );
if( SysInfo.notconectserver )
{
start_throw_dice p;
p.ability1 = 3;
p.ability2 = 2;
RecvThrowDice( &p );
}
}
void RecvServerMessage( k_get_server_text *p ) // 傍瘤 荤亲
{
static count = 0;
int para = p->ct%10 - 1;
if( c_BbsTitle[para].is_first )
{
c_BbsTitle[para].m_szMessage = new char[p->len+1];
memset( c_BbsTitle[para].m_szMessage,0, p->len+1 );
int max = 512;
if( p->len < 512 ) max = p->len;
memcpy( c_BbsTitle[para].m_szMessage, p->text, max );
c_BbsTitle[para].is_first = false;
count = 0;
}
else
{
count++;
int max = 512;
if( p->len < (count+1)*512 ) max = p->len % 512;
memcpy( c_BbsTitle[para].m_szMessage + 512 * count, p->text, max );
}
}
void SendPreachName( char *name, BYTE god ) // 朝 傈档茄 荤恩捞 乐绰瘤 魄窜 夸没
{
t_packet p;
p.h.header.type = CMD_PREACH_NAME;
{
sprintf(p.u.kein.server_preach_name.name , name );
p.u.kein.server_preach_name.believe_god = god;
}
p.h.header.size = sizeof( k_server_preach_name );
QueuePacket( &p, 1 );
}
void SendPreachNameOk( char *name, BYTE god ) // 啊涝 且 版快 傈档茄 荤恩俊霸 脚居缴狼 +甫 困秦 菩哦 傈价
{
t_packet p;
p.h.header.type = CMD_PREACH_NAME_OK;
{
sprintf(p.u.kein.server_preach_name.name , name );
p.u.kein.server_preach_name.believe_god = god;
}
p.h.header.size = sizeof( k_server_preach_name );
QueuePacket( &p, 1 );
}
void SendGodRegistOk( int type )
{
t_packet p;
p.h.header.type = CMD_GOD_REGIST_OK;
{
p.u.kein.client_god_regist_ok.type = (char) type;
}
p.h.header.size = sizeof( k_client_god_regist_ok);
QueuePacket( &p, 1 );
}
void RecvPreachName( k_server_client_preach_name *p )
{
if( !p->believe_god) JustMsg(lan->OutputMessage(6,21));//010215 lsw
int pre_menu = GetMenuNumByBelieveGod( p->believe_god);
switch( p->result )
{
case 1 : { // 己傍
CallSmallMenu( MN_GOD_PREACH_RESULT, pre_menu );
sprintf( SMenu[MN_GOD_PREACH_RESULT].nField[2].temp, lan->OutputMessage(6,22), p->name );//010215 lsw
sprintf(SMenu[MN_GOD_PREACH_RESULT].nField[0].temp, p->name );
break;
}
case 2 : { // 弊繁 荤恩 绝促.
CallSmallMenu( MN_GOD_PREACH_ERROR1, pre_menu );
sprintf( SMenu[MN_GOD_PREACH_ERROR1].nField[2].temp, lan->OutputMessage(6,23) );//010215 lsw
break;
}
case 3 : { // 弊 荤恩篮 快府 脚傈 荤恩捞 酒聪促.
CallSmallMenu( MN_GOD_PREACH_ERROR1, pre_menu );
sprintf( SMenu[MN_GOD_PREACH_ERROR1].nField[2].temp, lan->OutputMessage(6,24) );//010215 lsw
break;
}
case 4 : {
;
CallOkCancelMessageBox( 0,0,0, lan->OutputMessage(6,25) );//010215 lsw
break;
}
default : break;//
}
return;
}
void RecvGodMeetinMainStart( )
{
g_ServerText.ReSet();
bCallGodMeetingMenu = true;
}
void RecvGodMeetingMainEnd( )
{
bCallGodMeetingMenu = false;
StopWave( SN_GOD_MEETING );
}
void SendToolPassword( char *password )
{
int ret = -1;
if( !strcmp( password, "plant") ) ret = 0;
else if( !strcmp( password, "mineral") ) ret = 1;
else if( !strcmp( password, "herb") ) ret = 2;
else if( !strcmp( password, "cook") ) ret = 3;
else if( !strcmp( password, "potion") ) ret = 4;
else if( !strcmp( password, "tool") ) ret = 5;
else if( !strcmp( password, "weapon") ) ret = 6;
else if( !strcmp( password, "disposable")) ret = 7;
else if( !strcmp( password, "armor") ) ret = 8;
else if( !strcmp( password, "accessory")) ret = 9;
else if( !strcmp( password, "etc" ) ) ret = 10;
if( ret != -1 )
{
k_client_create_item gener_item;
gener_item.dur = 1000001;
gener_item.gennum = 1;
for( int j=0; j<Item_Ref.nItem[ret]; j++ )
{
gener_item.type = ret;
gener_item.num = j;
SendGenrateItemByTool( gener_item );
}
return;
}
t_packet p;
p.h.header.type = CMD_TOOL_PASSWORD;
{
strcpy( p.u.kein.tool_password.password, password );
}
p.h.header.size = sizeof( k_tool_password );
QueuePacket( &p, 1 );
}
extern int ListenCommand;
int SendCheckNewChar( char *name )
{
t_packet p;
p.h.header.type = CMD_CHECK_NEW_CHAR;
{
strcpy( p.u.kein.check_new_char.name, name);
}
p.h.header.size = sizeof( k_check_new_char );
QueuePacket( &p, 1 );
DWORD StartTime = ::timeGetTime( );
ListenCommand = 0;
while ( 1 )
{
DWORD Duration = ::timeGetTime( ) - StartTime;
if ( Duration > 10000 )
{
return( -2 );
}
if ( !HandleRunning(&connections ) )
{
Release(&connections );
return( -3 );
}
if ( ListenCommand == 100 ) // 沥惑 楷搬
{
break;
}
else if( ListenCommand == 10 )
{
return(-4); // 扁粮狼 某腐磐 捞促
}
}
return 1;
}
void RecvServerMessage( k_get_server_text *p, char *text ) // 脚傈 抗硅
{
static count = 0;
int para = p->ct%10 - 1;
if( c_BbsTitle[para].is_first )
{
c_BbsTitle[para].m_szMessage = new char[p->len+1];
memset( c_BbsTitle[para].m_szMessage,0, p->len+1 );
int max = 512;
if( p->len < 512 ) max = p->len;
memcpy( c_BbsTitle[para].m_szMessage, p->text, max );
c_BbsTitle[para].is_first = false;
count = 0;
}
else
{
count++;
int max = 512;
if( p->len < (count+1)*512 ) max = p->len % 512;
memcpy( c_BbsTitle[para].m_szMessage + 512 * count, p->text, max );
}
}
void RecvServerMessageDefault( k_server_text_default *p, CServerText *text ) // 辑滚肺 夸没且 锭 檬扁拳 鞘夸
{
static count = 0;
if( text->is_first )
{
text->m_pszMessage= new char[p->len+1];
memset( text->m_pszMessage,0, p->len+1 );
int max = 512;
if( p->len < 512 ) max = p->len;
memcpy( text->m_pszMessage, p->text, max );
text->is_first = false;
count = 0;
}
else
{
count++;
int max = 512;
if( p->len < (count+1)*512 ) max = p->len % 512;
memcpy( text->m_pszMessage + 512 * count, p->text, max );
}
}
void RecvCallPublicBbs( k_server_text_default *p ) // 辑滚俊辑 努扼捞攫飘肺 傍瘤荤亲 郴侩阑 焊尘锭..
{
if( !SMenu[MN_PUBLIC_BBS].bActive )
{
public_bbs.ReSet();
CallSmallMenu( MN_PUBLIC_BBS );
}
RecvServerMessageDefault( p, &public_bbs );
}
void RecvCharInfoPlus( k_server_to_client_char_info_plus *p )
{
SCharacterData.believe_god = p->believe_god;
SCharacterData.faith = p->faith;
}
void RecvCanMemorizeOk()
{
if( SCharacterData.nCharacterData[SPELL] == WIZARD_SPELL ) // 困磊靛 胶歧老 版快父...
{
InitMemorize();
MagicSetting();
CallSmallMenu( MN_MEM_BOOK, 0, SN_MAGIC_BOOK_OPEN );
}
}
void SendChangeMap_kein( short int port ) // 甘 傈券 - 梅磊: 捞悼且 霸烙辑滚狼 器飘锅龋
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -