📄 creatureutil.cpp
字号:
////////////////////////////////////////////////////////////////////////////////// Filename : CreatureUtil.cpp// Written by : 辫己刮// Description : // Vampire客 Vampire 颇老狼 农扁甫 瞪 荐 乐绰 茄 临捞扁 困秦辑 笛狼 傍烹登绰// 何盒阑 啊瓷茄 茄 哗初篮 颇老捞促.// 唱吝俊 PlayerCreature 努贰胶啊 唱坷搁, 捞 颇老狼 郴侩阑 弊 救俊促啊 // 器窃矫虐绰 巴捞 亮阑 巴捞促.////////////////////////////////////////////////////////////////////////////////#include "CreatureUtil.h"#include "Slayer.h"#include "Vampire.h"#include "Ousters.h"#include "Monster.h"#include "Player.h"#include "MonsterInfo.h"#include "Inventory.h"#include "Stash.h"#include "Belt.h"#include "DB.h"#include "Effect.h"#include "RelicUtil.h"#include "BloodBible.h"#include "CombatInfoManager.h"#include "EffectAftermath.h"#include "EffectKillAftermath.h"#include "EffectGrandMasterSlayer.h"#include "EffectGrandMasterVampire.h"#include "EffectObservingEye.h"#include "EffectGnomesWhisper.h"#include "ShrineInfoManager.h"#include "CastleInfoManager.h"#include "Zone.h"#include "Tile.h"#include "Relic.h"#include "couple/PartnerWaitingManager.h"#include "PlayerCreature.h"#include "PacketUtil.h"#include "FlagSet.h"#include "SimpleCreatureEffect.h"#include "EffectRelicLock.h"#include "ctf/FlagManager.h"#include "skill/Sniping.h"#include "skill/SummonGroundElemental.h"#include "LevelWarManager.h"#include "VariableManager.h"#include "GamePlayer.h"#include "PetInfo.h"#include "Cpackets/CGSay.h"#include "ZoneGroupManager.h"#include "GameWorldInfoManager.h"#include "Properties.h"#include "Gpackets/GCNotifyWin.h"#include "Gpackets/GCAddEffect.h"#include "Gpackets/GCAddSlayer.h"#include "Gpackets/GCAddVampire.h"#include "Gpackets/GCDeleteObject.h"#include "Gpackets/GCDeleteInventoryItem.h"#include "Gpackets/GCPetInfo.h"#include <cstdio>////////////////////////////////////////////////////////////////////////////////// 鞍篮 农府媚 努贰胶牢啊? ////////////////////////////////////////////////////////////////////////////////bool isSameRace(Creature* pCreature1, Creature* pCreature2) throw(){ __BEGIN_TRY Assert(pCreature1 != NULL); Assert(pCreature2 != NULL); return (pCreature1->getCreatureClass() == pCreature2->getCreatureClass() ? true : false); __END_CATCH}//////////////////////////////////////////////////////////////////////////////////// ObjectID肺 酒捞袍 茫扁//////////////////////////////////////////////////////////////////////////////////Item* findItemOID(Creature* pCreature, ObjectID_t id) throw(){ __BEGIN_TRY int storage, x, y; return findItemOID(pCreature, id, storage, x, y); __END_CATCH}Item* findItemOID(Creature* pCreature, ObjectID_t id, Item::ItemClass IClass) throw(){ __BEGIN_TRY int storage, x, y; return findItemOID(pCreature, id, IClass, storage, x, y); __END_CATCH}Item* findItemOID(Creature* pCreature, ObjectID_t id, int& storage, int& x, int &y) throw(){ __BEGIN_TRY if (pCreature == NULL) return NULL; PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature); Inventory* pInventory = pPC->getInventory(); Stash* pStash = pPC->getStash(); Item* pItem = NULL; CoordInven_t tx = 0; CoordInven_t ty = 0; // 牢亥配府 八祸 pItem = pInventory->findItemOID(id, tx, ty); if (pItem != NULL) { storage = STORAGE_INVENTORY; x = tx; y = ty; return pItem; } // 扁绢芒 八祸 if (pCreature->isSlayer()) { Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature); for (int i=0; i<Slayer::WEAR_MAX; i++) { pItem = pSlayer->getWearItem((Slayer::WearPart)i); if (pItem != NULL && pItem->getObjectID() == id) { storage = STORAGE_GEAR; x = i; return pItem; } } } else if (pCreature->isVampire()) { Vampire* pVampire = dynamic_cast<Vampire*>(pCreature); for (int i=0; i<Vampire::VAMPIRE_WEAR_MAX; i++) { pItem = pVampire->getWearItem((Vampire::WearPart)i); if (pItem != NULL && pItem->getObjectID() == id) { storage = STORAGE_GEAR; x = i; return pItem; } } } else if (pCreature->isOusters()) { Ousters* pOusters = dynamic_cast<Ousters*>(pCreature); for (int i=0; i<Ousters::OUSTERS_WEAR_MAX; i++) { pItem = pOusters->getWearItem((Ousters::WearPart)i); if (pItem != NULL && pItem->getObjectID() == id) { storage = STORAGE_GEAR; x = i; return pItem; } } } // 付快胶 八祸 pItem = pPC->getExtraInventorySlotItem(); if (pItem != NULL && pItem->getObjectID() == id) { storage = STORAGE_EXTRASLOT; return pItem; } // 焊包窃 八祸 for (int r=0; r<STASH_RACK_MAX; r++) { for (int i=0; i<STASH_INDEX_MAX; i++) { pItem = pStash->get(r, i); if (pItem != NULL && pItem->getObjectID() == id) { storage = STORAGE_STASH; x = r; y = i; return pItem; } } } return NULL; __END_CATCH}Item* findItemOID(Creature* pCreature, ObjectID_t id, Item::ItemClass IClass, int& storage, int& x, int &y) throw(){ __BEGIN_TRY if (pCreature == NULL) return NULL; PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature); Inventory* pInventory = pPC->getInventory(); Stash* pStash = pPC->getStash(); Item* pItem = NULL; CoordInven_t tx = 0; CoordInven_t ty = 0; // 牢亥配府 八祸 pItem = pInventory->findItemOID(id, IClass, tx, ty); if (pItem != NULL) { storage = STORAGE_INVENTORY; x = tx; y = ty; return pItem; } // 扁绢芒 八祸 if (pCreature->isSlayer()) { Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature); for (int i=0; i<Slayer::WEAR_MAX; i++) { pItem = pSlayer->getWearItem((Slayer::WearPart)i); if (pItem != NULL && pItem->getObjectID() == id && pItem->getItemClass() == IClass) { storage = STORAGE_GEAR; x = i; return pItem; } } } else if (pCreature->isVampire()) { Vampire* pVampire = dynamic_cast<Vampire*>(pCreature); for (int i=0; i<Vampire::VAMPIRE_WEAR_MAX; i++) { pItem = pVampire->getWearItem((Vampire::WearPart)i); if (pItem != NULL && pItem->getObjectID() == id && pItem->getItemClass() == IClass) { storage = STORAGE_GEAR; x = i; return pItem; } } } else if (pCreature->isOusters()) { Ousters* pOusters = dynamic_cast<Ousters*>(pCreature); for (int i=0; i<Ousters::OUSTERS_WEAR_MAX; i++) { pItem = pOusters->getWearItem((Ousters::WearPart)i); if (pItem != NULL && pItem->getObjectID() == id && pItem->getItemClass() == IClass) { storage = STORAGE_GEAR; x = i; return pItem; } } } // 付快胶 八祸 pItem = pPC->getExtraInventorySlotItem(); if (pItem != NULL && pItem->getObjectID() == id && pItem->getItemClass() == IClass) { storage = STORAGE_EXTRASLOT; return pItem; } // 焊包窃 八祸 for (int r=0; r<STASH_RACK_MAX; r++) { for (int i=0; i<STASH_INDEX_MAX; i++) { pItem = pStash->get(r, i); if (pItem != NULL && pItem->getObjectID() == id && pItem->getItemClass() == IClass) { storage = STORAGE_STASH; x = r; y = i; return pItem; } } } return NULL; __END_CATCH}//////////////////////////////////////////////////////////////////////////////////// ItemID肺 酒捞袍 茫扁//////////////////////////////////////////////////////////////////////////////////Item* findItemIID(Creature* pCreature, ItemID_t id) throw(){ __BEGIN_TRY int storage, x, y; return findItemIID(pCreature, id, storage, x, y); __END_CATCH}Item* findItemIID(Creature* pCreature, ItemID_t id, Item::ItemClass IClass) throw(){ __BEGIN_TRY int storage, x, y; return findItemIID(pCreature, id, IClass, storage, x, y); __END_CATCH}Item* findItemIID(Creature* pCreature, ItemID_t id, int& storage, int& x, int &y) throw(){ __BEGIN_TRY if (pCreature == NULL) return NULL; PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature); Inventory* pInventory = pPC->getInventory(); Stash* pStash = pPC->getStash(); Item* pItem = NULL; CoordInven_t tx = 0; CoordInven_t ty = 0; // 牢亥配府 八祸 pItem = pInventory->findItemIID(id, tx, ty); if (pItem != NULL) { storage = STORAGE_INVENTORY; x = tx; y = ty; return pItem; } // 扁绢芒 八祸 if (pCreature->isSlayer()) { Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature); for (int i=0; i<Slayer::WEAR_MAX; i++) { pItem = pSlayer->getWearItem((Slayer::WearPart)i); if (pItem != NULL && pItem->getItemID() == id) { storage = STORAGE_GEAR; x = i; return pItem; } } } else if (pCreature->isVampire()) { Vampire* pVampire = dynamic_cast<Vampire*>(pCreature); for (int i=0; i<Vampire::VAMPIRE_WEAR_MAX; i++) { pItem = pVampire->getWearItem((Vampire::WearPart)i); if (pItem != NULL && pItem->getItemID() == id) { storage = STORAGE_GEAR; x = i; return pItem; } } } else if (pCreature->isOusters()) { Ousters* pOusters = dynamic_cast<Ousters*>(pCreature); for (int i=0; i<Ousters::OUSTERS_WEAR_MAX; i++) { pItem = pOusters->getWearItem((Ousters::WearPart)i); if (pItem != NULL && pItem->getItemID() == id) { storage = STORAGE_GEAR; x = i; return pItem; } } } // 付快胶 八祸 pItem = pPC->getExtraInventorySlotItem(); if (pItem != NULL && pItem->getItemID() == id) { storage = STORAGE_EXTRASLOT; return pItem; } // 焊包窃 八祸 for (int r=0; r<STASH_RACK_MAX; r++) { for (int i=0; i<STASH_INDEX_MAX; i++) { pItem = pStash->get(r, i); if (pItem != NULL && pItem->getItemID() == id) { storage = STORAGE_STASH; x = r; y = i; return pItem; } } } return NULL; __END_CATCH}Item* findItemIID(Creature* pCreature, ItemID_t id, Item::ItemClass IClass, int& storage, int& x, int &y) throw()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -