cgshoprequestbuyhandler.cpp

来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 927 行 · 第 1/3 页

CPP
927
字号
		soldpkt.setShopType(shopType);		soldpkt.setShopIndex(shopIndex);		try		{			for (int zx=CenterX-5; zx<=CenterX+5; zx++)			{				for (int zy=CenterY-5; zy<=CenterY+5; zy++)				{					// 官款靛甫 逞绢啊瘤 臼绰啊 眉农					if (!isValidZoneCoord(pZone, zx, zy)) continue;					Tile & tile = pZone->getTile(zx, zy);					if (tile.hasCreature(Creature::MOVE_MODE_WALKING)) 					{						// 吧绢促聪绰 农府媚甫 八祸						pNearCreature = tile.getCreature(Creature::MOVE_MODE_WALKING);						if (pNearCreature != NULL)						{							// 规陛 酒捞袍阑 备涝茄 敲饭捞绢扼搁 积帆							if (pNearCreature->getObjectID() == pPC->getObjectID()) continue;							// 父距 敲饭捞绢扼搁 菩哦阑 焊郴霖促.							if (pNearCreature->isPC())							{								pNearPlayer = pNearCreature->getPlayer();								if (pNearPlayer != NULL) pNearPlayer->sendPacket(&soldpkt);							}						}					}					if (tile.hasCreature(Creature::MOVE_MODE_FLYING)) 					{						// 朝酒促聪绰 农府媚甫 八祸						pNearCreature = tile.getCreature(Creature::MOVE_MODE_FLYING);						if (pNearCreature != NULL)						{							// 规陛 酒捞袍阑 备涝茄 敲饭捞绢扼搁 积帆							if (pNearCreature->getObjectID() == pPC->getObjectID()) continue;							// 父距 敲饭捞绢扼搁 菩哦阑 焊郴霖促.							if (pNearCreature->isPC())							{								pNearPlayer = pNearCreature->getPlayer();								if (pNearPlayer != NULL) pNearPlayer->sendPacket(&soldpkt);							}						}					}				} // for (ZoneCoord_t zy...) 场			} // for (ZoneCoord_t zx...) 场		}		catch (Throwable& t)		{			filelog("shopbug_packet.log", "%s", t.toString().c_str());		}	} // if (shopType == SHOP_RACK_NORMAL) else 场	SAFE_DELETE(pTestKey);#endif	__END_DEBUG_EX __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 捞亥飘 酒捞袍狼 备涝阑 贸府茄促.//////////////////////////////////////////////////////////////////////////////void CGShopRequestBuyHandler::executeEvent(CGShopRequestBuy* pPacket , Player* pPlayer)	 throw (ProtocolException , Error){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__#ifdef __XMAS_EVENT_CODE__	//cout << "CGShopRequestBuy::executeChildrenEvent() : BEGIN" << endl;	ObjectID_t      NPCID       = pPacket->getObjectID();	ShopRackType_t  shopType    = pPacket->getShopType();	BYTE            shopIndex   = pPacket->getShopIndex();	ItemNum_t       itemNum     = pPacket->getItemNum();	Coord_t         x           = pPacket->getX();	Coord_t         y           = pPacket->getY();	GamePlayer*     pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer);	Creature*       pCreature   = pGamePlayer->getCreature();	PlayerCreature* pPC         = dynamic_cast<PlayerCreature*>(pCreature);	Zone*           pZone       = pPC->getZone();	NPC*            pNPC        = dynamic_cast<NPC*>(pZone->getCreature(NPCID));	// NoSuch力芭. by sigi. 2002.5.2	if (pNPC==NULL) return;	Item*           pItem       = pNPC->getShopItem(shopType, shopIndex);	Item::ItemClass IClass      = pItem->getItemClass();	ItemType_t      IType       = pItem->getItemType();	const list<OptionType_t>& OType  = pItem->getOptionTypeList();	Inventory* pInventory  = pPC->getInventory();	Gold_t     playerMoney = pPC->getGold();	XMAS_STAR  star;	// 捞亥飘侩 酒捞袍狼 捞亥飘 啊拜阑 备茄促.	g_pPriceManager->getStarPrice(pItem, star);	//cout << "荤妨绊 窍绰 酒捞袍:" << endl << pItem->toString() << endl;	//cout << "荤妨绊 窍绰 酒捞袍狼 啊拜:" << endl	//	<< "COLOR:" << star.color << ",AMOUNT:" << star.amount << endl;	// 刚历 器记捞唱, 藕芒 鞍篮 版快俊绰 酒捞袍 肮荐甫 技泼秦 林绊 唱辑...	// 荤角 捞亥飘 酒捞袍俊绰 器记捞唱 藕芒捞 器窃登绢 乐瘤 臼瘤父...	switch (pItem->getItemClass())	{		case Item::ITEM_CLASS_POTION:			dynamic_cast<Potion*>(pItem)->setNum(itemNum);			break;		case Item::ITEM_CLASS_MAGAZINE:			dynamic_cast<Magazine*>(pItem)->setNum(itemNum);			break;		default:			break;	}	// 捞 何盒俊辑 秦寸窍绰 啊拜父怒狼 喊阑 啊瘤绊 乐绰瘤甫 眉农茄促.	if (!pInventory->hasEnoughStar(star))	{		//cout << "敲饭捞绢绰 秦寸窍绰 父怒狼 喊阑 啊瘤绊 乐瘤 给钦聪促." << endl;		GCShopBuyFail gcShopBuyFail;		gcShopBuyFail.setCode(GC_SHOP_BUY_FAIL_NOT_ENOUGH_MONEY);		gcShopBuyFail.setAmount(0);		pPlayer->sendPacket(&gcShopBuyFail);		return;	}	//cout << "敲饭捞绢绰 秦寸窍绰 父怒 捞惑狼 喊阑 啊瘤绊 乐嚼聪促." << endl;	// 趣矫扼档 磊府啊 绝促搁...	if (!pInventory->canAddingEx(x, y, pItem))	{		//cout << "牢亥配府俊 磊府啊 绝嚼聪促." << endl;		GCShopBuyFail gcShopBuyFail;		gcShopBuyFail.setCode(GC_SHOP_BUY_FAIL_NOT_ENOUGH_SPACE);		gcShopBuyFail.setAmount(0);		pPlayer->sendPacket(&gcShopBuyFail);		return;	}	// 敲饭捞绢啊 魂 酒捞袍捞 胶其既 酒捞袍捞扼搁 惑痢 滚傈阑 棵赴促.	if (shopType == SHOP_RACK_SPECIAL)	{		pNPC->increaseShopVersion(shopType);	}	// 捞 何盒俊辑 敲饭捞绢狼 喊阑 临牢促.	pInventory->decreaseStar(star);	//cout << "敲饭捞绢狼 喊阑 临看嚼聪促." << endl;	Item* pReturnItem = pInventory->addItemEx(x, y, pItem);	if (pReturnItem == pItem)	{		// pReturnItem苞 pItem捞 鞍促绰 富篮 酒捞袍捞 阶捞绰 酒捞袍捞 		// 酒聪菌促绰 富捞促.		pItem->create(pPC->getName(), STORAGE_INVENTORY, 0, x, y);		// 窜鉴洒 create父 何福搁 DB俊绰 器记狼 肮荐 鞍篮 巴阑 1俺肺 父电促.		// 弊矾骨肺 促矫 技捞宏甫 阂矾辑 角力利牢 肮荐甫 技泼秦拎具 茄促.		//pItem->save(pPC->getName(), STORAGE_INVENTORY, 0, x, y);		// item狼 create俊辑 俺荐甫 历厘窍档废 官插促.        // item历厘 弥利拳. by sigi. 2002.5.13		        		// OK 菩哦阑 焊辰促.		GCShopBuyOK OKPacket;		OKPacket.setObjectID(NPCID);		OKPacket.setShopVersion(pNPC->getShopVersion(shopType));		OKPacket.setItemObjectID(pItem->getObjectID());		OKPacket.setItemClass(pItem->getItemClass());		OKPacket.setItemType(pItem->getItemType());		OKPacket.setOptionType(pItem->getOptionTypeList());		OKPacket.setDurability(pItem->getDurability());		OKPacket.setItemNum(pItem->getNum());		OKPacket.setSilver(pItem->getSilver());		OKPacket.setGrade(pItem->getGrade());		OKPacket.setEnchantLevel(pItem->getEnchantLevel());		OKPacket.setPrice(playerMoney);		pPlayer->sendPacket(&OKPacket);		log(LOG_BUY_ITEM, pPC->getName(), "", pItem->toString());	}	else	{		log(LOG_BUY_ITEM, pPC->getName(), "", pItem->toString());		// pReturnItem苞 pItem捞 促福促绰 富篮 酒捞袍捞 		// 阶捞绰 酒捞袍捞菌促绰 富捞促. 弊矾骨肺 歹窍扼绊 焊辰 pItem篮 		// 昏力秦 拎具 茄促.		SAFE_DELETE(pItem);		//pReturnItem->save(pPC->getName(), STORAGE_INVENTORY, 0, x, y);		// item历厘 弥利拳. by sigi. 2002.5.13		char pField[80];		sprintf(pField, "Num=%d", pReturnItem->getNum());		pReturnItem->tinysave(pField);		// OK 菩哦阑 焊辰促.		GCShopBuyOK OKPacket;		OKPacket.setObjectID(NPCID);		OKPacket.setShopVersion(pNPC->getShopVersion(shopType));		OKPacket.setItemObjectID(pReturnItem->getObjectID());		OKPacket.setItemClass(pReturnItem->getItemClass());		OKPacket.setItemType(pReturnItem->getItemType());		OKPacket.setOptionType(pReturnItem->getOptionTypeList());		OKPacket.setDurability(pReturnItem->getDurability());		OKPacket.setItemNum(pReturnItem->getNum());		OKPacket.setSilver(pReturnItem->getSilver());		OKPacket.setGrade(pReturnItem->getGrade());		OKPacket.setEnchantLevel(pReturnItem->getEnchantLevel());		OKPacket.setPrice(playerMoney);		pPlayer->sendPacket(&OKPacket);	}	pNPC->removeShopItem(shopType, shopIndex);	if (shopType == SHOP_RACK_NORMAL)	{		// 迫赴 酒捞袍捞 畴钢 酒捞袍捞扼搁 鞍篮 鸥涝, 努贰胶狼 酒捞袍阑 积己茄促.		Item* pNewItem = g_pItemFactoryManager->createItem(IClass, IType, OType);		Assert(pNewItem != NULL);		(pZone->getObjectRegistry()).registerObject(pNewItem);		pNPC->insertShopItem(shopType, shopIndex, pNewItem);	}	else if (shopType == SHOP_RACK_MYSTERIOUS)	{	}	else	{		// 迫赴 酒捞袍捞 畴钢 酒捞袍捞 酒聪扼搁,		// 辟贸狼 敲饭捞绢甸俊霸 惑痢狼 拱扒捞 迫啡促绰 荤角阑 舅妨拎具 茄促.		int CenterX = pNPC->getX();		int CenterY = pNPC->getY();		GCShopSold soldpkt;		soldpkt.setObjectID(NPCID);		soldpkt.setShopVersion(pNPC->getShopVersion(shopType));		soldpkt.setShopType(shopType);		soldpkt.setShopIndex(shopIndex);		//VSRect rect(0, 0, pZone->getWidth()-1, pZone->getHeight()-1);		try		{			for (int zx=CenterX-5; zx<=CenterX+5; zx++)			{				for (int zy=CenterY-5; zy<=CenterY+5; zy++)				{					// 官款靛甫 逞绢啊瘤 臼绰啊 眉农					if (!isValidZoneCoord(pZone, zx, zy)) continue;					Tile & tile = pZone->getTile(zx, zy);					// 吧绢促聪绰 农府媚甫 八祸					if (tile.hasCreature(Creature::MOVE_MODE_WALKING))					{						Creature* pNearCreature = tile.getCreature(Creature::MOVE_MODE_WALKING);						if (pNearCreature != NULL)						{							// 规陛 酒捞袍阑 备涝茄 敲饭捞绢扼搁 积帆							if (pNearCreature->getObjectID() == pPC->getObjectID()) continue;							// 父距 敲饭捞绢扼搁 菩哦阑 焊郴霖促.							if (pNearCreature->isPC())							{								Player* pNearPlayer = pNearCreature->getPlayer();								if (pNearPlayer != NULL) pNearPlayer->sendPacket(&soldpkt);							}						}					}					// 朝酒促聪绰 农府媚甫 八祸					if (tile.hasCreature(Creature::MOVE_MODE_FLYING))					{						Creature* pNearCreature = tile.getCreature(Creature::MOVE_MODE_FLYING);						if (pNearCreature != NULL)						{							// 规陛 酒捞袍阑 备涝茄 敲饭捞绢扼搁 积帆							if (pNearCreature->getObjectID() == pPC->getObjectID()) continue;							// 父距 敲饭捞绢扼搁 菩哦阑 焊郴霖促.							if (pNearCreature->isPC())							{								Player* pNearPlayer = pNearCreature->getPlayer();								if (pNearPlayer != NULL) pNearPlayer->sendPacket(&soldpkt);							}						}					}				} // for (ZoneCoord_t zy...) 场			} // for (ZoneCoord_t zx...) 场		}		catch (Throwable& t)		{			filelog("shopbug_packet.log", "%s", t.toString().c_str());		}	} 	//cout << "CGShopRequestBuy::executeEvent() : END" << endl;#endif#endif	__END_DEBUG_EX __END_CATCH}

⌨️ 快捷键说明

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