Jump to content
×
×
  • Create New...

[PNJ] Alchimiste


Calypso
 Share

Recommended Posts

  • Retraité

Centre de Téléchargement

Hidden Content

    Give reaction to this post to see the hidden content.
( Interne )

Bonjour tout le monde !

 

Aujourd'hui, j'ai voulu mettre les alchimistes de guildes comme sur le FR.

Voilà ce que l'on peut pas faire avec la quête actuel:

 

- Posséder des 60% de réussite même chez un alchimiste voisin

- Pouvoir raffiner avec 30% de réussite sur un alchimiste qui n'est pas dans la bonne spécialisation

- Pouvoir raffiner les items de la map 90+

 

Il faut savoir qu'aucun alchimiste map HL existe sur le FR. Pour raffiner, il suffit de faire glisser le minerai sur n'importe quel alchimiste afin de posséder de 30% de réussite.

 

Voici donc une quête. Je suis parti d'une quête polonaise je l'ai traduite et corrigé.

 

quest guild_building_melt begin
state start begin
	function GetOreRefineCost(cost)
		if pc.empire != npc.empire then
			return 3 * cost
		end
		if pc.get_guild() == npc.get_guild() then
			return cost * 0.9
		end
		return cost
	end

	function GetOreRefineGoodPct()
		return 60
	end

	function GetOreRefineBadPct()
		return 30
	end

	function GetMyRefineNum(race)
		return({
			[20060] = 50601,
			[20061] = 50602,
			[20062] = 50603,
			[20063] = 50604,
			[20064] = 50605,
			[20065] = 50606,
			[20066] = 50607,
			[20067] = 50608,
			[20068] = 50609,
			[20069] = 50610,
			[20070] = 50611,
			[20071] = 50612,
			[20072] = 50613,
			[33009] = 50614,
			[33010] = 50615,
			[33011] = 50616,
			[33012] = 50617,
			[33013] = 50618
		})[race]
		--return race - 20060 + 50601 or race - 33009 + 50614
	end

	function IsRefinableRawOre(vnum)
		return vnum >= 50601 and vnum <= 50618
	end

	function DoRefineDiamond(pct)
		local from_postfix
		local from_name = item_name(item.vnum)
		local to_vnum = item.vnum + 20
		local to_name = item_name(to_vnum)
		local to_postfix

		if under_han(from_name) then
			from_postfix = "something"
		else
			from_postfix = "something"
		end

		if under_han(to_name) then
			to_postfix = "after"
		else
			to_postfix = "with"
		end
		say_title("Alchimiste:")
		say("")
		say("Il me faut 100 " .. from_name .." pour que j'essaie")
		say("de produire "..to_name .. ".")
		say("")
		if item.count >= 100 then
			say("Le taux de réussite est de "..pct.."% et vous avez besoin de "..guild_building_melt.GetOreRefineCost(10000).." Yang.")
			say("")
			say("Tu veux que j'essaie ?")
			say("")
			local s = select("Oui", "Non")
			if s == 1 then
				if pc.get_gold() < guild_building_melt.GetOreRefineCost(10000) then
					say_title("Alchimiste:")
					say("")
					say("Vous n'avez pas assez de yang. Ce n'est pas gratuit.")
					say("")
					return
				end

				if pc.diamond_refine(10000, pct) then
					say_title("Alchimiste:")
					say("")
					say("Félicitations ! Ca a fonctionné !")
					say("")
					say("Vous avez reçu:")
					say("")
					say_item(to_name, to_vnum, "")
					say("")
				else
					say_title("Alchimiste:")
					say("")
					say("Ca n'a pas fontionné, désolé ...")
					say("")
				end
			end
		else
			say("Il me faut 100 minérais")
		end
	end
	function DoRefine(pct)
		local from_postfix
		local from_name = item_name(item.vnum)
		local to_vnum = item.vnum + 20
		local to_name = item_name(to_vnum)
		local to_postfix

		if under_han(from_name) then
			from_postfix = "Object"
		else
			from_postfix = "Object"
		end

		if under_han(to_name) then
			to_postfix = "After"
		else
			to_postfix = "With"
		end
		say_title("Alchimiste:")
		say("")
		say("Il me faut " .. from_name .." ainsi qu'une")
		say("pierre d'esprit +0, +1 ou +2 pour produire "..to_name..".")
		say("")
		if item.count >= 100 then
			say("Le taux de réussite est de "..pct.."% et vous avez")
			say("besoin de "..guild_building_melt.GetOreRefineCost(3000).." Yang.")
			say("")
			say("Tu veux que j'essaie ?")
			say("")
			local s = select("Oui", "Non")
			if s == 1 then
				if pc.get_gold() < guild_building_melt.GetOreRefineCost(3000) then
					say_title("Alchimiste:")
					say("")
					say("Désolé, tu n'a pas assez de yang.")
					say("")
					return
				end

				local selected_item_cell = select_item()
				if selected_item_cell == 0 then
					say_title("Alchimiste:")
					say("")
					say("Reviens me voir quand tu auras les matériaux !")
					say("")
					return
				end
				local old_item = item.get_id()

				if not item.select_cell(selected_item_cell) then
					say_title("Alchimiste:")
					say("")
					say("C'est un item inutile pour moi")
					say("")
					return
				end

				-- check whether the material is
				if item.vnum < 28000 or item.vnum >= 28300 then
					say_title("Alchimiste:")
					say("")
					say("C'est le mauvais item.")
					say("")
					return
				end

				item.select(old_item)

				if pc.ore_refine(3000, pct, selected_item_cell) then
					----"123456789012345678901234567890123456789012345678901234567890"|
					say_title("Alchimiste:")
					say("")
					say("Félicitation ! Ca a fonctionne !")
					say("")
					say("Vous avez reçu:")
					say("")
					say_item(to_name, to_vnum, "")
					say("")
					return
				else
					say_title("Alchimiste:")
					say("")
					say("Ca n'a pas fonctionné, désolé.!")
					say("")
					return
				end
			end
		else
			wait()
			say_title("Alchimiste:")
			say("")
			say_reward("Il me faut le matériel nécessaire.")
			say("")
			return
		end
	end

	when 20060.take or 20061.take or 20062.take or 20063.take or 20064.take or 20065.take or 20066.take or
		 20067.take or 20068.take or 20069.take or 20070.take or 20071.take or 20072.take or 
		 33009.take or 33010.take or 33011.take or 33012.take or 33013.take
		with guild_building_melt.IsRefinableRawOre(item.vnum) begin
		--Good
		if guild_building_melt.GetMyRefineNum(npc.race) == item.vnum then
			if item.vnum == 50601 then
				guild_building_melt.DoRefineDiamond(guild_building_melt.GetOreRefineGoodPct())
			else
				guild_building_melt.DoRefine(guild_building_melt.GetOreRefineGoodPct())
			end
		else--Bad
			if item.vnum == 50601 then
				guild_building_melt.DoRefineDiamond(guild_building_melt.GetOreRefineBadPct())
			else
				guild_building_melt.DoRefine(guild_building_melt.GetOreRefineBadPct())
			end
		end
	end

	when 20060.click or 20061.click or 20062.click or 20063.click or 20064.click or 20065.click or 20066.click or
		 20067.click or 20068.click or 20069.click or 20070.click or 20071.click or 20072.click or 
		 33009.click or  33010.click or 33011.click or  33012.click or 33013.click begin
		if npc.get_guild() == pc.get_guild() and pc.isguildmaster() then
			say_title("Alchimiste:")
			say("")
			say("Pour 3.000.000 Yang, je peux remplacer votre ")
			say("alchimiste acutel par un autre.")
			say("")
			wait()
			if pc.get_gold() < 3000000 then
				say_title("Alchimiste:")
				say("")
				say_reward("Il me faut 3.000.000 Yang.")
				say("")
				return
			end

			local sel = 0
			local timetable1 = {"Diamands", "Bois fossiles", "Cuivres", "Argents", "Ors", "Jades", "Suivant", "Fermer"}
			local valuetable1 = {14043, 14045, 14046, 14047, 14048, 14049, 1, 3}
			local timetable2 = {"Ebènes", "Perles", "Ors blancs", "Cristal", "Améthyste", "Suivant", "Précédent", "Fermer"}
			local valuetable2 = {14050, 10451, 14052, 14053, 14054, 2, 0, 3}
			local timetable3 = {"Larmes célestes", "Cristal d'âme", "Rubis", "Grenats", "Emeraudes", "Saphirs", "Précédent", "Fermer"}
			local valuetable3 = {14055, 26992, 26993, 26994, 26995, 26996, 1, 3}
			repeat
				say_size(300, 350)
				say_title("Système:")
				say("Quel alchimiste voulez vous mettre ?")
				if sel == 0 then
					local s = select_table(timetable1)
					sel = valuetable1[s]
				elseif sel == 1 then
					local s = select_table(timetable2)
					sel = valuetable2[s]
				elseif sel == 2 then
					local s = select_table(timetable3)
					sel = valuetable3[s]
				end
			until sel > 2
			if sel != 3 then
				npc_num = sel + 20060 - 14043
				--chat("#debug#sel:"..sel.."#npc_num:"..npc_num)
				if npc_num == npc.get_race() then
					say("Vous avez déjà cet alchimiste")
				else
					pc.changegold(-3000000)
					building.reconstruct(sel)
				end
			end
		else
			say_title("Alchimiste:")
			say("")
			----"12345678901234567890123456789012345678901234567890"|
			say("Bonjour, je suis alchimiste de guilde. Pour 100")
			say("minérais et une pierre d'esprit +0, +1 ou +2")
			say("Je peux essayer des les raffiner..")
			say("")
			say("Les minérais rafinés peuvent vous permettre")
			say("d'améliorer certains de vos items.")
			say("")
			say("Pour améliorer votre item, j'ai besoin")
			say("d'un diamand raffiné")
			say("")
			say("A bientôt !")
			say("")
		end
	end
end
end
 

Si vous ne savez pas implanter une quête, suivez ce tutoriel : ici

  • J'adore 2
Link to comment
Share on other sites

  • Replies 4
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

  • 3 weeks later...
 Share



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.