Crear spots de forma manual

En tutoriales anteriores aprendimos a modificar los shops de nuestros server de forma manual, es decir, evitando usar cualquier tipo de software con intefaz gráfica.
También aprendimos que las cosas no surgen por fuerza natural sino que todo se debe a una explicación lógica y relacionada al juego.
Hoy vamos a aprender a crear un spot, a modificarlo y ver sus posibles variables, claro está que lo vamos hacer sin necesidad de un programa por lo tanto es aplicable a cualquier tipo de versión MuOnline.



Sólo vamos a necesitar dos cosas, las manos y la cabeza.
1)Comenzemos: El archivo que contiene los monsters de los mapas standars se llama MonsterSetBase.txt y se encuentra alojado en la siguiente ruta
Muserver\data\MonsterSetBase.txt
(puede que en algun repack le modificaron el nombre o la ruta , en ese caso será cuestión de buscarlo). Atención , hay varios archivos que se llaman parecidos, por lo tanto busquen bien y lean bien.
Lo que haremos será abrirlo para ir familiarizándonos con su contenido. Lo primero que debemos detectar son unos dígitos que encontramos del lado izquierdo sobre el comienzo de una linea principal, en la siguiente imagen les indicaré a cuales me refiero:

Archivo monstersetbase

¿Pero a que se debe esto?, ¿Se puede agregar y mezclar un spot con un NPC (baúl por ejemplo) en cualquier parte de nuestro archivo?
La respuesta es NO, hay algo muy importante que debemos saber. El monstersetbase.txt de nuestro servidor está subdividido o estructurado internamente por diferentes categorias (Similar a las categorias de items que explicamos en el tutorial de como "Crear un Shop Manual").
Estas categorías son:
0= NPC - Guardias
1= Spots
2= Monster(Individual)
3= Invaciones de dorados y otros
(Talvez me esté olvidando de alguna categoría, pero por el momento me interezan esas).
Como mostraba la imagen anterior, el dígito inicial marcaba una cartegoría, esta categoría continua hasta que vemos un "END" (lo encontraremos al final de una linea del lado izquierdo. (Su posición es similar al dígito que nos indica la categoría)
Estos dígitos nos indican que dentro de cada una de esas categorías podemos poner spots, monster individuales, npc , etc.

¿Qué diferencia hay entre spot y monster individual?
La respuesta a esto es lo que iremos tratando a lo largo del tutorial.
La diferencia básica de estos dos términos es que: Los SPOT [categoría 1] tienen gran cantidad de monsters, el código de creación es más largo y los últimos dígitos corresponden a la cantidad de monsters que deseamos visualizar.
Este es un ejemplo de un código de creación de un SPOT [categoría 1]
26 3 5 129 210 148 228 0 25 // SPOT
Por otro lado monster individual [categoría 2] son individuales, su código de creación es mucho más corto y no tenemos posibilidad de agregar un dígito que nos indique la cantidad.
Este es un ejemplo de un código de creación de un monster individual [categoría 2]
35 4 30 29 208 -1 //monster individual
Es importante que no mezclen un spots con un monster en la misma categoría.
También destaco que la gente que arma repack(s) de archivos se toman el tiempo de estructurar este archivo mediante comentarios extras explicando de que se trata cada linea , eso dá una idea de una buena organización interna y nos puede ayudar en mucho. (Esos comentarios siempre son marcados con dos // , que; como siempre digo estas // no son leidas por el Gameserver.exe sino que se utilizan para realizar comentarios dentro de un archivo)

En caso que tu archivo no tenga estas explicaciones podes leer este tutorial el cual podrá orientarte para editar tus SPOTS en tu servidor MuOnline.
El siguiente screenshot (captura de pantalla) pertenece a un MonsterSetBase.txt



2)La anterior imagen fue tomada al azar, en una parte de mi archivo MonsterSetBase.txt y como pueden ver se remarcó con un rectángulo rojo lo que pertenece al mapa Lorencia.
Sin dar explicación, apartir de mi lectura, podemos estimar que tenemos un spot en la coordenada 135(x) 20(y) de aproximadamente 15 Bulls Fighters con un radio de aparición de 30 y en todas las direcciones.
Ingresaremos al juego para verificar esto. La línea que le corresponde a la imagen es la siguiente:
// Lorencia
0 0 30 135 20 240 88 -1 15 // Bull Fighter
Visualizando spot en el cliente

3)Seguramente alguno esperaba ver un conjuntos de monsters todos pegados y en cantidad, más conocido con el nombre de SPOT(s) , pero ¿Qué sucedió? , ¿Por qué sólo aparece un monster ? ¿Y el resto? ¿No eran 15?.
Las respuestas a estas preguntas es que hay una disperción dada por el radio y las coordenadas x2 e y2.
Lo sé, más de uno dirá que me volví loco, (Y puede ser un poco) pero para entender lo que quise decir, lo mejor será que expliquemos que significa cada dígito o mejor dicho cada grupo de dígitos:
La linea que utilicé fue la siguiente para el testeo:
// Lorencia
0 0 30 135 20 240 88 -1 15 // Bull Fighter
Lo que haremos será ponerla de forma vertical para poder explicar que significa cada dígito:
0= Identifica al monster en este caso el "0" es el Bull Fighter
0= Identifica al mapa en el cual aparecerán el/los monster(s). En este caso el "0" es Lorencia (Ver tutorial sobre comandos de admin)
30= Radio de aparición/movimiento
135= Coordenada X
20= Coordenada Y
240= Coordenada x2
88= Coodenada y2
-1= Dirección de aparición
15= Cantidad de monsters que aparecerán [Solo visible en categoria 1 o Spot]
Entonces para que los monsters no se dispersen editaré las coodenadas x2 y las coordenas y2 para que esten todos juntos envitando su dispersión.
En este caso lo que haré será sumarle a x1 una coordenada más y poner ese valor en x2. Lo mismo haré con y1 e y1.
Por ejemplo: x1 tiene un valor igual a 135
x2 será x1+1 , entonces tendrá un valor de 136
y1 tiene un valor igual a 20
y2 será y1+1, entonces tendrá un valor a 21
Tambien pondré un radio 10 y cambiaré de 15 monster para que aparezcan 6 [Muchos spots también son causante de LAG en nuestro servidor]
El archivo editado quedaría así:

Editando propiedades en el archivo monstersetbase

4)Ahora ingresaré al server para verificar si el spot se encuentra como todos lo imaginamos:

Visualizando los cambios

5)Como pudimos ver, apareción el spot que nosotros creamos.
Algo que los puede ayudar es:
  • Observar el archivo detenidamente y tratar de guiarnos o ayudarnos con los comentarios extras que deja su creador

  • Saber que representa cada dígito , y saber cuales son los importantes, para esto vuelvan a leer lo siguiente
    0= Identifica al monster en este caso es el Bull Fighter
    0= Identifica al mapa en cual aparecera en este caso Lorencia (ver comandos de admin)
    30= Radio de movimiento del monster
    135= Coordenada X
    20= Coordenada Y
    240= Coordenada x2
    88= Coodenada y2
    -1= Direccion de aparición
    15= Cantidad de monsters que aparecerán [Solo visible en categoria 1 o SPOT]

    Si en el primer 0 ponemos otro número (El cual debe existir en el monster.txt) por ejemplo el 15, seguramente ahí aparecerán otro monster. Si quieres conocer los códigos de los monsters visita nuestro tutorial haciendo un [Clic aqui]
    Si en el segundo 0, lo cambiamos por un 2, el spot lo estaríamos creando en el mapa Davias, si pongo el número 4 en Noria, si pongo 6 en Stadium, etc.
    Si quieres conocer los códigos de los mapas visita nuestro tutorial haciendo un [Clic aqui]
    Después tenemos las coordenas x, y, x2 e y2 que nos indican en donde van aparecer los monsters o los spots.
    Luego tenemos el radio de aparición que si tenemos un número alto [Por ejemplo 40] el spot estará algo disperso y si ponemos un número más chico [por ejemplo 5] el spot estará más unido.
    También tenemos la dirección -1 (Ubicación espacial, pero no es importante esto a mi criterio). En cambio si sería importante para poner un NPC (un baúl) porque sino nos quedaría alreves, pero con lo que respecta a los monsters no hay importancia, ya que cuando alguien los mata no mira si están de costado o mirando hacia el frente.

    Finalmente recuerden que el último dígito [CATEGORIA 1 = SPOTS] es la cantidad de monster que deseamos que aparezcan, no sean exagerados y pongan valores muy altos porque el server tiene una cierta cantidad de mobs (Cantidad máxima).
    Esto quiere decir que, si la suma total de monsters agregados en todo nuestro archivo es superior a la permitida, el gameserver.exe nos arrojará un error. (Si bien a veces se puede ingresar al servidor y jugar normalmente, no es recomendable dejar este error ya que puede traernos consecuencias a largo plazo)
    Recuerden que cuando tenemos una [categoría 2 monster (Individuales)] no es lo mismo que un spot.
    La [Categoría 2] son monster individuales, que si copiamos la linea varias veces, tendremos tantos monsters como lineas hemos agregado, por ejemplo
    35 4 30 29 208 -1 //Monster individual
    35 4 30 29 208 -1 //Monster individual
    35 4 30 29 208 -1 //Monster individual
    35 4 30 29 208 -1 //Monster individual
    35 4 30 29 208 -1 //Monster individual
    Ahí tenemos 5 lineas (Como pueden ver son más cortas que las de los SPOTS [CATEGORIA 1]), por lo tanto tenemos 5 monsters individuales. Recuerden que lo mencioné anteriormente, la Categoría 2 es para crear monsters individuales no para crear spots.

  • Otro punto importante: Siempre trabajen con un backup y por cada modificación realizada en su archivo verifíquenla, pueden usar el "Reload monsters" desde el Gameserver.exe para no cerrar y abrir el juego cada dos segundos

  • Y por último traten de modificar lo que tiene en sus files y no agregar más lineas o quitar las que tienen , puede causar errores en el juego.
    Por ejemplo si ven que su server no tiene spots, creamos una linea de tipo SPOT [Categoria 1], si vemos que nuestro server tienen muchos spots hacemos al reves , sacamos la cantidad de monsters y ponemos y en último digito (El que corresponde a la cantidad) ponemos un 1.
    Si no queremos que ese spot esté ahi y lo queremos en otro lado , modificamos el mapa y sino queremos que este en esas coordenadas, simple, se las cambiamos.
    Usen las imaginación , busquen alternativas, investiguen, hagan varias pruebas siempre, la idea es encontrar una regularidad y de esta forma establecer criterios de coherencia los cuales ustedes mismos podrán verificar y luego decir, que es lo que les resulta más conveniente.
  • Editar shop de forma manual

    Bueno en este tutorial vamos aprender a editar los shops.txt de forma manual, todos sabemos que existen programas predefinidos, estos programas son un tipo de software que permite; apartir de una interfaz gráfica poder visualizar los nombres de los items, pero ¿Qué sucede?



    Como siempre digo, de esta forma estamos limitados a, por ejemplo:
  • Dependemos de un programa [Que a veces no funciona en nuestro sistema]

  • Si nuestro server tiene items agregados no conocemos los códigos

  • Los editores de shops respetan una cierta cantidad de dígitos. Esto puede ser un problema si nuestro servidor no lee esa cantidad de dígitos de forma exacta

  • Y por último, con un programa predefinido los límites y/o características las dá el programa y no nosotros

  • ¿Qué solución podemos darle a esto?
    Una muy sencilla; leyendo paso por paso esta guia que nos servirá para infinitas cosas , porque esta guia comenzará explicando de donde surge cada código para crear un shop, donde encontrarlo y como interpretarlo.
    Las cosas cuando se trata de informática o matemática (y todo lo que es ciencia exacta) tienen una explicación lógica, nada está por estar, ni tampoco las respuestas son !Porque SI!

    Los códigos de los items que ustedes ven en los shop (No sólo los códigos de un shop, también los códigos del dropeo de las kundons, cajas o box, premios de eventos, y un sin fin más) surgen apartir de los códigos del
    Item(Kor).txt
    1)Para comenzar abriremos el Item(Kor).txt que lo podemos encontrar en la siguiente ruta
    Muserver\Data\Lang\Kor
    (recuerden que no todos los server utilizan el mismo protocolo, revisen los tutoriales anteriores publicados en nuestro sitio)
    Comenzemos a analizar:

    Archivo item kor

    2)Yo marqué dos rectángulos con diferentes colores, ahora veamos que es cada uno de ellos:
    El rectángulo rojo: nos indica la clasificación o categoría global, es decir, ese número que vemos arriba de todo, nos indica la cabeza del grupo de los items que contiene.
    Analizemos esa imagen aqui:
    //Axes
    //Index Item Slot Skill X Y Serial Option Drop ItemName
    1
    0 0 0 1 3 1 1 1 "Small Axe"
    Si observan detalladamente (en la imagen) verán que en el rectángulo rojo vemos un "1" al comienzo, ubicado en una esquina superior izquierda , ese "1" nos indica que los items contenidos entre ese "1" y el próximo "end" [Este "end" lo veremos al finalizar cada una de las categorías] pertenecen sólo a las AXES y no a otros items.
    Por otra parte el rectángulo verde marca la identidad del item dentro del grupo o categoría, de esta forma podemos diferenciar una "Small Axe" de una "Double Axe" , si bien las dos son axes (hachas) son dos items totalmente distintos.

    Hagamos una analogía para que entendamos mejor esto, supongamos que tenemos en un lugar, un monton de animales, entre ellos : perros, caballos y gatos pero los tenemos todos mezclados.
    Una forma de agruparlos o clasificarlos sería así:
    Todos los perros juntos
    Todos los caballos juntos
    Todos los gatos juntos
    Esto es lo mismo que marcamos con el rectángulo rojo, es decir, todas las AXES juntas.
    Ahora bien, ya tenemos 3 grupos [El de los caballos, el de los perros y el de los gatos], pero por ejemplo no todos los caballos son iguales, podemos establecer muchas diferencias entre ellos, una de estas podría ser la edad.
    Entonces dentro de nuestra categoría o grupo de caballos podríamos decir:
    Caballos de 1 año
    Caballos de 2 años
    Caballos de 3 años
    Lo mismo podemos hacer con los gatos y con los perros , de esta forma estamos clasificando las distintas categorías dentro de un grupo.
    Esto es lo mismo que marcamos en el rectángulo VERDE.
    Ahora llevemos todo esto a la práctica, voy a editar una "Small Axe" en un shop.
    Lo primero que haremos es ver a que grupo pertenece la "Small Axe" (Rectángulo rojo) y luego nos fijamos que número lo identifica dentro del grupo (Rectángulo verde). Mis cálculos me dieron así:
    1 0
    El 1 identifica al grupo de las axes y el 0 identifica al item "Small Axe"
    Entonces vamos a testiar si realmente esto dá resultado.
    Primero lo edito en un shop:

    Shop del muonline

    3)Luego entraré al juego para ver si realmente aparece ese item (Small Axe)
    El shop que seleccioné para realizar esta prueba es el herrero de lorencia entonces lo iré a verificar , ya regreso con los resultados...

    Visualizando item en el shop

    4)Y efectivamente tenemos la "Small Axe" en el shop, con esto queda demostrado lo que decia al principio: "Todo siempre tiene explicación y que las cosas responden a algo cuando se trata de matemática o informática"

    Pero la guia no termina acá, si observan el código del SHOP no son sólo dos números como puse yo , sino que son una serie de muchos más.
    Veamos que es cada número y que podemos editar apartir de ellos.
    Antes de seguir debo mencionar algo muy importante, yo estoy trabajando con archivos de un server versión (0.99b).
    Este código pertenece a un item de una versión 0.99b
    1 0 0 255 0 0 0 //Small Axe
    Y este código pertece a un item de una versión Season 4
    9 1 0 255 0 0 0 0 //Dragon Pants
    ¿Encuentran alguna diferencia? (si pensas que la diferencia son los dos primeros dígitos el 1 por el 9 y el 0 por 1 , quiere decir que no has entendido lo leído anteriomente, es lógico que el 9 identifica a otro grupo de items [Pant] y el 1 caracteriza al item dentro del grupo).

    La diferencia es simple, en las versiones 0.97x (y otras) los códigos de los shops tienen 7 grupos de digitos (el 255 es un 1 grupo de dígitos y no son 3 digitos diferentes) y en las versiones nuevas tienen 8 grupos de dígitos. (Los digitos a los cuales me refiero son esos números separados por espacios)
    Como estoy trabajando con una versión 0.99b entonces trabajaré con 7 grupos de digitos.

    5)Los primeros dos grupos de dígitos ya vimos que son los más importantes, ya que el primero identifica al grupo de items y el segundo identifica al item dentro de ese grupo.
    Continuemos con la "Small axe" como ejemplo.
    Escribiré de forma vertical cada uno de estos dígitos para explicarlos mejor:
    //Small Axe
    1 => Identifica al grupo de items en este caso a las Axes = hachas
    0 => Identifica al items dentro del grupo de axes en este caso a la Small Axe
    0 => Identifica el nivel del item puede ir de 0 a 15 (Depende nuestro server)
    255 => Identifica la durabilidad del item (Puede ir de 0 a 255)
    0 => Identifica al Skill 1=SI , 0=NO (Es lógico que un set no puede tener skill)
    0 => Identifica a la suerte del item 1=SI , 0=NO
    0 => Identifica si el item es excelente , 1=SI , 0=NO
    La 8º opción (OptExc) que tenemos en los shops que corresponden a las versiones nuevas , identifica las opciones excelents que tiene ese item/s.
    Ya tenemos toda la información para editar nuestro shop, vamos a realizar un ejemplo más modificando todas las opciones para poder ver variantes y aplicar lo recien aprendido
    Editaré nuevamente la "Small Axe" de la siguiente forma
    1 => Identifica al grupo de items en este caso a las AXES = HACHAS
    0 => Identifica al items dentro del grupo de AXES en este caso a la Small Axe
    8 => Identifica el nivel del item puede ir de 0 a 15 (depende nuestro server)
    255 => Identifica la durabilidad del item puede ir de 0 a 255
    0 => Identifica al Skill 1=SI , 0=NO
    1 => Identifica a la suerte del item 1=SI , 0=NO
    0 => Identifica si el item es excelent , 1=SI , 0=no
    Repasando lo realizado, lo que debería ver en el shop es un item, llamado "Small Axe", con un nivel 8, una durabilidad de 255, sin skill, con suerte y finalmente que no sea excelent:
    Veamos como queda en el shop0.txt [Herrero de Lorencia]

    Modifcando código en el shop

    6)Finalmente tenemos el item editado según las características indicadas anteriormente:

    Visualizando los cambios dentro del juego

    Eso es todo por hoy, lo que quería resaltar en este tutorial es como leer el item(kor).txt y de que forma se relacionaba a los shops y a todo lo que es dropeo.
    El gameserver.exe de nuestro juego lee todos los items a partir de esos dos números y para saber de que items estamos hablando sólo necesitamos conocerlos: Uno es el dígito que identifica al grupo del item , y el otro dígito es el que identifica al item dentro del grupo.

    Las demás opciones acompañan al items modificándolo/personalizándolo como la "Durabilidad", el "nivel" etc.
    Antes de editar un shop, siempre miren y cuenten las cantidad de dígitos que tienen y tómenlo como un ejemplo o referencia contextual, ya que como vimos anteriormente algunos tienen 7 grupos de dígitos y otros tienen 8 grupos de dígitos.
    Todo es cuestión de mirar y observar lo que tienen en sus archivos antes de modificarlos.

    Editando los shops de esta forma evitan tener a mano un programa y pueden hacerlo ustedes mismos con sólo usar su cabeza y sus manos.
    Recuerden también que, al finalizar el código de un shop debe ir un "end" (sin comillas). Obsérvenlo es las imagenes anteriores y en sus archivos, el "end" (fin) es el cierre de ese pequeño algorítmo númerico; el cual, sino lo ponemos o lo borramos, seguramente su server no iniciará o tendrán algun error.

    También recuerden utilizar backups y por cada modificación verificar si todo está correcto, de esta forma avanzaremos de forma lenta pero segura sin márgen de error.

    Publica aqui tu servidor MuOnline

    Publica tu server MuOnline por $10 al mes.
    Válido para todos los países.
    Tu servidor será publicado en nuestro banner principal: consultas@muonlinetutoriales.com

    Personalizando texturas del cliente II

    En el anterior tutorial aprendimos a modificar y/o personalizar texturas del piso de lorencia, hoy vamos a continuar con el mapa lorencia pero lo que personalizaremos será la textura que corresponde al agua, esa textura la vemos en el juego en la siguiente parte de lorencia:

    Visualiznado imagen de un cliente muonline

    1)Lo que haremos será modificar el color del agua por algun otro color que nosotros querramos, para esto haremos lo mismo que hicimos en el tutorial Personalizando texturas del cliente I
    El programa que utilizaremos nos permitirá leer diferentes texturas del cliente y realizar conversiones a otros formatos.



    Una vez que lo tenemos descargado, lo abrimos y convertimos el archivo TileWater01.OZJ que lo podemos encontrar en la siguiente ruta
    X:\Cliente MuOnline\data\World1
    en TileWater01.jpg.
    El formato original del archivo TileWater01 es .OZJ y el formato que nos permitirá editar el color será .JPG (Recuerden hacer un backup como hicimos en el anterior tutorial)

    Convirtiendo archivo ozj

    2)Al hacer clic en "Convert" la imagen será convertida al formato .jpg , es decir , que ya podemos editarla con cualquier software de imágenes.
    Para este tipo de trabajos (Siempre recomiendo el Photoshop, NO el paint).
    Yo, simplemente lo que haré, será cambiar ese color azul oscuro , por un rojo, para darle un poco más de luz a esa parte de lorencia.
    Recuerden que la imagen convertida en .jpg aparecerá en el mismo directorio que en donde tenemos la .OZJ
    Con el photoshop haremos lo siguiente:
    Abrir la imagen TileWater01.jpg , y luego vamos a
    Imagen=> Ajustes=> Tono/Saturación (Control+u)
    Modificando saturación de la imagen

    3)En nuestra nueva ventana tildamos la opción de abajo que dice
    Colorear
    y luego le damos el color que nosotros querramos moviendo las flechas de
    Tono, Saturación y Luminosidad
    De esta forma pueden lograr el color que desean.

    Estableciendo valores de tono y saturación

    4)Una vez que logramos el color deseado, guardamos la imagen de la siguiente forma: Vamos a:
    Archivo=> Guardar como=> y seleccionamos el destino o la carpeta donde queremos guardar el archivo
    luego seleccionamos la opción de JPEG (*.JPG;*.JPEG;*.JPE)
    Yo particularmente la voy a guardar en la misma carpeta del cliente que estamos editando
    X:\Cliente MuOnline\data\World1
    Al hacer clic en Guardar, nos saldrá otra ventana para que seleccionemos la calidad que queremos en la imagen, yo seleccionaré 12 (La máxima calidad)

    Guardando cambios

    5)Finalmente, lo que haremos ahora, será el paso inverso; es decir, convertiremos el archivo TileWater01.jpg que editamos recientemente en TileWater01.OZJ y lo pegaremos en nuestro cliente en mismo directorio
    X:\Cliente MuOnline\data\World1
    reemplazando el existente.
    El resultado sería algo similar a lo siguiente:

    Visualizando los cambios

    Acá les dejo otra imagen para contemplar el trabajo realizado

    Visualiznado cambios con cámara 3d