Resultados 1 a 9 de 9

Tópico: Dupe 97d

  1. #1
    Membro stark's Avatar

    Data de Ingresso
    Jan 2024
    Posts
    33
    Thanks Thanks Given 
    42
    Thanks Thanks Received 
    223
    Thanked in
    9 Posts
    Mentioned
    0 Post(s)
    País
    Brazil

    Dupe 97d

    Boa tarde pessoal,

    Alguém sabe alguma forma de deletar itens dupados do servidor em "tempo real"? Notei que a maioria dos servidores 97D hoje tem dupe (com muserver da FLAME TEAM) e o antidupe deles é falho.. tem hora que remove item que nem é dupado (checa a tela do player de tempos em tempos e vê se tem serial dupado e remove) só que vira e mexe buga e remove item "limpo".

    Lembro que antigamente havia softwares que fazia essa checagem no SQL, isso ainda existe? Como estão fazendo hoje em dia?

  2. #2
    Membro cronusmaker's Avatar

    Data de Ingresso
    Dec 2022
    Localização
    brasil / SADE
    Posts
    62
    Thanks Thanks Given 
    63
    Thanks Thanks Received 
    279
    Thanked in
    29 Posts
    Mentioned
    0 Post(s)
    Humor
    Bored
    País
    Brazil
    Citação Originally Posted by stark Ver Post
    Boa tarde pessoal,

    Alguém sabe alguma forma de deletar itens dupados do servidor em "tempo real"? Notei que a maioria dos servidores 97D hoje tem dupe (com muserver da FLAME TEAM) e o antidupe deles é falho.. tem hora que remove item que nem é dupado (checa a tela do player de tempos em tempos e vê se tem serial dupado e remove) só que vira e mexe buga e remove item "limpo".

    Lembro que antigamente havia softwares que fazia essa checagem no SQL, isso ainda existe? Como estão fazendo hoje em dia?

    infelismente e meio complicado fazer isso pois não tem como tu saber se o item esta dupado ou não isso e algo que o proprio servidor faz a verificação
    esse foi um dos motivos de parar de mexer com gs antigos pois hoje 97d por mais que nostalgica a maioria dos gs não tem essa verificação o ultimo que usei
    foi o gs do pronoob

    então o recomendado e migrar pra algun gs mais recente que usar os gs por exemplo antigos da viciadosmu

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


    Data de Ingresso
    Jul 2022
    Posts
    48
    Thanks Thanks Given 
    91
    Thanks Thanks Received 
    433
    Thanked in
    9 Posts
    Mentioned
    0 Post(s)
    Humor
    Innocent
    País
    Brazil
    Citação Originally Posted by stark Ver Post
    Boa tarde pessoal,

    Alguém sabe alguma forma de deletar itens dupados do servidor em "tempo real"? Notei que a maioria dos servidores 97D hoje tem dupe (com muserver da FLAME TEAM) e o antidupe deles é falho.. tem hora que remove item que nem é dupado (checa a tela do player de tempos em tempos e vê se tem serial dupado e remove) só que vira e mexe buga e remove item "limpo".

    Lembro que antigamente havia softwares que fazia essa checagem no SQL, isso ainda existe? Como estão fazendo hoje em dia?
    Se removeu é porque o item tinha o mesmo serial, o problema é que vocês edita os itens sem o auto serial!
    Todos os métodos existentes para duplicar itens na versão foram corrigidos, deve ter alguma falha ou falta de configuração mesmo, evite baixar o tempo para a troca/abertura do baú.

  4. #4
    Membro LuizerA's Avatar

    Data de Ingresso
    Jul 2022
    Posts
    85
    Thanks Thanks Given 
    79
    Thanks Thanks Received 
    634
    Thanked in
    26 Posts
    Mentioned
    3 Post(s)
    País
    Brazil
    Não sei se estou errado, se tiver alguém me corrija.
    O ideal é usar um editor que gere o serial pelo ItemCount do sql na tabela GameServerInfo, da mesma forma que é gerado automaticamente quando dropa um item no server. Pois esses de auto serial, depois o jogo pode acabar fornecendo seriais iguais.

  5. #5
    Developer C++ Romário's Avatar

    Data de Ingresso
    Jul 2022
    Posts
    72
    Thanks Thanks Given 
    39
    Thanks Thanks Received 
    367
    Thanked in
    33 Posts
    Mentioned
    6 Post(s)
    País
    Brazil
    Para quem não sabe, é possível gerar serial inválida ou duplicado em ITEM até dropando uma simples box dentro do jogo usando GS 97-99, isso ocorre devido a um problema que existe no DataServer, as vezes ele para de funcionar, do nada, por isso usavam 2 no MuServer original, e com a correção para aquele lance do NoStandby para corrigir problemas de travamentos no login isso pode piorar as coisas. Nos arquivos 99z tem uma opção que consegue identificar em tempo real isso e bloqueia o item até que o problema seja resolvido.

    A solução a nível de código, pelo menos no meu GS, eu resolvi fazendo uma checagem de janelas e estado do personagem. O GS da 99z é o mesmo da 97d, então a solução deve ser a mesma.

    Para quem estiver procurando uma Query, aqui está uma que eu utilizei por um tempo até achar um solução a nível de código. Ela cria uma tabela e usa uma trigger para scanear os itens dupados. Se achar algum, o personagem é bloqueado, mas vc pode modificar como quiser:

    -- Verifica se a tabela [DupesDetected] existe, e caso exista, ela é excluída
    IF EXISTS (SELECT * FROM dbo.sysobjects
    WHERE id = OBJECT_ID(N'[dbo].[DupesDetected]')
    AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
    DROP TABLE [dbo].[DupesDetected]
    GO


    -- Cria a tabela [DupesDetected]
    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


    -- Cria a chave primária para a tabela [DupesDetected]
    ALTER TABLE [dbo].[DupesDetected] WITH NOCHECK ADD
    CONSTRAINT [PK_DupesDetected] PRIMARY KEY CLUSTERED
    (
    [ID]
    ) ON [PRIMARY]
    GO


    -- Adiciona um valor padrão para a coluna [TIMESTAMP]
    ALTER TABLE [dbo].[DupesDetected] ADD
    CONSTRAINT [DF_Table1_TIMESTAMP] DEFAULT (GETDATE()) FOR [TIMESTAMP]
    GO


    -- Cria o trigger [DUPEFINDER] para detectar itens duplicados
    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


    -- Obtém o inventário e os dados do usuário
    SELECT @ACCOUNT_ID = accountid, @CHARNAME = Name, @INV = inventory FROM inserted
    SET @j = 0


    -- Itera sobre os itens do inventário
    WHILE (@j < 76) AND (@INV IS NOT NULL)
    BEGIN
    -- Obtém o tipo e o serial do item
    SET @ITEM_TYPE = SUBSTRING(@INV, @j * 10 + 1, 1)
    SET @ITEM_SERIAL = SUBSTRING(@INV, @j * 10 + 4, 4)


    -- Verifica se o tipo é válido e o serial não é "0"
    IF @ITEM_TYPE <> 0xFF AND @ITEM_SERIAL <> 0x00000000
    BEGIN
    -- Obtém os dados do warehouse caso ainda não tenha sido feito
    IF (@WAREHOUSE IS NULL)
    BEGIN
    SELECT @WAREHOUSE = items, @PWOLD = pw FROM warehouse WHERE accountid = @ACCOUNT_ID
    END


    -- Itera sobre os slots do warehouse
    SET @k = 0
    WHILE (@k < 120) AND (@WAREHOUSE IS NOT NULL)
    BEGIN
    -- Verifica se o tipo e o serial coincidem
    IF (SUBSTRING(@WAREHOUSE, @k * 10 + 1, 1) = @ITEM_TYPE) AND (SUBSTRING(@WAREHOUSE, @k * 10 + 4, 4) = @ITEM_SERIAL)
    BEGIN
    -- Insere o item duplicado no log
    INSERT INTO DupesDetected (AccountID, Name, ITEM_TYPE, ITEM_SERIAL, INV_POSITION, WH_POSITION)
    VALUES (@ACCOUNT_ID, @CHARNAME, @ITEM_TYPE, @ITEM_SERIAL, @j, @k)


    -- Desconecta o usuário
    UPDATE MEMB__STAT SET CONNECTSTAT = 0 WHERE ACCOUNTID = @ACCOUNT_ID


    -- Bloqueia o baú
    -- Obtém o novo código de bloqueio
    SET @PWNEW = DATEPART(YYYY, GETDATE()) + DATEPART(MM, GETDATE()) + DATEPART(D, GETDATE())


    -- Atualiza o código de bloqueio do baú
    UPDATE WAREHOUSE SET PW = @PWNEW, LASTPW = @PWOLD WHERE (ACCOUNTID = @ACCOUNT_ID)


    -- Bane todos os personagens da conta
    UPDATE [CHARACTER] SET CTLCODE = 1 WHERE ACCOUNTID = @ACCOUNT_ID
    END
    -- Incrementa o contador para o próximo slot
    SET @k = @k + 1
    END
    END
    -- Incrementa o contador para o próximo item
    SET @j = @j + 1
    END
    SET NOCOUNT ON
    END
    GO

  6. #6
    Membro Eros's Avatar

    Data de Ingresso
    Jul 2022
    Posts
    19
    Thanks Thanks Given 
    83
    Thanks Thanks Received 
    265
    Thanked in
    11 Posts
    Mentioned
    1 Post(s)
    País
    Argentina
    Acho que seu problema está no uso do Editor. Já uso isso há algum tempo e não tive problemas com detecções.

  7. #7
    Membro LuizerA's Avatar

    Data de Ingresso
    Jul 2022
    Posts
    85
    Thanks Thanks Given 
    79
    Thanks Thanks Received 
    634
    Thanked in
    26 Posts
    Mentioned
    3 Post(s)
    País
    Brazil
    Citação Originally Posted by Romário Ver Post
    Para quem não sabe, é possível gerar serial inválida ou duplicado em ITEM até dropando uma simples box dentro do jogo usando GS 97-99, isso ocorre devido a um problema que existe no DataServer, as vezes ele para de funcionar, do nada, por isso usavam 2 no MuServer original, e com a correção para aquele lance do NoStandby para corrigir problemas de travamentos no login isso pode piorar as coisas. Nos arquivos 99z tem uma opção que consegue identificar em tempo real isso e bloqueia o item até que o problema seja resolvido.

    A solução a nível de código, pelo menos no meu GS, eu resolvi fazendo uma checagem de janelas e estado do personagem. O GS da 99z é o mesmo da 97d, então a solução deve ser a mesma.

    Para quem estiver procurando uma Query, aqui está uma que eu utilizei por um tempo até achar um solução a nível de código. Ela cria uma tabela e usa uma trigger para scanear os itens dupados. Se achar algum, o personagem é bloqueado, mas vc pode modificar como quiser:
    pelo que sei, quando gera o serial de algum item a primeira vez, o dataserver roda a procedure 1x já com uma quantia grande, e depois só vai gerando os itens com esses seriais até terminar e gerar mais. Inclusive se ficar reiniciando o dataserver, ta desperdiçando serial. Já no muemu acho que mudaram pra sempre gerar de 1 em 1, mas aí toda vez fica rodando a procedure em todo item.

  8. #8
    Developer C++ Romário's Avatar

    Data de Ingresso
    Jul 2022
    Posts
    72
    Thanks Thanks Given 
    39
    Thanks Thanks Received 
    367
    Thanked in
    33 Posts
    Mentioned
    6 Post(s)
    País
    Brazil
    Citação Originally Posted by LuizerA Ver Post
    pelo que sei, quando gera o serial de algum item a primeira vez, o dataserver roda a procedure 1x já com uma quantia grande, e depois só vai gerando os itens com esses seriais até terminar e gerar mais. Inclusive se ficar reiniciando o dataserver, ta desperdiçando serial. Já no muemu acho que mudaram pra sempre gerar de 1 em 1, mas aí toda vez fica rodando a procedure em todo item.
    Bom... Vc está completamente errado, esses DataServers antigos são bem mais complexos doq vc pensa. Rsrsrsrsrsrsrs. Inclusive eles não funcionam com qualquer SQL. DataSwrver não trabalha apenas com procedures, ele trabalha em conjunto com o GS. Eu teria um enorme prazer em mostrar como o Mu Online original funciona, mas acredito que não vale mais apena o trabalho. Existem tantos emuladores.... Hahahahahahahahaha

  9. #9
    Developer C++ Romário's Avatar

    Data de Ingresso
    Jul 2022
    Posts
    72
    Thanks Thanks Given 
    39
    Thanks Thanks Received 
    367
    Thanked in
    33 Posts
    Mentioned
    6 Post(s)
    País
    Brazil
    E digo mais, os ConnectServer e Dataserver que os emuladores de hoje tem, não chegam nem perto do que oq fizeram em 2003-2006, oque é deprimente. Hahahahahaha

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
  •