Aller au contenu
  • 0

Bug quest


thomasx3

Question

J'ai un problème avec une quête , elle etait adaptée sur un anneau avec plusieurs fonction dessus , j'ai voulu la mettre seul sur un anneau mais elle fait un petit problème quand je recompile les quêtes

 

Version des files :2012

Domaine (Base de données, Core, etc.) :Core

Votre niveau (débutant, intermédiaire, avancé) :intermédiaire

 

sur putty quand je recompile les quete arrivée a cette quete sa m'affiche sa :

 

assertion failure : nested==0

anneaubanque.quest:71:Abort trap (core dumped)

 

Je vous montre la quête :

 

 

quest anneau_banque begin
   state start begin
       when 40002.use begin
              say_title("Banque")
               say("Veuillez choisir une fonction :")
               local s = select("Stocker des yangs", "Retirer des yangs", "Voir létat de mon compte", "Fermer")

               -- Stock yangs --
               if s == 1 then
                   say_title("Banque")
                   say("Combien de yangs voulez-vous stocker ?")
                   say_reward("Vous avez : "..pc.gold.." yangs.")
                   say("")
                   i = tonumber(input())
                   if i <= 0 or i == "" then
                       return
                   end
                   if i > pc.gold then
                   i = pc.gold
                   end
                   j = i + pc.getqf("nb_yang")
                   while j >= 1000000000 do
                       pc.setqf("nb_milliard", pc.getqf("nb_milliard")+1)
                       j = j - 1000000000
                   end
                   pc.setqf("nb_yang", j)
                   pc.change_gold(-i)
                   syschat(i.." yangs stockés.")

               -- Retire et voir le compte --
               elseif s == 2 or s == 3 then
                   say_title("Banque")
                   say("")
                   say("Yangs sur votre compte :")
                   a = ""

                   c = ""
                   if pc.getqf("nb_milliard") > 0 then
                       a = pc.getqf("nb_milliard")
                       b = 100000000
                       while b > pc.getqf("nb_yang") and b != 1 do
                           c = c.."0"
                           b = b/10
                       end
                   end
                   say_reward(a..""..c..""..pc.getqf("nb_yang"))
                   say("")
                   if s == 3 then return end
                   say("Combien de yangs voulez-vous retirer ?")
                   say("")
                   i = tonumber(input())
                   if i <= 0 or i == "" then return end
                   if i > pc.getqf("nb_milliard")*1000000000 + pc.getqf("nb_yang") then
                       i = pc.getqf("nb_milliard")*1000000000 + pc.getqf("nb_yang")
                   end
                   if pc.gold + i > 1999999999 then
                    syschat("Action impossible vous allez dépasser les 2 milliards.")
                       return
                   end
                   pc.change_gold(i)
                   if i >= 1000000000 then
                       pc.setqf("nb_milliard", pc.getqf("nb_milliard")-1)
                       i = i - 1000000000
                   end
                   pc.setqf("nb_yang", pc.getqf("nb_yang")-i)
                   if pc.getqf("nb_yang") < 0 then
                       pc.setqf("nb_yang", pc.getqf("nb_yang")+1000000000)
                       pc.setqf("nb_milliard", pc.getqf("nb_milliard")-1)
		end
               end
end

 

merci a vous

 

En postant ma demande d'aide, j'affirme avoir lu et accepté le règlement des demandes d'aides.

Memento mei.

Lien vers le commentaire
  • Réponses 7
  • Created
  • Dernière réponse

Top Posters For This Question

Popular Days

Top Posters For This Question

7 réponses à cette question

Messages recommandés

  • 0
  • Développeur

C'est la balise

 qu'il faut mettre, pas 
la balise citation enlève les tabulations.

Je te donne un lien qui te sera utile: https://funky-emu.net/showthread.php?tid=34914[/b]

 

Il manque un end il me semble. Rajoutes-en un à la fin.

 

[b]C'est quelque chose qu'il faut éviter de faire au hasard comme ça. C'est une astuce qui

ne marchera qu'avec de la chance, sinon ça ne fera qu'empirer l'état de la quête.

Pour corriger les problèmes de end il faut d'abord organiser la quête avec des tabulations aux

bons endroits, de ce fait on peut voir si un end a été oublié ou non.[/b]

Lien vers le commentaire
  • 0

quest anneau_banque begin
   state start begin
       when 40002.use begin
              say_title("Banque")
               say("Veuillez choisir une fonction :")
               local s = select("Stocker des yangs", "Retirer des yangs", "Voir létat de mon compte", "Fermer")

               -- Stock yangs --
               if s == 1 then
                   say_title("Banque")
                   say("Combien de yangs voulez-vous stocker ?")
                   say_reward("Vous avez : "..pc.gold.." yangs.")
                   say("")
                   i = tonumber(input())
                   if i <= 0 or i == "" then
                       return
                   end
                   if i > pc.gold then
                   i = pc.gold
                   end
                   j = i + pc.getqf("nb_yang")
                   while j >= 1000000000 do
                       pc.setqf("nb_milliard", pc.getqf("nb_milliard")+1)
                       j = j - 1000000000
                   end
                   pc.setqf("nb_yang", j)
                   pc.change_gold(-i)
                   syschat(i.." yangs stockés.")

               -- Retire et voir le compte --
               elseif s == 2 or s == 3 then
                   say_title("Banque")
                   say("")
                   say("Yangs sur votre compte :")
                   a = ""

                   c = ""
                   if pc.getqf("nb_milliard") > 0 then
                       a = pc.getqf("nb_milliard")
                       b = 100000000
                       while b > pc.getqf("nb_yang") and b != 1 do
                           c = c.."0"
                           b = b/10
                       end
                   end
                   say_reward(a..""..c..""..pc.getqf("nb_yang"))
                   say("")
                   if s == 3 then return end
                   say("Combien de yangs voulez-vous retirer ?")
                   say("")
                   i = tonumber(input())
                   if i <= 0 or i == "" then return end
                   if i > pc.getqf("nb_milliard")*1000000000 + pc.getqf("nb_yang") then
                       i = pc.getqf("nb_milliard")*1000000000 + pc.getqf("nb_yang")
                   end
                   if pc.gold + i > 1999999999 then
                    syschat("Action impossible vous allez dépasser les 2 milliards.")
                       return
                   end
                   pc.change_gold(i)
                   if i >= 1000000000 then
                       pc.setqf("nb_milliard", pc.getqf("nb_milliard")-1)
                       i = i - 1000000000
                   end
                   pc.setqf("nb_yang", pc.getqf("nb_yang")-i)
                   if pc.getqf("nb_yang") < 0 then
                       pc.setqf("nb_yang", pc.getqf("nb_yang")+1000000000)
                       pc.setqf("nb_milliard", pc.getqf("nb_milliard")-1)
				end
			end
	end
end
end

 

Essaye ça. Il manquait un end pour le "elseif" qui se trouve ligne 31, et il en manquait un pour le "if" qui se trouve ligne 66.

Lien vers le commentaire
Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.


×
×
  • Créer...

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.