Olá Galera, achei esse tutorial em outro fórum ele é bem interessante caso alguém quira utilizar em seu servidor. Bom este tutorial lhe ensinará a criar uma job que premiará com um tipo de bonus em 'golds' para seu servidor. Codigo: declare @AccountID varchar (10) declare @Name varchar(10) declare @reset int declare @tempoonline int declare @ds int Select top 1 @AccountID=AccountID,@Name=Name,@reset=ResetCount from character order by ResetCount, clevel desc Update memb_info set gold=gold+5 where memb___id=@AccountID ----- Select top 1 @AccountID=AccountID,@Name=Name,@tempoonline=tempo online from character order by tempoonline desc, name desc Update memb_info set gold=gold+5 where memb___id=@AccountID ----- Select top 1 @AccountID=AccountID,@Name=CharacterName,@ds=Point from EVENT_INFO order by Point desc, CharacterName desc Update memb_info set gold=gold+5 where memb___id=@AccountID ------------------------------------------------------------------------- Crie uma Schedule para passar uma vez por semana para criar uma premiação semanal ou se preferir mensal. -------------------------------------------------------------------------- Entendendo o codigo: O codigo acima irá premiar o primeiro do Ranking do Devil Square, Resets e Tempo Online automaticamente com '5' Golds. Sendo que TempoOnline é uma coluna na Character que marca as horas online dos personagens, aqui na tem um trigger que faz este processo, podendo ser em minutos e horas, ,@tempoonline uma coluna virtual para ser passado o codigo, deve ser declarada acima. VEJA ABAIXO NESTE TOPICO O CODIGO DA TRIGGER DE TEMPOONLINE. Resets a coluna que determina o numero de resets é claro, @resets uma coluna virtual para ser passado o codigo, deve ser declarada acima. Point a coluna onde marca o numero de pontos na Event_info do Devil Square, @ds a coluna virtual para ser passado o codigo. Para adicionar mais uma premiação você precisará declarar acima uma coluna virtual e adicionar mais uma linha abaixo dando 'Select ...'. Digamos que quero premiar o jogador que obtem mais level na determinada hora e dia da semana ou mes marcada pela schedule e claro, veja como ficará: declare @AccountID varchar (10) declare @Name varchar(10) declare @reset int declare @tempoonline int declare @ds int declare @clevel int Select top 1 @AccountID=AccountID,@Name=Name,@reset=Resets from character order by Resets desc Update memb_info set gold=gold+5 where memb___id=@AccountID ----- Select top 1 @AccountID=AccountID,@Name=Name,@tempoonline=tempo online from character order by tempoonline desc Update memb_info set gold=gold+5 where memb___id=@AccountID ----- Select top 1 @AccountID=AccountID,@Name=CharacterName,@ds=Point from EVENT_INFO order by Point desc Update memb_info set gold=gold+5 where memb___id=@AccountID ----- Select top 1 @AccountID=AccountID,@Name=Name,@clevel=clevel from Character order by clevel desc Update memb_info set gold=gold+5 where memb___id=@clevel ------------------------------------------------------------------------- CODIGO PARA CRIAR TRIGGER DE (TEMPO ONLINE) OBTIDO AQUI NA RZBR: Adicionando Coluna Tempoonline em character: USE MuOnline ALTER TABLE Character ADD TempoOnline int DEFAULT (0) ------------------------------------------------------------------------- Dropando caso sua DB ja tiver esta Trigger: DROP TRIGGER MembStat_RecordOnlineHours ------------------------------------------------------------------------- Adicionando Trigger: CREATE TRIGGER [MembStat_RecordOnlineHours] ON dbo.MEMB_STAT AFTER UPDATE AS declare @memb___id varchar(10) declare @connectstat tinyint SELECT @memb___id=memb___id,@connectstat=connectstat FROM INSERTED IF (@connectstat = 0) BEGIN UPDATE [dbo].[Character] SET TempoOnline = TempoOnline + datediff(hour, (SELECT ConnectTM FROM MEMB_STAT WHERE memb___id= @memb___id), getdate()) WHERE Name = (SELECT GameIDC FROM AccountCharacter WHERE Id=@memb___id) END Nota: a Trigger acima irá atualizar tempoonline a cada uma hora online, pois assim está determinado no codigo como 'hour', para converter para minutos para colocar onde marquei de vermelho para 'minute' ------------------------------------------------------------------------- SIMPLES E FACIL, UTILIZO EM MEU SERVIDOR E EM SERVIDOR DE CLIENTES E FUNCIONA PERFEITAMENTE, CASO TIVER DUVIDAS OU EU TENHA ESQUECIDO DE ESCLAREÇER ALGUM DETALHE FAVOR POSTAR NESTE TOPICO. Creditos: Codigo para premiação: Jovjr Codigo de tempoonline: DouglasF
Última edição por hidy; 05-09-2011 às 10:55 AM.
Hidden Content Hidden Content
mukailand
Há 1 usuários navegando neste tópico. (0 registrados e 1 visitantes)
Regras do Fórum