"Cadastre-se e Ganhe"


◘ 15 dias de VIP✔
Sevidor Com Reconect Automático, auto attack: /attack - auto (off)
reset: /reset auto (off)- auto pt: /re auto

¸.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.•` ¤ © MU Lex Season 8.3
☛ www.mulex.net ®
Viva seu mundo, jogue o nosso!
█║▌│█│║▌║││█║▌▌║ ║▌ ││║



domingo, 8 de setembro de 2013

Query para dar bônus VIP a todas as contas - Mu Online

Configurações do SQL:
 VIPS estão na tabela MEMB_INFO
Colunas PADRÕES, mas na MEMB_INFO.

VIP DateBegin
DateEnd
DateEndInteger

O script está todo comentado, se tiver um mínimo de conhecimento e paciência para ler, saberá como usar. Código:


-- SCRIPT CRIADO POR
-- RENATO VALER
-- 19/11/2012
-- 01:00 AM

/* DECLARANDO VARIÁVEIS */

DECLARE @TEMPO_VIP int; -- NÃO MEXA AQUI
DECLARE @VIP_TOTAL int; -- NÃO MEXA AQUI
DECLARE @BONUS_VIP int; -- NÃO MEXA AQUI
DECLARE @LOGINS varchar(12); -- NÃO MEXA AQUI


/* DEFININDO DIAS DE VIP A SER DADO COMO BÔNUS */

SET @BONUS_VIP = 2; -- VALOR DE VIP A SER DADO COMO BÔNUS

/* DECLARANDO CURSOR DE CONTAS FREE */
DECLARE C_FREE CURSOR FOR -- NÃO MEXA AQUI

/* SELECIONANDO LOGINS DAS CONTAS FREE */
SELECT memb___id FROM [dbo].[Memb_Info] WHERE VIP = 0 -- NÃO MEXA AQUI

/* INICIANDO CURSOR DE CONTAS FREE */
OPEN C_FREE; -- NÃO MEXA AQUI
FETCH NEXT FROM C_FREE INTO @LOGINS -- NÃO MEXA AQUI
WHILE(@@FETCH_STATUS = 0)BEGIN -- NÃO MEXA AQUI

/* ATUALIZANDO DATA DE INÍCIO DO VIP */
UPDATE [dbo].[MEMB_INFO] SET [dateBegin] = DATEDIFF(s, '19700101', GETDATE()) WHERE [memb___id] = @LOGINS  -- NÃO MEXA AQUI

/* ATUALIZANDO DATA DE FIM DO VIP */
UPDATE [dbo].[MEMB_INFO] SET [dateEnd] = DATEDIFF(s, '19700101', GETDATE() + @BONUS_VIP) WHERE [memb___id] = @LOGINS -- NÃO MEXA AQUI

/* ATUALIZANDO DATA DE FIM DO VIP EM NÚMEROS INTEIROS */
UPDATE [dbo].[MEMB_INFO] SET [dateEndInteger] = @BONUS_VIP WHERE [memb___id] = @LOGINS -- NÃO MEXA AQUI

/* FINALIZANDO CURSOR DE CONTAS FREE */
FETCH NEXT FROM C_FREE INTO @LOGINS; -- NÃO MEXA AQUI
END; -- NÃO MEXA AQUI
CLOSE C_FREE; -- NÃO MEXA AQUI
DEALLOCATE C_FREE; -- NÃO MEXA AQUI


DECLARE C_VIP CURSOR FOR -- NÃO MEXA AQUI

/* LISTANDO LOGINS VIP */
SELECT memb___id FROM [dbo].[Memb_Info] WHERE VIP > 0 -- NÃO MEXA AQUI

OPEN C_VIP; -- NÃO MEXA AQUI
FETCH NEXT FROM C_VIP INTO @LOGINS -- NÃO MEXA AQUI
WHILE(@@FETCH_STATUS = 0)BEGIN -- NÃO MEXA AQUI

/* SELECIONANDO TEMPO VIP RESTANTE DE CADA LOGIN */
SET @TEMPO_VIP = (SELECT DATEDIFF(day, GETDATE(), DATEADD(s, CAST([dateend] as int), '19700101'))  -- NÃO MEXA AQUI
as [diasRestantes] FROM [dbo].[MEMB_INFO] WHERE [memb___id] = @LOGINS); -- NÃO MEXA AQUI

/* EXECUTANDO CÁLCULO */
SET @VIP_TOTAL = @TEMPO_VIP+@BONUS_VIP; -- NÃO MEXA AQUI

/* ATUALIZANDO DATA DE FIM DO VIP */
UPDATE [dbo].[MEMB_INFO] SET [dateEnd] = DATEDIFF(s, '19700101', GETDATE() + @VIP_TOTAL) WHERE [memb___id] = @LOGINS -- NÃO MEXA AQUI

/* ATUALIZANDO DATA DE FIM DO VIP EM NÚMEROS INTEIROS */
UPDATE [dbo].[MEMB_INFO] SET [dateEndInteger] = [dateEndInteger]+@VIP_TOTAL WHERE [memb___id] = @LOGINS -- NÃO MEXA AQUI

FETCH NEXT FROM C_VIP INTO @LOGINS; -- NÃO MEXA AQUI
END; -- NÃO MEXA AQUI
CLOSE C_VIP; -- NÃO MEXA AQUI
DEALLOCATE C_VIP; -- NÃO MEXA AQUI


/* FIM DO SCRIPT */


Nenhum comentário:

Postar um comentário