Dar puntos al comenzar

Bienvenidos a nuevo tutorial, hoy aprenderemos una alternativa a como dar puntos a los personajes que recien comienzan en el juego.
En el antiguo tutorial lo hemos hecho desde un JOB en SQL el cual funciona de una manera un poco "estructurada"
¿Qué quiere decir o a qué me refiero?, Al crear un Job o Sentencia SQL obliga a que cada personaje creado deba salir del juego para recibir el premio.
¿De qué forma podemos evitar eso?, simple; lo haremos modificando los valores del procedimiento encargado de crear el personaje dentro del juego.
Aclaración: Resets y Puntos son tablas totalmente diferentes que no tienen ninguna relación en sus valores (solo comparten coherencia), ya que muchos creen que agregarle a un personaje 2 o 3 resets implica que el personaje ya tenga puntos, stats , etc.
Pero, no, no es asi; un personaje puede tener 35 resets y cero stats, cero puntos para repartir. El punto de esto es que debemos tener bien claro que son tablas diferentes, resets son resets, puntos son puntos.
Terminada la explicación, vamos al tutorial.
1)Ingresamos al SQL Server Enterprice Manager y luego desplegamos las opciones de nuestra base de datos "MuOnline". En ella nos desplazamos hasta los procedimientos almacenados y del lado derecho buscamos el llamado "CreateCharacter" (No presente en todas las versiones y el nombre del proceso puede variar de acuerdo a la versión de MuOnline con la que estemos trabajando)

Ingresando al procedimiento almacenado CreateCharacter

2)Este procedimiento es el que se ejecuta a la hora de crear un personaje, es decir, que dicho procedure consta de 3 partes importantes:
a)Declaración de variables
b)Insertado de variables
c)Valores de variables

Variables del proceso

a)Declaración de variables:

@AccountID varchar(10),
@Name nvarchar(10),
@cLevel smallint,
@LevelUpPoint int,
@Class tinyint,
@Experience int,
@Strength int,
@Dexterity int,
@Vitality int,
@Energy int,
@Money int,
@Life real,
@MaxLife real,
@Mana real,
@MaxMana real,
@MapNumber smallint,
@MapPosX smallint,
@MapPosY smallint,
@MapDir tinyint
Alli lo que hacemos es simplemente @[tabla][tipo],
De esta forma, estamos declarando una variable a la cual le asociamos un tipo de datos.
Tomemos el primer ejemplo AccountID-varchar, lo que estamos haciendo es que dicha tabla "AccountID" recibirá valores de tipo "varchar"

b)Insertado de variables:
Con esta instrucción lo que hacemos es agregar dichas variables en sus campos de la tabla character. Es importante destacar que la instrucción es INSERT INTO y no INSERT INTO Character. Esta última hace referencia a la tabla en donde insertaremos dichos datos.

c)Valores de variables:
Es bastante intuitivo, son los valores que le asignaremos a cada variable.
Lo importante de esta combinación de variables+valores es que se debe de respetar ambas cantidades.
¿Qué significa eso?, que si tenemos algo asi:
INSERT INTO Character
(tabla1, tabla2, tabla3)
VALUES
(@tabla1, @tabla2,)
Tendremos un error similar al siguiente:

Error por falta de datos

3)Entonces, de acuerdo al tutorial, lo que haremos será configurar la parte C) para alterar los valores que enviaremos al crear un personaje.
No hará falta decir que tabla corresponde a cada stats porque eso ya lo hemos visto infinitas veces.
Entonces simplemente lo que haré en esta demostración es darle 2000 puntos para repartir a cualquier nuevo personaje creado en el servidor.
Para eso en la sección C) buscamos la variable @LevelUpPoint y la modificamos por el valor que deseamos tener como puntos adicionales al crear un personaje, por ejemplo "2000" de modo tal que nos quede algo similar a lo siguiente.

Modificación de la columna LevelUpPoint

Luego hacemos un clic en aceptar, iniciamos el servidor y verificamos los cambios dentro del juego

4)Finalmente, al crear un nuevo personaje dentro del juego, nos aparece con 2000 puntos para repartir.

Verificando los cambios dentro del juego

Adicionalmente algo que también podemos hacer es declarar una variable y asignarle un valor:
declare @Point int
set @Point=2000
Luego como "VALUES" colocamos el @point directamente, de esta forma tomaría el valor del set anterior.
¿Para qué hacer eso?, de repente se me ocurrio que a ese código podemos adicionarle algunos condicionales, por ejemplo dependiendo la raza del personaje podemos dar X puntos o inventar un mod. vip que adicione puntos de acuerdo a un ON/OFF, realmente esto es creatividad y podemos hacer infinitas cosas.
CreateCharacter.sql [1 kb]

¿Necesitas ayuda? Visita www.iceventas.com y nosotros lo hacemos por ti.

Se han publicado un total de 8 comentarios en Mu Online Tutoriales :

9 de mayo de 2013, 23:04

hola mi mu es 99b las variables son totalmente distintas como lo hago?

10 de mayo de 2013, 9:05

Anónimo : ¿No has chequeado el otro tutorial similar con procedimientos WZ_ ?
Saludos

24 de mayo de 2014, 1:02

ASD, quisiera saber si me podes decir cómo hacer para mi versión 0.97 de que los primeros 5 reset los hagan al lvl 200 por eejmplo, Porque tengo exp 800 y es lento... creo que 2 dias para hacer un reset mas o menos.. y me gustaria que fuese un toque mas liviano el inicio SIN SUBIR LA EXP.

Gracias

25 de mayo de 2014, 12:14

Jhonny Alvarez : ¿De qué forma reseteas?
Saludos

26 de mayo de 2014, 19:50

?¿ Eh: O sea al lvl 350 resetean, los personajes empiezan con 1 reset y 500 puntos.
Tengo spot realizados en todos los mapas y demas, cada spot de 5-6 bichos pero así incluso cuesta levear.
Entonces quisiera que los primeros 5 resets por ejemplo sean al lvl 200, para que se haga un toque más liviano ya que incluso llegar al lvl 200 es complicado (capaz 5 horas).

NO QUIERO SUBIR LA EXP, sino ayudar un toque al inicio.

Me imagino que para resetear al lvl 200 tendría que crear una consulta a la BBDD pero sería compilicado no? por el tema de la página y todo eso?

28 de mayo de 2014, 12:13

Jhonny Alvarez : Las forma de reseteo puede ser por página web, por comando, por job SQL , etc.
Si reseteas por medio de la web, tendrás que programar el módulo de modo que obtengas el reset actual + 1 y lo condiciones segun corresponda.
Saludos

14 de octubre de 2015, 17:28

En mi caso, no se encuentra ni como CreateCharacter ni como WZ_CreateCharacter. Se debe crear y hacer algo más?

15 de octubre de 2015, 11:06

Unknown : Puedes intentarlo asi: http://www.muonlinetutoriales.com/2014/03/bonus-al-crear-un-personaje-stats.html o si no te funciona puedes intenterlo asi: http://www.muonlinetutoriales.com/2014/01/dar-puntos-al-comenzar-job-sql.html
Saludos

Publicar un comentario