Crie essas colunas na table character com dtype int e allow nulls desmarcado, e default value 1:
ranksamana
rankmes
topsemana
topmes
Primeiro você tem que adicionar essas linhas na query do seu reset que deve estar em job, ou codada em uma dll se for in-game ou sei la do geito que você usa:
Código:
resets=resets+1,
ranksemana=ranksemana+1,
rankmes=rankmes+1,
Depois cria uma job para rodar essas querys de 7 em 7 dias para zerar o ranking semanal
Código:
UPDATE character
SET topsemana=topsemana+1
where ranksemana = (select top 1 ranksemana FROM character order by ranksemana desc)
UPDATE character
SET ranksemana=0
Agora cria outra job de 30 em 30 dias com essa query para zerar o rank mensal
Código:
UPDATE character
SET topmes=topmes+1
where rankmes = (select top 1 rankmes FROM character order by rankmes desc)
UPDATE character
SET rankmes=0
Agora você vai usar um script parecido com esse para rank mensal
Código:
<?
include("config.php");
$query = 'SELECT TOP 5 Name,Class,Resets,rankmes from Character order by rankmes desc, Resets 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';
}
echo "<tr>
<td valign=top align=center class=style1>$rank</td>
<td valign=top align=center class=style1>$row[0]</td>
<td valign=top align=center class=style1>$row[3]</td>
<td valign=top align=center class=style1>$row[1]</td>
</tr>";
}
?>
Pra mudar ele pra rank semana é só trocar
Código:
$query = 'SELECT TOP 5 Name,Class,Resets,rankmes from Character order by rankmes desc, Resets desc ';
por:
Código:
$query = 'SELECT TOP 5 Name,Class,Resets,ranksemana from Character order by ranksemana desc, Resets desc ';
E onde esta include("config.php"); você troca o config.php pelo nome do arquivo onde está a conexão com o sql.
E quanto ao ranking geral não tem logica voce colocar pra salvar em outra table de 5 em 5 minutos, porque o jogo necessita desses dados imediatos então ele salva imediatamente para ter um jogo "live", o ranking apenas lê essas informações que a principal finalidade é fornecer informação ao jogo, e não que essas informações sejam criadas para o ranking, então transferindo isso de uma table para a outra de 5 em 5 minutos só aumentaria o processamento.