Jump to content

need help with DragonSoul quest [drop rate-dragon eye]


Go to solution Solved by DrTurk,

Recommended Posts

Version of Files XXX

[[ Hi / Hello / Hey... ]]

 

 

1. Description of the problem / Question :

please any one can help me with the dragon soul quest

because my drop rate is like 100% each mob drop it and the Dragon eyes power is only 10

i need the drop rate like 50% and the eye limit per day 100 

thanx in advance 

 

 

 

 

2. Screenshots ?

 

GMKtc1I.jpg?1

 

 

Thanks, Sincerly,
 

 

 

define gemstone 30270
define alchemist 20001
define reward_box 50255
define gemstone_need_count 10
define gemstone_trade_max_per_day 10
define dragon_soul_can_use_level 30
define drop_flag "ds_drop"

quest dragon_soul begin
	state start begin
		when levelup or letter with pc.level >= dragon_soul_can_use_level begin
			send_letter_ex(gameforge.dragon_soul._1010_sendLetter, "blue,blink,ex", "scroll_open_blue.tga")
			local v = find_npc_by_vnum(alchemist)
			
			if 0 != v then
				target.vid("__TARGET__", v, mob_name(alchemist))
			end
		end
		when info or button begin
			say(gameforge.dragon_soul._1020_say)
		end

		when alchemist.chat.gameforge.dragon_soul._1030_npcChat with pc.level >= dragon_soul_can_use_level begin
			target.delete("__TARGET__")

			say_title(mob_name(alchemist))
			say(gameforge.dragon_soul._1040_say)
			set_state(state_learning)
		end
	end
	state state_learning begin
		when letter begin
			send_letter_ex(gameforge.dragon_soul._1050_sendLetter, "blue,blink,ex", "scroll_open_blue.tga")
		end
		when info or button begin
			say(gameforge.dragon_soul._1060_say)
		end
		when kill begin
			if npc.is_pc() then
				return
			end
			
			if pc.count_item(gemstone) < gemstone_need_count then
				if drop_gamble_with_flag(drop_flag) then
					game.drop_item_with_ownership(gemstone, 1, 80)
				end
			end
		end
		when alchemist.chat.gameforge.dragon_soul._1050_sendLetter begin
			say_title(mob_name(alchemist))
			if pc.count_item(gemstone) >= gemstone_need_count then
				say(gameforge.dragon_soul._1070_say)
				pc.remove_item(gemstone, gemstone_need_count)
				ds.give_qualification()
				char_log(pc.get_player_id(), 'DS_QUALIFICATION', 'SUCCESS')
				pc.give_item2(reward_box)
				local today = math.floor(get_global_time() / 86400)
				pc.setf("dragon_soul", "eye_timestamp", today)
				pc.setf("dragon_soul", "eye_left", 9)
				set_state(state_farming)
			else
				say(gameforge.dragon_soul._1080_say)
			end
		end
	end
	state state_farming begin
		when letter begin
			send_letter_ex(gameforge.dragon_soul._1090_sendLetter, "blue,blink,ex", "scroll_open_blue.tga")
		end
		when info or button begin
			say(string.format(gameforge.dragon_soul._1100_say, pc.getf("dragon_soul", "eye_left")))
		end
		when kill begin
			if npc.is_pc() then
				return
			end
			
			if drop_gamble_with_flag(drop_flag) then
				local eye_left = pc.getf("dragon_soul", "eye_left")
				local haved_gemstone_number = pc.count_item(gemstone)
				
				if eye_left > haved_gemstone_number / gemstone_need_count then
					game.drop_item_with_ownership(gemstone, 1, 80)
				end
			end
		end
		when gemstone.pick begin
			local eye_left = pc.getf("dragon_soul", "eye_left")
			if eye_left <= 0 then
				return
			end

			if pc.count_item(gemstone) >= gemstone_need_count then
				pc.setf("dragon_soul", "eye_left", eye_left - 1)
				pc.remove_item(gemstone, gemstone_need_count)
				pc.give_item2(reward_box)
				if 1 == eye_left then
					notice_multiline(gameforge.dragon_soul._1110_notice, notice)
					set_state(state_closed_season)
				end
			end
		end
		when alchemist.chat.gameforge.dragon_soul._1120_npcChat begin
			say_title(mob_name(alchemist))
			local today = math.floor(get_global_time() / 86400)
			if today == pc.getf("dragon_soul", "eye_timestamp") then
				say(gameforge.dragon_soul._1130_say)
			else
				say(gameforge.dragon_soul._1140_say)
				pc.setf("dragon_soul", "eye_timestamp", today)
				pc.setf("dragon_soul", "eye_left", 10)
			end	
		end
	end
	state state_closed_season begin
		when letter begin
			send_letter(gameforge.dragon_soul._1150_sendLetter)
		end
		when info or button begin
			say(gameforge.dragon_soul._1160_say)
			local today = math.floor(get_global_time() / 86400)
			if today == pc.getf("dragon_soul", "eye_timestamp") then
				say(gameforge.dragon_soul._1170_say)
			else
				say(gameforge.dragon_soul._1180_say)
			end
		end
		
		when alchemist.chat.gameforge.dragon_soul._1090_sendLetter begin
			say_title(mob_name(alchemist))
			local today = math.floor(get_global_time() / 86400)
			if today == pc.getf("dragon_soul", "eye_timestamp") then
				say(gameforge.dragon_soul._1130_say)
			else
				say(gameforge.dragon_soul._1140_say)
				pc.setf("dragon_soul", "eye_timestamp", today)
				pc.setf("dragon_soul", "eye_left", 10)
				set_state(state_farming)
			end
		end
	end
	-- deprecated states. so, jump to new state.
	state state_1 begin
		when login begin
			set_state(state_learning)
		end
	end
	state state_2 begin
		when login begin
			set_state(state_learning)
		end
	end
	state state_3 begin
		when login begin
			set_state(state_closed_season)
		end
	end
end

 

Edited by Metin2 Dev
Core X - External 2 Internal
Link to comment
Share on other sites

i fix this line 

 

define gemstone_trade_max_per_day 10

to 100 the eye of dragon it comes 100 

 

but the rate is still too much 

					game.drop_item_with_ownership(gemstone, 1, 80)

i changed this too to 35 and not working still 100% percent 

Edited by SlayerPro
Link to comment
Share on other sites

You could do it like that:

 

		when kill begin
			if npc.is_pc() then
				return
			end
			
			if pc.count_item(gemstone) < gemstone_need_count then
				local drop = number(1, 100)
				if drop <= 10 then
					game.drop_item_with_ownership(gemstone, 1, 300)
				end
			end
		end

		when kill begin
			if npc.is_pc() then
				return
			end
			
			local drop = number(1, 100)
			if drop <= 10 then
				local eye_left = pc.getf("dragon_soul", "eye_left")
				local haved_gemstone_number = pc.count_item(gemstone)
				
				if eye_left > haved_gemstone_number / gemstone_need_count then
					game.drop_item_with_ownership(gemstone, 1, 300)
				end
			end
		end

 

  • Love 1
Link to comment
Share on other sites

9 minutes ago, DrTurk said:

You could do it like that:

 


		when kill begin
			if npc.is_pc() then
				return
			end
			
			if pc.count_item(gemstone) < gemstone_need_count then
				local drop = number(1, 100)
				if drop <= 10 then
					game.drop_item_with_ownership(gemstone, 1, 300)
				end
			end
		end

		when kill begin
			if npc.is_pc() then
				return
			end
			
			local drop = number(1, 100)
			if drop <= 10 then
				local eye_left = pc.getf("dragon_soul", "eye_left")
				local haved_gemstone_number = pc.count_item(gemstone)
				
				if eye_left > haved_gemstone_number / gemstone_need_count then
					game.drop_item_with_ownership(gemstone, 1, 300)
				end
			end
		end

 

you mean i put this 

					game.drop_item_with_ownership(gemstone, 1, 300)

insted of this 

					game.drop_item_with_ownership(gemstone, 1, 80)

??

Link to comment
Share on other sites

the 300 or 80 in your case is not the drop chance, the dropchance in this quest ist calaculated by the ds_drop flag

Just use this quest:

 

define gemstone 30270
define alchemist 20001
define reward_box 50255
define gemstone_need_count 10
define gemstone_trade_max_per_day 30
define dragon_soul_can_use_level 30
define dragon_soul_shop_vnum 131

quest dragon_soul begin
	state start begin
		when levelup or letter with pc.level >= dragon_soul_can_use_level begin
			send_letter(gameforge.dragon_soul._1010_sendLetter)
			local v = find_npc_by_vnum(alchemist)
			
			if 0 != v then
				target.vid("__TARGET__", v, mob_name(alchemist))
			end
		end
		when info or button begin
			say(gameforge.dragon_soul._1020_say)
		end

		when alchemist.chat.gameforge.dragon_soul._1030_npcChat with pc.level >= dragon_soul_can_use_level begin
			target.delete("__TARGET__")

			say_title(mob_name(alchemist))
			say(gameforge.dragon_soul._1040_say)
			set_state(state_learning)
		end
	end
	state state_learning begin
		when letter begin
			send_letter(gameforge.dragon_soul._1050_sendLetter)
		end
		when info or button begin
			say(gameforge.dragon_soul._1060_say)
		end
		when kill begin
			if npc.is_pc() then
				return
			end
			
			if pc.count_item(gemstone) < gemstone_need_count then
				local drop = number(1, 100)
				if drop <= 10 then
					game.drop_item_with_ownership(gemstone, 1, 300)
				end
			end
		end
		when alchemist.chat.gameforge.dragon_soul._1050_sendLetter begin
			say_title(mob_name(alchemist))
			if pc.count_item(gemstone) >= gemstone_need_count then
				say(gameforge.dragon_soul._1070_say)
				pc.remove_item(gemstone, gemstone_need_count)
				ds.give_qualification()
				char_log(pc.get_player_id(), 'DS_QUALIFICATION', 'SUCCESS')
				pc.give_item2(reward_box)
				local today = math.floor(get_global_time() / 86400)
				pc.setf("dragon_soul", "eye_timestamp", today)
				pc.setf("dragon_soul", "eye_left", 29)
				set_state(state_farming)
			else
				say(gameforge.dragon_soul._1080_say)
			end
		end
	end
	state state_farming begin
		when letter begin
			send_letter(gameforge.dragon_soul._1090_sendLetter)
		end
		when info or button begin
			say_title("Macht des Drachenauges")
			say(string.format(gameforge.dragon_soul._1100_say, pc.getf("dragon_soul", "eye_left")))
		end
		when kill begin
			if npc.is_pc() then
				return
			end
			
			local drop = number(1, 100)
			if drop <= 10 then
				local eye_left = pc.getf("dragon_soul", "eye_left")
				local haved_gemstone_number = pc.count_item(gemstone)
				
				if eye_left > haved_gemstone_number / gemstone_need_count then
					game.drop_item_with_ownership(gemstone, 1, 300)
				end
			end
		end
		when gemstone.pick begin
			local eye_left = pc.getf("dragon_soul", "eye_left")
			if eye_left <= 0 then
				return
			end

			if pc.count_item(gemstone) >= gemstone_need_count then
				pc.setf("dragon_soul", "eye_left", eye_left - 1)
				pc.remove_item(gemstone, gemstone_need_count)
				pc.give_item2(reward_box)
				if 1 == eye_left then
					notice_multiline(gameforge.dragon_soul._1110_notice, notice)
					set_state(state_closed_season)
				end
			end
		end
		when alchemist.chat.gameforge.dragon_soul_refine._010_npcChat with ds.is_qualified() != 0 begin
			say_title(mob_name(alchemist))
			say (gameforge.dragon_soul_refine._020_say)
			ds.open_refine_window()
		end

		when alchemist.chat.gameforge.dragon_soul._100_npcChat with ds.is_qualified() begin
			setskin(NOWINDOW)
			npc.open_shop(dragon_soul_shop_vnum)
		end
		when alchemist.chat.gameforge.dragon_soul._1120_npcChat begin
			say_title(mob_name(alchemist))
			local today = math.floor(get_global_time() / 86400)
			if today == pc.getf("dragon_soul", "eye_timestamp") then
				say(gameforge.dragon_soul._1130_say)
			else
				say(gameforge.dragon_soul._1140_say)
				pc.setf("dragon_soul", "eye_timestamp", today)
				pc.setf("dragon_soul", "eye_left", 30)
			end	
		end
	end
	state state_closed_season begin
		when letter begin
			send_letter(gameforge.dragon_soul._1150_sendLetter)
		end
		when info or button begin
			say(gameforge.dragon_soul._1160_say)
			local today = math.floor(get_global_time() / 86400)
			if today == pc.getf("dragon_soul", "eye_timestamp") then
				say(gameforge.dragon_soul._1170_say)
			else
				say(gameforge.dragon_soul._1180_say)
			end
		end
		
		when alchemist.chat.gameforge.dragon_soul._1090_sendLetter begin
			say_title(mob_name(alchemist))
			local today = math.floor(get_global_time() / 86400)
			if today == pc.getf("dragon_soul", "eye_timestamp") then
				say(gameforge.dragon_soul._1130_say)
			else
				say(gameforge.dragon_soul._1140_say)
				pc.setf("dragon_soul", "eye_timestamp", today)
				pc.setf("dragon_soul", "eye_left", 30)
				set_state(state_farming)
			end
		end
	end
	-- deprecated states. so, jump to new state.
	state state_1 begin
		when login begin
			set_state(state_learning)
		end
	end
	state state_2 begin
		when login begin
			set_state(state_learning)
		end
	end
	state state_3 begin
		when login begin
			set_state(state_closed_season)
		end
	end
end

 

  • Love 1
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.