mirror of
https://github.com/Shadowss/TravianZ.git
synced 2026-08-09 04:40:59 +00:00
fix
This commit is contained in:
@@ -159,6 +159,27 @@ trait AutomationMarket {
|
||||
if($this->getTypeLevel(28, $from) != 0) {
|
||||
$maxcarry2 *= $bid28[$this->getTypeLevel(28, $from)]['attri'] / 100;
|
||||
}
|
||||
|
||||
// Bonusul de alianta "Commerce".
|
||||
//
|
||||
// BUG REPARAT: trimiterea repetata (2x / 3x) e executata de aici,
|
||||
// nu de Market.php, iar aici bonusul lipsea. Prima livrare pleca cu
|
||||
// capacitatea marita (calculata in Market.php), dar repetarea o
|
||||
// recalcula fara bonus, cerea mai multi negustori decat exista si
|
||||
// se oprea in tacere.
|
||||
//
|
||||
// Se ia dupa PROPRIETARUL satului, nu dupa sesiune: aici rulam din
|
||||
// automatizare, unde nu exista un jucator conectat.
|
||||
if (class_exists('AllianceBonus') && AllianceBonus::enabled()) {
|
||||
$ownerFrom = (int) $database->getVillageField($from, 'owner');
|
||||
|
||||
if ($ownerFrom > 0) {
|
||||
$maxcarry2 *= AllianceBonus::multiplier($ownerFrom, AllianceBonus::COMMERCE);
|
||||
}
|
||||
}
|
||||
|
||||
$maxcarry2 = floor($maxcarry2);
|
||||
|
||||
|
||||
$resource = [$wtrans, $ctrans, $itrans, $crtrans];
|
||||
$reqMerc = ceil((array_sum($resource) - 0.1) / $maxcarry2);
|
||||
|
||||
@@ -48,7 +48,7 @@ trait AutomationPlayerStatistics
|
||||
$now = time();
|
||||
|
||||
$res = mysqli_query($database->dblink,
|
||||
"SELECT MAX(recorded_at) AS last FROM " . $table);
|
||||
"SELECT MAX(recorded_at) AS `last` FROM " . $table);
|
||||
$row = $res ? mysqli_fetch_assoc($res) : null;
|
||||
$last = $row ? (int) $row['last'] : 0;
|
||||
|
||||
@@ -78,7 +78,7 @@ trait AutomationPlayerStatistics
|
||||
// rang, populatie, sate si puncte de lupta, per jucator
|
||||
$q = "SELECT
|
||||
u.id AS uid,
|
||||
u.oldrank AS rank,
|
||||
u.oldrank AS `rank`,
|
||||
COALESCE(SUM(v.pop), 0) AS population,
|
||||
COUNT(CASE WHEN v.type != 99 THEN v.wref END) AS villages,
|
||||
u.apall AS attack_points,
|
||||
@@ -91,6 +91,12 @@ trait AutomationPlayerStatistics
|
||||
$res = mysqli_query($database->dblink, $q);
|
||||
|
||||
if (!$res) {
|
||||
// Fara asta, o interogare esuata lasa tabela goala la nesfarsit
|
||||
// fara niciun semn. Exact ce s-a intamplat cu aliasul `rank`, care
|
||||
// e cuvant rezervat din MySQL 8.0 si trebuie protejat.
|
||||
error_log('[TravianZ] player statistics snapshot failed: '
|
||||
. mysqli_error($database->dblink));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -125,11 +131,18 @@ trait AutomationPlayerStatistics
|
||||
}
|
||||
|
||||
foreach (array_chunk($values, 200) as $chunk) {
|
||||
mysqli_query($database->dblink,
|
||||
$ok = mysqli_query($database->dblink,
|
||||
"INSERT IGNORE INTO " . $table . "
|
||||
(uid, recorded_at, `rank`, population, villages,
|
||||
troop_count, troop_upkeep, attack_points, defence_points)
|
||||
VALUES " . implode(',', $chunk));
|
||||
|
||||
if (!$ok) {
|
||||
error_log('[TravianZ] player statistics insert failed: '
|
||||
. mysqli_error($database->dblink));
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+10
-1
@@ -184,8 +184,17 @@ class Market
|
||||
|
||||
// Bonusul de alianta "Commerce". Se inmulteste cu biroul comercial, ca
|
||||
// in T4: 750 de baza x 2.2 (Commerce 4) x 5 (birou 20) = 8250.
|
||||
// Se ia dupa PROPRIETARUL satului, nu dupa sesiune, ca sa dea acelasi
|
||||
// rezultat si cand codul ruleaza in alt context (sitter, automatizare).
|
||||
// Calea de repetare din AutomationMarket foloseste aceeasi regula.
|
||||
if (class_exists('AllianceBonus') && AllianceBonus::enabled()) {
|
||||
$this->maxcarry *= AllianceBonus::multiplier((int) $session->uid, AllianceBonus::COMMERCE);
|
||||
$carryOwner = isset($village->wid)
|
||||
? (int) $database->getVillageField($village->wid, 'owner')
|
||||
: (int) $session->uid;
|
||||
|
||||
if ($carryOwner > 0) {
|
||||
$this->maxcarry *= AllianceBonus::multiplier($carryOwner, AllianceBonus::COMMERCE);
|
||||
}
|
||||
}
|
||||
|
||||
$this->maxcarry = floor($this->maxcarry);
|
||||
|
||||
Reference in New Issue
Block a user