Resultados 1 a 6 de 6
  1. #1
    Developer C++ LaMO's Avatar


    Data de Ingresso
    Sep 2015
    Posts
    692
    Thanks Thanks Given 
    206
    Thanks Thanks Received 
    770
    Thanked in
    124 Posts
    Mencionado
    80 Post(s)
    MEU HUMOR
    Tired

    Query Limpar itens dupados

    Existe alguma Query para limpar itens dupados? Se tiver 2 itens com o mesmo serial, ficar 1 só?

    Servidor é versão Season 1

    Procurei no fórum, procurei no google, mas não encontrei.

  2. #2
    Super Moderador andredeco's Avatar


    Data de Ingresso
    Oct 2016
    Posts
    577
    Thanks Thanks Given 
    63
    Thanks Thanks Received 
    76
    Thanked in
    37 Posts
    Mencionado
    35 Post(s)
    MEU HUMOR
    Breezy
    País
    Brazil
    Citação Originally Posted by vlgtre Ver Post
    Existe alguma Query para limpar itens dupados? Se tiver 2 itens com o mesmo serial, ficar 1 só?

    Servidor é versão Season 1

    Procurei no fórum, procurei no google, mas não encontrei.
    Pra tudo tem um jeito

    Código:
    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 SET QUOTED_IDENTIFIER ON 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_acid varchar(10), @wh_data binary(1920), @wh_type binary(1), @wh_serial binary(4), @wh_item binary(16), @cr_user varchar(10), @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, @ok 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 -- 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 SELECT @wh_data=items FROM warehouse WHERE accountid=@al_acid SET @ok=0 WHILE @ok<120 AND @wh_data IS NOT NULL BEGIN SET @wh_type=SUBSTRING(@wh_data,@ok*16+1,1) SET @wh_serial=SUBSTRING(@wh_data,@ok*16+4,4) SET @wh_item=SUBSTRING(@wh_data,@ok*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,@ok*16)+0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF+SUBSTRING (@wh_data,((@ok+1)*16+1),@warehouse_length-(((@ok+1)*16))) -- Update warehouse, delete dupe UPDATE warehouse SET items=@wh_data where accountid=@al_acid END SET @ok=@ok+1 END END END SET @j=@j+1 END IF @find=1 BEGIN -- 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 -- Do not block the character UPDATE Character SET CtlCode=0 WHERE name=@cr_char END SET NOCOUNT OFF END END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO
    
    
    PS: Usei este código a muitos tempo e não lembro se ele apaga os 2 itens ou apenas 1 deles.
    NÃO ME RESPONSABILIZO POR NENHUM DANO, USE POR SUA CONTA E RISCO.

    6 minutes:------- Atualizado -------

    Antes de partir para a Query, baixe o IGCN Essential Tools e configure ele com Usuário e Senha do SQL
    e com a DataBase.
    Ele possui uma ferramenta de Scan Dupe, Delete, manter 1 Item ou deletar os 2.
    Execute apenas o Scan para ver se vai dar certo, se o seu banco de dados tiver a estrutura padrão de Itens,
    vai funcionar tudo certo e não precisará de Query nenhuma. É mais seguro.
    Last edited by andredeco; 05/12/2019 at 06:03 PM.

  3. #3
    Developer C++ LaMO's Avatar


    Data de Ingresso
    Sep 2015
    Posts
    692
    Thanks Thanks Given 
    206
    Thanks Thanks Received 
    770
    Thanked in
    124 Posts
    Mencionado
    80 Post(s)
    MEU HUMOR
    Tired
    Citação Originally Posted by andredeco Ver Post
    Pra tudo tem um jeito

    Código:
    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 SET QUOTED_IDENTIFIER ON 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_acid varchar(10), @wh_data binary(1920), @wh_type binary(1), @wh_serial binary(4), @wh_item binary(16), @cr_user varchar(10), @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, @ok 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 -- 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 SELECT @wh_data=items FROM warehouse WHERE accountid=@al_acid SET @ok=0 WHILE @ok<120 AND @wh_data IS NOT NULL BEGIN SET @wh_type=SUBSTRING(@wh_data,@ok*16+1,1) SET @wh_serial=SUBSTRING(@wh_data,@ok*16+4,4) SET @wh_item=SUBSTRING(@wh_data,@ok*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,@ok*16)+0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF+SUBSTRING (@wh_data,((@ok+1)*16+1),@warehouse_length-(((@ok+1)*16))) -- Update warehouse, delete dupe UPDATE warehouse SET items=@wh_data where accountid=@al_acid END SET @ok=@ok+1 END END END SET @j=@j+1 END IF @find=1 BEGIN -- 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 -- Do not block the character UPDATE Character SET CtlCode=0 WHERE name=@cr_char END SET NOCOUNT OFF END END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO
    
    
    PS: Usei este código a muitos tempo e não lembro se ele apaga os 2 itens ou apenas 1 deles.
    NÃO ME RESPONSABILIZO POR NENHUM DANO, USE POR SUA CONTA E RISCO.

    6 minutes:------- Atualizado -------

    Antes de partir para a Query, baixe o IGCN Essential Tools e configure ele com Usuário e Senha do SQL
    e com a DataBase.
    Ele possui uma ferramenta de Scan Dupe, Delete, manter 1 Item ou deletar os 2.
    Execute apenas o Scan para ver se vai dar certo, se o seu banco de dados tiver a estrutura padrão de Itens,
    vai funcionar tudo certo e não precisará de Query nenhuma. É mais seguro.
    É pago esse programa? Ou crackeado? Será que funciona pra versões baixas?

  4. #4
    Super Moderador andredeco's Avatar


    Data de Ingresso
    Oct 2016
    Posts
    577
    Thanks Thanks Given 
    63
    Thanks Thanks Received 
    76
    Thanked in
    37 Posts
    Mencionado
    35 Post(s)
    MEU HUMOR
    Breezy
    País
    Brazil
    É crackeado, baixa um MuServer IGCN aqui nos downloads e ele virá junto.
    Tem um Season 9 postado por mim.

  5. #5
    Developer C++ LaMO's Avatar


    Data de Ingresso
    Sep 2015
    Posts
    692
    Thanks Thanks Given 
    206
    Thanks Thanks Received 
    770
    Thanked in
    124 Posts
    Mencionado
    80 Post(s)
    MEU HUMOR
    Tired
    Citação Originally Posted by andredeco Ver Post
    É crackeado, baixa um MuServer IGCN aqui nos downloads e ele virá junto.
    Tem um Season 9 postado por mim.
    Tentei executar, mas não funciona. Tem algum outro que foi feito para versões mais baixas?

  6. #6
    Super Moderador andredeco's Avatar


    Data de Ingresso
    Oct 2016
    Posts
    577
    Thanks Thanks Given 
    63
    Thanks Thanks Received 
    76
    Thanked in
    37 Posts
    Mencionado
    35 Post(s)
    MEU HUMOR
    Breezy
    País
    Brazil
    Antigamente era comum servidores até Seasons 1 virem com programas anti dupe e Scan pela facilidade que tinham em se dupar, se vasculhar na Net deve encontrar algum.

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • You may not post Resposta(s)
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •  
Sobre nós
Somos uma comunidade em atividade a 8 anos que aborda assuntos relacionados a games em geral, principalmente games MMORPG. e que busca sempre ajudar os membros através de conteúdos, tutoriais e suporte...
Nossos anunciantes
Hinetworks
VelozHost
InovHost
Rede Sociais