From 146b96907cc80e4b0e89b03daceb5e65ae645780 Mon Sep 17 00:00:00 2001 From: novgorodschi catalin Date: Wed, 5 Aug 2026 13:51:47 +0300 Subject: [PATCH] Audit Plus folder & Add Credits Audit Plus folder & Add Credits --- Templates/Plus/1.tpl | 19 ++ Templates/Plus/10.tpl | 22 +- Templates/Plus/11.tpl | 22 +- Templates/Plus/110.tpl | 19 ++ Templates/Plus/111.tpl | 19 ++ Templates/Plus/112.tpl | 19 ++ Templates/Plus/113.tpl | 19 ++ Templates/Plus/12.tpl | 22 +- Templates/Plus/15.tpl | 19 ++ Templates/Plus/2.tpl | 19 ++ Templates/Plus/3.tpl | 432 ++++++++++++++++++++++--------------- Templates/Plus/3110.tpl | 19 ++ Templates/Plus/4.tpl | 19 ++ Templates/Plus/5.tpl | 19 ++ Templates/Plus/7.tpl | 22 +- Templates/Plus/8.tpl | 22 +- Templates/Plus/9.tpl | 22 +- Templates/Plus/getplus.tpl | 19 ++ Templates/Plus/index.php | 19 +- Templates/Plus/invite.tpl | 19 ++ Templates/Plus/pmenu.tpl | 21 ++ plus.php | 21 +- 22 files changed, 623 insertions(+), 230 deletions(-) diff --git a/Templates/Plus/1.tpl b/Templates/Plus/1.tpl index 892d98a9..a8a44565 100644 --- a/Templates/Plus/1.tpl +++ b/Templates/Plus/1.tpl @@ -1,4 +1,23 @@ sit == 0) { diff --git a/Templates/Plus/11.tpl b/Templates/Plus/11.tpl index 58b18523..f27bf4e0 100644 --- a/Templates/Plus/11.tpl +++ b/Templates/Plus/11.tpl @@ -1,15 +1,21 @@ sit == 0) { diff --git a/Templates/Plus/110.tpl b/Templates/Plus/110.tpl index ab7eb91c..090ac96f 100644 --- a/Templates/Plus/110.tpl +++ b/Templates/Plus/110.tpl @@ -1,4 +1,23 @@ uid; diff --git a/Templates/Plus/112.tpl b/Templates/Plus/112.tpl index a0b41e4a..6254f494 100644 --- a/Templates/Plus/112.tpl +++ b/Templates/Plus/112.tpl @@ -1,4 +1,23 @@ uid; diff --git a/Templates/Plus/113.tpl b/Templates/Plus/113.tpl index 57840742..f92169bd 100644 --- a/Templates/Plus/113.tpl +++ b/Templates/Plus/113.tpl @@ -1,4 +1,23 @@ uid; diff --git a/Templates/Plus/12.tpl b/Templates/Plus/12.tpl index 8f0feceb..47fa9e4d 100644 --- a/Templates/Plus/12.tpl +++ b/Templates/Plus/12.tpl @@ -1,15 +1,21 @@ sit == 0) { diff --git a/Templates/Plus/15.tpl b/Templates/Plus/15.tpl index 8f8ab494..8dee18eb 100644 --- a/Templates/Plus/15.tpl +++ b/Templates/Plus/15.tpl @@ -1,4 +1,23 @@ uid; $wid = (int)$village->wid; diff --git a/Templates/Plus/2.tpl b/Templates/Plus/2.tpl index d77fcab4..570145e9 100644 --- a/Templates/Plus/2.tpl +++ b/Templates/Plus/2.tpl @@ -1,4 +1,23 @@ dblink, "SELECT * FROM " . TB_PREFIX . "users WHERE id='".$session->uid."'") or die(mysqli_error($database->dblink)); -$golds = mysqli_fetch_assoc($MyGold); -include ("Templates/Plus/pmenu.tpl"); +################################################################################# +## -= YOU MAY NOT REMOVE OR CHANGE THIS NOTICE =- ## +## --------------------------------------------------------------------------- ## +## Filename : 3.tpl ## +## Type : Plus Functions - Purchase and Status Overview ## +## --------------------------------------------------------------------------- ## +## Developed by : Shadow ## +## --------------------------------------------------------------------------- ## +## Contact : cata7007@gmail.com ## +## Project : TravianZ ## +## URLs: : https://travianz.org ## +## GitHub : https://github.com/Shadowss/TravianZ ## +## --------------------------------------------------------------------------- ## +## License : TravianZ Project ## +## Copyright : TravianZ (c) 2010-2026. All rights reserved. ## +## --------------------------------------------------------------------------- ## +################################################################################# + +/** + * TODO REZOLVAT: "Reduce this file by a lot, by using arrays". + * + * Cele patru bonusuri de productie erau scrise de mana, unul cate unul, aproape + * identice - se schimbau doar coloana din baza, id-ul din link si eticheta. + * Acum sunt un array parcurs intr-o bucla. + * + * Reparat pe parcurs: + * - uid-ul intra in SQL fara conversie ("WHERE id='$uid'"); + * - "or die(mysqli_error())" arata jucatorului erori de baza de date; + * - blocul de lemn compara cu $datetime1 in loc de $tl_b1 (aceeasi valoare, + * dar inconsecvent - la o modificare viitoare devine bug); + * - expirarea abonamentului Plus se scria in baza IN TIMPUL randarii, adica + * un sablon facea modificari; a fost mutata inainte de afisare, ca sa fie + * clar ce se intampla. + */ + +$plusUid = (int) $session->uid; + +$plusRes = mysqli_query( + $database->dblink, + "SELECT gold, plus, b1, b2, b3, b4, goldclub FROM " . TB_PREFIX . "users WHERE id = " . $plusUid . " LIMIT 1" +); + +$golds = $plusRes ? mysqli_fetch_assoc($plusRes) : null; + +if (!$golds) { + // Fara randul utilizatorului nu avem ce afisa. Nu aratam eroarea bazei de + // date jucatorului; o lasam in log, unde ii e locul. + error_log('[TravianZ] plus/3.tpl: nu am putut citi datele utilizatorului ' . $plusUid + . ': ' . mysqli_error($database->dblink)); + + $golds = array('gold' => 0, 'plus' => 0, 'b1' => 0, 'b2' => 0, 'b3' => 0, 'b4' => 0, 'goldclub' => 0); +} + +include("Templates/Plus/pmenu.tpl"); $date2 = time(); -if ($golds) { - if ($golds['gold'] == 0) - echo "

You currently don't own gold.

"; - else - echo "

".CURRENT_HAVE." ".$golds['gold']." ".GOLD."

"; +/** + * Abonamentul Plus expirat se marcheaza ACUM, inainte de afisare. + * Inainte, actualizarea se facea la mijlocul randarii tabelului. + */ +if ((int) $golds['plus'] > 0 && (int) $golds['plus'] <= $date2) { + mysqli_query($database->dblink, + "UPDATE " . TB_PREFIX . "users SET plus = 0 WHERE id = " . $plusUid . " LIMIT 1"); + + $golds['plus'] = 0; + $plusJustExpired = true; +} else { + $plusJustExpired = false; } -$datetimep = $golds['plus']; -$datetime1 = $golds['b1']; -$datetime2 = $golds['b2']; -$datetime3 = $golds['b3']; -$datetime4 = $golds['b4']; +if (!function_exists('formatRemainingTime')) { + function formatRemainingTime($endTimestamp, $nowTimestamp) + { + $remaining = (int) $endTimestamp - (int) $nowTimestamp; -function formatRemainingTime($endTimestamp, $nowTimestamp) { - $remaining = (int)$endTimestamp - (int)$nowTimestamp; - if ($remaining <= 0) return ''; - $days = intdiv($remaining, 86400); $remaining %= 86400; - $hours = intdiv($remaining, 3600); $remaining %= 3600; - $mins = intdiv($remaining, 60); $secs = $remaining % 60; - return 'Remaining: '.$days.' '.DAYS.' '.$hours.' '.HOURS.' '.$mins.' '.MINS.' '.$secs.' secs (until '.date('H:i:s', (int)$endTimestamp).')'; + if ($remaining <= 0) { + return ''; + } + + $days = intdiv($remaining, 86400); $remaining %= 86400; + $hours = intdiv($remaining, 3600); $remaining %= 3600; + $mins = intdiv($remaining, 60); + $secs = $remaining % 60; + + return 'Remaining: ' . $days . ' ' . DAYS + . ' ' . $hours . ' ' . HOURS + . ' ' . $mins . ' ' . MINS + . ' ' . $secs . ' secs (until ' . date('H:i:s', (int) $endTimestamp) . ')'; + } +} + +/** + * Butonul de actiune, identic pentru toate randurile. + * + * @param int $gold aurul jucatorului + * @param int $cost cat costa + * @param int $until pana cand e activ bonusul (0 = inactiv) + * @param int $linkId id-ul din plus.php?id=... + * @param bool $banned contul e blocat + */ +if (!function_exists('plusActionCell')) { + function plusActionCell($gold, $cost, $until, $linkId, $banned = false) + { + $guard = 'onclick="if(this.dataset.c) return false; this.dataset.c=1;' + . ' this.style.pointerEvents=\'none\'; this.style.opacity=\'0.5\';"'; + + if ($banned) { + return '' . TOO_LITTLE_GOLD . ''; + } + + if ((int) $gold < (int) $cost) { + return '' . TOO_LITTLE_GOLD . ''; + } + + // activ inca -> prelungeste; altfel -> activeaza + $label = ((int) $until > time()) ? EXTEND : ACTIVATE; + + return '' . $label . ''; + } +} + +/** + * Cele patru bonusuri de productie. Asta e tot ce se schimba intre ele. + */ +$plusBonuses = array( + array('css' => 'r1', 'label' => TZ_PRODUCTION_LUMBER, 'field' => 'b1', 'id' => 9, 'popup' => 1), + array('css' => 'r2', 'label' => TZ_PRODUCTION_CLAY, 'field' => 'b2', 'id' => 10, 'popup' => 2), + array('css' => 'r3', 'label' => TZ_PRODUCTION_IRON, 'field' => 'b3', 'id' => 11, 'popup' => 3), + array('css' => 'r4', 'label' => TZ_PRODUCTION_CROP, 'field' => 'b4', 'id' => 12, 'popup' => 4), +); + +$plusIsBanned = (defined('BANNED') && $session->access == BANNED); +$plusDuration = (PLUS_PRODUCTION >= 86400) + ? (PLUS_PRODUCTION / 86400) . ' Days' + : (PLUS_PRODUCTION / 3600) . ' Hours'; + +if ((int) $golds['gold'] === 0) { + echo "

You currently don't own gold.

"; +} else { + echo '

' . CURRENT_HAVE . ' ' . (int) $golds['gold'] . ' ' . GOLD . '

'; } ?> - - - - - - - - - - - + + + + + + + + + + + + + + + + - + + + - + - - - - - - - + + + + + + + + + + + + + + + - + - - - - - - - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
Plus function
Plus
- "; - else { - if ($datetimep <= $date2) { - echo "Your PLUS advantage has ended.
"; - mysqli_query($database->dblink, "UPDATE ".TB_PREFIX."users SET plus='0' WHERE id='".$session->uid."'"); - } else { - echo "".formatRemainingTime($datetimep, $date2).""; - } - } - ?>
= 86400) ? (PLUS_TIME/86400).' Days' : (PLUS_TIME/3600).' Hours'; ?>10 9 && $datetimep < $date2) { - echo ''.ACTIVATE.''; - } elseif ($golds['gold'] > 9 && $datetimep > $date2) { - echo ''.EXTEND.''; - } else { - echo ''.TOO_LITTLE_GOLD.''; - } +
Plus function
+ Plus +
+ '; + } elseif ((int) $golds['plus'] === 0) { + echo 'get PLUS
'; + } else { + echo "" + . formatRemainingTime($golds['plus'], $date2) . ''; + } + ?>
+
= 86400) ? (PLUS_TIME / 86400) . ' Days' : (PLUS_TIME / 3600) . ' Hours'; ?>
10
+25%
- =$date2) echo "".formatRemainingTime($tl_b1,$date2).""; ?>
=86400)?(PLUS_PRODUCTION/86400).' Days':(PLUS_PRODUCTION/3600).' Hours'; ?>5access!=BANNED){ - if($golds['gold']>4 && $tl_b1<$date2){ - echo ''.ACTIVATE.''; - } elseif($golds['gold']>4 && $datetime1>$date2){ - echo ''.EXTEND.''; - } else echo ''.TOO_LITTLE_GOLD.''; + +
+ +25% +
+ = $date2) { + echo "" + . formatRemainingTime($until, $date2) . ''; + } + ?> +
5
2 1) { + echo '' + . GOLD_ON . ''; } else { - echo ''.TOO_LITTLE_GOLD.''; + echo '' . TOO_LITTLE_GOLD . ''; } ?>
+25%
- =$date2) echo "".formatRemainingTime($tl_b2,$date2).""; ?>
=86400)?(PLUS_PRODUCTION/86400).' Days':(PLUS_PRODUCTION/3600).' Hours'; ?>5access!=BANNED){ - if($golds['gold']>4 && $tl_b2<$date2){ - echo ''.ACTIVATE.''; - } elseif($golds['gold']>4 && $tl_b2>$date2){ - echo ''.EXTEND.''; - } else echo ''.TOO_LITTLE_GOLD.''; - } else echo ''.TOO_LITTLE_GOLD.''; + +
3 2) { + echo '' . NPC . ''; + } else { + echo '' . TOO_LITTLE_GOLD . ''; + } ?>
+25%
- =$date2) echo "".formatRemainingTime($tl_b3,$date2).""; ?>
=86400)?(PLUS_PRODUCTION/86400).' Days':(PLUS_PRODUCTION/3600).' Hours'; ?>5access!=BANNED){ - if($golds['gold']>4 && $tl_b3<$date2){ - echo ''.ACTIVATE.''; - } elseif($golds['gold']>4 && $tl_b3>$date2){ - echo ''.EXTEND.''; - } else echo ''.TOO_LITTLE_GOLD.''; - } else echo ''.TOO_LITTLE_GOLD.''; - ?>
+25%
- =$date2) echo "".formatRemainingTime($tl_b4,$date2).""; ?>
=86400)?(PLUS_PRODUCTION/86400).' Days':(PLUS_PRODUCTION/3600).' Hours'; ?>5access!=BANNED){ - if($golds['gold']>4 && $tl_b4<$date2){ - echo ''.ACTIVATE.''; - } elseif($golds['gold']>4 && $tl_b4>$date2){ - echo ''.EXTEND.''; - } else echo ''.TOO_LITTLE_GOLD.''; - } else echo ''.TOO_LITTLE_GOLD.''; - ?>
21) ? ''.GOLD_ON.'' : ''.TOO_LITTLE_GOLD.''; - ?>
32) ? ''.NPC.'' : ''.TOO_LITTLE_GOLD.''; - ?>
- - - - - - + + + + + +
Redeem a gold code
- -
- -
- - -
-
Redeem a gold code
+ +
+ +
+ + +
+
- - - - - - - - - + + + + + + + + + + + + + + + + - - + +
10099){ - echo ''.ACTIVATE.''; - } else echo ''.TOO_LITTLE_GOLD.''; - } else echo ''.GOLD_ON.''; +
100' . GOLD_ON . ''; + } ?>
diff --git a/Templates/Plus/3110.tpl b/Templates/Plus/3110.tpl index ee892d05..78849787 100644 --- a/Templates/Plus/3110.tpl +++ b/Templates/Plus/3110.tpl @@ -1,4 +1,23 @@ uid; diff --git a/Templates/Plus/4.tpl b/Templates/Plus/4.tpl index aef451b7..25cb6376 100644 --- a/Templates/Plus/4.tpl +++ b/Templates/Plus/4.tpl @@ -1,4 +1,23 @@

diff --git a/Templates/Plus/5.tpl b/Templates/Plus/5.tpl index 352aab6b..d63f5344 100644 --- a/Templates/Plus/5.tpl +++ b/Templates/Plus/5.tpl @@ -1,4 +1,23 @@ uid; diff --git a/Templates/Plus/7.tpl b/Templates/Plus/7.tpl index c5e602ee..f48386a9 100644 --- a/Templates/Plus/7.tpl +++ b/Templates/Plus/7.tpl @@ -1,15 +1,21 @@ sit == 0) { diff --git a/Templates/Plus/9.tpl b/Templates/Plus/9.tpl index e5a30ccb..a6a3bf70 100644 --- a/Templates/Plus/9.tpl +++ b/Templates/Plus/9.tpl @@ -1,15 +1,21 @@ sit == 0) { diff --git a/Templates/Plus/getplus.tpl b/Templates/Plus/getplus.tpl index da0c82f6..549e1852 100644 --- a/Templates/Plus/getplus.tpl +++ b/Templates/Plus/getplus.tpl @@ -1,4 +1,23 @@ uid; diff --git a/Templates/Plus/index.php b/Templates/Plus/index.php index 9fcb4aed..0f7023ec 100644 --- a/Templates/Plus/index.php +++ b/Templates/Plus/index.php @@ -1,11 +1,20 @@ uid; diff --git a/Templates/Plus/pmenu.tpl b/Templates/Plus/pmenu.tpl index f345c1c2..72ee085f 100644 --- a/Templates/Plus/pmenu.tpl +++ b/Templates/Plus/pmenu.tpl @@ -1,3 +1,24 @@ +

Plus

diff --git a/plus.php b/plus.php index 5dc7f230..7280da76 100644 --- a/plus.php +++ b/plus.php @@ -152,11 +152,22 @@ if($id == 11){ if($id == 12){ include ("Templates/Plus/12.tpl"); } -if($id == 13){ - include ("Templates/Plus/13.tpl"); -} -if($id == 14){ - include ("Templates/Plus/14.tpl"); +/** + * BUG REPARAT: id-urile 13 si 14 includeau Templates/Plus/13.tpl si 14.tpl, + * fisiere care NU EXISTA in proiect. Orice acces la plus.php?id=13 dadea + * eroare fatala si pagina alba. + * + * Verificam existenta inainte de includere; daca lipsesc, aratam pagina + * obisnuita de functii Plus, ca jucatorul sa aiba unde merge. + */ +if($id == 13 || $id == 14){ + $plusExtraTpl = "Templates/Plus/" . (int) $id . ".tpl"; + + if (is_file($plusExtraTpl)) { + include ($plusExtraTpl); + } else { + include ("Templates/Plus/3.tpl"); + } } if($id == 15){ include ("Templates/Plus/15.tpl");