[Query/Job] Ranking diário, semanal e mensal [Funciona MuEmu]

SrxMorte

O mais lindo
Honrado XPZ
17 de Julho de 2009
756
840
93
23
#1
Olá, a alguns minutos atrás estava com problemas nos rankings diário, semanal e mensal que não contabilizavam devido ao gameserver só registrar na coluna ResetCount. Eu utilizo MuEmu da X-team, mais serve para qualquer Mu que só contabiliza na reset, basta alterar ao seu gosto.

Primeiramente crie uma JOB para rodar a cada 20 minutos com o código :
Código:
 use MuOnline
 UPDATE character SET resetsDay = ResetCount, resetsWeek = resetCount, resetsMonth = resetCount
Ela irá copiar a ResetCount para as outras colunas. [A ResetCount é a coluna reset do meu servidor].

Depois você irá criar mais 3 JOBS para resetarem os rankings no final do dia, semana e mês.

A primeira job a criar será:
Código:
use MuOnline
Update Character
 SET [resetsDay] = 0
Essa você colocará para rodar no final do dia todos os dias.


A segunda job a criar será:
Código:
use MuOnline
Update Character
 SET [resetsWeek] = 0
Essa você colocará para rodar todo domingo 23:59.


A terceira job a criar será:
Código:
use MuOnline
Update Character
 SET [resetsMonth] = 0
Essa você colocará para rodar todo final do mês as 23:59.


Então é isso, seu ranking irá funcionar normalmente, não vou ensinar como criar job, isso é algo básico.

Essas querys podem ser reaproveitadas para outras funções, é algo muito útil para usuários da EffectWeb já que o sistema de cronjobs não serve para praticamente nada nela.






 
11 de Outubro de 2013
80
23
8
45
www.musavage.net
#3
Essa job não está funcionando como deveria!!
Ela está lançando os rankings (diario, semanal, mensal) = a ResetCount não importa se você zerar os rankings (diarios, semanais e mensais)
automáticamente eles voltam a ser = ao ranking principal pq estão copiando a resetcount.
 
Curtidas: SrxMorte

SrxMorte

O mais lindo
Honrado XPZ
17 de Julho de 2009
756
840
93
23
#4
Essa job não está funcionando como deveria!!
Ela está lançando os rankings (diario, semanal, mensal) = a ResetCount não importa se você zerar os rankings (diarios, semanais e mensais)
automáticamente eles voltam a ser = ao ranking principal pq estão copiando a resetcount.
Amigo, você está totalmente errado. No muserver que utilizei a coluna resets é chamada ResetCount, ela não é uma segunda coluna. Reveja o código e adapte de sua forma.
 
11 de Outubro de 2013
80
23
8
45
www.musavage.net
#7
Não fiz o teste, mas vendo pela logica não da certo pq ao final do dia ao resetar o resetsday, nos proximos 20 min será copiado o valor total de resetcount que se for 500, será copiado 500... é oque eu acho pelo menos.


É exatamente isso que está acontecendo.
Snap 2017-03-27 at 16.31.52.png

Aqui está ativado somente o top diário, olha só como fica^^
 
Última edição:
4 de Julho de 2016
18
1
3
#9
Valeu a tentativa, mas realmente não está muito certo. Você tem que criar uma coisa chamada "Trigger" , vou estar compartilhando com vocês.

USE [MuOnline]
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'ResetRank' AND type = 'TR')
DROP TRIGGER ResetRank
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TRIGGER [dbo].[ResetRank]
ON [dbo].[Character]

AFTER UPDATE
AS

IF UPDATE(ResetCount)
BEGIN SET NOCOUNT ON;
UPDATE [Character] set [Character].ResetDay=ResetDay+1, ResetWek=ResetWek+1, ResetMon=ResetMon+1
Where [Character].accountid=(SELECT accountid FROM Inserted)
and [Character].name=(SELECT name FROM Inserted)

END

Tentem isso, dei uma editada para contar os três em uma só trigger. Confiram tão somente se suas tabelas são as que estão ai: ResetCount, ResetDay, ResetWek e ResetMon. Se for, podem rodar tranquilos. Depois disso, as únicas jobs que irão criar serão para zerar os Ranks, podem ser as mesmas que o autor do tópico citou.
Caso dê errado e queiram tirar o trigger, usem :


USE [MuOnline]
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'ResetRank' AND type = 'TR')
DROP TRIGGER ResetRank
GO
 
Última edição: