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

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

Se han publicado un total de 49 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

6 de marzo de 2017, 15:11

Buen día,

estoy ejecutando el código que dejo a continuación y me genera el mensaje "Comandos completados con éxito.", pero al crear el personaje me sigue sacando 3000 puntos, 10 resets y los 50millones de zen, no se que hacer e probado de todo D:, ayúdenme por favor.

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 = 0 -- Cantidad de resets
SET @Puntos = 0 -- Cantidad de puntos iniciales
SET @Zen = 0 -- Cantidad de zen

UPDATE Dbo.Character
SET Resets = @Resets, LevelUpPoint = @Puntos, Money = @zen
WHERE Name = @Char
END

7 de marzo de 2017, 18:09

OriiaC Channel : Es que no se trata de ejecutar comandos, sino de revertir un procedimiento, un valor, un job , etc que está colocando esos valores.
Entonces, lo primero que debes hacer es revisar sino existe ningun proceso, trigger o job que este dando esos puntos, resets, etc.
Tambien verifica si no estan seteados los valores en las columnas de la tabla character, es decir, revisa el "valor predeterminado"
Y finalmente analiza los procesos que se usa para crear un personaje en tu base de datos.
Saludos

27 de marzo de 2017, 23:28

Amigo asd, yo soy novato en sql, y me disculpa la ignorancia. tengo el server con un trigger asi, quiero eliminarlo pero no se como, donde busco? para eliminarlo?

28 de marzo de 2017, 8:27

Comandante J : Usa las primeras lineas del trigger (Las del drop) y correlas en el analizador.
Saludos

31 de marzo de 2017, 19:01

Hola asd, tengo un problema al crear todos los personajes se crean en loren market como hago para que aparezcan en lorencia ?

1 de abril de 2017, 11:08

Unknown : ¿Qué versión de Mu Online tienes?
Intenta asi: Ingresas al SQL -> MuOnline -> Tablas -> DefaultClassType -> Devolver todas las filas, y modificas las columnas: MapNumber, MapPosX y MapPosY.
(Posiblemente esos valores esten configurados con la información correspondiente al mapa Loren Market)
Saludos

2 de abril de 2017, 10:22

No encuentro el analizador de consultas

3 de abril de 2017, 11:44

Iván David Ecónomo Colomo : ¿Qué SQL tienes instalado?
Saludos

3 de abril de 2017, 18:30

SQL Server 2008

4 de abril de 2017, 15:51

Iván David Ecónomo Colomo : PAra eso, abres el SQL Server Management Studio y te conectas. Luego de tu lado izquierdo verás que dice "New Querry" o "Nueva consulta" (Depende si tienes el SQL en Ingles o en Español) finalmente en el campo de texto podrás correr la querry deseada.
Saludos

29 de abril de 2017, 9:17

Muchas gracias asd, solucione el problema que los personajes aparecian en lorenmarket, ahora tengo una duda, yo uso files titantech, version s6 ep3, estoy armando un server low, como podria hacer para que el nivel de arbol de poderes suba después de nivel 400 pero que el máximo nivel normal sea 1000? (configure maximo nivel normal en 1000, pero el arbol sube apartir de lvl "1000" y quiero que suba apartir de 400).

29 de abril de 2017, 14:32

Anónimo : Debajo de donde configuraste el nivel máximo, configuras el master level.
Saludos

1 de mayo de 2017, 12:37

Asd una consulta, uso files titan tech 12, s6 ep 3,los mapas lorencia, lost tower y noria tienen cierto lag visual solo esos mapas, y los items se dañan muy rapido, el dark horse, el dark raven las armas, no duran mucho, hay alguna soluciona para eso?

2 de mayo de 2017, 9:39

Anónimo : ¿Qué sería ese lag visual?
Saludos

29 de mayo de 2017, 15:42

Hola tengo una consulta, al entrar al analizador de consultas como debo conectarme ? Como windows autentication ? Sql server authentication ? Desde ya muchas gracias y disculpe las molestias

31 de mayo de 2017, 11:49

Anónimo : Depende de la forma que tengas instalado el SQL.
Si lo has instalado en modo mixto podrás ingresar de ambas formas, si sólo has configurado el SQL para conexiones Windows, sólo podras ingresar con la primera opción (Autenticación de Windows)
Saludos

26 de junio de 2017, 22:10

Hola asd! te consulto lo siguiente: que tengo que hacer para que los pj nuevo recien creados aparezcan inicialmente en lorencia, son files titan tech ibanez s6 e3! desde ya muchas gracias! un gran saludo

27 de junio de 2017, 11:32

Anónimo : Intenta asi, primero realiza una copia de seguridad de tu db, luego en el tabla DefaultClassType devuelve las filas y dentro de las columnas busca las llamas MapNumber, MapPosX y MapPosY, la primera hace referencia al mapa, entonces como quieres que sea lorencia , pones un 0, luego las coordenas X-Y pueden ser 125-125 respectivamente.
Tambien tendrás varias filas, cada una corresponde a cada raza o clase de personaje, si quieres que sea válido para todos los personajes, repites lo anterior tantas veces como filas tengas.
Saludos

27 de junio de 2017, 13:49

Gracias asd por la pronta respuesta! Se me ocurre lo siguiente: sers posible un trigger q junto con el zen reset y puntos q se le da al pj recien creado haga /move lorencia y q a su ves dea posible ya q al crear un pj sos nivel 1? Gracias

27 de junio de 2017, 20:52

Anónimo : Primero ¿Has intentado hacer lo indicado arriba? y segundo /move lorencia es un comando dentro del juego y no es una instrucción válida para ser leída fuera de la consola del gs (A menos que sea declara, como por ejemplo por una función).
Saludos

28 de junio de 2017, 18:51

asd! si en MapNumber estan todas en 0 y no toque nada al parecer estaban asi por defecto. Podria intentar para probar si funciona poner el numero del map Elbeland? y ver si al crear los pj inician en dicho map?

30 de junio de 2017, 9:17

Anónimo : ¿Y en dónde te aparecen los personajes?
Saludos

30 de diciembre de 2017, 16:33

Men estoy haciendo todo tal cual , si me da el zen , los puntos , pero no me da los 10 reset por q ?

30 de diciembre de 2017, 20:10

Unknown : ¿Qué files estas usando? ¿Has verificado si tu db trabaja con la columna Resets?
Saludos

17 de abril de 2020, 10:20

Hola! como estas? esto sirve para season6 ep 3 de louis ?

18 de abril de 2020, 20:01

Unknown : No, al menos que adaptes las variables a MuEMU.
Para eso bastaría con modificar "Resets" por "ResetCount".
Saludos

Publicar un comentario