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

[Jeu] Bleu ou rouge


Swice

Messages recommandés

Centre de Téléchargement

Hidden Content

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

Bonjour à toutes et à tous !

 

Ceci est mon premier partage, je vous demande donc de ne pas être trop dur s'il y a des erreurs, mais plutôt de m'aider à les corriger pour que je ne les reproduise plus dans le futur. ;)

 

Je vous explique tout d'abord à quoi sert cette quête, qui n'a pas été testé.

 

Le joueur parle au pnj, qui lui propose de choisir une couleur.

Si la carte tirée est de cette couleur, il a gagné, sinon, il a perdu.

 

Ensuite, il doit dire si la prochaine sera plus grande ou plus petite que celle qu'il possède.

 

C'est en faite un petit jeu qui fait passer le temps.

 

Je vais maintenant vous montrer les lignes qu'il faut modifier, et ce qu'elles modifient.

 

Pour modifier le vnum du pnj à qui parler :

when ID_DU_PNJ.chat."Bleu ou Rouge ?" begin
 

 

 

Pour modifier les récompenses :

pc.give_item2(20003)
pc.give_item2(20004)
 

 

Attention, ces lignes sont présentes un grand nombre de fois.

 

 

Pour enlever la limite de temps d'une semaine :

 

Enlevez ces lignes :

if pc.getqf("blue_red") == 0 then
 
say("Vous pourrez retenter votre chance dans une semaine.")
 
timer("bleu_rouge", 7*24*60*60)
 

 

 

Attention, il y a 3 timer dans la quest.

 

when bleu_rouge.timer begin
pc.setqf("blue_red", 0)
end
 

Ces 3 dernières lignes.

 

Je vous partage maintenant la quête dans son intégralité. Je sais qu'elle n'était pas dur à faire, mais je débute ;)

Révélation

 

quest bleu_rouge begin
state start begin
	when ID_DU_PNJ.chat."Bleu ou Rouge ?" begin
		if pc.qetqf("blue_red") == 0 then
			say_title("Bienvenue "..pc.getname.." !")
			say("")
			say("Je vais vous proposer un petit jeu..")
			local b1 = select ("Jouer", "But du jeu", "Fermer")
			if b1 == 1 then
				say_title("Bleu ou Rouge")
				local b4 = select ("Bleu", "Rouge")
				if b4 == 1 then
					pc.setqf("bleu", 1)
					pc.setqf("bleu_rouge", 1)
				else b4 == 2 then
					pc.setqf("rouge", 1)
					pc.setqf("bleu_rouge", 1)
				end
				if pc.qetqf("bleu_rouge") == 1 then
					local b2 = select ("Tirer une carte", "Fermer")
					if b2 == 1 then
						local b3 = number(1,2)
						if b3 == 1 then
							Say("La carte est bleue !")
							if pc.qetqf("bleu") == 1 then
								say("Vous avez remporté cette manche.")
								pc.give_item2(20003)
								pc.setqf("bleu_rouge", 2)
							elseif pc.qetqf("rouge") == 1 then
								say("Dommage, vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 2)
							end
						elseif b2 == 2 then
							if pc.qetqf("bleu") == 1 then
								say("Dommage, vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 2)
							elseif pc.qetqf("rouge") == 1 then
								say("Vous avez remporté cette manche.")
								pc.give_item2(20003)
								pc.setqf("bleu_rouge", 2)
							end
						end
					elseif b2 == 2 then
						say("Le jeu est remis à zéro.")
						say("")
						say("Vous pourrez retenter votre chance dans une semaine.")
						timer("bleu_rouge3", 7*24*60*60)
						say("A bientôt")
					end
				end	
				if pc.qetqf("bleu_rouge") == 2 then
					say_title("Plus ou Moins ?")
					local p1 = number(1,13)
					if p1 == 1 then
						say("Votre carte est un As.")
						say("La prochaine est-elle plus petite ou plus grande ?")
						local p2 = select ("Plus petite", "Plus grande")
						if p2 == 1 then
							local p3 = number (1,13)
							if p3 = 1 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						elseif p2 == 2 then
							local p4 = number (1,13)
							if p4 >= 1 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						end
					elseif p1 == 2 then
						say("Votre carte est un Deux.")
						say("La prochaine est-elle plus petite ou plus grande ?")
						local p5 = select ("Plus petite", "Plus grande")
						if p5 == 1 then
							local p6 = number (1,13)
							if p6 <= 2 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						elseif p5 == 2 then
							local p7 = number (1,13)
							if p7 >= 2 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						end
					elseif p1 == 3 then
						say("Votre carte est un Trois.")
						say("La prochaine est-elle plus petite ou plus grande ?")
						local p8 = select ("Plus petite", "Plus grande")
						if p8 == 1 then
							local p9 = number (1,13)
							if p9 <= 3 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						elseif p8 == 2 then
							local p10 = number (1,13)
							if p10 >= 3 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						end
					elseif p1 == 4 then
						say("Votre carte est un Quatre.")
						say("La prochaine est-elle plus petite ou plus grande ?")
						local p11 = select ("Plus petite", "Plus grande")
						if p11 == 1 then
							local p12 = number (1,13)
							if p12 <= 4 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						elseif p11 == 2 then
							local p13 = number (1,13)
							if p13 >= 4 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						end
					elseif p1 == 5 then
						say("Votre carte est un Cinq.")
						say("La prochaine est-elle plus petite ou plus grande ?")
						local p14 = select ("Plus petite", "Plus grande")
						if p14 == 1 then
							local p15 = number (1,13)
							if p15 <= 5 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						elseif p14 == 2 then
							local p16 = number (1,13)
							if p16 >= 5 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						end
					elseif p1 == 6 then
						say("Votre carte est un Six.")
						say("La prochaine est-elle plus petite ou plus grande ?")
						local p17 = select ("Plus petite", "Plus grande")
						if p17 == 1 then
							local p18 = number (1,13)
							if p18 <= 6 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						elseif p17 == 2 then
							local p19 = number (1,13)
							if p19 >= 6 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						end
					elseif p1 == 7 then
						say("Votre carte est un Sept.")
						say("La prochaine est-elle plus petite ou plus grande ?")
						local p20 = select ("Plus petite", "Plus grande")
						if p20 == 1 then
							local p21 = number (1,13)
							if p21 <= 7 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						elseif p20 == 2 then
							local p22 = number (1,13)
							if p22 >= 7 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						end
					elseif p1 == 8 then
						say("Votre carte est un Huit.")
						say("La prochaine est-elle plus petite ou plus grande ?")
						local p23 = select ("Plus petite", "Plus grande")
						if p23 == 1 then
							local p24 = number (1,13)
							if p24 <= 8 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						elseif p23 == 2 then
							local p25 = number (1,13)
							if p25 >= 8 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						end
					elseif p1 == 9 then
						say("Votre carte est un Neuf.")
						say("La prochaine est-elle plus petite ou plus grande ?")
						local p26 = select ("Plus petite", "Plus grande")
						if p26 == 1 then
							local p27 = number (1,13)
							if p27 <= 9 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						elseif p26 == 2 then
							local p28 = number (1,13)
							if p28 >= 9 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						end
					elseif p1 == 10 then
						say("Votre carte est un Dix.")
						say("La prochaine est-elle plus petite ou plus grande ?")
						local p29 = select ("Plus petite", "Plus grande")
						if p29 == 1 then
							local p30 = number (1,13)
							if p30 <= 10 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						elseif p29 == 2 then
							local p31 = number (1,13)
							if p31 >= 10 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						end
					elseif p1 == 11 then
						say("Votre carte est un Valet.")
						say("La prochaine est-elle plus petite ou plus grande ?")
						local p32 = select ("Plus petite", "Plus grande")
						if p32 == 1 then
							local p33 = number (1,13)
							if p33 <= 11 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						elseif p32 == 2 then
							local p34 = number (1,13)
							if p34 >= 11 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						end
					elseif p1 == 12 then
						say("Votre carte est une Dame.")
						say("La prochaine est-elle plus petite ou plus grande ?")
						local p35 = select ("Plus petite", "Plus grande")
						if p35 == 1 then
							local p36 = number (1,13)
							if p36 <= 12 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						elseif p35 == 2 then
							local p37 = number (1,13)
							if p37 >= 12 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						end
					elseif p1 == 13 then
						say("Votre carte est un Roi.")
						say("La prochaine est-elle plus petite ou plus grande ?")
						local p38 = select ("Plus petite", "Plus grande")
						if p38 == 1 then
							local p39 = number (1,13)
							if p39 <= 13 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						elseif p38 == 2 then
							local p40 = number (1,13)
							if p40 = 13 then
								say("Vous avez gagné cette manche !")
								pc.give_item2(20004)
								pc.setqf("bleu_rouge", 3)
							else
								say("Vous avez perdu cette manche.")
								pc.setqf("bleu_rouge", 3)
							end
						end
					end
				end
				if pc.getqf("bleu_rouge") == 3 then
					pc.setqf("blue_red", 1)
					say_title("C'est la fin de ce petit jeu.")
					say("")
					say("Vous pourrez retenter votre chance dans une semaine !")
					timer("bleu_rouge", 7*24*60*60)
					say("")
					say("Bonne journée et bon jeu sur FreeWorld !")
				end
			elseif b1 == 2 then
				say_title("But du jeu")
				say("")
				say("La première manche :")
				say("Choisissez une couleur ; si la carte est de")
				say("cette couleur, vous avez gagné.")
				say("Si vous avez faux, vous pouvez quand même continuer !")
				wait()
				say_title("But du jeu")
				say("")
				say("Deuxième étape :")
				say("Vous allez tirer une carte, puis, dire si la carte est")
				say("plus grande ou plus petite que la prochaine.")
			elseif b1 == 3 then
				say("Le jeu est remis à zéro.")
				say("")
				say("Vous pourrez retenter votre chance dans une semaine.")
				timer("bleu_rouge2", 7*24*60*60)
				say("A bientôt")
			end
		end
	end

	when bleu_rouge.timer begin
		pc.setqf("blue_red", 0)
	end

	when bleu_rouge2.timer begin
		pc.setqf("blue_red", 0)
	end

	when bleu_rouge3.timer begin
		pc.setqf("blue_red", 0)
	end
end
end

 

 

 

 

 

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

 

Voilà, voilà, à vos critiques ! :)

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

risque pas d'marcher, faut que t'utilise "pc.setqf()" et "pc.getqf()" et pas des game flag qui sont pour tout l'serveur

 

aussi c'est pas un timer à utiliser, le timer quand le personnage déconnecte il est annulé si j'me souviens bien

téma la quete des notices c'est la mm chose

Lien vers le commentaire
Partager sur d’autres sites

Je viens de remarquer ça, merci.

Je vais donc remplacer l'ancien par le nouveau (avec "pc.getqf" et "pc.setqf").

Je met également le lien de téléchargement à jour.

 

Pour le timer, je ne sais pas s'il reste après une déconnexion, mais les joueurs peuvent utiliser un autre personnage, donc de toute façon je ne pense pas que ça soit très utile.

Lien vers le commentaire
Partager sur d’autres sites

En effet, comme l'a précisé Prindo, les timer partiront au prochain logout.

Le meilleur moyen de faire une limite de temps pour un personnage est de rajouter un quest flag avec à l'intérieur un timestamp.

 

De plus, je pense que la quête plantera au compilage. Tu n'as pas le droit d'écrire :

 

if condition then
   //actions
else condition2 then
   //actions
end

 

 

C'est absolument interdit. Soit tu mets juste "else" (= dans tous les autres cas), soit tu mets "elseif".

 

On voit que tu es motivé. Pour améliorer ton code, je te propose plusieurs optiques :

  • Essaie de donner à tes variables de vrais noms compréhensibles pour qu'on voit tout de suite ce à quoi elles font références. En effet, tu t'es régulièrement planté de variables (exemple à la fin). Tel quel, ton code ne fonctionnera surement pas.
  • Rajouter un commentaire de temps en temps n'est pas une mauvaise chose (même si dans le cas d'une quête simple comme celle-ci ce n'est pas nécessaire).
  • Essaie d'optimiser au maximum ton code. A la place de faire 50 000 if / else, essaie de manipuler les données avec plus de doigté. A la base, l'informatique est fait pour les flemmards. Ton but : faire le maximum de chose avec le moins de lignes possibles et avec la plus grande modularité. Evidemment, c'est pas toujours évident mais dans ton cas, cela aurait pu être amélioré. Voici un petit exemple :
     
    - Code original (désolé pour l'indentation, c'est pas facile sur les forums en copié/collé)
                              local b3 = number(1,2)
                              if b3 == 1 then
                                   Say("La carte est bleue !")
                                   if pc.qetqf("bleu") == 1 then
                                       say("Vous avez remporté cette manche.")
                                       pc.give_item2(20003)
                                       pc.setqf("bleu_rouge", 2)
                                   elseif pc.qetqf("rouge") == 1 then
                                       say("Dommage, vous avez perdu cette manche.")
                                       pc.setqf("bleu_rouge", 2)
                                   end
                               elseif b2 == 2 then
                                   if pc.qetqf("bleu") == 1 then
                                       say("Dommage, vous avez perdu cette manche.")
                                       pc.setqf("bleu_rouge", 2)
                                   elseif pc.qetqf("rouge") == 1 then
                                       say("Vous avez remporté cette manche.")
                                       pc.give_item2(20003)
                                       pc.setqf("bleu_rouge", 2)
                                   end
                               end
    


     
    - et la correction

    //Le choix de ton utilisateur devrait être mis dans un quest flag choix, ayant pour valeur 1 ou 2 (bleu ou rouge), 
    ce qui réduira encore le nombre de lignes inutiles. On admettra ce fait pour la suite.
    local b3 = number(1,2)
    local couleurs_name = {"bleue", "rouge"}
    say("Le carte est "..couleurs_name[b3].." ! ")
    if b3 == pc.getqf("choix") then
         say("Vous avez remporté cette manche.")
         pc.give_item2(20003)
    else
         say("Dommage, vous avez perdu cette manche.")
    end
    pc.setqf("bleu_rouge", 2)                      
    


     
    Je divise par 2 le nombre de lignes utilisées pour la même chose, et rend le code beaucoup plus modulable. Par exemple, si tu veux changer le nom d'une couleur, c'est très rapide et facile à faire. Si tu veux en rajouter une aussi...

 

Si tu as des questions, tu as mon Skype.

Lien vers le commentaire
Partager sur d’autres sites

ProleptylMT2, je pense que tu t'es trompé ici :

 

local b3 = number(1,2)
local couleurs_name = {"bleue", "rouge"}
say("Le carte est "..couleurs_name[b3-1].." ! ")

 

en lua, l'index de "départ" d'un tableau est 1 et non 0. donc le [b3-1] devrait être remplacé par un simple [b3].

Lien vers le commentaire
Partager sur d’autres sites

  • 3 ans après...


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.