Jump to content

Bio quests wihout waiting


Go to solution Solved by Syreldar,

Recommended Posts

  • Premium
pc.setqf("duration", ..)

Remove this line.

  • Good 1

 

"Nothing's free in this life.

Ignorant people have an obligation to make up for their ignorance by paying those who help them.

Either you got the brains or cash, if you lack both you're useless."

Syreldar

Link to comment
Share on other sites

  • Premium
quest collect_quest_lv30  begin
	state start begin
		when login or levelup with pc.level >= 30 begin
			set_state(information)
		end
	end

	state information begin
		when letter begin
			local v = find_npc_by_vnum(20084)
			if v != 0 then
				target.vid("__TARGET__", v, gameforge.collect_herb_lv10._150_sayTitle)
			end
			send_letter(gameforge.collect_quest_lv30._10_sendLetter)
		end

		when button or info begin
			say_title(gameforge.collect_quest_lv30._10_sendLetter)
			say(gameforge.collect_quest_lv30._20_say)
		end

		when __TARGET__.target.click or	20084.chat.gameforge.collect_quest_lv30._30_npcChat begin
			target.delete("__TARGET__")
			say_title(gameforge.collect_herb_lv10._50_sayTitle)
			say(gameforge.collect_quest_lv30._40_say)
			wait()
			say_title(gameforge.collect_herb_lv10._50_sayTitle)
			say(gameforge.collect_quest_lv30._50_say)
			wait()
			say_title(gameforge.collect_herb_lv10._150_sayTitle)
			say(gameforge.collect_quest_lv30._60_say)
			set_state(go_to_disciple) 
			pc.setqf("collect_count",0)
			pc.setqf("drink_drug",0)
		end
	end


	state go_to_disciple begin
		when letter begin
			send_letter(gameforge.collect_quest_lv30._70_sendLetter)

		end
		when button or info begin
			say_title(gameforge.collect_quest_lv30._80_sayTitle)
			say(gameforge.collect_quest_lv30._90_say)
			say_item_vnum(30006)
			say_reward(string.format(gameforge.collect_quest_lv30._100_sayReward, pc.getqf("collect_count")))
					end

		when 71035.use begin
			if pc.getqf("drink_drug")==1 then
				say(gameforge.collect_quest_lv30._120_say)

				return
			end
			if pc.count_item(30006)==0 then
				say_title(gameforge.collect_herb_lv10._50_sayTitle)
				say(gameforge.collect_quest_lv30._130_say)
				return
			end
			pc.remove_item(71035, 1)
			pc.setqf("drink_drug",1)
		end

		when 601.kill begin
			local s = number(1, 100)
			if s <= 5 then
				pc.give_item2(30006, 1)
			end 
		end


    	when 20084.chat.gameforge.collect_quest_lv30._140_npcChat with pc.count_item(30006) >0   begin
				if pc.count_item(30006) >0 then 
				say_title(gameforge.collect_herb_lv10._150_sayTitle)
				say(gameforge.collect_quest_lv30._150_say)
				pc.remove_item("30006", 1)
				wait()

				local pass_percent
				if pc.getqf("drink_drug")==0 then
					pass_percent=60
				else
					if true == pet.is_summon(34003) or true == pet.is_summon(34001) then
						pass_percent=92
					else
						pass_percent=90
					end
				end

				notice(pass_percent)

				local s= number(1,100)
				if s <= pass_percent  then
				   if pc.getqf("collect_count")< 9 then    
						local index =pc.getqf("collect_count")+1
						pc.setqf("collect_count",index)
						say_title(gameforge.collect_herb_lv10._150_sayTitle)
						say(string.format(gameforge.collect_quest_lv30._160_say, 10-pc.getqf("collect_count")))
						pc.setqf("drink_drug",0)	
						return
					end
					say_title(gameforge.collect_herb_lv10._50_sayTitle)
					say(gameforge.collect_quest_lv30._170_say)
					pc.setqf("collect_count",0)
					pc.setqf("drink_drug",0)
					set_state(key_item)
					return
				else
				say_title(gameforge.collect_herb_lv10._50_sayTitle)
				say(gameforge.collect_quest_lv30._180_say)
				pc.setqf("drink_drug",0)	
				return
				end
			else
				say_title(gameforge.collect_herb_lv10._50_sayTitle)
				--say(string.format(gameforge.collect_quest_lv30._190_say, item_name(30006)))
				say(gameforge.collect_quest_lv30._190_say)
				return
			end
	    else
		  say_title(gameforge.collect_herb_lv10._50_sayTitle)
		  say(gameforge.collect_quest_lv30._200_say)
		  return
		end

	end
end


	state key_item begin
		when letter begin
			send_letter(gameforge.collect_quest_lv30._210_sendLetter)

			if pc.count_item(30220)>0 then
				local v = find_npc_by_vnum(20084)
				if v != 0 then
					target.vid("__TARGET__", v, gameforge.collect_herb_lv10._150_sayTitle)
				end
			end

		end
		when button or info begin
			if pc.count_item(30220) >0 then
				say_title(gameforge.collect_quest_lv30._220_sayTitle)
								say_reward(gameforge.collect_quest_lv30._230_sayReward)
								return
			end
			say_title(gameforge.collect_quest_lv30._220_sayTitle)
			say(gameforge.collect_quest_lv30._240_say)
			say_item_vnum(30220)
			say(gameforge.collect_quest_lv30._250_say)
		end



		when 631.kill or 632.kill or 633.kill or 634.kill or 635.kill or 636.kill or 637.kill  begin
			local s = number(1, 500)
			if s == 1 and pc.count_item(30220)==0 then
				pc.give_item2(30220, 1)
				send_letter(gameforge.collect_quest_lv30._260_sendLetter)
			end
		end

		when __TARGET__.target.click  or	20084.chat.gameforge.collect_quest_lv30._270_npcChat with pc.count_item(30220) > 0  begin
			target.delete("__TARGET__")
			if pc.count_item(30220) > 0 then 
				say_title(gameforge.collect_herb_lv10._150_sayTitle)
				say(gameforge.collect_quest_lv30._280_say)
				pc.remove_item(30220,1)
				set_state(__reward)
			else
				say_title(gameforge.collect_herb_lv10._150_sayTitle)
				--say(string.format(gameforge.collect_quest_lv30._290_say, item_name(30220)))
				say(gameforge.collect_quest_lv30._290_say)
				return
			end
		end

	end

	state __reward begin
		when letter begin
			send_letter(gameforge.collect_quest_lv30._300_sendLetter)

			local v = find_npc_by_vnum(20018)
			if v != 0 then
				target.vid("__TARGET__", v, gameforge.collect_quest_lv30._310_targetVid)
			end

		end
		when button or info begin
			say_title(gameforge.collect_quest_lv30._300_sendLetter)
			say(gameforge.collect_quest_lv30._320_say)
		end

		when __TARGET__.target.click  or	20018.chat.gameforge.collect_quest_lv30._330_npcChat  begin
			target.delete("__TARGET__")
			say_title(gameforge.collect_quest_lv30._340_sayTitle)
			say(gameforge.collect_quest_lv30._350_say)
			say_reward(gameforge.collect_quest_lv30._360_sayReward)

			affect.add_collect(apply.MOV_SPEED, 10, 60*60*24*365*60) --60Jahre
			pc.give_item2(50109)
			clear_letter()
			set_quest_state("collect_quest_lv40", "run")
			set_state(__complete)
		end

	end


	state __giveup__ begin
		when 20084.chat.gameforge.collect_quest_lv30._370_npcChat begin
			say_title(gameforge.collect_herb_lv10._50_sayTitle)
			say(gameforge.collect_quest_lv30._380_say)
			set_state(start)
	     end
	 end
	state __complete begin
	end
end

so this is what i did but it doesn't seem to work...

Link to comment
Share on other sites

  • Premium
Posted (edited)
58 minutes ago, Juki said:
quest collect_quest_lv30  begin
	state start begin
		when login or levelup with pc.level >= 30 begin
			set_state(information)
		end
	end

	state information begin
		when letter begin
			local v = find_npc_by_vnum(20084)
			if v != 0 then
				target.vid("__TARGET__", v, gameforge.collect_herb_lv10._150_sayTitle)
			end
			send_letter(gameforge.collect_quest_lv30._10_sendLetter)
		end

		when button or info begin
			say_title(gameforge.collect_quest_lv30._10_sendLetter)
			say(gameforge.collect_quest_lv30._20_say)
		end

		when __TARGET__.target.click or	20084.chat.gameforge.collect_quest_lv30._30_npcChat begin
			target.delete("__TARGET__")
			say_title(gameforge.collect_herb_lv10._50_sayTitle)
			say(gameforge.collect_quest_lv30._40_say)
			wait()
			say_title(gameforge.collect_herb_lv10._50_sayTitle)
			say(gameforge.collect_quest_lv30._50_say)
			wait()
			say_title(gameforge.collect_herb_lv10._150_sayTitle)
			say(gameforge.collect_quest_lv30._60_say)
			set_state(go_to_disciple) 
			pc.setqf("collect_count",0)
			pc.setqf("drink_drug",0)
		end
	end


	state go_to_disciple begin
		when letter begin
			send_letter(gameforge.collect_quest_lv30._70_sendLetter)

		end
		when button or info begin
			say_title(gameforge.collect_quest_lv30._80_sayTitle)
			say(gameforge.collect_quest_lv30._90_say)
			say_item_vnum(30006)
			say_reward(string.format(gameforge.collect_quest_lv30._100_sayReward, pc.getqf("collect_count")))
					end

		when 71035.use begin
			if pc.getqf("drink_drug")==1 then
				say(gameforge.collect_quest_lv30._120_say)

				return
			end
			if pc.count_item(30006)==0 then
				say_title(gameforge.collect_herb_lv10._50_sayTitle)
				say(gameforge.collect_quest_lv30._130_say)
				return
			end
			pc.remove_item(71035, 1)
			pc.setqf("drink_drug",1)
		end

		when 601.kill begin
			local s = number(1, 100)
			if s <= 5 then
				pc.give_item2(30006, 1)
			end 
		end


    	when 20084.chat.gameforge.collect_quest_lv30._140_npcChat with pc.count_item(30006) >0   begin
				if pc.count_item(30006) >0 then 
				say_title(gameforge.collect_herb_lv10._150_sayTitle)
				say(gameforge.collect_quest_lv30._150_say)
				pc.remove_item("30006", 1)
				wait()

				local pass_percent
				if pc.getqf("drink_drug")==0 then
					pass_percent=60
				else
					if true == pet.is_summon(34003) or true == pet.is_summon(34001) then
						pass_percent=92
					else
						pass_percent=90
					end
				end

				notice(pass_percent)

				local s= number(1,100)
				if s <= pass_percent  then
				   if pc.getqf("collect_count")< 9 then    
						local index =pc.getqf("collect_count")+1
						pc.setqf("collect_count",index)
						say_title(gameforge.collect_herb_lv10._150_sayTitle)
						say(string.format(gameforge.collect_quest_lv30._160_say, 10-pc.getqf("collect_count")))
						pc.setqf("drink_drug",0)	
						return
					end
					say_title(gameforge.collect_herb_lv10._50_sayTitle)
					say(gameforge.collect_quest_lv30._170_say)
					pc.setqf("collect_count",0)
					pc.setqf("drink_drug",0)
					set_state(key_item)
					return
				else
				say_title(gameforge.collect_herb_lv10._50_sayTitle)
				say(gameforge.collect_quest_lv30._180_say)
				pc.setqf("drink_drug",0)	
				return
				end
			else
				say_title(gameforge.collect_herb_lv10._50_sayTitle)
				--say(string.format(gameforge.collect_quest_lv30._190_say, item_name(30006)))
				say(gameforge.collect_quest_lv30._190_say)
				return
			end
	    else
		  say_title(gameforge.collect_herb_lv10._50_sayTitle)
		  say(gameforge.collect_quest_lv30._200_say)
		  return
		end

	end
end


	state key_item begin
		when letter begin
			send_letter(gameforge.collect_quest_lv30._210_sendLetter)

			if pc.count_item(30220)>0 then
				local v = find_npc_by_vnum(20084)
				if v != 0 then
					target.vid("__TARGET__", v, gameforge.collect_herb_lv10._150_sayTitle)
				end
			end

		end
		when button or info begin
			if pc.count_item(30220) >0 then
				say_title(gameforge.collect_quest_lv30._220_sayTitle)
								say_reward(gameforge.collect_quest_lv30._230_sayReward)
								return
			end
			say_title(gameforge.collect_quest_lv30._220_sayTitle)
			say(gameforge.collect_quest_lv30._240_say)
			say_item_vnum(30220)
			say(gameforge.collect_quest_lv30._250_say)
		end



		when 631.kill or 632.kill or 633.kill or 634.kill or 635.kill or 636.kill or 637.kill  begin
			local s = number(1, 500)
			if s == 1 and pc.count_item(30220)==0 then
				pc.give_item2(30220, 1)
				send_letter(gameforge.collect_quest_lv30._260_sendLetter)
			end
		end

		when __TARGET__.target.click  or	20084.chat.gameforge.collect_quest_lv30._270_npcChat with pc.count_item(30220) > 0  begin
			target.delete("__TARGET__")
			if pc.count_item(30220) > 0 then 
				say_title(gameforge.collect_herb_lv10._150_sayTitle)
				say(gameforge.collect_quest_lv30._280_say)
				pc.remove_item(30220,1)
				set_state(__reward)
			else
				say_title(gameforge.collect_herb_lv10._150_sayTitle)
				--say(string.format(gameforge.collect_quest_lv30._290_say, item_name(30220)))
				say(gameforge.collect_quest_lv30._290_say)
				return
			end
		end

	end

	state __reward begin
		when letter begin
			send_letter(gameforge.collect_quest_lv30._300_sendLetter)

			local v = find_npc_by_vnum(20018)
			if v != 0 then
				target.vid("__TARGET__", v, gameforge.collect_quest_lv30._310_targetVid)
			end

		end
		when button or info begin
			say_title(gameforge.collect_quest_lv30._300_sendLetter)
			say(gameforge.collect_quest_lv30._320_say)
		end

		when __TARGET__.target.click  or	20018.chat.gameforge.collect_quest_lv30._330_npcChat  begin
			target.delete("__TARGET__")
			say_title(gameforge.collect_quest_lv30._340_sayTitle)
			say(gameforge.collect_quest_lv30._350_say)
			say_reward(gameforge.collect_quest_lv30._360_sayReward)

			affect.add_collect(apply.MOV_SPEED, 10, 60*60*24*365*60) --60Jahre
			pc.give_item2(50109)
			clear_letter()
			set_quest_state("collect_quest_lv40", "run")
			set_state(__complete)
		end

	end


	state __giveup__ begin
		when 20084.chat.gameforge.collect_quest_lv30._370_npcChat begin
			say_title(gameforge.collect_herb_lv10._50_sayTitle)
			say(gameforge.collect_quest_lv30._380_say)
			set_state(start)
	     end
	 end
	state __complete begin
	end
end

so this is what i did but it doesn't seem to work...

You either aren't compiling your stuff properly or forgot to reset the flag on your character.

Edited by Syreldar
  • Love 1

 

"Nothing's free in this life.

Ignorant people have an obligation to make up for their ignorance by paying those who help them.

Either you got the brains or cash, if you lack both you're useless."

Syreldar

Link to comment
Share on other sites

  • Premium
  • Solution

Contact me on discord.

 

"Nothing's free in this life.

Ignorant people have an obligation to make up for their ignorance by paying those who help them.

Either you got the brains or cash, if you lack both you're useless."

Syreldar

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.