Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Rada Pustelnika i kontrola jego współczynnika nauki


Rekomendowane odpowiedzi

Opublikowano

Hej.

 

Udało mi się nie dawno odkryć, że współczynnik pomyślnego przeczytania KU, który podnosi nam Rada Pustelnika można kontrolować poprzez kolumnę value3 z SQL'owego item_proto.

 

Sęk w tym iż obecne ustawienie tejże kolumny, jak i przedmiotu są dość... Mylące

 

http://scr.hu/1yl7/9uhp4

 

Jak widać na obrazku wyżej takie ustawienie sprawia, że po użyciu rady pustelnika, KU zawsze jest pomyślnie przeczytana.

Natomiast mnie interesuje, żeby Rada pustelnika sprawiała, żeby Szansa na pomyślne przeczytanie KU wynosiła 50% (no może być 60%).

I moje zasadnicze pytanie jest takie, czy ktoś wie, jak operować tą liczbą, żeby ten współczynnik regulować w zakresie 1% - 100%

 

(0% to oznacza nic i przypuszczam, że 0% sprawiałoby, że KU nigdy by nie weszła)

 

Od razu mówię, niech nikt mi nie piedoli, żeby to podzielić na pół i będzie 50%, bo nie będzie. 

arijh2.jpg

Opublikowano

Masz taki wpis przy użyciu Rady:

AddAffect(item->GetValue(0), aApplyInfo[item->GetValue(1)].bPointType, item->GetValue(2), 0, item->GetValue(3), 0, false);
 
A taki inny wpis z brzegu:
AddAffect(AFFECT_EXP_BONUS_EURO_FREE, aApplyInfo[item->GetValue(1)].bPointType, item->GetValue(2), 0, item->GetValue(3), 0, false, true);

Porównujesz z tym:

AddAffect(DWORD dwType, BYTE bApplyOn, long lApplyValue, DWORD dwFlag, long lDuration, long lSPCost, bool bOverride, bool IsCube = false);

I wnioskujesz, że 'item->GetValue(0)' wskazuje jaki efekt zostanie nałozony (przy radzie jest to 512, czyli AFFECT_SKILL_BOOK_BONUS), a item->GetValue(3) wskazuje czas trwania efektu.

 

PS.

A dalej odnośnie AFFECT_SKILL_BOOK_BONUS  masz wszystko w funkcji 'LearnSkillByBook' oraz 'LearnGrandMasterSkill' (char_skill.cpp).

 

// Edit

Czyli wartością w polu value3 nie kontrolujemy współczynnika pomyślnego przeczytania KU. :)

Opublikowano

Bardzo Dziękuję za wskazówkę, ale póki co nie pracuję na source, tylko starym poczciwym game 2089M :)

Ale jest to samo. Możesz pracować na game 2089, ale warto mieć przy sobie czysty kod, aby szybciej sprawdzić swoja teorię. :D

Ps. Jak cos to char_item char_skill do podglądu. ;)

Opublikowano

A to peszek, wygląda na to, że ten współczynnik jest wbity w game na stałe...

 

if (bProb != 0)
    {
        // SKILL_BOOK_BONUS
        if (FindAffect(AFFECT_SKILL_BOOK_BONUS))
        {
            bProb += bProb / 2;
            RemoveAffect(AFFECT_SKILL_BOOK_BONUS);
        }
        // END_OF_SKILL_BOOK_BONUS

        sys_log(0, "LearnSkillByBook Pct %u prob %d", dwSkillVnum, bProb);

        if (number(1, 100) <= bProb)
        {
            if (test_server)
                sys_log(0, "LearnSkillByBook %u SUCC", dwSkillVnum);

            SkillLevelUp(dwSkillVnum, SKILL_UP_BY_BOOK);
        }
        else
        {
            if (test_server)
                sys_log(0, "LearnSkillByBook %u FAIL", dwSkillVnum);
        }
    }

arijh2.jpg

Opublikowano

Hola hola, coś mi tu nie gra, skoro czas trwania rady jest przechowywany w kolumnie value3, to jakim cudem po ustawieniu wartości tam 45sek nie było 100% czytania KU...?

arijh2.jpg

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...