• Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Fonction] Gérer un donjon
Staff
#1
Bonsoir,

Suite à la demande de tutoriel de thomasx3 pour créer une instance Metin2, je me permet d'en faire un tutoriel étant donné du fait que j'ai déjà eu l'occasion de créer un petit donjon de groupe.

Je vais commencer par la base des bases: si vous croyez que pour qu'une map soit considéré comme un donjon, il faut aller modifier je ne sais quoi dans les fichiers de la map, enlevez-vous tout de suite cette idée de la tête car c'est complètement faux. Tout se passe dans la quête. On utilise les fonctions LUA d pour " parler " d'un donjon.

Caché: Rentrer dans un donjon


C'est LA fonction qui va vous permettre de considérer une map tel un donjon. Bien sûr, il en existe plusieurs.
  • d.join -- TP un joueur/groupe dans un donjon
  • d.new_jump --- TP un seul joueur dans un donjon aux coordonnées X;Y
  • d.new_jump_all() --- TP tous les joueurs de la map dans un donjon aux coordonnées X;Y
  • d.new_jump_party() --- TP le groupe dans un donjon aux coordonnées X;Y

Code PHP :
d.join() 
 
Prend en paramètre l'ID de la map ( d.join(251)   par exemple)
Elle permet au joueur (ou au groupe du joueur si celui-ci est le chef du groupe), de créer un donjon sur la map mis en paramètre. Cette fonction vous téléporte au spawn par défaut de la map (définit dans le fichier Town de la map).
Pour que la téléportation se fasse, il faut que les deux maps soient dans le même core (ou channel). Par exemple, la map de TP (map1) et la map donjon doit être tous deux dans le core1 pour que la téléportation puisse être effectué. (Attention, vous ne pouvez pas être téléporté si la map de TP est un donjon !)

Quand je dis: créer un donjon, je veux dire que vous allez " créer " une map juste pour vous ou pour votre groupe. C'est-à-dire qu'un autre groupe peut faire l'instance en même temps sans interagir avec vous.

Code PHP :
d.new_jump() 

Contrairement à la fonction d.join(), cette fonction va vous permettre de téléporter qu'UN seul joueur sur la map de votre choix et les coordonnées de votre choix. Cette fonction est bugguée sur les files 2012 (voir le listing des diff : [Only registered and activated users can see links Click here to register]

Un exemple: d.new_jump(251, 2545300, 3151700)

Je téléporte juste le joueur sur la map d'ID 251 et de coordonnées universelles (2545300, 3151700) (voir le tutoriel de Sparks : [Only registered and activated users can see links Click here to register])

Code PHP :
d.new_jump_all() 

Elle ne prend pas les mêmes paramètres (elle demande des coordonnées globales) contrairement à la fonction d.new_jump(), celle-ci va TP absolument tous les joueurs qui se trouvent sur la map.

Un exemple: d.new_jump_all(251, 25453, 31517)

Je téléporte tous les joueurs de la map dans le donjon d'ID 251 aux coordonnées globales (25453, 3151Cool

Code PHP :
d.new_jump_party() 

Seulement pour les Files 2013 (ou +)
Elle prend les mêmes paramètres (entre parenthèse) que la fonction d.new_jump_all(), celle-ci va TP tout le groupe sur la map donjon.

Un exemple: d.new_jump_party(251, 25453, 31517)




Caché: La gestion des mobs dans un donjon

  • d.regen_file() -- Charge une seule fois un regen
  • d.set_regen_file() -- Charge un regen
  • d.clear_regen() -- Clear le chargement de regen (les mobs spawn plus)
  • d.spawn_mob() -- Spawn un mob
  • d.spawn_goto_mob() -- Spawn un portail invisible
  • d.spawn_group() -- Spawn un groupe
  • d.set_unique() -- Déclarer un mob unique
  • d.unique_get_hp_perc() -- Obtenir les HP du mob unique
  • d.unique_set_def_grade() -- Changer la défense du mob unique
  • d.unique_set_hp() -- Changer les HP du mob unique
  • d.check_eliminated() -- Vérifie si tous les mobs du donjon sont morts
  • d.count_monster() -- Renvoi le nombre de mobs qu'il reste sur la map
  • d.is_unique_dead() -- Renvoi l'état du mob unique (mort ou vivant)
  • d.kill_all() -- Kill tous les mobs de la map
  • d.kill_unique() -- Kill un mob unique
  • d.purge() -- Purge toute la map
  • d.purge_unique() -- Purge un mob unique
  • d.get_kill_mob_count() -- Renvoi le nombre de mobs tués
  • d.get_kill_stone_count() -- Renvoi le nombre de metins tués


Vous trouverez ci-dessous toutes les fonctions qui permettent de gérer les mobs dans un donjon.

Code PHP :
d.regen_file() 

Permet de charger un regen qu'une seule fois ! C'est-à-dire qu'il n'y aura aucun repop.

Exemple: d.regen_file("data/donjon/sholabit/regen1.txt")

Je charge qu'une seule fois le regen1.txt à l'emplacement data/donjon/sholabit/  (en partant du dossier share bien sûr)

Code PHP :
d.set_regen_file() 

Même syntaxe que la fonction d.regen_file sauf que celle-ci va complètement charger le regen. C'est-à-dire que tant que vous ne lui demandez pas d'arrêter, il va charger votre regen (en fonction des paramètres que vous avez donné dans le regen bien sûr)

Exemple: d.set_regen_file("data/donjon/sholabit/regen1.txt")

Je charge complètement le regen1.txt à l'emplacement data/donjon/sholabit/  (en partant du dossier share bien sûr)

Code PHP :
d.clear_regen() 

Permet d'arrêter le spawn auto des mobs d'un regen (set_regen_file)

Code PHP :
d.spawn_mob() 

Permet de faire pop un mob aux coordonnées locales X Y. (Comme si vous faisiez un /m)

Exemple: d.spawn_mob(101, 625, 30)

Je fais pop un mob d'ID 101 à l'emplacement (625, 30) du donjon
Cette fonction à un fonctionnement identique à mob.spawn (détaillée dans ce tutoriel : [Only registered and activated users can see links Click here to register])

Code PHP :
d.spawn_goto_mob() 

Permet de faire spawn un portail invisible aux coordonnées locales X1;Y1 qui va téléporter le joueur aux coordonnées locales X2;Y2

Exemple: d.spawn_goto_mob(625, 700, 103, 400)

Le portail se trouve aux coordonnées X;Y --> 625;700 et va téléporter le joueur aux coordonnées X;Y --> 103;400 (comme dans les catacombes)

Code PHP :
d.spawn_group() 

Permet de faire spawn un groupe de mob dans une intervalle de coordonnées X;Y (avec la possibilité de rentre les mobs agressif et de pop plusieurs fois le groupe)

Exemple: d.spawn_group(501, 304, 400, 50, TRUE, 5)

Je fais spawn 5 fois le groupe d'ID 501 aux coordonnées locales X;Y --> 304;400 en mode agressif (TRUE = Agressif, FALSE = Normal). 50 est en quelque sorte la " limite de l'intervalle " du spawn. Ici, le groupe de mob va pop aux coordonnées comprises entre (x - 50; y - 50) et (x + 50; y + 50) soit un rayon de 50.

Code PHP :
d.set_unique() 

Permet de rendre unique un mob (pour ensuite lui modifier ses caractéristiques)

Exemple: d.set_unique("Beran", 250) 

Je rend le mob Beran de vid 250 unique.
Je peux récupérer le vid du Beran avec la fonction: pc.get_vid(ID)

Code PHP :
d.unique_get_hp_perc() 

Renvoi le % de HP que possède le mob (définit dans le set_unique)

Exemple: d.unique_get_hp_perc("Beran")

La fonction renvoi le % d'exp du beran

Code PHP :
d.unique_set_def_grade() 

Permet de changer la défense du mob.

Exemple: d.unique_set_def_grade("Beran", 25)

La défense du Beran devient 25

Code PHP :
d.unique_set_hp() 

Permet de changer le nombre de points de vie du mob

Exemple: d.unique_set_hp("Beran", 60)

Les points de vie du Beran sont maintenant égal à 60

Code PHP :
d.check_eliminated() 

Permet de savoir si les mobs du donjon sont tous morts.

Code PHP :
d.count_monster() 

Renvoi le nombre de mob qu'il reste (actif) dans le donjon.

Code PHP :
d.is_unique_dead() 

Renvoi si le mob unique est vivant ou mort.
True: Mort
False: Vivant

Exemple: d.is_unique_dead("Beran")

La fonction va me renvoyer son état.

Code PHP :
d.kill_all() 

Tue tous les mobs de la map

Code PHP :
d.kill_unique() 

Tue un mob unique

Exemple: d.kill_unique("Beran")

Tue le mob unique Beran

Code PHP :
d.purge() 

Purge tous les mobs du donjon

Code PHP :
d.purge_unique() 

Purge un mob unique.

Exemple: d.purge_unique("Beran")

Purge le beran

Code PHP :
d.get_kill_mob_count() 

Renvoi le nombre de mobs tués dans le donjon

Code PHP :
d.get_kill_stone_count() 

Renvoi le nombre de metins détruites dans le donjon






Caché: La gestion des téléportations / sorties dans un donjon

  • d.exit() -- Sort le joueur du donjon
  • d.exit_all() -- Sort tout le monde du donjon
  • d.exit_all_to_start_position() -- Sort tout le monde du donjon à leur map 1
  • d.set_warp_at_eliminate() -- Téléporte les joueurs une fois tous les mobs tués
  • d.set_exit_all_at_eliminate() -- Sort tout le monde du donjon une fois tous les mobs tués (après x secondes)
  • d.set_warp_location() -- Téléporte les joueurs aux coordonnées X Y


Code PHP :
d.exit() 

Fais sortir le joueur du donjon.

Code PHP :
d.exit_all() 

Même chose que la fonction ci-dessus sauf que celle-ci téléporte tous les joueurs.

Code PHP :
d.exit_all_to_start_position() 

Fais sortir tous les joueurs du donjon à leur map 1 respective.

Code PHP :
d.set_warp_at_eliminate() 

Téléporte tous les joueurs de la map aux coordonnées globales X;Y après x secondes de la mort du mob

Exemple: d.set_warp_at_eliminate(20, 251, 600, 300, "data\regen.txt")

TP tous les joueurs de la map 251 aux coordonnées 600 300 après 20 secondes de la mort du mob. Charge ensuite le regen.txt (Ce paramètre n'est pas obligatoire, vous n'êtes pas obligé de le mettre)

Code PHP :
d.set_exit_all_at_eliminate() 

Fais quitter le donjon à tous les joueurs après X secondes de la mort du dernier mob.

Exemple: d.set_exit_all_at_eliminate(20)

Téléporte tous les joueurs en dehors du donjon après 20 secondes de la mort du dernier mob





Caché: La gestion des variables dans les donjons

  • d.setf() -- Créer un flag commun
  • d.setqf() -- Changer la valeur d'un flag
  • d.getf() -- Obtenir la valeur d'un flag


Code PHP :
d.setf() 

Créé un flag commun à tous les joueurs du donjon.

Exemple: d.setf("test", 1)

Je créé un flag test avec la valeur 1.

Code PHP :
d.getf() 

Renvoi la valeur du flag

Exemple: d.getf("test")

Renvoi la valeur de test




Caché: Fonctions diverses

  • d.is_use_potion() -- Savoir si un joueur a utilisé une potion
  • d.notice() -- Afficher un message à l'écran

Code PHP :
d.is_use_potion(00

Permet de savoir si le joueur a utilité une potion dans le donjon.

Code PHP :
d.notice() 

Affiche un texte pour tous les joueurs du donjon (comme un /n)

Exemple: d.notice("Coucou")





C'est tout bon !
Il manque surement de nombreuses fonctions, j'ai mise seulement celles que je connaissais plus ou moins bien.

Vous pouvez très bien en proposer d'autres.
Des questions ? Go A/Q/S
[Image: 1462886569-140409115944697214-1.gif]
  Répondre
#2
Très bonne initiative ! Merci ! Content
  hap
~ | ~
  /\

Onche, comme je suis D KON TRAC T
  Répondre
#3
Sympa, merci ! Tire
Ne me juge pas mal, mais considère-moi plutôt comme quelqu'un qui de temps en temps a le coeur trop lourd.
  Répondre
Staff
#4
Pas de soucis.
Si vous avez des fonctions que je n'ai pas ajouté, n'hésitez pas Content
[Image: 1462886569-140409115944697214-1.gif]
  Répondre
#5
OMG c'est ce que je rechercher , t'es trop fort !! merci bien !!
  Répondre
Staff
#6
Je tiens quand même a préciser que la fonction:

Code PHP :
d.new_jump_all() 

Est bugué sous les files 2014 après des test.
Vaut mieux privilégier le d.join
[Image: 1462886569-140409115944697214-1.gif]
  Répondre
#7
Alors ça c'est cool merci, je vais m'y essayer Heuu
  Répondre
#8
Salut Calypso,

Merci pour ton super tuto, par contre si je peut me permettre ton exemple pour le d.new_jump_all(251, 25, 620) n'est pas tout a fait correcte
Il ne faut pas oublier de rajouté les coordonée de la map (le warp) au X;Y

Pour ma part voici comment ca fonctionne :

Code :
d.new_jump_all(181, 9728+305, 1024+428)

Mettez 11 imbéciles d'un coté, 10 philosophes de l'autre..
les imbéciles l'emporteront.
C'est ca, la démocratie

Papy
  Répondre
#9
Merci
petite question comment mettre instance en activation automatique déns des heures precises genre a 8h00 /13h00 18h00 ect merci
  Répondre
#10
Comment ça ? Ouverture automatique aux heures précises sinon refus des joueurs ? Une simple condition en lua lorsque tu parles au pnj Heuu'
  hap
~ | ~
  /\

Onche, comme je suis D KON TRAC T
  Répondre




Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Donation's plugin by Naoar.com