Jump to content
  • 0
Sign in to follow this  
XDarkKillerX

en cours [En Cours] Quête (encore...)

Question

Bonjour :)

 

Comme d'habitude, un problème de quête *-*

 

Ce que je tente de faire :

 

Une quête pour se téléporter dans une map.

 

Conditions :

 

-Ne pas téléporté le joueur SI quelqu'un est dans la map.

-Faire en sorte que le joueur ne puisse plus se téléporter avant un certain temps.(3h).

 

Récapitulatif :

 

Je veux me téléporter :

 

-La map est libre, le pnj m'y envoie mais de ce fait je ne pourrais pas m'y retéléporté d'ici 3h.

 

-La map n'est pas libre, quelqu'un est dedans, le pnj refuse.

Voilà j'espère que j'ai été assez "clair" :/

 

J'ai tenté de la faire avec la quête "annonce" qui a la fonction du temps que je recherche mais finalement c'est pas de mon niveau de faire ça ;(

 

Bonne journée et merci d'avance

Cordialement

Share this post


Link to post

16 answers to this question

Recommended Posts

  • 0

Tu te complique la vie et tes joueurs n'aimeront surement pas sa car ils doivent attendre leurs tours.

Fait comme la tour tout simplement.

 

En gros un système de donjon, sauf que grossièrement c'est des " mondes parallèles ".

Enfin dans ce cas il faut utiliser les fonctions d. mais tout les joueurs peuvent entrer, la différence est qu'ils ne se croiseront jamais.

Les 3h se rajoute sans soucis.

Share this post


Link to post
  • 0

Tu te complique la vie et tes joueurs n'aimeront surement pas sa car ils doivent attendre leurs tours.

Fait comme la tour tout simplement.

 

En gros un système de donjon, sauf que grossièrement c'est des " mondes parallèles ".

Enfin dans ce cas il faut utiliser les fonctions d. mais tout les joueurs peuvent entrer, la différence est qu'ils ne se croiseront jamais.

Les 3h se rajoute sans soucis.

A condition que celle-ci soit considérée tel une map donjon dans le server_attr il me semble.

 

Essaye comme ça ( je ne l'ai pas testé ) :

quest x begin
state start begin
	when ID_PNJ.chat."Le titre du menu" begin
		if get_time() > pc.getqf("duration") then
			if pc.getqf("pc_is_here") == 0 then
				say(title.."Le titre")
				say(locale.MEDIUM_COLOR.."blablabla")
				say(string.format("Voulez-vous être téléporté ?"))
				choix=select(locale.yes, locale.cancel)
				if choix == 2 then
					return
				else
					pc.setqf("duration",get_time()+3600*300*1)
					pc.warp(XXX, YYY) -- Les coordonnées de téléportation
				end
			else
				say(title.."Le titre")
				setcolor(0,100,100)
				raw_script("Il y a déjà quelqu'un !")
			end
		else
			say(title.."Le titre")
			say(string.format("Veuillez revenir plus tard"))
		end
	end
	when login with pc.get_map_index() == ID_MAP and pc.getqf("pc_is_here") == 0 begin -- L'ID de la map
		pc.setqf("pc_is_here", 1)
	end
	when logout with pc.get_map_index() == ID_MAP and pc.getqf("pc_is_here") == 1 begin -- L'ID de la map
		pc.setqf("pc_is_here", 0)
	end
end
end

Share this post


Link to post
  • 0

Merci beacoup je test de suite :)

 

Edit

 

J'ai remodeler pour qu'elle d'adapte etc et elle marche niquel sauf un petit détail.Quand quelqu'un est dans la map, un autre joueur peut se tp mais ça le renvoie cité, jusque là ça va, mais du fait qu'il s'est téléporter il devra attendre 3h quand même sans avoir profité de l'arène :/

 

quest Instance begin
   state start begin
       when 20083.chat."Le titre du menu" begin
           if get_time() > pc.getqf("duration") then
               if pc.getqf("pc_is_here") == 0 then
                   say("Le titre")
                   say("blablabla")
                   say("Voulez-vous être téléporté ?")
                   choix=select(locale.yes, locale.cancel)
                   if choix == 2 then
                       return
                   else
                       pc.setqf("duration",get_time()+3600*300*1)
                       pc.warp(854700,11400) -- Les coordonnées de téléportation
                   end
               else
                   say("Le titre")
                   say("Il y a déjà quelqu'un !")
               end
           else
               say("Le titre")
               say("Veuillez revenir plus tard")
           end
       end
       when login with pc.get_map_index() == 112 and pc.getqf("pc_is_here") == 0 begin -- L'ID de la map
           pc.setqf("pc_is_here", 1)
       end
       when logout with pc.get_map_index() == 112 and pc.getqf("pc_is_here") == 1 begin -- L'ID de la map
           pc.setqf("pc_is_here", 0)
       end
   end
end

Share this post


Link to post
  • 0

Je vois pas comment ceci peut marcher :

 

if pc.getqf("pc_is_here") == 0 then

 

En effet, on travaille sur une variable exclusive au personnage.

 

Il faut ici utiliser un event_flag.

Share this post


Link to post
  • 0

quest Instance begin
   state start begin
       when 20083.chat."Le titre du menu" begin
           if get_time() > pc.getqf("duration") then
               if game.get_event_flag("pc_is_here") == 0 then
                   say(title.."Le titre")
                   say("blablabla")
                   say("Voulez-vous être téléporté ?")
                   choix=select(locale.yes, locale.cancel)
                   if choix == 2 then
                       return
                   else
                       pc.setqf("duration",get_time()+3600*300*1)
                       pc.warp(854700,11400) -- Les coordonnées de téléportation
                   end
               else
                   say("Le titre")
                   say("Il y a déjà quelqu'un !")
               end
           else
               say(title.."Le titre")
               say("Veuillez revenir plus tard")
           end
       end
       when login with pc.get_map_index() == 112 and game.get_event_flag("pc_is_here") == 0 begin
		game.set_event_flag("pc_is_here", 1)
       end
       when logout with pc.get_map_index() == 112 and game.get_event_flag("pc_is_here") == 1 begin
           game.set_event_flag("pc_is_here", 0)
       end
   end
end

 

Et comme ça ?

Share this post


Link to post
  • 0

----------------------------------------------------------------------------------------------------------------------------
-- *** NOTICE IMPORTANTE LIRE AVANT UTILISATION *** --
-- Veillez à bien modifier les informations suivantes pour que la quête fonctionne. --
-- REMPLACEZ COMME SUIS : 
-- "MAPINDEX" Par l'id de la map concernée. --
-- "PNJID" par l'id du PNJ concerné. --
-- "PNJ NAME" par le nom du pnj. --
-- "X" par la coordonnée X de la map. --
-- "Y" par la coordonnée Y de la map. --
----------------------------------------------------------------------------------------------------------------------------
quest teleport_fo begin
state start begin
when PNJID.chat with pc.get_map_index() != MAPINDEX begin
say_title("PNJ NAME")
say("Bonjour,[ENTER]")
if game.get_event_flag("busy")==1 then
say("Il y a actuellement quelqu'un dans la map.")
say("Veuillez patienter. . .")
say("je vous préviendrai quand la map sera libre!")
else
say("Tu veux te téléporter dans la map?")
local a = select("Oui" "Non")
if a == 1 then
pc.warp(x,y)
game.set_event_flag("busy", 1)
else
return
end
end
end
when PNJID.chat with pc.get_map_index() == MAPINDEX begin
say_title("PNJ NAME")
say("Bonjour,[ENTER]")
say("Tu veux rentrer chez toi ?")
local b = select("Oui","Non")
if b == 1 then
pc.warp(x,y)
game.set_event_flag("busy", 0)
notice_all("La map est de nouveau libre d'accès!")
else
return
end
end
end
end

Essaye ça je l'ai codée avec un bloc note à mon taf désolé pour le code hachuré :)

Share this post


Link to post
  • 0

Bonsoir,

 

Le sujet contient la balise [glow=#800000][Résolu][/glow] ou reste sans réponse, de ce fait il a été déplacé dans la section "Résolu ou sans réponse".

 

Cordialement.

Elea

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

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.