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

[EN COURS - QUEST] d.count_monster() imprécis


Sufhal

Question

  • Retraité

Bonjour à toutes et à tous ! 

 

Je viens vers vous aujourd'hui car il m'arrive un truc assez étrange pendant que j'écris ma quête pour une instance.

En faite le problème vient de la fonction d.count_monster() qui ne renvoie quasiment jamais la bonne valeur !

 

En effet dans la quête j'ai plusieurs appel de regen.txt : 

- regen_1.txt contient 1 metin

- regen_2.txt contient 1 autre metin

- regen_3.txt contient 5 metin

- regen_4.txt contient 5 autres metin

 

J'ai fait en sorte qu'à chaque kill, la quest m'affiche le résultat de d.count_monster() via un party.chat et c'est là que l'on voit bien qu'il y a quelque chose d'anormal :

- Quand je casse la metin du regen_1.txt, il m'affiche 1

- Quand je casse la metin du regen_2.txt, il m'affiche encore 1

- Quand je casse la première metin du regen_3.txt, il m'affiche 6, quand je casse la deuxième il m'affiche encore 6, quand je casse la troisième, il affiche 4 et pour les deux dernières il m'affiche 2...

- Pour les dernières metin du regen_4.txt, il affiche 5 (contre 6 pour le regen précédent alors qu'il y avait le même nombre de metin) pour les deux premières, 3 pour la troisième et 2 pour les deux dernières.

 

Du coup il m'est impossible de contrôler les étapes dans le donjon avec ce d.count_monster() qui compte des fantômes ou qui ne s'actualise trop lentement...

 

Voici la quête en question : 

 

 

quest sufhal_instance_50 begin   state start begin       --------------------------------------- ENTER ---------------------------------------       when 20004.chat."Salle d'entrainement 50" begin           say_title("Mendiant:")           say("Vous voulez vous entrainer ?")           say("")           local s = select("Yep", "Fermer")           if s == 2 then               return           end           if party.is_party() then               if not party.is_leader() then                   say_title("Mendiant:")                   say("Vous n'êtes pas le chef du Groupe!")                   say("")               else                       say_title("Mendiant:")                   say("Vous allez être téléporté dans quelques instants,")                   say("votre groupe vous suivera.")                   say("")                   party.chat("Vous êtes sur le point d'entrer dans la salle.")                   notice_all("Le groupe de "..pc.get_name().." est entré dans la salle.")                   wait()                   d.join(103)                   --d.new_jump_party(5,7680,4352)                   party.setf("training_map_index",d.get_map_index())                   party.setf("level", 1)                   d.regen_file("data/instance/1/regen_1.txt")               end           end       end       --------------------------------------- START CHOICE ---------------------------------------       when 8001.kill with party.getf("training_map_index") > 0 and party.getf("level") == 1 begin           d.clear_regen()           d.kill_all()           party.setf("level", 2)           party.setf("choice", 1)           party.chat("Préparez-vous, le niveau 2 se présentera à vous dans 5 secondes.")           timer("tempo1", 5)       end       --------------------------------------- TIMERS ---------------------------------------       when tempo1.timer begin           if party.getf("choice") == 1 then               sufhal_instance_50.choice1_pop1()           elseif party.getf("choice") == 2 then           elseif party.getf("choice") == 3 then           end       end       when tempo2.timer begin           if party.getf("choice") == 1 then               sufhal_instance_50.choice1_pop2()           elseif party.getf("choice") == 2 then           elseif party.getf("choice") == 3 then           end       end       when tempo3.timer begin           if party.getf("choice") == 1 then               sufhal_instance_50.choice1_pop3()           elseif party.getf("choice") == 2 then           elseif party.getf("choice") == 3 then           end       end       --------------------------------------- FUNCTIONS LINKS ---------------------------------------       when kill begin           party.chat(d.count_monster())           if d.count_monster() <= 2 then               if party.getf("level") == 3 then                   timer("tempo2", 5)                   sufhal_instance_50._clear()               elseif party.getf("level") == 4 then                   timer("tempo3", 5)                   sufhal_instance_50._clear()               end           end       end       --------------------------------------- FUNCTIONS ---------------------------------------       function choice1_pop1()           party.chat("Détruisez toutes les metins pour atteindre le niveau 3.")           d.regen_file("data/instance/1/regen_2.txt")           party.setf("level", 3)       end       function choice1_pop2()           party.chat("Tuez tous les monstres pour atteindre le niveau 4.")           d.regen_file("data/instance/1/regen_3.txt")           party.setf("level", 4)       end       function choice1_pop3()           party.chat("Tuez tous les monstres pour atteindre le niveau 5.")           d.regen_file("data/instance/1/regen_4.txt")           party.setf("level", 5)       end       function _clear()           d.clear_regen()       end       --------------------------------------- JOIN THE PARTY ---------------------------------------       when 20004.chat."Rejoignez votre groupe" with (party.is_party() and d.find(party.getf("training_map_index"))) begin           --local cord = set.base_cord           local n = party.getf("training_map_index")           say_title("Mendiant:")           say("Voulez-vous rejoindre votre groupe ?")           say("")           local choix = select("Oui", "Non")           if choix == 2 then               return           end           if choix == 1 then               --pc.warp(cord[1]*100,cord[2]*100, n)               pc.warp((0+384)*100,(256+384)*100, n)               return           end       end       --------------------------------------- ??? ---------------------------------------         when login with pc.get_map_index()>=750000 and pc.get_map_index()<760000 begin           local s = pc.get_empire()           if s==1 then               pc.set_warp_location (1, 4693, 9642)           elseif s==2 then               pc.set_warp_location (21, 557, 1579 )           elseif s==3 then               pc.set_warp_location (41, 9696 , 2784)           end       end       --------------------------------------- EXIT ALL ---------------------------------------             when 691.kill with party.getf("training_map_index") > 0 begin           notice_all("Le groupe de "..pc.get_name().." va sortir de la salle.")           chat("Vous allez etre téléporté dans 5 secondes.")           d.set_exit_all_at_eliminate(5)       end         endend

 

 

 

Je reste bien évidemment à votre disposition pour d'éventuelles questions  :zen:

 

Bonne journée à vous,

Cordialement, Sufhal

Lien vers le commentaire
Partager sur d’autres sites

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

Meilleurs contributeurs dans cette question

Meilleurs contributeurs dans cette question

1 réponse à cette question

Messages recommandés

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


  • 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.