Bienvenidos a un nuevo tutorial, a razĆ³n de varias consultas sobre este tema hemos decidido crear el siguiente tutorial.
Muchos de ustedes optan por restringir de alguna forma la creaciĆ³n de guilds en nuestro servidor MuOnline.
Para lograr esto se puede hacer de diferentes formas:
a)Mover el NPC de creaciĆ³n de guilds a un punto que el usuario no puede llegar por su propio medio, de modo tal, que un admin mueva el personaje manualmente al cumplir con ciertos requisitos.
b)Mover el NPC de creaciĆ³n de guilds a un punto que el usuario no puede llegar por su propio medio, de motodo tal, que desde nuestro sitio web podamos (Mediante un mĆ³dulo ya programado) mover al personaje que cumpla con los requisitos que nosotros deseamos configurar. (Resets, nivel, zen, etc...)
c)Poseer files con dicho custom de modo tal que podamos configurar el modo de creaciĆ³n de guilds seteando algunos valores en nuestro servidor.
e)Modificando el procedimiento WZ_GuildCreate agregando la condiciĆ³n.
Y en este Ćŗltimo paso nos detendremos porque en eso nos basaremos.
Simplemente lo que haremos serĆ” modificar el procedimiento el cual nos permite crear una guild.
Para esto debemos seguir estos sencillos pasos:
1)Ingresar al "Administrador corporativo"
2)Ingresar a la base de datos "MuOnline" y seleccionar la opciĆ³n "Procedimientos almacenados"
3)Buscamos el procedimiento llamado "WZ_GuildCreate" y copiamos todo el contenido en un Bloc de notas (DespuƩs veremos porque debemos hacer esto)
4)Ahora, reemplazamos el cĆ³digo original contenido dentro de nuestro procedimiento por el siguiente:
CREATE procedure WZ_GuildCreate
@GuildName nvarchar(8),
@Name nvarchar(10)
as
BEGIN
DECLARE @ErrorCode int
DECLARE @reset int
SET @ErrorCode = 0
SET XACT_ABORT OFF
Set nocount on
begin transaction
SELECT @reset=[Resets] from [Character] where [Name]=@Name
INSERT INTO Guild (G_Name, G_Master) valueS (@GuildName, @Name)
IF ( @reset > 100 )
IF ( @@Error <> 0 )
BEGIN
SET @ErrorCode = 1
END
IF ( @reset < 100 ) IF ( @@Error <> 1 )
BEGIN
SET @ErrorCode = 1
END
IF ( @ErrorCode = 0 )
BEGIN
INSERT GuildMember (Name, G_Name, G_Level) values (@Name, @GuildName, 1)
IF ( @@Error <> 0 )
BEGIN
SET @ErrorCode = 2
END
END
IF ( @ErrorCode <> 0 )
rollback transaction
ELSE
commit transaction
select @ErrorCode
Set nocount off
SET XACT_ABORT ON
END
GO
Y ahora reiniciamos el servidor MuOnline e ingresamos a verificar los cambios.
Importante:
a)El procedimiento estĆ” modificado para crear guilds a partir de los 100 resets y ese valor ustedes lo pueden cambiar en el cĆ³digo anterior por el que deseen.
b)Si el personaje no posee los resets, el servidor no le dejarĆ” crear la guild pero no le mostrarĆ” dicho error, sino que ustedes deben notificarlo previamente en su sitio web, dentro del servidor, en su foro, etc...
c)En el paso nĆŗmero 3) debĆamos copiar todo el contenido del procedimiento en un bloc de notas ¿Por quĆ©? ...
La respuesta es sencilla, porque si el cĆ³digo que condiciona la creaciĆ³n de guilds por resets no les funciona o les arroja algun error deberĆ”n volver al original.
(En ese caso nos informan por mensaje que versiĆ³n de MuOnline tienen y nos envian su procedure para que nosotros lo editemos.)
Finalmente este procedimiento lo tenĆamos almacenado por lo que sus crĆ©ditos le corresponde a su respectivo autor.