Dragon Stone Shard problem

05/07/2018 16:32 Reno31#1
Hello, i have problem with my alchemy system, my refine is good but dropping dragon stone shards is from every mob how can i reduce this? also i got bug with making from 15x Dragon Stone Shard Rough sometimes they're not getting from dragon stone shards to Rough ex: I have in inventory 45 Dragon Stone Shards.

-SORRY for my english and please help me.
05/07/2018 16:36 ThaRielFliege#2
look at this part "local alchi = number(1, 100)", do it like that in your quest.

Code:
-- define drop_flag "ds_drop"
quest dragon_soul begin
	state start begin
		when levelup or letter with pc.level >= 30 begin
			send_letter("Ankunft der Drachensteinsplitter")
			local v = find_npc_by_vnum(20001)

			if 0 != v then
				target.vid("__TARGET__", v, mob_name(20001))
			end
		end
		when info or button begin
			say("Der Alchemist mit dem fundiertesten Wissen über[ENTER]Mineralien im ganzen Reich sucht nach dir. Geh[ENTER]schnell zu ihm!")
		end

		when 20001.chat."Drachensteinsplitter?!" with pc.level >= 30 begin
			target.delete("__TARGET__")

			say_title(mob_name(20001))
			say("Ah, da bist du ja! Ich habe etwas Erstaunliches[ENTER]entdeckt: das Fragment eines Drachensteins! Ein[ENTER]Drachenstein ist ein äußerst seltener und[ENTER]wertvoller Kristall mit großer Macht. Es heißt,[ENTER]das sei die Seele eines Drachen. Unfassbar schön![ENTER]Ich verleihe dir die Macht des Drachenauges, damit[ENTER]du die Splitter aufspüren kannst.[ENTER]Bringe mir insgesamt zehn Drachensteinsplitter.[ENTER]Diese kann ich zu einem ganzen Stein transmutieren.")
			set_state(state_learning)
		end
	end
	state state_learning begin
		when letter begin
			send_letter("Drachensteinsplitter sammeln")
		end
		when info or button begin
			say("Bringe dem Alchemisten 10 Drachensteinsplitter.")
		end
		when kill begin
			if npc.is_pc() then
				return
			end

			if pc.count_item(30270) < 10 then
				local alchi = number(1, 100)
				if alchi <= 5 then
					pc.give_item2(30270)
				end
			end
		end
		when 20001.chat."Drachensteinsplitter sammeln" begin
			say_title(mob_name(20001))
			if pc.count_item(30270) >= 10 then
				say("Ah, du hast zehn Drachensteinsplitter. Bitte[ENTER]gedulde dich einen Moment ...[ENTER]Erstaunlich! Bei der Transmutation ist ein Cor[ENTER]Draconis entstanden - ein kristallenes[ENTER]Drachenherz, das den Drachenstein[ENTER]schützend umhüllt. Wenn du es aufbrichst, wandert[ENTER]der Drachenstein darin direkt in das Inventar der[ENTER]Drachensteinalchemie.[ENTER]Um Drachensteinsplitter zu finden und zu[ENTER]transmutieren, brauchst du die Macht des[ENTER]Drachenauges. Einmal täglich kann ich sie dir[ENTER]verleihen.[ENTER]Den ersten Drachenstein habe ich dir hergestellt.[ENTER]Die restlichen neun schaffst nun du alleine!")
				pc.remove_item(30270, 10)
				ds.give_qualification()
				char_log(pc.get_player_id(), 'DS_QUALIFICATION', 'SUCCESS')
				pc.give_item2(50255)
				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("He, verschwende keine Zeit! Geh lieber und suche[ENTER]Drachensteinsplitter!")
			end
		end
	end
	state state_farming begin
		when letter begin
			send_letter("Macht des Drachenauges")
		end
		when info or button begin
			say_title("Macht des Drachenauges")
			say(string.format("Verbleibende Macht des Drachenauges: %d ", pc.getf("dragon_soul", "eye_left")))
		end
		when kill begin
			if npc.is_pc() then
				return
			end
			
			local alchi = number(1, 100)
			if alchi <= 5 then
				local eye_left = pc.getf("dragon_soul", "eye_left")
				local haved_gemstone_number = pc.count_item(30270)

				if eye_left > haved_gemstone_number / 10 then
					pc.give_item2(30270)
				end
			end
		end
		when 30270.pick begin
			local eye_left = pc.getf("dragon_soul", "eye_left")
			if eye_left <= 0 then
				return
			end

			if pc.count_item(30270) >= 10 then
				pc.setf("dragon_soul", "eye_left", eye_left - 1)
				pc.remove_item(30270, 10)
				pc.give_item2(50255)
				if 1 == eye_left then
					notice_multiline("Es gibt keine Drachensteinsplitter mehr.", notice)
					set_state(state_closed_season)
				end
			end
		end
		when 20001.chat."Gib mir die Macht des Drachenauges" begin
			say_title(mob_name(20001))
			local today = math.floor(get_global_time() / 86400)
			if today == pc.getf("dragon_soul", "eye_timestamp") then
				say("Hallo! Du hast die Macht des Drachenauges heute[ENTER]bereits erhalten. Das Vorgang schwächt mich zu[ENTER]sehr, ich kann dir nur einmal pro Tag helfen. Komm[ENTER]morgen wieder!")
			else
				say("Hallo! Ich wette, du bist wegen der Macht des[ENTER]Drachenauges hier. Richtig? Also gut, hier hast du[ENTER]sie. Viel Glück bei der Suche! Ich hoffe, du[ENTER]findest genügend Splitter für zehn Drachensteine!")
				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("Fehlende Macht des Drachenauges")
		end
		when info or button begin
			say("Die Macht des Drachenauges hat dich verlassen.")
			local today = math.floor(get_global_time() / 86400)
			if today == pc.getf("dragon_soul", "eye_timestamp") then
				say("Geh morgen zum Alchemisten zurück, um dir erneut[ENTER]die Macht des Drachenauges abzuholen!")
			else
				say("Geh zum Alchemisten, um dir die Macht des[ENTER]Drachenauges abzuholen!")
			end
		end
		
		when 20001.chat."Macht des Drachenauges" begin
			say_title(mob_name(20001))
			local today = math.floor(get_global_time() / 86400)
			if today == pc.getf("dragon_soul", "eye_timestamp") then
				say("Hallo! Du hast die Macht des Drachenauges heute[ENTER]bereits erhalten. Das Vorgang schwächt mich zu[ENTER]sehr, ich kann dir nur einmal pro Tag helfen. Komm[ENTER]morgen wieder!")
			else
				say("Hallo! Ich wette, du bist wegen der Macht des[ENTER]Drachenauges hier. Richtig? Also gut, hier hast du[ENTER]sie. Viel Glück bei der Suche! Ich hoffe, du[ENTER]findest genügend Splitter für zehn Drachensteine!")
				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
05/08/2018 01:26 Reno31#3
Thank you very much!