Jump to content
×
×
  • Create New...

Gérer le spawn de PNJ / MOB sur vos maps


Recommended Posts

  • Retraité

Hello,

Ce didacticiel est destiné à aider les débutants qui ne savent pas comment configurer les fichiers de régénération pour des cartes spécifiques.
Cela peut sembler évident pour certains, mais certains ne savent pas comment cela fonctionne complètement.
Autrement dit, choisissez l'emplacement correct de vos monstres, metins, boss et PNJ ainsi que leurs coordonnées, leur direction et leur heure d'apparition.

 

Information. Le tutoriel présente les 4 fichiers (regen.txt, boss.txt, stone.txt, npc.txt) en même temps car ils fonctionnent de la même manière. Ces fichiers se trouvent dans les fichiers de votre serveur dans "share/locale/country/ map/nom_de_ta_map/"

 

Par ou commencer ?

 

  • Premièrement, vous devez accéder au répertoire de fichiers de votre serveur. Nous vous recommandons d'utiliser WinSCP car il est open source et utilisé par tout le monde.
  • Votre dossier de la carte que vous voulez configurer. 

 

I. Comment configurer les réapparitions ?

Révélation

 

Information
  • Par défaut, boss.txt fait apparaitre les Boss, stone.txt les Metins, npc.txt les PNJ and regen.txt pour les monstres, ça parait évident non ? 
  • Chaque fichier regen fonctionne par ligne. Autrement dit: une ligne configure un spawn.
  • Assurez-vous que chaque valeur est séparée par une tabulation ou 4 espaces.
  • Ci-dessous, nous verrons la signification de chaque paramètre, un par un, dans l'ordre où ils sont présentés dans le fichier.

 

1.  Type

Il existe au total 6 types d'apparitions mais nous utiliserais seulement 5 d'entre eux.

 

Warning ! Ce n'est pas le temps d'attente entre le moment où le monstre est tué et celui où il réapparaît.
m	REGEN_TYPE_MOB						Spawn de monstre.
g	REGEN_TYPE_GROUP					Spawn de group.
ga	REGEN_TYPE_GROUP (Agressive)				Spawn de groupe agressif. (Ce token s'applique seulement pour "g")
e	REGEN_TYPE_EXCEPTION					Spawn d'exception. (Non utilisé)
r	REGEN_TYPE_GROUP_GROUP					Groupe du groupe Spawn.
s	REGEN_TYPE_ANYWHERE					Monstre apparition aléatoire.

 

2. Coordonnées

Ces paramètres spécifient la position où votre monstre doit apparaître.
Vous pouvez trouver ces coordonnées dans l'atlas, (mini)carte de votre client en faisant glisser la souris dessus.

sx         MODE_SX             Sectree X (Current X)
sy         MODE_SY             Sectree Y (Current Y)
ex         MODE_EX             Exception X (This is used for x range)
ey         MODE_EY             Exception Y (This is used for y range)
z          MODE_Z_SECTION      Z Section (Non utilisé)
                               Le "z" est pour la hauteur mais les monstres n'apparaissent pas dans les nuages. Je suppose que Ymir vient d'ajouter cela pour la logique mathématique des axes.

Voila quelques exemples :

//       type    sx     sy     ex     ey     z    dir    time    percent    count    vnum
Exemple: m       300    300    300    300    0    0      1m      100        1        101    FIXED (X, Y) (300, 300)
Exemple: m       300    300    0      0      0    0      1m      100        1        101    FIXED (X, Y) (300, 300)

Disons que vous voulez faire apparaitre un monstre à x (300), y (300) mais que vous voulez également une fouchette de 10 pixels.

//       type    sx     sy     ex     ey     z    dir    time    percent    count    vnum
Exemple:   m     300    300    10     10     0    0      1m      100          1       101    RANDOM (X, Y) (290~310, 290~310)

Comme vous pouvez le voir, nous avons utilisé 10 sur "ex" et 10 sur "ey".
Ça signifie:

sx(300) - ex(10) = 290
sx(300) + ex(10) = 310

sy(300) - ey(10) = 290
sy(300) + ey(10) = 310

Resultat = x(290~310), y(290~310)
Le monstre pourrait apparaître par exemple à x(299), y(305)

 

3. Direction

dir		MODE_DIRECTION		Direction (N, NE, E, SE, S, SO, O, NO)

 

Ce paramètre est principalement utilisé pour les PNJ et définit son orientation.
Essentiellement, il choisira où votre PNJ regardera lorsqu'il apparaîtra.
Il est utile d'éviter d'avoir un marchand qui nous tourne le dos!

 

Voici les 9 valeurs possibles dans lesquelles le PNJ peut regarder:

  • 1. Sud
  • 2. Sud Est
  • 3. Est
  • 4. Nord Est
  • 5. Nord
  • 6. Nord Ouest
  • 7. Ouest
  • 8. Sud Ouest
  • 0. Direction au hasard (parmis les 8 choix ci dessus)

 

Voici quelques images utiles pour vous guider:

102959unknown.png

 

4. Temps de réapparition

time		MODE_REGEN_TIME		Regen time (m, s) example: 1m, 60s

Il existe 3 formats pour configurer temps de réapparition, par exemple:

  • 17s : the respawn time is 17 seconds
  • 3m : respawn time is 3 minutes
  • 5h : respawn time is 5 hours

 

Warning ! Le monstre réapparaîtra en fonction du temps défini, que vous l'ayez tué quelques secondes avant l'heure de réapparition.


Par exemple : 

 

  • Un monstre avec un temps de réapparition de 1 m apparaît à 9 h 20, il est tué à 9 h 20 min 18 s, il réapparaît à 9 h 21.
  • Un monstre avec un temps de réapparition de 1 m apparaît à 9 h 20, il est tué à 9 h 36 min 45 s, il réapparaît à 9 h 37.

 

5. Probalibité de réapparation

percent		MODE_REGEN_PERCENT		Regen percent (Non utilisé)

101104unknown.png

Ce paramètre est en fait inutilisé dans le jeu.
Comme nous pouvons le voir dans les fichiers source, il passe au prochain token "MODE_MAX_COUNT".
Ajoutez simplement la valeur 100 pour rester cohérent.

 

6. Quantité d'apparition

count		MODE_MAX_COUNT		Spawn count

Cet ensemble de paramètres indique le nombre de monstres ou de PNJ qui apparaîtront à l'emplacement.

Warning ! Ils apparaîtront tous aux mêmes coordonnées (quelles que soient les coordonnées aléatoires générées).

 

7. VNUM / ID

vnum		MODE_VNUM		Spawn VNUM

Ce nombre dépend du premier paramètre que vous avez choisi.

 

  • m : Vous devez mettre le VNUM du monstre, du PNJ, de la pierre de Metin ou du boss.
  • g or ga : Vous devez mettre un numéro de groupe de monstres (qui doit être défini dans group.txt)
  • r : Vous devez mettre un numéro de groupe de groupe de monstres (qui doit être défini dans group_group .txt)

 

Qu'avons-nous appris jusqu'ici?

Nous savons maintenant ce que signifiait chaque paramètre, il est donc temps de construire sa propre ligne.

 

Example :

//                      type     sx        sy        ex      ey       z    dir    time     percent    count    vnum
Example:            m     865      809     200    150     0     0     1850s     100             1        8003


Un monster de Vnum 8003, va apparaitre entre les coordonnées (665, 659) et (1065, 959) avec un temps de réapparition de  1850 secondes

 

Succès ! Vous savez maintenant comment fonctionne un regen.txt sur Metin2!

 

 

II. Gérer group.txt et group_group.txt

Spoiler

1. Group.txt

Information. On peut définir un groupe précis et non aléatoire et présenté comme ceci:

091910group.png

 

  • Vert: Nom du groupe, tu peux mettre ce que tu veux, ça n'a aucune importance
  • Rouge: Vnum du groupe, l'ID doit être unique !
  • Bleu: Chef du groupe, vous pouvez lui donner le nom que vous voulez + vnum mob
  • Orange : ID de votre mob dans le groupe, nom de votre mob + vnum mob

 

2. Group_group.txt

Attention! Le group_group doit être renvoyé sur le vnum du fichier group.txt, sinon cela ne fonctionnera pas.

 

091910group-group.png

 

  • Vert: Nom du groupe, tu peux mettre ce que tu veux, peu importe
  • Red : Vnum du groupe, le vnum doit être unique !
  • Orange ID , Group Vnum (group.txt), Probability (Unused)

 

Example :

r    506    542    10    10    0    0    10s    100    1    6711


Un group aléatoire de Vnum 6711 (groupe 8000 et 8001 dans notre cas), va apparaitre entre les coordonnées (496, 432) et (516, 452) et va apparaitre toutes les 10 secondes.
100% n'est pas utilisé.

090638f48bd5cf1772f216e6db7b49657acf84.g

 

Succès ! Vous savez maintenant comment gérer group.txt et group group.txt sur Metin2!

 

 

Edited by Veltor88
  • Funky Emulation 1
  • J'adore 10
Link to comment
  • Retraité

Maintenant dans un contexte de remise à niveau des tutoriels de la section, je vais faire l'hypocrite en faisant l'apologie de mon propre tutoriel. :cool:

Le but étant d'expliquer pourquoi (selon mes propres critères), ce tutoriel est bon. À vous de voir si vous avez les mêmes.

(je supprimerai volontiers ce message une fois le message passé)

 

 

 

J'aurais pu faire un tutoriel plus utile ou plus attendu. Mais celui-ci répondait à des critères plus spécifiques.

 

La base du tutoriel vue par Nicky31 :

Un tutoriel doit être utile, complet, bien rédigé et de qualité.

C'est vrai. Mais on peut faire mieux.

 

 

Le but n'était pas de faire un tutoriel qui sera bon aujourd'hui mais bon sur le long-terme.

Pour cela :

  • il doit ratisser aussi large que possible (le tutoriel de Valithis était très bien, mais trop limité, il ne parlait que d'une colonne, on ne peut faire 11 tutoriels sur le fichier regen.txt ! Celui de hardy ne traitait que des metins dans stone.txt... C'était sûr qu'un jour, ils allaient sauter. Mais il y a une perte d'efficacité. Au lieu de faire un tutoriel béton au début, on en fait un puis on le corrige, puis on en rajoute, puis on en refait un autre, bref on finit jamais, si on regarde, certains tutoriels ont dû être refait 20 fois)
  • il doit être aussi complet que possible (il ne faut pas hésiter à mettre des liens vers d'autres tutoriels pour compléter "gratuitement" le tutoriel comme je l'ai fais avec les event flags, ça mange pas de pain et puis pourquoi se casser la tête à créer quelque chose qui existe déjà ?) si le tuto n'existe pas (comme pour group.txt ou group_group.txt), on laisse un vide et on le précise à la fin du tutoriel (ça donne aussi des pistes sur des tutoriels qui seraient à rédiger ou à compléter)

  • on ne cache pas notre méconnaissance par l'absence, on peut pas tout savoir, c'est bien pour ça qu'une communauté est nécessaire, quand on sait pas, on le précise mais c'est une erreur de faire l'impasse dessus ! (cf le spawn de type e et son paramètre Z) peut-être qu'un jour, une personne pourra nous renseigner et on complètera le tutoriel

tout cela pour :

diminuer la charge de travail à chaque fois qu'on se motive à faire les corrections des tutos

diminuer le nombre de tutoriels à faire (si dès qu'on en fait un, il est complet... On aura plus jamais besoin d'en refaire un sur ce sujet donc on passe au sujet suivant !)

diminuer le nombre de post dans l'A/Q/S (souvent, un post dans l'A/Q/S = une lacune dans la partie tuto)

 

merci d'avoir lu

pouvez critiquer maintenant !

Link to comment
  • Funkiest

Salut,

 

Excellent tutoriel ! Bien détaillé ! J'éditerai mon tutoriel d'ici peu d'ailleurs, mais je n'ai pas énormément de temps à consacrer à l'ému depuis ces derniers temps...

 

Pour le "e", il signifie "Exception", cependant, le sens de ce dernier m'échappe totalement, il est déjà à part comparé au regen normal, voici quelques exemples :

 

Regen Normal : regen, regen_list, prev, next

Exception : exc, regen_exception_list, prev, next

 

Il se démarque aussi de quatre types "et demi"* que tu as expliqués plus haut, à savoir :

 

-MOB (m)

-GROUP (g) et (ga)*

-GROUP_GROUP ®

-ANYWHERE (s)

*g est l'argument premier, "a" est l'argument secondaire, indiquant que si le "g" est suivi du "a", alors le groupe sera agressif, c'est pour ça que le traitement dans les sources s'effectue sur le g en totalité (type GROUP) et que le "a" vient indiquer que le groupe est agressif "par dessus" le traitement du type "g"

-> Nous pouvons faire le rapprochement avec les commandes /ma (mob agressif) et /mc (mob coward => peureux / fuyard), sauf que le regen ne possède pas de mode "fuyard" (je peux essayer de l'ajouter et le partager si ça intéresse quelqu'un)

 

Ces types là sont traités en une seule et même partie, tandis que le groupe "e" (EXCEPTION) est traité plus bas, seul, ce qui donne l'"amas" (guillemets = abus de langage et vulgarisation pour les termes) vu plus haut "exc, regen_exception_list, prev, next", hors, précisons que "exc" et "regen_exception_list" possèdent grosso-modo la même déclaration que leur contrepartie "normale", à l'exception que "exc" est élaboré différemment, voici le comparatif entre les deux :

 

Pour le regen "normal" :

 

		regen->sx += base_x;
		regen->ex += base_x;

		regen->sy += base_y;
		regen->ey += base_y;

		if (regen->sx > regen->ex)
		{
			regen->sx ^= regen->ex;
			regen->ex ^= regen->sx;
			regen->sx ^= regen->ex;
		}

		if (regen->sy > regen->ey)
		{
			regen->sy ^= regen->ey;
			regen->ey ^= regen->sy;
			regen->sy ^= regen->ey;
		}

 

Pour l'exception :

 

		exc->sx = tmp.sx;
		exc->sy = tmp.sy;
		exc->ex = tmp.ex;
		exc->ey = tmp.ey;
		exc->z_section = tmp.z_section;

 

La différence fondamentale entre les deux est aussi (et surtout ?) que l'exception prend en charge la section z, qui est intrinsèquement liée avec le regen de type "e" (présente dans une définition du type de regen tandis que ce dernier est présent dans la définition du "MODE_Z")

 

Ce que je peux en déduire après un coup d’œil relativement rapide des deux , c'est que le type "exception", comme son nom l'indique, se démarque du lot, cependant, son utilisation reste floue pour moi... Est-ce un reste de code vestigial ou bien un code qui dev®ait exister dans une future mise à jour (passée) ? Je dis ça vu que dans Metin2, la gestion de l'axe Z est relativement inexistante, même si le relief est là, on ne peux pas se retrouver aux mêmes coordonnées x et y qu'un monstre, joueur ou n'importe quelle entité mais sur un plan différent (dessus ou dessous), l'exemple est visible avec un pont, vous pouvez marcher 50 mètres en dessous d'un pont et ne voir rien devant vous, puis vous retrouver directement sur le pont dés que vous rentrez dans ses coordonnées x et y, je me souviens dans la map orc il y a quelques années, cependant je ne sais pas si c'est encore présent et si on peut passer en dessous d'un pont situé au dessus de soi qui reste pratiquable plus haut, j'en doute vu que metin2, pour le warp etc... c'est toujours du x, y alors voilà... Mais c'est un autre débat

 

Du coup, à vos suggestions pour ce fameux "e" et je réitère ce que j'ai pu dire plus haut : Excellent tutoriel ! :D

Link to comment
  • Retraité

Salut Galet,

tu as raison pour le 4 types et demi, le ga n'est pas un type à part entière mais uniquement un cas particulier du g

j'ai estimé que ça pouvait plus géner la compréhension qu'autre chose de le préciser

ai-je eu tord, ai-je eu raison ? dites-moi

 

pour le e, tu en sais autant que moi. La seule chose que je peux à la limite préciser c'est qu'une ligne avec e ne possède que les 6 premiers paramètres

et franchement, je vois pas trop ce qu'on peut faire avec si peu. (c'est pas faute d'avoir tester)

comme tu dis c'est peut-être un reste d'une tentative avortée ou peut-être une solution miraculeuse qui ouvre les portes du possible. Mystère.

Link to comment
  • Funkiest

Il faudrait pouvoir trouver des regens avec ce fameux "e" et fonctionnel, mais là, où remonter ? Dans les files "primitives" de rain, les premières ? Et encore rien n'est assuré et je pense même qu'aucun regen ne porte ce paramètre :/

 

PS : Oui tu as bien fait, ça ne reste que du détail qui n'est pas essentiel de connaître pour suivre le bon déroulement du tutoriel

Link to comment
  • Administrateur

Le tutoriel est très bien rédigé et c'est ce qu'il faut sur FE. Merci à toi !

Je n'ai rien à ajouter, les critères que tu démontres sont les mêmes que les miens.

 

Je m'occuperai de l'arbo dans les prochains jours et je commencerai à déplacer les tutoriels dans la section.

J'apprécie ton investissement, merci encore !

Link to comment
  • Retraité

@Galet : J'avais regardé dans un maximum de files (2006 à 2014), y compris fait des recherches sur des forums étrangers.

En vain. C'était il y a deux ans, peut-être que des découvertes ont été faites depuis (j'imagine que non vu que tu es un habitué de ces forums)

 

@Calypso : merci, pour ma part j'apprécie la voie que tu as choisi de prendre pour la section.

Link to comment
  • 1 year later...
  • 2 months later...
  • 3 weeks later...
  • 4 weeks later...
  • 2 weeks later...
  • 2 weeks later...
  • 2 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


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.