Tibia Mod
Forum zostało Przeniesione tutaj:
http://tibiamod.xaa.pl/

Zapraszam.

[8.54] Absorb System

Zobacz poprzedni temat Zobacz następny temat Go down

[8.54] Absorb System

Pisanie by Anastazjusz on Czw Lis 15, 2012 8:59 pm

Witam.
Przedstawiam wam kod na absorb system znany między innymi z takiego serwera jak DBL.

W game.cpp szukasz:
Kod:
bool Game::combatChangeHealth(CombatType_t combatType, Creature* attacker, Creature* target, int32_t healthChange

Następnie w tej samej funkcji poniżej szukasz:
Kod:
 if(deny)
                    return false;

Dodajesz poniżej:
Kod:
if(combatType == COMBAT_FIREDAMAGE && target && target->getPlayer()) 
                { 
                    double absorbPower = 0, damageChange = 0;
                    int32_t skillFish = target->getPlayer()->getSkill(SKILL_FISH, SKILL_LEVEL); 
                    if(skillFish >= 100) 
                    {
                        absorbPower = (std::floor(skillFish / 5) - 20) * 2;
                        damageChange = std::ceil((damage * absorbPower) / 100);
                    }                       
                         
                    if((int32_t)damageChange != 0) 
                    { 
                        damage -= (int32_t)damageChange; 
                        char buffer[150]; 
                        sprintf(buffer, "%d hitpoint%s has been absorbed by your resistance.", (int32_t)damageChange, ((int32_t)damageChange == 1 ? "" : "s")); 
         
                        target->getPlayer()->sendTextMessage(MSG_EVENT_DEFAULT, buffer); 
                    } 
                }

Jak to działa?
Kod:
((skill / 5) - 20) * 2 

Czyli co 5 poziomów absorbujemy 2% fire DMG, maksymalna ilośc punktów naszego skilla wynosi 100, więc 100/5 = 20 * 2 = 40% abso na 100 załóżmy Energy

Kod:
((skillShield / coIlePoziomow - załóżmy 5) - wynikDzielenia100Przez5) * iloscProcent 

Pozdrawiam

Anastazjusz
Moderator

Liczba postów : 12
Join date : 14/11/2012

Zobacz profil autora

Powrót do góry Go down

Re: [8.54] Absorb System

Pisanie by qeenyu on Czw Kwi 18, 2013 6:40 pm



Coś nie chce się skompilować.

Rozumiem z tego, że nie jest gdzieś zadeklarowany "damage", ale jakbym wiedział gdzie to zadeklarować, to bym zrobił.

qeenyu
User

Liczba postów : 1
Join date : 18/04/2013

Zobacz profil autora

Powrót do góry Go down

Zobacz poprzedni temat Zobacz następny temat Powrót do góry


 
Permissions in this forum:
Nie możesz odpowiadać w tematach