Bienvenidos a un nuevo tutorial, hoy aprenderemos a mover, agregar o eliminar un NPC.
Para aquellos que desconocen el termino NPC, intentaré darles una defición (Espero que no se mal entienda).
Un NPC es un objeto dentro del juego con el cual podemos tener diferentes tipos de interacciones (Comprar items, crear una guild, realizar una quest, etc)
Son ejemplos de NPC los siguientes:
"Sebina the Priest"Los NPC se clasifican de acuerdo al uso, tenemos varios de ellos que son para SHOPS, otros para realizar GUILD, algunos se usas para interactuar con los items, subirlos de nivel, agregarle opciones, etc...
"Golden Archer"
"Charon"
"Chaos Goblin"
"Elf Lala"
"Eo the Craftsman"
"Caren the Barmaid"
"Wizard","Izabel"
"Weapons Merchant Zienna"
"Wandering Merchant Martin"
"Guard","Wandering Merchant"
"Hanzo the Blacksmith"
"Potion Girl Amy"
"Pasi the Mage"
"Lumen the Barmaid"
"Lahap"
"Shadow Phantom Soldier"
"Marlon"
"Gens Duprian"
"Gens Vanert"
"Imperial Guardian Npc"
"Lucky Coins"
"Priest Devin"
"Werewolf Quarrel"
"Keepergate"
"Elite Soldier"
"Jerridon"
"Osborne"
"Archangel"
Entre otros...
Estos NPC se destribuyen en el juego dentro de cada mapa en diferentes coordenadas.
¿Qué podemos hacer con los NPC?
Con los NPC podemos realizar tres acciones: moverlos, agregarlos o eliminarlos.
¿Cómo se hace eso?, con este tutorial:
1)Para el siguiente tutorial trabajaré con una versión Season 6, dicha ejemplificación puede ser aplicada a cualquier version de MuOnline (Deben tener en cuenta que dependiendo la versión pueden variar los npc y las rutas de los archivos)
Para trabajar con NPC(s) necesitan dos archivos, el Monster.txt y el MonsterSetBase.txt (Recuerden que si usamos gameserver_cs, tambien podemos usar el MonsterSetBase_cs.txt)
Es normal o aveces no tanto, que dentro de nuestro archivo (MonsterSetBase.txt) tenemos ordenado de la siguiente manera:
2)En caso que no, veamos como se organizan los NPC dentro del MonsterSetBase.txt
Tomemos un ejemplo cualquiera:
238 3 0 180 103 1 //Chaos GoblinCada dÃgito o conjunto de dÃgitos hacen una secuencia númerica la cual va formando al NPC.
El 238 = Es el ID del NPC [ID es el identificador, luego veremos como saber el id de cualquier NPC]
El 3 = Es el mapa en donde esta ubicado dicho NPC [3=Noria]
El 0 = Es el radio [Todos los NPC tendrán siempre ese valor a excepción de los Guardias, que son los únicos que pueden caminar dentro del juego]
El 180 = La coordenada X
El 103 = La coordenada Y
El 1 = La dirección (La dirección serÃa el lado para donde se ubica el NPC, ejemplo mirando hacia el norte, sur, este , oeste, etc)
Entonces, si yo entro al juego y me posiciono en el mapa Noria en las coordenadas X=180 e Y=103, todo indicarÃa que alli deberÃa estar un NPC llamado "Chaos Goblin"
Veamos ...
3)Hasta ahi, hemos visto como se interpreta el código de un NPC y como se refleja en el juego. (En la imagen del juego se ve la coordenada 102 en lugar de 103, es simple lógica que me acerque lo máximo posible, ya que no se puede entrar dentro de un NPC sino aproximarse, la única menera de entrar al 103 es bugeando el move con un personaje Admin)
Entonces comenzemos con la primera acción "Mover el NPC"
Para mover el npc primero debemos saber que NPC queremos mover, en este caso podemos hacerlo de muchas maneras, la ideal es entrando al juego, buscar el NPC que deseamos mover, anotar las cordenadas en donde se encuentra (aproxÃmación), el mapa y el nombre del NPC.
Supongamos que quiero mover este NPC a otro lado:
4)Lo que debemos hacer para mover el NPC es simplemente tomar los datos como:
Nombre del NPC: Charon
Mapa: 3 [Noria] (¿No conoces el número del mapa? Ver Aqui)
Coordenada X: 172 (Aproximación)
Coordenada Y: 104 (Aproximación)
Nuestro siguiente paso es saber que número de NPC le corresponde a "Charon", para eso abrimos el monster.txt, apretamos simultáneamente "Control+B" y escribimos "Charon"
Los primeros números reepresentan el código del NPC.
237 => NPC Charon
5)Entonces, repasemos la información que necesitamos para localizar al NPC Charon en el archivo del juego:
Nombre del NPC : CharonCon esta información recolectada, abrimos nuestros MonsterSerBase.txt , en mi caso ubicado en la ruta Muserver/data/Monsters/
Número del NPC : 237 (Recuerden, el número del NPC lo sacamos del monster.txt)
Coordenada X: 172 (Aproximación)
Coordenada Y: 104 (Aproximación)
Al abrirlo, veremos algo como lo siguiente (Dependiendo la versión, esto puede variar):
6)Lo que debemos hacer ahora, es buscar entre todos esos códigos, al NPC en cuestión.
¿Cómo?, con la información que tenemos arriba.
Si nuestro MonsterSetbase esta organizado, es super sencillo, ahora supongamos que no está, lo que podemos hacer es: apretar simultaneamente "Control+b" y en diálogo de búsqueda, ponemos el ID del NPC, es decir 237
Cuando comenzemos a buscar, es muy probable que no nos lleve al NPC en el primer intento, sino a una cordenada de algun monster y algo similar.
¿Cómo puedo darme cuenta de esto?
Simplemente con la lógica, veamos un ejemplo:
7)Por lógica ese 237 no reepresenta al NPC Charon por varias razones:
Primero: el ID del NPC debe ubicarse en primer lugar de la secuencia númerica, Segundo: el grupo es [2] y si revisamos el tutorial sobre Spots Ver Aqui podemos observar que el [2] se usa para crear un "spot normal"
Y finalmente, por la posición que ocupa el 237 en la secuencia, sabemos que se trata de una coordenada Y.
Ahora veamos el verdadero:
8)¿Porque es el verdadero?
Por todo lo inverso a lo anterior, veamoslo:
El 237 está al inicio de la secuencia numérica (OK)
El grupo (Lo marcado en verde) es [0] eso nos indica que estamos en presencia de NPC (OK)
La secuencia de números respeta la cantidad de dÃgitos, es decir, el grupos de números.
¿Y para que recolectamos la información de coordenadas apróximadas y el número de mapa?
Porque es posible que tengamos varios NPC con ese ID, no solo en ese mapa sino en otros mapas tambien, entonces para ir filtrando, primero buscamos el mapa y despues las cordenadas, de esta forma sabremos exctamente cual es la linea del NPC que estamos buscando.
Entonces, como ya tenemos ubicado el NPC supongamos que deseamos moverlo de Noria a lorencia y a otras coordenadas, para esto debemos configurar el archivo de la siguiente manera:
Número de mapa actual: 3 [noria]
Número de mapa nuevo: 0 [Lorencia]
Coordenada X actual: 172El archivo configurado nos quedarÃa de la siguiente forma:
Cordenada Y actual: 104
Coordenada X nueva: 125
Cordenada Y nueva: 125
9)Claro esta que ustedes puede agregar el número de mapa y coordenadas que necesiten, y recuerden que sino conocen el número del mapa puede revisar este tutorial: Ver Aqui y para saber la coordenada, simplemente entran al juego y la anotan.
Nuestro siguiente paso, será guardar los cambios en el archivo y reiniciar el server para verificar los cambios (Opcionalmente pueden hacer un Reload), lo que debemos verificar es que el NPC se encuentre en el mapa que le indicamos en las coordeandas seteadas.
10)Y efectivamente, el NPC se encuentra en donde lo configuramos.
Ahora supongamos que deseamos agregar un NPC, para esto; buscamos el código del NPC que deseamos desde el Monster.txt.
Por ejemplo: queremos agregar un baul al mapa "Atlans", entonces como habÃamos dicho, abrimos el Moster.txt [Generalmente los NPC se encuentran al final del mismo] y buscamos el llamado "Baz the Vault Keeper o Baz, Storage Guard" y vemos el ID que lo reepresenta:
11)El ID que reempresenta el Baul es el "[240]", entonces buscamos el MonsterSetBase.txt, nos posicionamos sobre cualquier secuencia que tengamos NPC(s) y agregamos la linea como ya lo hemos visto:
Primero el ID del NPC = 240
Segundo el número del mapa = 7 (Atlans)
Rad: 0 (El baul no tiene radio de movimiento)
Coordenada X= 16
Coordenada Y= 12
12)Reiniciamos el servidor y verificamos los cambios
13)Como podemos observar, el NPC se encuentra en el mapa indicado en las coordenadas marcadas en nuestro archivo.
Finalmente para eliminar un NPC lo que debemos hacer es borrar la linea de forma horizonal, por ejemplo si tenemos esta linea de un NPC:
237 0 0 125 125 3 //CharonY queremos eliminarlo, simplemete borramos toda la linea completa, reiniciamos el server y verificamos los cambios.
Observaciones finales:
*Al agregar un NPC lo podemos agregar dentro de un grupo [0], en donde tenemos otros NPC en la misma secuencia, no pueden agregar las lineas sueltas dentro del archivo MosterSetBase.txt ni mucho menos dentro de las secuencias de los Spots.
*Los NPC que agregamos siempre serán los mismos que tenemos en nuestro juego, es decir, que si agregamos dos "Elf lala", los dos NPC venderan los mismos items.
*Al agregar un NPC o moverlos, es posible que la dirección o el ángulo de visión no sea el deseado, para esto necesitamos ir modificando los valores de la dirección.
*Los NPC los podemos agregar junto a otros NPC de diferentes mapas, la organización interna no afecta la externa.
*Nunca borren el "end" de una secuencia, ya que es posible que al hacerlo el server no inicie.
*Trabajen siempre sobre una copia y no sobre el original, no hagan muchos cambios sobre el archivo sin verificarlos, ya que por ejemplo: si realizamos 10 cambios y cuando deseamos verificarlos tenemos un error, no sabran cual de esos 10 es el causante, lo que los obligará a comenzar de 0 nuevamente.