Vous devez être connecté et donner une réaction ( Like ) au sujet pour débloquer les liens de téléchargements...
  • 0
Sufhal

en cours [QUEST] Timer qui ne se déclenche pas ?

Question

Bonjour à tous !

 

J'ai mis en place une arène (physiquement) sur une map et je souhaiterais y téléporter 2 joueurs afin qu'ils s'affrontent.

Pas de problème particulier jusqu'au moment où les joueurs sont téléportés : j'utilise un timer juste avant la téléportation des deux joueurs et au moment où ils apparaissent dans l'arène le timer ne se met pas en route.

Il y a t'il des règles concernant l'utilisation de ces timers ? 

 

Voici un code simplifié de la quête :

quest sufhal_pvp_npc begin
	state start begin

		when 9071.chat."Lancer un défi" with pc.level >= 50 begin

			if not npc.lock() then                
				---                                                   l
				say_title(mob_name(9071)..":")
				say("Je suis déjà occupé avec quelqu'un d'autre !")
				say("Veuillez patienter quelques instants.")
				return
			end

			if game.get_event_flag("pvp_enabled") == 1 and game.get_event_flag("pvp_busy") == 0 then
				---                                                   l
				say_title(mob_name(9071)..":")
				say("L'arène vous permet de combattre des joueurs")
				say("connectés de niveau supérieur ou égal à 50.")
				say("Ils recevront une invitation à accepter un duel.")
				say("Ils peuvent accepter ou refuser selon leur envie.")
				say("Que voulez-vous faire ?")

				local choix = select("Inscrire mon adversaire","Fermer")

				if choix == 2 then
					return
				end

				---                                                   l
				say_title(mob_name(9071)..":")
				say("Veuillez entrer le nom du joueur que vous voulez")
				say("combattre. Il ne doit pas avoir plus de 5 niveaux")
				say("de plus ou de moins que vous.")

				local adv_name = input()

				if adv_name == "" then
					---                                                   l
					say_title(mob_name(9071)..":")
					say("Vous ne savez pas avec qui vous battre ?")
					say("Demandez en général, quelqu'un sera peut-être")
					say("intéressé.")
					npc.unlock()
					return
				else
					---                                                   l
					say_title(mob_name(9071)..":")
					say("Votre invitation à combattre a été envoyée au")
					say("joueur "..adv_name..".")
					wait()

					adv_vid = find_pc_by_name(adv_name)

					if adv_vid == 0 then
						---                                                   l
						say_title(mob_name(9071)..":")
						say("Désolé mais "..adv_name.." n'est pas connecté.")					
						npc.unlock()									
						return

					elseif adv_vid == pc.get_vid() then
						---                                                   l
						say_title(mob_name(9071)..":")
						say("Vous ne pouvez pas vous défier vous même.")
						say("C'était bien essayé.")
						npc.unlock()
						return
					end

					adv = pc.select(adv_vid)
					adv_level = pc.get_level()
					pc.select(adv)

					if adv_level < 50 then
						---                                                   l
						say_title(mob_name(9071)..":")
						say("L'adversaire n'a pas atteint le niveau 50.")
						npc.unlock()										
						return
					end

					if not npc.is_near_vid(adv_vid, 10) then
						---                                                   l
						say_title(mob_name(9071)..":")
						say("L'opposant doit être à vos cotés.")
						say(adv_name.." est trop loin.")										
						npc.unlock()
						return
					end

					local agree = confirm(adv_vid, "Accepter le combat contre "..pc.name.."?", 20)

					if agree != CONFIRM_OK then
						---                                                   l
						say_title(mob_name(9071)..":")
						say(sname.." a refusé le combat.")
						npc.unlock()							
						return
					end

					local coord_1_x = 2800000+(384*100)
					local coord_1_y = 2800000+(310*100)
					local coord_2_x = 2800000+(412*100)
					local coord_2_y = 2800000+(310*100)

					pc.warp(coord_1_x,coord_1_y)

					pc.select(adv_vid)
					pc.warp(coord_2_x,coord_2_y)

					timer("temporizer_one", 120)					

				end
				npc.unlock()
			end
		end

		when temporizer_one.timer begin
			notice_in_map("Le combat commence dans 120 secondes !")
			timer("fight_one", 120)
		end

		when fight_one.timer begin

			command("pvp "..adv_vid)
			local partner = pc.select(adv_vid)
			command("pvp "..partner)

			notice("La première manche à commencée !")
		end

	end
end

 

Et voici la partie bloquante : 

					[...]

					timer("temporizer_one", 120)					

				end
				npc.unlock()
			end
		end

		when temporizer_one.timer begin
			notice_in_map("Le combat commence dans 120 secondes !")
			timer("fight_one", 120)
		end

		when fight_one.timer begin

			command("pvp "..adv_vid)
			local partner = pc.select(adv_vid)
			command("pvp "..partner)

			notice("La première manche à commencée !")
		end

		[...]

 

J'en profite pour anticiper une autre question : quelqu'un à déjà utilisé la fonction ci-dessous ? Si oui, fonctionne-t-elle ? 

command("pvp "..adv_vid)

 

 

Une idée ?

Merci par avance :) 

 

PS : La quête se compile sans erreur.

Edited by _Sufhal

Share this post


Link to post
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Pourquoi tu utilise 2 timer ? fin ton premier timer il te serrent à quoi?..

Edited by Reaper

Share this post


Link to post
Share on other sites
  • 0

Comme son nom l'indique il permet de temporiser, c'est à dire de laisser le temps au joueur d'être téléporté et de se préparer à combattre

Edited by _Sufhal

Share this post


Link to post
Share on other sites
  • 0

 Je croit que les timer sont pas trop bien utiliser dans les quêtes normal, les timer sont le plus fréquemment utiliser dans les dungeons.. 

Share this post


Link to post
Share on other sites
  • 0

C'est effectivement l'impression que ça me donne cependant je pense qu'il n'y a que ceux là qui ont de l'interêt à être utilisés parce que l'arène n'est pas la seule "attraction" de la map en question donc il ne serait pas optimal d'utiliser des server_timer, je me trompe ?

 

Edit : ça ne fonctionne pas non plus en remplaçant les timer par des server_timer, une autre idée ?

 

Edit : après une longue recherche sur EPVP j'ai trouvé que le server_timer n'était pas lié à la map mais plutôt au joueur et qu'il faut ajouter un troisième argument pc.get_name(). Je ne peux pas tester dans l’immédiat mais au nombre de "Merci" cette information me paraît fiable. Je reviens vers vous dans la soirée !

 

 

Edit : Je viens de tester et ça ne fonctionne toujours pas... Ces timers sont vitaux pour le bon déroulement de la quête, quelqu'un s'en sert régulièrement (en dehors des donjons) ?

Edited by _Sufhal

Share this post


Link to post
Share on other sites
  • 0

Je me permet de relancer le sujet, j'ai apporter de légères modification au script :
J'ai testé les timer sur une quête vide et ils fonctionnent bien.

J'ai réécris la fin de ma quête orginale en mettant un set_state à la place du timer et j'ai mis le timer en question dans le state.

 

Voici la partie modifiée : 

pc.setqf("in_arena", 1)

local coord_1_x = 2800000+(384*100)
local coord_1_y = 2800000+(310*100)
local coord_2_x = 2800000+(412*100)
local coord_2_y = 2800000+(310*100)

pc.warp(coord_1_x,coord_1_y)
pc.select(adv_vid)
pc.warp(coord_2_x,coord_2_y)

set_state(manche)
state manche begin
	when login or enter with game.get_event_flag("pvp_enabled") == 1 and pc.getqf("in_arena") == 1 begin
		notice("state manche started")
		timer("timertest", 10)
	end
	when timertest.timer begin
		notice("timer started")
		pc.setqf("in_arena", 0)
		set_state(start)
	end
end

 

Sauf que la quête ne sort pas du state "start". Il y a-t-il des conditions particulières pour pouvoir effectuer un set_state ?

Share this post


Link to post
Share on other sites
  • 0

Du nouveau pour les prochains tomberont sur ce post avec un problème similaire :

J'ai placé le set_state avant la téléportation et tout fonctionne, le set_state et les timers !

Le sujet est donc résolu et peut être clos xD

À bientôt pour un autre bug !

Share this post


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