Recommended Servers - Topics UP



Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

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

0 Miembros and 1 Guest are viewing this topic.

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

  • MAESTRO

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 4
  • Gracias recibida: 19826
  • 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, 07: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, 07:24:55 PM

  • MAESTRO

  • US. DE HONOR

  • LEYENDA

  • Administrador
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 7.104
  • Gracias recibida: 101683
  • 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




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

Offline junior274 #3 Posteado: August 01, 2017, 07: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, 09: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

Recommended Servers - Topics Bottom



 

Related Topics

  Subject / Started by Replies Last post
8 Replies
2451 Views
Last post April 09, 2018, 06:14:52 PM
by Pasa_Pal_Fondo
2 Replies
1337 Views
Last post August 01, 2017, 07:21:21 PM
by Joaquin
1 Replies
198 Views
Last post May 18, 2020, 01:35:31 AM
by PIRELA
2 Replies
55 Views
Last post May 22, 2021, 06:04:41 PM
by ZabiinoOo
3 Replies
400 Views
Last post June 26, 2021, 03:29:23 AM
by djagripnos