Resultados 1 a 6 de 6

Hybrid View

  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
    Citação Originally Posted by s00x Ver Post
    Olá colega, boa noite!

    Olha, esse erro é bem old, acho que você consegue achar algo mais detalhado, porem...
    Refaça as procedures WZ_CONNECT_MEMB e WZ_DISCONNECT_MEMB e a tabela MEMB_STAT.

    att's
    O problema ocorre quando o usuário está movendo do GS pro GS_CS ou do GS_CS pro GS, modificando essas procedures resolve?

    Vou tentar pesquisar mais sobre isso.. É um problema antigo, mas a versão que utilizo também é bem antiga infelizmente.

  2. #2
    Developer C++ s00x's Avatar

    Data de Ingresso
    Jan 2015
    Posts
    373
    Thanks Thanks Given 
    75
    Thanks Thanks Received 
    150
    Thanked in
    24 Posts
    Mencionado
    63 Post(s)
    MEU HUMOR
    Cheerful
    País
    United States
    Citação Originally Posted by LaMO Ver Post
    O problema ocorre quando o usuário está movendo do GS pro GS_CS ou do GS_CS pro GS, modificando essas procedures resolve?

    Vou tentar pesquisar mais sobre isso.. É um problema antigo, mas a versão que utilizo também é bem antiga infelizmente.
    Olá novamente Colega, boa tarde!

    Geralmente o JoinServer a partir da Season 2 se eu não estiver enganado, já possui o sistema Auto Disconnect, provavelmente deve ser algo mas antigo que isso então.
    Mas, dê uma atenção no que eu disse, que vai ser sucesso.

    Vou elaborar melhor o que você deve fazer, partindo do principio que você já deletou as procedures WZ_CONNECT_MEMB, WZ_DISCONNECT_MEMB e a tabela MEMB_STAT.

    Vamos lá, e vamos recriar a procedure, WZ_CONNECT_MEMB:
    Código:
    USE [MuOnline] GO
    SET ANSI_NULLS OFF GO
    SET QUOTED_IDENTIFIER ON GO
    CREATE PROCEDURE [dbo].[WZ_CONNECT_MEMB] 
        @uid varchar(20),
        @server varchar(20),
        @uip varchar(20) AS BEGIN BEGIN TRANSACTION
    SET NOCOUNT ON IF EXISTS
        (SELECT memb___id
         FROM MEMB_STAT WITH (READUNCOMMITTED)
         WHERE memb___id = @uid ) BEGIN
    UPDATE MEMB_STAT
    SET ip = @uip,
        connectstat = 1,
        servername = @server,
        ConnectTM = (getdate())
    WHERE memb___id = @uid;
    UPDATE Character 
    SET MapNumber = '0', 
        MapPosX='130', 
        MapPosY='125' 
    WHERE AccountID = @uid AND MapNumber='30'; END 
    
    ELSE BEGIN
    INSERT INTO MEMB_STAT (memb___id, ip, connectstat, servername)
    VALUES (@uid,
            @uip,
            1,
            @server) END
    
    
    IF(@@Error <> 0)
        ROLLBACK TRANSACTION 
    ELSE
        COMMIT TRANSACTION
    SET NOCOUNT OFF END
    Criada a procedure WZ_CONNECT_MEMB, vamos recriar agora a procedure WZ_DISCONNECT_MEMB:
    Código:
    USE [MuOnline] GO
    SET ANSI_NULLS OFF GO
    SET QUOTED_IDENTIFIER ON GO
    CREATE PROCEDURE [dbo].[WZ_DISCONNECT_MEMB] 
    	@uid varchar(20) AS BEGIN BEGIN TRANSACTION
    SET NOCOUNT ON IF EXISTS
        (SELECT memb___id
         FROM MEMB_STAT WITH (READUNCOMMITTED)
         WHERE memb___id = @uid ) BEGIN
    UPDATE MEMB_STAT
    SET DisConnectTM = (getdate()),
        connectstat = 0
    WHERE memb___id = @uid END ELSE BEGIN
    INSERT INTO MEMB_STAT (memb___id, DisConnectTM, connectstat)
    VALUES (@uid,(getdate()),0) END
    
    
    IF(@@Error <> 0)
        ROLLBACK TRANSACTION 
    ELSE
        COMMIT TRANSACTION
    SET NOCOUNT OFF END
    Agora o ultimo passo é criar novamente a tabela MEMB_STAT:
    Código:
    USE [MuOnline]
    GO
    
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE TABLE [dbo].[MEMB_STAT](
    	[memb___id] [nvarchar](10) NOT NULL,
    	[ConnectStat] [tinyint] NULL,
    	[ServerName] [nvarchar](20) NULL,
    	[IP] [nvarchar](15) NULL,
    	[ConnectTM] [smalldatetime] NULL,
    	[DisConnectTM] [smalldatetime] NULL,
     CONSTRAINT [PK_MEMB_STAT] PRIMARY KEY CLUSTERED 
    (
    	[memb___id] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    GO
    
    ALTER TABLE [dbo].[MEMB_STAT] ADD  CONSTRAINT [DF_MEMB_STAT_ConnectTM]  DEFAULT (getdate()) FOR [ConnectTM]
    GO
    
    ALTER TABLE [dbo].[MEMB_STAT] ADD  CONSTRAINT [DF_MEMB_STAT_DisConnectTM]  DEFAULT (getdate()) FOR [DisConnectTM]
    GO
    Agora é só realizar seus testes, qualquer coisa, comenta seu resultado.


    Obs: Lembrando que WZ_CONNECT_MEMB e WZ_DISCONNECT_MEMB são PROCEDURES, não esqueça desse enorme detalhe.
    att's
    Last edited by s00x; 25/05/2020 at 04:29 PM.
    É melhor estar enganado, do que ser enganado.

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