本文整理汇总了C++中Ousters::initAllStat方法的典型用法代码示例。如果您正苦于以下问题:C++ Ousters::initAllStat方法的具体用法?C++ Ousters::initAllStat怎么用?C++ Ousters::initAllStat使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Ousters
的用法示例。
在下文中一共展示了Ousters::initAllStat方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: unaffect
void EffectEvade::unaffect(Creature* pCreature)
throw(Error)
{
__BEGIN_TRY
//cout << "EffectEvade" << "unaffect BEGIN" << endl;
Assert(pCreature != NULL);
Assert(pCreature->isOusters());
// 플래그를 끈다.
pCreature->removeFlag(Effect::EFFECT_CLASS_EVADE);
Zone* pZone = pCreature->getZone();
Assert(pZone != NULL);
Ousters* pTargetOusters = dynamic_cast<Ousters*>(pCreature);
Assert(pTargetOusters != NULL);
OUSTERS_RECORD prev;
pTargetOusters->getOustersRecord(prev);
pTargetOusters->initAllStat();
pTargetOusters->sendRealWearingInfo();
pTargetOusters->sendModifyInfo(prev);
// 이펙트를 삭제하라고 알려준다.
GCRemoveEffect gcRemoveEffect;
gcRemoveEffect.setObjectID(pCreature->getObjectID());
gcRemoveEffect.addEffectList(Effect::EFFECT_CLASS_EVADE);
pZone->broadcastPacket(pCreature->getX(), pCreature->getY(), &gcRemoveEffect);
//cout << "EffectEvade" << "unaffect END" << endl;
__END_CATCH
}
示例2: execute
//.........这里部分代码省略.........
SkillOutput output;
computeOutput(input, output);
// pTargetCreature가 저주마법을 반사하는 경우
if (CheckReflection(pVampire, pTargetCreature, getSkillType()))
{
pTargetCreature = (Creature*)pVampire;
TargetObjectID = pVampire->getObjectID();
}
Resist_t resist = pTargetCreature->getResist(MAGIC_DOMAIN_CURSE);
if ((resist*10/3) > output.Duration ) output.Duration=0;
else output.Duration -= resist*10/3;
if (output.Duration < 20 ) output.Duration = 20;
// 이펙트 오브젝트를 생성해 붙인다.
EffectDeath* pEffect = new EffectDeath(pTargetCreature);
pEffect->setDeadline(output.Duration);
pEffect->setLevel(pSkillInfo->getLevel()/2);
pEffect->setResistPenalty(output.Damage);
pTargetCreature->addEffect(pEffect);
pTargetCreature->setFlag(Effect::EFFECT_CLASS_DEATH);
// 능력치를 계산해서 보내준다.
if (pTargetCreature->isSlayer())
{
Slayer* pTargetSlayer = dynamic_cast<Slayer*>(pTargetCreature);
if (bCanSeeCaster)
{
SLAYER_RECORD prev;
pTargetSlayer->getSlayerRecord(prev);
pTargetSlayer->initAllStat();
pTargetSlayer->addModifyInfo(prev, _GCSkillToObjectOK2);
}
else
{
SLAYER_RECORD prev;
pTargetSlayer->getSlayerRecord(prev);
pTargetSlayer->initAllStat();
pTargetSlayer->addModifyInfo(prev, _GCSkillToObjectOK6);
}
}
else if (pTargetCreature->isVampire())
{
Vampire* pTargetVampire = dynamic_cast<Vampire*>(pTargetCreature);
VAMPIRE_RECORD prev;
pTargetVampire->getVampireRecord(prev);
pTargetVampire->initAllStat();
if (bCanSeeCaster)
{
pTargetVampire->addModifyInfo(prev, _GCSkillToObjectOK2);
}
else
{
pTargetVampire->addModifyInfo(prev, _GCSkillToObjectOK6);
}
}
else if (pTargetCreature->isOusters())
{
Ousters* pTargetOusters = dynamic_cast<Ousters*>(pTargetCreature);
OUSTERS_RECORD prev;
示例3: execute
void CGUseBonusPointHandler::execute (CGUseBonusPoint* pPacket , Player* pPlayer)
throw(Error)
{
__BEGIN_TRY __BEGIN_DEBUG_EX
__BEGIN_DEBUG
#ifdef __GAME_SERVER__
Assert(pPacket != NULL);
Assert(pPlayer != NULL);
// 정상적인 상태가 아니라면 리턴
GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer);
if (pGamePlayer->getPlayerStatus() != GPS_NORMAL) return;
Creature* pCreature = pGamePlayer->getCreature();
BYTE which = pPacket->getWhich();
Attr_t cur = 0;
if (pCreature->isSlayer() )
{
Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature);
if (pSlayer->getBonus() <= 0 )
{
GCUseBonusPointFail failPkt;
pPlayer->sendPacket(&failPkt);
return;
}
bool success = false;
if (which == INC_INT )
{
success = pSlayer->putAdvancedBonusToINT();
}
else if (which == INC_STR)
{
success = pSlayer->putAdvancedBonusToSTR();
}
else if (which == INC_DEX)
{
success = pSlayer->putAdvancedBonusToDEX();
}
if (success )
{
GCUseBonusPointOK okpkt;
pGamePlayer->sendPacket (&okpkt);
pSlayer->saveExps();
pSlayer->initAllStatAndSend();
}
else
{
GCUseBonusPointFail failPkt;
pPlayer->sendPacket(&failPkt);
return;
}
}
else if (pCreature->isVampire() )
{
// 보너스 포인트가 없다면 리턴
Vampire* pVampire = dynamic_cast<Vampire*>(pCreature);
if (pVampire->getBonus() <= 0)
{
GCUseBonusPointFail failPkt;
pPlayer->sendPacket(&failPkt);
return;
}
VAMPIRE_RECORD oldRecord;
// 능력치를 올리기 전에 기존의 능력치를 저장한다.
pVampire->getVampireRecord(oldRecord);
if (which == INC_INT)
{
cur = pVampire->getINT(ATTR_BASIC) + 1;
pVampire->setINT(cur, ATTR_BASIC);
StringStream sst;
sst << "INTE = " << (int)cur;
pVampire->tinysave(sst.toString());
/*
// INT가 증가하면 새로운 기술을 배울 수 있는 가능성이 있다.
SkillType_t lastSkill = pVampire->findLastSkill();
// lastSkill의 다음 level의 기술을 찾는다.
// 못찾았다면 더이상 배울것이 없다는 것.
for(int i = SKILL_BLOOD_DRAIN + 1 ; i < SKILL_MAX; i++)
{
SkillParentInfo* pParentInfo = g_pSkillParentInfoManager->getSkillParentInfo(i);
if (pParentInfo->hasParent(lastSkill))// 찾았다!
{
SkillInfo* pNewSkillInfo = g_pSkillInfoManager->getSkillInfo(i);
if (pNewSkillInfo->getEXP() <= cur && pVampire->hasSkill(i) == NULL)
{
//cout << "(" << pVampire->getName() << ") can learn new skill >> ";
//.........这里部分代码省略.........
示例4: unaffect
void EffectDoom::unaffect(Creature* pCreature)
throw(Error)
{
__BEGIN_TRY
__BEGIN_DEBUG
//cout << "EffectDoom" << "unaffect BEGIN" << endl;
Assert(pCreature != NULL);
// 능력치를 정상적으로 되돌리기 위해서는 플래그를 끄고,
// initAllStat을 불러야 한다.
pCreature->removeFlag(Effect::EFFECT_CLASS_DOOM);
if (pCreature->isVampire())
{
Vampire* pTargetVampire = dynamic_cast<Vampire*>(pCreature);
VAMPIRE_RECORD prev;
pTargetVampire->getVampireRecord(prev);
pTargetVampire->initAllStat();
pTargetVampire->sendRealWearingInfo();
pTargetVampire->sendModifyInfo(prev);
}
else if (pCreature->isMonster())
{
Monster* pMonster = dynamic_cast<Monster*>(pCreature);
pMonster->initAllStat();
}
else if (pCreature->isSlayer())
{
Slayer* pTargetSlayer = dynamic_cast<Slayer*>(pCreature);
SLAYER_RECORD prev;
pTargetSlayer->getSlayerRecord(prev);
pTargetSlayer->initAllStat();
pTargetSlayer->sendRealWearingInfo();
pTargetSlayer->sendModifyInfo(prev);
}
else if (pCreature->isOusters())
{
Ousters* pTargetOusters = dynamic_cast<Ousters*>(pCreature);
OUSTERS_RECORD prev;
pTargetOusters->getOustersRecord(prev);
pTargetOusters->initAllStat();
pTargetOusters->sendRealWearingInfo();
pTargetOusters->sendModifyInfo(prev);
}
else Assert(false);
Zone* pZone = pCreature->getZone();
Assert(pZone != NULL);
GCRemoveEffect gcRemoveEffect;
gcRemoveEffect.setObjectID(pCreature->getObjectID());
gcRemoveEffect.addEffectList(Effect::EFFECT_CLASS_DOOM);
pZone->broadcastPacket(pCreature->getX(), pCreature->getY(), &gcRemoveEffect);
//cout << "EffectDoom" << "unaffect END" << endl;
__END_DEBUG
__END_CATCH
}
示例5: execute
//.........这里部分代码省略.........
for (; itr != rRequiredSkills.end(); ++itr )
{
if (pOusters->hasSkill(*itr) != NULL )
{
bool canDrop = false;
SkillInfo* pFollowingSkillInfo = g_pSkillInfoManager->getSkillInfo(*itr);
list<SkillType_t>& rRequireSkills = pFollowingSkillInfo->getRequireSkills();
list<SkillType_t>::iterator itr2 = rRequireSkills.begin();
for (; itr2 != rRequireSkills.end(); ++itr2 )
{
if ((*itr2) != targetSkillType && pOusters->hasSkill(*itr2) != NULL )
{
SkillInfo* pAlternativeSkillInfo = g_pSkillInfoManager->getSkillInfo(*itr2);
if (getSkillMapID((ElementalDomain)pAlternativeSkillInfo->getElementalDomain()) == getSkillMapID((ElementalDomain)pTargetSkillInfo->getElementalDomain()) )
canDrop = true;
}
}
if (!canDrop )
{
failpkt.setDesc(CANNOT_DROP_SKILL);
pPlayer->sendPacket(&failpkt);
return;
}
}
}
}
/* if (pTargetSkillSlot->getExpLevel() >= 30 )
{
failpkt.setDesc(TOO_HIGH);
pPlayer->sendPacket(&failpkt);
return;
}*/
Assert(pTargetSkillInfo != NULL);
int backPoint = pTargetSkillInfo->getLevelUpPoint();
Price_t downPrice = (int)(backPoint * pow(pOusters->getLevel(),1.3) * 200);
if (pTargetSkillSlot->getExpLevel() <= 1 )
{
downPrice *= 5;
if (downPrice == 0 ) downPrice = 1000000;
}
if (pOusters->getGold() < downPrice )
{
failpkt.setDesc(NOT_ENOUGH_MONEY);
pPlayer->sendPacket(&failpkt);
return;
}
pOusters->decreaseGoldEx(downPrice);
pTargetSkillSlot->setExpLevel(pTargetSkillSlot->getExpLevel() - 1);
pTargetSkillSlot->save();
if (pTargetSkillSlot->getExpLevel() <= 0 )
{
pTargetSkillSlot->destroy(pOusters->getName());
backPoint = pTargetSkillInfo->getSkillPoint();
pOusters->removeSkill(targetSkillType);
}
pOusters->setSkillBonus(pOusters->getSkillBonus() + backPoint);
char query[50];
sprintf(query, "SkillBonus=%d", pOusters->getSkillBonus());
pOusters->tinysave(query);
GCDownSkillOK okpkt;
okpkt.setSkillType(targetSkillType);
pPlayer->sendPacket(&okpkt);
GCModifyInformation gcMI;
gcMI.addLongData(MODIFY_GOLD, pOusters->getGold());
gcMI.addShortData(MODIFY_SKILL_BONUS_POINT, pOusters->getSkillBonus());
switch (targetSkillType )
{
case SKILL_HIDE_SIGHT:
{
OUSTERS_RECORD prev;
pOusters->getOustersRecord(prev);
pOusters->initAllStat();
pOusters->sendRealWearingInfo();
pOusters->addModifyInfo(prev, gcMI);
}
break;
default :
break;
}
pPlayer->sendPacket(&gcMI);
#endif // __GAME_SERVER__
__END_DEBUG_EX __END_CATCH
}