cgaddzonetoinventoryhandler.cpp
来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 715 行 · 第 1/2 页
CPP
715 行
// Flag牢 版快浚 Flag 甫 嘿咯霖促. if ( pItem->isFlagItem() ) { addSimpleCreatureEffect( pPC, Effect::EFFECT_CLASS_HAS_FLAG ); } if ( pItem->getItemClass() == Item::ITEM_CLASS_SWEEPER ) { EffectHasSweeper* pEffect = new EffectHasSweeper( pPC ); pEffect->setPart( pItem->getItemType() ); pPC->setFlag( pEffect->getEffectClass() ); pPC->addEffect( pEffect ); // addSimpleCreatureEffect( pPC, (Effect::EffectClass)(Effect::EFFECT_CLASS_HAS_SWEEPER + pItem->getItemType()) ); GCAddEffect gcAddEffect; gcAddEffect.setObjectID( pPC->getObjectID() ); gcAddEffect.setEffectID( pEffect->getSendEffectClass() ); pZone->broadcastPacket( pPC->getX(), pPC->getY(), &gcAddEffect ); // 林奎栏搁 粮俊 矫胶袍 皋技瘤 谎妨霖促 char race[15]; if ( pCreature->isSlayer() ) { sprintf( race, g_pStringPool->c_str( STRID_SLAYER ) ); } else if ( pCreature->isVampire() ) { sprintf( race, g_pStringPool->c_str( STRID_VAMPIRE ) ); } else if ( pCreature->isOusters() ) { sprintf( race, g_pStringPool->c_str( STRID_OUSTERS ) ); } else { Assert(false); } const SweeperInfo* pSweeperInfo = dynamic_cast<SweeperInfo*>(g_pSweeperInfoManager->getItemInfo(pItem->getItemType())); char msg[100]; sprintf( msg , g_pStringPool->c_str( STRID_PICK_UP_SWEEPER ) , pSweeperInfo->getName().c_str(), pCreature->getName().c_str(), race ); GCSystemMessage gcSystemMessage; gcSystemMessage.setMessage( msg ); pZone->broadcastPacket( &gcSystemMessage ); }/* else if (itemclass == Item::ITEM_CLASS_EVENT_TREE) { // 农府胶付胶 飘府 炼阿捞搁 if ( itemtype <= 11 ) { TPOINT pt = checkEventTree( pPC, InvenX, InvenY ); // 农府胶付胶 飘府 炼阿捞 嘎苗瘤绰瘤 夯促. if ( pt.x != -1 && pt.y != -1 ) { // 嘎苗柳 飘府 炼阿阑 瘤款促. deleteInventoryItem( pInventory, pt.x, pt.y, pt.x + 2, pt.y + 3 ); pItem = NULL; // せせ // 飘府甫 积己茄促. list<OptionType_t> optionType; Item* pTreeItem = g_pItemFactoryManager->createItem( Item::ITEM_CLASS_EVENT_TREE, 12, optionType ); pZone->getObjectRegistry().registerObject( pTreeItem ); pInventory->addItem( pt.x, pt.y, pTreeItem ); pTreeItem->create( pPC->getName(), STORAGE_INVENTORY, 0, pt.x, pt.y ); // 努扼捞攫飘俊 飘府啊 父甸绢脸促绰 吧 舅赴促. GCCreateItem gcCreateItem; makeGCCreateItem( &gcCreateItem, pTreeItem, pt.x, pt.y ); pGamePlayer->sendPacket(&gcCreateItem); } } }*/ if (Merge) { // 钦媚脸阑 版快 Item 按眉甫 昏力茄促. 恐衬 箭磊肺 函脚沁扁 东俊 -_-; SAFE_DELETE(pItem); } } else { goto ERROR; } if ( pItem != NULL && pItem->isTraceItem() ) { char zoneName[15]; sprintf(zoneName, "%4d%3d%3d", pZone->getZoneID(), ZoneX, ZoneY); remainTraceLog( pItem, zoneName, pCreature->getName(), ITEM_LOG_MOVE, DETAIL_PICKUP); } } catch (Throwable & t) { //cerr << t.toString() << endl; }ERROR: GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); return;#endif // __GAME_SERVER__ __END_DEBUG __END_DEBUG_EX __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 捞亥飘 内靛啊 甸绢啊乐绰 滚怜捞促.// 度鞍篮 捞亥飘啊 肚 角青瞪瘤档 葛福聪 瘤快瘤 富 巴! -- by 辫己刮///////////////////////////////////////////////////////////////////////////////*void CGAddZoneToInventoryHandler::execute (CGAddZoneToInventory* pPacket , Player* pPlayer) throw (ProtocolException, Error){ __BEGIN_TRY __BEGIN_DEBUG_EX __BEGIN_DEBUG #ifdef __GAME_SERVER__ Assert(pPacket != NULL); Assert(pPlayer != NULL); try { GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); Creature* pCreature = pGamePlayer->getCreature(); if (pCreature == NULL) return; PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature); bool Merge = false; // 酒捞袍捞 般媚辑 甸绢哎 版快 眉农 函荐 bool Success = false; // 酒捞袍阑 Adding 且荐 乐绰瘤 绝绰瘤 咯何 Zone* pZone = pPC->getZone(); Coord_t ZoneX = pPacket->getZoneX(); Coord_t ZoneY = pPacket->getZoneY(); // 官款靛甫 逞绢啊瘤绰 臼绰瘤 眉农茄促. if (!isValidZoneCoord(pZone, ZoneX, ZoneY)) goto ERROR; Tile& _Tile = pZone->getTile(ZoneX , ZoneY); // 鸥老俊 酒捞袍捞 粮犁窍绰瘤甫 眉农茄促. if (!_Tile.hasItem()) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); return; } // 酒捞袍 器牢磐甫 掘绢辰促. Item* pItem = _Tile.getItem(); if (pItem == NULL) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); return; } // 酒捞袍捞 葛磐荤捞努捞扼搁 林阑 荐啊 绝促. if (pItem->getItemClass() == Item::ITEM_CLASS_MOTORCYCLE) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); return; } // OID啊 老摹窍绰瘤甫 八荤秦具 茄促. ObjectID_t ItemObjectID = pItem->getObjectID(); if (ItemObjectID != pPacket->getObjectID()) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); return; } // 官蹿俊 冻绢廉 乐绰 酒捞袍捞 捞亥飘侩 秦榜捞扼搁... // 牢亥配府俊 歹窍绰 巴捞 酒聪扼, 弊成 墨款飘父 棵妨拎具 茄促. if (pItem->getItemClass() == Item::ITEM_CLASS_SKULL && 12 <= pItem->getItemType() && pItem->getItemType() <= 16) { uint scount = pGamePlayer->getSpecialEventCount(); int prev = (int)(scount/10); int cur = 0; switch (pItem->getItemType()) { case 12: scount += 1; break; // 炔陛 秦榜 case 15: scount += 4; break; // 荐沥 秦榜 case 14: scount += 9; break; // 八篮 秦榜 default: break; } // 墨款飘甫 历厘茄促. pGamePlayer->setSpecialEventCount(scount); pGamePlayer->saveSpecialEventCount(); cur = (int)(scount/10); // 粮俊辑 酒捞袍阑 昏力茄促. pZone->deleteItem(pItem, ZoneX, ZoneY); // 林篮 仇俊霸 肋 林菌促绊 朝妨霖促. GCDeleteandPickUpOK _GCDeleteandPickUpOK; GCDeleteObject _GCDeleteObject; _GCDeleteandPickUpOK.setObjectID(pItem->getObjectID()); pPlayer->sendPacket(&_GCDeleteandPickUpOK); // 辟贸俊 乐绰 促弗 荤恩甸俊罢 酒捞袍俊 荤扼脸促绰 巴阑 焊郴霖促. _GCDeleteObject.setObjectID(pItem->getObjectID()); pZone->broadcastPacket(pPC->getX(), pPC->getY(), &_GCDeleteObject , pPC); // 付瘤阜栏肺 角力 酒捞袍 按眉甫 昏力茄促. delete pItem; // 痢荐甫 沥扁利栏肺 啊福媚霖促. StringStream msg; msg << "寸脚狼 泅犁 捞亥飘 痢荐绰 " << pGamePlayer->getSpecialEventCount() << " 器牢飘 涝聪促."; GCSystemMessage gcMsg; gcMsg.setMessage(msg.toString()); pPlayer->sendPacket(&gcMsg); // 痢荐甫 沥扁利栏肺 宏肺靛某胶泼茄促. if (prev != cur) { StringStream msg; msg << pPC->getName() << "丛膊辑 " << pGamePlayer->getSpecialEventCount() << " 器牢飘狼 捞亥飘 痢荐甫 裙垫窍看嚼聪促."; GCSystemMessage gcMsg; gcMsg.setMessage(msg.toString()); pZone->broadcastPacket(pPC->getX(), pPC->getY(), &gcMsg , pPC); } return; } // Inventory甫 罐酒柯促. Inventory* pInventory = pPC->getInventory(); CoordInven_t InvenX = pPacket->getInvenX(); CoordInven_t InvenY = pPacket->getInvenY(); // 牢亥配府 谅钎 檬苞扼搁 俊矾促. if (InvenX >= 10 || InvenY >= 6) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); return; } // 弊 谅钎俊 酒捞袍阑 歹且 荐 绝绢档 俊矾促. if (!pInventory->canAdding(InvenX, InvenY, pItem)) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); return; } // 酒捞袍阑 歹且 磊府俊 促弗 酒捞袍捞 乐瘤 臼篮瘤 八荤茄促. Item* pPrevItem = pInventory->searchItem(InvenX, InvenY, pItem); if (pPrevItem != NULL) { if (canStack(pItem, pPrevItem)) { // 箭磊啊 9俺甫 逞栏搁 9俺 瞪锭鳖瘤父 Add 窍绊 唱赣瘤绰 付快胶俊 崔酒敌促. if (pItem->getNum() + pPrevItem->getNum() > 9) { ItemNum_t CurrentNum = pPrevItem->getNum(); ItemNum_t AddNum = pItem->getNum(); pPrevItem->setNum(MaxSlotItem); pItem->setNum(AddNum + CurrentNum - MaxSlotItem); pPrevItem->save(pPC->getName(), STORAGE_INVENTORY, 0, InvenX, InvenY); pItem->save(pPC->getName(), STORAGE_EXTRASLOT, 0, 0, 0); } else { // 扁粮 浇儿俊 乐绰 Item阑 历厘茄促. pPrevItem->setNum(pPrevItem->getNum() + pItem->getNum()); // 牢亥配府狼 醚 箭磊甫 棵妨霖促. pInventory->increaseNum(pItem->getNum()); // 牢亥配府狼 醚 公霸甫 棵妨霖促. pInventory->increaseWeight(pItem->getWeight()* pItem->getNum()); // 酒捞袍阑 历厘茄促. pPrevItem->save(pPC->getName(), STORAGE_INVENTORY, 0, InvenX, InvenY); // DB俊辑 昏力茄促. 窍唱肺 钦媚脸扁 东俊... pItem->destroy(); Merge = true; Success = true; } } } else { pInventory->addItem(InvenX, InvenY, pItem); pItem->save(pPC->getName(), STORAGE_INVENTORY, 0, InvenX, InvenY); Success = true; } if (Success) { pZone->deleteItem(pItem, ZoneX, ZoneY); GCDeleteandPickUpOK _GCDeleteandPickUpOK; GCDeleteObject _GCDeleteObject; _GCDeleteandPickUpOK.setObjectID(pItem->getObjectID()); pPlayer->sendPacket(&_GCDeleteandPickUpOK); // 辟贸俊 乐绰 促弗 荤恩甸俊罢 酒捞袍俊 荤扼脸促绰 巴阑 焊郴霖促. _GCDeleteObject.setObjectID(pItem->getObjectID()); pZone->broadcastPacket(pPC->getX(), pPC->getY(), &_GCDeleteObject , pPC); log(LOG_PICKUP_ITEM, pPC->getName(), "", pItem->toString()); if (Merge) { // 钦媚脸阑 版快 Item 按眉甫 昏力茄促. 恐衬 箭磊肺 函脚沁扁 东俊 -_-; SAFE_DELETE(pItem); } } else { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); } } catch (Throwable & t) { //cerr << t.toString() << endl; }#endif // __GAME_SERVER__ __END_DEBUG __END_DEBUG_EX __END_CATCH}*/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?