cgaddzonetoinventoryhandler.cpp

来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· 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 + -
显示快捷键?