Siga-nos em...
Follow us on Twitter Follow us on Facebook Watch us on YouTube
Registro

Alpha Servers
Resultados 1 a 10 de 14

Visão do Encadeamento

  1. #1



    Avatar de Renato
    Data de Ingresso
    Nov 2010
    Localização
    Imperyus
    Posts
    1.099
    Agradecido
    2520
    Agradeceu
    492
    Peso da Avaliação
    30

    Padrão Query para dar bônus VIP a todas as contas - MUSITE

    Tive a necessidade de dar bônus de vip a players do meu servidor, então fiz a query meio que as pressas...
    Tbm sei que não tem uma ferramenta que faz isso ainda, então vou liberar pra vocês.

    Que fique claro uma coisa: A QUERY FUNCIONA.

    Configurações do MEU SQL:

    VIPS estão na tabela MEMB_INFO
    Colunas PADRÕES, mas na MEMB_INFO, repito:

    VIP
    DateBegin
    DateEnd
    DateEndInteger

    Não me responsabilizo por uso incorreto.
    O script está todo comentado, se tiver um mínimo de conhecimento e paciência para ler, saberá como usar.

    É isso, bom proveito.

    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 @VIP_FOR_ACC_FREE int; -- NÃO MEXA AQUI
    DECLARE @LOGINS varchar(12); -- NÃO MEXA AQUI
    
    /************************************************/
    /*			INÍCIO DAS CONFIGURAÇÕES			*/
    /************************************************/
    
    
    /* DEFININDO DIAS DE VIP A SER DADO COMO BÔNUS */
    
    SET @BONUS_VIP = 2; -- DIAS DE VIP A SER DADO COMO BÔNUS
    
    /* DEFININDO TIPO DE VIP A SER DADO PARA CONTAS FREE*/
    
    SET @VIP_FOR_ACC_FREE = 2; -- TIPO DE VIP A SER DADO PARA CONTAS FREE
    
    
    /************************************************/
    /*				FIM DAS CONFIGURAÇÕES			*/
    /************************************************/
    
    /* DECLARANDO CURSOR DE CONTAS VIP */
    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
    
    
    /* 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, [VIP] = @VIP_FOR_ACC_FREE 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
    
    
    /* FIM DO SCRIPT */

    USA AS CONFIGURAÇÕES ORIGINAIS DO DALDEGAM (DB WEBSITE)?


    Código para quem usa a configuração padrão do daldegam, ISTO É:

    Código PHP:
    $TABLES_CONFIGS['WEBVIPS'] = array("database" => DATABASE//webSite || MuOnline 
                                       
    "table" => "webVips"//webVips || MEMB_INFO 
                                       
    "columnUsername" => "username"//username || memb___id 
                                       
    "columnType" => "type"//type || vip 
                                       
    "columnDateBegin" => "dateBegin",  
                                       
    "columnDateEnd" => "dateEnd"
                                       
    "columnDateEndInteger" => "dateEndInteger"); 
    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 @VIP_FOR_ACC_FREE int; -- NÃO MEXA AQUI
    DECLARE @LOGINS varchar(12); -- NÃO MEXA AQUI
    
    /************************************************/
    /*			INÍCIO DAS CONFIGURAÇÕES			*/
    /************************************************/
    
    
    /* DEFININDO DIAS DE VIP A SER DADO COMO BÔNUS */
    
    SET @BONUS_VIP = 2; -- DIAS DE VIP A SER DADO COMO BÔNUS
    
    /* DEFININDO TIPO DE VIP A SER DADO PARA CONTAS FREE*/
    
    SET @VIP_FOR_ACC_FREE = 2; -- TIPO DE VIP A SER DADO PARA CONTAS FREE
    
    
    /************************************************/
    /*				FIM DAS CONFIGURAÇÕES			*/
    /************************************************/
    
    /* DECLARANDO CURSOR DE CONTAS VIP */
    DECLARE C_VIP CURSOR FOR -- NÃO MEXA AQUI
    
    /* LISTANDO LOGINS VIP */
    SELECT username FROM [dbo].[webVips] WHERE type > 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].[webVips] WHERE	[username] = @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].[webVips] SET [dateEnd] = DATEDIFF(s, '19700101', GETDATE() + @VIP_TOTAL) WHERE	[username] = @LOGINS -- NÃO MEXA AQUI
    
    /* ATUALIZANDO DATA DE FIM DO VIP EM NÚMEROS INTEIROS */
    UPDATE [dbo].[webVips] SET [dateEndInteger] = [dateEndInteger]+@VIP_TOTAL WHERE [username] = @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
    
    
    /* DECLARANDO CURSOR DE CONTAS FREE */
    DECLARE C_FREE CURSOR FOR -- NÃO MEXA AQUI
    
    /* SELECIONANDO LOGINS DAS CONTAS FREE */
    SELECT username FROM [dbo].[webVips] WHERE type = 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].[webVips] SET [dateBegin] = DATEDIFF(s, '19700101', GETDATE()) WHERE	[username] = @LOGINS  -- NÃO MEXA AQUI
    
    /* ATUALIZANDO DATA DE FIM DO VIP */
    UPDATE [dbo].[webVips] SET [dateEnd] = DATEDIFF(s, '19700101', GETDATE() + @BONUS_VIP) WHERE [username] = @LOGINS -- NÃO MEXA AQUI
    
    /* ATUALIZANDO DATA DE FIM DO VIP EM NÚMEROS INTEIROS  E TORNANDO A CONTA VIP*/
    UPDATE [dbo].[webVips] SET [dateEndInteger] = @BONUS_VIP, [type] = @VIP_FOR_ACC_FREE WHERE [username] = @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
    
    /* FIM DO SCRIPT */
    Última edição por Renato; 09-02-2014 às 10:27 AM.

  2. Os Seguintes 3 Usuários Agradeceram você Renato Por este Post Útil:


 

 

Informações de Tópico

Usuários Navegando neste Tópico

Há 1 usuários navegando neste tópico. (0 registrados e 1 visitantes)

Tópicos Similares

  1. |Pedido| Query de Adicionar resets a todas as contas
    Por KaKaRoToX no fórum Jobs e Querys
    Respostas: 3
    Último Post: 30-11-2013, 02:21 AM
  2. |Pedido| Query , dar vip a todas as contas.
    Por Brunno13 no fórum Pedidos
    Respostas: 10
    Último Post: 27-11-2013, 12:42 PM
  3. |Pedido| Quey adiciona vip para todas as contas.
    Por mudestroyer no fórum Pedidos
    Respostas: 5
    Último Post: 22-02-2013, 03:15 PM
  4. |Resolvido| Query para premiar todas contas com VIP !
    Por MuImperio no fórum Tópicos Resolvidos
    Respostas: 0
    Último Post: 26-01-2013, 12:03 PM
  5. |Pedido| Query para deletar todas as guilds de um servidor
    Por StaticX no fórum Pedidos
    Respostas: 1
    Último Post: 26-07-2012, 11:59 AM

Marcadores

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •