<?php
/**
* StatBuilder.php
* 积分计算程序
* @version 1
* @copyright 2008 by Chlorel for XNova
* 19:22 2008-10-2 塞北的雪优化
*/
define('INSIDE', true);
define('INSTALL', false);
define('IN_ADMIN', true);
set_time_limit(0); //脚本执行超时设定
$ugamela_root_path = './../';
include($ugamela_root_path.'extension.inc');
include($ugamela_root_path.'common.'.$phpEx);
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$time_start = microtime_float();
include($ugamela_root_path.'admin/statfunctions.'.$phpEx);
includeLang('admin');
$StatDate = time();
//更新总积分
doquery("DELETE FROM {{table}} WHERE `stat_code` = '2';", 'statpoints');
doquery("UPDATE {{table}} SET `stat_code` = `stat_code` + '1';", 'statpoints');
//$GameUsers = doquery("SELECT * FROM {{table}}", 'users');
$GameUsers = doquery("SELECT id,ally_id,spy_tech,computer_tech,military_tech,defence_tech,shield_tech,energy_tech,hyperspace_tech,combustion_tech,impulse_motor_tech,hyperspace_motor_tech,laser_tech,ionic_tech,buster_tech,intergalactic_tech,expedition_tech,graviton_tech FROM {{table}}", 'users');
while ($CurUser = mysql_fetch_assoc($GameUsers))
{
//旧的排名
$OldStatRecord = doquery("SELECT * FROM {{table}} WHERE `stat_type` = '1' AND `id_owner` = '".$CurUser['id']."';", 'statpoints');
if ($OldStatRecord)
{
$OldTotalRank = $OldStatRecord['total_rank'];
$OldTechRank = $OldStatRecord['tech_rank'];
$OldBuildRank = $OldStatRecord['build_rank'];
$OldDefsRank = $OldStatRecord['defs_rank'];
$OldFleetRank = $OldStatRecord['fleet_rank'];
//删除旧的记录
doquery("DELETE FROM {{table}} WHERE `stat_type` = '1' AND `id_owner` = '".$CurUser['id']."';", 'statpoints');
}
else
{
$OldTotalRank = 0;
$OldTechRank = 0;
$OldBuildRank = 0;
$OldDefsRank = 0;
$OldFleetRank = 0;
}
// Total des unitées consommée pour la recherche
$Points = GetTechnoPoints($CurUser);
$TTechCount = $Points['TechCount'];
$TTechPoints = ($Points['TechPoint'] / 1000);
// Totalisation des points accumulés par planete
$TBuildCount = 0;
$TBuildPoints = 0;
$TDefsCount = 0;
$TDefsPoints = 0;
$TFleetCount = 0;
$TFleetPoints = 0;
$GCount = $TTechCount;
$GPoints = $TTechPoints;
$UsrPlanets = doquery("SELECT id,metal_mine,crystal_mine,deuterium_sintetizer,solar_plant,fusion_plant,robot_factory,nano_factory,hangar,metal_store,crystal_store,deuterium_store,laboratory,terraformer,ally_deposit,mondbasis,phalanx,sprungtor,silo,misil_launcher,small_laser,big_laser,gauss_canyon,ionic_canyon,buster_canyon,small_protection_shield,big_protection_shield,small_ship_cargo,big_ship_cargo,light_hunter,heavy_hunter,crusher,battle_ship,colonizer,recycler,spy_sonde,bomber_ship,solar_satelit,destructor,dearth_star,battleship FROM {{table}} WHERE `id_owner` = '".$CurUser['id']."';", 'planets');
while ($CurPlanet = mysql_fetch_assoc($UsrPlanets))
{
$Points = GetBuildPoints($CurPlanet);
$TBuildCount += $Points['BuildCount'];
$GCount += $Points['BuildCount'];
$PlanetPoints = ($Points['BuildPoint'] / 1000);
$TBuildPoints += ($Points['BuildPoint'] / 1000);
$Points = GetDefensePoints($CurPlanet);
$TDefsCount += $Points['DefenseCount'];
;
$GCount += $Points['DefenseCount'];
$PlanetPoints += ($Points['DefensePoint'] / 1000);
$TDefsPoints += ($Points['DefensePoint'] / 1000);
$Points = GetFleetPoints($CurPlanet);
$TFleetCount += $Points['FleetCount'];
$GCount += $Points['FleetCount'];
$PlanetPoints += ($Points['FleetPoint'] / 1000);
$TFleetPoints += ($Points['FleetPoint'] / 1000);
$GPoints += $PlanetPoints;
$QryUpdatePlanet = "UPDATE {{table}} SET ";
$QryUpdatePlanet .= "`points` = '".$PlanetPoints."' ";
$QryUpdatePlanet .= "WHERE ";
$QryUpdatePlanet .= "`id` = '".$CurPlanet['id']."';";
doquery($QryUpdatePlanet, 'planets');
}
$QryInsertStats = "INSERT INTO {{table}} SET ";
$QryInsertStats .= "`id_owner` = '".$CurUser['id']."', ";
$QryInsertStats .= "`id_ally` = '".$CurUser['ally_id']."', ";
$QryInsertStats .= "`stat_type` = '1', "; // 1 pour joueur , 2 pour alliance
$QryInsertStats .= "`stat_code` = '1', "; // de 1 a 2 mis a jour de maniere automatique
$QryInsertStats .= "`tech_points` = '".$TTechPoints."', ";
$QryInsertStats .= "`tech_count` = '".$TTechCount."', ";
$QryInsertStats .= "`tech_old_rank` = '".$OldTechRank."', ";
$QryInsertStats .= "`build_points` = '".$TBuildPoints."', ";
$QryInsertStats .= "`build_count` = '".$TBuildCount."', ";
$QryInsertStats .= "`build_old_rank` = '".$OldBuildRank."', ";
$QryInsertStats .= "`defs_points` = '".$TDefsPoints."', ";
$QryInsertStats .= "`defs_count` = '".$TDefsCount."', ";
$QryInsertStats .= "`defs_old_rank` = '".$OldDefsRank."', ";
$QryInsertStats .= "`fleet_points` = '".$TFleetPoints."', ";
$QryInsertStats .= "`fleet_count` = '".$TFleetCount."', ";
$QryInsertStats .= "`fleet_old_rank` = '".$OldFleetRank."', ";
$QryInsertStats .= "`total_points` = '".$GPoints."', ";
$QryInsertStats .= "`total_count` = '".$GCount."', ";
$QryInsertStats .= "`total_old_rank` = '".$OldTotalRank."', ";
$QryInsertStats .= "`stat_date` = '".$StatDate."';";
doquery($QryInsertStats, 'statpoints');
}
/*
//更新科技积分排名
$Rank = 1;
$RankQry = doquery("SELECT id_owner FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `tech_points` DESC;", 'statpoints');
while ($TheRank = mysql_fetch_assoc($RankQry))
{
$QryUpdateStats = "UPDATE {{table}} SET ";
$QryUpdateStats .= "`tech_rank` = '".$Rank."' ";
$QryUpdateStats .= "WHERE ";
$QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '".$TheRank['id_owner']."';";
doquery($QryUpdateStats, 'statpoints');
$Rank++;
}
//更新建筑积分排名
$Rank = 1;
$RankQry = doquery("SELECT id_owner FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `build_points` DESC;", 'statpoints');
while ($TheRank = mysql_fetch_assoc($RankQry))
{
$QryUpdateStats = "UPDATE {{table}} SET ";
$QryUpdateStats .= "`build_rank` = '".$Rank."' ";
$QryUpdateStats .= "WHERE ";
$QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '".$TheRank['id_owner']."';";
doquery($QryUpdateStats, 'statpoints');
$Rank++;
}
//更新防御积分排名
$Rank = 1;
$RankQry = doquery("SELECT id_owner FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `defs_points` DESC;", 'statpoints');
while ($TheRank = mysql_fetch_assoc($RankQry))
{
$QryUpdateStats = "UPDATE {{table}} SET ";
$QryUpdateStats .= "`defs_rank` = '".$Rank."' ";
$QryUpdateStats .= "WHERE ";
$QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '".$TheRank['id_owner']."';";
doquery($QryUpdateStats, 'statpoints');
$Rank++;
}
//更新舰队积分排名
$Rank = 1;
$RankQry = doquery("SELECT id_owner FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `fleet_points` DESC;", 'statpoints');
while ($TheRank = mysql_fetch_assoc($RankQry))
{
$QryUpdateStats = "UPDATE {{table}} SET ";
$QryUpdateStats .= "`fleet_rank` = '".$Rank."' ";
$QryUpdateStats .= "WHERE ";
$QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '".$TheRank['id_owner']."';";
doquery($QryUpdateStats, 'statpoints');
$Rank++;
}
*/
$Rank = 1;
$RankQry = doquery("SELECT id_owner FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `total_points` DESC;", 'statpoints');
while ($TheRank = mysql_fetch_assoc($RankQry))
{
$QryUpdateStats = "UPDATE {{table}} SET ";
$QryUpdateStats .= "`total_rank` = '".$Rank."' ";
$QryUpdateStats .= "WHERE ";
$QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '".$TheRank['id_owner']."';";
doquery($QryUpdateStats, 'statpoints');
$Rank++;
}
//更新联盟积分
$GameAllys = doquery("SELECT id FROM {{table}}", 'alliance');
while ($CurAlly = mysql_fetch_assoc($GameAllys))
{
// Recuperation des anciennes statistiques
$OldStatRecord = doquery("SELECT total_rank,tech_rank,build_rank,defs_rank,fleet_rank FROM {{table}} WHERE `stat_type` = '2' AND `id_owner` = '".$CurAlly['id']."';", 'statpoints');
if ($OldStatRecord)
{
$OldTotalRank = $OldStatRecord['total_rank'];
$OldTechRank = $OldStatRecord['tech_rank'];
$OldBuildRank = $OldStatRecord['build_rank'];
$OldDefsRank = $OldStatRecord['defs_rank'];
$OldFleetRank = $OldStatRecord['fleet_rank'];
// Suppression de l'ancien enregistrement
doquery("DELETE FROM {{table}} WHERE `stat_type` = '2' AND `id_owner` = '".$CurAlly['id']."';", 'statpoints');
}
else
{
$OldTotalRank = 0;
$OldTechRank = 0;
$OldBuildRank = 0;
$OldDefsRank = 0;
$OldFleetRank = 0;
}
// Total des unitées consommée pour la recherche
$QrySumSelect = "SELECT ";
$QrySumSelect .= "SUM(`tech_points`) as `TechPoint`, ";
$QrySumSelect .= "SUM(`tech_count`) as `TechCount`, ";
$QrySumSelect .= "SUM(`build_points`) as `BuildPoint`, ";
$QrySumSelect .= "SUM(`build_count`) as `BuildCount`, ";
$QrySumSelect .= "SUM(`defs_points`) as `DefsPoint`, ";
$QrySumSelect .= "SUM(`defs_count`) as `DefsCount`, ";
$QrySumSelect .= "SUM(`fleet_points`) as `FleetPoint`, ";
$QrySumSelect .= "SUM(`fleet_count`) as `FleetCount`, ";
$QrySumSelect .= "SUM(`total_points`) as `TotalPoint`, ";
$QrySumSelect .= "SUM(`total_count`) as `TotalCount` ";
$QrySumSelect .= "FROM {{table}} ";
$QrySumSelect .= "WHERE ";
$QrySumSelect .= "`stat_type` = '1' AND ";
$QrySumSelect .= "`id_ally` = '".$CurAlly['id']."';";
$Points = doquery($QrySumSelect, 'statpoints', true);
$TTechCount = $Points['TechCount'];
$TTechPoints = $Points['TechPoint'];
$TBuildCount = $Points['BuildCount'];
$TBuildPoints = $Points['BuildPoint'];
$TDefsCount = $Points['DefsCount'];
$TDefsPoints = $Points['DefsPoint'];
$TFleetCount = $Points['FleetCount'];
$TFleetPoints = $Points['FleetPoint'];
$GCount = $Points['TotalCount'];
$GPoints = $Points['TotalPoint'];
$QryInsertStats = "INSERT INTO {{table}} SET ";
$QryInsertStats .= "`id_owner` = '".$CurAlly['id']."', ";
$QryInsertStats .= "`id_ally` = '0', ";
$QryInsertStats .= "`stat_type` = '2', "; // 1 pour joueur , 2 pour alliance
$QryInsertStats .= "`stat_code` = '1', "; // de 1 a 5 mis a jour de maniere automatique
$QryInsertStats .= "`tech_points` = '".$TTechPoints."', ";
$QryInsertStats .= "`tech_count` = '".$TTechCount."', ";
$QryInsertStats .= "`tech_old_rank` = '".$OldTechRank."', ";
$QryInsertStats .= "`build_points` = '".$TBuildPoints."', ";
$QryInsertStats .= "`build_count` = '".$TBuildCount."', ";
$QryInsertStats .= "`build_old_rank` = '".$OldBuildRank."', ";
$QryInsertStats .= "`defs_points` = '".$TDefsPoints."', ";
$QryInsertStats .= "`defs_count` = '".$TDefsCount."', ";
$QryInsertStats .= "`defs_old_rank` = '".$OldDefsRank."', ";
$QryInsertStats .= "`fleet_points` = '".$TFleetPoints."', ";
$QryInsertStats .= "`fleet_count` = '".$TFleetCount."', ";
$QryInsertStats .= "`fleet_old_rank` = '".$OldFleetRank."', ";
$QryInsertStats .= "`total_points` = '".$GPoints."', ";
$QryInsertStats .= "`total_count` = '".$GCount."', ";
$QryInsertStats .= "`total_old_rank` = '".$OldTotalRank."', ";
$QryInsertStats .= "`stat_date` = '".$StatDate."';";
doquery($QryInsertStats, 'statpoints');
}
$time_end = microtime_float();
$SpendTime = $time_end - $time_start;
global $numqueries;
AdminMessage($lang['adm_done']."<br>耗时:{$SpendTime}秒。<br>Querys:$numqueries", $lang['adm_stat_title']);
?>