• 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!

Melee ataki.

masterqwerty

New Member
Joined
Mar 25, 2012
Messages
20
Reaction score
0
Witam wszystkich. Chciałbym zedytować silnik 0.3.6pl1. Problem polega na tym, że w melee ataki sa liczone praktycznie tylko od skila. Chciałbym zrobić tak by wraz ze wzrostem levela wzrastał damage. Domyślam się, że trzeba troszke zmodyfikować source, jednak kompletnie nie wiem gdzie tego szukać i jak wklepać nowy wzór dla ataków.

Pozdrawiam.
 
weapons.cpp
PHP:
bool Weapon::useFist(Player* player, Creature* target)
{
        const Position& playerPos = player->getPosition();
        const Position& targetPos = target->getPosition();
        if(!Position::areInRange<1,1>(playerPos, targetPos))
                return false;

        float attackFactor = player->getAttackFactor();
        int32_t attackSkill = player->getSkill(SKILL_FIST, SKILL_LEVEL);
        int32_t attackValue = 7;

        double maxDamage = Weapons::getMaxWeaponDamage(player->getLevel(), attackSkill, attackValue, attackFactor);
        if(random_range(1, 100) <= g_config.getNumber(ConfigManager::CRITICAL_HIT_CHANCE))
        {
                maxDamage = std::pow(maxDamage, g_config.getDouble(ConfigManager::CRITICAL_HIT_MUL));
                player->sendCritical();
        }

        Vocation* vocation = player->getVocation();
        if(vocation && vocation->getMultiplier(MULTIPLIER_MELEE) != 1.0)
                maxDamage *= vocation->getMultiplier(MULTIPLIER_MELEE);

        maxDamage = std::floor(maxDamage);
        int32_t damage = -random_range(0, (int32_t)maxDamage, DISTRO_NORMAL);

        CombatParams fist;
        fist.blockedByArmor = true;
        fist.blockedByShield = true;
        fist.combatType = COMBAT_PHYSICALDAMAGE;

        Combat::doCombatHealth(player, target, damage, damage, fist);
        if(!player->hasFlag(PlayerFlag_NotGainSkill) && player->getAddAttackSkill())
                player->addSkillAdvance(SKILL_FIST, 1);

        return true;
}
 
Dzieki wielkie za pomoc. Problem rozwiazany. Szukalem bardziej w combat a o weapons nawet nie pomyslalem. No ale coz, czasami wykazuje sie tempota. Dzieki jeszcze raz i oczywiscie repucik dla Ciebie.

Pozdrawiam.
 
piersze slysze ze tylko od skilla sa liczone

w dawnej tibii tak było dawno dawno temu, za siedmioma kopalniami krasnoludów, za siedmioma Spawnami, były sobie slimy, a tam dzieli rycerze ćwiczyli się na nich by na 20 lvlu mieć pierdolnięcie mocniejsze niż 50+

system zależny obrażeń od lvl'a wprowadzono chyba jakoś w tibii 8.0 czy może trochę wcześniej
 
Back
Top