Agregar un modulo a la web mucore

Luego de recibir varias consultas sobre este tema, hemos decidido armar un tutorial para dar respuesta a la siguiente pregunta reiterativa:
¿Cómo agrego un módulo a la mucore?



Para quienes tienen instalado este tipo de páginas webs para el MuOnline este tutoriales les servirá para poder adicionar un módulo de manera super sencilla y práctica.
Los requisitos para poder continuar son:
a)Tener la mucore instalada correctamente
b)Disponer del módulo a instalar

A este tutorial lo dividiremos en dos partes, es decir, primero mostraremos como agregar un módulo al "User CP" o panel de usuarios y luego mostraremos como agregar el mismo módulo a index general o menú general de la web.
¿Qué diferencia existe?
La respuesta en la siguiente imagen:

Interfaz de los menú de mucore

Con color rojo marqué lo que sería el área de usuarios o usercp, esta es el área en donde loguea el usuario y con el color azul marqué la sección general o index principal, es decir, el menu que se visualiza a penas ingresamos a nuestro sitio web.
Tanto en el menú de usuarios como en el menú principal podemos adicional un módulo desde nuestro admincp, pero el procedimiento es totalmente diferente por eso estamos desdoblando estos procedimientos.

1)Adicionando un módulo al usercp o área de usuarios:
Lo primero que haremos será copiar y pegar el módulo a adicionar en la siguiente ruta:
Root\pages_modules\user_cp

Agregando módulo al usercp

2)Nuestro siguiente paso será ingresar a nuestro admincp, loguear e ingresar a la opción llamada "Add Module [User CP Page]"
Una vez que ingresamos a esa opción, hacemos un clic en donde dice "[PHP File Module]"

Accediendo al admincp

3)Lo que haremos ahora será completar el formulario anterior de la siguiente manera:

Module Title: Título que tendrá nuestro módulo, en mi caso "ModuloDemo"
Module ID: El id será el nombre por el cual se visualizará en el campo de la url en mi caso "mod"
Display Order:Es la posición en la que se mostrará el módulo, en mi caso "4"
Module Active:¿Módulo activo? Tildamos la opción Si, en mi caso "Yes"
Module Hide:¿Módulo oculto? Tildamos la opción No, en mi caso "No"
Module PHP File:Debemos seleccionar el módulo .php cargado previamente en mi caso es el archivo muonlinetutoriales.php que se muestra en el paso número 1)

Completando formulario para adicionar el módulo al admincp

4)Y finalmente hacemos un clic en donde dice "Add module" y si todo esta correcto un mensaje anunciado la carga satisfactoria nos aparecerá.
Para verificar que definitivamente todo este correcto ingresamos al panel de usuarios para constatar nuestra trabajo.

Visualizando módulo reciente agregado

5)De esa forma hemos aprendido a agregar un módulo al usercp o panel de usuarios.
Lo que veremos ahora será como agregar el mismo módulo pero al menú general.
Para eso copiamos y pegamos el módulo en la siguiente ruta:
Root\pages_modules

Agregando módulo al menú general

6)Nuestro siguiente paso será ingresar al admincp e ir a la opción llamada "Add Module" => [PHP File Module]

Completando formulario para adicionar módulo

7)Completaremos ese formulario de la siguiente manera:

Module Title: Título que tendrá el módulo. En mi caso "ModuloDemo"
Module Active: ¿Módulo activo?, Yes. En mi caso "Si"
Module PHP File: Y aca debemos buscar el módulo que hemos cargado anteriormente. (Si no lo encuentras en el listado desplegable revisa nuevamente el paso 5)
Luego hacemos un clic en el boton "Add module"

Adicionando módulo

8)Ahora, ingresamos a la opción "Add Page" => [Built-in Page]

Completando formulario de página

9)Completaremos ese formulario de la siguiente forma:

Page Title:Título del módulo, en mi caso será "ModuloDemo"
Page ID:Este sería el id que se mostrará en la URL, en mi caso será "Demo"
Display Order:Posición en la que se mostrará el módulo, en mi caso "4"
Meta Keywords:Esta opción está relacionado al SEO, lo que nos pida aca es agregar palabras claves, en mi caso serán: modulo, demo, muonline
Meta Description:Esta opción está tambien hace referencia al SEO o posicionamiento de la web en la red, en mi caso pondré "Módulo demo para www.muonlinetutoriales.com"
Page Active:¿Página activa?, yes.
SQL Connection:¿Conexión a SQL?, esto dependerá del módulo que estan instalando, la conexión sql permite que el modulo tenga acceso a la base de datos.
En mi caso no es necesario, asique pondré "No"
Page Authentication:¿Require estar logeado para ver el módulo", esta opción es para configurar, en el caso que quieran, que al acceder al módulo el usuario debe estar registrado y logeado en nuestro sitio. En mi caso pondré "No", esto implica que cualquier persona que ingrese a mi sitio podrá acceder al módulo estando o no logeado en el sitio
Page Hide:¿Página oculta?, en mi caso "No"
Ahora, lo que deberán hacer es lo siguiente:
Se deslizan hasta el final del formulario y buscan la opción que dice "Inactive Modules", alli debería estar nuestro módulo a agregar.
Hacemos un clic sobre el y sin soltar el clic arrastramos el módulo a la sección "Active modules" => "Center column"
(En el caso que quieras visualizar el módulo sobre el mismo menú, seleccionamos la opción left column, pero lo recomendable es la opción anterior)
Finalmente hacemos clic en la opción "Add page"

Adicionando módulo a la columna central

10)Y si todo está correcto, nos aparecerá el módulo en la sección del menú general

Visualizando trabajo final con el módulo agregado a la sección de menú general

Eso es todo, de esta forma podemos ir agregando todos los módulos que deseamos a nuestro sitio web mucore.
*Si tenes tu panel admin está en español, el nombre de las opciones puede variar.

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