本文整理汇总了C++中ManagedReference::getActivePet方法的典型用法代码示例。如果您正苦于以下问题:C++ ManagedReference::getActivePet方法的具体用法?C++ ManagedReference::getActivePet怎么用?C++ ManagedReference::getActivePet使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ManagedReference
的用法示例。
在下文中一共展示了ManagedReference::getActivePet方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: enhanceCharacter
void CharacterBuilderTerminalImplementation::enhanceCharacter(CreatureObject* player) {
PlayerManager* pm = player->getZoneServer()->getPlayerManager();
pm->enhanceCharacter(player);
ManagedReference<PlayerObject*> ghost = player->getPlayerObject();
if (ghost == NULL)
return;
for (int i = 0; i < ghost->getActivePetsSize(); i++) {
ManagedReference<AiAgent*> pet = ghost->getActivePet(i);
if (pet != NULL) {
Locker crossLocker(pet, player);
pm->enhanceCharacter(pet);
}
}
}
示例2: handleObjectMenuSelect
int PetDeedImplementation::handleObjectMenuSelect(CreatureObject* player, byte selectedID) {
if (selectedID == 21) {
if(generated || !player->hasSkill("outdoors_bio_engineer_novice") || !isASubChildOf(player))
return 1;
if (player->isRidingMount()) {
player->sendSystemMessage("You cannot sample DNA while mounted");
return 1;
}
if(player->getPendingTask("sampledeed") != NULL) {
player->sendSystemMessage("@bio_engineer:harvest_dna_already_harvesting");
return 1;
}
int skillMod = player->getSkillMod("dna_harvesting");
if (skillMod < 1 || level > skillMod + 15) {
player->sendSystemMessage("@bio_engineer:harvest_dna_skill_too_low");
return 1;
}
Locker clocker(_this.get());
ManagedReference<SampleDeedTask*> task = new SampleDeedTask(_this.get(), player);
player->addPendingTask("sampledeed",task,0);
return 0;
}
if (selectedID == 20) {
if (generated || !isASubChildOf(player))
return 1;
if (player->isInCombat() || player->getParentRecursively(SceneObjectType::BUILDING) != NULL) {
player->sendSystemMessage("@pet/pet_menu:cant_call"); //You can only unpack vehicles while Outside and not in Combat.
return 1;
}
ManagedReference<SceneObject*> datapad = player->getSlottedObject("datapad");
if (datapad == NULL) {
player->sendSystemMessage("Datapad doesn't exist when trying to call pet");
return 1;
}
if (datapad->getContainerObjectsSize() >= datapad->getContainerVolumeLimit()) {
player->sendSystemMessage("@faction_recruiter:datapad_full"); // Your datapad is full. You must first free some space.
return 1;
}
// Does the player have room
ManagedReference<PlayerManager*> playerManager = player->getZoneServer()->getPlayerManager();
int numberStored = 0;
int maxStoredPets = playerManager->getBaseStoredCreaturePets() + player->getSkillMod("stored_pets");
for (int i = 0; i < datapad->getContainerObjectsSize(); ++i) {
ManagedReference<SceneObject*> object = datapad->getContainerObject(i);
if (object != NULL && object->isPetControlDevice()) {
PetControlDevice* device = cast<PetControlDevice*>( object.get());
if (device->getPetType() == PetManager::CREATUREPET) {
if (++numberStored >= maxStoredPets) {
player->sendSystemMessage("@pet/pet_menu:sys_too_many_stored"); // There are too many pets stored in this container. Release some of them to make room for more.
return 1;
}
}
}
}
// Can the player control it
ManagedReference<PlayerObject*> ghost = player->getPlayerObject();
int currentlySpawned = 0;
int spawnedLevel = 0;
int cLevel = level;
int maxPets = player->getSkillMod("keep_creature");
int maxLevelofPets = player->getSkillMod("tame_level");
for (int i = 0; i < ghost->getActivePetsSize(); ++i) {
ManagedReference<AiAgent*> object = ghost->getActivePet(i);
if (object != NULL && object->isCreature()) {
if (++currentlySpawned >= maxPets) {
player->sendSystemMessage("@pet/pet_menu:too_many"); // You can't control any more pets. Store one first
return 1;
}
spawnedLevel += object->getLevel();
if ((spawnedLevel + cLevel) > maxLevelofPets) {
player->sendSystemMessage("Taming this pet would exceed your control level ability.");
return 1;
}
}
}
Reference<CreatureManager*> creatureManager = player->getZone()->getCreatureManager();
if( creatureManager == NULL ){
player->sendSystemMessage("Internal Pet Deed Error #307");
return 1;
}
CreatureTemplateManager* creatureTemplateManager = CreatureTemplateManager::instance();
//.........这里部分代码省略.........
示例3: callObject
//.........这里部分代码省略.........
int currentlySpawned = 0;
int spawnedLevel = 0;
int maxPets = 1;
int maxLevelofPets = 10;
int level = pet->getLevel();
if (petType == PetManager::CREATUREPET) {
ManagedReference<Creature*> creaturePet = cast<Creature*>(pet.get());
if (creaturePet == NULL)
return;
bool ch = player->hasSkill("outdoors_creaturehandler_novice");
if (ch) {
maxPets = player->getSkillMod("keep_creature");
maxLevelofPets = player->getSkillMod("tame_level");
}
if (creaturePet->getAdultLevel() > maxLevelofPets) {
player->sendSystemMessage("@pet/pet_menu:control_exceeded"); // Calling this pet would exceed your Control Level ability.
return;
}
if (creaturePet->isVicious() && (player->getSkillMod("tame_aggro") <= 0 || !ch)) {
player->sendSystemMessage("@pet/pet_menu:lack_skill"); // You lack the skill to call a pet of this type.
return;
}
} else if (petType == PetManager::FACTIONPET){
maxPets = 3;
}
for (int i = 0; i < ghost->getActivePetsSize(); ++i) {
ManagedReference<AiAgent*> object = ghost->getActivePet(i);
if (object != NULL) {
if (object->isCreature() && petType == PetManager::CREATUREPET) {
ManagedReference<CreatureTemplate*> activePetTemplate = object->getCreatureTemplate();
if (activePetTemplate == NULL || activePetTemplate->getTemplateName() == "at_st")
continue;
if (++currentlySpawned >= maxPets) {
player->sendSystemMessage("@pet/pet_menu:at_max"); // You already have the maximum number of pets of this type that you can call.
return;
}
spawnedLevel += object->getLevel();
if ((spawnedLevel + level) > maxLevelofPets) {
player->sendSystemMessage("@pet/pet_menu:control_exceeded"); // Calling this pet would exceed your Control Level ability.
return;
}
} else if (object->isNonPlayerCreatureObject() && petType == PetManager::FACTIONPET) {
if (++currentlySpawned >= maxPets) {
player->sendSystemMessage("@pet/pet_menu:at_max"); // You already have the maximum number of pets of this type that you can call.
return;
}
} else if (object->isCreature() && petType == PetManager::FACTIONPET) {
ManagedReference<CreatureTemplate*> activePetTemplate = object->getCreatureTemplate();
ManagedReference<CreatureTemplate*> callingPetTemplate = pet->getCreatureTemplate();
if (activePetTemplate == NULL || callingPetTemplate == NULL || activePetTemplate->getTemplateName() != "at_st")
continue;
示例4: tame
void CreatureManagerImplementation::tame(Creature* creature, CreatureObject* player, bool force) {
Zone* zone = creature->getZone();
if (zone == NULL || !creature->isCreature())
return;
if(player->getPendingTask("tame_pet") != NULL) {
player->sendSystemMessage("You are already taming a pet");
return;
}
if(player->getPendingTask("call_pet") != NULL) {
player->sendSystemMessage("You cannot tame a pet while another is being called");
return;
}
if (!creature->canTameMe(player) || !creature->isAttackableBy(player)) {
player->sendSystemMessage("@pet/pet_menu:sys_cant_tame"); // You can't tame that
return;
}
CreatureTemplate* creatureTemplate = creature->getCreatureTemplate();
if (creatureTemplate == NULL)
return;
int templateLevel = creatureTemplate->getLevel();
int maxLevelofPets = player->getSkillMod("tame_level");
if (!player->hasSkill("outdoors_creaturehandler_novice") || (templateLevel > maxLevelofPets)) {
player->sendSystemMessage("@pet/pet_menu:sys_lack_skill"); // You lack the skill to be able to tame that creature.
return;
}
if ((creature->isVicious() && player->getSkillMod("tame_aggro") < 1) || creature->getChanceToTame(player) <= 0) {
player->sendSystemMessage("@pet/pet_menu:sys_lack_skill"); // You lack the skill to be able to tame that creature.
return;
}
ManagedReference<SceneObject*> datapad = player->getSlottedObject("datapad");
if (datapad == NULL)
return;
if (datapad->getContainerObjectsSize() >= datapad->getContainerVolumeLimit()) {
player->sendSystemMessage("@faction_recruiter:datapad_full"); // Your datapad is full. You must first free some space.
return;
}
ManagedReference<PlayerManager*> playerManager = zoneServer->getPlayerManager();
int numberStored = 0;
int maxStoredPets = playerManager->getBaseStoredCreaturePets() + player->getSkillMod("stored_pets");
for (int i = 0; i < datapad->getContainerObjectsSize(); ++i) {
ManagedReference<SceneObject*> object = datapad->getContainerObject(i);
if (object != NULL && object->isPetControlDevice()) {
PetControlDevice* device = cast<PetControlDevice*>( object.get());
if (device->getPetType() == PetManager::CREATUREPET) {
if (++numberStored >= maxStoredPets) {
player->sendSystemMessage("@pet/pet_menu:sys_too_many_stored"); // There are too many pets stored in this container. Release some of them to make room for more.
return;
}
}
}
}
ManagedReference<PlayerObject*> ghost = player->getPlayerObject();
int currentlySpawned = 0;
int spawnedLevel = 0;
int level = creature->getLevel();
int maxPets = player->getSkillMod("keep_creature");
for (int i = 0; i < ghost->getActivePetsSize(); ++i) {
ManagedReference<AiAgent*> object = ghost->getActivePet(i);
if (object != NULL) {
ManagedReference<PetControlDevice*> pcd = object->getControlDevice().get().castTo<PetControlDevice*>();
if (pcd == NULL || pcd->getPetType() != PetManager::CREATUREPET) {
continue;
}
if (++currentlySpawned >= maxPets) {
player->sendSystemMessage("@pet/pet_menu:too_many"); // You can't control any more pets. Store one first
return;
}
spawnedLevel += object->getLevel();
if ((spawnedLevel + level) >= maxLevelofPets) {
player->sendSystemMessage("Taming this pet would exceed your control level ability.");
return;
}
}
}
//.........这里部分代码省略.........
示例5: callObject
//.........这里部分代码省略.........
if (!growPet(player))
return;
int currentlySpawned = 0;
int spawnedLevel = 0;
int maxPets = 1;
int maxLevelofPets = 10;
int level = pet->getLevel();
if (petType == PetManager::CREATUREPET) {
bool ch = player->hasSkill("outdoors_creaturehandler_novice");
if (ch) {
maxPets = player->getSkillMod("keep_creature");
maxLevelofPets = player->getSkillMod("tame_level");
}
if (level > maxLevelofPets) {
player->sendSystemMessage("@pet/pet_menu:control_exceeded"); // Calling this pet would exceed your Control Level ability.
return;
}
ManagedReference<Creature*> creaturePet = cast<Creature*>(pet.get());
if (creaturePet != NULL && creaturePet->isVicious() && (player->getSkillMod("tame_aggro") <= 0 || !ch)) {
player->sendSystemMessage("@pet/pet_menu:lack_skill"); // You lack the skill to call a pet of this type.
return;
}
} else if (petType == PetManager::FACTIONPET){
maxPets = 3;
}
for (int i = 0; i < ghost->getActivePetsSize(); ++i) {
ManagedReference<AiAgent*> object = ghost->getActivePet(i);
if (object != NULL) {
if (object->isCreature() && petType == PetManager::CREATUREPET) {
if (++currentlySpawned >= maxPets) {
player->sendSystemMessage("@pet/pet_menu:at_max"); // You already have the maximum number of pets of this type that you can call.
return;
}
spawnedLevel += object->getLevel();
if ((spawnedLevel + level) > maxLevelofPets) {
player->sendSystemMessage("@pet/pet_menu:control_exceeded"); // Calling this pet would exceed your Control Level ability.
return;
}
} else if (object->isNonPlayerCreatureObject() && petType == PetManager::FACTIONPET) {
if (++currentlySpawned >= maxPets) {
player->sendSystemMessage("@pet/pet_menu:at_max"); // You already have the maximum number of pets of this type that you can call.
return;
}
} else if (object->isDroidObject() && petType == PetManager::DROIDPET) {
if (++currentlySpawned >= maxPets) {
player->sendSystemMessage("@pet/pet_menu:at_max"); // You already have the maximum number of pets of this type that you can call.
return;
}
}
}
}
ManagedReference<TradeSession*> tradeContainer = player->getActiveSession(SessionFacadeType::TRADE).castTo<TradeSession*>();