Jump to content
Korean Random

yepev

User
  • Content Count

    2,470
  • Joined

  • Days Won

    20

Everything posted by yepev

  1. /** * Calculate account WN8. * * @return int * * @throws Exception */ public function calculate(): int { // If WN8 was not calculated yet if (is_null($this->wn8)) { // Get account_id $account_id = $this->account_id; // Get summary values $summary = $this->api->get('wot/account/info', [ 'fields' => 'statistics.all.battles,statistics.all.frags,statistics.all.damage_dealt,statistics.all.dropped_capture_points,statistics.all.spotted,statistics.all.wins', 'account_id' => $account_id ])->$account_id->statistics->all; // Get tanks values $tanks = $this->api->get('wot/account/tanks', ['fields' => 'tank_id,statistics.battles', 'account_id' => $account_id])->$account_id; // If this account has no tanks data skip calculation and return 0 if (empty($tanks)) { $this->wn8 = 0; return $this->wn8; } // WN8 expected calculation $expectedTankValues = $this->getExpectedTankValues(); $expDAMAGE = $expFRAGS = $expSPOT = $expDEF = $expWIN = 0; // Tanks missing in expected tank values but existing in account $missing = array(); // Calculated account expected values foreach ($tanks AS $tank) { // Tank exists in expected tank values if (array_key_exists($tank->tank_id, $expectedTankValues)) { // Expected values for current tank $expected = $expectedTankValues[$tank->tank_id]; // Battles on current tank $tank_battles = $tank->statistics->battles; // Calculate expected values for current tank $expDAMAGE += $expected->expDamage * $tank_battles; $expSPOT += $expected->expSpot * $tank_battles; $expFRAGS += $expected->expFrag * $tank_battles; $expDEF += $expected->expDef * $tank_battles; $expWIN += 0.01 * $expected->expWinRate * $tank_battles; // Tank missing in expected tank values so add it to the list } else { $missing [] = $tank->tank_id; } } // User want accurate calculation if ($this->accurate_calculation && !empty($missing)) { // Get missing tanks stats from API server $missing_tanks = $this->api->get('wot/tanks/stats', ['tank_id' => implode(',', $missing), 'fields' => 'tank_id,all.battles,all.frags,all.damage_dealt,all.dropped_capture_points,all.spotted,all.wins', 'account_id' => $account_id])->$account_id; // Reduce account summary data foreach ($missing_tanks AS $tank) { $summary->damage_dealt -= $tank->all->damage_dealt; $summary->spotted -= $tank->all->spotted; $summary->frags -= $tank->all->frags; $summary->dropped_capture_points -= $tank->all->dropped_capture_points; $summary->wins -= $tank->all->wins; } } // If there are missing tanks and searching for info is set to TRUE, get those values if (!empty($missing) && $this->search_missing_tanks) { $this->missing_tanks = $this->api->get('wot/encyclopedia/tankinfo', ['tank_id' => implode(',', $missing), 'fields' => 'localized_name']); } // Calculate WN8 $rDAMAGE = $summary->damage_dealt / $expDAMAGE; $rSPOT = $summary->spotted / $expSPOT; $rFRAG = $summary->frags / $expFRAGS; $rDEF = $summary->dropped_capture_points / $expDEF; $rWIN = $summary->wins / $expWIN; $rWINc = max(0, ($rWIN - 0.71) / (1 - 0.71)); $rDAMAGEc = max(0, ($rDAMAGE - 0.22) / (1 - 0.22)); $rFRAGc = max(0, min($rDAMAGEc + 0.2, ($rFRAG - 0.12) / (1 - 0.12))); $rSPOTc = max(0, min($rDAMAGEc + 0.1, ($rSPOT - 0.38) / (1 - 0.38))); $rDEFc = max(0, min($rDAMAGEc + 0.1, ($rDEF - 0.10) / (1 - 0.10))); $wn8 = 980 * $rDAMAGEc + 210 * $rDAMAGEc * $rFRAGc + 155 * $rFRAGc * $rSPOTc + 75 * $rDEFc * $rFRAGc + 145 * MIN(1.8, $rWINc); // Ok we have WN8, store it $this->wn8 = round($wn8, 2); } // Return our mighty number return $this->wn8; } Отсюда
  2. @HEKPOMAHT нет конечно. Во-первых это разные домены, во вторых этот коммит был после.
  3. Так вот же они: https://modxvm.com/ru/таблица-ожидаемых-значений-wn8/
  4. @MaxWatson ожидаемых значений для аккаунта не существует, на то они и ожидаемые)) Нужно по формуле WN8 подставить статистику аккаунта и актуальные ожидаемые значения, так и получится WN8 аккаунта.
  5. Найти программиста, который сможет это починить, или стать таким программистом самому.
  6. @emsiss сверь версии. Если на лесте уже 1.20.0.1, то надо XVM из нижней таблицы.
  7. @emsiss чистый мод XVM есть на официальном сайте XVM и он работает. https://modxvm.com/ru/скачать-xvm/
  8. Жестко прописанный путь D:\Projects\Wargaming_new_2\ закрался в сборки, например в этом файле D:\Projects\Wargaming_new_2\xvm-components\XFW.Loader\src\xfw_loader\python\__init__.py Иногда он всплывает в логах Python у разных людей, хотя игра стоит в другой папке. Наверное, при сборке здесь должен быть относительный путь?
  9. @HeydrichA выше в теме есть ссылка, там всё понятно написано и все числа есть на графиках.
  10. Указали бы, если бы использовали. Но вы ошиблись, XVM не использует никакие из этих библиотек.
  11. Если я молчу, то что вы цитируете? Случайно не моё сообщение, где я говорю, что логи не те? Прямо магия какая-то И где же ваш лог с проблемой и без левых модов?
  12. Там же написано, что надо подождать 12 часов после отключения анонимайзера, тогда стата вернётся.
  13. @[email protected] без логов невозможно помочь. Он тоже не прикрепил нужные логи. Его логи с зоопарком левых модов, а не только с XVM. Вот именно, пока вы упираетесь и играете в молчанку, ничего не решится.
  14. Врачу также отвечаешь? Не хочешь помощи? Помоги себе сам. Зачем вообще обращался, не понятно
  15. Обновляйся на нормальную ОС, седьмая винда устарела много лет назад.
×
×
  • Create New...