• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Problem with pointers

Holloweye

New Member
Joined
Jul 13, 2007
Messages
52
Reaction score
4
I get error on this code:
Code:
void Player::drainHealth(Creature* attacker, CombatType_t combatType, int32_t damage)
{
	Creature::drainHealth(attacker, combatType, damage);
	sendStats();
	char buffer[150];
	
	//HEAL WHEN HITTED
	int32_t rnd = random_range(0, 100);
	if(rnd <= getHitreghpchance())
    {
            int32_t heal = getPlayerInfo(PLAYERINFO_HEALTH) + getHitreghp();
	        if(heal > getPlayerInfo(PLAYERINFO_MAXHEALTH))
	        {
                   heal =  getPlayerInfo(PLAYERINFO_MAXHEALTH);
            }
            int32_t healamount = getPlayerInfo(PLAYERINFO_MAXHEALTH) - heal;
            
            if(healamount > 0)
            {
                  //g_game.addMagicEffect(player->getPosition(), NM_ME_HOLYDAMAGE);
                  //player->sendTextMessage(MSG_STATUS_SMALL, "Healed: " << healamount);
                  changeHealth(heal);
            }
    }
    
    //HEAL ON ATTACK
    rnd = random_range(0, 100);
    const Player* targetPlayer = dynamic_cast<const Player*>(attacker);
    if(targetPlayer)
	if(rnd <= targetPlayer->getHitreghpchance())
    {
            int32_t heal = targetPlayer->getPlayerInfo(PLAYERINFO_HEALTH) + targetPlayer->getHitreghp();
	        if(heal > targetPlayer->getPlayerInfo(PLAYERINFO_MAXHEALTH))
	        {
                   heal =  targetPlayer->getPlayerInfo(PLAYERINFO_MAXHEALTH);
            }
            int32_t healamount = targetPlayer->getPlayerInfo(PLAYERINFO_MAXHEALTH) - heal;
            
            if(healamount > 0)
            {
                  //g_game.addMagicEffect(attacker->getPosition(), NM_ME_HOLYDAMAGE);
                  //attacker->sendTextMessage(MSG_STATUS_SMALL, "Healed: " << healamount);
>>>>>ERROR>>>>>>>>>>>>>>             targetPlayer->changeHealth(heal);
            }
    }
	
	if(attacker)
		sprintf(buffer, "You lose %d hitpoint%s due to an attack by %s.", damage, (damage != 1 ? "s" : ""), attacker->getNameDescription().c_str());
	else
		sprintf(buffer, "You lose %d hitpoint%s.", damage, (damage != 1 ? "s" : ""));
	sendTextMessage(MSG_EVENT_DEFAULT, buffer);
}

ERROR:
Code:
 C:\Users\Christer\Documents\Server\Sources 3.5\Sources 3.0\Sources 3.0\player.cpp In member function `virtual void Player::drainHealth(Creature*, CombatType_t, int32_t)': 

1959 C:\Users\Christer\Documents\Server\Sources 3.5\Sources 3.0\Sources 3.0\player.cpp passing `const Player' as `this' argument of `virtual void Player::changeHealth(int32_t)' discards qualifiers 

1959 C:\Users\Christer\Documents\Server\Sources 3.5\Sources 3.0\Sources 3.0\player.cpp *** [../player.o] Error 1

Thanks for the help!
 
Back
Top