Fliegex3 29 Posted May 28, 2014 Share Posted May 28, 2014 Can someone change this Quest, so that the soul Stone has a 100% chance to be succesful? quest training_grandmaster_skill begin state start begin when 50513.use begin say_title("Seelenstein") local seelicount = pc.count_item(50513) if pc.get_skill_group() == 0 then say("Du besitzt keine Fertigkeiten, die") say("gegroßmeistert werden können.") return 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("Du besitzt keine Fertigkeiten, die") say("gegroßmeistert werden können.") return end say("Welche Fertigkeit möchtest du trainieren?") say("") local menu_list = {} table.foreach(name_list, function(i, name) table.insert(menu_list, name) end) table.insert(menu_list, "Abbrechen") 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("Momentaner Rang: "..cur_alignment) test_chat("Benötigter Rang: "..need_alignment) local title=string.format("%s auf G%d trainieren", skill_name, skill_level-30+1) if skill_level-30+1==10 then title=string.format("%s auf P trainieren", skill_name) end pc.remove_item("50513", 1) say_title(title) say("Durch das Lesen von Seelensteinen müssen") say("dir als Zeichen des Opfers Rangpunkte") say("abgezogen werden.") say("") if cur_alignment<-19000+need_alignment then say_reward("Du hast zu wenig Rangpunkte!") return end if cur_alignment<0 then say_reward(string.format("Benötigter Rang: %d -> %d", need_alignment, need_alignment*2)) say_reward("Beim erfolgreichen Einlesen des") say_reward("Seelensteines wird dir doppelt") say_reward("so viel Rangpunkte abgezogen.") need_alignment=need_alignment*2 elseif cur_alignment<need_alignment then say_reward(string.format("Benötigter Rang: %d", need_alignment)) say_reward("Beim erfolgreichen Einlesen des") say_reward("Seelensteines wird dir doppelt") say_reward("so viel Rangpunkte abgezogen.") else say_reward(string.format("Benötigter Rang: %d", need_alignment)) end say("") local s=select("Lesen", "Abbrechen") if s==2 then return end if cur_alignment>=0 and cur_alignment<need_alignment then say_title(string.format("%s bestätigen", title)) say("Das Lesen eines Seelensteines kostet Rang,") say("wenn du diesen Seelenstein ließt,") say("kommst du in den negativen Bereich.") say("Bitte Bestätige das du diesen Seelenstein") say("wirklich lesen möchtest! Das tust du indem") say("du in den Textfeld das Wort") say_reward("trainieren") say("eingibst.") local s=input() if s!="trainieren" then return end if pc.is_skill_book_no_delay() then pc.remove_skill_book_no_delay() end end if need_alignment>0 and pc.count_item(50513)>0 then if pc.learn_grand_master_skill(skill_vnum) then pc.change_alignment(-need_alignment) say_title(string.format("%s erfolgreich", title)) if 40 == pc.get_skill_level(skill_vnum) then say(string.format("%s ist nun perfeckt Gemeistert.", skill_name)) say("Herzlichen Glückwunsch!") notice_all(string.format(""..pc.get_name().." hat den Skill ~ %s ~ auf Perfekt gelesen.", skill_name)) else say(string.format("Das Großmeistern war erfolgreich!", skill_name, skill_level-30+1+1)) end say("") say_reward("Erfolgreich!") say_reward(string.format("Es wurden %d Rangpunkte verbraucht", need_alignment)) say("") else say_title(string.format("%s fehlgeschlagen", title)) say("Das Großmeistern ist fehlgeschlagen.") say("") local rang = number(need_alignment/3, need_alignment/2) say_reward("Fehlgeschlagen! Es wurden "..rang.." Rangpunkte verbraucht") say("") pc.change_alignment(-rang) end end 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 = {} table.foreach(skill_list, function(i, skill_vnum) local skill_level = pc.get_skill_level(skill_vnum) 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} end end end Link to comment Share on other sites More sharing options...
Aveline™ 555 Posted May 28, 2014 Share Posted May 28, 2014 quest training_grandmaster_skill begin state start begin when 50513.use begin say_title("Seelenstein") local seelicount = pc.count_item(50513) if pc.get_skill_group() == 0 then say("Du besitzt keine Fertigkeiten, die") say("gegroßmeistert werden können.") return 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("Du besitzt keine Fertigkeiten, die") say("gegroßmeistert werden können.") return end say("Welche Fertigkeit möchtest du trainieren?") say("") local menu_list = {} table.foreach(name_list, function(i, name) table.insert(menu_list, name) end) table.insert(menu_list, "Abbrechen") 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("Momentaner Rang: "..cur_alignment) test_chat("Benötigter Rang: "..need_alignment) local title=string.format("%s auf G%d trainieren", skill_name, skill_level-30+1) if skill_level-30+1==10 then title=string.format("%s auf P trainieren", skill_name) end pc.remove_item("50513", 1) say_title(title) say("Durch das Lesen von Seelensteinen müssen") say("dir als Zeichen des Opfers Rangpunkte") say("abgezogen werden.") say("") if cur_alignment<-19000+need_alignment then say_reward("Du hast zu wenig Rangpunkte!") return end if cur_alignment<0 then say_reward(string.format("Benötigter Rang: %d -> %d", need_alignment, need_alignment*2)) say_reward("Beim erfolgreichen Einlesen des") say_reward("Seelensteines wird dir doppelt") say_reward("so viel Rangpunkte abgezogen.") need_alignment=need_alignment*2 elseif cur_alignment<need_alignment then say_reward(string.format("Benötigter Rang: %d", need_alignment)) say_reward("Beim erfolgreichen Einlesen des") say_reward("Seelensteines wird dir doppelt") say_reward("so viel Rangpunkte abgezogen.") else say_reward(string.format("Benötigter Rang: %d", need_alignment)) end say("") local s=select("Lesen", "Abbrechen") if s==2 then return end if cur_alignment>=0 and cur_alignment<need_alignment then say_title(string.format("%s bestätigen", title)) say("Das Lesen eines Seelensteines kostet Rang,") say("wenn du diesen Seelenstein ließt,") say("kommst du in den negativen Bereich.") say("Bitte Bestätige das du diesen Seelenstein") say("wirklich lesen möchtest! Das tust du indem") say("du in den Textfeld das Wort") say_reward("trainieren") say("eingibst.") local s=input() if s!="trainieren" then return end if pc.is_skill_book_no_delay() then pc.remove_skill_book_no_delay() end end if need_alignment>0 and pc.count_item(50513)>0 then -- if pc.learn_grand_master_skill(skill_vnum) then pc.change_alignment(-need_alignment) say_title(string.format("%s erfolgreich", title)) if 40 == pc.get_skill_level(skill_vnum) then say(string.format("%s ist nun perfeckt Gemeistert.", skill_name)) say("Herzlichen Glückwunsch!") notice_all(string.format(""..pc.get_name().." hat den Skill ~ %s ~ auf Perfekt gelesen.", skill_name)) else say(string.format("Das Großmeistern war erfolgreich!", skill_name, skill_level-30+1+1)) end say("") say_reward("Erfolgreich!") say_reward(string.format("Es wurden %d Rangpunkte verbraucht", need_alignment)) say("") pc.set_skill_level(skill_vnum,pc.get_skill_level(skill_vnum)+1) -- else -- say_title(string.format("%s fehlgeschlagen", title)) -- say("Das Großmeistern ist fehlgeschlagen.") -- say("") -- local rang = number(need_alignment/3, need_alignment/2) -- say_reward("Fehlgeschlagen! Es wurden "..rang.." Rangpunkte verbraucht") -- say("") -- pc.change_alignment(-rang) end 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 = {} table.foreach(skill_list, function(i, skill_vnum) local skill_level = pc.get_skill_level(skill_vnum) 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} end end end I will add pc.set_skill_level() for upgrade your skill level Best Regards Aveline 1 Plain logic saves lives. Link to comment Share on other sites More sharing options...
Fliegex3 29 Posted May 28, 2014 Author Share Posted May 28, 2014 this dont work :/ Video: https://www.youtube.com/watch?v=yenIbF7O6RE&feature=youtu.be Link to comment Share on other sites More sharing options...
Premium Shogun 4608 Posted May 28, 2014 Premium Share Posted May 28, 2014 this dont work :/ Please be more explicit, "this dont work" doesn't help anyone figuring out what's wrong. Link to comment Share on other sites More sharing options...
Fliegex3 29 Posted May 28, 2014 Author Share Posted May 28, 2014 Yes was uploading a Video Video https://www.youtube.com/watch?v=yenIbF7O6RE&feature=youtu.be Link to comment Share on other sites More sharing options...
Night 367 Posted May 28, 2014 Share Posted May 28, 2014 can someone post this quest without (messages // with no talk (player lose grade without warning but when its -20k it say you grade is very low) Link to comment Share on other sites More sharing options...
Fliegex3 29 Posted May 28, 2014 Author Share Posted May 28, 2014 I also want a Quest like this... Link to comment Share on other sites More sharing options...
Former Staff Shisui 493 Posted May 28, 2014 Former Staff Share Posted May 28, 2014 What line i need to change to set % success? Link to comment Share on other sites More sharing options...
Premium Shogun 4608 Posted May 28, 2014 Premium Share Posted May 28, 2014 The success chance is a function in the source... if pc.learn_grand_master_skill(skill_vnum) then Link to comment Share on other sites More sharing options...
Fliegex3 29 Posted May 28, 2014 Author Share Posted May 28, 2014 Can nobody help? :/ Link to comment Share on other sites More sharing options...
Developer PACI 930 Posted May 28, 2014 Developer Share Posted May 28, 2014 Shogun already told you what to do.. just comment that function on your quest. if need_alignment>0 and pc.count_item(50513)>0 then -- if pc.learn_grand_master_skill(skill_vnum) then pc.change_alignment(-need_alignment) say_title(string.format("%s erfolgreich", title)) if 40 == pc.get_skill_level(skill_vnum) then say(string.format("%s ist nun perfeckt Gemeistert.", skill_name)) say("Herzlichen Glückwunsch!") notice_all(string.format(""..pc.get_name().." hat den Skill ~ %s ~ auf Perfekt gelesen.", skill_name)) else say(string.format("Das Großmeistern war erfolgreich!", skill_name, skill_level-30+1+1)) end say("") say_reward("Erfolgreich!") say_reward(string.format("Es wurden %d Rangpunkte verbraucht", need_alignment)) say("") -- else -- say_title(string.format("%s fehlgeschlagen", title)) -- say("Das Großmeistern ist fehlgeschlagen.") -- say("") -- local rang = number(need_alignment/3, need_alignment/2) -- say_reward("Fehlgeschlagen! Es wurden "..rang.." Rangpunkte verbraucht") -- say("") -- pc.change_alignment(-rang) -- end end end when you return 0 and server doesn't boot: Link to comment Share on other sites More sharing options...
Fliegex3 29 Posted May 28, 2014 Author Share Posted May 28, 2014 I'm not a quester, i dont know what you want from me xD Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now