Titulo irregular tente criar títulos mais claros e objetivos
O Próximo erro recebera infração!
Top Player Online alguém pode te informar eu mesmo não tenho :S TOP Duel Só é possível se o programador criou querys dentro do próprio Codigo fonte do GS para salvar os dados dos duelos no banco de dados.
Acredito eu que originalmente esses dados não são salvos =)
Última edição por Segredo; 13-11-2010 às 12:16 AM.
A obrigado, encontrei um top online que funciona corretamente, Bom se alguem estiver precisando e procurando esta aqui:
1º Passo:
Crie uma coluna na Table "Character" com os dados:
Código:
Nome da coluna: TempoOnline
Tipo da coluna: int
Default Value: 0 Ou simplesmente use o seguinte código no Query Analizer:
Código:
USE MuOnline
ALTER TABLE Character ADD TempoOnline int DEFAULT (0)
2º Passo:
Vá no Query Analizer e utilize o seguinte código:
Código:
DROP TRIGGER MembStat_RecordOnlineHoursLogo
após usar a query acima, limpe o query analizer e utilize a seguinte query:
Código:
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(minute, (SELECT ConnectTM FROM MEMB_STAT WHERE memb___id= @memb___id), getdate())
WHERE Name = (SELECT GameIDC FROM AccountCharacter WHERE Id=@memb___id)
END
Legenda:
minute = Altere esse valor pelo o que você quizer, se você quer que salve por horas altere esse valor em vermelho para hour
( Particularmente eu dechei minutes pois acho melhor.)
PHP:
Criei uma função que converte o tempo de Minutos para Horas,
Você deverá adicionar esse codigo no começo da sua pagina:
Código:
<?php
function Minutos2Horas($Mins) {
$Horas = floor($Mins / 60);
$Minutos = ($Mins - ($Horas * 60)) / 100;
$Sep = explode('.', $Horas + $Minutos);
if (strlen($Sep[1]) < 2) { $Sep[1] = $Sep[1] . 0; }
return sprintf('%02dhs e %02dmin', $Sep[0], $Sep[1]);
}
?>
( No site do Daldegam voce pode colocar ele em baixo da insercao dos scripts
que ficam no inicio do index.tpl.php da pasta de seu template. )
E onde deverá mostrar os minutos você adiciona o seguinte codigo:
Código:
<?php
print Minutos2Horas(Tempo);
?>
Onde Tempo = Tempo em minutos que será convertido. (A variavel que seleciona o tempo).
Créditos: DouglasF
Bom ate este ponto nosso companheiro DouglasF tinha feito para armazenar a informar e o calculo e a variavel para mostrar o total do tempo registrado ate então;
Porem precisamos montar o ranking colocar pra buscar a foto do personagem se nao tiver foto pegar a foto padrao tudo que um ranking precisa.
Bom agora vamos a parte que eu fiz no meu site.
Para quem vai montar de uma foto só segue o script:
Foto Fixa
$Q = @mssql_fetch_object(@mssql_query("SELECT TOP 1 Name,TempoOnline as Temp,Image FROM MuOnline.dbo.Character WHERE CtlCode<2 ORDER BY TempoOnline DESC,cLevel DESC,Name ASC"));
Esse Script de cima funcionou tranquilo, porem eu Fiz um mais complexo, onde eu posso definir as fotos de cada classe caso ele nao encontre a foto do personagem que o player faz o upload.
<h4 class="style1">Ranking Online</h4>
<div class="sidebox" >
<ul class="menu" aling="center">
<?
$query = 'SELECT TOP 5 Name,Class,cLevel,TempoOnline,Image from Character order by TempoOnline desc, cLevel desc ';
$result = mssql_query($query);?>
Bom esse ai Faz um select dos 5 primeiros do ranking do TempoOnline e joga no menu
com efeito de Marquee, tranzendo imagen nome e tempo online do Char, no caso eu coloquei um while pra ele pegar a classe do personagem e um for para fazer 5 vezes, aconselho se voce nao souber nada de programação nao mexer nisso rs.
Segue abaixo uma foto do Ranking no meu site: [Somente usuários registrados podem vem os links. ]
Lembrando que a adaptação foi feita no Template Darkstyle, mas qualquer outro template seria a mesma coisa.
E para finalizar Criei um uma Job com um Step semanal para dar X Golds ao vencedor
Segue a query abaixo:
Use MuOnline
declare @AccountID varchar (10)
declare @Name varchar(10)
declare @TempoOnline int
Select top 1 @AccountID=AccountID,@Name=Name,@TempoOnline=Tempo Online from character order by TempoOnline desc, name desc
Update memb_info set gold=gold+30 where memb___id=@AccountID
Update character set TempoOnline=0
Obs: Isso pra quem utiliza as tabelas do site na propria MuOnline, pra quem utiliza na propria WebSite, ficaria assim:
Use MuOnline
declare @AccountID varchar (10)
declare @Name varchar(10)
declare @TempoOnline int
Select top 1 @AccountID=AccountID,@Name=Name,@TempoOnline=Tempo Online from character order by TempoOnline desc, name desc
Update character set TempoOnline=0
Use WebSite
Update webcash set amount=amount+30 where name=@AccountID
Bom é isso Galera, se aguem tiver alguma duvida, ou melhor ainda uma sugestao ou trazendo uma melhoria esempre bem vindo, e se errei ou infringi alguma regra do forum
peço desculpas, Abraços!
Creditos:
DouglasF < Criaçao do Script para o Ranking >
DouglaSDeV <Adaptação e desenvolvimento do Ranking >
Bom acho que qualquer um consegue usar esta bem explicado.
E com as explicações dadas acima e com a resolução da parte possivel do pedido acho que pode ser fechado o topico para evitar flood ^^
Marcadores