Jump to content

Quest does not appear after leveling up


Recommended Posts

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 by farmmedal
Link to comment
Share on other sites

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 by farmmedal
typo
Link to comment
Share on other sites

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 by caanmasu
  • Metin2 Dev 1
Link to comment
Share on other sites

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 by farmmedal
Link to comment
Share on other sites

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 by farmmedal
Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

Announcements



×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.