Espera que o Leecher posta pra voces como faz.
Irei postar o ranking com foto e o com os nomes daqui é so adptar em vosso template!
Esse é o de Foto!
Código PHP:
<div class="contentBox">
<h2 class="noMargin">Personagens Destaque do Servidor:</h2>
<div class="contentBox2">
<div style="margin-bottom: 8px; margin-top: 10px; color:#CCCCCC;">
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="tops">
<tr>
<td align="center">Top M. Resets</td>
<td align="center">Top Resets</td>
<td align="center">Top Semanal</td>
<td align="center">Top Mensal</td>
<td align="center">Resets Diarios</td>
<td align="center">Top Assassino</td>
</tr>
<tr>
<td align="center" valign="middle"><?$Q = @mssql_fetch_object(@mssql_query("SELECT TOP 1 Name, MResets as Temp, Image FROM MuOnline.dbo.Character WHERE CtlCode<2 ORDER BY MResets DESC, Resets DESC, cLevel DESC, Name ASC"));if($Q != false) { $img = trim($Q->Image); if(file_exists("modules/uploads/photos/".$img) == false || empty($img) == true) $img = "no-photo.gif"; echo("<a href=\"?page=rankings&type=6&name=".urlencode($Q->Name)."\">".$Q->Name." <br />\n"); echo('<img src="modules/uploads/photos/'.$img.'" alt="" width="100" height="100" id="mouseover" style="border: 2px solid #222222;" /><br />'); echo(number_format((int)$Q->Temp, 0, null, ".")." Master Resets</a>");} else { echo("Nenhum Resultado");}?>
<td align="center" valign="middle"><?$Q = @mssql_fetch_object(@mssql_query("SELECT TOP 1 Name, Resets as Temp, Image FROM MuOnline.dbo.Character WHERE CtlCode<2 ORDER BY Resets DESC, cLevel DESC, Name ASC"));if($Q != false) { $img = trim($Q->Image); if(file_exists("modules/uploads/photos/".$img) == false || empty($img) == true) $img = "no-photo.gif"; echo("<a href=\"?page=rankings&type=6&name=".urlencode($Q->Name)."\">".$Q->Name." <br />\n"); echo('<img src="modules/uploads/photos/'.$img.'" alt="" width="100" height="100" id="mouseover" style="border: 2px solid #222222;" /><br />'); echo(number_format((int)$Q->Temp, 0, null, ".")." Resets</a>");} else { echo("Nenhum Resultado");}?></td>
<td align="center" valign="middle"><?$Q = @mssql_fetch_object(@mssql_query("SELECT TOP 1 Name, ResetsMonth as Temp, Image FROM MuOnline.dbo.Character WHERE CtlCode<2 ORDER BY ResetsMonth DESC, cLevel DESC, Name ASC"));if($Q != false) { $img = trim($Q->Image); if(file_exists("modules/uploads/photos/".$img) == false || empty($img) == true) $img = "no-photo.gif"; echo("<a href=\"?page=rankings&type=6&name=".urlencode($Q->Name)."\">".$Q->Name." <br />\n"); echo('<img src="modules/uploads/photos/'.$img.'" alt="" width="100" height="100" id="mouseover" style="border: 2px solid #222222;" /><br />'); echo(number_format((int)$Q->Temp, 0, null, ".")." Resets</a>");} else { echo("Nenhum Resultado");}?></td>
<td align="center" valign="middle"><?$Q = @mssql_fetch_object(@mssql_query("SELECT TOP 1 Name, ResetsWeek as Temp, Image FROM MuOnline.dbo.Character WHERE CtlCode<2 ORDER BY ResetsWeek DESC, cLevel DESC, Name ASC"));if($Q != false) { $img = trim($Q->Image); if(file_exists("modules/uploads/photos/".$img) == false || empty($img) == true) $img = "no-photo.gif"; echo("<a href=\"?page=rankings&type=6&name=".urlencode($Q->Name)."\">".$Q->Name." <br />\n"); echo('<img src="modules/uploads/photos/'.$img.'" alt="" width="100" height="100" id="mouseover" style="border: 2px solid #222222;" /><br />'); echo(number_format((int)$Q->Temp, 0, null, ".")." Resets</a>");} else { echo("Nenhum Resultado");}?></td>
<td align="center" valign="middle"><?$Q = @mssql_fetch_object(@mssql_query("SELECT TOP 1 Name, ResetsDay as Temp, Image FROM MuOnline.dbo.Character WHERE CtlCode<2 ORDER BY ResetsDay DESC, cLevel DESC, Name ASC"));if($Q != false) { $img = trim($Q->Image); if(file_exists("modules/uploads/photos/".$img) == false || empty($img) == true) $img = "no-photo.gif"; echo("<a href=\"?page=rankings&type=6&name=".urlencode($Q->Name)."\">".$Q->Name." <br />\n"); echo('<img src="modules/uploads/photos/'.$img.'" alt="" width="100" height="100" id="mouseover" style="border: 2px solid #222222;" /><br />'); echo(number_format((int)$Q->Temp, 0, null, ".")." Resets</a>");} else { echo("Nenhum Resultado");}?></td>
<td align="center" valign="middle"><?$Q = @mssql_fetch_object(@mssql_query("SELECT TOP 1 Name,PkCountWeb as Temp,Image FROM MuOnline.dbo.Character WHERE CtlCode<2 ORDER BY PkCountWeb DESC,cLevel DESC,Name ASC"));if($Q != false) { $img = trim($Q->Image); if(file_exists("modules/uploads/photos/".$img) == false || empty($img) == true) $img = "no-photo.gif"; echo("<a href=\"?page=rankings&type=6&name=".urlencode($Q->Name)."\">".$Q->Name." <br />\n"); echo('<img src="modules/uploads/photos/'.$img.'" alt="" width="100" height="100" id="mouseover" style="border: 2px solid #222222;" /><br />'); echo(number_format((int)$Q->Temp, 0, null, ".")." Mortes</a>");} else { echo("Nenhum Resultado");}?></td>
</tr>
</table>
</div>
</div>
</div>
Esse é o da listagen dos top 5 melhores!
Código PHP:
<div class="contentBox">
<h2 class="noMargin">Top 5 Melhores do Servidor</h2>
<div class="contentBox6">
<ul class="rank">
<li style="margin-left: 1px; width: 15%;"> <span>Master Resets</span>
<ul>
{#RANK_TOP_MASTER_RESETS_HOME}
<li style="text-align: right;"><a href="?page=rankings&type=5&top=10">[Ver ranking]</a></li>
</ul>
</li>
<li style="margin-left: 12px; width: 15%;"><span>Resets Totais</span>
<ul>
{#RANK_TOP_RESETS_HOME}
<li style="text-align: right;"><a href="?page=rankings&type=1&top=10&period=0">[Ver ranking]</a></li>
</ul>
</li>
<li style="margin-left: 12px; width: 15%;"><span>Resets Mensal</span>
<ul>
{#RANK_TOP_RESETS_MONTH_HOME}
<li style="text-align: right;"><a href="?page=rankings&type=1&top=10&period=2">[Ver ranking]</a></li>
</ul>
</li>
<li style="margin-left: 12px; width: 15%;"><span>Resets Semanal</span>
<ul>
{#RANK_TOP_RESETS_WEEK_HOME}
<li style="text-align: right;"><a href="?page=rankings&type=1&top=10&period=1">[Ver ranking]</a></li>
</ul>
</li>
<li style="margin-left: 12px; width: 15%;"><span>Resets Diarios</span>
<ul>
<? $Top = mssql_query("select top 5 name, resetsday from character where ctlcode=0 or ctlcode=null order by resetsday desc, clevel desc, Name ASC");
for($i=0;$i<mssql_num_rows($Top);$i++) {
$DadosTop = mssql_fetch_row($Top);
$rank = $i+1;
echo '<li><a href="?page=rankings&type=6&name='.$DadosTop[0].'">'.$DadosTop[0].'</a> - '.$DadosTop[1].'<br>'; } ?>
<li style="text-align: right;"><a href="?page=rankings&type=2&top=10">[Ver ranking]</a></li>
</ul>
</li>
<li style="margin-left: 12px; width: 15%;"><span>Assassinos</span>
<ul>
{#RANK_TOP_PK_HOME}
<li style="text-align: right;"><a href="?page=rankings&type=4&top=10">[Ver ranking]</a></li>
</ul>
</li>
</ul>
</div>
</div>
Para quem ainda nao viu o Ranking de Gens na index e um Ranking personalizado segue o link do topico abaixo:
[Somente usuários registrados podem vem os links. ]
E na postagen abaixo vo postar como criar o Ranking de Tempo Online Como nosso Grande amigo!!!!! Mr Fischer solicitou....
---------- Post adicionado em 08:55 PM ---------- post anterior foi em 08:51 PM ----------
Esse eu havia postado em outro forum, e me esqueci até de postar aqui, pelo tempo que se passou!
Mas vamos ao que interessa:
Tava querendo fazer o Ranking de tempo online, mas vi algumas difuculdades no site do daldegam, porem consegui, estou postando aqui como fiz pra quem quiser de exemplo para montar o seu ou fazer igual tamen.
Bom Vamos la:
Essa parte os Creditos sao de DouglasF.
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:
Código PHP:
<?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
<script type="text/javascript" src="templates/darkstyle/js/jquery.js"></script>
<script type="text/javascript" src="templates/darkstyle/js/jquery.tooltips.js"></script>
<script type="text/javascript" src="templates/darkstyle/js/functions.js"></script>
<script type="text/javascript" src="templates/darkstyle/js/ajax.js"></script>
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:
Código PHP:
<?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
Código PHP:
$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"));
if($Q != false) {
$img = trim($Q->Image);
if(file_exists("modules/uploads/photos/".$img) == false || empty($img) == true) $img = "no-photo.gif";
echo("<a href=\"?page=rankings&char=".urlencode($Q->Name)."\">".$Q->Name." <br />\n");
echo('<img src="modules/uploads/photos/'.$img.'" alt="" width="100" height="100" style="border: 2px solid #222222;" /><br />');
echo(number_format((int)$Q->Temp, 0, null, ".")." Tempo Online</a>");
} else {
echo("Nenhum Resultado");
}
?>
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.
Código PHP:
<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);?>
<?for($i=0;$i < mssql_num_rows($result);++$i)
{
$row = mssql_fetch_row($result);
$rank = $i+1;
if($row[1] == 0){ $row[1] = 'DW';
}
if($row[1] == 1){ $row[1] = 'SM';
}
if($row[1] == 16){ $row[1] = 'DK';
}
if($row[1] == 17){ $row[1] = 'BK';
}
if($row[1] == 32){ $row[1] = 'Elf';
}
if($row[1] == 33){ $row[1] = 'ME';
}
if($row[1] == 48){ $row[1] = 'MG';
}
if($row[1] == 64){ $row[1] = 'DL';
}
if($row[1] == 18){ $row[1] = 'BM';
}
if($row[1] == 65){ $row[1] = 'LE';
}
if($row[1] == 49){ $row[1] = 'DM';
}
if($row[1] == 2) { $row[1] = 'GM';
}
if($row[1] == 80) { $row[1] = 'SUM';
}
if($row[1] == 81) { $row[1] = 'BS';
}
if($row[1] == 82) { $row[1] = 'DMM';
}
if($row[1] == 34){ $row[1] = 'HE';
}
if($row[4] == "")
{
if ($row[1] == 'DW') { $row[4] = 'no-photo.gif'; } // Dark Wiza
if ($row[1] == 'SM') { $row[4] = 'no-photo.gif'; } // Soul Master
if ($row[1] == 'GM') { $row[4] = 'no-photo.gif'; } // Grand Master
if ($row[1] == 'DK') { $row[4] = 'no-photo.gif'; } // Dark Knight
if ($row[1] == 'BK') { $row[4] = 'no-photo.gif'; } // Blade Knight
if ($row[1] == 'BM') { $row[4] = 'no-photo.gif'; } // Blade Master
if ($row[1] == 'ELF') { $row[4] = 'no-photo.gif'; } // Elf
if ($row[1] == 'ME') { $row[4] = 'no-photo.gif'; } // Muse Elf
if ($row[1] == 'HE') { $row[4] = 'no-photo.gif'; } // High Elf
if ($row[1] == 'MG') { $row[4] = 'no-photo.gif'; } // Magic Gladiator
if ($row[1] == 'DM') { $row[4] = 'no-photo.gif'; } // Duel Master
if ($row[1] == 'DL') { $row[4] = 'no-photo.gif'; } // Dark Lord
if ($row[1] == 'LE') { $row[4] = 'no-photo.gif'; } // Lord Emperor
if ($row[1] == 'SUM') { $row[4] = 'no-photo.gif'; } // Summoner
if ($row[1] == 'BS') { $row[4] = 'no-photo.gif'; } // Blood Summoner
if ($row[1] == 'DMM') { $row[4] = 'no-photo.gif'; } // Dimension Master
}
if ($i == 0 ){
$posicao1 = $rank;
$tempo1 = $row[3];
$nome1 = $row[0];
$foto1 = $row[4]; }
if ($i == 1 ){
$posicao2 = $rank;
$tempo2 = $row[3];
$nome2 = $row[0];
$foto2 = $row[4]; }
if ($i == 2 ){
$posicao3 = $rank;
$tempo3 = $row[3];
$nome3 = $row[0];
$foto3 = $row[4]; }
if ($i == 3 ){
$posicao4 = $rank;
$tempo4 = $row[3];
$nome4 = $row[0];
$foto4 = $row[4]; }
if ($i == 4 ){
$posicao5 = $rank;
$tempo5 = $row[3];
$nome5 = $row[0];
$foto5 = $row[4]; }
}
?>
<marquee id="scroller" scrollamount="2" direction="up" style="width:100%; height:150px">
<center><font color="#FFFF00">1°<?=$nome1?></font></center>
<center><font color="#ADFF2F"><?php print Minutos2Horas($tempo1); ?></font></center>
<center><img src="modules/uploads/photos/<?=$foto1?>" width="140" height="100"></center><br><br>
<center><font color="#FFFF00">2°<?=$nome2?></font></center>
<center><font color="#ADFF2F"><?php print Minutos2Horas($tempo2); ?></font></center>
<center><img src="modules/uploads/photos/<?=$foto2?>" width="140" height="100"></center><br><br>
<center><font color="#FFFF00">3°<?=$nome3?></font></center>
<center><font color="#ADFF2F"><?php print Minutos2Horas($tempo3); ?></font></center>
<center><img src="modules/uploads/photos/<?=$foto3?>" width="140" height="100"></center><br><br>
<center><font color="#FFFF00">4°<?=$nome4?></font></center>
<center><font color="#ADFF2F"><?php print Minutos2Horas($tempo4); ?></font></center>
<center><img src="modules/uploads/photos/<?=$foto4?>" width="140" height="100"></center><br><br>
<center><font color="#FFFF00">5°<?=$nome5?></font></center>
<center><font color="#ADFF2F"><?php print Minutos2Horas($tempo5); ?></font></center>
<center><img src="modules/uploads/photos/<?=$foto5?>" width="140" height="100"></center><br><br>
</marquee>
</ul>
</div>
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:
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 >
Daldegam <criação da Web >
Denis Lins < Template Darkstyle >