PDA

View Full Version : |Pedido| Query Premiar uma guilda inteira no Top Mensal



Schimidt
28/02/2018, 09:10 PM
Olá, alguém poderia me ajudar com uma duvida cruel?!

O Score da minha Guida Zera todo mês, queria fazer com que todos os membros dela ganhassem vip

Todo dia 1 roda essa simples query:

UPDATE Guild SET G_Score = 0

Queria colocar vip para todos os membros da guild que tiver + score
Atualmente faço isso manualmente, porém nao é sempre que tenho tempo pra fazer isso. mesmo que seja apenas 1x por mês

Obrigado desde já.

russo1
28/02/2018, 09:52 PM
Conheço essa query pra premiar a guild, você pode fazer adaptações..



[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]

[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]

DECLARE C_GUILD CURSOR FOR (SELECT Name, G_Level FROM GuildMember
[Only registered and activated users can see links]

OPEN C_GUILD;
[Only registered and activated users can see links]
[Only registered and activated users can see links]

[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
UPDATE MEMB_INFO
SET Gold = Gold + 50
[Only registered and activated users can see links]
END
ELSE BEGIN
[Only registered and activated users can see links]
UPDATE MEMB_INFO
SET Gold = Gold + 30
[Only registered and activated users can see links]
END
ELSE BEGIN
UPDATE MEMB_INFO
SET Gold = Gold + 40
[Only registered and activated users can see links]
END;
END;
[Only registered and activated users can see links]
END;
END;
[Only registered and activated users can see links]
END;
CLOSE C_GUILD;
DEALLOCATE C_GUILD;
GO



Onde esta NOME DA GUILD Coloque o nome da guild que vai receber os golds
Onde esta 'SET Gold = Gold + 50 ' = Quantidade de Golds que o Guild Master vai ganhar.
Onde esta 'SET Gold = Gold + 40 '= Quantidade de Golds que Assistente e Battle Master vai ganhar.
Onde esta 'SET Gold = Gold + 30 '= Quantidade de Golds que os Membros vão ganhar.
Onde esta ''Gold'' mude para sua tabela de Gold ou Cash dependendo de qual moeda você vai dar, altere de acordo com seu servidor.

Bacon
01/03/2018, 11:58 PM
@Schimidt ([Only registered and activated users can see links])
Tenho mais Afinidade com MySQL, mas creio que algo simples assim não seja tão diferente... então vou mandar aqui algo que talvez funcione, testa pra gente e avisa o que rolou :D

Bom, pra começar precisamos saber qual database você usa, pois os sistemas de VIP mudam conforme a database.. Mas, pra selecionar todos os logins que estão em uma guild com score acima de 'X' é mais ou menos isto:



[Only registered and activated users can see links]
[Only registered and activated users can see links]

SELECT
c.AccountID
FROM
dbo.Character c
JOIN dbo.GuildMember gm ON (gm.Name = c.Name)
JOIN dbo.Guild g ON (g.G_Name = gm.G_Name)
WHERE
[Only registered and activated users can see links]
GROUP BY
c.AccountID


Com este select, é só usar dentro de um UPDATE pra colocar o vip, por exemplo:



[Only registered and activated users can see links]
[Only registered and activated users can see links]


UPDATE MEMB_INFO SET AccountLevel = '1'
WHERE memb___id IN (
-- SELECT la de cima --
SELECT
c.AccountID
FROM
dbo.Character c
JOIN dbo.GuildMember gm ON (gm.Name = c.Name)
JOIN dbo.Guild g ON (g.G_Name = gm.G_Name)
WHERE
[Only registered and activated users can see links]
GROUP BY
c.AccountID
-- Fim do SELECT la de cima --
);


Porem se quiser que eu ajude com isto tambem é só dizer qual database está usando.. abraços

Schimidt
02/03/2018, 02:44 AM
Bacon

Obrigado pelo interesse em ajudar,
deu pra entender mais ou menos, SQL nao é meu forte rs

Database = MuOnline
Vip =MEMB_INFO
Coluna: Vip

Só quero que Seta o tipo de Vip, pois o GS nao ler os dias, apenas o site,
eu quero uma cois na verdade bem + avançada

Tipo. vai ser uma sala VIP

Todo dia primeiro quero add o Vip pra melhor guilda e remover de todos, entendeu ?

Estou estudando um pouco sobre SQL, mas se poder me da essa força eu agradeço muito mano.

Bacon
02/03/2018, 10:59 AM
Entendi... Quanto a retirar o vip dos membros da guild vencedora anterior seria um pouco mais complexo, pois temos que considerar que podem ter comprado o vip, ou 'N' outras coisas... Alem disso, teria que criar uma nova tabela pra registrar as guilds vencedoras de cada mês, pra então tirar o vip da guild anterior..
Mas pra adicionar o vip pra nova guild seria isso:




[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]


[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]


[Only registered and activated users can see links]
[Only registered and activated users can see links]
-- SELECT da Guild --
SELECT
c.AccountID
FROM
dbo.Character c
JOIN dbo.GuildMember gm ON (gm.Name = c.Name)
JOIN dbo.Guild g ON (g.G_Name = gm.G_Name)
WHERE
g.G_Name = (SELECT TOP 1 G_Name FROM dbo.Guild ORDER BY G_Score DESC) -- Select da guild com mais Score
GROUP BY
c.AccountID
-- Fim do SELECT da Guild --
);'
[Only registered and activated users can see links]