📄 dragonserver.cpp
字号:
case CMD_MOVE:
{
RecvCMD_MOVE(cn,packet);
break;
}
case CMD_ITEM_DROP:
{
CHARLIST *ch = CheckServerId( cn );
if( !ch ) break;
// Item捞 沥富肺 啊瘤绊 乐绰 Item牢瘤 犬牢秦具 茄促.
t_client_item_drop *pi = &packet->u.client_item_drop;
ItemAttr *item = &(pi->item);
*item = ch->handheld;
CItem *ii = ItemUnit( item->item_no ); // 弊繁 Item捞 Table俊 乐绰啊?
if( ii == NULL ) break;//021030 lsw
const int item_id = AddItemList( item->item_no, ch->handheld.attr, 0, pi->x, pi->y, 0, 0 );
if(item_id < 0) break;
// 颊俊 甸篮 酒捞袍阑 瘤况滚赴促.
memset( &ch->handheld, 0, sizeof( ItemAttr ) );
ch->Money = GetMoneyByItem( ch ); // 0430 YGI
//CheckMoveItem( ch->Name, HAND, GROUND, pi->item, ch->Money);
SendItemEventLog( item, cn, SN_NOT_USER, SILT_PUT_GROUND, 1 ); //YGI acer
break;
}
case CMD_ITEM_TAKE:
{
CHARLIST *ch = ::CheckServerId( cn );
if( !ch ) break;
if(VIEWTYPE_OBSERVE_ == ch->viewtype)//包傈葛靛 捞搁 酒捞袍 救 笼绢咙
{
break;
}
const int item_id = packet->u.client_item_take.item_id;
if( item_id < 0 || item_id >= MAX_ITEM_LIST ) break;
if( ItemList[item_id].bAlive != ALIVE_ ) break;
if( ItemList[item_id].attr[IATTR_ATTR] & IA2_NOTMOVE ) break;
//<soto-030711 焊拱惑磊 眠啊 内靛.(哭率 滚瓢阑 酒捞袍俊 措绊 促款矫俊 惯积.)
//窜鉴洒 焊拱 惑磊牢啊甫 眉农.
CItem *pCItem = ItemUnit(ItemList[item_id].item_no);
if(TreasureBoxMgr()->IsTreasureBox(pCItem->GetItemKind()))//焊拱 惑磊 嘎备夸~
{
TreasureBoxMgr()->CreatTreasure(item_id, cn);
break; // 焊阂惑磊 何盒阑 贸府 沁栏骨肺.促弗 巴篮 贸府 窍瘤 臼酒档 等促.
}
//焊拱惑磊 酒聪搁 柳青.
//>soto-030711
//acer5
int gab_x = abs( ch->X-ItemList[item_id].x );
int gab_y = abs( ch->Y-ItemList[item_id].y );
int total_gab = gab_x/16+1 + gab_y/16+1;
if( total_gab > 8 ) break; // 窃捞 9鸥老 捞惑捞搁 呈公 钢府 冻绢廉 乐促.
// 眠啊等 何盒 //1214
if( ch->handheld.item_no ) MoveEmptyInv( &ch->handheld, ch );
// 酒酒袍阑 颊栏肺 悸泼
ch->handheld.item_no = ItemList[item_id].item_no ;
memcpy(ch->handheld.attr, ItemList[item_id].attr, 6 * sizeof( DWORD )) ;
ch->Money = GetMoneyByItem( ch ); // 0430 YGI
//CheckMoveItem( ch->Name, GROUND, HAND, ch->handheld, ch->Money);
SendItemEventLog( &ch->handheld, cn, SN_NOT_USER, SILT_GET_GROUND, 1 ); //YGI acer
packet->h.header.type = CMD_YOU_GOT_ITEM;
packet->u.server_you_got_item.item_id = item_id;
packet->h.header.size = sizeof(t_server_you_got_item);
QueuePacket(connections, cn, packet, 1);
ItemList[item_id].bAlive = REMOVE_;
SetArea(REMOVE_ITEM_AREA, item_id);
break;
}
case CMD_REQ_LEARN_MAGIC:
{
g_pBattleManager->RecvMagicLearn(cn, &packet->u.kein.client_learn_magic);
break;
}
case CMD_NPC_MAGIC:
{
g_pBattleManager->RecvNpcMagic(&packet->u.magic.client_npc_magic);
break;
}
case CMD_MAGIC_SELECT:
{ //< CSD-TW-030606
g_pBattleManager->RecvMagicSelect(cn, &packet->u.magic.client_magic_select);
break;
} //> CSD-TW-030606
case CMD_MAGIC_CASTING:
{ //< CSD-TW-030606
g_pBattleManager->RecvMagicCasting(cn, &packet->u.magic.client_magic_casting);
break;
} //> CSD-TW-030606
case CMD_MAGIC_EXECUTE:
{ //< CSD-TW-030606
g_pBattleManager->RecvMagicExecute(cn, &packet->u.magic.client_magic_execute);
break;
} //> CSD-TW-030606
case CMD_MAGIC_RESULT:
{
g_pBattleManager->RecvMagicResult(cn, &packet->u.magic.client_magic_result);
break;
}
case CMD_MAGIC_RESULT_D:
{
g_pBattleManager->RecvMagicResult(&packet->u.magic.magic_result_d);
break;
}
case CMD_COMBAT_CLEAR:
{ //< CSD-TW-030606
g_pBattleManager->RecvCombatClear(cn, &packet->u.combat.client_combat_clear);
break;
} //> CSD-TW-030606
case CMD_COMBAT_OBTAIN:
{
g_pBattleManager->RecvCombatObtain(cn, &packet->u.combat.client_combat_obtain);
break;
}
case CMD_COMBAT_RESET:
{
g_pBattleManager->RecvCombatReset(cn);
break;
}
case CMD_COMBAT_REQUEST:
{
g_pBattleManager->RecvCombatRequest(cn, &packet->u.combat.client_combat_request);
break;
}
case CMD_COMBAT_LEARN:
{
g_pBattleManager->RecvCombatLearn(cn, &packet->u.combat.client_combat_learn);
break;
}
case CMD_COMBAT_SELECT:
{
g_pBattleManager->RecvCombatSelect(cn, &packet->u.combat.client_combat_select);
break;
}
case CMD_COMBAT_ATTACK:
{
g_pBattleManager->RecvCombatAttack(cn, &packet->u.combat.client_combat_attack);
break;
}
case CMD_COMBAT_RESULT:
{
g_pBattleManager->RecvCombatResult(cn, &packet->u.combat.client_combat_result);
break;
}
case CMD_CLIENT_CHARACTER_DEMAND : RecvCMD_CLIENT_CHARACTER_DEMAND( cn, &packet->u.angra.client_character_demand);
break;
case CMD_CHANGE_EQUIP:
{
break; // 0713 YKI
unsigned char equip[4] = {0, } ; // 0623 YGI
SetShape( equip, cn ); // 0623 YGI // 辑滚俊辑 努扼捞攫飘 厘馒拳搁阑 焊郴霖促.
// memcpy(equip, packet->u.client_change_equip.equip, 4);
memcpy(connections[cn].chrlst.accessory, equip, 4);
packet->h.header.type = CMD_CHANGE_EQUIP;
packet->h.header.size = sizeof(t_server_change_equip);
packet->u.server_change_equip.server_id= cn;
memcpy(packet->u.server_change_equip.equip, equip, 4);
CastMe2Other( cn, packet);
break ;
}
case CMD_ATTACK:
{
g_pBattleManager->RecvStrikeAttack(cn, &packet->u.strike.player_attack);
break;
}
case CMD_NPC_ATTACK:
{
g_pBattleManager->RecvNpcAttack(&packet->u.strike.npc_attack);
break;
}
case CMD_THROW_ATTACK:
{
g_pBattleManager->RecvThrowAttack(cn, &packet->u.strike.client_throw_attack);
break;
}
case CMD_THROW_RESULT:
{
g_pBattleManager->RecvThrowResult(cn, &packet->u.strike.client_throw_result);
break;
}
case CMD_EFFECT_RESULT:
{ //< CSD-031007
g_pBattleManager->RecvEffectResult(cn, &packet->u.strike.client_effect_result);
break;
} //> CSD-031007
case CMD_CHAT_DATA :
{//021126 lsw
CHARLIST *ch = CheckServerId(cn);
if (!ch)
{
break;
}
::CheckChatingData( ch->Name, packet->u.client_chat_data.text);
::ConvString( packet->u.client_chat_data.text );
ch->attackedblock = 0;
switch (packet->u.client_chat_data.type)
{
case CHATTYPE_WHISPER:
case CHATTYPE_PARTY:
{
::SendChatParty(connections, cn, packet);
break;
}
case CHATTYPE_GUILD:
{
::SendWhisper(connections,cn, packet);
break;
}
case CHATTYPE_NORMAL:
case CHATTYPE_MERCHANT_BBS:
{
::SendChatArea(cn , packet);
break;
}
case CHATTYPE_COLOSSUS_GLOBAL:
{
::SendFightMapChat(cn, packet);
break;
}
case CHATTYPE_COLOSSUS:
{
::SendFightMapChatMyTeam( cn, packet );
break;
}
}
break;
}
case CMD_EVENT:
{
RecvEvent(&packet->u.client_event, cn);
break;
}
case CMD_ITEM_EXCHANGE:
{
CHARLIST *ch = CheckServerId( cn );
if( !ch ) break;
if( connections[cn].state < CONNECT_JOIN ) break;
if( exist(packet->u.item_ex_info.itemno, cn, packet->u.item_ex_info.pos_s) )
{ // if item exists
if(exchangePOS_of_Item(cn, &packet->u.chr_status_info, packet->u.item_ex_info.pos_s, packet->u.item_ex_info.pos_t) )
{
ch->Money = GetMoneyByItem( ch ); // 0111
CheckAndSendChangeEquip( ch );// 0713 YGI
break;
}
}
// 角菩
packet->h.header.type= CMD_ITEM_EXCHANGE_REFUSE ;
packet->h.header.size = sizeof(t_header) ;
QueuePacket(connections, cn, packet, 1) ;
break;
}
case CMD_INTERFACE_BATTLE:
{
connections[ cn].chrlst.Peacests= 1 ;
packet->h.header.type = CMD_INTERFACE_BATTLE;
packet->u.server_interface_battle.client_id = cn;
packet->h.header.size = sizeof( t_server_interface_battle);
CastMe2Other( cn, packet );
break ;
}
case CMD_INTERFACE_PEACE:
{
connections[ cn].chrlst.Peacests = 0;
packet->h.header.type = CMD_INTERFACE_PEACE;
packet->u.server_interface_peace.client_id = cn;
packet->h.header.size = sizeof( t_server_interface_peace);
CastMe2Other( cn, packet );
break ;
}
case CMD_LEVELUP_POINT:
{
RecvLevelUpPoint(cn, &packet->u.client_levelup_point);
break;
}
case CMD_CALL_SMALLMENU:
{
CallSmallMenu(cn, packet->u.server_call_smallmenu.storelistindex, packet->u.server_call_smallmenu.menu);
break;
}
case CMD_DUAL_MAGIC_LEARN_BOOK:
{ //<soto-030421
SendCallDualMagicLearnMenu(cn);
break;
} //>soto-030421
case CMD_OPEN_LUCKY_MENU:
{
RecvCallLuckyMenuOpen(cn); //soto-030429
break;
}
case CMD_OPEN_WINNER_MENU:
{
if (LottoSystem())
{
LottoSystem()->RecvOpenWinnerMenu(cn);//soto-030502
}
break;
}
case CMD_CHECK_WINNER_MENU:
{
if (LottoSystem())
{
LottoSystem()->RecvCheckOpenWinnerMenu(&packet->u.Lotto_Winner_Menu);
}
break;
}
//<soto-030504
case CMD_NEW_EVENT:
{
if (LottoSystem())
{
LottoSystem()->RecvDBNewEvent(&packet->u.Lotto_Info);
}
break;
}
case CMD_LOTTO_BUY:
{
if(LottoSystem())
{
LottoSystem()->RecvBuyLotto(&packet->u.Lotto_Buy);//C
}
break;
}
case CMD_CAN_BUY:
{
if(LottoSystem())
{
LottoSystem()->RecvCanBuyLotto(&packet->u.Lotto_Buy);//DB
}
break;
}
case CMD_WINNER_CHECK:
{
if(LottoSystem())
{
LottoSystem()->RecvCheckWinner(cn);
}
break;
}
case CMD_CHECK_OK:
{
if(LottoSystem())
{
LottoSystem()->RecvCheckOKWinner(&packet->u.Check_Winner);
}
break;
}
//<! BBD 040127 肺肚犬牢 例瞒狼 付瘤阜 橇肺技胶
case CMD_DEL_LOTTO_USER_OK:
{
if(LottoSystem())
{
LottoSystem()->CheckIsDelOk(&packet->u.Lotto_Del_Ok.bIsDelOK);
}
break;
}
//> BBD 040127 肺肚犬牢 例瞒狼 付瘤阜 橇肺技胶
case CMD_LOTTERY_INFO:
{
if(LottoSystem())
{
LottoSystem()->RecvLottoInfo(&packet->u.Lotto_Info);
}
break;
}
//>soto-030504
case CMD_OPEN_LOTTOMENU://soto-030520
{
if(LottoSystem())
{
LottoSystem()->RecvOpenLottoMenu(cn);
}
}
break;
case CMD_ITEM_BUY_REQ:
{
RecvItemBuy(cn, &packet->u.client_item_buy);
break;
}
case CMD_ITEM_SELL_REQ:
{
RecvItemSell(cn, &packet->u.client_item_sell);
break;
}
case CMD_SKILL_INFO:
{
RecvSkillInfo( cn, &packet->u.client_skill_info );
break;
}
case CMD_SKILL_CURSOR_VIEW:
{
RecvSkillCursorView( cn, &packet->u.client_skill_cursor_view );
break;
}
case CMD_SKILL_GAUGE:
{
RecvSkillGauge( cn, &packet->u.client_skill_gauge );
break;
}
case CMD_FOOT_ON_TRAP_0_ITEM:
{
RecvCMD_FOOT_ON_TRAP_0_ITEM( cn, &packet->u.client_foot_on_trap0 );
break;
}
case CMD_FOOT_ON_TRAP_1_ITEM:
{
RecvCMD_FOOT_ON_TRAP_1_ITEM( cn, &packet->u.client_foot_on_trap1 );
break;
}
case CMD_MODIFY_POSITION:
{
if( cn < DRAGON_CONNECTIONS_START || cn >= DRAGON_MAX_CONNECTIONS )
{
}
else
{
if( connections[cn].state < CONNECT_JOIN ) break;
RecvCMD_MODIFY_POSITION( cn, &packet->u.client_modify_position );
}
break;
}
case CMD_ITEM_DOOR_OPEN_CLOSE:
{
RecvItemDoorOpenClose(cn, &packet->u.item_door_open_close);
break;
}
case CMD_ITEM_BOX_BREAK:
{
RecvCMD_ITEM_BOX_BREAK( cn, &packet->u.client_item_box_break );
break;
}
case CMD_JUST_ATTACK_ANIMATION:
{
RecvCMD_JUST_ATTACK_ANIMATION( cn, &packet->u.client_just_attack_animation );
break;
}
case CMD_ITEM_BOX_BREAK_RESULT:
{
RecvCMD_ITEM_BOX_BREAK_RESULT( cn, &packet->u.client_item_box_break_result );
break;
}
case CMD_ITEM_BOX_MAGIC_BREAK:
{
RecvCMD_ITEM_BOX_MAGIC_BREAK(cn, &packet->u.client_item_box_magic_break);
break;
}
case CMD_ROOF_OPEN:
{
RecvRoofOpen( cn, packet->u.roof_open.roofno );
break;
}
case CMD_ROOF_CLOSE:
{
RecvRoofClose(cn, packet->u.roof_close.roofno);
break;
}
case CMD_CHAT_SET:
{
RecvChatSet(cn, &packet->u.chat_set);
break;
}
case CMD_TOTAL_MAP_CONNECTIONS:
{
RecvTotalMapConnections( cn );
break;
}
case CMD_TOTAL_CONNECTIONS:
{
RecvTotalConnections( cn );
break;
}
case CMD_ISTHERE_CHARNAME:
{
SendCheckName(cn, packet->u.client_isthere_charname.name);
break; // 1004 YGI
}
case CMD_TAME_COMMAND:
{
RecvTameCommand(cn, &packet->u.tame_command);
break;
}
case CMD_DEBUG_REQ_CHAR_INFO:
{
RecvDebugReqCharInfo( cn, packet->u.debug_client_req_char_info.id );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -