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

Alpha Servers
Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 a 10 de 13
  1. #1

    Avatar de GuilhermeSouza
    Data de Ingresso
    Dec 2011
    Localização
    Casa
    Idade
    29
    Posts
    123
    Agradecido
    66
    Agradeceu
    33
    Peso da Avaliação
    14

    Padrão Fazendo Ranking de Guild semanal com premiação!

    Olá ImperyusGames!
    Irei ensinar à vocês como fazer um Ranking de Guild Semanal com premiação!
    Um tutorial muito procurado pelos Admin's de MuOnline..
    Procurei e pedi esta job durante 2 ANOS mas quem tinha não queria disponibilizar! Se eu não conseguisse por mim mesmo, ainda estaria procurando por aí..
    Mas como não sou igual a essas pessoas, estou postando aqui pra vocês ...

    Vamos lá,
    Primeiramente vamos rodar as querys abaixo para criar as tabelas necessárias:

    Código:
    use muonline 
    
    alter table Guild add score_semanal int NOT NULL default (0)
    alter table Guild add score_total int NOT NULL default (0)
    --------

    Lembrando: A partir daí, vocês terão que usar as colunas: score_semanal -> para scores semanais / score_total -> para scores total.
    Ambas colunas estão na tabela Guild.

    -------

    Agora vamos rodar a Trigger para que seja contabilizados os Scores:

    Código:
    CREATE TRIGGER [dbo].[RankingGuild]
    ON [dbo].[Guild]
    after update
    as
    
    IF UPDATE(g_score)
    begin SET NOCOUNT ON;
    Update [Guild] set [Guild].score_total=score_total+3,[Guild].score_semanal=score_semanal+3, g_score=0
    Where [Guild].g_name=(SELECT g_name FROM Inserted)
    and [Guild].g_name=(SELECT g_name FROM Inserted) and [Guild].g_score > 0
    end

    Agora vamos fazer o Script para aparecer o top 5 de guilds semanal no site:

    Código:
    <?
    $query = 'SELECT TOP 5 G_Name,G_Mark,score_semanal FROM MuOnline.dbo.Guild ORDER BY score_semanal DESC';
    $result = mssql_query($query);
    ?>
    <?
    for($i=0;$i < mssql_num_rows($result);++$i)
    {
    $row = mssql_fetch_row($result);
    
    $rank = $i+1;
    
    echo "
    <li><a href='?page=guild_info&name=$row[0]'><img src='gmark/gmark.class?m=".urlencode(bin2hex($row[1]))."'></a>
    <h1>$rank&ordm; Lugar</h1>
    <h2>Guild: <span>$row[0]</span></h2>
    <h3>( $row[2] ) Scores</h3>
                  </li>";
    			}
    ?>
    ------
    Baixe aqui o arquivo para aparecer as logos da guild no site: [Somente usuários registrados podem vem os links. ]
    Deixe o arquivo na pasta raíz da hospedagem.

    ------

    Agora vamos à premiação da Guild..
    Crie uma JOB para rodar todo sábado às 23:00h:

    Código:
    Declare @Guild varchar(10);
    Declare @Char varchar(10);
    Declare @Conta varchar(10);
    
    Declare @Premio int;
    Declare @G_Level int;
    
    
    Set @Guild = (Select top 1 G_Name from Guild order by score_semanal desc, G_name desc)
    
    IF (@Guild <> '')
    BEGIN
    
    DECLARE C CURSOR FOR SELECT Name,G_Level FROM GuildMember Where G_Name = @Guild Order By G_Level desc
    
    OPEN C
    FETCH NEXT FROM C INTO @Char,@G_Level
    
    WHILE @@FETCH_STATUS = 0
    BEGIN
    
    IF @G_Level = 1 -- G_Level = 1 (Guild Master)
    BEGIN
    SET @Premio = 20;
    END
    IF @G_Level = 0 -- G_Level = 0 (Membro)
    BEGIN
    SET @Premio = 10;
    END
    SET @Conta = '';
    SET @Conta = (Select AccountID From Character where Name = @Char)
    
    IF (@Conta <> '')
    BEGIN
    Update DT_SHOP_CREDITS set credits = credits + @Premio where login = @Conta
    END
    
    FETCH NEXT FROM C INTO @Char,@G_Level
    
    END
    
    CLOSE C
    DEALLOCATE C
    
    END
    -------------
    Aonde estiver em vermelho é a premiação em Golds/Cashs da guild.
    Entendam aqui:
    @Premio = 20; -- é a quantidade de golds/cashs que o guild master da guild irá ganhar.
    @Premio = 10; --- é a quantidade de golds/cashs que os membros da guild irão ganhar.

    * OBS: A JOB irá premiar somente a guild 1º colocada no ranking semanal, caso alguém consiga adaptá-la para premiar as 3 primeiras guilds, posta aí pra gente!

    * OBS 2: A JOB está programada para dar Golds/Cashs no shop DT, quem estiver usando outro Shop, é só modificar as tabelas e colunas que estão em cor azul.

    --------------

    Por fim, vamos criar a JOB para Zerar o Ranking Semanal de Guild:

    Código:
    update guild set score_semanal=0
    * OBS: Coloque a JOB para rodar todo sábado às 00:00h.

    ----------------

    Créditos do Tutorial, Script do Ranking de Guild e Trigger: Eu.
    Créditos do Script para aparecer a logo da Guild: Fabricionaweb.
    Créditos da JOB para premiar Guild: Originalmente postada pelo Prøjë¢T para premiar Castle Siege, e alterada por mim para premiar TOP Guild.

    -------------

    Acho que ajudei bastante né? Então clica em agradecer aí

  2. #2

    Avatar de sTreZ
    Data de Ingresso
    Feb 2010
    Localização
    Sampa
    Posts
    327
    Agradecido
    0
    Agradeceu
    0
    Peso da Avaliação
    19

    Padrão

    Essa como todas as outras que postaram é falha.

    Veja bem o que está sendo feito na sua trigger, a cada "update" no score da guild será acrescentado + 3, wtf?

  3. #3

    Avatar de GuilhermeSouza
    Data de Ingresso
    Dec 2011
    Localização
    Casa
    Idade
    29
    Posts
    123
    Agradecido
    66
    Agradeceu
    33
    Peso da Avaliação
    14

    Padrão

    @sTreZ,

    FALHA??? AUOEHAUIHEUAIOHEAUIOHEAI'

    Uso em meu servidor, funciona 100% , é só testar !!
    E esses 3 pontos que vai dar são os 3 scores que recebe da guild após War, aqueles segundos que tem pra ganhar scores no fim da war, são 3 scores mesmo por padrão ¬¬
    Mas isso você já deveria saber não é? ...

    E outra, se realmente estivesse falha (uma suposição, pois não está!), seu comentário foi dispensável, pois como sempre você não iria disponibilizar a trigger como não disponibilizou nas vezes que outros membros lhe pediram, lembra?

    Agora por favor, PARE de postar o que não sabe.

  4. #4


    Avatar de Litlle
    Data de Ingresso
    Jul 2010
    Localização
    Bh
    Idade
    33
    Posts
    233
    Agradecido
    229
    Agradeceu
    75
    Peso da Avaliação
    18

    Padrão

    @GuilhermeSouza

    Sim é falha. Todos os sistemas feitos para Mu Online utiliza a G_Score, Se qualquer update, tanto pra mais ou pra menos, vai somar +3 nessas colunas. Trigger desse tipo é uma gambiarra, mas deveria ser bem feita...


    Att,

  5. #5

    Avatar de FooFKnight
    Data de Ingresso
    Oct 2012
    Localização
    Goiania
    Idade
    29
    Posts
    113
    Agradecido
    1
    Peso da Avaliação
    13

    Padrão

    Olá,
    Mas realmente eu percebi utiliza a G_Score mais se no caso mudar ela ai na Trigger ?
    Ou então você pode estar Disponibilizando para agente ?
    Fortes são aqueles que transformam em luz o que é escuridão.

  6. #6



    Avatar de Prøjë¢T
    Data de Ingresso
    Jul 2010
    Localização
    Sao Jose do Rio Preto
    Posts
    1.134
    Agradecido
    105
    Agradeceu
    40
    Peso da Avaliação
    31

    Padrão

    Infelizmente apagaram a minha postagem.....(ACHEI QUE TIVESSEM APAGADO HAVIA SUMIDO AQUI.)

    De qualquer forma, parabens pela iniciativa Guilherme, não se deixe levar por criticas não construtivas pois elas vão sempre existir.

    Obrigado por compartilhar.
    Última edição por Prøjë¢T; 18-03-2013 às 06:27 PM.

  7. #7

    kaka está offline
    ☠ emissary of death ☠


    Avatar de kaka
    Data de Ingresso
    Jun 2011
    Localização
    Cuiaba - MT
    Posts
    621
    Agradecido
    69
    Agradeceu
    27
    Peso da Avaliação
    23

    Padrão

    Mensagem de moderação:

    peço aos Senhores que respeitem mais os topicos, e evitem brigas e desentendimento, e que a partir de agora as postagem aqui seja relacionada a suporte e ou duvida.
    sujeito a punição..
    Hidden Content

    o futuro me assusta, e o passado me assombra

  8. #8


    Avatar de dcvitoria
    Data de Ingresso
    Aug 2009
    Localização
    Maringá, PR
    Idade
    43
    Posts
    452
    Agradecido
    43
    Agradeceu
    25
    Peso da Avaliação
    20

    Padrão

    Bom, vamos fazer as coisas mais simples então...

    Criação do campo pra armazenar o ranking semanal
    Código:
    use muonline 
    
    alter table Guild add score_semanal int NOT NULL default (0)

    Criação da Trigger (que vai atualizar apenas o score semanal);

    Código:
    CREATE TRIGGER RankingSemanal
    ON Guild
    after update
    as
    
    IF UPDATE(g_score)
    begin SET NOCOUNT ON;
    update Guild set score_semanal=score_semanal+1 
    where g_name=(SELECT g_name FROM Inserted)
    and g_score > 0
    end

    Criando a Job, coloque o Schedule dela para domingo as 23:59:59, e coloque semanal.

    Aqui foi ctrl+c e ctrl+v do que estava no tópico, apenas coloquei mais uma informação ali embaixo no update, setando pra 0, o que não vai disparar a trigger novamente.

    Código:
    Declare @Guild varchar(10);
    Declare @Char varchar(10);
    Declare @Conta varchar(10);
    
    Declare @Premio int;
    Declare @G_Level int;
    
    
    Set @Guild = (Select top 1 G_Name from Guild order by score_semanal desc)
    
    IF (@Guild <> '')
    BEGIN
    
    DECLARE C CURSOR FOR SELECT Name,G_Level FROM GuildMember Where G_Name = @Guild Order By G_Level desc
    
    OPEN C
    FETCH NEXT FROM C INTO @Char,@G_Level
    
    WHILE @@FETCH_STATUS = 0
    BEGIN
    
    IF @G_Level = 1 -- G_Level = 1 (Guild Master)
    BEGIN
    SET @Premio = 20;
    END
    IF @G_Level = 0 -- G_Level = 0 (Membro)
    BEGIN
    SET @Premio = 10;
    END
    SET @Conta = '';
    SET @Conta = (Select AccountID From Character where Name = @Char)
    
    IF (@Conta <> '')
    BEGIN
    Update DT_SHOP_CREDITS set credits = credits + @Premio where login = @Conta
    END
    
    FETCH NEXT FROM C INTO @Char,@G_Level
    
    END
    
    CLOSE C
    DEALLOCATE C
    
    
    update Guild set score_semanal=0
    
    END
    Creio que acabam-se todos os problemas.

    O ruim de zerar a G_Score é que alguns sites e servidores personalizados podem usar essa pontuação pra algo. Da forma acima, fica simples de adaptar um ranking diário, mensal... sem mexer na estrutura já existente.

    PS: Não testei.
    Última edição por dcvitoria; 26-03-2013 às 12:23 AM.

  9. #9

    Avatar de GuilhermeSouza
    Data de Ingresso
    Dec 2011
    Localização
    Casa
    Idade
    29
    Posts
    123
    Agradecido
    66
    Agradeceu
    33
    Peso da Avaliação
    14

    Padrão

    Citação Postado originalmente por dcvitoria Ver Post
    Bom, vamos fazer as coisas mais simples então...

    Criação do campo pra armazenar o ranking semanal
    Código:
    use muonline 
    
    alter table Guild add score_semanal int NOT NULL default (0)

    Criação da Trigger (que vai atualizar apenas o score semanal);

    Código:
    CREATE TRIGGER RankingSemanal
    ON Guild
    after update
    as
    
    IF UPDATE(g_score)
    begin SET NOCOUNT ON;
    update Guild set score_semanal=score_semanal+1 
    where g_name=(SELECT g_name FROM Inserted)
    and g_score > 0
    end

    Criando a Job, coloque o Schedule dela para domingo as 23:59:59, e coloque semanal.

    Aqui foi ctrl+c e ctrl+v do que estava no tópico, apenas coloquei mais uma informação ali embaixo no update, setando pra 0, o que não vai disparar a trigger novamente.

    Código:
    Declare @Guild varchar(10);
    Declare @Char varchar(10);
    Declare @Conta varchar(10);
    
    Declare @Premio int;
    Declare @G_Level int;
    
    
    Set @Guild = (Select top 1 G_Name from Guild order by score_semanal desc)
    
    IF (@Guild <> '')
    BEGIN
    
    DECLARE C CURSOR FOR SELECT Name,G_Level FROM GuildMember Where G_Name = @Guild Order By G_Level desc
    
    OPEN C
    FETCH NEXT FROM C INTO @Char,@G_Level
    
    WHILE @@FETCH_STATUS = 0
    BEGIN
    
    IF @G_Level = 1 -- G_Level = 1 (Guild Master)
    BEGIN
    SET @Premio = 20;
    END
    IF @G_Level = 0 -- G_Level = 0 (Membro)
    BEGIN
    SET @Premio = 10;
    END
    SET @Conta = '';
    SET @Conta = (Select AccountID From Character where Name = @Char)
    
    IF (@Conta <> '')
    BEGIN
    Update DT_SHOP_CREDITS set credits = credits + @Premio where login = @Conta
    END
    
    FETCH NEXT FROM C INTO @Char,@G_Level
    
    END
    
    CLOSE C
    DEALLOCATE C
    
    
    update Guild set score_semanal=0
    
    END
    Creio que acabam-se todos os problemas.

    O ruim de zerar a G_Score é que alguns sites e servidores personalizados podem usar essa pontuação pra algo. Da forma acima, fica simples de adaptar um ranking diário, mensal... sem mexer na estrutura já existente.

    PS: Não testei.
    Primeiramente uma pergunta: Você testou a trigger que eu postei? Pois é, nem precisa responder que eu já vi que não!
    E essa trigger aí que você mandou só vai contar scores na coluna score_semanal , e a total como fica?

    @topic,
    Por favor, testem a trigger do post principal antes de postarem suas "críticas" ou "correções".

  10. #10

    Avatar de BeoWulf
    Data de Ingresso
    May 2011
    Localização
    Rio de Janeiro
    Idade
    33
    Posts
    290
    Agradecido
    260
    Agradeceu
    136
    Peso da Avaliação
    15

    Padrão

    O geral?
    Bom o geral quem faz o update é o muserver não a trigger, logo só precisa contabilizar +1 quando ocorrer atualização na mesma, ou seja, quando o próprio servidor fizer update na geral, a trigger insere na que você quer contar como mensal ou semanal seja lá o que for.
    Allahu Akbar

    الجميع سوف يموت هذا القرف !

    Acesse:
    Hidden Content
    Servidor Hard de Mu Online

 

 
Página 1 de 2 12 ÚltimoÚltimo

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| Ranking reset e MR Semanal EFFECT
    Por Stronda no fórum Jobs e Querys
    Respostas: 2
    Último Post: 05-08-2015, 01:20 AM
  2. |Dúvida| Ranking semanal por classes
    Por almeida no fórum Jobs e Querys
    Respostas: 1
    Último Post: 01-09-2014, 10:09 AM
  3. |Pedido| Premiação TOP Mensal/Semanal MuSite
    Por [ADM]Lp no fórum Pedidos
    Respostas: 9
    Último Post: 09-12-2013, 12:52 PM
  4. |Pedido| Job para premiar TOP Guild Semanal
    Por GuilhermeSouza no fórum Pedidos
    Respostas: 2
    Último Post: 14-03-2013, 08:59 AM
  5. |Pedido| Ranking semanal.
    Por wbrnet no fórum Pedidos
    Respostas: 6
    Último Post: 30-11-2010, 06:57 PM

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
  •