Aller au contenu
Top-Metin2.org - Vous êtes à la recherche d'un serveur Metin 2 ? ×
×
×
  • Créer...

[Event] Touche-touche


prindo99

Messages recommandés

Centre de Téléchargement

Hidden Content

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

Bonjour, bonsoir à tous et à toutes,

 

Description:

Cette quête est un event qui fera apparaître un PNJ sur 3 cartes différentes ( Chunjo, Jinno, Shinsoo ). Une flèche sera générée au dessus des trois différents PNJ, comme une auréole. Les joueurs/joueuses devront donc cliquer sur ce PNJ selon leur royaume, rien de plus facile n'est-ce pas ? C'est là que ça se corse : le PNJ apparaîtra pendant 15 secondes ( aléatoirement ) toutes les 10 secondes. Le premier personnage qui cliquera dessus aura gagné. A vous de paramétrer le temps de durée de l'event, dans le jeu-même. Il y a aussi une gestion de l'event sur l'Ivrogne ( ID = 20041 ).

Tous les paramètres ( du moins les plus importants ) ce font directement en jeu, suivez bien les instructions. Si jamais vous n'êtes pas sûr, vous aurez la possibilité de cliquer sur " Retour " pour revenir dans la page précédente.

 

Version BETA

    Si vous êtes GM :

- Vous vous connectez.

- Vous cliquez sur l'ivrogne ( ID = 20041 ) en étant dans le désert.

- Si l'Event est déjà démarré et que vous voulez l'arrêter, cliquez sur " Arrêter l'event ".

- Si l'Event n'est pas encore démarré et que vous voulez le démarrer, cliquez sur " Démarrer l'event ".

- Indiquez combien de temps doit durer l'event.

- Indiquez les trois ID des PNJ qui vont devoir spawn.

- Indiquez entre quels coordonnées doivent spawn les trois PNJ.

- L'event démarre.

    Si vous êtes joueur :

- Allez dans la map désert une fois l'event démarré.

- Vous devrez chercher le PNJ de votre royaume à l'aide de la flèche jaune sur celui-ci.

- Cliquez sur le PNJ et vous avez gagné. ( Aucune récompense à prioris )

- Fin de l'event pour votre royaume, n'essayez pas de cliquer sur le PNJ des différents empire car vous ne pourrez pas.

 

---------------------------------------------------------------------------------------
--          SOURCE # prindo99.                                                       --
--          CODEX  # Event Touche-touche.                                            --
--          VERSION# BÊTA                                                            --
---------------------------------------------------------------------------------------
quest event begin
state start begin
	when 20041.chat."Activer l'event PNJ" with pc.is_gm() and pc.get_map_index() == 63 begin
		if game.get_event_flag("the_event_begin") == 1 then
			say_title("Gestion d'event")
			say("Que souhaitez-vous faire :")
			x=select("Arrêter l'event", "Quitter")
			if x == 2 then
				return
			else
				say_title("Arrêter l'event")
				say("Arrêt en cours de l'event.")
				say("[DELAY value;500]. . .[/DELAY]")
				notice_all("L'event a été arrêter par "..pc.name..".")
				game.set_event_flag("the_event_begin", 0)
			end
		end
		if game.get_event_flag("the_event_begin") == 0 then
			say_title("Gestion d'event")
			say("Que souhaitez-vous faire :")
			x=select("Démarrer l'event", "Quitter")
			if x == 2 then
				return
			else
				say_title("Démarrer l'event:")
				say("Avant de lancer l'event, vous devrez le configurer.")
				m=select("Configurer l'event", "Quitter")
				if m == 2 then
					return
				else
					say_title("Démarrer l'event:")
					say("Combien de temps voulez-vous que l'event dure ?")
                                               say("La durée est en secondes.")
					local temps = tonumber(input())
					while type(temps) != "number" do
						say_reward("Erreur de saisie. Vous devez saisir un nombre.")
						say_reward("Réésayez:")
						temps = tonumber(input())
					end
					while temps < 0 or temps == nil do
						say_reward("Erreur de saisie. Vous devez saisir")
						say_reward("un nombre entre 0 et l'infini.")
						say_reward("Réésayez:")
						temps = tonumber(input())
					end
					say("Quel est l'ID du PNJ pour l'empire Chunjo ?")
					local chunjo = tonumber(input())
					while type(chunjo) != "number" do
						say_reward("Erreur de saisie. Vous devez saisir un nombre.")
						say_reward("Réésayez:")
						chunjo = tonumber(input())
					end
					while chunjo <= 0 or chunjo == nil do
						say_reward("Valeur incorrecte.")
						say_reward("Veuillez saisir une valeur entre 0 et l'infini.")
						say_reward("Réésayez:")
						chunjo = tonumber(input())
					end
					say("Quel est l'ID du PNJ pour l'empire Jinno ?")
					local jinno = tonumber(input())
					while type(jinno) != "number" do
						say_reward("Erreur de saisie. Vous devez saisir un nombre.")
						say_reward("Réésayez:")
						jinno = tonumber(input())
					end
					while jinno <= 0 or jinno == nil do
						say_reward("Valeur incorrecte.")
						say_reward("Veuillez saisir une valeur entre 0 et l'infini.")
						say_reward("Réésayez:")
						jinno = tonumber(input())
					end
					say("Quel est l'ID du PNJ pour l'empire Shinsoo ?")
					local shinsoo = tonumber(input())
					while type(shinsoo) != "number" do
						say_reward("Erreur de saisie. Vous devez saisir un nombre.")
						say_reward("Réésayez:")
						shinsoo = tonumber(input())
					end
					while shinsoo <= 0 or shinsoo == nil do
						say_reward("Valeur incorrecte.")
						say_reward("Veuillez saisir une valeur entre 0 et l'infini.")
						say_reward("Réésayez:")
						shinsoo = tonumber(input())
					end
					say_title("Démarrer l'event:")
					say("Vous devez indiquer entre quel et quel coordonnées")
					say("devront apparaître aléatoirement les trois PNJ.")
					say_reward("Vous devez indiquer des coordonnées pour chaque")
					say_reward("empire.")
					funky = select("Indiquer les coordonnées", "Quitter")
					if funky == 2 then
						return
					else
						ol=select("Coordonnées PNJ Chunjo", "Quitter")
						if ol == 2 then
							return
						else
							say_title("Coordonnées X")
							say_reward("Exemple: 86300=X, 95200=Y")
							coord_x_chunjo = tonumber(input())
							while type(coord_x_chunjo) != "number" do
								say_reward("Erreur de saisie. Vous devez saisir un nombre.")
								say_reward("Réésayez:")
								coord_x_chunjo = tonumber(input())
							end
							while coord_x_chunjo == nil or coord_x_chunjo <= 0 do
								say_reward("Valeur incorrecte.")
								say_reward("Veuillez saisir une valeur entre 0 et l'infini.")
								say_reward("Réésayez:")
								coord_x_chunjo = tonumber(input())
							end
							say_title("Coordonnées Y")
							say_reward("Exemple: 86300=X, 95200=Y")
							coord_y_chunjo = tonumber(input())
							while type(coord_y_chunjo) != "number" do
								say_reward("Erreur de saisie. Vous devez saisir un nombre.")
								say_reward("Réésayez:")
								coord_y_chunjo = tonumber(input())
							end
							while coord_y_chunjo == nil or coord_y_chunjo <= 0 do
								say_reward("Valeur incorrecte.")
								say_reward("Veuillez saisir une valeur entre 0 et l'infini.")
								say_reward("Réésayez:")
								coord_y_chunjo = tonumber(input())
							end
							ol1=select("Coordonnées PNJ Jinno", "Quitter")
							if ol1 == 2 then
								return
							else
								say_title("Coordonnées X")
								say_reward("Exemple: 86300=X, 95200=Y")
								coord_x_jinno = tonumber(input())
								while type(coord_x_jinno) != "number" do
									say_reward("Erreur de saisie. Vous devez saisir un nombre.")
									say_reward("Réésayez:")
									coord_x_jinno = tonumber(input())
								end
								while coord_x_jinno == nil or coord_x_jinno <= 0 do
									say_reward("Valeur incorrecte.")
									say_reward("Veuillez saisir une valeur entre 0 et l'infini.")
									say_reward("Réésayez:")
									coord_x_jinno = tonumber(input())
								end
								say_title("Coordonnées Y")
								say_reward("Exemple: 86300=X, 95200=Y")
								coord_y_jinno = tonumber(input())
								while type(coord_y_jinno) != "number" do
									say_reward("Erreur de saisie. Vous devez saisir un nombre.")
									say_reward("Réésayez:")
									coord_y_jinno = tonumber(input())
								end
								while coord_y_jinno == nil or coord_y_jinno <= 0 do
									say_reward("Valeur incorrecte.")
									say_reward("Veuillez saisir une valeur entre 0 et l'infini.")
									say_reward("Réésayez:")
									coord_y_jinno = tonumber(input())
								end
								ol2=select("Coordonnées PNJ Shinsoo", "Quitter")
								if ol2 == 2 then
									return
								else
									say_title("Coordonnées X")
									say_reward("Exemple: 86300=X, 95200=Y")
									coord_x_shinsoo = tonumber(input())
									while type(coord_x_shinsoo) != "number" do
										say_reward("Erreur de saisie. Vous devez saisir un nombre.")
										say_reward("Réésayez:")
										coord_x_shinsoo = tonumber(input())
									end
									while coord_x_shinsoo == nil or coord_x_shinsoo <= 0 do
										say_reward("Valeur incorrecte.")
										say_reward("Veuillez saisir une valeur entre 0 et l'infini.")
										say_reward("Réésayez:")
										coord_x_shinsoo = tonumber(input())
									end
									say_title("Coordonnées Y")
									say_reward("Exemple: 86300=X, 95200=Y")
									coord_y_shinsoo = tonumber(input())
									while type(coord_y_shinsoo) != "number" do
										say_reward("Erreur de saisie. Vous devez saisir un nombre.")
										say_reward("Réésayez:")
										coord_y_shinsoo = tonumber(input())
									end
									while coord_y_shinsoo == nil or coord_y_shinsoo <= 0 do
										say_reward("Valeur incorrecte.")
										say_reward("Veuillez saisir une valeur entre 0 et l'infini.")
										say_reward("Réésayez:")
										coord_y_shinsoo = tonumber(input())
									end
									say_title("Démarrer l'event")
									say("Le PNJ devra donc spawn entre les coordonnées :")
									say_reward("Pour l'empire Chunjo :")
									say("X = "..coord_x_chunjo.." Y = "..coord_y_chunjo.."")
									say_reward("Pour l'empire Jinno :")
									say("X = "..coord_x_jinno.." Y = "..coord_y_jinno.."")
									say_reward("Pour l'empire Shinsoo :")
									say("X = "..coord_x_shinsoo.." Y = "..coord_y_shinsoo.."")
									u=select("Lancer l'event", "Quitter")
									if u == 2 then
										return			
									else
										say_title("Démarrer l'event")
										say("Démarrage en cours de l'event.")
										say("[DELAY value;500]. . . . . .[/DELAY]")
										game.set_event_flag("the_event_begin", 1)
										game.set_event_flag("rouge", 1)
										game.set_event_flag("bleu", 1)
										game.set_event_flag("jaune", 1)
										server_timer("funky", 15)
										timer("stop", temps)
										notice_all("Event touche-touche lancé ! Direction le désert !")
										mob.spawn(chunjo, 100, 100, coord_x_chunjo, coord_y_chunjo, 1)
										mob.spawn(shinsoo, 100, 100, coord_x_shinsoo, coord_y_shinsoo, 1)
										mob.spawn(jinno, 100, 100, coord_x_jinno, coord_y_jinno, 1)
									end
								end
							end
						end
					end
				end
			end
		end
	end
	when stop.timer begin
		if game.get_event_flag("the_event_begin") == 1 then
			game.set_event_flag("the_event_begin", 0)
			game.set_event_flag("rouge", 0)
			game.set_event_flag("bleu", 0)
			game.set_event_flag("jaune", 0)
			notice_all("Event touche-touche terminé !")
		end
	end	
	when funky.server_timer begin
		if game.get_event_flag("the_event_begin") == 1 then
			clear_server_timer("funky")
			server_timer("funky", 15)
			server_timer("respawn", 10)
		end
	end
	when respawn.server_timer begin
		if game.get_event_flag("the_event_begin") == 1 then
			local emp = pc.get_empire()
			local v = find_npc_by_vnum(chunjo)
			local w = find_npc_by_vnum(shinsoo)
			local x = find_npc_by_vnum(jinno)
			clear_server_timer("respawn")
			server_timer("respawn", 10)
			if game.get_event_flag("jaune") == 1 then
				mob.spawn(chunjo, 100, 100, coord_x_chunjo, coord_y_chunjo, 1)
			end
			if game.get_event_flag("rouge") == 1 then
				mob.spawn(shinsoo, 100, 100, coord_x_shinsoo, coord_y_shinsoo, 1)
			end
			if game.get_event_flag("bleu") == 1 then
				mob.spawn(jinno, 100, 100, coord_x_jinno, coord_y_jinno, 1)
			end
		end
	end
	when _TARGET_.target.click with game.get_event_flag("the_event_begin") == 1 and pc.get_empire() == 2 and pc.get_map_index() == 63 begin
		if game.get_event_flag("jaune") == 1 then
			local xv = pc.get_name()
			target.delete("_TARGET_")
			notice_all("Le gagnant de l'Empire Chunjo est "..xv.." !")
			game.set_event_flag("jaune", 0)
		end
	end
	when __TARGET__.target.click with game.get_event_flag("the_event_begin") == 1 and pc.get_empire() == 1 and pc.get_map_index() == 63 begin
		if game.get_event_flag("rouge") == 1 then
			local xv = pc.get_name()
			target.delete("__TARGET__")
			notice_all("Le gagnant de l'Empire Shinsoo est "..xv.." !")
			game.set_event_flag("rouge", 0)
		end
	end
	when ___TARGET___.target.click with game.get_event_flag("the_event_begin") == 1 and pc.get_empire() == 3 and pc.get_map_index() == 63 begin
		if game.get_event_flag("bleu") == 1 then
			local xv = pc.get_name()
			target.delete("___TARGET___")
			notice_all("Le gagnant de l'Empire Jinno est "..xv.." !")
			game.set_event_flag("bleu", 0)
		end
	end
	when login with pc.get_map_index() == 63 and game.get_event_flag("the_event_begin") == 1 begin
		local v = find_npc_by_vnum(chunjo)
		local w = find_npc_by_vnum(shinsoo)
		local x = find_npc_by_vnum(jinno)
		local emp = pc.get_empire()
		if game.get_event_flag("the_event_begin") == 1 then
			if emp == 1 then
				if game.get_event_flag("rouge") == 1 then
					if w!=0 then
						target.vid("__TARGET__", w, "Funky")
					end
				end
			end
			if emp == 2 then
				if game.get_event_flag("jaune") == 1 then
					if v!=0 then
						target.vid("_TARGET_", v, "Funky")
					end
				end
			end
			if emp == 3 then
				if game.get_event_flag("bleu") == 1 then
					if x!=0 then
						target.vid("___TARGET___", x, "Funky")
					end
				end
			end
		end
	end
end
end

 

 

Remerciements:

Je tenais à remercier les deux jumeaux, Sparkk et Sparks ainsi qu'Hystos pour l'aide apportée qui a été utile et enrichissante autant pour moi ( pour en apprendre davantage ) que pour la quête, qui a fait que j'ai pu l'améliorée et la finaliser.

 

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

 

Source : prindo99

 

  • Love 3
Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 19
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

Non, non et renon ! :D

 

Il y a une incohérence, voici un exemple

 

                              coord_x_chunjo = tonumber(input())
                               while type(coord_x_chunjo) != "number" do
                                   say_reward("Erreur de saisie. Vous devez saisir un nombre.")
                                   say_reward("Réésayez:")
                                   coord_x_chunjo = tonumber(input())
                               end

 

Ta variable cord_x_chunjo sera OBLIGATOIREMENT de type nombre vu que tu traduis ce qu'écris l'utilisateur dans le input en nombre avec la fonction tonumber(). Ce qui signifie que le type sera toujours number même si tu rentres du texte :)

Lien vers le commentaire
Partager sur d’autres sites

Autant pour moi, j'avais mal lu la description de la fonction (qui est d'ailleurs totalement débile mais bon *.*). Je pensais que les chaines de texte étaient converties en numériques.

Si j'insère " bloug ", ça va convertir " bloug " en quel chiffre ? Sûrement pas une valeur que le GM cherche. Donc, autant mettre cette protection.

Lien vers le commentaire
Partager sur d’autres sites

Dans le cas où le gm rentre une chaîne de caractère dans le input, tonumber(input()) renvoie nil et type(nil) renvoie "nil", donc est bien différent de "number"

(pour répondre à ta question prindo)

 

Le input() renvoie automatiquement une chaîne ou bien si l'utilisateur rentre des nombres il sera de forme numérique ?

Lien vers le commentaire
Partager sur d’autres sites

  • Développeur

Le nom de la quête m'a directement fait pensé à un VRAI touche touche je me suis dis voila une bonne idée.

 

L'idée y est, c'est le principal.

 

Je regarde la quête et je vois un truc que j'ai déjà fait 100 fois.

 

Excuse-nous, on ne savait pas que tu étais si fort en Lua.

Non mais tu t'entends ? À te voir on croirait que tu sais tout sur tout sur l'émulation metin. J'aimerais bien te voir faire une quête du même style tiens, ça te changerait les idées.

 

T'es fort pour critiquer les idées des autres, mais je te ferais rappeler que les seuls sujets que t'as ouvert sont une demande d'aide et ta présentation. Fais un effort, avant de critiquer les autres tu devrais participer aux partages.

Lien vers le commentaire
Partager sur d’autres sites

En attendant moi je fais quelque chose qui est accepté par le règlement.

Je critique et toi tu commentes ma critique ce qui est censé me faire donc répondre à nouveau et cela apparaît par la suite comme un "flood" du sujet. En autre, ici tu es suspect selon moi d'une action menant à l'agressivité sur un sujet dont le règlement l'interdit. Après je dis ça ...

Je pose ma critique, qu'elle soit bonne ou mauvaise, en quoi cela te concerne ? Imagine si tu devais commenter chaque commentaire d'un film que tu as trouvé bien mais que d'autres trouve nul ... Tu es pas sortit mon coco. :D

Sur ce petit message d'indication, je ne posterai que mes critiques et si tu veux t'amuser, bah tape toi 10% par le règlement tout seul

PS : En attendant, j'aide tout le monde sur la section aide et support. Certe je ne partage pas et j'ai mes raisons sinon j'aurai partagé dès mon arrivée.

Lien vers le commentaire
Partager sur d’autres sites

Croko, ton dernier et seul partage tu l'as supprimé pour raison : " Funky ne mérite pas de partages ".

Malgré que le règlement me contredit, je ne te permet pas de critiquer cette quête. Moi je fais avancer la communauté, toi non. Tu dis avoir critiqué ? Une critique sert à faire avancer, s'améliorer, tandis que ta phrase avait selon moi pour but de me rabaisser et de faire le petit malin, je cite : " je vois un truc que j'ai déjà fait 100 fois. ". 100 fois ? C'est bien prétentieux, qui irait faire une quête en 100 fois ? Quel mensonge... Je te prie de passer ton chemin merci, si funky ne mérite pas de partage alors toi tu ne mérites même pas d'être ici.

 

P.S. : Tu aurais dû utiliser le mot " rabaisser " au lieu de " critiquer " car en attendant toi tu n'as rien partagé.

Lien vers le commentaire
Partager sur d’autres sites

  • Développeur

ici tu es suspect selon moi d'une action menant à l'agressivité sur un sujet dont le règlement l'interdit. Après je dis ça ...

 

C'est pas moi monsieur l'inspecteur, j'vous jure ! :angel:

 

N'essaie pas d'éviter les commentaires que je fais sur ta façon de te comporter, ça me concerne en ce que j'ai participé au développement de la quête.

 

Critiquer les posts des autres, c'est ton droit, je n'ai rien contre ça. Ce que je te reproche c'est de ne rien partager en faisant celui qui sait tout mieux qu'un autre. Si je peux me permettre de te rappeler qu'il existe une opération "Apprendre et Partager" à laquelle il serait bien que tu participes étant donné que tu sais tant de choses. Tu aides tout le monde ? C'est pas ce que j'ai vu. Tu cherches une solution que tu n'as pour le moment pas. C'est sûr, je pense que tu es loin d'être con et que tu as probablement un certain talent pour un certain domaine, mais évite d'afficher ostentatoirement ce que tu prétends savoir faire.

Lien vers le commentaire
Partager sur d’autres sites

  • Retraité

Évitez tout débordement, merci.

Pour la quête c'est pas mal prindo, tu commences à t'y faire avec néanmoins une manière différente de faire je vais dire.

Mais chacun à son style, bien vu.

 

J'aimerai te voir dans des quêtes plus complexe, dans de vrai challenge, tu peux mieux faire, beaucoup mieux faire.

Bye !

You can't be immortal,
But you can make people remember
you for thousands of years...

Lien vers le commentaire
Partager sur d’autres sites

  • Développeur

Beau travail, c'est une bonne quête qui peut faire souffrir les gens a pied :D

 

Un kilomètre à pieds, ça use ça use, un kilomètre à pieds, ça use les souliers ! Deux k... Bon j'arrête là sinon j'en ai pour la nuit.

 

Oui galet, c'est un beau travail étant donné que l'idée est bien trouvée.

Lien vers le commentaire
Partager sur d’autres sites



  • brilliantdiscord_widget
  • Flux d'Activité

    1. 37
    2. 21

      Metin2 en 2020 peut-on en parler?

    3. 0

      METIN2Project

    4. 3

      Ressources - UnPack - Metin2 Client - Officiel

    5. 0

      Barre des tâches d'argent étendue

    6. 16

      Redémarrage automatique des channels

    7. 16

      Multi Logo GM / SGM / GA

  • En ligne récemment

    • Aucun utilisateur enregistré regarde cette page.

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.