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 
    766
    Thanked in
    124 Posts
    Mencionado
    80 Post(s)
    MEU HUMOR
    Tired

    Lightbulb Desconectar conta MuSite

    Boa noite a todos, então galera estou com um problema no meu servidor que é o seguinte:

    As vezes as contas ficam presas!

    Como assim ficam presas? Elas "deslogam" do GameServer, mas ficam conectadas no JoinServer, impedindo os usuários de conectar novamente.

    Com isso eu lembrei que o MuSite por padrão tem uma opção de desconectar conta logada, e resolvi testar essa função.

    Porém, ela realmente desconecta contas logadas, tanto no GS como no GS_CS, mas quando a conta está "presa" o site dá a mensagem que desconectou, mas não desconecta de verdade.. O player continua sem conseguir logar.

    Quando uma conta fica presa, pra eu liberar eu preciso fazer manualmente no JoinServer, e se eu der esse disconnect em alguém, a pessoa recebe uma mensagem na tela, mensagem que também é recebida através dessa ferramente do MuSite.

    Aparentemente é a mesma função, mas algo não funciona direito.

    Alguém tem uma solução?

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

    Data de Ingresso
    Jan 2015
    Posts
    373
    Thanks Thanks Given 
    75
    Thanks Thanks Received 
    146
    Thanked in
    24 Posts
    Mencionado
    63 Post(s)
    MEU HUMOR
    Cheerful
    País
    United States
    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
    É melhor estar enganado, do que ser enganado.

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


    Data de Ingresso
    Sep 2015
    Posts
    692
    Thanks Thanks Given 
    206
    Thanks Thanks Received 
    766
    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.

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

    Data de Ingresso
    Jan 2015
    Posts
    373
    Thanks Thanks Given 
    75
    Thanks Thanks Received 
    146
    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.

  5. #5
    Membro cronusmaker's Avatar
    Data de Ingresso
    May 2015
    Posts
    473
    Thanks Thanks Given 
    5
    Thanks Thanks Received 
    11
    Thanked in
    9 Posts
    Mencionado
    13 Post(s)
    MEU HUMOR
    Buzzed
    País
    Brazil
    não e nas produceres a porta do joinserver tem que estar aberta e algumas funções so funciona se o mu chat server estiver ligado e conectado a porta do joinserver
    [CENTER]

  6. #6
    Membro allam's Avatar
    Data de Ingresso
    Sep 2019
    Posts
    18
    Thanks Thanks Given 
    6
    Thanks Thanks Received 
    4
    Thanked in
    3 Posts
    Mencionado
    0 Post(s)
    País
    Brazil
    Minha Opinião

    TAAH BUGADO .


    [ Ja tive esse problema ]
    Refiz as procedures, deletei a tabela Memb_Stat e refiz a mesma
    Resolveu o meu caso .



    [ Conta Presa ]
    Fator diretamente ligado a fonte de dados ODBC, verifique..

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