actiontakedonation.cpp

来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 228 行

CPP
228
字号
////////////////////////////////////////////////////////////////////////////////// Filename    : ActionTakeDonation.cpp// Written By  : // Description :////////////////////////////////////////////////////////////////////////////////#include "ActionTakeDonation.h"#include "Creature.h"#include "NPC.h"#include "GamePlayer.h"#include "Slayer.h"#include "Vampire.h"#include "Ousters.h"#include "Gpackets/GCNPCResponse.h"#include "Gpackets/GCModifyInformation.h"////////////////////////////////////////////////////////////////////////////////// read from property buffer////////////////////////////////////////////////////////////////////////////////void ActionTakeDonation::read (PropertyBuffer & propertyBuffer)    throw (Error){    __BEGIN_TRY	try	{		// 罐阑 捣狼 剧阑 佬绢甸牢促.		m_Amount = (Gold_t)propertyBuffer.getPropertyInt("Amount");	}	catch (NoSuchElementException & nsee)	{		throw Error(nsee.toString());	}    __END_CATCH}////////////////////////////////////////////////////////////////////////////////// 咀记阑 角青茄促.////////////////////////////////////////////////////////////////////////////////void ActionTakeDonation::execute (Creature * pCreature1, Creature * pCreature2) 	throw (Error){	__BEGIN_TRY	Assert(pCreature1 != NULL);	Assert(pCreature2 != NULL);	Assert(pCreature1->isNPC());	Assert(pCreature2->isPC());	Player* pPlayer = pCreature2->getPlayer();	Assert(pPlayer != NULL);	int oldAlignment = 0;	int newAlignment = 0;	GCNPCResponse       gcNPCResponse;	GCModifyInformation gcModifyInformation;	if (pCreature2->isSlayer())	{		Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature2);		// 扁何樊焊促 啊柳 捣捞 利促搁 扁何且 荐啊 绝促. 		if (pSlayer->getGold() < m_Amount)		{			gcNPCResponse.setCode(NPC_RESPONSE_DONATION_FAIL_MONEY);			pPlayer->sendPacket(&gcNPCResponse);			return;		}		// 扁何 陛咀俊 蝶扼 己氢阑 雀汗矫难霖促.		oldAlignment = pSlayer->getAlignment();		newAlignment = pSlayer->getAlignment();		// 己氢捞 -2500 捞窍老 版快俊父 函拳茄促.		if (oldAlignment < -2500)		{			if (-4999 <= oldAlignment && oldAlignment <= -2500)			{				newAlignment = min(-2500, (int)(oldAlignment + m_Amount/100));			}			else if (-7499 <= oldAlignment && oldAlignment <= -5000)			{				newAlignment = min(-2500, (int)(oldAlignment + m_Amount/200));			}			else if (-10000 <= oldAlignment && oldAlignment <= -7500)			{				newAlignment = min(-2500, (int)(oldAlignment + m_Amount/500));			}			pSlayer->saveAlignment(newAlignment);		}		// 扁何陛咀父怒 捣阑 临牢促.		//pSlayer->setGoldEx(pSlayer->getGold() - m_Amount);		// by sigi. 2002.9.17		pSlayer->decreaseGoldEx(m_Amount);		// 菩哦阑 焊辰促.		gcNPCResponse.setCode(NPC_RESPONSE_DONATION_OK);		gcNPCResponse.setParameter(pSlayer->getGold());		pPlayer->sendPacket(&gcNPCResponse);		gcModifyInformation.addShortData(MODIFY_ALIGNMENT, pSlayer->getAlignment());		pPlayer->sendPacket(&gcModifyInformation);	}	else if (pCreature2->isVampire())	{		Vampire* pVampire = dynamic_cast<Vampire*>(pCreature2);		// 扁何樊焊促 啊柳 捣捞 利促搁 扁何且 荐啊 绝促. 		if (pVampire->getGold() < m_Amount)		{			gcNPCResponse.setCode(NPC_RESPONSE_DONATION_FAIL_MONEY);			pPlayer->sendPacket(&gcNPCResponse);			return;		}		// 扁何 陛咀俊 蝶扼 己氢阑 雀汗矫难霖促.		oldAlignment = pVampire->getAlignment();		newAlignment = pVampire->getAlignment();		// 己氢捞 -2500 捞窍老 版快俊父 函拳茄促.		if (oldAlignment < -2500)		{			if (-4999 <= oldAlignment && oldAlignment <= -2500)			{				newAlignment = min(-2500, (int)(oldAlignment + m_Amount/100));			}			else if (-7499 <= oldAlignment && oldAlignment <= -5000)			{				newAlignment = min(-2500, (int)(oldAlignment + m_Amount/200));			}			else if (-10000 <= oldAlignment && oldAlignment <= -7500)			{				newAlignment = min(-2500, (int)(oldAlignment + m_Amount/500));			}			pVampire->saveAlignment(newAlignment);		}		// 扁何陛咀父怒 捣阑 临牢促.		//pVampire->setGoldEx(pVampire->getGold() - m_Amount);		// by sigi. 2002.9.18		pVampire->decreaseGoldEx(m_Amount);		// 菩哦阑 焊辰促.		gcNPCResponse.setCode(NPC_RESPONSE_DONATION_OK);		gcNPCResponse.setParameter(pVampire->getGold());		pPlayer->sendPacket(&gcNPCResponse);		gcModifyInformation.addShortData(MODIFY_ALIGNMENT, pVampire->getAlignment());		pPlayer->sendPacket(&gcModifyInformation);	}	else if (pCreature2->isOusters())	{		Ousters* pOusters = dynamic_cast<Ousters*>(pCreature2);		// 扁何樊焊促 啊柳 捣捞 利促搁 扁何且 荐啊 绝促. 		if (pOusters->getGold() < m_Amount)		{			gcNPCResponse.setCode(NPC_RESPONSE_DONATION_FAIL_MONEY);			pPlayer->sendPacket(&gcNPCResponse);			return;		}		// 扁何 陛咀俊 蝶扼 己氢阑 雀汗矫难霖促.		oldAlignment = pOusters->getAlignment();		newAlignment = pOusters->getAlignment();		// 己氢捞 -2500 捞窍老 版快俊父 函拳茄促.		if (oldAlignment < -2500)		{			if (-4999 <= oldAlignment && oldAlignment <= -2500)			{				newAlignment = min(-2500, (int)(oldAlignment + m_Amount/100));			}			else if (-7499 <= oldAlignment && oldAlignment <= -5000)			{				newAlignment = min(-2500, (int)(oldAlignment + m_Amount/200));			}			else if (-10000 <= oldAlignment && oldAlignment <= -7500)			{				newAlignment = min(-2500, (int)(oldAlignment + m_Amount/500));			}			pOusters->saveAlignment(newAlignment);		}		// 扁何陛咀父怒 捣阑 临牢促.		//pOusters->setGoldEx(pOusters->getGold() - m_Amount);		// by sigi. 2002.9.18		pOusters->decreaseGoldEx(m_Amount);		// 菩哦阑 焊辰促.		gcNPCResponse.setCode(NPC_RESPONSE_DONATION_OK);		gcNPCResponse.setParameter(pOusters->getGold());		pPlayer->sendPacket(&gcNPCResponse);		gcModifyInformation.addShortData(MODIFY_ALIGNMENT, pOusters->getAlignment());		pPlayer->sendPacket(&gcModifyInformation);	}	else Assert(false);	__END_CATCH}////////////////////////////////////////////////////////////////////////////////// get debug string////////////////////////////////////////////////////////////////////////////////string ActionTakeDonation::toString () const	throw (){	__BEGIN_TRY	StringStream msg;	msg << "ActionTakeDonation("		<< "Amount:" << (int)m_Amount		<< ")";	return msg.toString();	__END_CATCH}

⌨️ 快捷键说明

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