Jump to content
×
×
  • Create New...
  • 0

Quête : retarder une commande


XDarkKillerX
 Share

Question

Bonjour, j'aimerais retarder l'effet d'une commande (warp_all_to_village), j'ai regardé d'autres quêtes et les fonctions et j'ai trouvé "timer", j'ai essayé plein de choses sans succès malgré que putty ne m'affiche aucune erreur :/

 

Voici la quête :

 

quest killdragon begin
state start begin
		when 2493.kill with pc.get_map_index() == 201 begin
		notice_all("Félicitations ! "..pc.name.." a terrassé le dragon bleu !")
		---                                                   l
		say("Félicitations ! Beran-Setaou est vaincu ! Vous")
		say("allez être téléporté dans 20 secondes.")
		kill_all_in_map(201)
		set_timer("warp_all_to_village()", 20)
	end
end
end

 

Tout fonctionne sauf la réexpédition de toutes les personnes présentes dans la map :x

Et je tiens à ce qu'il y ai 20 secondes avant que ça soit fait, pour ça j'ai un petit handicap là x)

 

Version des files : 2012

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

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

 

Description du problème :x

Comment reproduire le problème :x

Recherches et tests effectué :autres quêtes, fonctions

Résultat des recherches et tests :x

 

Message d'erreur, capture d'écran :

 

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

Link to comment
Share on other sites

  • Answers 5
  • Created
  • Last Reply

Top Posters For This Question

Top Posters For This Question

5 answers to this question

Recommended Posts

  • 0
  • Funkiest

set_timer("warp_all_to_village()", 20)

 

Tu déclenches le timer, mais tu ne lui attribue pas de fonction et surtout tu n'attribues aucune action a effectuer après les 20secondes.

 

 

Enfin, je pense, je cherches.

 

when warp_all_to_village begin

warp_all_to_village()

end

 

 

En faite, je n'ai réelement aucune idée & j'ai peur de te dire des betises, bases-toi sur la otur.

Link to comment
Share on other sites

  • 0

Je sais que pour la tour et la quête du dragon ils utilisent ceci : timer("devil_end_jump", 60) c'est pour ça que j'ai essayé de mettre la fonction dedans mais c'est un lieu qu'il faut mettre, seulement dans les fonctions je ne trouve pas de "devil end jump" donc comment savoir comment chaque lieu se nomme et surtout comment faire en sorte que chaque personne soit téléportée dans SON royaume x)

 

Je continue à chercher de mon côté merci Galet ;)

Link to comment
Share on other sites

  • 0

Je vais essayer d'être le plus clair possible.

 

Un timer déclaré avec timer() est lié au personnage qui le lance. Un timer se créé de la façon suivante :

timer("nom_du_timer", temps_en_secondes_avec_le_declenchement)

 

 

Au bout du temps spécifié lors de sa création, le game va vous lancer un event que vous allez pouvoir récupérer de la façon suivante :

when nom_du_timer.timer begin

end

 

 

Vous pouvez alors faire les actions que vous voulez à l'intérieur, sachant que ces actions seront effectués sur le personnage avec lequel vous avez lancé le timer. Par exemple, voici une mini-quête qui téléportera un personnage 20 secondes après qu'il l'ait demandé :

quest tp begin
    state start begin
         when 9012.chat."Téléporte moi" begin
              timer("timer_tp", 20)
              say("Tu seras téléporté dans 20 secondes.")
         end

         when timer_tp.timer begin
              pc.warp(xxx, yyy)
         end
    end
end

 

 

Uniquement le personnage ayant cliqué sur le PNJ sera téléporté.

 

Vous pouvez utiliser à la place de pc.warp() la fonction warp_all_to_village(), ce qui aura l'effet escompté.

 

ATTENTION :

- Le timer ci-dessus s'applique à un personnage. Si un autre personnage clique sur le PNJ, son timer personnel se lancera et celui de l'autre ne sera absolument pas modifié. Il ne faut donc qu'il n'y ait qu'un seul timer qui soit lancé dans ton cas. En effet, si 2 personnages le lançaient exactement en même temps, il y aurait 2 téléportations, ce qui pourrait occasionner des problèmes.

- Un timer lié à un personnage se désactive lorsque le personnage subit un logout / login. Contrairement à ce qu'on pourrait croire, une simple téléportation ou changement de personnage suffit pour déclencher ces événements. Dans le cas où 2 timers seraient lancés, si le premier a suffisamment d'avance sur le second, alors le second sera annulé (une seconde peut être suffisante selon la charge du serveur).

 

Il existe d'autres types de timer : les server_timer. Ces derniers sont liés non pas à un personnage mais au serveur entier. Ce faisant, l'utilisation de fonctions telles que pc.warp() est absolument impossible car aucun personnage n'est sélectionné. Il est également impossible de sélectionner un personnage avec un pc.select(). Cependant, la fonction warp_all_to_village() n'agit pas sur un personnage en particulier mais sur un ensemble. Elle est ainsi tout à fait utilisable avec un server_timer. Je vous conseille donc d'utiliser un server_timer dans votre cas. Les server_timer s'utilisent exactement comme les timer simple, en rajoutant le préfixe server_ lors de la création et dans l'événement. De plus, un server_timer ne s'annulera que dans le cas d'un reboot ou d'un crash du serveur.

 

J'espère avoir donné toutes les clés. Si vous avez des questions, n'hésitez pas.

Link to comment
Share on other sites

  • 0

Merci beaucoup pour ta réponse Pro, j'ai trouvé y'a 30 minutes grâce à mes joueurs qui m'ont mis sur la piste en parlant d'Azrael donc j'ai regardé cette quête que j'avais pas encore zieutée et j'ai trouvé.

 

voici ma quête actuelle qui fonctionne à merveille :

 

quest killdragon begin

state start begin

when 2493.kill with pc.get_map_index() == 201 begin

notice_all("Félicitations ! "..pc.name.." a terrassé le dragon bleu !")

timer("dragon_end",30)

end

when dragon_end.timer begin

kill_all_in_map(201)

warp_all_to_village(201)

end

end

end

 

En tous cas merci pour les autres petites options que tu m'a gentiment détaillé c'est super et merci encore :)

Cordialement

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share



Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.