From 66c966cb5ee0adc5ccc0118615d5132613f6f3b6 Mon Sep 17 00:00:00 2001 From: novgorodschi catalin Date: Mon, 22 Jun 2026 13:40:21 +0300 Subject: [PATCH] New General Statistics New General Statistics. Please help me with translate @Ferywir --- Templates/Ranking/general.tpl | 519 +++++++++++++++------------------- 1 file changed, 231 insertions(+), 288 deletions(-) diff --git a/Templates/Ranking/general.tpl b/Templates/Ranking/general.tpl index 12c8824e..184741fb 100644 --- a/Templates/Ranking/general.tpl +++ b/Templates/Ranking/general.tpl @@ -4,367 +4,310 @@ ## -= YOU MAY NOT REMOVE OR CHANGE THIS NOTICE =- ## ## --------------------------------------------------------------------------- ## ## Project: TravianZ ## -## Version: 01.09.2013 ## +## Version: 22.06.2026 ## ## Filename general.tpl ## ## Refactored by Shadow ## ## License: TravianZ Project ## -## Copyright: TravianZ (c) 2010-2013. All rights reserved. ## -## URLs: http://travian.shadowss.ro ## +## Copyright: TravianZ (c) 2010-2026. All rights reserved. ## +## URLs: http://travianz.org ## ## Source code: http://github.com/Shadowss/TravianZ/ ## ## ## ################################################################################# -// ========================= -// TRIBES COUNT (optimized) -// ========================= -$tribesRes = mysqli_query( - $database->dblink, - "SELECT tribe, COUNT(*) AS Total - FROM ".TB_PREFIX."users - WHERE tribe BETWEEN 1 AND 3 - GROUP BY tribe" -); +mysqli_report(MYSQLI_REPORT_OFF); +// ========================= +// TRIBES COUNT +// ========================= +$tribesRes = mysqli_query($database->dblink, + "SELECT tribe, COUNT(*) AS Total FROM ".TB_PREFIX."users WHERE tribe BETWEEN 1 AND 3 GROUP BY tribe"); $tribes = [0, 0, 0]; - if ($tribesRes) { while ($row = mysqli_fetch_assoc($tribesRes)) { - $tribeId = (int)$row['tribe'] - 1; - if (isset($tribes[$tribeId])) { - $tribes[$tribeId] = (int)$row['Total']; - } + $tribes[(int)$row['tribe']-1] = (int)$row['Total']; } } -// total users -$userRes = mysqli_query( - $database->dblink, - "SELECT COUNT(*) AS Total - FROM ".TB_PREFIX."users - WHERE tribe BETWEEN 1 AND 3" -); - -$users = ($userRes) ? (int)mysqli_fetch_assoc($userRes)['Total'] : 0; - +$userRes = mysqli_query($database->dblink, + "SELECT COUNT(*) AS Total FROM ".TB_PREFIX."users WHERE tribe BETWEEN 1 AND 3"); +$users = $userRes? (int)mysqli_fetch_assoc($userRes)['Total'] : 0; // ========================= // VILLAGES + POPULATION // ========================= $villageRes = mysqli_query($database->dblink, "SELECT COUNT(*) AS Total FROM ".TB_PREFIX."vdata"); -$num_villages = ($villageRes) ? (int)mysqli_fetch_assoc($villageRes)['Total'] : 0; +$num_villages = $villageRes? (int)mysqli_fetch_assoc($villageRes)['Total'] : 0; $popRes = mysqli_query($database->dblink, "SELECT SUM(pop) AS totalpop FROM ".TB_PREFIX."vdata"); -$total_pop = ($popRes) ? (int)mysqli_fetch_assoc($popRes)['totalpop'] : 0; - +$total_pop = $popRes? (int)mysqli_fetch_assoc($popRes)['totalpop'] : 0; // ========================= // ONLINE / ACTIVE USERS // ========================= -$activeRes = mysqli_query( - $database->dblink, - "SELECT COUNT(*) AS Total - FROM ".TB_PREFIX."users - WHERE timestamp > ".(time() - 86400)." - AND tribe BETWEEN 1 AND 3" -); -$active = ($activeRes) ? (int)mysqli_fetch_assoc($activeRes)['Total'] : 0; - -$onlineRes = mysqli_query( - $database->dblink, - "SELECT COUNT(*) AS Total - FROM ".TB_PREFIX."users - WHERE timestamp > ".(time() - 600)." - AND tribe BETWEEN 1 AND 3" -); -$online = ($onlineRes) ? (int)mysqli_fetch_assoc($onlineRes)['Total'] : 0; +$active = 0; +$res = mysqli_query($database->dblink, + "SELECT COUNT(*) AS Total FROM ".TB_PREFIX."users WHERE timestamp > ".(time()-86400)." AND tribe BETWEEN 1 AND 3"); +if($res) + $active = (int)mysqli_fetch_assoc($res)['Total']; +$online = 0; +$res = mysqli_query($database->dblink, + "SELECT COUNT(*) AS Total FROM ".TB_PREFIX."users WHERE timestamp > ".(time()-600)." AND tribe BETWEEN 1 AND 3"); +if($res) $online = (int)mysqli_fetch_assoc($res)['Total']; // ========================= // GOLD TOTAL // ========================= $goldRes = mysqli_query($database->dblink, "SELECT SUM(gold) AS totalgold FROM ".TB_PREFIX."users"); -$total_gold = ($goldRes) ? (int)mysqli_fetch_assoc($goldRes)['totalgold'] : 0; +$total_gold = $goldRes? (int)mysqli_fetch_assoc($goldRes)['totalgold'] : 0; + +// ========================= +// 2026 - NEW STATISTICS +// ========================= +$daysSinceStart = defined('COMMENCE')? floor((time()-COMMENCE)/86400) : 0; + +// Natars +$natars = 0; +$q = mysqli_query($database->dblink, "SELECT COUNT(*) AS n FROM ".TB_PREFIX."vdata WHERE natar=1"); +if($q) + $natars = (int)mysqli_fetch_assoc($q)['n']; + +// Occupied Oasis +$oasis = 0; +$q = mysqli_query($database->dblink, + "SELECT COUNT(*) AS o + FROM ".TB_PREFIX."odata + WHERE owner <> 2 AND owner <> 0 AND owner IS NOT NULL"); +if($q) $oasis = (int)mysqli_fetch_assoc($q)['o']; + +// Alliances +$alliCount = 0; +$q = mysqli_query($database->dblink, "SELECT COUNT(*) AS a FROM ".TB_PREFIX."alidata"); +if($q) + $alliCount = (int)mysqli_fetch_assoc($q)['a']; + +$topAlliances = []; +$q = mysqli_query($database->dblink, + "SELECT a.tag, a.name, COUNT(u.id) AS members FROM ".TB_PREFIX."alidata a + LEFT JOIN ".TB_PREFIX."users u ON u.alliance=a.id + GROUP BY a.id ORDER BY members DESC LIMIT 5"); +if($q) while($r=mysqli_fetch_assoc($q)) + $topAlliances[] = $r; + +// New Players Today +$newToday = 0; +$q = mysqli_query($database->dblink, + "SELECT COUNT(*) AS n FROM ".TB_PREFIX."users WHERE regtime > ".(time()-86400)." AND tribe BETWEEN 1 AND 3"); +if($q) + $newToday = (int)mysqli_fetch_assoc($q)['n']; + +// Top 10 +$topPop = []; +$q = mysqli_query($database->dblink, + "SELECT u.username, COALESCE(SUM(v.pop),0) AS totalpop + FROM ".TB_PREFIX."users u + LEFT JOIN ".TB_PREFIX."vdata v ON v.owner = u.id + WHERE u.tribe BETWEEN 1 AND 3 + GROUP BY u.id + ORDER BY totalpop DESC + LIMIT 10"); +if($q) while($r = mysqli_fetch_assoc($q)) + $topPop[] = $r; + +$topAtk = []; +$q = mysqli_query($database->dblink, + "SELECT username, ap AS points + FROM ".TB_PREFIX."users + WHERE tribe BETWEEN 1 AND 3 + ORDER BY ap DESC + LIMIT 10"); +if($q) while($r = mysqli_fetch_assoc($q)) + $topAtk[] = $r; + +$topDef = []; +$q = mysqli_query($database->dblink, + "SELECT username, dp AS points + FROM ".TB_PREFIX."users + WHERE tribe BETWEEN 1 AND 3 + ORDER BY dp DESC + LIMIT 10"); +if($q) while($r = mysqli_fetch_assoc($q)) + $topDef[] = $r; + +// WW +$wonders=[]; $q=mysqli_query($database->dblink, + "SELECT v.name AS village, u.username, f.f99 AS level + FROM ".TB_PREFIX."fdata f + JOIN ".TB_PREFIX."vdata v ON f.vref=v.wref + JOIN ".TB_PREFIX."users u ON v.owner=u.id + WHERE f.f99t=40 AND f.f99>0 ORDER BY f.f99 DESC LIMIT 3"); +if($q) while($r=mysqli_fetch_assoc($q)) + $wonders[]=$r; + +// Artefacts +$artefacts=[]; +$q=mysqli_query($database->dblink, + "SELECT a.name, u.username FROM ".TB_PREFIX."artefacts a + LEFT JOIN ".TB_PREFIX."users u ON a.owner=u.id WHERE a.active=1 LIMIT 5"); +if($q) while($r=mysqli_fetch_assoc($q)) + $artefacts[]=$r; + +// Troops +$units=[]; +$result=mysqli_query($database->dblink,"SELECT ".implode(',',array_map(fn($i)=>"SUM(u$i) AS u$i",range(1,30)))." FROM ".TB_PREFIX."units"); +if($result) + $units=mysqli_fetch_assoc($result); +function u($units,$k){ +return isset($units[$k])? (int)$units[$k] : 0; +} ?> - - - - - - - - - - + + +
-
- - - + - - - + + +
Players online
Players online

+ + + + + + + + + + + +
Server Information
Days Since Start
Active Alliance
Natars Villages
Conquered Oasis
New Players Today
+
+ - - - - + + - 0) ? round(100 * $roman / $users, 2) : 0; -$teutonPct = ($users > 0) ? round(100 * $teuton / $users, 2) : 0; -$gaulPct = ($users > 0) ? round(100 - $romanPct - $teutonPct, 2) : 0; +$roman=$tribes[0]; $teuton=$tribes[1]; $gaul=$tribes[2]; +$romanPct=($users>0)?round(100*$roman/$users,2):0; +$teutonPct=($users>0)?round(100*$teuton/$users,2):0; +$gaulPct=($users>0)?round(100*$gaul/$users,2):0; ?> - - - - - + + +
%
%
%

+ - - - - - + + +
-Total -Gold -
Total Gold
+
+ + + + + - - - - + + +';?>
Top 5 Alliances
TagNumeMembers
-

- - - - - - - - - - - + + + + - -dblink, " - SELECT - SUM(u1) AS u1, - SUM(u2) AS u2, - SUM(u3) AS u3, - SUM(u4) AS u4, - SUM(u5) AS u5, - SUM(u6) AS u6, - SUM(u7) AS u7, - SUM(u8) AS u8, - SUM(u9) AS u9, - SUM(u10) AS u10, - - SUM(u11) AS u11, - SUM(u12) AS u12, - SUM(u13) AS u13, - SUM(u14) AS u14, - SUM(u15) AS u15, - SUM(u16) AS u16, - SUM(u17) AS u17, - SUM(u18) AS u18, - SUM(u19) AS u19, - SUM(u20) AS u20, - - SUM(u21) AS u21, - SUM(u22) AS u22, - SUM(u23) AS u23, - SUM(u24) AS u24, - SUM(u25) AS u25, - SUM(u26) AS u26, - SUM(u27) AS u27, - SUM(u28) AS u28, - SUM(u29) AS u29, - SUM(u30) AS u30 - - FROM ".TB_PREFIX."units -"); - -if ($result) { - $units = mysqli_fetch_assoc($result); -} - -// helper safe output -function u($units, $key) { - return isset($units[$key]) ? (int)$units[$key] : 0; -} -?> - - + - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
-
- + + - - + + + + + + - - + - - - + + + + + + + + + + +
Top Players
PopulationPctAttackersPctDefendersPct
getAttackByDate(time()-(86400*$d)) ?>getAttackCasualties(time()-(86400*$d)) ?>
- - +
+ + +
+ + + + + + + +
Endgame
WWLevelArtefacts
"; if(empty($wonders)) echo "-";?>"; if(empty($wonders)) echo "-";?>"; if(empty($artefacts)) echo "-";?>
+
+ + + + + + + + + + + + + + +
getAttackByDate(time()-(86400*$d))?>getAttackCasualties(time()-(86400*$d))?>
+ + \ No newline at end of file