本文整理汇总了C++中Hero::getLifeVal方法的典型用法代码示例。如果您正苦于以下问题:C++ Hero::getLifeVal方法的具体用法?C++ Hero::getLifeVal怎么用?C++ Hero::getLifeVal使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Hero
的用法示例。
在下文中一共展示了Hero::getLifeVal方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: attactMonsterArrange
/*宠物群攻判定*/
void Pet::attactMonsterArrange(MonsterBase *monster,double skiHrtRatio,double _cdTime,int index)
{
Hero *owner=heroid_to_hero(masterId);
if (owner==NULL)
{
return;
}
Map_Inform *mapNow = owner->getMap();
if (mapNow==NULL)
{
return;
}
// 群体指向性技能不闪避
float hitTimes = 1.0f;
int lifeHurt = 0;
unsigned range = 0;
bool isCrit = false;
// 群攻技能不带debuff
int atkNum = 0; //受攻击人数
char msg[4096] = {0};
char tempMsg[4096] = {0};
sprintf(msg, "26,2,1,%s,%d,%s,%d,%d,%d,%d,%d,%d,%d",petdata->petskilldata[index-1].id, 1,
petdata->identity, 100, 100, 100,100,0, 0, isCrit);
// cout<<"It have enter here and msg is "<<msg<<endl;
Nbox *box = mapNow->getBox();
if (box == NULL)
{
return;
}
Point objPt;
Point tempPt;
objPt = monster->getLocation();
range = petdata->petskilldata[index-1].range;
if (range != 200)
{
range = 200;
}
range += 50; //比客户端放大50范围
OneScreen *neighborScrs[4] = {0}, *oneScr = NULL;
box->getNeighbour(objPt, neighborScrs);
set<string> tempSet;
for (int i = 0; i < 4; i++)
{
oneScr = neighborScrs[i];
if (oneScr == NULL)
{
continue;
}
// cout<<"hero pk state is "<<owner->gethero_PK_status()<<endl;
if (owner->gethero_PK_status() != PEACE_MODE)
{
set<string>::iterator it_id;
tempSet = oneScr->heroSet;
for (it_id = tempSet.begin(); it_id != tempSet.end(); it_id++)
{
if (!strcmp(owner->getIdentity(), (*it_id).c_str()))
{
// 是宠物的主人
continue;
}
Hero *hitedHero = heroid_to_hero(*it_id);
if (hitedHero == NULL)
{
continue;
}
// 已经死亡
if (hitedHero->getLifeVal() <= 0)
{
cout<<"The atked hero is dead when use many atk skill"<<endl;
continue;
}
// 无敌状态
if (hitedHero->skillBuffState & BUFF_INVINCIBLE_STATE)
{
cout<<"The atked hero is invinc for atk"<<endl;
continue;
}
if (relationCheck(owner, hitedHero, mapNow) != 2)
{
// 不是敌人,不能攻击
cout<<"The hero is not your enemy when use many atk skill !!"<<endl;
continue;
}
tempPt = hitedHero->getLocation();
cout<<"really distance is:"<<GET_DISTANCE(tempPt, objPt)<<endl;
cout<<"can hurt range is:"<<range<<endl;
if (IS_OUT_RANGE(tempPt, objPt, range))
{
// 不在作用范围内
cout<<"The atked hero is out of range when use many atk skill!!"<<endl;
continue;
//.........这里部分代码省略.........
示例2: attactWagonComm
//.........这里部分代码省略.........
cout<<"This wagon has no owner, but you can attack it"<<endl;
goto LG; //没有主人的马车也能被打
// return;
}
//马车主人不能打自己的马车
owerId = owner->getIdentity();
if (!strcmp(owerId, hero->getIdentity()))
{
return;
}
LG: ;
//全用像素点
Point wagonLocation = wagon->getPt();
int range; //攻击者的攻击范围
//bool isLive; //马车是否还活着
int distance = 0; //攻击者离马车距离
Skill *skill;
//int skillNeedMagic = 0; //技能的魔法消耗
int attackLife = 100; //攻击者当前血量……置为宠物的属性值
int attackMagic = 100; //攻击者魔法……置为宠物的属性值
//int attackHurt = wagon->getHurt(); //马车每次被攻击掉血固定
//index = 0 为人攻击马车
if (index == 0)
{
map<string,Skill*> attack_skill_list; //玩家角色的技能列表
map<string,Skill*>::iterator skill_iter;
attack_skill_list = hero->getSkill_list();
skill_iter = attack_skill_list.find(skillId);
if(skill_iter == attack_skill_list.end())
{
cout<<"BisonTest: hero does not has this skill to use when attack wagon"<<endl;
return;
}
skill = skill_iter->second; //玩家所使用的技能
if (skill->gettype() != 1 || skill->geteffect() != 1)
{
//管你是群攻还是医疗,只要不是主动技能都别用来搞马车
cout<<"skill type can't attack wagon"<<endl;
return;
}
if(!isFightStatusOfHero(hero, skill)) //判断玩家的真气,和技能的时间是否符合条件
{
cout<<"BisonTest: magical or time is not ok to use this skill"<<endl;
return;
}
cout<<"BisonTest: Hero attacks the wagon "<<wagonId<<endl;
//判断距离是否够
Point heroLocation = hero->getLocation();
int deltaX = wagonLocation._x - heroLocation._x;
int deltaY = wagonLocation._y - heroLocation._y;
int distance = sqrt(deltaX * deltaX + deltaY * deltaY);
range = hero->getAtk_range();
cout<<"BisonTest: distance is "<<distance<<" hero attack range is "<<range<<endl;
if (distance > range)
{
cout<<"BisonTest: The wagon is out attack range"<<endl;
return;
} else {
//攻击者者扣蓝
//hero->setMagicVal(hero->getMagicVal() - skillNeedMagic);
PropertyOfAttackerChange(hero, skill);
//玩家的当前血蓝
attackLife = hero->getLifeVal(); //难道还有攻击者自身会掉血的情况?不懂,随着他们用
attackMagic = hero->getMagicVal();
}
} else if (index == 1) {
//index = 1,为宠物打马车
Pet *pet = hero->getPetBox()->getActivePet();
if (pet == NULL)
{
cout<<"BisonTest: hero have no active Pet "<<endl;
return;
} else {
//宠物位置
Point petLocation = pet->getLogicNow();
petLocation = LogicalExchangeMap(petLocation);
int deltaX = wagonLocation._x - petLocation._x;
int deltaY = wagonLocation._y - petLocation._y;
int distance = sqrt(deltaX * deltaX + deltaY * deltaY);
range = pet->getAttackRange();
cout<<"BisonTest: distance is "<<distance<<" pet attack range is "<<range<<endl;
if (distance > range)
{
cout<<"BisonTest: The wagon is out attack range"<<endl;
return;
}
}
} else {
return;
}
attackWagon(hero->getIdentity(), attackLife, attackMagic, skillId, wagonId);
#endif
}