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"
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"
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:
4)Lo que sucedio es el "Error" al cual habÃamos anticipado anteriormente, lo que nos dice es lo siguiente:
Tabla 'Character'¿Pero de que se trata este error y por qué? ¿Cómo soluciono esto?
- 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.
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 CharacterEsta consulta la pegamos en el "Analizador de consultas" seleccionando la base de datos "MuOnline" y apretamos F5
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'
[Recuerden siempre de hacer un backups o copia de seguridad]
Esta consulta puede demorar dependiendo la cantidad de personajes.
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
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.