Skocz do zawartości
Opublikowano

Witam serdecznie, przychodzę dzis z pytaniem, gdzie tu przykombinować aby zwiększyć ilość bitych mobów i tak samo przywolywanych. Na plikach martysamy gdy klikne pelerynke (przywoluje może polowe spota, a gdy potworow jest duzo, to czasem 5x musze kliknac zeby agro zlapaly pojedyncze jednostki) Tak samo dotyczy bicia, przy atakowaniu duzego spota gdy moby są zgrupowane, dmg otrzymuje doslownie kilka, przez co bicie spota np. z 200 potworami zajmuje mase czasu, gdzie w rzeczywistosci schodza na jednego hita). Ktos ma pomysl co tu mozna zrobic i ewentualnie jakie konsekwencje sie będą z tym wiązały? Ale wydaje mi sie ze na innych aktualnie stojących serwerach ten problem jest rozwiązany.

Edytowane przez ouiai

Featured Replies

Opublikowano
27 minut temu, ouiai napisał(a):

Tak samo dotyczy bicia, przy atakowaniu duzego spota gdy moby są zgrupowane, dmg otrzymuje doslownie kilka, przez co bicie spota np. z 200 potworami zajmuje mase czasu, gdzie w rzeczywistosci schodza na jednego hita)


Może takie rozwiązanie może ci pomóc

w bince wyszukaj :
ActorInstanceCollisionDetection.cpp

i znajdź:
int iMaxHitCount = (0 == c_rAttackData.iHitLimitCount? 16: c_rAttackData.iHitLimitCount);

i zmień liczbę:
z 16 na 32

Jeszcze też poszukaj:

if (iCurrentHitCount> 16)


I też zmień z 16 na 32

"16 i 32 = jest to liczba mobów dotkniętych trafieniem. Możesz modyfikować tyle, ile chcesz, ale nie polecam ustawiania wartości większej niż 32"
__________________________________________________________________________________________________________

Efekt przed:
przed.gif


Efekt po:
po.gif





Opublikowano
  • Autor

5 minut temu, Januszek napisał(a):


Może takie rozwiązanie może ci pomóc

w bince wyszukaj : ActorInstanceCollisionDetection.cpp

i znajdz:

int iMaxHitCount = (0 == c_rAttackData.iHitLimitCount? 16: c_rAttackData.iHitLimitCount);

i zmień liczbę 16 na 32

Jeszcze też poszukaj:

if (iCurrentHitCount> 16)


I też zmień z 16 na 32

"16 i 32 = liczba mobów dotkniętych trafieniem. Możesz modyfikować tyle, ile chcesz, ale nie polecam ustawiania wartości większej niż 32"
__________________________________________________________________________________________________________

Efekt przed:
przed.gif


Efekt po:
po.gif





Supereancko, a czemu nie dac np 64 tylko 32 max sie trzymac?
I czy wiesz może gdzie w kodzie (i czy) jest taki limit na ilosc przyciaganych mobów przez pelerynke?

Opublikowano
4 minuty temu, ouiai napisał(a):

Supereancko, a czemu nie dac np 64 tylko 32 max sie trzymac?
I czy wiesz może gdzie w kodzie (i czy) jest taki limit na ilosc przyciaganych mobów przez pelerynke?

Akurat maksymalnie do 32 bo czytałem że mogą wystąpić różne błędy i jakieś niestabilności
(może ktoś bardziej doświadczony wypowiedzieć się w tej kwestii dlaczego lepiej nie dawać powyżej 32)

Hmm.. Moge podpowiedzieć jak modyfikować zasięg przywoływania mobów:

Wyszukaj w char_state.cpp taką fraze:


    if (fDist >= 4000.0f)
        {
            SetVictim(NULL);
            if (pkChrProtege)
                if (DISTANCE_APPROX(GetX() - pkChrProtege->GetX(), GetY() - pkChrProtege->GetY()) > 1000)
                    Follow(pkChrProtege, number(150, 400));
            return;
        }


a w niej masz:

if (fDist >= 4000.0f)


I tu może zmienić np. z 4000 na 5000

Potem przejdź do: char_battle.cpp i wyszukaj:

    struct FuncAggregateMonster
    {
        LPCHARACTER m_ch;
        FuncAggregateMonster(LPCHARACTER ch)
        {
            m_ch = ch;
        }
        void operator()(LPENTITY ent)
        {
            if (ent->IsType(ENTITY_CHARACTER))
            {
                LPCHARACTER ch = (LPCHARACTER) ent;
                if (ch->IsPC())
                    return;
                if (!ch->IsMonster())
                    return;
                if (ch->GetVictim())
                    return;
                if (DISTANCE_APPROX(ch->GetX() - m_ch->GetX(), ch->GetY() - m_ch->GetY()) < 5000)
                    if (ch->CanBeginFight())
                        ch->BeginFight(m_ch);
            }
        }
    };


I w tej frazie:


if (DISTANCE_APPROX(ch->GetX() - m_ch->GetX(), ch->GetY() - m_ch->GetY()) < 5000)


Możesz zmienić np. z 5000 na 6000

  • Sevence zablokował(a) ten temat
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.