Volver los stats de 65535 a 32767

Bienvenidos a un nuevo tutorial, a raíz de varias consultas hemos decidido publicar esta nueva guia.
¿De qué se trata esto?, lo que aprenderemos hacer es el paso inverso al siguiente tutorial Poner los stats en 65535
Si nosotros realizamos los pasos inversos al pie de la letra, nos encontraremos con un error ¿Por qué o cuál error?, la respuesta a continuación:
1)Lo primero que haremos será ingresar al "Administrador corporativo"

Acceso al administrador corporativo

2)Desplegamos todas las entradas hasta la llegar a la base de datos "MuOnline", seleccionamos donde dice "Tablas", luego hacemos un clic derecho sobre la llamada "Character" y seleccionamos la opción "Diseñar tabla"

Diseñando tabla character

3)Ahora lo que hacemos, es el paso inverso al tutorial anterior, es decir, seleccionamos la columna "Strength" y modificamos el tipo de datos "Int" a "SmallInt", lo mismo deberíamos hacer con las otras columnas pertenecientes a los stats, pero lo que haremos antes de eso, será intentar guardar los cambios de una sola columna y veamos lo que sucede:

Error por desbordamiento de datos

4)Lo que sucedio es el "Error" al cual habíamos anticipado anteriormente, lo que nos dice es lo siguiente:
Tabla 'Character'
- No se puede modificar la tabla.
Error ODBC: [Microsoft][ODBC SQL Server Driver][SQL Server]Error de desbordamiento aritmético para el tipo de datos smallint, valor = 65535.
[Microsoft][ODBC SQL Server Driver][SQL Server]Se terminó la instrucción.
¿Pero de que se trata este error y por qué? ¿Cómo soluciono esto?
Imaginemos que tenemos 5 litros de agua y nos piden que pongamos esos 5 litros en un vaso que tiene como máxima capacidad 1 litro ¿Qué creen que sucedería?
La respuesta sería la siguiente:
"Al pasar 1 litro no abria problemas, pero cuando querramos poner más agua comenzará a rebalsar o desbordar"




Exactamente lo mismo que sucede con el agua nos esta sucediendo aca, a diferencia que el vaso es una analogía que hace referencia al tipo de datos/longitud y el agua es otra analogía que hace referencia a los puntos contenidos en los stats (65535 / 32767).
Para solucionar esto entonces, tendremos que aplicar una querry, en dicha consulta lo que haremos será bajar a 32767 los stats de aquellos personajes que superen este número.
La consulta sería la siguiente:
UPDATE Character
set Strength='32767'
Where Strength>'32767'

UPDATE Character
set Dexterity='32767'
Where Dexterity>'32767'

UPDATE Character
set Vitality='32767'
Where Vitality>'32767'

UPDATE Character
set Energy='32767'
Where Energy>'32767'

UPDATE Character
set Leadership='32767'
Where Leadership>'32767'
Esta consulta la pegamos en el "Analizador de consultas" seleccionando la base de datos "MuOnline" y apretamos F5
[Recuerden siempre de hacer un backups o copia de seguridad]
Esta consulta puede demorar dependiendo la cantidad de personajes.

Querry SQL para bajas los stats

4)Y ahora si podemos volver a realizar lo que anteriormente no pudimos, es decir lo que detalla el paso número 3)
Entonces ingresaremos al diseño de la tabla "Character" y modificaremos el tipo de datos "Int" a "SmallInt" en las columnas Strength,Dexterity,Vitality,Energy y si tu versión utiliza "DarkLord" no se olviden de la colmuna Leadership

Editando la tabla character

Y finalmente podremos guardar los cambios sin error alguno.
Recuerde hacer las modificaciones en sus files.

Observación final:
Por un lado, esta es una solución rápida pero por el otro lado no sería muy justa
¿Por qué esta solución no es justa?
Porque pensemos lo siguiente, si tenemos un personaje con sus stats en 32768 y tenemos otro personaje con 65535 en en sus stats, ambos tendrán después de la consulta [Querry], "32767" eso quiere decir que ambos serán fulles tanto el que tenía 32768 como el que tenia 65535.
Para evitar esto abría que hacer hacer un pasaje de datos complicado, por ejemplo saber que equivalencia podríamos darle a cada valor si el limite máximo es 32767, es decir, tendríamos que armarmos un pasaje de datos referencial.

Reiniciar el servidor [Resets]

Bienvenidos a un nuevo tutorial, en tutoriales anteriores aprendimos a reiniciar las clases o razas en nuestro servidor conservando el resto de los datos.
Un usuario nos escribio a consultas@muonlinetutoriales.com para saber de que modo podría él reiniciar solamente los resets de su servidor conservando los demas datos.
Si bien la respuesta era bastante sencilla, puede dificultar a aquellos usuarios que recien se inician.



Entonces comenzemos:
1)Existen varias formas de reiniciar los datos contenidos en una columna, es este caso en la llamada "Resets", dicho trabajo lo podemos hacer mediante:
a)Una querry
b)Un job
c)O talvez, la más rápida o sencillo sería borrando la columna y volviendola a crear (Es importante saber que al hacer esto, eliminamos todas las propiedades de dicha columna, como por ejemplo: "El valor predeterminado")
Como en el anterior tutorial "Reiniciar el servidor [Class] lo hicimos desde una querry en el analizador de consultas, repetiremos el mismo esquema:
Lo primero que haremos será abrir el analizador de consultas, el mismo lo encontramos en Inicio => Microsoft SQL Server => Analizador de consultas

Analizador de consultas

2)Lo que hacemos ahora es loguearnos con nuestros datos del SQL y seleccionamos la base de datos MuOnline

Selección de base de datos MuOnline

3)Ahora copiamos la siguiente querry y la pegamos en el campo de texto
UPDATE Character SET resets=0
Para ejecutar la querry apretamos F5
Dependiendo la cantidad de personajes esta consulta puede demorar.

Ejecutando querry

4)Y finalmente todos los personajes volverán a tener 0 Resets

Ejemplificación

Información adicional:
a)Siempre debemos realizar una copia de seguridad antes de cualquier modificación.
b)La columna "Resets" puede tener otro nombre dependiendo los files.
c)Como abrán podido observar no usamos condicionales , pero si desean pueden agregarlos a la querry, eso ira de acuerdo a la necesidad específica de cada usuario.

Personalizar el login del cliente

Bienvenidos a un nuevo tutorial, hoy aprenderemos a modificar o personalizar el cuadro en donde ponemos nuestros datos para ingresar al servidor.
Veamos la siguiente imagen para saber de que se trata:

Interface del cliente

1)Lo primero que haremos, sera buscar el archivo login_back.ozt en nuestro cliente, el mismo se aloja en la siguiente ruta MiClienteMuOnline/Data/Interface
Una vez localizado lo copiamos y lo pegamos en nuestro escritorio (La idea de esto es no trabajar sobre el original sino con una copia, ya que si algo sale mal no necesitamos volver a descomprimir el cliente)

Archivo ozt

2)Nuestro siguiente paso, será convertir el archivo login_back.ozt en login_back.tga, para esto pueden usar cualquier convertidor, en nuestro pack de archivos encontrarán varios.
Una vez convertido, lo abrimos con el Photoshop y lo editamos a gusto.
Terminada la edición, guardamos el archivo con el mismo formato, el .tga

Edición del archivo en photoshop

3)Ahora simplemente lo que hacemos, es volver a convertir el archivo login_back.tga en login_back.ozj y pegamos ese archivo en la siguiente ruta MiClienteMuOnline/Data/Interface
(Recuerde que si quieren conservar el original no deben reemplazarlo)
El resultado será el siguiente:

Verificando los cambios dentro del cliente

Si necesitas saber como editar cualquier parte del cliente, sólo debes escribirnos a consultas@muonlinetutoriales.com para que publiquemos el tutorial.

Reiniciar el servidor [Class]

Bienvenidos a un nuevo tutorial, no fue hace mucho que nos consultaban como reiniciar o resetear las razas/clases/quest o como quieran denominarlo.
¿Qué significa esto?
Significa que por el ejemplo el Soul Master o Gran Master vuelva a ser Dark Wizard, es decir, que todos los personajes del server vuelvan a su raza original o de inicio.



Si son "muy" pocas cuentas, este procedimiento se puede realizar de forma manual pero quienes acceden a esto es porque seguramente ya tienen muchas cuentas, por lógica; muchos personajes.
1)Comenzemos, lo primero que necesitamos saber es como se organizan las clases, en tutoriales anteriores ya lo hemos visto, la raza o clase del personaje no se guarda en nuestra base de datos a través de su nombre, sino a través de un número, el listado es el siguiente:
0=> Dark Wizard
1=> Soul Master
2=> Gran Master
16=> Dark Knigh
17=> Blade Knigh
18=> Blade Master
32=> Elf
33=> Muse Elf
34=> Hight Elf
48=> Magic Gladiator
49=> Duel Master
50=> Duel Master
64=> Dark Lord
66=> Lord Emperor
65=> Lord Emperor
80=> Summoner
81=> Bloody Summoner
82=> Dimension Master
96=> Rage Fighter
97=> Rage Fighter
98=> First Master
Para quienes quieran verificar esto, pueden hacer lo siguiente, ingresar al server/editor, verificar la clase o raza y luego ingresan al SQL=>Character=>Abrir Tabla=>Devolver todas las filas.
Ahora lo que debemos buscar es al personaje y luego deslizar el scroll horizontal hasta la columna llamada "Class", en mi ejemplo yo tengo un Blade Master en el juego y verificaré si efectivamente la raza responde al número [18] teniendo en cuenta el listado de arriba.

Columna class de la tabla character

2)Y efectivamente mi personaje Blade Master responde correctamente a la Class=18
Entonces, lo que debemos hacer ahora es una simple querry para que mi Blade Master vuelva a ser Dark Knigh y atención, tambien debemos hacer lo mismo si nuestro personaje es un Blade Knigh.
Entonces como sabrán, son 2 evoluciones por RAZA, (Siempre y cuando tu versión sea superior a Season 3) es por eso que debemos tener en cuenta ese concepto.
Entonces gráficamente lo que deberíamos hacer es lo siguiente:
Las razas 1 y 2 , volverlas a raza 0
Las razas 17 y 18, volverlas a raza 16
Las razas 33 y 34, volveras a raza 32
Las razas 49 y 50, volverlas a raza 48
Las razas 65 y 66, volverlas a raza 64
Las razas 81 y 82, volverlas a raza 80
Las razas 97 y 98, volverlas a raza 96
Para realizar este procedimiento, debemos abrir nuestro "Analizador de consultas" y seleccionar como base de datos a la "MuOnline"

Interfaz del analizador de consultas

3)Y luego, en el campo del código pegamos las siguientes querrys [Importante: antes de ejecutar esto realizen una copia de seguridad de la base de datos]
UPDATE Character set class='0' where class='1' or class='2'
UPDATE Character set class='16' where class='17' or class='18'
UPDATE Character set class='32' where class='33' or class='34'
UPDATE Character set class='48' where class='49' or class='50'
UPDATE Character set class='64' where class='65' or class='66'
UPDATE Character set class='80' where class='81' or class='82'
UPDATE Character set class='96' where class='97' or class='98'
Luego apretamos F5 o hacemos clic en el boton "Ejecutar consulta"

Ejecutamos la querry para modificar las clases

Y finalmente podrán verificar que en nuestro SQL o en el juego sólo tendremos personajes sin ninguna evolución.
Las querrys son aplicables a cualquier versión, no importa sino tienes 3era quest, ya que usamos la condición "OR" para verificar las posibles razas.
Adicional:
a)Siempre realizen un backup o copia de seguridad antes de realizar modificaciones en la DB.
b)Esto sólo resetea la RAZA o CLASE (class) del personaje, no resetea puntos de skill tree, árbol de habilidades, magias/skills u otros...
c)Antes de realizar esto deberán informarles a sus usuarios que deben quitarse todos los items que el personaje tenga puesto, ya que cuando ingresen al server, estos pueden desaparecer.
d)En el caso de tener muchos personajes, esta consulta puede demorar un tiempo significativo acorde a la cantidad de personajes (No de cuentas)
e)Para ejecutar estas querrys deben tener el servidor Offline
f)No todos los files existentes manejan la misma codificación de números/class.

Personalizar nuestro main.exe [Textos]

Bienvenidos a un nuevo tutorial, como lo habíamos prometido en el anterior tutorial hoy veremos la forma de personalizar los textos de nuestro main.exe
Alguno se preguntará ¿Cuáles son los textos del main.exe?, la respuesta en la siguente imagen:

Archivo main

1)Lo que aprenderemos a modificar son esos textos que aparecen en la imagen anterior, ellos son:
Main y WebZen
Tambien veremos como modificar la versión y otros textos que aparecen al hacer clic derecho => Propiedades.
Lo primero que haremos será abrir el main.exe con el programa con el que hemos trabajado en el tutorial anterior Pesonalizar nuestro main.exe [Logos]

Interfaz del resource hack

2)Del lado izquierdo, seleccionamos la opción "Versión info" y desplegamos todas las entradas

Personalizando los textos del ejecutable

3)Como ya han podido observar, del lado derecho tenemos todo el código el cual podemos editar.
Es importante tener mucho cuidado con la edición ya que no debemos borrar parte del código sino después no vamos a poder compilarlo.
En este caso y particularmente realizé las siguientes modificaciones:
VALUE "CompanyName", "www.muonlinetutoriales.com"
VALUE "FileDescription", "by asd"
Simplemente haré esas dos modificaciones, ustedes lógicamente pueden modificar el archivo a gusto.
Terminada la modificación, hacemos un clic en el boton "Compile Script" y luego guardamos los cambios.
El resultado será el siguiente:

Verificando los cambios en main ejecutable

Con eso ya tendremos editado nuestros textos.
Importante: Esta función no tiene como objetivo quitarle los créditos a las aplicaciones, sino de darle un poco de personalidad.

Personalizar nuestro main.exe [Logos]

Bienvenidos a un nuevo tutorial, hoy aprenderemos a personalizar nuestro main.exe modificando el icono de la aplicación.
Para esto usaremos una fantástica herramienta llamada Resource Hacker, dicho programa nos ayudará a personalizar nuestro main.exe (o cualquier aplicación .exe, por ejemplo el "Luncher") de una forma realmente muy sencilla.



1)Lo primero que haremos será ingresar a la siguiente URL https://www.angusj.com/resourcehacker/
Ahora, nos deslizamos hasta el final y hacemos un clic en donde dice [Setup File 730kb] o donde dice [EXE install (2.9MB)]

Descarga del Resourse hack

2)Una vez descargado el programa, lo instalamos (La instalación la realizan de modo normal)
Terminada la instalación, abrimos el programa.
Veremos algo similar a lo siguiente:

Interfaz del programa

3)El siguiente paso será ir "File => Open" [Control+O] y seleccionamos nuestro .exe a modificar, en mi caso el main.exe
Una vez abierto, veremos algo similar a lo siguiente:

Abriendo archivo a editar

4)En este caso, sobre el lado izquierdo veremos diferentes carpetas (Depende de la edición de su .exe esta cantidad puede variar)
Nos concentraremos en la primera carpeta [Icon], dentro de dicha carpeta tenemos todos los iconos que utiliza la aplicación main.exe, veamos uno:

Visualizando icono del ejecutable

5)Es importante saber y conocer que la aplicación main.exe trabaja con diferentes tamaños/bits/etc, esto lo podemos ver en la opción "Icon Gruop" => "101" => "1042"
En mi caso el grupo de iconos que utiliza mi main.exe son los siguientes:
32 x 32 (16 colors) - Ordinal name: 1
48 x 48 (256 colors) - Ordinal name: 2
32 x 32 (256 colors) - Ordinal name: 3
16 x 16 (16 colors) - Ordinal name: 4
Entonces para poder remplazar ese resource, necesitamos respetar dichas características.
Para modificar ese grupo de iconos vamos a utilizar el IcoFx el que pueden descargar desde la siguiente URL https://icofx.ro/
Una vez descargado, lo instalamos y abrimos con el programa nuestro main.exe, nos aparecerá una ventana como la siguiente.
Hacemos un clic en el boton "Extraer"

Interfaz del icoFX

6)Lo que hemos hecho ahora, es extraer el grupo de íconos que contiene el main.exe, esto nos permitirá editarlos de forma individual.
Una vez que terminamos la edición, lo que haremos será guardar la imagen en formato .ico
El siguiente paso será volver al Resourse Hacker, sobre la carpeta "Icon Group" hacemos un clic izquierdo (Para marcarla) y nos vamos a donde dice "Action" => "Remplace Icon..."

Reemplazando icono en el resource

7)En nuestra nueva ventana, hacemos un clic en donde "Open file with new icon ..." , seleccionamos el archivo .ico creado anteriormente y hacemos un clic en "Remplace"

Salvando cambios

8)Como ya podrán observar los íconos han sido modificados por los nuestros, simplemente lo que debemos hacer ahora es guardar los cambios y verificar el trabajo realizado.
Para guardar los cambios, vamos a File => Save [Control+S] y para verificar los cambios buscamos el .exe
Atención, sino vemos los cambios, hacemos clic derecho y ponemos actualizar, o reiniciamos la pc (En el caso que no actualize)
El resultado será el siguiente:

Verificando el trabajo terminado

Y con eso ya tenemos nuestro propio main.exe personalizado con nuestro ícono.
En el próximo tutorial veremos como modificar las leyendas o descripción del .exe usando el mismo programa.
Adicionales:
a)Si van a encriptar el main.exe es mejor que este cambio lo realizen antes de la compresión.
b)Si el main.exe ya está encriptado, es posible que tengan varios errores al aplicar este tutorial
c)El autor nos informa que el programa tiene soporte desde Windows 95 hasta Windows 7, no hay referencia sobre Windows 8 o Windows 10.

Registrar un dominio en NO-IP [Nuevo sitio]

Bienvenidos a nuevo tutorial, hoy aprenderemos a registrar un dominio en el sitio https://www.no-ip.com/, muchos de ustedes diran que dicho tutorial ya existe, pero como sabrán estos sitios webs actualizan su interfaz (página web), y si bien el procedimiento sigue siendo el mismo, el nuevo sitio les puede dificultar si usamos el anterior tutorial.



Comenzemos entonces:
1)Lo primero que haremos será ingresar a https://www.no-ip.com/ y hacemos un clic en donde dice: "Sing up Now"

Interfaz del sitio noip

2)En nuestra siguiente pantalla, lo que debemos hacer es completar los datos de la siguiente manera:
Username: Nombre de usuario
Password: La clave
Confirm Password: Repetimos la clave
Email: Debe ser verdadero ya que luego confirmaremos el registro
Hostname: El dominio a registrar
Luego de completar los datos hacemos un clic en "Sing Up"

Registro en el sitio noip

3)Finalizado el procedimiento nos llegará un E-mail para confirmar el registro, para realizar dicha confirmación hacemos un clic en el enlace que tenemos en el cuerpo del mensaje

Logueo en el sitio noip

4)Y ahora ya podemos loguearnos con nuestros datos del registro.
Al loguearnos por primera vez, seguramente nos aparezca una ventana para que completemos nuestro perfil como usuario de NO-IP
Este paso no es obligatorio y pueden cerrarlo si quieren, pero si lo desean lo que debemos hacer es lo siguiente:
FirstName: Nuestro nombre
Last Name: Nuestro Apellido
Security Question: Pregunta de seguridad
Answer: Respuesta a la pregunta de seguridad
Luego hacemos un clic en "Update Info"

Configurando datos personales del registro

5)Con eso ya tenemos el registro completo. Lo que veremos ahora será como registrar un dominio (Recuerden que el paso número 2 ya habíamos registrado un dominio junto al registro de nuestra cuenta), para esto deben hacer un clic en donde dice "Add a Host"

Agregando un host

6)Lo que haremos ahora será escribir el nombre del host en donde dice: "Hostname:" y posteriormente seleccionamos el tipo de dominio "Por ejemplo sytes.net, zapto.org, etc"
Ahora, simplemente hacemos un clic en donde dice "Add Host"

Configurando el agregado del host

7)Una vez que tenemos registrado el dominio, necesitamos descargar el programa ducsetup.exe
Para bajar el programa debemos ir a donde dice "Download Client"

Seleccionando la descarga del ducsetup

8)Y hacemos un clic en donde dice "Download Now"

Descarga e instalación del programa ducsetup

9)Finalizada la descarga, realizamos la instalación de programa (Algo muy sencillo), cuando la instalación llegue a su final, nos aparecerá una ventana en la que debemos poner nuestros datos, estos datos son los mismos que usamos para el registro original.
Luego de agregar nuestros datos (E-mail y Password) hacemos clic en [OK]
Ya logueados hacemos un clic en donde dice "Edit Hosts"

Logueo en el programa

10)Y lo que hacemos ahora, será tildar la casilla de nuestro/s dominio/s registrados.
Luego hacemos un clic en "Save"
El resultado será el siguiente:

Activando los dominios registrando

Con eso ya tendremos nuestra cuenta en no-ip más nuestro/s dominio/s registrado/s direccionando correctamente a nuestra ip dinámica.