Estava vendo alguns servidores possuem um sistema em que o char ganha golds por tempo logado
queria saber se alguem tem uma job/trigger para fazer isso
e se tiver se tem como compartilhar
Versão Imprimível
Estava vendo alguns servidores possuem um sistema em que o char ganha golds por tempo logado
queria saber se alguem tem uma job/trigger para fazer isso
e se tiver se tem como compartilhar
Testa esse é um job coloca ele para execuatr em 1 em 1 hora
UPDATE memb_info SET gold = gold+3
FROM memb_info JOIN MEMB_STAT ON MEMB_INFO.AccountID = MEMB_STAT.memb___id COLLATE Latin1_general_CI_AI
WHERE (clevel>=0 and (ConnectStat = 1) and (OnlineHours = 1)
Testa ai man se Funcionar Avisa que tambem vou Testar!
Galera comigo funciona na Boa. Eu use a procedure abaixo.
Essa linha deverá ser alterada fazendo constar a sua coluna correto que deseja creditarCitação:
set ANSI_NULLS OFF
set QUOTED_IDENTIFIER ON
GO
ALTER 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
-- ePoint por ser VIP OURO (Desativado, quem manjar, manipule como desejar)
set dateformat dmy;
set language brazilian;
--IF EXISTS(SELECT memb___id FROM MEMB_VIP WITH (READUNCOMMITTED) WHERE convert(datetime,vip_vencimento) >= getdate() AND vip_on='1' AND vip_plano='1' AND memb___id = @uid )
--Begin
DECLARE @ept int;
select @ept = DATEPART(hh, getdate()-ConnectTM)*2 FROM MEMB_STAT WHERE memb___id = @uid;
UPDATE MEMB_INFO SET CSPoints=CSPoints+@ept WHERE memb___id = @uid;
--print N'HORAS: '+convert(nvarchar(10),@ept); esta dando 5
--End
--Else
--Begin
-- print N'SEM VIP';
--End
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
UPDATE MEMB_INFO SET CSPoints=CSPoints+@ept WHERE memb___id = @uid;
A linha abaixo deverá ser alterada fazendo constar a quantidade que deseja dar por hora online.
select @ept = DATEPART(hh, getdate()-ConnectTM)*2 FROM MEMB_STAT WHERE memb___id = @uid;
Espero ter ajudado. Ps: Eu uso e funciona muito bem comigo.
Mensagem de moderação: não é permitido uso de QUOTEs leia nos regras
by;kaka.
Até ontem isso estava funcionando comigo
Mais já hoje não está mais
E também nunca atualiza lá na MEMB_STAT a hr que entro e saiu
Rode essa Trigger para acumular os minutos online.....
Para dar Drop na tigger: DROP TRIGGER [MembStat_RecordOnlineHours]
Código PHP:
CREATE TRIGGER [MembStat_RecordOnlineHours] ON [dbo].[MEMB_STAT]
AFTER UPDATE
AS
DECLARE @memb___id varchar(10)
DECLARE @connectstat tinyint
DECLARE @char varchar(10)
DECLARE @horas int
DECLARE @CtlCode tinyint
SELECT @memb___id=memb___id,@connectstat=connectstat FROM INSERTED
IF (@connectstat = 0)
BEGIN
UPDATE [dbo].[MEMB_STAT]
SET OnlineHours = OnlineHours + datediff(minute, ConnectTM, getdate()),
OnlineHoursTroca = OnlineHoursTroca + datediff(minute, ConnectTM, getdate())
WHERE memb___id = @memb___id
SET @char = (SELECT GameIDC FROM MuOnline.dbo.AccountCharacter where Id = @memb___id)
SET @CtlCode = (SELECT CtlCode FROM MuOnline.dbo.Character where Name = @char)
SET @horas = (SELECT OnlineHours FROM MEMB_STAT WHERE memb___id = @memb___id)
IF (@CtlCode < 1)
BEGIN
UPDATE Muonline.dbo.MEMB_INFO
SET OnlineHoursTroca = OnlineHoursTroca+@horas
WHERE memb___id = @memb___id
DELETE FROM MEMB_STAT WHERE memb___id = @memb___id
END
END
E depois Crie uma Job para rodar de hora em hora para o seguinte comando..
Resumindo, eu darei 1 gold para cada 60 minutos online, onde o mesmo sera abatido no update... se eu tiver 75 minutos ganherei 1 gold e me restara 15 minutos para continuar contando.Código PHP:
UPDATE MEMB_INFO SET GOLD = GOLD + 1,OnlineHousTroca = OnlineHoursTroca - 60 WHERE OnlineHoursTroca > 59
Claro que isso é ajustavel ai fica a gosto do ADM....
Precisa ser criada as seguintes colunas...
MEMB_INFO : OnlineHoursTroca int 4 null desmarcado , default (0)
MEMB_STAT: OnlineHoursTroca int 4 null desmarcado, default (0)
Feito isso ele ficará premiando, a cada hora passada quem ja tiver atingido os minutos requeridos.....Espero que ajude, essa trigger faz parte de um sistema de Troca de horas, que esta disponivel Para download na Area VIP do forum
se voce ainda não é vip , nao perca tempo, tem muita coisa boa por la, sem dizer qeu no sistema, voce consegue dar opção de qtde de horas, quais os bonus etc.....
Abraços;
mais da golds no Musite v2 tem que mudar algo ae ?