StarMedia
Va asteptam in grupul nostru de pe facebook: Click

Distribuiţi
Vezi subiectul anteriorIn josVezi subiectul urmator
SmokEALoT
Extreme Pro
Extreme Pro
Mesaje : 3109
Varsta : 25
Localizare : Uricani , HD !
Sunt pe forum din : 17/12/2008

Script Anti-Dupe !

la data de Mar 07 Iul 2009, 00:18
Reputaţie mesaje: 67% (3 voturi)
Acest script sterge toate itemele dupate !
Il bagati in Query Analyzer , ii dati execute , si gata !
De acum incolo toate iteme care vor fi dupate , se vor sterge !

Cod:
USE MUONLINE
if exists(select * from dbo.sysobjects where type='p' and name='WZ_GetItemSerial')
drop procedure WZ_GetItemSerial
GO

CREATE procedure WZ_GetItemSerial
AS
BEGIN
   DECLARE @ItemSerial int
   SET NOCOUNT ON
   BEGIN TRANSACTION
   UPDATE GameServerInfo set @ItemSerial = ItemCount = (case when ItemCount < 0x7effffff then ItemCount+1
   ELSE 1
   END)
   
   IF(@@error <> 0)
   BEGIN
      rollback transaction
      select-1
   END
   ELSE
   BEGIN
      commit transaction
      select @ItemSerial
   END
END
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_CheckSameID]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[trg_CheckSameID]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AllItemsLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[AllItemsLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CopyLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[CopyLog]
GO

CREATE TABLE [dbo].[AllItemsLog] (
   [items_id] [int] IDENTITY (1, 1) NOT NULL ,
   [items_type] [binary] (1) NOT NULL ,
   [items_serial] [binary] (4) NOT NULL ,
   [items_acid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CopyLog] (
   [copy_id] [int] IDENTITY (1, 1) NOT NULL ,
   [copy_acid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
   [copy_name] [varchar] (15) COLLATE Chinese_PRC_CI_AS NOT NULL ,
   [copy_type] [binary] (1) ,
   [copy_serial] [binary] (4) ,
   [copy_item] [binary] (16) ,
   [copy_date] [datetime] NOT NULL
) ON [PRIMARY]
GO
 
ALTER TABLE [dbo].[AllItemsLog] ADD
CONSTRAINT [DF_CT_ITEM_item] DEFAULT (0) FOR [items_type],
CONSTRAINT [DF_CT_ITEM_itemid] DEFAULT (0) FOR [items_serial],
CONSTRAINT [DF_CT_ITEM_itemrole] DEFAULT ('\') FOR [items_acid]
GO
 
CREATE INDEX [IX_CT_ITEM] ON [dbo].[AllItemsLog]([items_type], [items_serial]) ON [PRIMARY]
GO
 
ALTER TABLE [dbo].[CopyLog] ADD
CONSTRAINT [DF_CopyLog_copy_date] DEFAULT (getdate()) FOR [copy_date]
GO
 
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_CheckSameID]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[trg_CheckSameID]
GO

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

CREATE TRIGGER [dbo].[trg_CheckSameID] ON [dbo].[character]
   FOR UPDATE
   AS
   BEGIN
      IF UPDATE(inventory)
      BEGIN
         SET NOCOUNT ON
         DECLARE
         @wh_data binary(1920),
         @wh_type binary(1),
         @wh_serial binary(4),
         @wh_item binary(16),
         @cr_acid varchar(10),
         @cr_char varchar(15),
         @cr_data binary(760),
         @cr_type binary(1),
         @cr_serial binary(4),
         @cr_item binary(16),
         @al_acid varchar(10),
         @j int,
         @k int,
         @warehouse_length int,
         @find bit

         -- Selecting information about inserted object
         SELECT @cr_acid=i.accountid, @cr_data=i.inventory ,@cr_char=i.name FROM inserted i
         SELECT @wh_data=items FROM warehouse WHERE accountid=@cr_acid 

         -- Length of the warehouse in binary
         SET @warehouse_length=1920
         
         SET @j=0
         SET @find=0
         WHILE @j<76 AND @cr_data IS NOT NULL
         BEGIN
            SET @cr_type=SUBSTRING(@cr_data,@j*16+1,1)
            SET @cr_serial=SUBSTRING(@cr_data,@j*16+4,4)
            SET @cr_item=SUBSTRING(@cr_data,@j*16+1,16)
            IF @cr_type<>0xFF AND @cr_serial<>0x00000000
            BEGIN
               SELECT @al_acid=items_acid FROM allitemslog WHERE items_type=@cr_type AND items_serial=@cr_serial
               IF @al_acid IS NULL
                  INSERT INTO allitemslog (items_type,items_serial,items_acid) VALUES (@cr_type,@cr_serial,@cr_acid)
               ELSE
               BEGIN
                  UPDATE allitemslog SET items_acid=@cr_acid WHERE items_type=@cr_type AND items_serial=@cr_serial
                  
                  SET @k=0
                  WHILE @k<120 AND @wh_data IS NOT NULL
                  BEGIN
                     SET @wh_type=SUBSTRING(@wh_data,@k*16+1,1)
                     SET @wh_serial=SUBSTRING(@wh_data,@k*16+4,4)
                     SET @wh_item=SUBSTRING(@wh_data,@k*16+1,16)
                     IF @wh_type=@cr_type AND @wh_serial=@cr_serial
                     BEGIN
                        SET @find=1
                        -- Insert dupe record in to the log (item with serial)
                        INSERT INTO copylog (copy_type,copy_serial,copy_item,copy_acid,copy_name,copy_date) VALUES (@cr_type,@cr_serial,@cr_item,@al_acid,@cr_char,getdate())
                        SET @wh_data=SUBSTRING(@wh_data,1,@k*16)+0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF+SUBSTRING(@wh_data,((@k+1)*16+1),@warehouse_length-(((@k+1)*16)))
                     END
                     SET @k=@k+1
                  END
               END
            END
            SET @j=@j+1
         END
         
         IF @find=1
         BEGIN
            -- Update warehouse, delete dupe
            UPDATE warehouse SET items=@wh_data where accountid=@cr_acid

            -- This is where u can add more punishment like ban or lock characters
            -- Block character that has dupes on him [if you feel like it]
            -- UPDATE Character SET CtlCode=1 WHERE name=@cr_char
         END
         SET NOCOUNT OFF
      END
   END

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

Credits : DaRKav
avatar
darrksnow
Membru
Membru
Mesaje : 202
Sunt pe forum din : 17/02/2009

Re: Script Anti-Dupe !

la data de Lun 14 Dec 2009, 21:56
merge 100%? sa nu imi stearga alte iteme..
avatar
Skipper
Membru
Membru
Mesaje : 337
Localizare : Moldova
Sunt pe forum din : 12/04/2009

Re: Script Anti-Dupe !

la data de Lun 14 Dec 2009, 22:07
Exista SCFMT Dupe Finder - cred ca e cu mult mai usor cu el.
avatar
darrksnow
Membru
Membru
Mesaje : 202
Sunt pe forum din : 17/02/2009

Re: Script Anti-Dupe !

la data de Lun 14 Dec 2009, 22:12
Skippper a scris:Exista SCFMT Dupe Finder - cred ca e cu mult mai usor cu el.

un link? mersi..
avatar
Andrey56
Nou Venit
Nou Venit
Mesaje : 42
Varsta : 24
Localizare : Bucuresti
Sunt pe forum din : 20/07/2009

Re: Script Anti-Dupe !

la data de Sam 26 Dec 2009, 18:30
da un link pls
avatar
Lexu
Membru
Membru
Mesaje : 362
Varsta : 25
Localizare : Timisoara ;x
Sunt pe forum din : 28/02/2009

Re: Script Anti-Dupe !

la data de Joi 04 Feb 2010, 20:13
Uite aici scfmt dupe finder ala

[Trebuie sa fiti inscris si conectat pentru a vedea acest link]


thanks, mi-a mers!
avatar
Licurici1
Nou Venit
Nou Venit
Mesaje : 30
Sunt pe forum din : 06/01/2010

Re: Script Anti-Dupe !

la data de Joi 04 Feb 2010, 21:21
si daca ai vreo 1000 conturi astepti 2 ore sa caute si face lag
avatar
OneStary
Membru
Membru
Mesaje : 313
Varsta : 106
Localizare : -
Sunt pe forum din : 22/02/2009

Re: Script Anti-Dupe !

la data de Joi 18 Feb 2010, 14:20
folositor
avatar
Masteru
Nou Venit
Nou Venit
Mesaje : 48
Sunt pe forum din : 29/05/2010

Re: Script Anti-Dupe !

la data de Joi 26 Mai 2011, 13:16
e vrajala cu scriptu ala nustiu ce sa zic eu personal lam folosit am luat un program de creat dupe am facut dupe dupa sol aripi etc si nu mia disparut am intrat si cu alt caracter si dejaba nu a mers poate are bug
avatar
DarKy
Membru
Membru
Mesaje : 426
Sunt pe forum din : 07/02/2010

Re: Script Anti-Dupe !

la data de Joi 26 Mai 2011, 21:15
[Trebuie sa fiti inscris si conectat pentru a vedea acest link] a scris:e vrajala cu scriptu ala nustiu ce sa zic eu personal lam folosit am luat un program de creat dupe am facut dupe dupa sol aripi etc si nu mia disparut am intrat si cu alt caracter si dejaba nu a mers poate are bug
Scriptul nu te protejeaza de DUPE.
El te curata de itemele duplicate.

Incearca in urmatorul mod:
1)Creezi un item "DUPE".
2)Rulezi scriptul.
Cod:
USE MUONLINE
if exists(select * from dbo.sysobjects where type='p' and name='WZ_GetItemSerial')
drop procedure WZ_GetItemSerial
GO

CREATE procedure WZ_GetItemSerial
AS
BEGIN
   DECLARE @ItemSerial int
   SET NOCOUNT ON
   BEGIN TRANSACTION
   UPDATE GameServerInfo set @ItemSerial = ItemCount = (case when ItemCount < 0x7effffff then ItemCount+1
   ELSE 1
   END)
   
   IF(@@error <> 0)
   BEGIN
      rollback transaction
      select-1
   END
   ELSE
   BEGIN
      commit transaction
      select @ItemSerial
   END
END
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_CheckSameID]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[trg_CheckSameID]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AllItemsLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[AllItemsLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CopyLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[CopyLog]
GO

CREATE TABLE [dbo].[AllItemsLog] (
   [items_id] [int] IDENTITY (1, 1) NOT NULL ,
   [items_type] [binary] (1) NOT NULL ,
   [items_serial] [binary] (4) NOT NULL ,
   [items_acid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CopyLog] (
   [copy_id] [int] IDENTITY (1, 1) NOT NULL ,
   [copy_acid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
   [copy_name] [varchar] (15) COLLATE Chinese_PRC_CI_AS NOT NULL ,
   [copy_type] [binary] (1) ,
   [copy_serial] [binary] (4) ,
   [copy_item] [binary] (16) ,
   [copy_date] [datetime] NOT NULL
) ON [PRIMARY]
GO
 
ALTER TABLE [dbo].[AllItemsLog] ADD
CONSTRAINT [DF_CT_ITEM_item] DEFAULT (0) FOR [items_type],
CONSTRAINT [DF_CT_ITEM_itemid] DEFAULT (0) FOR [items_serial],
CONSTRAINT [DF_CT_ITEM_itemrole] DEFAULT ('\') FOR [items_acid]
GO
 
CREATE INDEX [IX_CT_ITEM] ON [dbo].[AllItemsLog]([items_type], [items_serial]) ON [PRIMARY]
GO
 
ALTER TABLE [dbo].[CopyLog] ADD
CONSTRAINT [DF_CopyLog_copy_date] DEFAULT (getdate()) FOR [copy_date]
GO
 
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_CheckSameID]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[trg_CheckSameID]
GO

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

CREATE TRIGGER [dbo].[trg_CheckSameID] ON [dbo].[character]
   FOR UPDATE
   AS
   BEGIN
      IF UPDATE(inventory)
      BEGIN
         SET NOCOUNT ON
         DECLARE
         @wh_data binary(1920),
         @wh_type binary(1),
         @wh_serial binary(4),
         @wh_item binary(16),
         @cr_acid varchar(10),
         @cr_char varchar(15),
         @cr_data binary(760),
         @cr_type binary(1),
         @cr_serial binary(4),
         @cr_item binary(16),
         @al_acid varchar(10),
         @j int,
         @k int,
         @warehouse_length int,
         @find bit

         -- Selecting information about inserted object
         SELECT @cr_acid=i.accountid, @cr_data=i.inventory ,@cr_char=i.name FROM inserted i
         SELECT @wh_data=items FROM warehouse WHERE accountid=@cr_acid 

         -- Length of the warehouse in binary
         SET @warehouse_length=1920
         
         SET @j=0
         SET @find=0
         WHILE @j<76 AND @cr_data IS NOT NULL
         BEGIN
            SET @cr_type=SUBSTRING(@cr_data,@j*16+1,1)
            SET @cr_serial=SUBSTRING(@cr_data,@j*16+4,4)
            SET @cr_item=SUBSTRING(@cr_data,@j*16+1,16)
            IF @cr_type<>0xFF AND @cr_serial<>0x00000000
            BEGIN
               SELECT @al_acid=items_acid FROM allitemslog WHERE items_type=@cr_type AND items_serial=@cr_serial
               IF @al_acid IS NULL
                  INSERT INTO allitemslog (items_type,items_serial,items_acid) VALUES (@cr_type,@cr_serial,@cr_acid)
               ELSE
               BEGIN
                  UPDATE allitemslog SET items_acid=@cr_acid WHERE items_type=@cr_type AND items_serial=@cr_serial
                  
                  SET @k=0
                  WHILE @k<120 AND @wh_data IS NOT NULL
                  BEGIN
                     SET @wh_type=SUBSTRING(@wh_data,@k*16+1,1)
                     SET @wh_serial=SUBSTRING(@wh_data,@k*16+4,4)
                     SET @wh_item=SUBSTRING(@wh_data,@k*16+1,16)
                     IF @wh_type=@cr_type AND @wh_serial=@cr_serial
                     BEGIN
                        SET @find=1
                        -- Insert dupe record in to the log (item with serial)
                        INSERT INTO copylog (copy_type,copy_serial,copy_item,copy_acid,copy_name,copy_date) VALUES (@cr_type,@cr_serial,@cr_item,@al_acid,@cr_char,getdate())
                        SET @wh_data=SUBSTRING(@wh_data,1,@k*16)+0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF+SUBSTRING(@wh_data,((@k+1)*16+1),@warehouse_length-(((@k+1)*16)))
                     END
                     SET @k=@k+1
                  END
               END
            END
            SET @j=@j+1
         END
         
         IF @find=1
         BEGIN
            -- Update warehouse, delete dupe
            UPDATE warehouse SET items=@wh_data where accountid=@cr_acid

            -- This is where u can add more punishment like ban or lock characters
            -- Block character that has dupes on him [if you feel like it]
            -- UPDATE Character SET CtlCode=1 WHERE name=@cr_char
         END
         SET NOCOUNT OFF
      END
   END

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
3)Verifici daca mai exista itemul sau nu.

Daca nu e gresit scriptul,ar trebui sa fi disparut,in caz contrar e f**ked up scriptul.
Continut sponsorizat

Re: Script Anti-Dupe !

Vezi subiectul anteriorSusVezi subiectul urmator
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum