World Servers
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

[Aporte] Sentencia Sql AntiDup Funcional

5 participantes

Ir abajo

[Aporte] Sentencia Sql AntiDup Funcional Empty [Aporte] Sentencia Sql AntiDup Funcional

Mensaje por Wiz Khalifa 2012-01-07, 15:32

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:
Spoiler:

Baúl bloqueado:
Spoiler:

Pj desconectándose:
Spoiler:

Tabla qué contiene los logs:
Spoiler:

Descripción de los logs:
Spoiler:

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:

Saludos atte.
Wiz Khalifa
Wiz Khalifa
Moderador Global
Moderador Global

Moderador Masculino Argentina Trofeo de Bronce Estrella de Bronce : Nivel 10º No tienes ninguna Advertencia
Juan Francisco Maurizzi
Mensajes : 2511
Cash Point : 22005
Prestigio : 406
Registro : 13/11/2010
Localización : Buenos Aires
Edad : 29

http://www.world-servers.org/

Volver arriba Ir abajo

[Aporte] Sentencia Sql AntiDup Funcional Empty Re: [Aporte] Sentencia Sql AntiDup Funcional

Mensaje por Lantern Green 2012-01-09, 01:10

Muy bueno se agradece
Lantern Green
Lantern Green
Miembro
Miembro

Usuario Registrado Masculino Argentina No tienes ningun Trofeo No tienes ningun Premio No tienes ninguna Advertencia
Lantern Green
Mensajes : 11
Cash Point : 23554
Prestigio : 10
Registro : 09/01/2012
Localización : Bahia Blanca
Edad : 30

Volver arriba Ir abajo

[Aporte] Sentencia Sql AntiDup Funcional Empty Re: [Aporte] Sentencia Sql AntiDup Funcional

Mensaje por NoCDice 2013-05-22, 00:09

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
NoCDice
Miembro
Miembro

Usuario Registrado Femenino Argentina No tienes ningun Trofeo No tienes ningun Premio No tienes ninguna Advertencia
~ New User ~
Mensajes : 13
Cash Point : 22776
Prestigio : 10
Registro : 13/06/2012
Localización : NoCDice
Edad : 36

Volver arriba Ir abajo

[Aporte] Sentencia Sql AntiDup Funcional Empty Re: [Aporte] Sentencia Sql AntiDup Funcional

Mensaje por Wiz Khalifa 2013-05-22, 10:06

Yo los utilice y funcionaron.
Wiz Khalifa
Wiz Khalifa
Moderador Global
Moderador Global

Moderador Masculino Argentina Trofeo de Bronce Estrella de Bronce : Nivel 10º No tienes ninguna Advertencia
Juan Francisco Maurizzi
Mensajes : 2511
Cash Point : 22005
Prestigio : 406
Registro : 13/11/2010
Localización : Buenos Aires
Edad : 29

http://www.world-servers.org/

Volver arriba Ir abajo

[Aporte] Sentencia Sql AntiDup Funcional Empty Re: [Aporte] Sentencia Sql AntiDup Funcional

Mensaje por erikgaston 2015-07-02, 02:35

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?.  Duhhh
erikgaston
erikgaston
Miembro
Miembro

Usuario Registrado Masculino Argentina No tienes ningun Trofeo No tienes ningun Premio No tienes ninguna Advertencia
~ New User ~
Mensajes : 4
Cash Point : 17173
Prestigio : 10
Registro : 01/07/2015
Localización : Cordoba
Edad : 30

Volver arriba Ir abajo

[Aporte] Sentencia Sql AntiDup Funcional Empty Re: [Aporte] Sentencia Sql AntiDup Funcional

Mensaje por master1986 2015-07-24, 22:54

que buenisimaa a probar se agradece

saludos y gracias
master1986
master1986
Miembro
Miembro

Usuario Registrado Masculino Chile No tienes ningun Trofeo No tienes ningun Premio No tienes ninguna Advertencia
~ New User ~
Mensajes : 8
Cash Point : 18494
Prestigio : 10
Registro : 13/10/2014
Localización : San Antonio
Edad : 38

Volver arriba Ir abajo

[Aporte] Sentencia Sql AntiDup Funcional Empty Re: [Aporte] Sentencia Sql AntiDup Funcional

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.