Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: [GUIA] Sentencia Sql AntiDup  (Visto 1317 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline Joaquin Posteado: June 13, 2016, 09:12:44 PM | Modificado: October 02, 2016, 06:21:56 PM by ZabiinoOo

  • MAESTRO

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 6
  • Gracias recibida: 16279
  • ar
Sentencia Anti Dup SQL:


- Banea al pj que dupea.
- Bloquea su baul.
- Deja un log en una tabla

- Desconecta al user que haya dupeado.

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.


Code: [Select]
[center]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[/center]

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!!

 musica

Gracias:


Offline jhynno #1 Posteado: October 02, 2016, 06:15:00 PM

muy buen aporte men...!!
mira he tratado de ejecular esa sentencia y me sale error
qui adjunto una imagen
tengo files s4 ep 6 exteam

http://subefotos.com/ver/?76e3e6bfabf2749916538252abb803d6o.png

Gracias:


Offline ZabiinoOo #2 Posteado: October 02, 2016, 06:24:55 PM

  • MAESTRO

  • US. DE HONOR

  • LEYENDA

  • Administrador
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 6.257
  • Gracias recibida: 89897
  • pe
muy buen aporte men...!!
mira he tratado de ejecular esa sentencia y me sale error
qui adjunto una imagen
tengo files s4 ep 6 exteam

http://subefotos.com/ver/?76e3e6bfabf2749916538252abb803d6o.png

La columna LASTPW no existe en tu base de datos ese es el error, debes buscar con que columna trabajan tus files y para ayuda abre un tema en soporte por los temas de aporte no se brinda ayuda
  • Like
    Dislike
    Love
    HaHa
    Angry
    Surprise
    Sad
    Party



Prohibido pedir soporte via MP
Leer las reglas de cada seccion
we trust god

Offline junior274 #3 Posteado: August 01, 2017, 06:30:57 PM

hola no recomiendo mucho las sentencias con autobaneo recuerda que hay jewels en el servidor que caen sin serial dependiendo de la configuracion en el Item.txt, Item(New).txt o Item(Kor).txt esto aveces puede provocar un baneo masivo en todos los pjs.. Lo digo por experiencia propia en 2011 creo que use ese mismo scripts

Offline mochaso05 #4 Posteado: May 31, 2019, 08:06:23 PM

PUSE ESO Y ME PASO ,, NOCE COMO DESINTALAR ESTA SENTENCIA PORFAVOR AYUDA!

Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

 

Related Topics

  Subject / Started by Replies Last post
8 Replies
2090 Views
Last post April 09, 2018, 05:14:52 PM
by Pasa_Pal_Fondo
2 Replies
1115 Views
Last post August 01, 2017, 06:21:21 PM
by Joaquin
1 Replies
521 Views
Last post August 01, 2017, 06:23:36 PM
by firemarcos
6 Replies
576 Views
Last post April 18, 2020, 11:50:27 PM
by cufa1
1 Replies
104 Views
Last post May 18, 2020, 12:35:31 AM
by PIRELA