本文整理汇总了C++中clocker函数的典型用法代码示例。如果您正苦于以下问题:C++ clocker函数的具体用法?C++ clocker怎么用?C++ clocker使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了clocker函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: rlocker
void PtexReader::PackedFace::reduce(FaceData*& face, PtexReader* r,
Res newres, PtexUtils::ReduceFn reducefn)
{
// get reduce lock and make sure we still need to reduce
AutoMutex rlocker(r->reducelock);
if (face) {
// another thread must have generated it while we were waiting
AutoLockCache clocker(_cache->cachelock);
// make sure it's still there now that we have the lock
if (face) {
face->ref();
return;
}
}
// allocate a new face and reduce image
DataType dt = r->datatype();
int nchan = r->nchannels();
PackedFace* pf = new PackedFace((void**)&face, _cache, newres,
_pixelsize, _pixelsize * newres.size());
// reduce and copy into new face
reducefn(_data, _pixelsize * _res.u(), _res.u(), _res.v(),
pf->_data, _pixelsize * newres.u(), dt, nchan);
AutoLockCache clocker(_cache->cachelock);
face = pf;
// clean up unused data
_cache->purgeData();
}
开发者ID:rgba32,项目名称:brdf,代码行数:29,代码来源:PtexReader.cpp
示例2: STRING_HASHCODE
bool CreatureManagerImplementation::createCreatureChildrenObjects(CreatureObject* creature, uint32 templateCRC, bool persistent, uint32 mobileTemplateCRC) {
if (creature->hasSlotDescriptor("default_weapon")) {
uint32 defaultWeaponCRC = 0;
if (creature->isNonPlayerCreatureObject()) {
defaultWeaponCRC = STRING_HASHCODE("object/weapon/melee/unarmed/unarmed_default.iff");
} else {
defaultWeaponCRC = STRING_HASHCODE("object/weapon/creature/creature_default_weapon.iff");
}
ManagedReference<SceneObject*> defaultWeapon = zoneServer->createObject(defaultWeaponCRC, persistent);
ManagedReference<SceneObject*> otherWeapon;
if(mobileTemplateCRC != 0) {
CreatureTemplate* creoTempl = creatureTemplateManager->getTemplate(mobileTemplateCRC);
if(creoTempl != NULL && creoTempl->getDefaultWeapon() != ""){
uint32 otherWeaponCRC = String(creoTempl->getDefaultWeapon()).hashCode();
otherWeapon = zoneServer->createObject(otherWeaponCRC, persistent);
}
}
if(otherWeapon != NULL) {
if (defaultWeapon != NULL && defaultWeapon->isPersistent()) {
Locker clocker(defaultWeapon, creature);
defaultWeapon->destroyObjectFromDatabase(true);
}
defaultWeapon = otherWeapon;
}
if (defaultWeapon == NULL) {
error("could not create creature default weapon");
return false;
}
Locker clocker(defaultWeapon, creature);
creature->transferObject(defaultWeapon, 4);
}
if (creature->hasSlotDescriptor("inventory")) {
Reference<SceneObject*> creatureInventory = zoneServer->createObject(STRING_HASHCODE("object/tangible/inventory/creature_inventory.iff"), persistent);
if (creatureInventory == NULL) {
error("could not create creature inventory");
return false;
}
Locker clocker(creatureInventory, creature);
creatureInventory->setContainerDefaultDenyPermission(ContainerPermissions::MOVECONTAINER);
creatureInventory->setContainerDenyPermission("owner", ContainerPermissions::MOVECONTAINER);
creatureInventory->setContainerInheritPermissionsFromParent(false);
creature->transferObject(creatureInventory, 4);
}
return true;
}
开发者ID:angelsounds777,项目名称:Core3-CU,代码行数:60,代码来源:CreatureManagerImplementation.cpp
示例3: clocker
void CreatureManagerImplementation::sample(Creature* creature, CreatureObject* player) {
Zone* zone = creature->getZone();
if (zone == NULL || !creature->isCreature() || creature->isNonPlayerCreatureObject()) {
return;
}
if (!creature->canCollectDna(player)){
player->sendSystemMessage("@bio_engineer:harvest_dna_cant_harvest");
return;
}
if (player->isRidingMount()) {
player->sendSystemMessage("You cannot sample DNA while mounted");
return;
}
if(player->getPendingTask("sampledna") != NULL) {
player->sendSystemMessage("@bio_engineer:harvest_dna_already_harvesting");
return;
}
if (!creature->hasSkillToSampleMe(player)){
player->sendSystemMessage("@bio_engineer:harvest_dna_skill_too_low");
return;
}
Locker clocker(creature);
ManagedReference<SampleDnaTask*> task = new SampleDnaTask(creature, player);
player->addPendingTask("sampledna",task,0);
}
开发者ID:SWGChoice,项目名称:Core3,代码行数:32,代码来源:CreatureManagerImplementation.cpp
示例4: locker
void PetControlDeviceImplementation::destroyObjectFromDatabase(bool destroyContainedObjects) {
ManagedReference<TangibleObject*> controlledObject = this->controlledObject.get();
if (controlledObject != NULL) {
Locker locker(controlledObject);
ManagedReference<CreatureObject*> object = controlledObject->getSlottedObject("rider").castTo<CreatureObject*>();
if (object != NULL) {
Locker clocker(object, controlledObject);
object->executeObjectControllerAction(STRING_HASHCODE("dismount"));
object = controlledObject->getSlottedObject("rider").castTo<CreatureObject*>();
if (object != NULL) {
controlledObject->removeObject(object, NULL, true);
Zone* zone = getZone();
if (zone != NULL)
zone->transferObject(object, -1, false);
}
}
controlledObject->destroyObjectFromDatabase(true);
}
IntangibleObjectImplementation::destroyObjectFromDatabase(destroyContainedObjects);
}
开发者ID:Marott1,项目名称:Core3,代码行数:30,代码来源:PetControlDeviceImplementation.cpp
示例5: clocker
void EntertainingSessionImplementation::healWounds(CreatureObject* creature, float woundHeal, float shockHeal) {
float amountHealed = 0;
ManagedReference<CreatureObject*> entertainer = this->entertainer.get();
Locker clocker(creature, entertainer);
if(!canGiveEntertainBuff())
return;
if(isInDenyServiceList(creature))
return;
if(shockHeal > 0 && creature->getShockWounds() > 0 && canHealBattleFatigue()) {
creature->addShockWounds(-shockHeal, true, false);
amountHealed += shockHeal;
}
if(woundHeal > 0 && (creature->getWounds(CreatureAttribute::MIND) > 0
|| creature->getWounds(CreatureAttribute::FOCUS) > 0
|| creature->getWounds(CreatureAttribute::WILLPOWER) > 0)) {
creature->healWound(entertainer, CreatureAttribute::MIND, woundHeal, true, false);
creature->healWound(entertainer, CreatureAttribute::FOCUS, woundHeal, true, false);
creature->healWound(entertainer, CreatureAttribute::WILLPOWER, woundHeal, true, false);
amountHealed += woundHeal;
}
clocker.release();
if(entertainer->getGroup() != NULL)
addHealingXpGroup(amountHealed);
else
addHealingXp(amountHealed);
}
开发者ID:Mesagoppinmypants,项目名称:mtgtestserver,代码行数:35,代码来源:EntertainingSessionImplementation.cpp
示例6: clocker
void JukeboxImplementation::setRadius(float newRadius) {
ManagedReference<Jukebox*> jbox = _this.getReferenceUnsafeStaticCast();
SortedVector<ManagedReference<SceneObject*> >* children = jbox->getChildObjects();
if (newRadius == radius)
return;
if (children == NULL)
return;
radius = newRadius;
for (int i = 0; i < children->size(); ++i) {
ManagedReference<SceneObject*> child = children->get(i);
if (child != NULL && child->isActiveArea()) {
ManagedReference<ActiveArea*> area = cast<ActiveArea*>(child.get());
Locker clocker(area, jbox);
area->setRadius(newRadius);
return;
}
}
}
开发者ID:JigglyPoofSWG,项目名称:BSS,代码行数:25,代码来源:JukeboxImplementation.cpp
示例7: locker
void EntertainingSessionImplementation::startPlayingMusic(const String& song, const String& instrumentAnimation, int instrid) {
ManagedReference<CreatureObject*> entertainer = this->entertainer.get();
Locker locker(entertainer);
ManagedReference<GroupObject*> group = entertainer->getGroup();
if (group != NULL) {
if (group->getBandSong() != song) {
Locker clocker(group, entertainer);
group->setBandSong(song);
}
}
sendEntertainingUpdate(entertainer, 0.0125, instrumentAnimation, 0x07352BAC, instrid);
performanceName = song;
playingMusic = true;
entertainer->sendSystemMessage("@performance:music_start_self");
entertainer->setListenToID(entertainer->getObjectID(), true);
externalInstrument = getInstrument(entertainer);
if (externalInstrument != NULL)
externalInstrument->setBeingUsed(true);
updateEntertainerMissionStatus(true, MissionObject::MUSICIAN);
entertainer->notifyObservers(ObserverEventType::STARTENTERTAIN, entertainer);
startEntertaining();
}
开发者ID:Mesagoppinmypants,项目名称:mtgtestserver,代码行数:35,代码来源:EntertainingSessionImplementation.cpp
示例8: getPlayer
void LootkitObjectImplementation::createItem() {
for (int i = 0; i<comps.size(); ++i) {
if (components.get(comps.get(i)) == 0) {
return; // Still missing pieces
}
}
ManagedReference<CreatureObject*> player = getPlayer();
if (player != NULL) {
player->sendSystemMessage("@loot_kit:new_item_created");
ManagedReference<SceneObject*> inventory = player->getSlottedObject("inventory");
ZoneServer* zoneServer = server->getZoneServer();
ManagedReference<SceneObject*> rewardObject = zoneServer->createObject(reward.get(System::random(reward.size()-1)), 2);
Locker clocker(inventory, player);
rewardObject->sendTo(player, true);
if (inventory->transferObject(rewardObject, -1, true)) {
//getParent()->removeObject(_this, true);
destroyObjectFromWorld(true);
if (isPersistent())
destroyObjectFromDatabase(true);
}
}
}
开发者ID:Skyyyr,项目名称:GR-Core,代码行数:27,代码来源:LootkitObjectImplementation.cpp
示例9: clocker
void CityHallZoneComponent::destroyObjectFromWorld(SceneObject* sceneObject, bool sendSelfDestroy) const {
ZoneServer* zoneServer = sceneObject->getZoneServer();
if (zoneServer == NULL || zoneServer->isServerShuttingDown()) {
ZoneComponent::destroyObjectFromWorld(sceneObject, sendSelfDestroy);
return;
}
ManagedReference<CityRegion*> cityRegion = sceneObject->getCityRegion().get();
if (cityRegion != NULL ) {
Locker clocker(cityRegion, sceneObject);
if (cityRegion->getCityHall() == sceneObject) {
cityRegion->setCityHall(NULL);
}
clocker.release();
CityManager* cityManager = zoneServer->getCityManager();
cityManager->destroyCity(cityRegion);
}
ZoneComponent::destroyObjectFromWorld(sceneObject, sendSelfDestroy);
}
开发者ID:ModTheGalaxy,项目名称:mtgserver,代码行数:26,代码来源:CityHallZoneComponent.cpp
示例10: clocker
Region* CityRegionImplementation::addRegion(float x, float y, float radius, bool persistent) {
if (zone == NULL) {
return NULL;
}
static const String temp = "object/region_area.iff";
ManagedReference<SceneObject*> obj = zone->getZoneServer()->createObject(temp.hashCode(), persistent ? 1 : 0);
if (obj == NULL || !obj->isRegion()) {
return NULL;
}
Locker clocker(obj, _this.getReferenceUnsafeStaticCast());
ManagedReference<Region*> region = cast<Region*>(obj.get());
region->setCityRegion(_this.getReferenceUnsafeStaticCast());
region->setRadius(radius);
region->initializePosition(x, 0, y);
region->setObjectName(regionName, false);
if (isClientRegion())
region->setNoBuildArea(true);
zone->transferObject(region, -1, false);
regions.put(region);
return region;
}
开发者ID:JigglyPoofSWG,项目名称:BSS,代码行数:29,代码来源:CityRegionImplementation.cpp
示例11: locker
void ImageDesignSessionImplementation::cancelImageDesign(uint64 designer, uint64 targetPlayer, uint64 tent, int type, const ImageDesignData& data) {
ManagedReference<CreatureObject*> designerCreature = this->designerCreature.get();
ManagedReference<CreatureObject*> targetCreature = this->targetCreature.get();
if (targetCreature == NULL || designerCreature == NULL)
return;
Locker locker(designerCreature);
Locker clocker(targetCreature, designerCreature);
imageDesignData = data;
ImageDesignRejectMessage* message = new ImageDesignRejectMessage(targetCreature->getObjectID(), designer, targetPlayer,tent, type);
imageDesignData.insertToMessage(message);
targetCreature->sendMessage(message);
ImageDesignRejectMessage* msg2 = new ImageDesignRejectMessage(designerCreature->getObjectID(), designer, targetPlayer,tent, type);
imageDesignData.insertToMessage(msg2);
designerCreature->sendMessage(msg2);
//TODO: Needs research.
cancelSession();
}
开发者ID:SWGChoice,项目名称:Core3,代码行数:25,代码来源:ImageDesignSessionImplementation.cpp
示例12: clocker
void ShipControlDeviceImplementation::storeObject(CreatureObject* player, bool force) {
player->clearState(CreatureState::PILOTINGSHIP);
ManagedReference<TangibleObject*> controlledObject = this->controlledObject.get();
if (controlledObject == NULL)
return;
Locker clocker(controlledObject, player);
if (!controlledObject->isInQuadTree())
return;
Zone* zone = player->getZone();
if (zone == NULL)
return;
zone->transferObject(player, -1, false);
controlledObject->destroyObjectFromWorld(true);
transferObject(controlledObject, 4, true);
updateStatus(0);
}
开发者ID:Nifdoolb,项目名称:Core3,代码行数:26,代码来源:ShipControlDeviceImplementation.cpp
示例13: getZoneServer
void ShipControlDeviceImplementation::generateObject(CreatureObject* player) {
//info("generating ship", true);
//return;
ZoneServer* zoneServer = getZoneServer();
ManagedReference<TangibleObject*> controlledObject = this->controlledObject.get();
Locker clocker(controlledObject, player);
controlledObject->initializePosition(player->getPositionX(), player->getPositionZ() + 10, player->getPositionY());
player->getZone()->transferObject(controlledObject, -1, true);
//controlledObject->insertToZone(player->getZone());
//removeObject(controlledObject, true);
controlledObject->transferObject(player, 5, true);
player->setState(CreatureState::PILOTINGSHIP);
//controlledObject->inflictDamage(player, 0, System::random(50), true);
updateStatus(1);
PlayerObject* ghost = player->getPlayerObject();
if (ghost != NULL)
ghost->setTeleporting(true);
}
开发者ID:Nifdoolb,项目名称:Core3,代码行数:28,代码来源:ShipControlDeviceImplementation.cpp
示例14: reduceByPercent
void DnaManager::generationalSample(PetDeed* deed, CreatureObject* player,int quality) {
// We are making a generational sample rules are a little different.
// Reduce each stat by lets say 10% as the max to be on par with old docs
int cl = deed->getLevel();
int ferocity = 0;
int factor = (int)System::random(quality) - 7;
int reductionAmount = (factor + 15 + quality) ;
int cle = reduceByPercent(deed->getCleverness(),reductionAmount);
int cou = reduceByPercent(deed->getCourage(),reductionAmount);
int dep = reduceByPercent(deed->getDependency(),reductionAmount);
int dex = reduceByPercent(deed->getDexterity(),reductionAmount);
int end = reduceByPercent(deed->getEndurance(),reductionAmount);
int fie = reduceByPercent(deed->getFierceness(),reductionAmount);
int frt = reduceByPercent(deed->getFortitude(),reductionAmount);
int har = reduceByPercent(deed->getHardiness(),reductionAmount);
int ite = reduceByPercent(deed->getIntelligence(),reductionAmount);
int pow = reduceByPercent(deed->getPower(),reductionAmount);
// calculate rest of stats here
ManagedReference<DnaComponent*> prototype = player->getZoneServer()->createObject(qualityTemplates.get(quality), 1).castTo<DnaComponent*>();
if (prototype == NULL) {
return;
}
Locker clocker(prototype);
// Check Here for unique npcs
prototype->setSource(deed->getTemplateName());
prototype->setQuality(quality);
prototype->setLevel(cl);
String serial = player->getZoneServer()->getCraftingManager()->generateSerial();
prototype->setSerialNumber(serial);
prototype->setStats(cle,end,fie,pow,ite,cou,dep,dex,frt,har);
prototype->setStun(deed->getStun());
prototype->setKinetic(deed->getKinetic());
prototype->setEnergy(deed->getEnergy());
prototype->setBlast(deed->getBlast());
prototype->setHeat(deed->getHeat());
prototype->setCold(deed->getCold());
prototype->setElectric(deed->getElectric());
prototype->setAcid(deed->getAcid());
prototype->setSaber(deed->getSaber());
prototype->setRanged(deed->getRanged());
prototype->setArmorRating(deed->getArmor());
prototype->setSpecialAttackOne(deed->getSpecial1());
prototype->setSpecialAttackTwo(deed->getSpecial2());
ManagedReference<SceneObject*> inventory = player->getSlottedObject("inventory");
if (inventory->hasFullContainerObjects()) {
StringIdChatParameter err("survey", "no_inv_space");
player->sendSystemMessage(err);
player->setPosture(CreaturePosture::UPRIGHT, true);
return;
}
Locker locker(inventory);
inventory->transferObject(prototype, -1, true,false);
inventory->broadcastObject(prototype, true);
}
开发者ID:SWGChoice,项目名称:Core3,代码行数:59,代码来源:DnaManager.cpp
示例15: printf
Reference<SceneObject*> PlanetManagerImplementation::loadSnapshotObject(WorldSnapshotNode* node, WorldSnapshotIff* wsiff, int& totalObjects) {
uint64 objectID = node->getObjectID();
String templateName = wsiff->getObjectTemplateName(node->getNameID());
ZoneServer* zoneServer = server->getZoneServer();
Reference<SceneObject*> object = zoneServer->getObject(objectID);
++totalObjects;
if (ConfigManager::instance()->isProgressMonitorActivated())
printf("\r\tLoading snapshot objects: [%d] / [?]\t", totalObjects);
//Object already exists, exit.
if (object != NULL)
return NULL;
Reference<SceneObject*> parentObject = zoneServer->getObject(node->getParentID());
String serverTemplate = templateName.replaceFirst("shared_", "");
Vector3 position = node->getPosition();
object = zoneServer->createClientObject(serverTemplate.hashCode(), objectID);
object->initializePosition(position.getX(), position.getZ(), position.getY());
object->setDirection(node->getDirection());
if (parentObject != NULL && parentObject->isBuildingObject() && object->isCellObject()) {
CellObject* cell = cast<CellObject*>(object.get());
BuildingObject* building = cast<BuildingObject*>(parentObject.get());
building->addCell(cell, node->getCellID());
}
if (parentObject != NULL)
parentObject->transferObject(object, -1);
else if (node->getParentID() != 0)
error("parent id " + String::valueOf(node->getParentID()));
if (parentObject == NULL) {
//object->insertToZone(zone);
Locker clocker(object);
zone->transferObject(object, -1, true);
}
//Load child nodes
for (int i = 0; i < node->getNodeCount(); ++i) {
WorldSnapshotNode* childNode = node->getNode(i);
if (childNode == NULL)
continue;
loadSnapshotObject(childNode, wsiff, totalObjects);
}
//object->createChildObjects();
return object;
}
开发者ID:Chilastra-Reborn,项目名称:Chilastra-source-code,代码行数:59,代码来源:PlanetManagerImplementation.cpp
示例16: if
int PowerRegulatorMenuComponent::handleObjectMenuSelect(SceneObject* sceneObject, CreatureObject* player, byte selectedID) const {
if (player->isDead() || player->isIncapacitated() || selectedID != 20)
return 1;
ManagedReference<BuildingObject*> building = sceneObject->getParentRecursively(SceneObjectType::FACTIONBUILDING).castTo<BuildingObject*>();
ManagedReference<TangibleObject*> powerRegulator = cast<TangibleObject*>(sceneObject);
if (building == NULL)
return 1;
Zone* zone = building->getZone();
if (zone == NULL)
return 1;
GCWManager* gcwMan = zone->getGCWManager();
if (gcwMan == NULL)
return 1;
if (!gcwMan->isBaseVulnerable(building))
return 1;
if (!gcwMan->areOpposingFactions(player->getFaction(), building->getFaction())) {
player->sendSystemMessage("@faction/faction_hq/faction_hq_response:no_tamper"); // You are not an enemy of this structure. Why would you want to tamper?
return 1;
} else if (gcwMan->isPowerOverloaded(building)) {
player->sendSystemMessage("@faction/faction_hq/faction_hq_response:already_overloading"); // The power regulator has already been set to overload.
return 1;
} else if (!gcwMan->isDNASampled(building)) {
player->sendSystemMessage("@faction/faction_hq/faction_hq_response:other_objectives"); // Other objectives must be disabled prior to gaining access to this one.
return 1;
} else if (player->isInCombat()) {
player->sendSystemMessage("@faction/faction_hq/faction_hq_response:power_not_in_combat"); // You cannot align the power flow to overload if you are in combat!
return 1;
} else if (powerRegulator->getParentID() != player->getParentID()) {
player->sendSystemMessage("@faction/faction_hq/faction_hq_response:power_not_in_room"); // You cannot align the power flow if you are not even in the same room!
return 1;
} else if (powerRegulator->getDistanceTo(player) > 15) {
player->sendSystemMessage("@faction/faction_hq/faction_hq_response:power_too_far"); // You are too far away from the power regulator to continue the setup!
return 1;
} else if (!player->hasSkill("combat_commando_heavyweapon_speed_02")) {
player->sendSystemMessage("@faction/faction_hq/faction_hq_response:commando_only"); // Only an experienced commando with heavy weapons training could expect to rig the regulators for overload
return 1;
}
Reference<CreatureObject*> playerRef = player;
Core::getTaskManager()->executeTask([=] () {
Locker locker(playerRef);
Locker clocker(building, playerRef);
gcwMan->sendPowerRegulatorControls(playerRef, building, powerRegulator);
}, "SendPowerRegulatorControlsLambda");
return 0;
}
开发者ID:ModTheGalaxy,项目名称:mtgserver,代码行数:57,代码来源:PowerRegulatorMenuComponent.cpp
示例17: lock
void DeliverMissionObjectiveImplementation::updateMissionStatus(CreatureObject* player) {
ManagedReference<MissionObject* > mission = this->mission.get();
if(mission == NULL)
return;
StringBuffer itemEntry;
itemEntry << "m" << mission->getMissionNumber();
ManagedReference<SceneObject*> inventory = player->getSlottedObject("inventory");
StringId itemName;
Locker lock(player);
if (objectiveStatus == 0) {
itemEntry << "l";
item = NULL;
//TODO: create correct item.
item = (player->getZoneServer()->createObject(STRING_HASHCODE("object/tangible/mission/mission_datadisk.iff"), 2)).castTo<TangibleObject*>();
if (item == NULL) {
abort();
return;
}
Locker clocker(item, player);
itemName.setStringId("mission/mission_deliver_neutral_easy", itemEntry.toString());
item->setObjectName(itemName, false);
//Give player the item to deliver
if (inventory->transferObject(item, -1, true)) {
item->sendTo(player, true);
} else {
abort();
item->destroyObjectFromDatabase(true);
return;
}
updateMissionTarget(player);
objectiveStatus = PICKEDUPSTATUS;
} else if (objectiveStatus == 1) {
// check for item, then remove item
if (item == NULL || !inventory->hasObjectInContainer(item->getObjectID())) {
return;
}
Locker clocker2(item, player);
item->destroyObjectFromWorld(true);
item->destroyObjectFromDatabase(true);
complete();
objectiveStatus = DELIVEREDSTATUS;
}
}
开发者ID:Marott1,项目名称:Core3,代码行数:57,代码来源:DeliverMissionObjectiveImplementation.cpp
示例18: locker
void SlicingSessionImplementation::handleSlice(SuiListBox* suiBox) {
ManagedReference<CreatureObject*> player = this->player.get();
ManagedReference<TangibleObject*> tangibleObject = this->tangibleObject.get();
if (player == NULL || tangibleObject == NULL)
return;
Locker locker(player);
Locker clocker(tangibleObject, player);
PlayerManager* playerManager = player->getZoneServer()->getPlayerManager();
suiBox->removeAllMenuItems();
suiBox->setCancelButton(false,"@cancel");
StringBuffer prompt;
prompt << "@slicing/slicing:";
prompt << getPrefix(tangibleObject) + "examine";
suiBox->setPromptText(prompt.toString());
player->getPlayerObject()->addSuiBox(suiBox);
player->sendMessage(suiBox->generateMessage());
if (tangibleObject->isContainerObject() || tangibleObject->getGameObjectType() == SceneObjectType::PLAYERLOOTCRATE) {
handleContainerSlice();
playerManager->awardExperience(player, "slicing", 125, true); // Container Slice XP
} else if (tangibleObject->isMissionTerminal()) {
MissionTerminal* term = cast<MissionTerminal*>( tangibleObject.get());
playerManager->awardExperience(player, "slicing", 250, true); // Terminal Slice XP
term->addSlicer(player);
player->sendSystemMessage("@slicing/slicing:terminal_success");
} else if (tangibleObject->isWeaponObject()) {
handleWeaponSlice();
playerManager->awardExperience(player, "slicing", 500, true); // Weapon Slice XP
} else if (tangibleObject->isArmorObject()) {
handleArmorSlice();
playerManager->awardExperience(player, "slicing", 1000, true); // Armor Slice XP
} else if ( isBaseSlice()){
playerManager->awardExperience(player,"slicing", 1000, true); // Base slicing
Zone* zone = player->getZone();
if(zone != NULL){
GCWManager* gcwMan = zone->getGCWManager();
if(gcwMan != NULL){
SecuritySliceTask* task = new SecuritySliceTask(gcwMan, tangibleObject.get(), player);
task->execute();
}
}
}
endSlicing();
}
开发者ID:Mesagoppinmypants,项目名称:mtgtestserver,代码行数:56,代码来源:SlicingSessionImplementation.cpp
示例19: clocker
void MissionObjectiveImplementation::destroyObjectFromDatabase() {
for (int i = 0; i < observers.size(); ++i) {
MissionObserver* observer = observers.get(i);
Locker clocker(observer, _this.getReferenceUnsafeStaticCast());
observer->destroyObjectFromDatabase();
}
ObjectManager::instance()->destroyObjectFromDatabase(_this.getReferenceUnsafeStaticCast()->_getObjectID());
}
开发者ID:Nifdoolb,项目名称:Server,代码行数:11,代码来源:MissionObjectiveImplementation.cpp
示例20: if
void SlicingSessionImplementation::handleSliceFailed() {
ManagedReference<CreatureObject*> player = this->player.get();
ManagedReference<TangibleObject*> tangibleObject = this->tangibleObject.get();
if (tangibleObject == NULL || player == NULL)
return;
if (tangibleObject->isMissionTerminal())
player->sendSystemMessage("@slicing/slicing:terminal_fail");
else if (tangibleObject->isWeaponObject())
player->sendSystemMessage("@slicing/slicing:fail_weapon");
else if (tangibleObject->isArmorObject())
player->sendSystemMessage("@slicing/slicing:fail_armor");
else if (tangibleObject->isContainerObject() || tangibleObject->getGameObjectType() == SceneObjectType::PLAYERLOOTCRATE)
player->sendSystemMessage("@slicing/slicing:container_fail");
else if (isBaseSlice())
player->sendSystemMessage("@slicing/slicing:hq_security_fail"); // Unable to sucessfully slice the terminal, you realize that the only away
else
player->sendSystemMessage("Your attempt to slice the object has failed.");
if (tangibleObject->isContainerObject()) {
ManagedReference<Container*> container = tangibleObject.castTo<Container*>();
Locker clocker(container, player);
if(!container)
return;
container->setSliced(true);
if(!container->isRelocking())
{
relockEvent = new RelockLootContainerEvent(container);
relockEvent->schedule(container->getLockTime()); // This will reactivate the 'broken' lock. (1 Hour)
}
} else if (isBaseSlice()){
Zone* zone = player->getZone();
if(zone != NULL){
GCWManager* gcwMan = zone->getGCWManager();
if(gcwMan != NULL)
gcwMan->failSecuritySlice(tangibleObject.get());
}
} else if (!tangibleObject->isMissionTerminal()) {
tangibleObject->setSliced(true);
}
endSlicing();
}
开发者ID:Mesagoppinmypants,项目名称:mtgtestserver,代码行数:53,代码来源:SlicingSessionImplementation.cpp
注:本文中的clocker函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论