From 1d1f1dc72ab55ff1f8084c07a5f5f9a14a06750a Mon Sep 17 00:00:00 2001 From: novgorodschi catalin Date: Thu, 28 May 2026 12:25:28 +0300 Subject: [PATCH] Fix + Redesign Fix some error programing code and redesign special medals, tribe medals, mh medals, taskmaster medals, natars medals, nature medals, protection medals, etc. Add some language code in Profile.php and preference.tpl. Change some description in struct database for Nature and Taskmaster --- Admin/Templates/editAdditional.tpl | 2 +- Admin/admin.php | 14 ++-- GameEngine/Artifacts.php | 10 ++- GameEngine/Profile.php | 15 ++++ Templates/Build/15_1.tpl | 2 +- Templates/Manual/1126.tpl | 20 +++++ Templates/Manual/1331.tpl | 2 +- Templates/Profile/medal.php | 71 ++++++++++-------- Templates/Profile/preference.tpl | 3 - .../img/gloriamedals/artifact.png | Bin 7923 -> 35392 bytes .../img/gloriamedals/greatstore.png | Bin 5088 -> 38723 bytes .../travian_default/img/gloriamedals/hero.png | Bin 4458 -> 35244 bytes .../img/gloriamedals/wallmaster.png | Bin 3971 -> 35528 bytes .../img/gloriamedals/ww_builder.png | Bin 11656 -> 37722 bytes .../img/gloriamedals/ww_winner.png | Bin 14012 -> 34135 bytes gpack/travian_default/img/t/10_year_medal.png | Bin 8607 -> 36858 bytes gpack/travian_default/img/t/5year_medal.png | Bin 8583 -> 34073 bytes gpack/travian_default/img/t/MH.png | Bin 9147 -> 34266 bytes gpack/travian_default/img/t/Veteran_Medal.jpg | Bin 9973 -> 33975 bytes gpack/travian_default/img/t/g40_11-ltr.png | Bin 41022 -> 31929 bytes gpack/travian_default/img/t/nature.png | Bin 8872 -> 16424 bytes gpack/travian_default/img/t/nature2.png | Bin 0 -> 143524 bytes gpack/travian_default/img/t/shadow.png | Bin 6817 -> 37783 bytes gpack/travian_default/img/t/shadow0.png | Bin 0 -> 6817 bytes gpack/travian_default/img/t/t10_2.jpg | Bin 13221 -> 140870 bytes gpack/travian_default/img/t/t6_1.png | Bin 114050 -> 120321 bytes gpack/travian_default/img/t/taskmaster.png | Bin 11265 -> 37993 bytes gpack/travian_default/img/t/taskmaster2.png | Bin 0 -> 86896 bytes gpack/travian_default/img/t/team.png | Bin 12427 -> 34354 bytes gpack/travian_default/img/t/tn.gif | Bin 1109 -> 29406 bytes gpack/travian_default/img/t/tnd.gif | Bin 1181 -> 24122 bytes img/rpage/Gaul1.jpg | Bin 5913 -> 42114 bytes img/rpage/Roman1.jpg | Bin 5415 -> 36386 bytes img/rpage/Teuton1.jpg | Bin 6097 -> 38976 bytes install/include/accounts.php | 6 +- var/db/struct.sql | 4 +- 36 files changed, 97 insertions(+), 52 deletions(-) create mode 100644 Templates/Manual/1126.tpl create mode 100644 gpack/travian_default/img/t/nature2.png create mode 100644 gpack/travian_default/img/t/shadow0.png create mode 100644 gpack/travian_default/img/t/taskmaster2.png diff --git a/Admin/Templates/editAdditional.tpl b/Admin/Templates/editAdditional.tpl index 7cc37c34..8b71f753 100644 --- a/Admin/Templates/editAdditional.tpl +++ b/Admin/Templates/editAdditional.tpl @@ -35,7 +35,7 @@ if(isset($id)) { .editAdd-head h2 a{color:#71D000;text-decoration:none;} .editAdd-head .uid{font-size:12px;color:#666;} -.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px;} +.grid-2{display:grid;grid-template-columns:1fr;gap:12px;} @media(max-width:800px){.grid-2{grid-template-columns:1fr;}} .card{background:#fff;border:1px solid #d4d4d4;border-radius:4px;overflow:hidden;margin-bottom:12px;box-shadow:0 1px 2px rgba(0,0,0,.04);} diff --git a/Admin/admin.php b/Admin/admin.php index 88a8d44c..5d7b0f78 100644 --- a/Admin/admin.php +++ b/Admin/admin.php @@ -282,7 +282,7 @@ if (!empty($_GET['p'])) { $village = $database->getVillage($did); if ($village) { $user = $database->getUserArray($village['owner'], 1); - $subpage = 'Edit Village ('.$village['name'].' » '.($user['username'] ?? '?').')'; + $subpage = 'Edit Village ('.$village['name'].' » '.($user['username'] ?? '?').')'; } else { $subpage = 'Edit Village (ID '.$did.' not found)'; $village = null; // important, ca să nu crape template-ul mai jos @@ -297,7 +297,7 @@ if (!empty($_GET['p'])) { $village = $database->getVillage($_GET['did']); if ($village) { $user = $database->getUserArray($village['owner'], 1); - $subpage = 'Edit Troops ('.$village['name'].' » '.$user['username'].')'; + $subpage = 'Edit Resources ('.$village['name'].' » '.$user['username'].')'; } else { $subpage = 'Edit Resources (ID '.$did.' not found)'; $village = null; @@ -311,7 +311,7 @@ if (!empty($_GET['p'])) { if (!empty($_GET['did'])) { $village = $database->getVillage($_GET['did']); $user = $database->getUserArray($village['owner'], 1); - $subpage = 'Edit Troops ('.$village['name'].' » '.$user['username'].')'; + $subpage = 'Edit Troops ('.$village['name'].' » '.$user['username'].')'; } else { $subpage = 'Edit Troops (no village)'; } @@ -321,7 +321,7 @@ if (!empty($_GET['p'])) { if (!empty($_GET['did'])) { $village = $database->getVillage($_GET['did']); $user = $database->getUserArray($village['owner'],1); - $subpage = 'Upgrade Troops ('.$village['name'].' » '.$user['username'].')'; + $subpage = 'Upgrade Troops ('.$village['name'].' » '.$user['username'].')'; } else { $subpage = 'Upgrade Troops (no village)'; } @@ -331,7 +331,7 @@ if (!empty($_GET['p'])) { if (!empty($_GET['did'])) { $village = $database->getVillage($_GET['did']); $user = $database->getUserArray($village['owner'],1); - $subpage = 'Edit Village ('.$village['name'].' » '.$user['username'].')'; + $subpage = 'Edit Village ('.$village['name'].' » '.$user['username'].')'; } else { $subpage = 'Edit Village (no village)'; } @@ -341,7 +341,7 @@ if (!empty($_GET['p'])) { if (!empty($_GET['did'])) { $village = $database->getVillage($_GET['did']); $user = $database->getUserArray($village['owner'],1); - $subpage = 'Build Log ('.$village['name'].' » '.$user['username'].')'; + $subpage = 'Build Log ('.$village['name'].' » '.$user['username'].')'; } else { $subpage = 'Build Log (no village)'; } @@ -351,7 +351,7 @@ if (!empty($_GET['p'])) { if (!empty($_GET['did'])) { $village = $database->getVillage($_GET['did']); $user = $database->getUserArray($village['owner'],1); - $subpage = 'Research Log ('.$village['name'].' » '.$user['username'].')'; + $subpage = 'Research Log ('.$village['name'].' » '.$user['username'].')'; } else { $subpage = 'Research Log (no village)'; } diff --git a/GameEngine/Artifacts.php b/GameEngine/Artifacts.php index 19ebdf2b..6455deb9 100644 --- a/GameEngine/Artifacts.php +++ b/GameEngine/Artifacts.php @@ -45,6 +45,14 @@ class Artifacts NATARS_DESC = "************************** [#natars] **************************", + + /** + * @var string Default Natars' description 2 + */ + + NATARS_DESC2 = "************************** + [#WW] + **************************", /** * @var array Possible Natars' capital locations @@ -204,7 +212,7 @@ class Artifacts //Register the Natars account, the Natars' password is the same as the MH's one $password = $database->getUserField(5, 'password', 0); - $database->register(TRIBE5, $password, self::NATARS_EMAIL, self::NATARS_TRIBE, null, self::NATARS_UID, self::NATARS_DESC); + $database->register(TRIBE5, $password, self::NATARS_EMAIL, self::NATARS_TRIBE, null, self::NATARS_UID, self::NATARS_DESC, self::NATARS_DESC2); //Convert from coordinates to village IDs $possibleWids = $database->getVilWrefs(self::NATARS_CAPITAL_COORDINATES); diff --git a/GameEngine/Profile.php b/GameEngine/Profile.php index 4107d605..0a4b656e 100755 --- a/GameEngine/Profile.php +++ b/GameEngine/Profile.php @@ -219,6 +219,21 @@ class Profile { $form->addError("email", EMAIL_ERROR); } } + + // Language change + if (!empty($post['sprache'])) { + // whitelist – pune aici limbile pe care le ai în /lang/ + $allowed = ['en','ro','de','it','fr','es']; + $lang = strtolower(trim($post['sprache'])); + + if (in_array($lang, $allowed, true)) { + $database->updateUserField($session->uid, "language", $lang, 1); + + // update sesiunea ca să se vadă imediat, fără relog + $_SESSION['lang'] = $lang; + $session->userinfo['language'] = $lang; + } + } // Delete request cancel if (!empty($post['del_pw']) && !empty($post['del'])) { diff --git a/Templates/Build/15_1.tpl b/Templates/Build/15_1.tpl index 7a758201..26a44490 100644 --- a/Templates/Build/15_1.tpl +++ b/Templates/Build/15_1.tpl @@ -116,7 +116,7 @@ $inProgress =!empty($Demolition)? $Demolition[0] : null; diff --git a/Templates/Manual/1126.tpl b/Templates/Manual/1126.tpl new file mode 100644 index 00000000..8e7d0aea --- /dev/null +++ b/Templates/Manual/1126.tpl @@ -0,0 +1,20 @@ +

Special Medals Special Medals

+ +
The medal of which is awarded to players losing by the same email address of 10 or more years. Can be added to the profile description. This function was presented in Travian T4.
+
+ +
+
+
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/Templates/Manual/1331.tpl b/Templates/Manual/1331.tpl index 848d0bf8..c7b744ef 100644 --- a/Templates/Manual/1331.tpl +++ b/Templates/Manual/1331.tpl @@ -16,7 +16,7 @@
  • Medal Veteran Player Enabled" : "Disabled"; ?>
  • Medal Veteran Player 5a Enabled" : "Disabled"; ?>
  • Medal Veteran Player 10a Enabled" : "Disabled"; ?>
  • - +
  • Special Medals Enabled" : "Disabled"; ?>
  • diff --git a/Templates/Profile/medal.php b/Templates/Profile/medal.php index 6a11852a..4d8aa878 100644 --- a/Templates/Profile/medal.php +++ b/Templates/Profile/medal.php @@ -11,7 +11,7 @@ ## Fixed by: Shadow / Skype : cata7007 ## ## License: TravianZ Project ## ## Copyright: TravianZ (c) 2010-2026. All rights reserved. ## -## URLs: http://travianz.org ## +## URLs: http://travianz.org ## ## Source code: http://github.com/Shadowss/TravianZ-by-Shadow/ ## ## ## ################################################################################# @@ -38,12 +38,6 @@ $geregistreerd=date('d.m.Y', ($displayarray['regtime'])); $profiel = preg_replace("/\[#0]/is",'', $profiel, 1); } -//natar image -if($displayarray['username'] == "Natars"){ -$profiel = preg_replace("/\[#natars]/is",'', $profiel, 1); -$profiel = preg_replace("/\[#WW]/is",'', $profiel, 1); -} - // Added by Shadow - cata7007@gmail.com / Skype : cata7007 if(NEW_FUNCTIONS_TRIBE_IMAGES){ if($displayarray['tribe'] == "1"){ @@ -55,15 +49,6 @@ if(NEW_FUNCTIONS_TRIBE_IMAGES){ } } -//Shadow image - MUST TO BE SET FROM ADMIN PANEL @iopietro must code -// Added by Shadow - cata7007@gmail.com / Skype : cata7007 -if($displayarray['username'] == "Shadow"){ -$profiel = preg_replace("/\[#SHADOW]/is",'', $profiel, 1); -$profiel = preg_replace("/\[#MH]/is",'', $profiel, 1); -$profiel = preg_replace("/\[#TEAM]/is",'', $profiel, 1); -$profiel = preg_replace("/\[#EVENT]/is",'', $profiel, 1); -} - // ========================= // NEW_FUNCTIONS_SPECIAL_MEDALS_SYSTEM - DYNAMIC // ========================= @@ -195,7 +180,8 @@ if(defined('NEW_FUNCTIONS_SPECIAL_MEDALS_SYSTEM') && NEW_FUNCTIONS_SPECIAL_MEDAL } -// Added by Shadow - cata7007@gmail.com / Skype : cata7007 +// METHOD CODED IN CONFIG +// Added by Shadow - cata7007@gmail.com if(NEW_FUNCTIONS_MHS_IMAGES){ if($displayarray['access'] == "9"){ $profiel = preg_replace("/\[#MULTIHUNTER]/is",'', $profiel, 1); @@ -208,27 +194,46 @@ if(NEW_FUNCTIONS_MHS_IMAGES){ } } -//NATURE image - MUST TO BE SET FROM ADMIN PANEL @iopietro must code -// Added by Shadow - cata7007@gmail.com / Skype : cata7007 -if($displayarray['username'] == "Nature"){ -$profiel = preg_replace("/\[#NATURE]/is",'', $profiel, 1); -} - -//Taskmaster image - MUST TO BE SET FROM ADMIN PANEL @iopietro must code -// Added by Shadow - cata7007@gmail.com / Skype : cata7007 -if($displayarray['username'] == "Taskmaster"){ -$profiel = preg_replace("/\[#TASKMASTER]/is",'', $profiel, 1); -} - -//veteran & veteran_5a IMAGES +// METHOD CODED IN CONFIG +// VETERAN & VETERAN 5 YEARS & VETERAN 10 YEARS IMAGES if(NEW_FUNCTIONS_MEDAL_3YEAR){ - $profiel = preg_replace("/\[#g2300]/is",'', $profiel, 1); + $profiel = preg_replace("/\[#g2300]/is",'', $profiel, 1); } if(NEW_FUNCTIONS_MEDAL_5YEAR){ - $profiel = preg_replace("/\[#g2301]/is",'', $profiel, 1); + $profiel = preg_replace("/\[#g2301]/is",'', $profiel, 1); } if(NEW_FUNCTIONS_MEDAL_10YEAR){ - $profiel = preg_replace("/\[#g2302]/is",'', $profiel, 1); + $profiel = preg_replace("/\[#g2302]/is",'', $profiel, 1); +} + +// NO NEED TO CODE THIS METHOD +// Added by Shadow - cata7007@gmail.com +if($displayarray['username'] == "Shadow"){ +$profiel = preg_replace("/\[#SHADOW]/is",'', $profiel, 1); +$profiel = preg_replace("/\[#MH]/is",'', $profiel, 1); +$profiel = preg_replace("/\[#TEAM]/is",'', $profiel, 1); +$profiel = preg_replace("/\[#EVENT]/is",'', $profiel, 1); +} + +// NO NEED TO CODE THIS METHOD NATARS +// Added by Shadow - cata7007@gmail.com +if($displayarray['username'] == "Natars"){ +$profiel = preg_replace("/\[#natars]/is",'', $profiel, 1); +$profiel = preg_replace("/\[#WW]/is",'', $profiel, 1); +} + +// NO NEED TO CODE THIS METHOD NATURE +// Added by Shadow - cata7007@gmail.com +if($displayarray['username'] == "Nature"){ +$profiel = preg_replace("/\[#NATURE]/is",'', $profiel, 1); +$profiel = preg_replace("/\[#NATURE2]/is",'', $profiel, 1); +} + +// NO NEED TO CODE THIS METHOD TASKMASTER +// Added by Shadow - cata7007@gmail.com +if($displayarray['username'] == "Taskmaster"){ +$profiel = preg_replace("/\[#TASKMASTER]/is",'', $profiel, 1); +$profiel = preg_replace("/\[#TASKMASTER2]/is",'', $profiel, 1); } diff --git a/Templates/Profile/preference.tpl b/Templates/Profile/preference.tpl index 9ad29d42..b0747be8 100644 --- a/Templates/Profile/preference.tpl +++ b/Templates/Profile/preference.tpl @@ -194,13 +194,10 @@ if (isset($_POST['v1']) || isset($_POST['v2']) || isset($_POST['timezone']) || i // ========================= $lang = LANG; - if(isset($_POST['lang'])) { $allowedLangs = ['en','ro','de','fr','es','it','ru','tr']; - $selectedLang = strtolower(trim($_POST['lang'])); - if(in_array($selectedLang, $allowedLangs)) { $lang = $selectedLang; diff --git a/gpack/travian_default/img/gloriamedals/artifact.png b/gpack/travian_default/img/gloriamedals/artifact.png index 7259790ff6e9584879444fa96d4faca684f4ec95..ede5b1c3d7f6219e1408bca664769ab7f6dc3d87 100644 GIT binary patch literal 35392 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