• 0
tiitbeet

resolu Manque des fonctions LUA

Question

Version des Files / Type d’Émulateur dédié files 2016

Domaine ( Base de Données, Client, Core, Sources... ) : LUA

Niveau : Intermédiaire ou Avancé ?

 

1. Description du dysfonctionnement / Question :

Bonjour, je suis en train de faire une quête annexe pour passer le temps. Et j'ai un léger problème, je m'explique : 

- J'aimerais dans ma quêtes que le Garde du village m'envoie droper un item sur un monstre en particulier, j'aimerais qu'il y ai 1 chance sur 50 de droper l'objet et dès qu'il le drop, il doit retourner voir le Garde du village. Donc ma quête fonctionne bien jusqu'au moment ou il faut droper l'item. Même si je drops 4 fois l'item ça ne passe pas à la suite. Je peux continuer à drop à l'infinie sans retourner voir ce fameux garde. 

Voici la partie en question! 

 

 

Révélation

Codage fonctionnel : 

    state histoire3 begin
        when letter begin
            send_letter("La Légende du Phénix")
        end
        when button or info begin
            say_title("Salut Aventurier")
            say("")
            ---                                                   l
            say("Le garde du village t'as demandé d'enquêter sur")
            say("la mystérieuse histoire de la légende du phénix.")
            say("")
            say("Vas tuer des chiens errant et essaie de trouver")
            say("des informations supplémentaire.")
            say("")
            wait()
        end
        when 101.kill with game.get_event_flag("botte_dame") == 1 and not npc.is_pc() begin
            v = number(1, 50)
            if v == 50 then
                game.drop_item_with_ownership(18)            
            end
        end

 

A savoir c'est que game.get_event_flag("botte_dame") == 1 s'active bien dans mon histoire2 donc c'est pour ça que je vous ai pas mis le codage d'avant ni d'après! 

 

Révélation

La partie non fonctionnel alors que ... 

 

        when 101.kill with game.get_event_flag("botte_dame") == 1 and not npc.is_pc() begin
            v = number(1, 50)
            if v == 50 then
                game.drop_item_with_ownership(18)            
            end
        end
        when login or levelup with pc.get_item() == 18 begin
            say_title("La Légende du Phénix")
            say("")
            ---                                                   l
            say("Félicitation! Tu as trouvé une XXX,")
            say("Cours vite voir le garde du village pour lui.")
            say("rapporter ce que t'as trouvé.")
            say("")
            wait()
            game.set_event_flag("botte_dame", 0)
            set_state( histoire4 )
        end        
    end

 

Je me dit que : 

        when login or levelup with pc.get_item() == 18 begin

 

Ne doit pas être la bonne fonction... 😢 

 

Merci à vous :)

 

J'affirme avoir lu et accepté le règlement de Funky Émulation

Edited by tiitbeet

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Salut,

Il y a un problème de logique dans ton code.

Au moment où tu tues le mob et que le taux s'active, il ne faut pas seulement faire dropper l'item.

Soit tu fais un changement de state soit tu joues avec les flags pour gérer l'évolution de ton state.

Share this post


Link to post
Share on other sites
  • 0

Salut, 

Le taux s'active avant dans l'histoire précédente après avoir parlé avec le garde. 

Or, le problème n'est pas là, le problème est qu'il drop à l'infinie.. Il manque une fonction c'est ce que je disais je la connais pas. 

Merci quand même... 

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Problème résolue, j'ai juste modifié la fonction par une autre. 
Personne ne m'a vraiment aider, juste quelques recherche. 

 

	state histoire3 begin
		when button or info begin
			if pc.count_item("18")==0 then
				say_title("La Legende")
				say("")
				---                                                   l
				say("Le garde du village t'as demande d'enqueter sur")
				say("la mysterieuse histoire de la legende.")
				say("")
				say("Vas tuer des Grizzlys pour et essaie de trouver")
				say("des informations supplementaire.")
				say("")
				wait()
			else
				say_title("La Legende")
				say("")
				---                                                   l
				say("Félicitation aventurier,")
				say("Vous avez trouvez des XXX!")
				say("")
				say("Retournez vite voir le Garde du Village.")
				say("")
				wait()
			end
		end
		when 101.kill begin
			local s = number(1, 100)
			if s <= 1 and pc.count_item("18")==0  then
				pc.give_item2("18", 1)
				send_letter("Vous avez trouvez des XXX!")
				local v=find_npc_by_vnum(20354)
				if 0== v then
				else
					target.vid("__TARGET__",v,"Retourner voir le Garde du Village.")
				end
			end
		end
		when __TARGET__target.click or 20354.chat."Legende." begin
			target.delete("__TARGET__")
			if pc.count_item("18") >= 1 then

 

Edited by tiitbeet

Share this post


Link to post
Share on other sites
  • 0
Résolu - Le sujet étant résolu, il se voit verrouillé et déplacé dans le forum Résolu ou sans réponse...

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.