本文整理汇总了C++中Zone::broadcastPacket方法的典型用法代码示例。如果您正苦于以下问题:C++ Zone::broadcastPacket方法的具体用法?C++ Zone::broadcastPacket怎么用?C++ Zone::broadcastPacket使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Zone
的用法示例。
在下文中一共展示了Zone::broadcastPacket方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: unaffect
void EffectIntimateGrail::unaffect(Creature* pCreature)
throw(Error)
{
__BEGIN_TRY
//cout << "EffectIntimateGrail" << "unaffect BEGIN" << endl;
Assert(pCreature != NULL);
pCreature->removeFlag(Effect::EFFECT_CLASS_INTIMATE_GRAIL);
if (pCreature->isPC() )
{
PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature);
pPC->initAllStatAndSend();
}
// pSlayer->initAllStatAndSend();
Zone* pZone = pCreature->getZone();
Assert(pZone != NULL);
GCRemoveEffect gcRemoveEffect;
gcRemoveEffect.setObjectID(pCreature->getObjectID());
gcRemoveEffect.addEffectList(Effect::EFFECT_CLASS_INTIMATE_GRAIL);
pZone->broadcastPacket(pCreature->getX(), pCreature->getY(), &gcRemoveEffect);
//cout << "EffectIntimateGrail" << "unaffect END" << endl;
__END_CATCH
}
示例2: unaffect
void EffectDetectHidden::unaffect(Creature* pCreature)
throw(Error)
{
__BEGIN_TRY
//cout << "EffectDetectHidden " << "unaffect BEGIN" << endl;
Assert(pCreature != NULL);
Assert(pCreature->isSlayer());
// 플래그를 제거한다.
pCreature->removeFlag(Effect::EFFECT_CLASS_DETECT_HIDDEN);
// 마법의 힘으로 보고 있던 크리쳐들을 삭제한다.
Zone* pZone = pCreature->getZone();
Assert(pZone != NULL);
pZone->updateHiddenScan(pCreature);
// 이펙트가 사라졌다고 알려준다.
GCRemoveEffect gcRemoveEffect;
gcRemoveEffect.setObjectID(pCreature->getObjectID());
gcRemoveEffect.addEffectList(Effect::EFFECT_CLASS_DETECT_HIDDEN);
pZone->broadcastPacket(pCreature->getX(), pCreature->getY(), &gcRemoveEffect);
//cout << "EffectDetectHidden " << "unaffect END" << endl;
__END_CATCH
}
示例3: unaffect
void EffectAuraShield::unaffect(Creature* pCreature)
throw(Error)
{
__BEGIN_TRY
//cout << "EffectAuraShield" << "unaffect BEGIN" << endl;
Assert(pCreature != NULL);
Assert(pCreature->isSlayer());
// 플래그를 끈다.
pCreature->removeFlag(Effect::EFFECT_CLASS_AURA_SHIELD);
Zone* pZone = pCreature->getZone();
Assert(pZone != NULL);
// 이펙트를 삭제하라고 알려준다.
GCRemoveEffect gcRemoveEffect;
gcRemoveEffect.setObjectID(pCreature->getObjectID());
gcRemoveEffect.addEffectList(Effect::EFFECT_CLASS_AURA_SHIELD);
pZone->broadcastPacket(pCreature->getX(), pCreature->getY(), &gcRemoveEffect);
//cout << "EffectAuraShield" << "unaffect END" << endl;
__END_CATCH
}
示例4: unaffect
void SimpleCreatureEffect::unaffect(Creature* pCreature)
throw(Error)
{
__BEGIN_TRY
Assert(pCreature != NULL);
// 플래그를 끈다.
pCreature->removeFlag(getEffectClass());
Zone* pZone = pCreature->getZone();
Assert(pZone != NULL);
// 이펙트를 삭제하라고 알려준다.
GCRemoveEffect gcRemoveEffect;
gcRemoveEffect.setObjectID(pCreature->getObjectID());
gcRemoveEffect.addEffectList(getSendEffectClass());
if (isBroadcastingEffect() )
{
pZone->broadcastPacket(pCreature->getX(), pCreature->getY(), &gcRemoveEffect);
}
else
{
Player* pPlayer = pCreature->getPlayer();
if (pPlayer != NULL ) pPlayer->sendPacket(&gcRemoveEffect);
}
__END_CATCH
}
示例5: unaffect
void EffectSpiritGuard::unaffect(Creature* pCreature)
throw(Error)
{
__BEGIN_TRY
// cout << "EffectSpiritGuard " << "unaffect BEGIN" << endl;
Assert(pCreature != NULL);
if (!pCreature->isSlayer() )
return;
Player* pPlayer = dynamic_cast<Player*>(pCreature->getPlayer());
Assert(pPlayer != NULL);
Zone* pZone = pCreature->getZone();
Assert(pZone != NULL);
// Effect를 없애고 알린다.
pCreature->removeFlag(Effect::EFFECT_CLASS_SPIRIT_GUARD_1);
GCRemoveEffect gcRemoveEffect;
gcRemoveEffect.setObjectID(pCreature->getObjectID());
gcRemoveEffect.addEffectList(m_EffectClass);
pPlayer->sendPacket(&gcRemoveEffect);
pZone->broadcastPacket(pCreature->getX(), pCreature->getY(), &gcRemoveEffect, pCreature);
__END_CATCH
}
示例6: unaffect
void EffectFlagInsert::unaffect(Item* pItem)
throw(Error)
{
__BEGIN_TRY
__BEGIN_DEBUG
Assert(pItem != NULL);
Assert(pItem->getItemClass()==Item::ITEM_CLASS_CORPSE);
Assert(pItem->getItemType()==MONSTER_CORPSE);
MonsterCorpse* pCorpse = dynamic_cast<MonsterCorpse*>(pItem);
pCorpse->removeFlag(Effect::EFFECT_CLASS_FLAG_INSERT);
Zone* pZone = pCorpse->getZone();
Assert(pZone != NULL);
GCRemoveEffect gcRemoveEffect;
gcRemoveEffect.setObjectID(pItem->getObjectID());
gcRemoveEffect.addEffectList(Effect::EFFECT_CLASS_FLAG_INSERT);
pZone->broadcastPacket(pCorpse->getX(), pCorpse->getY(), &gcRemoveEffect);
__END_DEBUG
__END_CATCH
}
示例7: unaffect
void EffectFrozenArmor::unaffect(Creature* pCreature)
throw(Error)
{
__BEGIN_TRY
//cout << "EffectFrozenArmor" << "unaffect BEGIN" << endl;
Assert(pCreature != NULL);
Assert(pCreature->isOusters());
// 플래그를 끈다.
pCreature->removeFlag(Effect::EFFECT_CLASS_FROZEN_ARMOR);
Zone* pZone = pCreature->getZone();
Assert(pZone != NULL);
Ousters* pTargetOusters = dynamic_cast<Ousters*>(pCreature);
Assert(pTargetOusters != NULL);
// 이펙트를 삭제하라고 알려준다.
GCRemoveEffect gcRemoveEffect;
gcRemoveEffect.setObjectID(pCreature->getObjectID());
gcRemoveEffect.addEffectList(Effect::EFFECT_CLASS_FROZEN_ARMOR);
pZone->broadcastPacket(pCreature->getX(), pCreature->getY(), &gcRemoveEffect);
//cout << "EffectFrozenArmor" << "unaffect END" << endl;
__END_CATCH
}
示例8: unaffect
void EffectGreenStalker::unaffect(Creature* pCreature)
throw(Error)
{
__BEGIN_TRY
__BEGIN_DEBUG
//cout << "EffectGreenStalker " << "unaffect BEGIN" << endl;
Assert(pCreature != NULL);
// 크리쳐에게서 플래그를 제거한다.
pCreature->removeFlag(Effect::EFFECT_CLASS_GREEN_STALKER);
Zone* pZone = pCreature->getZone();
Assert(pZone != NULL);
// 존에서 이펙트가 사라졌다고 알려준다.
GCRemoveEffect gcRemoveEffect;
gcRemoveEffect.setObjectID(pCreature->getObjectID());
gcRemoveEffect.addEffectList(Effect::EFFECT_CLASS_GREEN_STALKER);
pZone->broadcastPacket(pCreature->getX(), pCreature->getY(), &gcRemoveEffect);
//cout << "EffectGreenStalker " << "unaffect END" << endl;
__END_DEBUG
__END_CATCH
}
示例9: unaffect
void EffectLoud::unaffect(Creature* pCreature)
throw(Error)
{
__BEGIN_TRY
Assert(pCreature != NULL);
// Assert(pCreature->isOusters());
// 플래그를 끈다.
pCreature->removeFlag(Effect::EFFECT_CLASS_LOUD);
Zone* pZone = pCreature->getZone();
Assert(pZone != NULL);
// Ousters* pTargetOusters = dynamic_cast<Ousters*>(pCreature);
// Assert(pTargetOusters != NULL);
// 이펙트를 삭제하라고 알려준다.
GCRemoveEffect gcRemoveEffect;
gcRemoveEffect.setObjectID(pCreature->getObjectID());
gcRemoveEffect.addEffectList(Effect::EFFECT_CLASS_LOUD);
pZone->broadcastPacket(pCreature->getX(), pCreature->getY(), &gcRemoveEffect);
__END_CATCH
}
示例10: unaffect
void EffectMephisto::unaffect(Creature* pCreature)
throw(Error)
{
__BEGIN_TRY
__BEGIN_DEBUG
//cout << "EffectMephisto" << "unaffect BEGIN" << endl;
Assert(pCreature != NULL);
Assert(pCreature->isVampire());
pCreature->removeFlag(Effect::EFFECT_CLASS_MEPHISTO);
Vampire* pVampire = dynamic_cast<Vampire*>(pCreature);
VAMPIRE_RECORD prev;
pVampire->getVampireRecord(prev);
pVampire->initAllStat();
pVampire->sendRealWearingInfo();
pVampire->sendModifyInfo(prev);
Zone* pZone = pVampire->getZone();
Assert(pZone != NULL);
// 이펙트가 사라졌다고 알려준다.
GCRemoveEffect gcRemoveEffect;
gcRemoveEffect.setObjectID(pVampire->getObjectID());
gcRemoveEffect.addEffectList(Effect::EFFECT_CLASS_MEPHISTO);
pZone->broadcastPacket(pVampire->getX(), pVampire->getY(), &gcRemoveEffect);
//cout << "EffectMephisto" << "unaffect END" << endl;
__END_DEBUG
__END_CATCH
}
示例11: unaffect
void EffectProtectionFromCurse::unaffect()
throw(Error)
{
__BEGIN_TRY
__BEGIN_DEBUG
Creature* pCreature = dynamic_cast<Creature*>(m_pTarget);
pCreature->removeFlag(Effect::EFFECT_CLASS_PROTECTION_FROM_CURSE);
Resist_t resist = pCreature->getResist(MAGIC_DOMAIN_CURSE);
resist = max(0,(int)(resist - m_Resist));
pCreature->setResist(MAGIC_DOMAIN_CURSE, resist);
Zone* pZone = pCreature->getZone();
Assert(pZone != NULL);
// 이펙트가 사라졌다고 알려준다.
GCRemoveEffect gcRemoveEffect;
gcRemoveEffect.setObjectID(pCreature->getObjectID());
gcRemoveEffect.addEffectList(Effect::EFFECT_CLASS_PROTECTION_FROM_CURSE);
pZone->broadcastPacket(pCreature->getX(), pCreature->getY(), &gcRemoveEffect);
__END_DEBUG
__END_CATCH
}
示例12: unaffect
void EffectChargingPower::unaffect(Creature* pCreature)
throw(Error)
{
__BEGIN_TRY
__BEGIN_DEBUG
//cout << "EffectChargingPower" << "unaffect BEGIN" << endl;
Assert(pCreature != NULL);
Assert(pCreature->isSlayer());
pCreature->removeFlag(Effect::EFFECT_CLASS_CHARGING_POWER);
Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature);
SLAYER_RECORD prev;
pSlayer->getSlayerRecord(prev);
pSlayer->initAllStat();
pSlayer->sendRealWearingInfo();
pSlayer->sendModifyInfo(prev);
Zone* pZone = pSlayer->getZone();
Assert(pZone != NULL);
// 이펙트가 사라졌다고 알려준다.
GCRemoveEffect gcRemoveEffect;
gcRemoveEffect.setObjectID(pSlayer->getObjectID());
gcRemoveEffect.addEffectList(Effect::EFFECT_CLASS_CHARGING_POWER);
pZone->broadcastPacket(pSlayer->getX(), pSlayer->getY(), &gcRemoveEffect);
//cout << "EffectChargingPower" << "unaffect END" << endl;
__END_DEBUG
__END_CATCH
}
示例13: execute
////////////////////////////////////////////////////////////////////////////////
// 액션을 실행한다.
////////////////////////////////////////////////////////////////////////////////
void ActionRandomSay::execute (Creature * pCreature1 , Creature * pCreature2)
throw(Error)
{
__BEGIN_TRY
__BEGIN_DEBUG
Assert(pCreature1 != NULL);
Assert(pCreature2 == NULL);
Assert(pCreature1->isNPC());
// RandomSay는 아래에서 보다시피, 임의의 범위(Start와 End) 안의
// 스크립트 중 랜덤을 돌려 하나를 클라이언트에게 보내는 식이다.
// 그러므로 Start와 End 사이에 존재하지 않는 스크립트가 있으면 곤란하다.
// 스크립트 테이블을 만들 때, RandomSay에 사용하는 것은
// 데이터가 반드시 연속적으로 존재하게 만들어야 한다.
NPC* pNPC = dynamic_cast<NPC*>(pCreature1);
ScriptID_t scriptID = m_StartScriptID + random() % (m_EndScriptID - m_StartScriptID + 1);
const Script* pScript = g_pPublicScriptManager->getScript(scriptID);
GCNPCSay gcNPCSay;
gcNPCSay.setObjectID(pNPC->getObjectID());
gcNPCSay.setScriptID(pScript->getScriptID());
gcNPCSay.setSubjectID(0);
Zone * pZone = pNPC->getZone();
Assert(pZone != NULL);
pZone->broadcastPacket(pNPC->getX() , pNPC->getY() , &gcNPCSay);
__END_DEBUG
__END_CATCH
}
示例14: unaffect
void EffectCauseCriticalWounds::unaffect(Creature* pCreature )
throw(Error )
{
__BEGIN_TRY
//cout << "EffectCauseCriticalWounds " << "unaffect BEGIN" << endl;
Assert(pCreature != NULL);
Assert(pCreature->isVampire() || pCreature->isOusters() || pCreature->isMonster());
pCreature->removeFlag(Effect::EFFECT_CLASS_CAUSE_CRITICAL_WOUNDS);
Zone* pZone = pCreature->getZone();
Assert(pZone != NULL);
GCRemoveEffect gcRemoveEffect;
gcRemoveEffect.setObjectID(pCreature->getObjectID());
gcRemoveEffect.addEffectList(Effect::EFFECT_CLASS_CAUSE_CRITICAL_WOUNDS);
pZone->broadcastPacket(pCreature->getX(), pCreature->getY(), &gcRemoveEffect, pCreature);
if (pCreature->isPC() )
{
Player* pPlayer = pCreature->getPlayer();
Assert(pPlayer != NULL);
pPlayer->sendPacket(&gcRemoveEffect);
}
__END_CATCH
}
示例15: unaffect
void EffectGnomesWhisper::unaffect(Creature* pCreature)
throw(Error)
{
__BEGIN_TRY
//cout << "EffectGnomesWhisper" << "unaffect BEGIN" << endl;
Assert(pCreature != NULL);
// Assert(pCreature->isOusters());
// 플래그를 끈다.
pCreature->removeFlag(Effect::EFFECT_CLASS_GNOMES_WHISPER);
Zone* pZone = pCreature->getZone();
Assert(pZone != NULL);
pZone->updateInvisibleScan(pCreature);
// Ousters* pTargetOusters = dynamic_cast<Ousters*>(pCreature);
// Assert(pTargetOusters != NULL);
// 이펙트를 삭제하라고 알려준다.
GCRemoveEffect gcRemoveEffect;
gcRemoveEffect.setObjectID(pCreature->getObjectID());
gcRemoveEffect.addEffectList(Effect::EFFECT_CLASS_GNOMES_WHISPER);
pZone->broadcastPacket(pCreature->getX(), pCreature->getY(), &gcRemoveEffect);
//cout << "EffectGnomesWhisper" << "unaffect END" << endl;
__END_CATCH
}