farmmedal 1 Posted August 28, 2022 Share Posted August 28, 2022 (edited) Good day to you all! I have a simple question. My quests work flawlessly, yet I have a little bit of a problem. If I do level up by an exp reward from a previous quest (pc.give_exp2), then the other quests that has the criteria when login or levelup with pc.get_level() >= 2 begin does not load. (Of course, it appears after a relog). I also tried this one: set_quest_state("samplequest", "start"); but also did not work. If I use: set_quest_state("samplequest", "state2"); It loads of course, without taking a look at the criteria (login or levelup) - so the quest starts as soon as this one ends. Anyone got the idea, why it does not work for me? Thanks for your help! Cheers Edited August 28, 2022 by farmmedal Link to comment Share on other sites More sharing options...
Premium WeedHex 635 Posted August 28, 2022 Premium Share Posted August 28, 2022 when login or levelup with >= 2 begin It doesn't make sense. You should explain better. Link to comment Share on other sites More sharing options...
farmmedal 1 Posted August 28, 2022 Author Share Posted August 28, 2022 (edited) Yeah sorry, forgot to write the whole sentence. So let me explain it a little bit better: The first quest's ending (lv1) goes like: state ending begin when letter begin send_letter("QuestLv1") end when button or info begin say_title("QuestLv1") say("Blah") end when 9001.chat."QuestLv1" begin say_title("Blah") set_quest_state("QuestLv2", "start"); pc.give_exp2(10000) pc.change_money(1200) set_state(subquestifinish) end end state subquestifinish begin end The second quest starts like: quest QuestLv2 begin state start begin when login or levelup with pc.get_level() >= 2 begin set_state(questlv2start) end end state questlv2start begin when letter begin send_letter("blah") end when button or info begin say_title("blah") end end end My problem: If I level up by gaining the exp from the first quest, then QuestLv2 will not become immediately active, only after a relog. I really hope you understand, what I want to say. Edited August 28, 2022 by farmmedal typo Link to comment Share on other sites More sharing options...
Premium WeedHex 635 Posted August 28, 2022 Premium Share Posted August 28, 2022 (edited) I think its because of C++. Using the questlua_pc.cpp function GiveExp() you won't trigger this: quest::CQuestManager::instance().LevelUp(GetPlayerID()); So when login or levelup Only login will works. Edited August 29, 2022 by WeedHex 1 1 Link to comment Share on other sites More sharing options...
farmmedal 1 Posted August 28, 2022 Author Share Posted August 28, 2022 Thank you for the answer! Is there any other method to make it work? Link to comment Share on other sites More sharing options...
caanmasu 312 Posted September 1, 2022 Share Posted September 1, 2022 (edited) Hi friend I'm quest/lua expert (don't worry, be happy :P) When end a quest and start other, should to include "enter" in "when", so: when enter or login begin This means that, when pc start in that state, execute only one time this content. Example: when enter begin chat("This sentence appears one time in this state when enter") end Instead when login begin chat("This sentence appears each login") end You have a bad structure when put set_quest_state("quest_name", "start") because ALL quests start with "state start" xD Then you should put another name state. Edited September 1, 2022 by caanmasu 1 Link to comment Share on other sites More sharing options...
farmmedal 1 Posted September 2, 2022 Author Share Posted September 2, 2022 Hey! Thank your for the answer! Will try it once I arrive home Link to comment Share on other sites More sharing options...
farmmedal 1 Posted September 3, 2022 Author Share Posted September 3, 2022 Dear caanmasu It works flawlessly! Thank you very much for your help! 1 Link to comment Share on other sites More sharing options...
caanmasu 312 Posted September 4, 2022 Share Posted September 4, 2022 Any questions you have, look for me in Discord: Camilo#0869 1 Link to comment Share on other sites More sharing options...
farmmedal 1 Posted September 4, 2022 Author Share Posted September 4, 2022 (edited) Thanks! Added you on discord too ^^ I would like to ask you something, because I just cannot make it work: I do not like the original skill_group quest system - you know, choosing your path of skills. I would like to make it something like - "You can learn the body path with this npc, and mental path with that npc" - and these npcs only help you learn one specific path. Tried pc.set_skill_group(), but without a success. (I earned skill points, but got no paths - also, I do not want skill points) Tried it like this: quest skillgrouptest begin state start begin when 4092.chat."SkillTest" begin say("lmao") wait() pc.clear_skill() pc.set_skill_group(1) setskin(NOWINDOW) end end end Tried also like this: quest skillgrouptest begin state start begin when 4092.chat."SkillTest" begin say("lmao") wait() pc.clear_skill() pc.set_skill_group(0,1) setskin(NOWINDOW) end end end Could you please help me with this matter? Thanks! Edited September 4, 2022 by farmmedal Link to comment Share on other sites More sharing options...
caanmasu 312 Posted September 4, 2022 Share Posted September 4, 2022 Hi pc.set_skill_group(1) This sentence is right. Then try left your group skill and select one new, so: pc.set_skill_group(0) pc.set_skill_group(1) Link to comment Share on other sites More sharing options...
farmmedal 1 Posted September 4, 2022 Author Share Posted September 4, 2022 Hey! Thanks for the answer! Tried it already, does not work Link to comment Share on other sites More sharing options...
caanmasu 312 Posted September 4, 2022 Share Posted September 4, 2022 Official quest skill_group works? It is weird that do not work pc.set_skill_group(1)... Link to comment Share on other sites More sharing options...
farmmedal 1 Posted September 5, 2022 Author Share Posted September 5, 2022 (edited) Yeah, the "original" works, tried it. Seems weird to me too. The quest looks like this: quest skill_group begin state start begin when login or levelup with pc.level>= 5 and pc.skillgroup ==0 begin set_state(run) end end state run begin when login with pc.get_skill_group()!=0 begin restart_quest() end when letter with pc.get_skill_group()==0 begin send_letter("A kiképzés") local job=pc.get_job() if job==0 then local v=pc_find_skill_teacher_vid(1) if 0!=v then target.vid("teacher1", v, "A kiképzés") end local v=pc_find_skill_teacher_vid(2) if 0!=v then target.vid("teacher2", v, "A kiképzés") end elseif job==1 then local v=pc_find_skill_teacher_vid(1) if 0!=v then target.vid("teacher3", v, "A kiképzés") end local v=pc_find_skill_teacher_vid(2) if 0!=v then target.vid("teacher4", v, "A kiképzés") end elseif job==2 then local v=pc_find_skill_teacher_vid(1) if 0!=v then target.vid("teacher5", v, "A kiképzés") end local v=pc_find_skill_teacher_vid(2) if 0!=v then target.vid("teacher6", v, "A kiképzés") end elseif job==3 then local v=pc_find_skill_teacher_vid(1) if 0!=v then target.vid("teacher7", v, "A kiképzés") end local v=pc_find_skill_teacher_vid(2) if 0!=v then target.vid("teacher8", v, "A kiképzés") end end end when leave begin target.delete("teacher1") target.delete("teacher2") target.delete("teacher3") target.delete("teacher4") target.delete("teacher5") target.delete("teacher6") target.delete("teacher7") target.delete("teacher8") end when button or info begin say_title("A kiképzés") say("Gratulálok!") say("Elérted az 5. szintet. Most már elég képzett") say("vagy, hogy elsajátítsd képességeidet.") say("A faludban várnak az oktatóid, akik megtanítják") say("neked azt a képességet amelyiket választod.") say("Siess a faluba!") say("") say_reward("Akarod, hogy oda teleportáljalak?") local faluport=select("Igen","Nem") if faluport==1 then local empire=pc.get_empire() if empire==1 then pc.warp(473600,952000) elseif empire==2 then pc.warp(64000,162900) elseif empire==3 then pc.warp(964600,268800) end elseif faluports==2 then return end end function join(job, group, title, text, error_msg) local pc_job=pc.get_job() if pc_job!=job then say(error_msg) if pc_job==0 then say_reward("Nem vehetsz részt ezen a kiképzésen!") elseif pc_job==1 then say_reward("Nem vehetsz részt ezen a kiképzésen!") elseif pc_job==2 then say_reward("Nem vehetsz részt ezen a kiképzésen!") elseif pc_job==3 then say_reward("Nem vehetsz részt ezen a kiképzésen!") end say("") else say_title("A kiképzés") if job==0 then say("Üdvözöllek "..pc.get_name().."!") say("Választhatsz Testi küzdelem és Mentális harc között.") say("A testi küzdelem a támadó értékre koncentrál,") say("míg a mentális harc ezzel ellentétben a védelemre.") say("Státusz pontokat 2:1 arányban ERŐ:VIT-re tedd!") say("Szintenként kapsz 3 státusz pontot. Megfelelően") say("oszd el. Ha mindkettő elérte a 90. pontot, akkor") say("az ügyességet fejleszd fel, mert az védelmet ad.") say("Testi küzdelemnél a Kard aurát, Mentánális harcnál") say("az Erős testet fejleszed első képességnek!") say("Ha így fejleszted karaktered, meglásd erős leszel!") elseif job==1 then say("Üdvözöllek "..pc.get_name().."!") say("Választhatsz, Közelharc és Távharc között.") say("A közelharc nagyon veszélyes tud ám lenni,") say("ha óvatlan vagy! De nagyon erős kaszt.") say("A táv harc lényege a távolság! Tarts kellő ") say("távolságot ellenfeleid között..") say("Státusz pontjaid 2:1 arányban ÜGY:VIT-Re tedd!") say("Ha már nem tudsz többet tenni rájuk akkor a VIT-re.") say("Harcosokat alázhatja a Nindzsa, ha jól építed!") say("Játékosok tömkelege választja a Közelharcot.") say("Gyorsan dönts melyiket választod!") elseif job==2 then say("Üdvözöllek "..pc.get_name().."!") say("Választhatsz, Fekete mágia és Mágikus fegyver") say("oktatás között.") say("Képességeik hasonlítanak a harcoséhoz,") say("csak a Fekete mágia képességei mágia alapúak.") say("A Fekete mágia hatalom a védelemet komprenzálja,") say("míg ezzel ellentétben a Mágikus kard a támadó ") say("értéket. Státusz pontokat 2:1 arányban az") say("INT:VIT-re tedd, ha már nem tudsz, akkor erő.") say("A fekete mágia a PvP királya. A mágikus kard") say("PvM-ben verhetetlen! Bölcsen dönt.") elseif job==3 then say("Üdvözöllek "..pc.get_name().."!") say("Választhatsz, Sárkány hatalom és Gyógyítás") say("hatalom között.") say("Képességek mágia alapúak!") say("A sákány hatalom hasznos PvM karakter játékos") say("társaid számára, ugyanis segítheted őket ") say("képességeiddel. A gyógyítás mestere, felkelti") say("az elhasznált életpontjaitokat.") say("Státusz pontjaid 2:1 arányban INT:VIT-re tedd,") say("ha már nem tudsz, akkor erő.") say("Válaszd ki karaktered képességét.") end local s=select("Kiképzés elkezdése", "Talán később döntök...") if 1==s then if pc.get_job()==job and pc.get_skill_group()==0 then set_state("start") pc.set_skill_group(group) pc.clear_skill() char_log(0, "CLEAR_SKILL", "Clear Skill By Skill Teacher") makequestbutton("A képzés befejezve.") return true else test_chat("npc_is_same_job:"..bool_to_str(npc_is_same_job())) test_chat("pc.get_skill_group:"..pc.get_skill_group()) test_chat("pc_job:"..pc.get_job()) end end end return false end -- ??? when teacher1.target.click or skill_group1_1.chat."Testi küzdelem" or skill_group2_1.chat."Testi küzdelem" or skill_group3_1.chat."Testi küzdelem" begin target.delete("teacher1") if skill_group.join(0, 1, "Harcos", "Én a testi küzdelem tanítója vagyok.[ENTER]Megtaníthatlak téged[ENTER]ügyesen bánni kardoddal.[ENTER]szükség lesz az erődre! ", "Sajnálom,[ENTER]de csak harcosokat tanítok.") then say_title("Ön úgy döntött, hogy a testi küzdelmet tanulja meg.") say("Döntöttél. Szintedhez képest 1 ponttal kevesebb") say("képesség pontot kapsz!") say_title("Információ:") if not pc.is_clear_skill_group() then local point = pc.level -1 say("") say_reward("Te "..point.." képességpontot kaptál!") say("") else say("Valami probléma lépett fel!") say("Nem kaptál készségpontokat!") say("") end clear_letter() end end when teacher2.target.click or skill_group1_2.chat."Mentális küzdelem" or skill_group2_2.chat."Mentális küzdelem" or skill_group3_2.chat."Mentális küzdelem" begin target.delete("teacher2") if skill_group.join(0, 2, "Harcos", "Én a mentális küzdelem oktatója vagyok.[ENTER]Megtaníthatlak téged[ENTER]jól kiismerni a védelmi taktikákat[ENTER][ENTER]Szükség van az erős védelemre[ENTER]a harcban,[ENTER]", "Sajnálom,[ENTER]de csak harcosokat tanítok.") then say_title("Ön úgy döntött, hogy a mentális küzdelmet tanulja meg.") say("Döntöttél. Szintedhez képest 1 ponttal kevesebb") say("képesség pontot kapsz!") say_title("Információ:") if not pc.is_clear_skill_group() then local point = pc.level -1 say("") say_reward("Te "..point.." képességpontot kaptál!") say("") else say("Valami probléma lépett fel!") say("Nem kaptál készségpontokat!") say("") end clear_letter() end end -- ??? when teacher3.target.click or skill_group1_3.chat."Közelharc" or skill_group2_3.chat."Közelharc" or skill_group3_3.chat."Közelharc" begin target.delete("teacher3") if skill_group.join(1, 1, "Nindzsa", "Én a közelharc oktatója vagyok[ENTER]Megtaníthatlak a gyors és csendes gyilkolásra.[ENTER][ENTER]Persze mindezt csak akkor,[ENTER]ha nem önző módon használod.[ENTER][ENTER]Ahhoz, hogy elsajátítsd ezt a tudást[ENTER]részt kell venned az oktatásaimon![ENTER][ENTER]", "Sajnálom,[ENTER]de csak nindzsákat tanítok.") then say_title("Ön úgy döntött, hogy a közelharc mesterévé akar válni.") say("Döntöttél. Szintedhez képest 1 ponttal kevesebb") say("képesség pontot kapsz!") say_title("Információ:") if not pc.is_clear_skill_group() then local point = pc.level -1 say("") say_reward("Te "..point.." képességpontot kaptál!") say("") else say("Valami probléma lépett fel!") say("Nem kaptál készségpontokat!") say("") end clear_letter() end end -- ??? when teacher4.target.click or skill_group1_4.chat."Távharc" or skill_group2_4.chat."Távharc" or skill_group3_4.chat."Távharc" begin target.delete("teacher4") if skill_group.join(1, 2, "Nindzsa", "Én vagyok a távharc oktatója[ENTER]Megtaníthatlak, hogyan gyilkolj precízen, pontosan akár 50 méter távolságból![ENTER][ENTER]Fontos a figyelem és az önuralom.[ENTER]Ha ezek nincsenek meg benned[ENTER][ENTER]nincs miről beszéljünk.[ENTER]Harcokban előnyös ez a küzdelem[ENTER], kevés a nindzsa....[ENTER][ENTER]", "Sajnálom,[ENTER] de csak Nindzsákat tanítok.") then say_title("Ön úgy döntött, hogy a távharc mesterévé akar válni.") say("Döntöttél. Szintedhez képest 1 ponttal kevesebb") say("képesség pontot kapsz!") say_title("Információ:") if not pc.is_clear_skill_group() then local point = pc.level -1 say("") say_reward("Te "..point.." képességpontot kaptál!") say("") else say("Valami probléma lépett fel!") say("Nem kaptál készségpontokat!") say("") end clear_letter() end end -- ??? when teacher5.target.click or skill_group1_5.chat."Mágikus fegyver" or skill_group2_5.chat."Mágikus fegyver" or skill_group3_5.chat."Mágikus fegyver" begin target.delete("teacher5") if skill_group.join(2, 1, "Sura", "Én vagyok a mágikus fegyver küzelem mestere.[ENTER]¤]Akarod, hogy kiképezzelek?[ENTER]A képzésnek követelményei is vannak..[ENTER][ENTER]Első: Önbizalom!ENTER]Második: Hatalmas állóképesség.[ENTER][ENTER]", "Sajnálom,[ENTER] de csak Surákat oktatok.") then say_title("Ön úgy döntött, hogy a mágikus kard mesterséget tanulja meg.") say("Döntöttél. Szintedhez képest 1 ponttal kevesebb") say("képesség pontot kapsz!") say_title("Információ:") if not pc.is_clear_skill_group() then local point = pc.level -1 say("") say_reward("Te "..point.." képességpontot kaptál!") say("") else say("Valami probléma lépett fel!") say("Nem kaptál készségpontokat!") say("") end clear_letter() end end -- ??? when teacher6.target.click or skill_group1_6.chat."Fekete mágia" or skill_group2_6.chat."Fekete mágia" or skill_group3_6.chat."Fekete mágia" begin target.delete("teacher6") if skill_group.join(2, 2, "Sura", "Én a fekete mágia tanára vagyok.[ENTER]Megtanítalak téged, hogyan kezeld a sötét erődet.[ENTER][ENTER]Kevesen vannak akik képesek végigvinni ezt az oktatást.[ENTER]De benned látok némi reményt.[ENTER][ENTER]", "Sajnálom,[ENTER] de csak Surákat oktatok.") then say_title("Ön úgy döntött, hogy a feket mágia mesterséget tanulja meg.") say("Döntöttél. Szintedhez képest 1 ponttal kevesebb") say("képesség pontot kapsz!") say_title("Információ:") if not pc.is_clear_skill_group() then local point = pc.level -1 say("") say_reward("Te "..point.." képességpontot kaptál!") say("") else say("Valami probléma lépett fel!") say("Nem kaptál készségpontokat!") say("") end clear_letter() end end -- ??? when teacher7.target.click or skill_group1_7.chat."Sárkány hatalom" or skill_group2_7.chat."Sárkány hatalom" or skill_group3_7.chat."Sárkány hatalom" begin target.delete("teacher7") if skill_group.join(3, 1, "Sámán", "Én a sárkány hatalom mestere vagyok.[ENTER]Részt akarsz venni az oktatásban?[ENTER]Ügyesnek kell lenned![ENTER]Folyamatos figyelés, különben nem fogod megérteni a lényeget.[ENTER]Hatalmas intelligenciádnak is kell lenni.[ENTER]De csak óvatosan az erővel[ENTER]ne más ellen használd.[ENTER][ENTER]", "Sajnálom,[ENTER] de csak Sámánokat tanítok.") then say_title("Ön úgy döntött, hogy a sárkány hatalom képzést tanulja meg.") say("Döntöttél. Szintedhez képest 1 ponttal kevesebb") say("képesség pontot kapsz!") say_title("Információ:") if not pc.is_clear_skill_group() then local point = pc.level -1 say("") say_reward("Te "..point.." képességpontot kaptál!") say("") else say("Valami probléma lépett fel!") say("Nem kaptál készségpontokat!") say("") end clear_letter() end end -- ??? when teacher8.target.click or skill_group1_8.chat."Gyógyítás" or skill_group2_8.chat."Gyógyítás" or skill_group3_8.chat."Gyógyítás" begin target.delete("teacher8") if skill_group.join(3, 2, "Sámán", "Én vagyok a gyógyítás mestere.[ENTER][ENTER]Meg akarsz tanulni gyógyítani?[ENTER]Nagyon jó helyen jársz.[ENTER]Én megtanítalak gyógyítani, de figyelmesnek kell lenned.[ENTER][ENTER]", "Sajnálom,[ENTER] de csak Sámánokat tanítok.") then say_title("Ön úgy döntött, hogy a gyógyítás mesterévé válik.") say("Döntöttél. Szintedhez képest 1 ponttal kevesebb") say("képesség pontot kapsz!") say_title("Információ:") if not pc.is_clear_skill_group() then local point = pc.level -1 say("") say_reward("Te "..point.." képességpontot kaptál!") say("") else say("Valami probléma lépett fel!") say("Nem kaptál készségpontokat!") say("") end clear_letter() end end end end Edited September 5, 2022 by farmmedal 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