Bonus al crear un personaje (stats, resets y zen)

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
Analizador de consultas

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:
DECLARE
@Resets INT,
@Puntos INT,
@Zen INT,
@Char varchar(10)
Este 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.
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 resets
SET @Puntos = 2000 -- Cantidad de puntos iniciales
SET @Zen = 5000000 -- Cantidad de zen
Este fragmento de código asigna el valor inicial de la variable (Es inicial porque podemos incrementar o disminuir el valor durante su uso)
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.Character
SET Resets = @Resets, LevelUpPoint = @Puntos, Money = @zen
WHERE Name = @Char
Y finalmente este fragmento de código será el encargado de "ejecutar" nuestra sentencia.
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
BonusScript.txt [2 KB]

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

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

16 de mayo de 2014, 19:19

Me interesa esto, pero cómo lo hago en mi versión 0.97x?
Analizador de consultas? Debo abrir el SQL SERVER e irme a donde?
Luego pego ese código directamente y guardo?
reinicio cliente?

Gracias por las respuetas!

16 de mayo de 2014, 19:30

Jonahan Alvarez : Si, desde tu analizador de consultas.
Pegas el código y apretas F5.
Saludos

18 de mayo de 2014, 20:38

Asd, lo hice tal cual tu codigo, solo que puse 1 reset 1000000 de zen con 500 puntos.
Pero le doy F5 y dice: Comandos completados con éxito pero al querer salir me pide guardar .__.
Y no sé si debo guardarlo, si es así en dónde necesito hacerlo y demas.

Y si le pongo a "NO GUARDAR," no se hace la consulta digamos?

18 de mayo de 2014, 20:43

Disculpas asd, ya he ingresado y creado neuvo character, y efectivamente aparece con 500 points, 100000 de zen y 1 reset.
Muchas gracias por tus aportes!

19 de mayo de 2014, 10:42

Jhonny Alvarez : Puedes o no guardar los cambios.
Okey saludos.

9 de octubre de 2014, 15:37

Tengo un problema, creo un personaje y aparece con los 2000 puntos pero cuando hago reset me vuelve a dar 2000 puntos mas, osea si llego a nivel 400 y tengo 4000 puntos cuando hago el reset aparezco con 6000 como hago?

10 de octubre de 2014, 9:45

Wilmer Bracho : ¿Y de que forma resetean tus personajes?
Saludos

13 de octubre de 2014, 21:37

Via web

14 de octubre de 2014, 9:13

Wilmer Bracho : Revisa si no es la web que al resetear te está dando esos puntos adicionales.
Saludos

18 de octubre de 2014, 18:04

y para quitarlo como se hace

20 de octubre de 2014, 9:47

safsadfasdf : Eliminas el TRIGGER.
Saludos

26 de mayo de 2015, 23:42

Estuve probando un trigger para que la elfa comenzara desde nivel 0 en lorencia, pero al crear el personaje aparece en noria, algun detalle que me halla faltado tener en cuenta al modificar la variable MapNumber al inico de crear una elfa?

27 de mayo de 2015, 15:49

Anónimo : ¿Nivel 0?
Saludos

27 de enero de 2016, 14:14

En donde tengo que guardar el archivo?

29 de enero de 2016, 15:07

Rodry Rosales : Corres (Ejecución [F5]) la consulta anterior para "guardarla".
Saludos

5 de marzo de 2016, 15:09

y para sacarlo? por ejemplo yo tengo un sv 97d y que al crear un pj cualquiera aparece con los stats full puntos para agregar, como los quito ?

5 de marzo de 2016, 18:45

Unknown : ¿Te aparece full stats porque corriste la consulta o ya estaba desde antes en tu db?
Saludos

14 de abril de 2016, 13:40

Hola asd mira tengo un pequeño problemita cuando pongo para darle zen al pj me va todo bien viste y cuando voy al server creo el pj y me aparece please weit algo asi y no se me pone nunca el pj cuando saco para dar zen me anda correctamente uso files season 6 episodio 3 solo ese error tengo lo demas de los reset y los puntos me anda bien solo el zen nose porque sera que no puedo entrar si tenes una ayuda por favor no dudes en comentar saludos :)

14 de abril de 2016, 17:39

Anónimo : No logre entender del todo tu problema.
¿Has modificado alguna parte del código?
Saludos

17 de abril de 2016, 23:46

Muchas Gracias si funciona el codigo... una pregunta se podria dar pcpoints por ejemplo?

24 de abril de 2016, 12:06

fede cruz : Si, por supuesto.
El código es abierto por lo que puedes agregar/quitar/modificar cualquier aspecto del mismo.
En tu caso, declaras el nombre (PcPoint o como se llame en tu db) y tipo de variable (INT), le asignas un valor y lo agregas en el update.
Saludos

30 de abril de 2016, 14:31

Hola asd, mira quiero quitar los reset como haría ? tendría que dejar en valor 0?
Gracias por ayudarme en los pcpoint.

1 de mayo de 2016, 10:49

fede cruz : Simplemente quita las lineas.
Saludos

Publicar un comentario en la entrada