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

[Pytanie] Zabezpieczenie przed bugowaniem kamienia duchowego.


Rekomendowane odpowiedzi

Opublikowano

Witam. Byłby ktoś tak miły i napisał "zielonemu" co trzeba by dopisać do questa aby zabezpieczyć sie przed bugowaniem kamienia duchowego? W spojlerze dodam dla ułatwienia cały quest. Będe bardzo wdzięczny jakby ktoś mi podał te pare linijek, odwdzięcze się oczywiście lajkami ;) Pozdrawiam.

 

 

 

quest training_grandmaster_skill begin

state start begin

when 50513.use begin

say_title("Zaawansowane Szkolenie Umiejętności")

 

 

if pc.get_skill_group() == 0 then

say_title("Zaawansowane Szkolenie Umiejętności")

say("Nie wybrałeś jeszcze drogi duchowej."..pc.get_skill_group())

return

end

 

if get_time() < pc.getqf("next_time") then -- and not is_test_server() then

if pc.is_skill_book_no_delay() then

say("Trening spowoduje usunięcie efektu")

say("Zwoju Egzorcyzmu.")

wait()

say_title("Zaawansowane Szkolenie Umiejętności")

else

say("Musisz użyć Zwoju Egzorcyzmu zanim ponownie")

say("rozpoczniesz trening przed upływem 24 godzin.")

return

end

end

 

local result = training_grandmaster_skill.BuildGrandMasterSkillList(pc.get_job(), pc.get_skill_group())

 

local vnum_list = result[1]

local name_list = result[2]

 

if table.getn(vnum_list) == 0 then

say("Nie możesz trenować żadnej umiejętności.")

return

end

 

say("Proszę wybrać umiejętność, którą chcesz trenować.")

say("")

 

local menu_list = {}

table.foreach(name_list, function(i, name) table.insert(menu_list, name) end)

table.insert(menu_list, "Anuluj")

 

local s=select_table(menu_list)

if table.getn(menu_list) == s then

return

end

 

local skill_name=name_list

local skill_vnum=vnum_list

local skill_level = pc.get_skill_level(skill_vnum)

local cur_alignment = pc.get_real_alignment()

local need_alignment = 1000+500*(skill_level-30)

 

test_chat("˛{?b?˝´c­Č: "..cur_alignment)

test_chat("?Ý­n?˝´c­Č: "..need_alignment)

 

local title=string.format("Trening %s Wielki Mistrz", skill_name)

 

say_title(title)

say("Jeśli będziesz używać swoich punktów Rangi")

say("podczas treningu Umiejętności, może się zdarzyć,")

say("że twoja Ranga stanie się negatywna.")

 

if cur_alignment<-19000+need_alignment then

say_reward("Nie masz wystarczającej ilości punktów Rangi.")

return

end

 

if cur_alignment<0 then

say_reward(string.format("Wymagane punkty Rangi: %d -> %d", need_alignment, need_alignment*2))

say_reward("Jeśli trening zakończy się powodzeniem,")

say_reward("zużyjesz 2 razy więcej punktów Rangi.")

need_alignment=need_alignment*2

elseif cur_alignment<need_alignment then

say_reward(string.format("Wymagane punkty Rangi: %d", need_alignment))

say_reward("Jeśli będziesz teraz trenować, twoja ranga")

say_reward("stanie się negatywna.")

else

say_reward(string.format("Wymagane punkty Rangi: %d", need_alignment))

end

say("")

 

local s=select("Dalej", "Anuluj")

if s==2 then

return

end

 

 

if cur_alignment>=0 and cur_alignment<need_alignment then

say_title(title)

say_reward("Kontynuuj")

say("Jeśli będziesz kontynuował trening umiejętności,")

say("możliwe jest, że twoje punkty Rangi przyjmą ")

say("wartość ujemną i będziesz miał negatywną Rangę.")

say("Jeśli chcesz kontynuować, wpisz poniżej słowo")

say('trenuj')

say_reward("trenuj")

say("Jeżeli nie chcesz już trenować, wciśnij 'ENTER'.")

local s=input()

if s!="trenuj" then

return

end

end

 

if get_time() < pc.getqf("next_time") then -- and not is_test_server() then

if pc.is_skill_book_no_delay() then

pc.remove_skill_book_no_delay()

else

say("[°ŞŻĹ?ĄŻĹ]§ŢŻŕ­×˝mżů?~: Ąđ?§¤¤")

return

end

end

 

pc.setqf("next_time", get_time()+time_hour_to_sec(number(8, 12)))

 

if need_alignment>0 then

if pc.learn_grand_master_skill(skill_vnum) then

pc.change_alignment(-need_alignment)

 

 

say_title(title)

if 40 == pc.get_skill_level(skill_vnum) then

say_reward("Powodzenie!")

say("Gratulacje! Udało się!")

say(string.format("%s jest teraz na poziomie Wielki Mistrz.", skill_name))

say("To oznacza, że osiągnąłeś poziom Perfekcyjny tej")

say("umiejętności. Dalsze jej szkolenie jest")

say("niemożliwe.")

else

say_reward("Powodzenie!")

say("Gratulacje! Udało się!")

say(string.format("%s jest teraz na poziomie Wielki Mistrz.", skill_name))

end

say_reward("Pomyślnie podnisłeś poziom!")

say_reward(string.format("Zużyłeś %d punktów Rangi.", need_alignment))

say("")

else

say_title(title)

say_reward("Niepowodzenie!")

say("Nie udało się ulepszyć umiejętności.")

say_reward("Straciłeś trochę punktów Rangi.")

say("")

pc.change_alignment(-number(need_alignment/3, need_alignment/2))

end

end

 

item.remove()

end

function BuildGrandMasterSkillList(job, group)

GRAND_MASTER_SKILL_LEVEL = 30

PERFECT_MASTER_SKILL_LEVEL = 40

 

local skill_list = special.active_skill_list[job+1][group]

local ret_vnum_list = {}

local ret_name_list = {}

 

-- test_chat(string.format("job=%d, group=%d", job, group))

 

table.foreach(skill_list,

function(i, skill_vnum)

local skill_level = pc.get_skill_level(skill_vnum)

 

-- test_chat(string.format("[%d]=%d", skill_vnum, skill_level))

if skill_level >= GRAND_MASTER_SKILL_LEVEL and skill_level < PERFECT_MASTER_SKILL_LEVEL then

 

table.insert(ret_vnum_list, skill_vnum)

local name=locale.GM_SKILL_NAME_DICT[skill_vnum]

if name == nil then name=skill_vnum end

table.insert(ret_name_list, name)

end

end)

return {ret_vnum_list, ret_name_list}

 

 

--return {ret_vnum_list, ret_name_list}

end

end

end

 

 

 

Opublikowano

 

Filmik przedstawia bug o który mi chodzi ;) Na mój głupi łeb trzeba by napisać jakąś pętle która sprawdzi czy nadal mamy kamień w EQ już po kliknięciu na niego, ale to tylko moje dziwne przypuszczenia dlatego potrzebuje rady kogoś kto sie na tym zna.

Opublikowano

Tak na szybko zedytowałem, nie wiem czy dobrze, łap:

quest training_grandmaster_skill begin
state start begin
when 50513.use begin
say_title("Zaawansowane Szkolenie Umiejętności")

if pc.get_skill_group() == 0 then
say_title("Zaawansowane Szkolenie Umiejętności")
say("Nie wybrałeś jeszcze drogi duchowej."..pc.get_skill_group())
return
end
if get_time() < pc.getqf("next_time") then -- and not is_test_server() then
if pc.is_skill_book_no_delay() then
say("Trening spowoduje usunięcie efektu")
say("Zwoju Egzorcyzmu.")
wait()
say_title("Zaawansowane Szkolenie Umiejętności")
else
say("Musisz użyć Zwoju Egzorcyzmu zanim ponownie")
say("rozpoczniesz trening przed upływem 24 godzin.")
return
end
end
local result = training_grandmaster_skill.BuildGrandMasterSkillList(pc.get_job(), pc.get_skill_group())
local vnum_list = result[1]
local name_list = result[2]
if table.getn(vnum_list) == 0 then
say("Nie możesz trenować żadnej umiejętności.")
return
end
say("Proszę wybrać umiejętność, którą chcesz trenować.")
say("")
local menu_list = {}
table.foreach(name_list, function(i, name) table.insert(menu_list, name) end)
table.insert(menu_list, "Anuluj")
local s=select_table(menu_list)
if table.getn(menu_list) == s then
return
end
local skill_name=name_list[s]
local skill_vnum=vnum_list[s]
local skill_level = pc.get_skill_level(skill_vnum)
local cur_alignment = pc.get_real_alignment()
local need_alignment = 1000+500*(skill_level-30)
test_chat("˛{?b?˝´c­Č: "..cur_alignment)
test_chat("?Ý­n?˝´c­Č: "..need_alignment)
local title=string.format("Trening %s Wielki Mistrz", skill_name)
say_title(title)
say("Jeśli będziesz używać swoich punktów Rangi")
say("podczas treningu Umiejętności, może się zdarzyć,")
say("że twoja Ranga stanie się negatywna.")
if cur_alignment<-19000+need_alignment then
say_reward("Nie masz wystarczającej ilości punktów Rangi.")
return
end
if cur_alignment<0 then
say_reward(string.format("Wymagane punkty Rangi: %d -> %d", need_alignment, need_alignment*2))
say_reward("Jeśli trening zakończy się powodzeniem,")
say_reward("zużyjesz 2 razy więcej punktów Rangi.")
need_alignment=need_alignment*2
elseif cur_alignment<need_alignment then
say_reward(string.format("Wymagane punkty Rangi: %d", need_alignment))
say_reward("Jeśli będziesz teraz trenować, twoja ranga")
say_reward("stanie się negatywna.")
else
say_reward(string.format("Wymagane punkty Rangi: %d", need_alignment))
end
say("")
local s=select("Dalej", "Anuluj")
if s==2 then
return
end

if cur_alignment>=0 and cur_alignment<need_alignment then
say_title(title)
say_reward("Kontynuuj")
say("Jeśli będziesz kontynuował trening umiejętności,")
say("możliwe jest, że twoje punkty Rangi przyjmą ")
say("wartość ujemną i będziesz miał negatywną Rangę.")
say("Jeśli chcesz kontynuować, wpisz poniżej słowo")
say('trenuj')
say_reward("trenuj")
say("Jeżeli nie chcesz już trenować, wciśnij 'ENTER'.")
local s=input()
if s!="trenuj" then
return
end
end
if get_time() < pc.getqf("next_time") then -- and not is_test_server() then
if pc.is_skill_book_no_delay() then
pc.remove_skill_book_no_delay()
else
say("[°ŞŻĹ?ĄŻĹ]§ŢŻŕ­×˝mżů?~: Ąđ?§¤¤")
return
end
end
pc.setqf("next_time", get_time()+time_hour_to_sec(number(8, 12)))
if pc.count_item(50513) > 0 then
if need_alignment>0 then
if pc.learn_grand_master_skill(skill_vnum) then
pc.change_alignment(-need_alignment)

say_title(title)
if 40 == pc.get_skill_level(skill_vnum) then
say_reward("Powodzenie!")
say("Gratulacje! Udało się!")
say(string.format("%s jest teraz na poziomie Wielki Mistrz.", skill_name))
say("To oznacza, że osiągnąłeś poziom Perfekcyjny tej")
say("umiejętności. Dalsze jej szkolenie jest")
say("niemożliwe.")
else
say_reward("Powodzenie!")
say("Gratulacje! Udało się!")
say(string.format("%s jest teraz na poziomie Wielki Mistrz.", skill_name))
end
say_reward("Pomyślnie podnisłeś poziom!")
say_reward(string.format("Zużyłeś %d punktów Rangi.", need_alignment))
say("")
else
say_title(title)
say_reward("Niepowodzenie!")
say("Nie udało się ulepszyć umiejętności.")
say_reward("Straciłeś trochę punktów Rangi.")
say("")
pc.change_alignment(-number(need_alignment/3, need_alignment/2))
end
end
else
say("Chciałeś mnie oszukać?")
say("Nie posiadasz żadnego kamyka duchowego..")
say_reward("Pozdrawiam kwiatmix =)")
return
end
item.remove()
end
function BuildGrandMasterSkillList(job, group)
GRAND_MASTER_SKILL_LEVEL = 30
PERFECT_MASTER_SKILL_LEVEL = 40
local skill_list = special.active_skill_list[job+1][group]
local ret_vnum_list = {}
local ret_name_list = {}
-- test_chat(string.format("job=%d, group=%d", job, group))
table.foreach(skill_list,
function(i, skill_vnum)
local skill_level = pc.get_skill_level(skill_vnum)
-- test_chat(string.format("[%d]=%d", skill_vnum, skill_level))
if skill_level >= GRAND_MASTER_SKILL_LEVEL and skill_level < PERFECT_MASTER_SKILL_LEVEL then
table.insert(ret_vnum_list, skill_vnum)
local name=locale.GM_SKILL_NAME_DICT[skill_vnum]
if name == nil then name=skill_vnum end
table.insert(ret_name_list, name)
end
end)
return {ret_vnum_list, ret_name_list}

--return {ret_vnum_list, ret_name_list}
end
end
end

Opublikowano

kwiatmix wyczytałem z tego że jak gość da na handel kamyk, zrobi quest, później po queście kamyk nadal jest na handlu i jak potwierdzi to odda go nawet jak nie będzie w eq... Chyba, nie jestem pewien jbc ;>

Opublikowano

Kamyk nie zostaje na handlu tylko jest przez handel przekazywany przez niego na drugą postać. Kwiatmix dopisał warunek że jeśli nie ma kamyka w EQ (bo jest już przekazany przez handel) to quest nie pójdzie dalej. Przynajmniej ja to tak rozumiem.

Opublikowano

Dopiero jak zrobisz quest będzie można oddać kamyk, który przed włączeniem questa dałeś na handel... Chyba że jest funkcja która sprawdza czy item jest na handlu ;)

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...