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

Besoin d'aide pour quête


Letueurakuu

Question

Bonjour ou bonsoir à tous, je vous poste ce message car je n'ai pas trouvé un topic similaire ni une réponse adéquat à mon problème. J'ai en fait un petit problème, j'aimerais que mes joueurs une fois qu'ils aient détruits un metin d'autres apparaissent à d'autres endroits mais que tout ceci ce passe dans une map précise. j'ai déjà essayer avec ça:

 

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

quest trône_naga begin

state start begin

when 8036.kill with pc.get_map_index() == 260 begin

spawn.mob(8037, 531, 505, 1)

spawn.mob(8038, 235, 507, 1)

spawn.mob(8039, 165, 349, 1)

spawn.mob(8040, 276, 187, 1)

end

end

end

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

Merci d'avance pour votre aide.

Lien vers le commentaire
Partager sur d’autres sites

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

Meilleurs contributeurs dans cette question

Meilleurs contributeurs dans cette question

Images postées

Messages recommandés

  • 0

Le truc c'est que c'est assez complexe (du moins pour moi) de faire ça dans une map normale. Si c'était une map dungeon tu peux faire ça facilement, par exemple :

quest trone_naga begin
state start begin
	when login with pc.get_map_index() == 260 begin
		mob.spawn(8036, 531, 505, 1)
		notice("Vous devez détruire la metin pour passer à l'étage supérieur !")
	end
	when 8036.kill with pc.get_map_index() == 260 begin
		timer("jump_etage_1", 6)
		notice_in_map(260, "Vous allez passer à l'étage supérieur dans 6 secondes !")
	end
	when jump_etage_1.timer begin
		d.new_jump_all(260)
	end
	when login with pc.get_map_index()>=2600000 and pc.get_map_index()<2600000 begin		
		d.notice("Les forces du mal on surgit du sol, d'autres Metin")
           d.notice("sont apparut vous devez les détruire pour accéder.")
           d.notice("au niveau 2, courage.")
		mob.spawn(8036, 531, 505, 1)
           mob.spawn(8038, 235, 507, 1)
           mob.spawn(8039, 165, 349, 1)
           mob.spawn(8040, 276, 187, 1)
	end
	when kill with pc.get_map_index()>=2600000 and pc.get_map_index()<2600000 begin
		if d.get_kill_stone_count() == 1 then
			d.notice("Il reste 3 metins à détruire pour accéder au niveau 2 !")
		end
		if d.get_kill_stone_count() == 2 then
			d.notice("Il reste 2 metins à détruire pour accéder au niveau 2 !")
		end
		if d.get_kill_stone_count() == 3 then
			d.notice("Il reste une metin à détruire pour accéder au niveau 2 !")
		end
		if d.get_kill_stone_count() == 4 then
			d.notice("Vous allez passer à l'étage supérieur dans 6 secondes !")
			timer("jump_etage_2", 6)
		end
	end
	when jump_etage_2.timer begin
		d.jump_all(COORD X DU NIVEAU 2, COORD Y DU NIVEAU 2)
	end
end
end

 

La seule restriction ici est de casser la première metin puis ça téléporte tout le monde dans la même map 260 mais cette fois sous forme de dungeon (aucun changement visuel je te rassure seulement technique). En gros c'est comme la tour. Tu peux changer cette restriction par exemple en faisant tuer un boss ou juste en faisant attendre, comme tu veux.

  • Love 1
Lien vers le commentaire
Partager sur d’autres sites

  • 0

Ca doit être possible, sûrement, mais encore une fois pas à ma connaissance et il faudra bidouiller pas mal de trucs niveau sources ^^

Pour te dire, même la tour est pas considérée de base comme un donjon^^ il faut un élément déclencheur : par exemple cliquer sur un PNJ et être téléporté dans la même map sous forme de dungeon, casser une metin, tuer un boss, cliquer sur une quête, se connecter, aller à un endroit précis dans la map, etc.

  • Love 1
Lien vers le commentaire
Partager sur d’autres sites

  • 0

Okay mais si la quête ne viens pas de cette map là ça ne fonctionne pas ? Je veux dire, le pnj qui me warp sur la map 260 ne peut dans la quête précisé déjà que cela nous téléporte dans un dongeon ou il faut forcément que ce soit à l'intérieur de cette map en question ?

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Ouais désolé j'ai carrément oublié un morceau de ma phrase :blush: Je voulais dire; Est-il possible que le pnj qui téléporte les joueurs sur la map 260 puisse déclarer que la téléportation se fait vers un dongeon directement ? ça éviterais le début de la quête que tu ma donné en téléportant tout le monde de 260 > vers 260 en déclarant que la deuxième fois c'est un dongeon, tu comprend mieux ?

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Non, avec la quête que tu m'a passé lorsque le joueur apparaît map = 260 il doit tuer le metin pour qu'il se fasse à nouveau téléporter map = 260 mais cette fois ci en mode dongeon, okay, maintenant moi je demande si ce n'est pas possible de déclarer que c'est un dongeon dès la PREMIERE apparition map = 260.

Pour éviter une téléportation d'une map (260) à la même (260) tu saisis mieux ?

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Ca doit être possible, sûrement, mais encore une fois pas à ma connaissance et il faudra bidouiller pas mal de trucs niveau sources ^^

Pour te dire, même la tour est pas considérée de base comme un donjon^^ il faut un élément déclencheur : par exemple cliquer sur un PNJ et être téléporté dans la même map sous forme de dungeon, casser une metin, tuer un boss, cliquer sur une quête, se connecter, aller à un endroit précis dans la map, etc.

 

Je t'avais déjà répondu ici ^^

 

Mais sinon, tu peux les faire tp d'une map 1 vers une map 260 (en mode dungeon directement du coup), pas obligé qu'ils soient dans la map 260 à la base

  • Love 1
Lien vers le commentaire
Partager sur d’autres sites

  • 0

quest trone_naga begin
state start begin
	when login with pc.get_map_index() == 260 begin
		mob.spawn(8037, 531, 350, 1)
		notice("Vous devez détruire le metin pour percevoir l'autre côté du monde de Naga")
	end

	when 8037.kill with pc.get_map_index() == 260 begin
		timer("jump_etage_1", 6)
		notice_in_map("Vous allez passer à l'étage supérieur dans 6 secondes.")
	end

	when jump_etage_1.timer begin
		d.new_jump_all(260)
	end

	when login with pc.get_map_index()>=2600000 and pc.get_map_index()<2600000 begin
		d.notice("Les forces du mal on surgit du sol, d'autres Metin")
		d.notice("sont apparut vous devez les détruire pour accéder.")
		d.notice("au niveau 2, courage.")
		mob.spawn(8036, 531, 505, 1)
		mob.spawn(8038, 235, 507, 1)
		mob.spawn(8039, 165, 349, 1)
		mob.spawn(8040, 276, 187, 1)
	end

	when kill with pc.get_map_index()>=2600000 and pc.get_map_index()<2600000 begin
		if d.get_kill_stone_count() == 1 then
			d.notice("Il reste 3 metins à détruire pour accéder au niveau 2 !")
		end
		if d.get_kill_stone_count() == 2 then
			d.notice("Il reste 2 metins à détruire pour accéder au niveau 2 !")
		end
		if d.get_kill_stone_count() == 3 then
			d.notice("Il reste une metin à détruire pour accéder au niveau 2 !")
		end
		if d.get_kill_stone_count() == 4 then
			d.notice("Vous allez passer à l'étage supérieur dans 6 secondes !")
			timer("jump_etage_2", 6)
		end
	end

	when jump_etage_2.timer begin
		d.jump_all(684, 716)
       end
   end
end

 

Voilà j'ai repris ce que tu m'a donné et j'ai ajouté les coordonnées de la tp 2 c'est tout

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Essaie plutôt en utilisant la fonction d.new_jump_all() comme ça :

d.new_jump_all(Index map, COORD X, COORD Y)

 

COORD X et COORD Y c'est les coordonnées où tu souhaites être téléporté. Pour toi en l'occurrence ce sera comme ça :

 

d.new_jump_all(260, COORD X, COORD Y)

 

Si ça marche pas, essaie comme ça :

 

d.new_jump_all(Index map, COORD_X_DE_BASE+COORD X, COORD_Y_DE_BASE+COORD Y)

 

Tu vas dans le dossier map de tes files, puis dans celui de ta map 260 et tu ouvres Setting.txt. T'auras un truc du genre :

 

BasePosition 204800 665600

 

C'est les coordonnées de base X et coordonnées de base Y.

Exemple : (356 étant les coordonnées X où tu souhaites être téléporté, 257 les coordonnées Y où tu souhaites être téléporté, 2048 et 6656 les coordonnées de base)

 

d.new_jump_all(260, 2048+356, 6656+257)

 

Si la première "solution" marche inutile de faire celle avec les coordonnées de base. Sers toi de ce tutoriel pour calculer tes coordonnées : https://fr.metin2.dev/topic/8711-pcwarp-calculer-des-coordonnées-universelles/

  • Love 1
Lien vers le commentaire
Partager sur d’autres sites

  • 0

Okay super ça a fonctionné ;) mais par contre il y a un autre problème lorsque je suis tp en mode donjon sur la même map les metins tombent et le message s'affiche par contre à partir du when kill avec tous les metins et le décomptage, rien ne s'affiche, comme si la quête ne fonctionnait plus à partir du 5è when :/

Lien vers le commentaire
Partager sur d’autres sites

  • 0

je l'ai travaillé un peu mais elle reste la même globalement, la voici :

quest trone_naga begin
state start begin
	when login with pc.get_map_index() == 260 begin
		notice("Voici l'Instance de la Reine Naga, Détruisez la pierre Metin")
		notice("Pour accéder à son trône.")
		mob.spawn(8037, 531, 350)

		if game.get_event_flag("metin") == 1 then
			game.get_event_flag("metin", 1)
			game.set_event_flag("nombre", 1)
		end
	end

	when 8037.kill with pc.get_map_index() == 260 begin

		if game.get_event_flag("metin") == 1 then
			game.set_event_flag("metin", 0)
			game.set_event_flag("nombre", 0)
		end

		timer("naga_jump_1", 6)
		notice_all("Vous allez passer à l'étage supérieur dans 6 secondes.")
	end

	when naga_jump_1.timer begin
		d.new_jump_all(260, 7424+340, 6144+595)
	end

	when login with pc.get_map_index()>=2600000 and pc.get_map_index()<2700000 begin

		d.notice("La destruction du premier Metin à ammené à l'apparition")
		d.notice("d'autres Metins, détruisez-les tous !")
		d.spawn_mob(8036, 531, 505, 1)
		d.spawn_mob(8038, 235, 507, 1)
		d.spawn_mob(8039, 165, 349, 1)
		d.spawn_mob(8040, 276, 187, 1)
	end

	when kill with pc.get_map_index()>=2600000 and pc.get_map_index()<2700000 begin

		if d.get_kill_stone_count() == 1 then
			d.notice("Il reste 3 metins à détruire pour accéder au trône !")
		end

		if d.get_kill_stone_count() == 2 then
			d.notice("Il reste 2 metins à détruire pour accéder au trône !")
		end

		if d.get_kill_stone_count() == 3 then
			d.notice("Il reste une metin à détruire pour accéder au trône !")
		end

		if d.get_kill_stone_count() == 4 then
			d.notice("Vous allez accéder au trône dans 6 secondes !")
			timer("naga_jump_2", 6)
		end
	end

	when naga_jump_2.timer begin
		d.jump_all(260, 7424+684, 6144+716)
       end
   end
end

Lien vers le commentaire
Partager sur d’autres sites

  • 0
  • Retraité

Oui mais là ça ne marche pas

Il faut via un pnj, tp le joueur (ou le groupe de joueurs) sur la map souhaitée. Du genre: Entrer dans l'instance

 

Le mieux est d'utiliser un: d.join(ID_DE_LA_MAP)

 

Là c'est compliqué car tu es sur la map 260 et quand le joueur se fait tp, il se fait TP sur la même map 260 tout en considérant que c'est un donjon.

Je sais pas si c'est possible mais c'est un peu le bordel ^^

 

Un d.join me semble plus propre pour ce genre de quête

Lien vers le commentaire
Partager sur d’autres sites

  • 0

La map est bien considérée comme un dungeon calypso, t'inquiète pas pour ce côté là.

Le souci ici c'est l'utilisation de la fonction d.get_kill_stone_count() qui pose problème si j'ai bien compris, puisque les d.notice("Il reste 3 metins à détruire pour accéder au trône !") par exemple ne sont pas affichés.

 

En clair, la quête déconne à partir when kill with pc.get_map_index()>=2600000 and pc.get_map_index()<2700000 begin

Lien vers le commentaire
Partager sur d’autres sites

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


  • brilliantdiscord_widget
  • Flux d'Activité

    1. 0

      Renouveau

    2. 0

      OldEraMT2 recrute – la bêta ouverte est en cours

    3. 0

      OldEraMT2 | Classique 2009 Oldschool | Niveau 99 | 7 langues | Sans pay2win | Bêta ouverte

    4. 6

      problème de connexion à mon serveur local (je suis débutant dans ce genre d'entreprise )

    5. 2

      problème de lancement serveur

    6. 9
    7. 0

      [PVM/PVP] ATLAX2 - EASY PLAY

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.