Mam problem z poprawnym działaniem kodu. Poniżej jest cały kod pliku stat.php odpowiadajacego za przelicznie punktów.
<?php
$ugamela_root_path = './';
include($ugamela_root_path . 'extension.inc');
include($ugamela_root_path . 'common.'.$phpEx);
if(!check_user
()){ header("Location: login.php"); die();}
includeLang('stat');
$dpath = (!$user["dpath"]) ? DEFAULT_SKINPATH : $user["dpath"];
$parse = $lang;
$who = (isset($_POST["who"]))?
$_POST["who"]:$_GET["who"]; $type = (isset($_POST["type"]))?
$_POST["type"]:$_GET["type"]; $start = (isset($_POST["start"]))?
$_POST["start"]:$_GET["start"]; //
// Formulario donde se muestran los diferentes tipos de categoria
// y los rangos
//
$parse['who'] = '
(($who == "player") ? " SELECTED" : "").'>Gracz
(($who == "ally") ? " SELECTED" : "").'>Sojusz';
$parse['type'] = '
(($type == "pts") ? " SELECTED" : "").'>Punkty
(($type == "flt") ? " SELECTED" : "").'>Floty
(($type == "res") ? " SELECTED" : "").'>Badania';
$parse['start'] = '
(($start == "1") ? " SELECTED" : "").'>1-100
(($start == "101") ? " SELECTED" : "").'>101-200
(($start == "201") ? " SELECTED" : "").'>201-300
(($start == "301") ? " SELECTED" : "").'>301-400
(($start == "401") ? " SELECTED" : "").'>401-500
(($start == "501") ? " SELECTED" : "").'>501-600
(($start == "601") ? " SELECTED" : "").'>601-700
(($start == "701") ? " SELECTED" : "").'>701-800
(($start == "801") ? " SELECTED" : "").'>801-900
(($start == "901") ? " SELECTED" : "").'>901-1000
(($start == "1001") ? " SELECTED" : "").'>1001-1100
(($start == "1101") ? " SELECTED" : "").'>1101-1200
(($start == "1201") ? " SELECTED" : "").'>1201-1300
(($start == "1301") ? " SELECTED" : "").'>1301-1400
(($start == "1401") ? " SELECTED" : "").'>1401-1500';
//
// Parece que fuera ayer, que solo el juego era una fachada.
// Bueno, Here we go!
//
if($who == "ally"){
$parse['body_table'] = parsetemplate(gettemplate('stat_alliancetable_header'), $parse);
//pequeďż˝ fix para prevenir desastres
//pequeĂąa condicion
$start = floor($start / 100
% 100
)*100; //Realizamos la quiery en la table de jugadores
$query = doquery('SELECT * FROM {{table}} ORDER BY ally_points DESC LIMIT '.($start).',100','alliance');
$start++;
$parse['body_values'] = '';//en caso de que no hubieran datos...
$parse['data'] = $game_config['stats'];
$parse['ally_rank'] = $start;
$parse['ally_rankplus'] = '*';
$parse['ally_name'] = ''.$row['ally_name'].''; $parse['ally_mes'] = '';
$parse['ally_members'] = $row['ally_members'];
if($type == "res"){
$ally_points = $row['ally_points_tech'];
}elseif($type == "flt"){
$ally_points = $row['ally_points_fleet'];
}else{
$ally_points = floor($row['ally_points']/1000
); }
$parse['ally_points'] = pretty_number($ally_points);
$parse['ally_members_points'] = @floor($ally_points/$row['ally_members']); $parse['body_values'] .= parsetemplate(gettemplate('stat_alliancetable'), $parse);
$start++;
}
}
else{
$parse['body_table'] = parsetemplate(gettemplate('stat_playertable_header'), $parse);
//pequeďż˝ fix para prevenir desastres
//pequeĂąa condicion
$start = floor($start / 100
% 100
)*100; //Realizamos la quiery en la table de jugadores
if($type == "res"){
$query = doquery('SELECT * FROM {{table}} ORDER BY points_tech DESC LIMIT '.$start.',100','users');
}elseif($type == "flt"){
$query = doquery('SELECT * FROM {{table}} ORDER BY points_fleet DESC LIMIT '.$start.',100','users');
}else{
$query = doquery('SELECT * FROM {{table}} ORDER BY points_points DESC LIMIT '.$start.',100','users');
}
$start++;
$parse['data'] = $game_config['stats'];
$parse['body_values'] = '';//en caso de que no hubieran datos...
$playername_rank = $row['username'];
$rank_old = $row['rank_old'];
// $query_rank = doquery("UPDATE {{table}} SET `rank_old`='{$rank_old}' WHERE `username` = '{$playername_rank}'" ,"users");
$parse['player_rank'] = $start;
$rank_new = $start;
$ranking = $rank_old - $rank_new;
if ($ranking == "0")
{
$parse['player_rankplus'] = "0";
}
if ($ranking < "0")
{
$parse['player_rankplus'] = "$ranking";
}
if ($ranking > "0")
{
$parse['player_rankplus'] = "+$ranking";
}
// $query_rank = doquery("UPDATE {{table}} SET `rank`='{$start}' WHERE `username` = '{$playername_rank}'" ,"users");
//$parse['player_rankplus'] = '*';
$parse['player_name'] = $row['username'];
$parse['player_mes'] = '<a href="messages.php?mode=write&id='.$row['id'].'">
<imgsrc="'.$dpath.'img/m.gif" border="0" alt="Napisz Wiadomość" /></a>';
$parse['player_alliance'] = $row['ally_name'];
if($type == "res"){
$parse['player_points'] = pretty_number($row['points_tech']);
}elseif($type == "flt"){
$parse['player_points'] = pretty_number($row['points_fleet']);
}else{
$parse['player_points'] = pretty_number($row['points_points']/1000);
}
$parse['body_values'] .= parsetemplate(gettemplate('stat_playertable'), $parse);
$start++;
}
}
$page = parsetemplate(gettemplate('stat_body'), $parse);
display($page,$lang['Resources']);
//
// bueno, no se pudo hacer mucho que digamos ...
//
// Created by Perberos. All rights reversed Š 2006
?>
Kod jaki odpowiada (moim zdaniem) za wyliczenia wartości sojuszu to:
<?php
f($who == "ally"){
$parse['body_table'] = parsetemplate(gettemplate('stat_alliancetable_header'), $parse);
//pequeďż˝ fix para prevenir desastres
//pequeĂąa condicion
$start = floor($start / 100
% 100
)*100; //Realizamos la quiery en la table de jugadores
$query = doquery('SELECT * FROM {{table}} ORDER BY ally_points DESC LIMIT '.($start).',100','alliance');
$start++;
$parse['body_values'] = '';//en caso de que no hubieran datos...
$parse['data'] = $game_config['stats'];
$parse['ally_rank'] = $start;
$parse['ally_rankplus'] = '?';
$parse['ally_name'] = ''.$row['ally_name'].''; $parse['ally_mes'] = '';//' //
'; $parse['ally_members'] = $row['ally_members'];
if($type == "res"){
$ally_points = $row['ally_points_tech'];
}elseif($type == "flt"){
$ally_points = $row['ally_points_fleet'];
}else{
$ally_points = floor($row['ally_points']/1000
); }
$parse['ally_points'] = pretty_number($ally_points);
$parse['ally_members_points'] = @floor($ally_points/$row['ally_members']); $parse['body_values'] .= parsetemplate(gettemplate('stat_alliancetable'), $parse);
$start++;
}
}
else{
$parse['body_table'] = parsetemplate(gettemplate('stat_playertable_header'), $parse);
?>
Wartości [ally_members] [ally_points] [ally_points_flee] są wartościami z bazy danych. Są znacząco większe od tych jakie powinn być. Blędy są w naliczaniu punkty ogólnych, floty oraz badaniach.
UWAGA: Wartości punktów pojedyńczych graczy są liczone prawidłowo.
-------------------------
do PHP są odpowiednie znaczniki BBCode
a nie tylko [code] do wszystkiego
~Cienki1980