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
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.
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:
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_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
Agora o ultimo passo é criar novamente a tabela MEMB_STAT: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 é só realizar seus testes, qualquer coisa, comenta seu resultado.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
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.