some fix
This commit is contained in:
novgorodschi catalin
2026-08-01 15:52:21 +03:00
parent 523e81df07
commit 84e00c41f0
6 changed files with 98 additions and 24 deletions
@@ -4,8 +4,10 @@
## --------------------------------------------------------------------------- ##
## Natarii isi ridica singuri Minunea Lumii din capitala lor. ##
## ##
## Pornesc dupa un numar configurabil de zile de la aparitia planurilor de ##
## constructie (NATARS_WW_START_DELAY) si urca nivel cu nivel, folosind ##
## Pornesc dupa un numar configurabil de zile de la DATA planurilor de ##
## constructie (NATARS_WW_START_DELAY) - dar nu au nevoie de planuri ca sa ##
## construiasca; acelea sunt o conditie doar pentru jucatori. Urca nivel cu ##
## nivel, folosind ##
## timpii REALI din datele de joc (bid40), scalati cu viteza serverului. ##
## ##
## Ca in Travian: la nivelul 100 Minunea e gata (si serverul se incheie), iar ##
@@ -31,12 +33,17 @@ trait AutomationNatarsWWBuild
return false;
}
// Planurile trebuie sa fi aparut deja: pana atunci nici jucatorii nu pot
// construi, deci nu are sens ca Natarii s-o ia inainte.
if (!method_exists($database, 'areArtifactsSpawned') || !$database->areArtifactsSpawned(true)) {
return false;
}
// NATARII NU AU NEVOIE DE PLANURI.
//
// Planurile de constructie sunt o conditie doar pentru JUCATORI - vezi
// Building::allowWwUpgrade(), care verifica ce detine jucatorul sau
// alianta lui. Natarii isi ridica Minunea neconditionat, exact ca in
// Travian.
//
// Data aparitiei planurilor ramane totusi reperul de la care se
// masoara intarzierea, dar o calculam din configuratie, nu din baza de
// date: asa Natarii pornesc la timp chiar daca planurile intarzie sau
// artefactele sunt oprite pe server.
$planTime = strtotime(START_DATE)
+ ((defined('NATARS_WW_BUILDING_PLAN_SPAWN_TIME') ? (int) NATARS_WW_BUILDING_PLAN_SPAWN_TIME : 0) * 86400);
@@ -47,7 +54,11 @@ trait AutomationNatarsWWBuild
return false;
}
$natarUid = defined('NATARS_UID') ? (int) NATARS_UID : 2;
// ATENTIE: NATARS_UID e constanta de CLASA (Artifacts::NATARS_UID), nu
// una globala. defined('NATARS_UID') intoarce mereu false, deci o
// verificare cu defined() ar folosi tacut o valoare gresita si Natarii
// n-ar mai fi gasiti niciodata.
$natarUid = class_exists('Artifacts') ? (int) Artifacts::NATARS_UID : 3;
// capitala Natarilor: satul lor care are slotul de Minune
$res = mysqli_query($database->dblink,
+4 -4
View File
@@ -4293,8 +4293,8 @@ tz_def('TZ_RPT_F_WON_LOSS', 'Won with losses');
tz_def('TZ_RPT_F_LOST', 'Lost');
//////////////////////////////////////////////////////////////////////////////////////////////////////
// MINUNEA LUMII A NATARILOR
// EROU - regenerarea totala (baza + iteme)
//////////////////////////////////////////////////////////////////////////////////////////////////////
tz_def('TZ_WW_NATARS', 'Natars');
tz_def('CONF_SERV_NATARS_WW_START_DELAY', 'Natars\' World Wonder start');
tz_def('CONF_SERV_NATARS_WW_START_DELAY_TOOLTIP', 'How many days after the construction plans appear the Natars start building their own World Wonder. Scaled by server speed. 0 disables it.');
tz_def('TZ_HERO_REGEN_TOTAL', 'Health regeneration');
tz_def('TZ_HERO_REGEN_BASE', 'base');
tz_def('TZ_HERO_REGEN_ITEMS', 'from items');
+4 -4
View File
@@ -4236,8 +4236,8 @@ tz_def('TZ_RPT_F_WON_LOSS', 'Gagné avec pertes');
tz_def('TZ_RPT_F_LOST', 'Perdu');
//////////////////////////////////////////////////////////////////////////////////////////////////////
// MINUNEA LUMII A NATARILOR
// EROU - regenerarea totala (baza + iteme)
//////////////////////////////////////////////////////////////////////////////////////////////////////
tz_def('TZ_WW_NATARS', 'Natars');
tz_def('CONF_SERV_NATARS_WW_START_DELAY', 'Debut de la Merveille des Natars');
tz_def('CONF_SERV_NATARS_WW_START_DELAY_TOOLTIP', 'Combien de jours apres l\'apparition des plans de construction les Natars commencent leur propre Merveille du Monde. Ajuste selon la vitesse du serveur. 0 desactive.');
tz_def('TZ_HERO_REGEN_TOTAL', 'Régénération des points de vie');
tz_def('TZ_HERO_REGEN_BASE', 'de base');
tz_def('TZ_HERO_REGEN_ITEMS', 'des objets');
+4 -4
View File
@@ -4033,8 +4033,8 @@ tz_def('TZ_RPT_F_WON_LOSS', 'Castigat cu pierderi');
tz_def('TZ_RPT_F_LOST', 'Pierdut');
//////////////////////////////////////////////////////////////////////////////////////////////////////
// MINUNEA LUMII A NATARILOR
// EROU - regenerarea totala (baza + iteme)
//////////////////////////////////////////////////////////////////////////////////////////////////////
tz_def('TZ_WW_NATARS', 'Natari');
tz_def('CONF_SERV_NATARS_WW_START_DELAY', 'Pornirea Minunii Natarilor');
tz_def('CONF_SERV_NATARS_WW_START_DELAY_TOOLTIP', 'Dupa cate zile de la aparitia planurilor incep Natarii propria Minune a Lumii. Se scaleaza cu viteza serverului. 0 dezactiveaza.');
tz_def('TZ_HERO_REGEN_TOTAL', 'Regenerarea vietii');
tz_def('TZ_HERO_REGEN_BASE', 'de baza');
tz_def('TZ_HERO_REGEN_ITEMS', 'din iteme');
+63 -2
View File
@@ -79,6 +79,12 @@ $renderAddLink = function ($action) use ($hero_info, $id, $heroStatColumns) {
.t4h-panel{background:#f2f2f2;border:1px solid #c9c9c9;padding:6px 8px;margin-bottom:8px}
.t4h-head{display:flex;justify-content:space-between;align-items:center;font-weight:bold;color:#333;margin-bottom:5px}
.t4h-tbl{width:100%;border-collapse:collapse}
/* forta adusa de echipament, langa valoarea de baza */
.t4h-item{color:#c87f0a;font-weight:bold;font-size:11px}
/* regenerarea totala: discreta, dar vizibila */
.t4h-regen{margin:4px 0 8px 0;padding:4px 8px;border-left:3px solid #7db72f;
background:#f4faec;font-size:12px}
.t4h-regen-detail{color:#777;font-size:11px}
.t4h-tbl td{padding:3px 5px;vertical-align:middle;background:none;border:1px solid #dcdcdc}
.t4h-name{width:112px;color:#333}
.t4h-val{width:78px;color:#000}
@@ -125,11 +131,30 @@ $renderAddLink = function ($action) use ($hero_info, $id, $heroStatColumns) {
<span><?php echo defined('TZ_POINTS') ? TZ_POINTS : 'Points'; ?></span>
</div>
<?php
/**
* Forta de lupta data de itemele echipate (fight_strength).
*
* Fiecare arma si scut adauga o valoare fixa la puterea eroului in
* lupta - de exemplu 1500 pentru Elite Heavy Blade. Bonusul intra deja
* in calculul luptei (Battle.php, prin HeroBattleBonus::statBonus), dar
* nu se vedea nicaieri in pagina, asa ca jucatorul nu avea cum sa stie
* cat ii aduce echipamentul.
*/
$t4ItemStrength = 0;
if (class_exists('HeroBattleBonus') && HeroBattleBonus::enabled()) {
$t4ItemStrength = (int) HeroBattleBonus::statBonus($session->uid);
}
?>
<table class="t4h-tbl">
<?php
// nume afisat, valoarea, punctele investite si cheia pentru (+)
$t4Rows = array(
array(OFFENCE, $hero_info['atk'], (int) $hero_info['attack'], 'off'),
array(OFFENCE, $t4ItemStrength > 0
? $hero_info['atk'] . ' <span class="t4h-item">+' . number_format($t4ItemStrength) . '</span>'
: $hero_info['atk'], (int) $hero_info['attack'], 'off'),
array(DEFENCE, $hero_info['dc'] . '/' . $hero_info['di'], (int) $hero_info['defence'], 'deff'),
array(OFF_BONUS, $hero_info['ob'] . '%', (int) $hero_info['attackbonus'], 'obonus'),
array(DEF_BONUS, $hero_info['db'] . '%', (int) $hero_info['defencebonus'], 'dbonus'),
@@ -355,7 +380,43 @@ $renderAddLink = function ($action) use ($hero_info, $id, $heroStatColumns) {
<?php } ?>
<p><?php echo YOUR_HERO_HAS; ?> <b><?php echo floor($hero_info['health']); ?></b>% <?php echo OF_HIT_POINTS; ?>.<br/>
<?php echo YOUR_HERO_HAS; ?> <?php echo CONQUERED; ?> <b><?php echo $database->VillageOasisCount($village->wid); ?></b> <a href="build.php?id=<?php echo $id; ?>&land"><?php echo OASES; ?></a>.</p>
<?php echo YOUR_HERO_HAS; ?> <?php echo CONQUERED; ?> <b><?php echo $database->VillageOasisCount($village->wid); ?></b> <a href="build.php?id=<?php echo $id; ?>&land"><?php echo OASES; ?></a>.</p>
<?php
/**
* Regenerarea totala pe zi: cea data de puncte plus cea din iteme.
*
* Cizmele de Regenerare / Refacere / Vindecare adauga puncte de viata pe zi
* (regen_hp), aplicate in AutomationHero. Pana acum efectul lor nu aparea
* nicaieri, deci nu se vedea daca itemul face ceva.
*/
$t4BaseRegen = (int) $hero_info['regeneration'] * 5 * SPEED;
$t4ItemRegen = 0;
// HeroItems nu are enabled(); flagul se verifica prin HeroBattleBonus,
// care il expune si e deja incarcat pe aceasta pagina.
if (class_exists('HeroItems') && class_exists('HeroBattleBonus')
&& HeroBattleBonus::enabled() && defined('HB_REGEN_HP')) {
$t4Items = new HeroItems();
$t4Bon = $t4Items->getBonuses($session->uid);
if ($t4Bon && !empty($t4Bon[HB_REGEN_HP])) {
$t4ItemRegen = (int) $t4Bon[HB_REGEN_HP];
}
}
if ($t4ItemRegen > 0) {
?>
<p class="t4h-regen">
<?php echo defined('TZ_HERO_REGEN_TOTAL') ? TZ_HERO_REGEN_TOTAL : 'Health regeneration'; ?>:
<b><?php echo number_format($t4BaseRegen + $t4ItemRegen); ?></b>/<?php echo DAY; ?>
<span class="t4h-regen-detail">(<?php echo number_format($t4BaseRegen); ?>
<?php echo defined('TZ_HERO_REGEN_BASE') ? TZ_HERO_REGEN_BASE : 'base'; ?>
+ <?php echo number_format($t4ItemRegen); ?>
<?php echo defined('TZ_HERO_REGEN_ITEMS') ? TZ_HERO_REGEN_ITEMS : 'from items'; ?>)</span>
</p>
<?php } ?>
<?php
// NOTE: the actions below are triggered by GET (?add=...) and modify
+3 -1
View File
@@ -92,7 +92,9 @@ if ($result && mysqli_num_rows($result) > 0) {
// Minunea Natarilor se evidentiaza: nu e a unui jucator, iar cand ajunge
// la nivelul 100 serverul se incheie - merita sa sara in ochi.
$isNatarWW = (defined('NATARS_UID') && (int) $row['id'] === (int) NATARS_UID);
// NATARS_UID e constanta de clasa, nu globala - vezi Artifacts.
$psNatarUid = class_exists('Artifacts') ? (int) Artifacts::NATARS_UID : 3;
$isNatarWW = ((int) $row['id'] === $psNatarUid);
?>
<tr<?php echo $isNatarWW ? ' class="ww-natars"' : ''; ?>>
<td><?php echo $count; ?>.</td>