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

beug bloque exp


mandrilux²

Question

Bonjour .

j'ai un serveur sous les fichiers 2013 et j'ai un soucis

 

j'ai une quette qui permet de bloquer l'exp , elle fonctionne mais defois un joueur va prendre plein de niveau d'un coup. cela fausse completement le serveur car les joueur en abuse de ce beug pour monté leur niveau

 

je cherche d'ou cela peux venir mais je ne trouve pas .

Lien vers le commentaire
Partager sur d’autres sites

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

Meilleurs contributeurs dans cette question

Meilleurs contributeurs dans cette question

4 réponses à cette question

Messages recommandés

  • 0

voila la quest

 

 

uest vide_exp begin
state start begin
	when 50002.use begin			---                                                   l
		say("Gestion de l'expérience.")

		local s=select("Bloquer mon expérience", "Débloquer mon expérience", "Vider mon expérience", "Fermer")

		if s==4 then
			return
		end

		if s==1 then
		---                                                   l

		if pc.getqf("lock_exp") == 1 then
			---                                                   l
			say_reward("Votre expérience est déjà bloqué.")
		else
			---                                                   l
			say("Bonjour, si vous le souhaitez je peux bloquer")
			say("votre expérience, pour pouvoir dropper")
			say("tranquillement.")
			say("Voulez-vous bloquer l'expérience ?")

			local lock=select("Oui" ,"Non")

				say_title(""..mob_name(70025)..":")

				if lock==2 then
					---                                                   l
					say("Revenez plus tard si vous changez d'avis.")
				end

				if lock==1 then
					---                                                   l
					say("Voilà, votre expérience est bloquée !")
					wait()
					pc.setqf("lock_exp", 1)
					pc.setqf("exp_lock", pc.get_exp())
				end
			end
		end

		if s==2 then
		---                                                   l
		say_title(""..mob_name(70025)..":")

		if pc.getqf("lock_exp") == 0 then
			---                                                   l
			say_reward("Votre expérience n'est pas bloqué.")
		else
			---                                                   l
			say("Voulez-vous que je débloque votre expérience ?")

			local unlock=select("Oui","Non")

				if unlock==2 then
					return
				end

				if unlock==1 then
					---                                                   l
					say("Voilà, votre expérience est débloquée.")
					wait()
					pc.setqf("lock_exp", 0)
					pc.setqf("exp_lock", 0)
				end    
			end
		end

		if s==3 then
		---                                                   l
		say_title(""..mob_name(70025)..":")
		say("Etes vous sûr de vouloir vider votre expérience ?")

		local vider=select("Oui" ,"Non")

			if vider==2 then
				return
			end

			if vider==1 then
				pc.give_exp2(-pc.get_exp())
			end
		end
	end

	when kill with pc.getqf("lock_exp") == 1 begin
		pc.give_exp2(-pc.get_exp())
		pc.give_exp2(pc.getqf("exp_lock"))
	end    
end    

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Bonsoir,

 

Les joueurs se mettent-ils en groupe pour utiliser le bug ?

 

Celui qui a codé la quête a-t-il réfléchit au fait que le joueur pouvait monter de niveau entre temps ?

when kill with pc.getqf("lock_exp") == 1 begin

      pc.give_exp2(-pc.get_exp())
      pc.give_exp2(pc.getqf("exp_lock"))
end    

 

Ton code marche très bien lorsque les joueurs ne changent pas de niveau :

  • Tu retires l'expérience qu'il possède
  • Tu lui ajoutes celle qu'il avait avant

Sauf que ton code ne sait pas si le joueur monte de niveau. Dans ce cas :

  • Tu enlèves d'abord l'expérience qu'il a (celle qu'il a obtenu après la montée)
  • Tu lui ajoutes celle qu'il avait avant la montée

S'il avait 99% et se retrouve à 0.2%, il y a un problème.. il se retrouvera au niveau suivant avec 99%

 

 

Je vais te proposer une solution.

 

Dans le cas d'une montée de niveau, tu ne peux pas enlever l'expérience du niveau inférieur.

Donc on est coincé..

 

Je te soumet donc cette idée :

  • Si le joueur veut bloquer son expérience, sauvegardes-la dans une variable setqf

Après, soit :

  • Tu vides son expérience à chaque fois qu'il dépasse 80%
  • Quand il débloque, tu lui rends l'expérience sauvegardée

Penses à expliquer le système aux joueurs avant qu'ils acceptent.

 

Soit :

  • Tu fais en sort que l'expérience gagnée soit retirée directement en ajoutant dans le when kill : pc.give_exp2(-pc.get_exp())

Ce qui permet de ne pas montrer que la barre d'expérience se remplit, elle reste toujours à 0.

 

Bonne soirée !

Lien vers le commentaire
Partager sur d’autres sites

Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.


  • brilliantdiscord_widget
  • Flux d'Activité

    1. 0

      Renouveau

    2. 0

      OldEraMT2 recrute – la bêta ouverte est en cours

    3. 0

      OldEraMT2 | Classique 2009 Oldschool | Niveau 99 | 7 langues | Sans pay2win | Bêta ouverte

    4. 6

      problème de connexion à mon serveur local (je suis débutant dans ce genre d'entreprise )

    5. 2

      problème de lancement serveur

    6. 9
    7. 0

      [PVM/PVP] ATLAX2 - EASY PLAY

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.