[Aporte] Sentencia Sql AntiDup Funcional
5 participantes
Página 1 de 1.
[Aporte] Sentencia Sql AntiDup Funcional
Sentencia Sql AntiDup Funcional
Nota: Les recomiendo este codigo de sql, ya que yo lo testie y funciona de maravilla bloqueando las cosas que dice en el TH.
Sentencia Anti Dup SQL:
[*] Banea al pj que dupea.
[*] Bloquea su baul.
[*] Deja un log en una tabla
llamada DupesDetected, que te registra, que cuenta, que pj, en que
espacio del baúl, y a que horario y que día dupeo la persona.
[*] Desconecta al user que haya dupeado.
Dejo algunas imágenes(Testeado 100%):
Pj Banned:
Baúl bloqueado:
Pj desconectándose:
Tabla qué contiene los logs:
Descripción de los logs:
Y por último dejo el script:
La sentencia se ejecuta en el analizador de consultas con la DB
MuOnline seleccionada(Por favor correr el script una sola vez, ya que si
lo corren dos veces les va a decir que el parámetro 'DUPEFINDER' ya se
encuentra en la db, pero es común, significa que se ejecuto.
correctamente).
Espero que les haya servido, saludos.
PD: Si no les funciona, me mandan un PM y yo los ayudo o publican su duda en la seccion de Problemas de MuOnline.
Créditos:
Saludos atte.
Nota: Les recomiendo este codigo de sql, ya que yo lo testie y funciona de maravilla bloqueando las cosas que dice en el TH.
Sentencia Anti Dup SQL:
[*] Banea al pj que dupea.
[*] Bloquea su baul.
[*] Deja un log en una tabla
llamada DupesDetected, que te registra, que cuenta, que pj, en que
espacio del baúl, y a que horario y que día dupeo la persona.
[*] Desconecta al user que haya dupeado.
Dejo algunas imágenes(Testeado 100%):
Pj Banned:
- Spoiler:
- [Tienes que estar registrado y conectado para ver esa imagen]
Baúl bloqueado:
- Spoiler:
- [Tienes que estar registrado y conectado para ver esa imagen]
Pj desconectándose:
- Spoiler:
- [Tienes que estar registrado y conectado para ver esa imagen]
Tabla qué contiene los logs:
- Spoiler:
- [Tienes que estar registrado y conectado para ver esa imagen]
Descripción de los logs:
- Spoiler:
- [Tienes que estar registrado y conectado para ver esa imagen]
Y por último dejo el script:
--==============================================================
-- =
-- Script creado por JefimxD, Fixeado por Virus~. =
-- =
--==============================================================
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DupesDetected]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[DupesDetected]
GO
CREATE TABLE [dbo].[DupesDetected] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[AccountID] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Name] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[ITEM_TYPE] [binary] (1) NOT NULL ,
[ITEM_SERIAL] [binary] (4) NOT NULL ,
[INV_POSITION] [smallint] NOT NULL ,
[WH_POSITION] [smallint] NOT NULL ,
[TIMESTAMP] [smalldatetime] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[DupesDetected] WITH NOCHECK ADD
CONSTRAINT [PK_DupesDetected] PRIMARY KEY CLUSTERED
(
[ID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[DupesDetected] ADD
CONSTRAINT [DF_Table1_TIMESTAMP] DEFAULT (getdate()) FOR [TIMESTAMP]
GO
CREATE TRIGGER [dbo].[DUPEFINDER] ON [dbo].[character]
FOR UPDATE
AS
IF UPDATE(inventory)
BEGIN
SET NOCOUNT ON
DECLARE
@CHARNAME varchar(10),
@ACCOUNT_ID varchar(10),
@INV binary(760),
@ITEM_TYPE binary(1),
@ITEM_SERIAL binary(4),
@WAREHOUSE binary(1200),
@j smallint,
@k smallint,
@PWOLD smallint,
@PWNEW smallint
--TOMAMOS EL INVENTARIO Y LOS DATOS DEL USUARIO
SELECT @ACCOUNT_ID=accountid,@CHARNAME=Name,@INV=inventory FROM inserted
SET @j=0
--ITEM POR ITEM
WHILE (@j<76) AND (@INV IS NOT NULL)
BEGIN
--TOMAMOS EL TIPO Y EL SERIAL DEL ITEM
SET @ITEM_TYPE=SUBSTRING(@INV,@j*10+1,1)
SET @ITEM_SERIAL=SUBSTRING(@INV,@j*10+4,4)
--SI EL TIPO ES VÁLIDO Y EL SERIAL NO ES "0"
IF @ITEM_TYPE<>0xFF AND @ITEM_SERIAL<>0x00000000
BEGIN
--SI NO TENEMOS EL WAREHOUSE DATA LO OBTENEMOS (ESTO SUCEDERÁ UNA SOLA VEZ)
IF (@WAREHOUSE IS NULL)
BEGIN
SELECT @WAREHOUSE=items, @PWOLD=pw FROM warehouse WHERE accountid=@ACCOUNT_ID
END
--POR CADA SLOT EN EL BAULT
SET @k=0
WHILE (@k<120) AND (@WAREHOUSE IS NOT NULL)
BEGIN
--SI EL TIPO Y SERIAL COINCIDEN ENTONCES
IF (SUBSTRING(@WAREHOUSE,@k*10+1,1)=@ITEM_TYPE) AND (SUBSTRING(@WAREHOUSE,@k*10+4,4)=@ITEM_SERIAL)
BEGIN
--GUARDAMOS EL ITEM EN EL LOG
INSERT INTO DupesDetected (AccountID,Name,ITEM_TYPE,ITEM_SERIAL,INV_POSITION,WH_POSITION)
VALUES (@ACCOUNT_ID,@CHARNAME,@ITEM_TYPE,@ITEM_SERIAL,@j,@k)
--DESCONECTAMOS AL USUARIO
UPDATE MEMB__STAT SET CONNECTSTAT=0 WHERE ACCOUNTID=@ACCOUNT_ID
--BLOQUEAMOS EL BAULT
--OBTENEMOS EL NUEVO LOCK CODE
SET @PWNEW = DATEPART(YYYY,GETDATE()) + DATEPART(MM,GETDATE()) + DATEPART(D,GETDATE())
--BLOQUEAMOS EL BAULT
UPDATE WAREHOUSE SET PW=@PWNEW, LASTPW=@PWOLD WHERE (ACCOUNTID=@ACCOUNT_ID)
--BANEAMOS TODOS LOS PJS DE LA CUENTA
UPDATE [CHARACTER] SET CTLCODE=1 WHERE ACCOUNTID=@ACCOUNT_ID
END
--AVANZAMOS UNO EN EL CONTADOR
SET @k=@k+1
END
END
SET @j=@j+1
END
SET NOCOUNT ON
END
--================================
--Créditos: ===
--JefimxD=: Por el script base.===
--Virus~: Fixearlo y Aportarlo.===
--================================
La sentencia se ejecuta en el analizador de consultas con la DB
MuOnline seleccionada(Por favor correr el script una sola vez, ya que si
lo corren dos veces les va a decir que el parámetro 'DUPEFINDER' ya se
encuentra en la db, pero es común, significa que se ejecuto.
correctamente).
Espero que les haya servido, saludos.
PD: Si no les funciona, me mandan un PM y yo los ayudo o publican su duda en la seccion de Problemas de MuOnline.
Créditos:
- Spoiler:
- JefimxD: Por el script base.
Virus~: Fixearlo y Aportarlo
Saludos atte.
Re: [Aporte] Sentencia Sql AntiDup Funcional
Muy bueno se agradece
Lantern Green- Miembro
-
Lantern Green
Mensajes : 11
Cash Point : 23554
Prestigio : 10
Registro : 09/01/2012
Localización : Bahia Blanca
Edad : 30
Re: [Aporte] Sentencia Sql AntiDup Funcional
Disculpen por responder en temas que tienen mucho tiempo ya, lo que pasa es que tengo una duda, muchos dicen que este Script no funciona, quisiera saber si alguno lo probo y como le fue.
NoCDice- Miembro
-
~ New User ~
Mensajes : 13
Cash Point : 22776
Prestigio : 10
Registro : 13/06/2012
Localización : NoCDice
Edad : 36
Re: [Aporte] Sentencia Sql AntiDup Funcional
Buenas, utilizando esta sentencia me tira error de dbo.character como que no existe este objeto, pero en la base de datos lo tengo como dbo.Character y modifique la sentencia a dbo.Character y me tira el error igual alguna ayuda?.
erikgaston- Miembro
-
~ New User ~
Mensajes : 4
Cash Point : 17173
Prestigio : 10
Registro : 01/07/2015
Localización : Cordoba
Edad : 30
Re: [Aporte] Sentencia Sql AntiDup Funcional
que buenisimaa a probar se agradece
saludos y gracias
saludos y gracias
master1986- Miembro
-
~ New User ~
Mensajes : 8
Cash Point : 18494
Prestigio : 10
Registro : 13/10/2014
Localización : San Antonio
Edad : 38
Temas similares
» [Aporte] Script AntiDUP para 97d y 99b
» [Aporte] DefaultClassType
» [Aporte] Fix al BC y DS
» [Aporte] Reducir la DBS
» [Aporte] Pinkof GameGuard 2.7.5
» [Aporte] DefaultClassType
» [Aporte] Fix al BC y DS
» [Aporte] Reducir la DBS
» [Aporte] Pinkof GameGuard 2.7.5
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.