Script Anti Dup 97 + 99

Ver el tema anterior Ver el tema siguiente Ir abajo

Script Anti Dup 97 + 99

Mensaje por browser el Dom Jun 03, 2012 7:35 pm



Informacion General
Script AntiDUP via Trigger, funcional para versiones 97d y 99b, el mismo esta programado para borrar el item dupeado al actualizar el inventario el dupper. Solo funciona con los dups realizados con el baul.

Preguntas Frecuentes
¿Funciona en 97d o 99b? SI!, siempre y cuando no sean files truchos que dicen ser 97d o 99b y son 1.Algo.

¿Sirve en Seasons? NO!, sirve para versiones inferiores a la versión de GameServer 99.88.

¿Borra items con serial 00000000? NO!, los items que compres en el NPC no serán tomados en cuenta a la hora de borrar los items dupeados.

¿Banea a los Dupers? NO!, el script funciona borrando el ITEM DUPEADO del Baúl y así evita que este se propague y se generen bans innecesarios (como en otros antidups vía sql), pero de todas formas se incluye una sentencia que banea a todos los usuarios de la cuenta, basta remover los guiones que contiene al principio para remover el modo comentario de SQL.

¿Como lo Instalo? Fácil, basta abrir el Analizador de Consultas(Query Analizer) y pegar el código dejado a continuación.

Script
use MuOnline
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DupeCheck_CDC]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[DupeCheck_CDC]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DupeLog_CDC]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[DupeLog_CDC]
GO
CREATE TABLE [dbo].[DupeLog_CDC] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[Cuenta] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Personaje] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[ItemType] [binary] (1) ,
[ItemSerial] [binary] (4) ,
[Item] [binary] (10) ,
[FechaDelDUP] [smalldatetime] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[DupeLog_CDC] WITH NOCHECK ADD
CONSTRAINT [PK_DupeLog_CDC] PRIMARY KEY CLUSTERED
(
[ID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[DupeLog_CDC] ADD
CONSTRAINT [DF_Table1_FechaDelDUP] DEFAULT (getdate()) FOR [FechaDelDUP]
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[DupeCheck_CDC] ON [dbo].[character]
FOR UPDATE
AS
BEGIN
IF UPDATE(inventory)
BEGIN
SET NOCOUNT ON
DECLARE
@Cuenta varchar(10),
@Personaje varchar(10),
@Inventario binary(760),
@Baul binary(1200),
@BaulItem binary(10),
@BaulTipo binary(1),
@BaulSerial binary(4),
@InventarioItem binary(10),
@InventarioTipo binary(1),
@InventarioSerial binary(4),
@InventarioPJ int,
@BaulCuenta int,
@TamañoBaul int,
@Encontrar bit
--Seleccionamos la informacion del Personaje y el Baul.
SELECT @Cuenta=i.accountid,@Personaje=i.name,@Inventario=i.inventory FROM inserted i
SELECT @Baul=items FROM Warehouse WHERE AccountID=@Cuenta

--Tamaño del Baul
SET @TamañoBaul = 1200
SET @InventarioPJ=0
SET @Encontrar=0
WHILE @InventarioPJ<76 AND @Inventario IS NOT NULL
BEGIN
SET @InventarioTipo=SUBSTRING(@Inventario,@InventarioPJ*10+1,1)
SET @InventarioSerial=SUBSTRING(@Inventario,@InventarioPJ*10+4,4)
SET @InventarioItem=SUBSTRING(@Inventario,@InventarioPJ*10+1,10)
IF @InventarioTipo<>0xFF AND @InventarioSerial<>0x00000000
BEGIN
SET @BaulCuenta=0
WHILE @BaulCuenta<120 AND @Baul IS NOT NULL
BEGIN
SET @BaulTipo=SUBSTRING(@Baul,@BaulCuenta*10+1,1)
SET @BaulSerial=SUBSTRING(@Baul,@BaulCuenta*10+4,4)
SET @BaulItem=SUBSTRING(@Baul,@BaulCuenta*10+1,10)
IF @BaulTipo=@InventarioTipo AND @BaulSerial=@InventarioSerial
BEGIN
SET @Encontrar=1
INSERT INTO DupeLog_CDC (Cuenta,Personaje,Item,ItemType,ItemSerial) VALUES (@Cuenta,@Personaje,@InventarioItem,@InventarioTipo,@InventarioSerial)
SET @Baul=SUBSTRING(@Baul,1,@BaulCuenta*10)+0xFFFFFFFFFFFFFFFFFFFF+SUBSTRING(@Baul,((@BaulCuenta+1)*10+1),@TamañoBaul-(((@BaulCuenta+1)*10)))
END
SET @BaulCuenta=@BaulCuenta+1
END
END
SET @InventarioPJ=@InventarioPJ+1
END
IF @Encontrar=1
BEGIN
--A diferencia de todos los scripts, este solamente borra el item Dupeado.
UPDATE Warehouse SET Items=@Baul WHERE (AccountID=@Cuenta)
--En esta seccion si quieres puedes agregar algun castigo (como ban de todos los personajes)
--UPDATE [Character] SET CtlCode=1 WHERE AccountID=@Cuenta
END
SET NOCOUNT OFF
END
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
select * from DupeLog_CDC

Como se quien dupea?
Use MuOnline
select * from DupeLog_CDC

Intalacion
Abrír ''Analizador de consultas'' Pegár el Script, presionar F5 y guardar.


Auto Bannear al usuario que dupea:
Para auto bannear al usuario que dupea basta con ir hasta el final de la consulta, donde dice:
--UPDATE [Character] SET CtlCode=1 WHERE AccountID=@Cuenta
y borrar los 2 '' -- (Guiones) y Presionar F5.

Creditos
CDCTeam - kind (Desarrollar Script)
DaRKav (Funcion para borrar items)
Desconocido (Script Base)

______________________________________________________________________________________________________________________________
:suspect:
No soy el mejor de todos pero algo soy :L
:suspect:

browser




Tread Creados 28

Corazones bardos 82
Fama 16
Fecha de inscripción : 03/06/2012

Ver perfil de usuario

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


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