Bienvenidos a un nuevo tutorial, hoy veremos una alternativa más a como dar un bonus a los personajes que recien comienzan.
En otras oportunidades hemos visto como hacerlo a través de diferentes métodos:
Dar puntos al comenzar [Job SQL]
Dar puntos al comenzar [WZ_CreateCharacter]
Dar puntos al comenzar [CreateCharacter]
Hoy veremos como hacerlo de otra forma, es decir, a través de un TRIGGER.
¿Qué diferencia hay con las otras formas?
En primer lugar, la sencillez en cuanto y tanto nos referimos a la instalación y a su vez la facilidad para su configuración.
En segundo lugar, si la comparamos con el "Job sql" recordarán que para que el personaje reciba esos puntos para repartir, debÃa salir del juego y volver a entrar.
Con este trigger no necesitamos salir del juego, sino que al crear nuestro personaje ya recibirá los puntos automáticamente.
Y finalmente, la gran diferencia con los otros métodos es que lo le daremos al personaje al comenzar, será un bonus que no sólo son puntos para repartir sino también se les dará zen y resets para comenzar.
1)Para su "instalación" simplemente copiamos el siguiente código en nuestro analizador de consultas y apretamos F5, pero antes veamos un poco más sobre esto:
USE MuOnline
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'Bonus' AND type = 'TR')
DROP TRIGGER Bonus
GO
CREATE TRIGGER Bonus ON Dbo.Character FOR INSERT
AS
BEGIN
DECLARE
@Resets INT,
@Puntos INT,
@Zen INT,
@Char varchar(10)
SELECT @Char = Name FROM INSERTED
SET @Resets = 10 -- Cantidad de resets
SET @Puntos = 2000 -- Cantidad de puntos iniciales
SET @Zen = 5000000 -- Cantidad de zen
UPDATE Dbo.Character
SET Resets = @Resets, LevelUpPoint = @Puntos, Money = @zen
WHERE Name = @Char
END
2)El código es bastante sencillo, creo que cualquiera de ustedes lo puede interpretar fácilmente y modificar, pero para aquellos que son nuevos vamos a resaltar algunos puntos básicos:
A)Declaración de variables:
DECLAREEste fragmento de código lo que hace es declarar las variables a utilizar, este paso es fundamental, esto significa que no podemos utilizar una variable que no se ah declarado.
@Resets INT,
@Puntos INT,
@Zen INT,
@Char varchar(10)
Generalmente en el proceso de programación las variables van surgiendo a medida que se va programando.
Entonces, supongamos que nosotros queremos agregar una variable, simplemente lo que haremos será esto:
@nombre tipo,
En donde el nombre puede ser cualquiera y el tipo debe ser acorde a su uso.
Por ejemplo, en el caso de resets se usa una variable de tipo INT (Intiger) ya que usaremos numeros enteros.
B)
SET @Resets = 10 -- Cantidad de resetsEste fragmento de código asigna el valor inicial de la variable (Es inicial porque podemos incrementar o disminuir el valor durante su uso)
SET @Puntos = 2000 -- Cantidad de puntos iniciales
SET @Zen = 5000000 -- Cantidad de zen
Es muy importante que en este caso no pongamos valores negativos, es decir, si nosotros tenemos por ejemplo una variable en donde manejamos el nivel del personaje y ponemos en un valor negativo, seguramente tengamos serios problemas en nuestro juego.
Los valores que nosotros podemos modificar en este caso son:
Resets= 10 (El valor 10 son los resets iniciales con los que el personaje comenzará, nosotros podemos poner el valor que deseamos)
Puntos=2000 (El valor 2000 son los puntos para repartir iniciales con los que el personaje comenzará, nosotros podemos poner el valor que deseamos)
Zen=5000000(El valor 5000000 es el zen inicial con el que comenzará el personaje en su inventario, nosotros podemos poner el valor que deseamos)
C)
UPDATE Dbo.CharacterY finalmente este fragmento de código será el encargado de "ejecutar" nuestra sentencia.
SET Resets = @Resets, LevelUpPoint = @Puntos, Money = @zen
WHERE Name = @Char
Lo que hace es asignarle el valor de nuestra variable a cada columna de nuestra tabla Character.
Entonces para dar un ejemplo final, supongamos que queremos agregar una nueva variable para que el personaje comienze en el nivel 50, lo que hacemos es lo siguiente:
USE MuOnline
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'Bonus' AND type = 'TR')
DROP TRIGGER Bonus
GO
CREATE TRIGGER Bonus ON Dbo.Character FOR INSERT
AS
BEGIN
DECLARE
@Resets INT,
@Puntos INT,
@Zen INT,
@byasd INT,
@Char varchar(10)
SELECT @Char = Name FROM INSERTED
SET @Resets = 10 -- Cantidad de resets
SET @Puntos = 2000 -- Cantidad de puntos iniciales
SET @Zen = 5000000 -- Cantidad de zen
SET @byasd = 50 -- Nivel con el que comienza el personaje
UPDATE Dbo.Character
SET Resets = @Resets, Clevel=@byasd, LevelUpPoint = @Puntos, Money = @zen
WHERE Name = @Char
END