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 + -
显示快捷键?