Staram się nie pisać takich tematów póki sam nie spróbuje znaleźć rozwiązania. Ale tutaj nie mogę znaleźć.
Pierwszy błąd ( skille) :
Spoiler
Pierwszy problem to błąd z skillami na p.
Dodałem gui do wyboru klas postaci, nie jest ono doskonałe, w przyszłości pewnie się zmieni, aktualnie wygląda tak:
Quest jaki wprowadziłem wygląda tak:
Spoiler
quest skillchoose begin
state start begin
when login or levelup with pc.get_level() >= 5 and pc.get_skill_group() == 0 begin
pc.open_skillchoose()
end
when login or levelup with pc.level >= 5 begin
local job = pc.get_job()
local group = pc.get_skill_group()
if job == 0 then -- Wojownik
if group == 1 then -- Body
pc.set_skill_level(1, 40)
pc.set_skill_level(2, 40)
pc.set_skill_level(3, 40)
pc.set_skill_level(4, 40)
pc.set_skill_level(5, 40)
pc.set_skill_level(6, 40)
elseif group == 2 then -- Mental
pc.set_skill_level(16, 40)
pc.set_skill_level(17, 40)
pc.set_skill_level(18, 40)
pc.set_skill_level(19, 40)
pc.set_skill_level(20, 40)
pc.set_skill_level(21, 40)
end
elseif job == 1 then -- Ninja
if group == 1 then -- Dagger
pc.set_skill_level(31, 40)
pc.set_skill_level(32, 40)
pc.set_skill_level(33, 40)
pc.set_skill_level(34, 40)
pc.set_skill_level(35, 40)
pc.set_skill_level(36, 40)
elseif group == 2 then -- Archer
pc.set_skill_level(46, 40)
pc.set_skill_level(47, 40)
pc.set_skill_level(48, 40)
pc.set_skill_level(49, 40)
pc.set_skill_level(50, 40)
pc.set_skill_level(51, 40)
end
elseif job == 2 then -- Szaman
if group == 1 then -- Smok
pc.set_skill_level(91, 40)
pc.set_skill_level(92, 40)
pc.set_skill_level(93, 40)
pc.set_skill_level(94, 40)
pc.set_skill_level(95, 40)
pc.set_skill_level(96, 40)
elseif group == 2 then -- Healer
pc.set_skill_level(106, 40)
pc.set_skill_level(107, 40)
pc.set_skill_level(108, 40)
pc.set_skill_level(109, 40)
pc.set_skill_level(110, 40)
pc.set_skill_level(111, 40)
end
elseif job == 3 then -- Sura
if group == 1 then -- BM
pc.set_skill_level(76, 40)
pc.set_skill_level(77, 40)
pc.set_skill_level(78, 40)
pc.set_skill_level(79, 40)
pc.set_skill_level(80, 40)
pc.set_skill_level(81, 40)
elseif group == 2 then -- WP
pc.set_skill_level(61, 40)
pc.set_skill_level(62, 40)
pc.set_skill_level(63, 40)
pc.set_skill_level(64, 40)
pc.set_skill_level(65, 40)
pc.set_skill_level(66, 40)
end
end
end
end
end
Doszliśmy do etapu gdzie pojawia się problem.
Po wyborze profesji skille odpowiednie dla danej profesji poprawnie przypisują się do postaci.
Lecz w momencie, gdy ta postać to sura albo szaman nadaje nam klasę postaci, lecz nie rozwiniętą do poziomu P.
W przypadku ninji oraz wojownika wszystko działa bez zastrzeżeń (skille nadają się na poziomie P)
Szukałem w kodzie z nadzieją, że znajdę jakieś błąd, znalazłem funkcję odpowiedzialną za nadawanie skilli. Wygląda ona tak:
W tym momencie podesłałem funkcję której nie dotykałem w żadnym stopniu. Po wprowadzeniu przezemnie zmian wystąpiła poprawa, ale nadal nie jest to efekt idealny.
Przed:
Po mojej zmianie:
Gdzie widocznie widać że damage zadawany różni się widocznie od efektu wyświetlanego.
Cześć.
Staram się nie pisać takich tematów póki sam nie spróbuje znaleźć rozwiązania. Ale tutaj nie mogę znaleźć.
Pierwszy błąd ( skille) :
Pierwszy problem to błąd z skillami na p.
Dodałem gui do wyboru klas postaci, nie jest ono doskonałe, w przyszłości pewnie się zmieni, aktualnie wygląda tak:
Quest jaki wprowadziłem wygląda tak:
quest skillchoose begin
state start begin
when login or levelup with pc.get_level() >= 5 and pc.get_skill_group() == 0 begin
pc.open_skillchoose()
end
when login or levelup with pc.level >= 5 begin
local job = pc.get_job()
local group = pc.get_skill_group()
if job == 0 then -- Wojownik
if group == 1 then -- Body
pc.set_skill_level(1, 40)
pc.set_skill_level(2, 40)
pc.set_skill_level(3, 40)
pc.set_skill_level(4, 40)
pc.set_skill_level(5, 40)
pc.set_skill_level(6, 40)
elseif group == 2 then -- Mental
pc.set_skill_level(16, 40)
pc.set_skill_level(17, 40)
pc.set_skill_level(18, 40)
pc.set_skill_level(19, 40)
pc.set_skill_level(20, 40)
pc.set_skill_level(21, 40)
end
elseif job == 1 then -- Ninja
if group == 1 then -- Dagger
pc.set_skill_level(31, 40)
pc.set_skill_level(32, 40)
pc.set_skill_level(33, 40)
pc.set_skill_level(34, 40)
pc.set_skill_level(35, 40)
pc.set_skill_level(36, 40)
elseif group == 2 then -- Archer
pc.set_skill_level(46, 40)
pc.set_skill_level(47, 40)
pc.set_skill_level(48, 40)
pc.set_skill_level(49, 40)
pc.set_skill_level(50, 40)
pc.set_skill_level(51, 40)
end
elseif job == 2 then -- Szaman
if group == 1 then -- Smok
pc.set_skill_level(91, 40)
pc.set_skill_level(92, 40)
pc.set_skill_level(93, 40)
pc.set_skill_level(94, 40)
pc.set_skill_level(95, 40)
pc.set_skill_level(96, 40)
elseif group == 2 then -- Healer
pc.set_skill_level(106, 40)
pc.set_skill_level(107, 40)
pc.set_skill_level(108, 40)
pc.set_skill_level(109, 40)
pc.set_skill_level(110, 40)
pc.set_skill_level(111, 40)
end
elseif job == 3 then -- Sura
if group == 1 then -- BM
pc.set_skill_level(76, 40)
pc.set_skill_level(77, 40)
pc.set_skill_level(78, 40)
pc.set_skill_level(79, 40)
pc.set_skill_level(80, 40)
pc.set_skill_level(81, 40)
elseif group == 2 then -- WP
pc.set_skill_level(61, 40)
pc.set_skill_level(62, 40)
pc.set_skill_level(63, 40)
pc.set_skill_level(64, 40)
pc.set_skill_level(65, 40)
pc.set_skill_level(66, 40)
end
end
end
end
end
Doszliśmy do etapu gdzie pojawia się problem.
Po wyborze profesji skille odpowiednie dla danej profesji poprawnie przypisują się do postaci.
Lecz w momencie, gdy ta postać to sura albo szaman nadaje nam klasę postaci, lecz nie rozwiniętą do poziomu P.
W przypadku ninji oraz wojownika wszystko działa bez zastrzeżeń (skille nadają się na poziomie P)
Szukałem w kodzie z nadzieją, że znajdę jakieś błąd, znalazłem funkcję odpowiedzialną za nadawanie skilli. Wygląda ona tak:
int pc_set_skill_level(lua_State* L)
{
DWORD dwVnum = (DWORD)lua_tonumber(L, 1);
BYTE byLev = (BYTE)lua_tonumber(L, 2);
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
ch->SetSkillLevel(dwVnum, byLev);
ch->SkillLevelPacket();
return 0;
}
Ale nie widze w niej problemu. Ktoś jakieś pomysły?
Drugi błąd, brak efektu dmg:
Z drugim błędem spotkałem się dzisiaj. Problem wynika z braku efektu damage zadawanemu potworowi/metinowi/bossowi.
Z tego co @Sevence podpowiedział problem jest powiązany z tym tematem:
W tym przypadku znalazłem w kodzie binki funkcje w InstanceBaseEffect odpowiedzialną za efekty ataków.
Wygląda ona tak:
W tym momencie podesłałem funkcję której nie dotykałem w żadnym stopniu. Po wprowadzeniu przezemnie zmian wystąpiła poprawa, ale nadal nie jest to efekt idealny.
Przed:
Po mojej zmianie:
Gdzie widocznie widać że damage zadawany różni się widocznie od efektu wyświetlanego.
Edytowane przez atk