cguseitemfrominventoryhandler.cpp

来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 2,063 行 · 第 1/5 页

CPP
2,063
字号
		// 坷配官捞甫 粮俊 眠啊茄促.		////cout << "坷配官捞甫 粮俊 眠啊钦聪促" << pSlayer->getX() << " " << pSlayer->getY() << endl;		TPOINT pt = pZone->addItem(pMotorcycle, pSlayer->getX(), pSlayer->getY(), false);		if(pt.x == -1)		{			StringStream msg;			msg << "坷配官捞甫 粮俊 持阑 荐 绝嚼聪促: "				<< "ZoneID=" << (int)pZone->getZoneID()				<< ", X=" << (int)pSlayer->getX()				<< ", Y=" << (int)pSlayer->getY();			filelog("motorError.txt", "%s", msg.toString().c_str());			//throw Error("坷配官捞甫 粮俊 持阑 荐 绝嚼聪促");			SAFE_DELETE(pMotorcycle);		}		else		{			if (!bFound)			{				// by sigi. 2002.10.14				pStmt->executeQuery(				"INSERT INTO MotorcycleObject (ItemID, ObjectID, ItemType, OwnerID, Storage, StorageID, X, Y, OptionType, Durability) Values (%d, %d, %d, '', %d, %d, %d, %d, '', %d)",					itemID, pMotorcycle->getObjectID(), itemType, STORAGE_ZONE, pZone->getZoneID(), pt.x, pt.y, durability);			}			// 坷配官捞甫 Parking Center俊 殿废茄促.			MotorcycleBox* pBox = new MotorcycleBox(pMotorcycle, pZone, pt.x, pt.y);			Assert(pBox != NULL);			g_pParkingCenter->addMotorcycleBox(pBox);		}		// 八刘 菩哦捞促.		GCCannotUse _GCCannotUse;		_GCCannotUse.setObjectID(pPacket->getObjectID());		pGamePlayer->sendPacket(&_GCCannotUse);		//}			/*		else		{			GCCannotUse _GCCannotUse;			_GCCannotUse.setObjectID(pPacket->getObjectID());			pGamePlayer->sendPacket(&_GCCannotUse);			SAFE_DELETE(pStmt);			return;		}		*/		SAFE_DELETE(pStmt);	}	END_DB(pStmt);#endif    __END_DEBUG_EX __END_CATCH}#ifdef __GAME_SERVER__static const Effect::EffectClass FirecrackerEffects[] ={	Effect::EFFECT_CLASS_FIRE_CRACKER_1,				// 0	Effect::EFFECT_CLASS_FIRE_CRACKER_2,				// 1	Effect::EFFECT_CLASS_FIRE_CRACKER_3,				// 2	Effect::EFFECT_CLASS_DRAGON_FIRE_CRACKER,			// 3	Effect::EFFECT_CLASS_FIRE_CRACKER_4,				// 4	Effect::EFFECT_CLASS_FIRE_CRACKER_VOLLEY_1,			// 5	Effect::EFFECT_CLASS_FIRE_CRACKER_VOLLEY_2,			// 6	Effect::EFFECT_CLASS_FIRE_CRACKER_VOLLEY_3,			// 7	Effect::EFFECT_CLASS_FIRE_CRACKER_VOLLEY_4,			// 8	Effect::EFFECT_CLASS_FIRE_CRACKER_WIDE_VOLLEY_1,	// 9	Effect::EFFECT_CLASS_FIRE_CRACKER_WIDE_VOLLEY_2,	// 10	Effect::EFFECT_CLASS_FIRE_CRACKER_WIDE_VOLLEY_3,	// 11	Effect::EFFECT_CLASS_FIRE_CRACKER_WIDE_VOLLEY_4,	// 12	Effect::EFFECT_CLASS_FIRE_CRACKER_STORM				// 13};#endifvoid CGUseItemFromInventoryHandler::executeFirecraker(CGUseItemFromInventory* pPacket, Player* pPlayer)	throw(ProtocolException, Error){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__	////cout << pPacket->toString().c_str() << endl;	Assert(pPacket != NULL);	Assert(pPlayer != NULL);	// 惑困 窃荐俊辑 俊矾 眉农甫 腹捞 沁扁 锭巩俊,	// 俊矾 眉农甫 措气 绵家茄促.	GamePlayer*     pGamePlayer  = dynamic_cast<GamePlayer*>(pPlayer);	Creature*       pCreature    = pGamePlayer->getCreature();	PlayerCreature* pPC          = dynamic_cast<PlayerCreature*>(pCreature);	Inventory*      pInventory   = pPC->getInventory();	Zone*           pZone        = pPC->getZone();	CoordInven_t    InvenX       = pPacket->getX();	CoordInven_t    InvenY       = pPacket->getY();	Item*           pItem        = pInventory->getItem(InvenX, InvenY);	ObjectID_t      ItemObjectID = pItem->getObjectID();	// 鸥老俊 胶懦阑 静绰 巴捞扼绊 焊绊 镜 荐 乐绰瘤甫 眉农茄促.	// 救傈瘤措俊辑绰 荤侩且 荐 绝促.	if ( !isAbleToUseTileSkill( pCreature )		|| (pZone->getZoneLevel(pCreature->getX(), pCreature->getY()) & COMPLETE_SAFE_ZONE)		|| ItemObjectID != pPacket->getObjectID()		)	{		GCCannotUse _GCCannotUse;		_GCCannotUse.setObjectID(pPacket->getObjectID());		pGamePlayer->sendPacket(&_GCCannotUse);		return;	}	Effect::EffectClass effectClass = FirecrackerEffects[ pItem->getItemType() ];/*	switch ( pItem->getItemType() )	{		case 0:			effectClass = Effect::EFFECT_CLASS_FIRE_CRACKER_1;			break;		case 1:			effectClass = Effect::EFFECT_CLASS_FIRE_CRACKER_2;			break;		case 2:			effectClass = Effect::EFFECT_CLASS_FIRE_CRACKER_3;			break;		case 3:			effectClass = Effect::EFFECT_CLASS_DRAGON_FIRE_CRACKER;			break;		case 4:			effectClass = Effect::EFFECT_CLASS_FIRE_CRACKER_4;			break;		default:			Assert(false);			break;	}*/	if (isStackable(pItem))	{		decreaseItemNum(pItem, pInventory, pCreature->getName(), STORAGE_INVENTORY, 0, InvenX, InvenY);	}	else 	{		// 阶捞瘤 臼绰 酒捞袍篮 官肺官肺 昏力秦霖促.		pInventory->deleteItem(InvenX, InvenY);		pItem->destroy();		SAFE_DELETE(pItem);	}	// 酒捞袍阑 荤侩沁促绊 努扼捞攫飘俊 舅赴促.	GCUseOK gcUseOK;	pGamePlayer->sendPacket( &gcUseOK );	// 俊棋飘甫 父甸绢辑 宏肺靛某胶泼 茄促.	GCAddEffectToTile gcAddEffectToTile;	gcAddEffectToTile.setObjectID( pCreature->getObjectID() );	gcAddEffectToTile.setEffectID( effectClass );	gcAddEffectToTile.setXY( pCreature->getX(), pCreature->getY() );	gcAddEffectToTile.setDuration( 10 );  // 喊 狼固 绝促 弊成 1檬	pZone->broadcastPacket( pCreature->getX(), pCreature->getY(), &gcAddEffectToTile );#endif    __END_DEBUG_EX __END_CATCH}void CGUseItemFromInventoryHandler::executeDyePotion(CGUseItemFromInventory* pPacket, Player* pPlayer) 	throw(ProtocolException, Error){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__	Assert(pPacket != NULL);	Assert(pPlayer != NULL);	// 惑困 窃荐俊辑 俊矾 眉农甫 腹捞 沁扁 锭巩俊,	// 俊矾 眉农甫 措气 绵家茄促.	GamePlayer*     pGamePlayer  = dynamic_cast<GamePlayer*>(pPlayer);	Creature*       pCreature    = pGamePlayer->getCreature();	PlayerCreature* pPC          = dynamic_cast<PlayerCreature*>(pCreature);	Inventory*      pInventory   = pPC->getInventory();	Zone*           pZone        = pPC->getZone();	CoordInven_t    InvenX       = pPacket->getX();	CoordInven_t    InvenY       = pPacket->getY();	Item*           pItem        = pInventory->getItem(InvenX, InvenY);	DyePotionInfo*	pItemInfo	 = dynamic_cast<DyePotionInfo*>(g_pItemInfoManager->getItemInfo( pItem->getItemClass(), pItem->getItemType() ));	bool			bInitAllStat = false;	if ( pItem->getObjectID() != pPacket->getObjectID() ||		pItemInfo == NULL )	{		sendCannotUse( pPacket, pPlayer );		return;	}	BYTE func = pItemInfo->getFunctionFlag();	int funcv = pItemInfo->getFunctionValue();	if ( func == DyePotionInfo::FUNCTION_HAIR && pPC->isVampire() )	{		sendCannotUse( pPacket, pPlayer );		return;	}	if ( func == DyePotionInfo::FUNCTION_SKIN && pPC->isOusters() )	{		sendCannotUse( pPacket, pPlayer );		return;	}	switch ( func )	{		case DyePotionInfo::FUNCTION_HAIR:			{				if ( !changeHairColorEx( pPC, funcv ) )				{					sendCannotUse( pPacket, pPlayer );					return;				}			}			break;		case DyePotionInfo::FUNCTION_SKIN:			{				if ( !changeSkinColorEx( pPC, funcv ) )				{					sendCannotUse( pPacket, pPlayer );					return;				}			}			break;		case DyePotionInfo::FUNCTION_SEX:			{				int code = changeSexEx( pPC );				if ( code != 0 )				{					// -_-; 己傈券 酒捞袍父 坷宏璃飘 酒捞叼俊促啊 俊矾内靛 持绢霖促. ぬ.ば					GCCannotUse _GCCannotUse;					_GCCannotUse.setObjectID((ObjectID_t)code);					pPlayer->sendPacket(&_GCCannotUse);					return;				}				else bInitAllStat = true;			}			break;		case DyePotionInfo::FUNCTION_BAT:			{				if ( !changeBatColorEx( pPC, funcv ) )				{					sendCannotUse( pPacket, pPlayer );					return;				}			}			break;		default:			{				sendCannotUse( pPacket, pPlayer );				return;			}	}	GCUseOK gcUseOK;	pPlayer->sendPacket( &gcUseOK );	if (isStackable(pItem))	{		decreaseItemNum(pItem, pInventory, pCreature->getName(), STORAGE_INVENTORY, 0, InvenX, InvenY);	}	else 	{		// 阶捞瘤 臼绰 酒捞袍篮 官肺官肺 昏力秦霖促.		pInventory->deleteItem(InvenX, InvenY);		pItem->destroy();		SAFE_DELETE(pItem);	}	if ( bInitAllStat )	{	//	initAllStatAndSendChange( pPC );		pPC->setFlag( Effect::EFFECT_CLASS_INIT_ALL_STAT );		transportCreature( pPC, pPC->getZoneID(), pPC->getX(), pPC->getY(), false );	}	else	{		GCDeleteObject gcDeleteObject;		gcDeleteObject.setObjectID( pPC->getObjectID() );		pZone->broadcastPacket( pPC->getX(), pPC->getY(), &gcDeleteObject, pPC );		if ( pPC->isSlayer() )		{			Slayer* pSlayer = dynamic_cast<Slayer*>(pPC);			Assert( pSlayer != NULL );			GCAddSlayer gcAddSlayer;			makeGCAddSlayer( &gcAddSlayer, pSlayer );			pZone->broadcastPacket( pPC->getX(), pPC->getY(), &gcAddSlayer, pPC );		}		else if ( pPC->isVampire() )		{			Vampire* pVampire = dynamic_cast<Vampire*>(pPC);			Assert( pVampire != NULL );			GCAddVampire gcAddVampire;			makeGCAddVampire( &gcAddVampire, pVampire );			pZone->broadcastPacket( pPC->getX(), pPC->getY(), &gcAddVampire, pPC );		}		else if ( pPC->isOusters() )		{			Ousters* pOusters = dynamic_cast<Ousters*>(pPC);			Assert( pOusters != NULL );			GCAddOusters gcAddOusters;			makeGCAddOusters( &gcAddOusters, pOusters );			pZone->broadcastPacket( pPC->getX(), pPC->getY(), &gcAddOusters, pPC );		}		else		{			Assert( false );		}	}	return;#endif    __END_DEBUG_EX __END_CATCH}#ifdef __GAME_SERVER__bool changeHairColorEx( PlayerCreature* pPC, Color_t color ){	if ( pPC->isSlayer() )	{		Slayer* pSlayer = dynamic_cast<Slayer*>(pPC);		Assert( pSlayer != NULL );		if ( pSlayer->getHairColor() == color ) return false;		pSlayer->setHairColor( color );				char query[25];		sprintf( query, "HairColor=%u", color );		pSlayer->tinysave( query );		return true;	}	else if ( pPC->isOusters() )	{		Ousters* pOusters = dynamic_cast<Ousters*>(pPC);		Assert( pOusters != NULL );		if ( pOusters->getHairColor() == color ) return false;		pOusters->setHairColor( color );				char query[25];		sprintf( query, "HairColor=%u", color );		pOusters->tinysave( query );		return true;	}	return false;}bool changeBatColorEx( PlayerCreature* pPC, Color_t color ){	if ( pPC->isVampire() )	{		Vampire* pVampire = dynamic_cast<Vampire*>(pPC);		Assert( pVampire != NULL );		if ( pVampire->getBatColor() == color ) return false;		if ( pVampire->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_BAT) ) return false;		pVampire->setBatColor( color );				char query[25];		sprintf( query, "BatColor=%u", color );		pVampire->tinysave( query );		return true;	}	return false;}bool changeSkinColorEx( PlayerCreature* pPC, Color_t color ){	if ( pPC->isSlayer() )	{		Slayer* pSlayer = dynamic_cast<Slayer*>(pPC);		Assert( pSlayer != NULL );		if ( pSlayer->getSkinColor() == color ) return false;		pSlayer->setSkinColor( color );

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?