⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 actionredistributeattr.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
////////////////////////////////////////////////////////////////////////////////// Filename    : ActionRedistributeAttr.cpp// Written By  : // Description :////////////////////////////////////////////////////////////////////////////////#include "ActionRedistributeAttr.h"#include "Vampire.h"#include "Zone.h"#include "GamePlayer.h"#include "DB.h"#include "VariableManager.h"#include "StringPool.h"#include <stdio.h>#include "Gpackets/GCNPCResponse.h"#include "Gpackets/GCModifyInformation.h"#include "Gpackets/GCSystemMessage.h"////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////void ActionRedistributeAttr::read (PropertyBuffer & propertyBuffer)    throw (Error){    __BEGIN_TRY	try 	{		// read script type		string AttrType = propertyBuffer.getProperty("AttrType");		if (AttrType == "STR") m_AttrType = 0;		else if (AttrType == "DEX") m_AttrType = 1;		else if (AttrType == "INT") m_AttrType = 2;		else		{			cout << "ActionRedistributeAttr::read() : Unknown ATTR type" << endl;			throw ("ActionRedistributeAttr::read() : Unknown ATTR type");		}	} 	catch (NoSuchElementException & nsee)	{		cout << nsee.toString() << endl;		throw Error(nsee.toString());	}	    __END_CATCH}////////////////////////////////////////////////////////////////////////////////// 咀记阑 角青茄促.////////////////////////////////////////////////////////////////////////////////void ActionRedistributeAttr::execute (Creature * pCreature1 , Creature * pCreature2) 	throw (Error){	__BEGIN_TRY	Assert(pCreature1 != NULL);	Assert(pCreature2 != NULL);	Assert(pCreature1->isNPC());	Assert(pCreature2->isVampire());	Player* pPlayer = pCreature2->getPlayer();	Assert(pPlayer != NULL);	// 刚历 努扼捞攫飘甫 困秦 GCNPCResponse甫 焊郴霖促.	GCNPCResponse okpkt;	pPlayer->sendPacket(&okpkt);	Vampire* pVampire = dynamic_cast<Vampire*>(pCreature2);	Gold_t ATTR_PRICE = g_pVariableManager->getVariable( VAMPIRE_REDISTRIBUTE_ATTR_PRICE );	// 捣阑 啊瘤绊 乐瘤 臼促搁 俊矾促.	if (pVampire->getGold() < ATTR_PRICE) 	{		// 刚历 措拳芒阑 摧霸 茄促.		GCNPCResponse gcNPCResponse;		gcNPCResponse.setCode(NPC_RESPONSE_QUIT_DIALOGUE);		pPlayer->sendPacket(&gcNPCResponse);/*		StringStream msg;		msg << pVampire->getName() << " 丛篮 面盒茄 捣阑 啊瘤绊 乐瘤 臼嚼聪促.(" << ATTR_PRICE << " 爸靛)"; */        char msg[100];        sprintf( msg, g_pStringPool->c_str( STRID_NOT_ENOUGH_MONEY ), pVampire->getName().c_str() );		GCSystemMessage gcSM;		gcSM.setMessage( msg );		pPlayer->sendPacket(&gcSM);		return;	}	// 饭骇 唱穿扁 2父怒狼 瓷仿摹父 焊呈胶 器牢飘肺 傈券且 荐 乐促.	// 弊矾骨肺 捞固 弊 茄拌甫 促 盲快瘤绰 臼疽绰瘤 八荤茄促.	Statement* pStmt             = NULL;	Result*    pResult           = NULL;	int        RedistributedAttr = 0;	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pResult = pStmt->executeQuery("SELECT RedistributeAttr FROM Vampire WHERE Name='%s'", pVampire->getName().c_str());		if (pResult->getRowCount() == 0)		{			cerr << "ActionRedistributeAttr : No Vampire Record On Table" << endl;			throw Error("ActionRedistributeAttr : No Vampire Record On Table");		}		else		{			pResult->next();			RedistributedAttr = pResult->getInt(1);		}		if (RedistributedAttr >= pVampire->getLevel())		{			// 刚历 措拳芒阑 摧霸 茄促.			GCNPCResponse gcNPCResponse;			gcNPCResponse.setCode(NPC_RESPONSE_QUIT_DIALOGUE);			pPlayer->sendPacket(&gcNPCResponse);//			StringStream msg;//			msg << "饭骇父怒父 焊呈胶 器牢飘肺 傈券且 荐 乐嚼聪促.";			GCSystemMessage gcSM;			gcSM.setMessage( g_pStringPool->getString( STRID_TRANS_BONUS_POINT ) );			pPlayer->sendPacket(&gcSM);			SAFE_DELETE(pStmt);			return;		}		SAFE_DELETE(pStmt);	}	END_DB(pStmt)	// 瓷仿摹甫 函版窍扁俊 菊辑 扁粮狼 瓷仿摹甫 历厘茄促.	VAMPIRE_RECORD prev;	pVampire->getVampireRecord(prev);	StringStream sql;	StringStream sql2;	// STR 犁盒硅	if (m_AttrType == 0)	{		// 鉴荐塞捞 20捞窍扼搁 歹 捞惑 犁盒硅且 荐啊 绝促.		if (pVampire->getSTR(ATTR_BASIC) <= 20)		{			// 刚历 措拳芒阑 摧霸 茄促.			GCNPCResponse gcNPCResponse;			gcNPCResponse.setCode(NPC_RESPONSE_QUIT_DIALOGUE);			pPlayer->sendPacket(&gcNPCResponse);//			StringStream msg;//			msg << "STR阑 20捞窍肺 撤免 荐绰 绝嚼聪促.";			GCSystemMessage gcSM;			gcSM.setMessage( g_pStringPool->getString( STRID_STR_LOW_LIMIT ) );			pPlayer->sendPacket(&gcSM);			return;		}		pVampire->setSTR(pVampire->getSTR(ATTR_BASIC) - 1, ATTR_BASIC);		sql << "STR = " << (int)pVampire->getSTR(ATTR_BASIC);	}	// DEX 犁盒硅	else if (m_AttrType == 1)	{		if (pVampire->getDEX(ATTR_BASIC) <= 20)		{			// 刚历 措拳芒阑 摧霸 茄促.			GCNPCResponse gcNPCResponse;			gcNPCResponse.setCode(NPC_RESPONSE_QUIT_DIALOGUE);			pPlayer->sendPacket(&gcNPCResponse);//			StringStream msg;//			msg << "DEX甫 20捞窍肺 撤免 荐绰 绝嚼聪促.";			GCSystemMessage gcSM;			gcSM.setMessage( g_pStringPool->getString( STRID_DEX_LOW_LIMIT ) );			pPlayer->sendPacket(&gcSM);			return;		}		pVampire->setDEX(pVampire->getDEX(ATTR_BASIC) - 1, ATTR_BASIC);		sql << "DEX = " << (int)pVampire->getDEX(ATTR_BASIC);	}	// INT 犁盒硅	else if (m_AttrType == 2)	{		if (pVampire->getINT(ATTR_BASIC) <= 20)		{			// 刚历 措拳芒阑 摧霸 茄促.			GCNPCResponse gcNPCResponse;			gcNPCResponse.setCode(NPC_RESPONSE_QUIT_DIALOGUE);			pPlayer->sendPacket(&gcNPCResponse);//			StringStream msg;//			msg << "INT甫 20捞窍肺 撤免 荐绰 绝嚼聪促.";			GCSystemMessage gcSM;			gcSM.setMessage( g_pStringPool->getString( STRID_INT_LOW_LIMIT ) );			pPlayer->sendPacket(&gcSM);			return;		}		pVampire->setINT(pVampire->getINT(ATTR_BASIC) - 1, ATTR_BASIC);		sql << "INTE = " << (int)pVampire->getINT(ATTR_BASIC);	}	else	{		Assert(false);	}	// 临绢电 瓷仿摹甫 技捞宏窍绊,	// 瓷仿摹啊 临绢甸菌栏聪, 焊呈胶甫 疵赴促.	// 弊府绊 捣阑 临牢促.	pVampire->tinysave(sql.toString());	pVampire->setBonus(pVampire->getBonus() + 1);	sql2 << "Bonus = " << (int)pVampire->getBonus();	pVampire->tinysave(sql2.toString());	//pVampire->setGoldEx(pVampire->getGold() - ATTR_PRICE);	// by sigi. 2002.9.18	pVampire->decreaseGoldEx(ATTR_PRICE);	GCModifyInformation gcMI;	gcMI.addShortData(MODIFY_BONUS_POINT, pVampire->getBonus());	gcMI.addLongData(MODIFY_GOLD, pVampire->getGold());	pVampire->initAllStat();	pVampire->addModifyInfo(prev, gcMI);	pVampire->sendRealWearingInfo();	pPlayer->sendPacket(&gcMI);	// 函券茄 瓷仿摹狼 剧阑 历厘秦具 茄促.	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pStmt->executeQuery("UPDATE Vampire SET RedistributeAttr = %d WHERE Name='%s'", RedistributedAttr + 1, pVampire->getName().c_str());		SAFE_DELETE(pStmt);	}	END_DB(pStmt)	__END_CATCH}////////////////////////////////////////////////////////////////////////////////// get debug string////////////////////////////////////////////////////////////////////////////////string ActionRedistributeAttr::toString () const 	throw (){	__BEGIN_TRY	StringStream msg;	msg << "ActionRedistributeAttr("	    << ")";	return msg.toString();	__END_CATCH}

⌨️ 快捷键说明

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