refactor
This commit is contained in:
parent
1645f58a63
commit
fc17eada24
486
AI.php
Normal file
486
AI.php
Normal file
@ -0,0 +1,486 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Core\Db;
|
||||||
|
use Helper\Conversion;
|
||||||
|
use Item\Data\Bonuses;
|
||||||
|
use Item\Data\Properties;
|
||||||
|
use Item\Data\Requirements;
|
||||||
|
use Model\Constant\ShopOtdel;
|
||||||
|
|
||||||
|
ini_set('xdebug.var_display_max_depth', 10);
|
||||||
|
ini_set('xdebug.var_display_max_children', 256);
|
||||||
|
ini_set('xdebug.var_display_max_data', 1024);
|
||||||
|
|
||||||
|
if (!defined('GAME_VERSION')) {
|
||||||
|
require_once '_incl_data/autoload.php';
|
||||||
|
}
|
||||||
|
|
||||||
|
//const GAME = true;
|
||||||
|
$user = User::start();
|
||||||
|
|
||||||
|
//var_dump($user->info['testStats'], $user->info['testStats2']);
|
||||||
|
//exit();
|
||||||
|
|
||||||
|
$im = Db::getColumn("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'items_main'");
|
||||||
|
$iu = Db::getColumn("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'items_users'");
|
||||||
|
|
||||||
|
$u = Db::getColumn("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'users'");
|
||||||
|
$s = Db::getColumn("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'stats'");
|
||||||
|
|
||||||
|
$p = Db::getRows('select * from const_stats');
|
||||||
|
|
||||||
|
var_dump((new ShopOtdel())->getGroups());
|
||||||
|
?>
|
||||||
|
|
||||||
|
|
||||||
|
<div style="display: grid; grid-template-columns: 50% 50%; word-wrap: break-word;">
|
||||||
|
<div>
|
||||||
|
<b><u>$user->[info]</u></b><br>
|
||||||
|
<?php
|
||||||
|
$rr = 1;
|
||||||
|
foreach ($user->info as $k => $v) {
|
||||||
|
if (isset($user->is[$k])) {
|
||||||
|
$k .= " <span style='background-color: lightcyan;'>[{$user->is[$k]}]</span>";
|
||||||
|
}
|
||||||
|
if ($k == 'stats') {
|
||||||
|
echo 'stats = ARRAY<br>';
|
||||||
|
foreach (Conversion::dataStringToArray($v) as $dk => $dv) {
|
||||||
|
if (isset($user->is[$dk])) {
|
||||||
|
$dk .= " <span style='background-color: lightcyan;'>[{$user->is[$dk]}]</span>";
|
||||||
|
}
|
||||||
|
echo "<span style='background-color: #99FFCC; margin-left: 5px;'>$dk = $dv</span><br>";
|
||||||
|
}
|
||||||
|
$k = '';
|
||||||
|
$v = '';
|
||||||
|
}
|
||||||
|
echo "$rr. $k = $v<br>";
|
||||||
|
$rr++;
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<b><u>$user->[stats]</u></b><br>
|
||||||
|
<?php
|
||||||
|
$rr = 1;
|
||||||
|
foreach ($user->stats as $k => $v) {
|
||||||
|
if (isset($user->is[$k])) {
|
||||||
|
$k .= " <span style='background-color: lightcyan;'>[{$user->is[$k]}]";
|
||||||
|
} else {
|
||||||
|
$k = "<span>$k";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "$rr. $k</span> = $v<br>";
|
||||||
|
$rr++;
|
||||||
|
if (is_array($v)) {
|
||||||
|
foreach ($v as $k2 => $v2) {
|
||||||
|
echo "<span style='background-color: #99FFCC; margin-left: 5px;'>$k2 = $v2</span><br>";
|
||||||
|
|
||||||
|
if (is_array($v2)) {
|
||||||
|
foreach ($v2 as $k3 => $v3) {
|
||||||
|
echo "<span style='background-color: aliceblue; margin-left: 10px;'>$k3 = $v3</span><br>";
|
||||||
|
if ($k3 === 'data' && $v3 !== '[]') {
|
||||||
|
$v3 .= '|add_mib2=43';
|
||||||
|
$itemData = Conversion::dataStringToArray($v3);
|
||||||
|
|
||||||
|
echo 'DATA TR_<br>';
|
||||||
|
foreach ((new Requirements($itemData))->get() as $k => $v) {
|
||||||
|
echo "$k = $v<br>";
|
||||||
|
}
|
||||||
|
echo 'DATA ADD_<br>';
|
||||||
|
foreach ((new Bonuses($itemData))->get() as $k => $v) {
|
||||||
|
echo "$k = $v<br>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
Совпадения по параметрам $user->info и $user->stats. Возможно, это ничего не значит, а может и дублирование.<br><br>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
$i = 1;
|
||||||
|
$i2 = 1;
|
||||||
|
foreach ($user->info as $a => $b) {
|
||||||
|
if (isset($user->stats[$a])) {
|
||||||
|
echo "$i. info = stats: $a = $b<br>";
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo '<br>';
|
||||||
|
foreach ($user->stats as $a2 => $b2) {
|
||||||
|
if (isset($user->info[$a2])) {
|
||||||
|
echo "$i2. stats = info: $a2 = $b2<br>";
|
||||||
|
$i2++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<br>
|
||||||
|
<div style="display: grid; grid-template-columns: auto auto;">
|
||||||
|
<div> Поля в базе users
|
||||||
|
<?php var_dump($u); ?>
|
||||||
|
</div>
|
||||||
|
<div> Поля в базе stats
|
||||||
|
<?php var_dump($s); ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div style="margin-top: 10px; background-color: aliceblue">Отдельно, уже согласованные параметры предметов, которые могут находиться исключительно в поле data</div>
|
||||||
|
<div style="display: grid; grid-template-columns: auto auto auto; background-color: aliceblue">
|
||||||
|
<div> sv_* (хотим убрать)
|
||||||
|
<?php var_dump(Properties::$names); ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="display: grid; grid-template-columns: auto auto;">
|
||||||
|
<div> Поля в базе items_main
|
||||||
|
<?php var_dump($im); ?>
|
||||||
|
</div>
|
||||||
|
<div> Поля в базе items_users
|
||||||
|
<?php var_dump($iu); ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<hr> Параметры игрока.<br><br>
|
||||||
|
<div style="display: grid; grid-template-columns: auto auto auto;">
|
||||||
|
<div> Заскриптованные
|
||||||
|
<?php var_dump($user->is); ?>
|
||||||
|
</div>
|
||||||
|
<div> Хотим оставить
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div> Хотим убрать
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr> Все возможные поля в $user->stats. Некоторые имена полей генерируются динамически на лету, поэтому соответствия имени нет. А каких-то, возможно просто не существует.<br><br>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$st['clanpos'] = 0;
|
||||||
|
$st['levels'] = 0;
|
||||||
|
$st['levels'] = 0;
|
||||||
|
$st['id'] = 0;
|
||||||
|
$st['login'] = 0;
|
||||||
|
$st['lvl'] = 0;
|
||||||
|
$st['hpNow'] = 0;
|
||||||
|
$st['hpAll'] = 0;
|
||||||
|
$st['mpNow'] = 0;
|
||||||
|
$st['mpAll'] = 0;
|
||||||
|
$st['zona'] = 0;
|
||||||
|
$st['zonb'] = 0;
|
||||||
|
$st['items'] = 0;
|
||||||
|
$st['effects'] = 0;
|
||||||
|
$st['reting'] = 0;
|
||||||
|
$st['vip'] = 0;
|
||||||
|
$st['items_img'] = 0;
|
||||||
|
$st['reting'] = 0;
|
||||||
|
$st['wp'] = 0;
|
||||||
|
$st['items'] = 0;
|
||||||
|
$st['reting'] = 0;
|
||||||
|
$st['art'] = 0;
|
||||||
|
$st['maks_itm'] = 0;
|
||||||
|
$st['zonb'] = 0;
|
||||||
|
$st['zona'] = 0;
|
||||||
|
$st['a'] = 0;
|
||||||
|
$st['mg'] = 0;
|
||||||
|
$st['s'] = 0;
|
||||||
|
$st['effects'] = 0;
|
||||||
|
$st['puti'] = 0;
|
||||||
|
$st['slvtm'] = 0;
|
||||||
|
$st['act'] = 0;
|
||||||
|
$st['noeffectbattle1'] = 0;
|
||||||
|
$st['items_img'] = 0;
|
||||||
|
$st['set_pog'] = 0;
|
||||||
|
$st['set_pog2'] = 0;
|
||||||
|
$st['act'] = 0;
|
||||||
|
$st['effects'] = 0;
|
||||||
|
$st['raztac'] = 0;
|
||||||
|
$st['set_natoe'] = 0;
|
||||||
|
$st['act'] = 0;
|
||||||
|
$st['hpAll'] = 0;
|
||||||
|
$st['s4'] = 0;
|
||||||
|
$st['mpAll'] = 0;
|
||||||
|
$st['m1'] = 0;
|
||||||
|
$st['s3'] = 0;
|
||||||
|
$st['m2'] = 0;
|
||||||
|
$st['s6'] = 0;
|
||||||
|
$st['s3'] = 0;
|
||||||
|
$st['m4'] = 0;
|
||||||
|
$st['s2'] = 0;
|
||||||
|
$st['m5'] = 0;
|
||||||
|
$st['za'] = 0;
|
||||||
|
$st['s4'] = 0;
|
||||||
|
$st['zm'] = 0;
|
||||||
|
$st['zaproc'] = 0;
|
||||||
|
$st['s5'] = 0;
|
||||||
|
$st['m19'] = 0;
|
||||||
|
$st['s3'] = 0;
|
||||||
|
$st['antm3'] = 0;
|
||||||
|
$st['s5'] = 0;
|
||||||
|
$st['m10'] = 0;
|
||||||
|
$st['m11'] = 0;
|
||||||
|
$st['m11a'] = 0;
|
||||||
|
$st['m8'] = 0;
|
||||||
|
$st['zona'] = 0;
|
||||||
|
$st['zonb'] = 0;
|
||||||
|
$st['pm'] = 0;
|
||||||
|
$st['a'] = 0;
|
||||||
|
$st['mg'] = 0;
|
||||||
|
$st['zm'] = 0;
|
||||||
|
$st['s5'] = 0;
|
||||||
|
$st['pm'] = 0;
|
||||||
|
$st['s5'] = 0;
|
||||||
|
$st['m11a'] = 0;
|
||||||
|
$st['pm'] = 0;
|
||||||
|
$st['a'] = 0;
|
||||||
|
$st['aall'] = 0;
|
||||||
|
$st['m2all'] = 0;
|
||||||
|
$st['mg'] = 0;
|
||||||
|
$st['m2all'] = 0;
|
||||||
|
$st['zm'] = 0;
|
||||||
|
$st['zma'] = 0;
|
||||||
|
$st['mib'] = 0;
|
||||||
|
$st['mab'] = 0;
|
||||||
|
$st['mg'] = 0;
|
||||||
|
$st['pm'] = 0;
|
||||||
|
$st['pa'] = 0;
|
||||||
|
$st['za'] = 0;
|
||||||
|
$st['mall'] = 0;
|
||||||
|
$st['mg'] = 0;
|
||||||
|
$st['mall'] = 0;
|
||||||
|
$st['m11'] = 0;
|
||||||
|
$st['pm'] = 0;
|
||||||
|
$st['m11'] = 0;
|
||||||
|
$st['m10'] = 0;
|
||||||
|
$st['pa'] = 0;
|
||||||
|
$st['m10'] = 0;
|
||||||
|
$st['za'] = 0;
|
||||||
|
$st['za'] = 0;
|
||||||
|
$st['za'] = 0;
|
||||||
|
$st['yzm'] = 0;
|
||||||
|
$st['yzma'] = 0;
|
||||||
|
$st['yza'] = 0;
|
||||||
|
$st['za'] = 0;
|
||||||
|
$st['hpVinos'] = 0;
|
||||||
|
$st['hpAll'] = 0;
|
||||||
|
$st['s4'] = 0;
|
||||||
|
$st['mpAll'] = 0;
|
||||||
|
$st['mpVinos'] = 0;
|
||||||
|
$st['s6'] = 0;
|
||||||
|
$st['hpProc'] = 0;
|
||||||
|
$st['hpAll'] = 0;
|
||||||
|
$st['mpProc'] = 0;
|
||||||
|
$st['hpNow'] = 0;
|
||||||
|
$st['hpAll'] = 0;
|
||||||
|
$st['hpNow'] = 0;
|
||||||
|
$st['hpAll'] = 0;
|
||||||
|
$st['mpNow'] = 0;
|
||||||
|
$st['mpAll'] = 0;
|
||||||
|
$st['mpNow'] = 0;
|
||||||
|
$st['mpAll'] = 0;
|
||||||
|
$st['zona'] = 0;
|
||||||
|
$st['zonb'] = 0;
|
||||||
|
$st['ozash'] = 0;
|
||||||
|
$st['ozmsh'] = 0;
|
||||||
|
$st['weapon1'] = 0;
|
||||||
|
$st['weapon2'] = 0;
|
||||||
|
$st['sheld1'] = 0;
|
||||||
|
$st['sv_'] = 0;
|
||||||
|
$st['sv_i'] = 0;
|
||||||
|
$st['dom'] = 0;
|
||||||
|
$st['prsu'] = 0;
|
||||||
|
$st['x'] = 0;
|
||||||
|
$st['y'] = 0;
|
||||||
|
$st['s'] = 0;
|
||||||
|
$st['reting'] = 0;
|
||||||
|
$st['reting'] = 0;
|
||||||
|
$st['maxves'] = 0;
|
||||||
|
$st['speed_dungeon'] = 0;
|
||||||
|
$st['speedhp'] = 0;
|
||||||
|
$st['exp'] = 0;
|
||||||
|
$st['reting'] = 0;
|
||||||
|
$st['reting'] = 0;
|
||||||
|
$st['btl_cof'] = 0;
|
||||||
|
$st['prckr'] = 0;
|
||||||
|
$st['btl_cof'] = 0;
|
||||||
|
$st['prckr'] = 0;
|
||||||
|
$st['btl_cof'] = 0;
|
||||||
|
$st['prckr'] = 0;
|
||||||
|
$st['prckr'] = 0;
|
||||||
|
$st['id'] = 0;
|
||||||
|
$st['hpAll'] = 0;
|
||||||
|
$st['hpAll'] = 0;
|
||||||
|
$st['mpAll'] = 0;
|
||||||
|
$st['mpAll'] = 0;
|
||||||
|
$st['this_animal'] = 0;
|
||||||
|
$st['this_animal'] = 0;
|
||||||
|
$st['hpAll'] = 0;
|
||||||
|
$st['mpAll'] = 0;
|
||||||
|
$st['hpAll'] = 0;
|
||||||
|
$st['mpAll'] = 0;
|
||||||
|
$st['add_'] = 0;
|
||||||
|
$st['add_'] = 0;
|
||||||
|
$st['add_'] = 0;
|
||||||
|
$st['s1'] = 0;
|
||||||
|
$st['s1'] = 0;
|
||||||
|
$st['m2'] = 0;
|
||||||
|
$st['s1'] = 0;
|
||||||
|
$st['s1'] = 0;
|
||||||
|
$st['pa2'] = 0;
|
||||||
|
$st['m2'] = 0;
|
||||||
|
$st['s1'] = 0;
|
||||||
|
$st['s1'] = 0;
|
||||||
|
$st['pa2'] = 0;
|
||||||
|
$st['m2'] = 0;
|
||||||
|
$st['s1'] = 0;
|
||||||
|
$st['s1'] = 0;
|
||||||
|
$st['pa2'] = 0;
|
||||||
|
$st['m7'] = 0;
|
||||||
|
$st['s1'] = 0;
|
||||||
|
$st['s1'] = 0;
|
||||||
|
$st['pa2'] = 0;
|
||||||
|
$st['m7'] = 0;
|
||||||
|
$st['s1'] = 0;
|
||||||
|
$st['pa2'] = 0;
|
||||||
|
$st['m7'] = 0;
|
||||||
|
$st['s2'] = 0;
|
||||||
|
$st['s2'] = 0;
|
||||||
|
$st['pa1'] = 0;
|
||||||
|
$st['m4'] = 0;
|
||||||
|
$st['s2'] = 0;
|
||||||
|
$st['s2'] = 0;
|
||||||
|
$st['pa1'] = 0;
|
||||||
|
$st['m2'] = 0;
|
||||||
|
$st['m4'] = 0;
|
||||||
|
$st['s2'] = 0;
|
||||||
|
$st['s2'] = 0;
|
||||||
|
$st['pa1'] = 0;
|
||||||
|
$st['m2'] = 0;
|
||||||
|
$st['m4'] = 0;
|
||||||
|
$st['m15'] = 0;
|
||||||
|
$st['s2'] = 0;
|
||||||
|
$st['s2'] = 0;
|
||||||
|
$st['pa1'] = 0;
|
||||||
|
$st['m2'] = 0;
|
||||||
|
$st['m4'] = 0;
|
||||||
|
$st['m15'] = 0;
|
||||||
|
$st['s2'] = 0;
|
||||||
|
$st['s2'] = 0;
|
||||||
|
$st['pa1'] = 0;
|
||||||
|
$st['m2'] = 0;
|
||||||
|
$st['m4'] = 0;
|
||||||
|
$st['m15'] = 0;
|
||||||
|
$st['s2'] = 0;
|
||||||
|
$st['pa1'] = 0;
|
||||||
|
$st['m2'] = 0;
|
||||||
|
$st['m4'] = 0;
|
||||||
|
$st['m15'] = 0;
|
||||||
|
$st['s3'] = 0;
|
||||||
|
$st['s3'] = 0;
|
||||||
|
$st['pa4'] = 0;
|
||||||
|
$st['m3'] = 0;
|
||||||
|
$st['m1'] = 0;
|
||||||
|
$st['s3'] = 0;
|
||||||
|
$st['s3'] = 0;
|
||||||
|
$st['pa4'] = 0;
|
||||||
|
$st['m3'] = 0;
|
||||||
|
$st['m1'] = 0;
|
||||||
|
$st['s3'] = 0;
|
||||||
|
$st['s3'] = 0;
|
||||||
|
$st['pa4'] = 0;
|
||||||
|
$st['m3'] = 0;
|
||||||
|
$st['m1'] = 0;
|
||||||
|
$st['m5'] = 0;
|
||||||
|
$st['s3'] = 0;
|
||||||
|
$st['s3'] = 0;
|
||||||
|
$st['pa4'] = 0;
|
||||||
|
$st['m3'] = 0;
|
||||||
|
$st['m1'] = 0;
|
||||||
|
$st['m5'] = 0;
|
||||||
|
$st['s3'] = 0;
|
||||||
|
$st['s3'] = 0;
|
||||||
|
$st['pa4'] = 0;
|
||||||
|
$st['m3'] = 0;
|
||||||
|
$st['m1'] = 0;
|
||||||
|
$st['m5'] = 0;
|
||||||
|
$st['m14'] = 0;
|
||||||
|
$st['m3'] = 0;
|
||||||
|
$st['m1'] = 0;
|
||||||
|
$st['m5'] = 0;
|
||||||
|
$st['m14'] = 0;
|
||||||
|
$st['s4'] = 0;
|
||||||
|
$st['hpAll'] = 0;
|
||||||
|
$st['s4'] = 0;
|
||||||
|
$st['s4'] = 0;
|
||||||
|
$st['hpAll'] = 0;
|
||||||
|
$st['s4'] = 0;
|
||||||
|
$st['s4'] = 0;
|
||||||
|
$st['hpAll'] = 0;
|
||||||
|
$st['s4'] = 0;
|
||||||
|
$st['s4'] = 0;
|
||||||
|
$st['hpAll'] = 0;
|
||||||
|
$st['m19'] = 0;
|
||||||
|
$st['s4'] = 0;
|
||||||
|
$st['s4'] = 0;
|
||||||
|
$st['hpAll'] = 0;
|
||||||
|
$st['m19'] = 0;
|
||||||
|
$st['s4'] = 0;
|
||||||
|
$st['s4'] = 0;
|
||||||
|
$st['hpAll'] = 0;
|
||||||
|
$st['za'] = 0;
|
||||||
|
$st['zm'] = 0;
|
||||||
|
$st['s4'] = 0;
|
||||||
|
$st['s4'] = 0;
|
||||||
|
$st['hpAll'] = 0;
|
||||||
|
$st['za'] = 0;
|
||||||
|
$st['zm'] = 0;
|
||||||
|
$st['s4'] = 0;
|
||||||
|
$st['s4'] = 0;
|
||||||
|
$st['hpAll'] = 0;
|
||||||
|
$st['za'] = 0;
|
||||||
|
$st['zm'] = 0;
|
||||||
|
$st['s4'] = 0;
|
||||||
|
$st['hpAll'] = 0;
|
||||||
|
$st['za'] = 0;
|
||||||
|
$st['zm'] = 0;
|
||||||
|
$st['s5'] = 0;
|
||||||
|
$st['m11'] = 0;
|
||||||
|
$st['pzm'] = 0;
|
||||||
|
$st['s6'] = 0;
|
||||||
|
$st['mpAll'] = 0;
|
||||||
|
$st['speedmp'] = 0;
|
||||||
|
$st['s6'] = 0;
|
||||||
|
$st['pzm'] = 0;
|
||||||
|
$st['m10'] = 0;
|
||||||
|
|
||||||
|
$stnames = [];
|
||||||
|
foreach ($st as $k => $v) {
|
||||||
|
if (isset($user->is[$k])) {
|
||||||
|
$v = $user->is[$k];
|
||||||
|
}
|
||||||
|
$stnames[$k] = $v;
|
||||||
|
}
|
||||||
|
var_dump($stnames);
|
||||||
|
|
||||||
|
echo "<h5>Текущая таблица параметров</h5>";
|
||||||
|
foreach ($p as $prow) {
|
||||||
|
echo "{$prow['sys_name']} → {$prow['name']}";
|
||||||
|
if ($prow['is_percentage']) {
|
||||||
|
echo " (%)";
|
||||||
|
}
|
||||||
|
if ($prow['is_requirement']) {
|
||||||
|
echo " <span style='background-color: lightpink;'>[требуется]</span> ";
|
||||||
|
}
|
||||||
|
if ($prow['is_bonus']) {
|
||||||
|
echo " <span style='background-color: lightgreen;'>[даёт]</span> ";
|
||||||
|
}
|
||||||
|
echo "<br>";
|
||||||
|
}
|
@ -1,3 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Enum\ShopId;
|
||||||
|
|
||||||
|
?>
|
||||||
<style>
|
<style>
|
||||||
.wares {
|
.wares {
|
||||||
display: grid;
|
display: grid;
|
||||||
@ -39,8 +44,8 @@
|
|||||||
У вас в наличии:
|
У вас в наличии:
|
||||||
<?php elseif ($actionGifts): ?>
|
<?php elseif ($actionGifts): ?>
|
||||||
<strong>Отдел «Сделать подарки»</strong>
|
<strong>Отдел «Сделать подарки»</strong>
|
||||||
<?php elseif (isset($shop::OTDEL_NAME[$otdel])): ?>
|
<?php elseif ($shop->shopOtdel->getName($otdel)): ?>
|
||||||
<strong>Отдел «<?= $shop::OTDEL_NAME[$otdel] ?>»</strong>
|
<strong>Отдел «<?= $shop->shopOtdel->getName($otdel) ?>»</strong>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -127,7 +132,7 @@
|
|||||||
<td style="width: 280px; vertical-align: top;">
|
<td style="width: 280px; vertical-align: top;">
|
||||||
<div style="display: flex; align-items: flex-end; font-size: smaller; flex-direction: column; gap: 2px;">
|
<div style="display: flex; align-items: flex-end; font-size: smaller; flex-direction: column; gap: 2px;">
|
||||||
<?= $goLis; ?>
|
<?= $goLis; ?>
|
||||||
<?php if ($shopId === $shop::MAIN): ?>
|
<?php if ($shopId === ShopId::MAIN): ?>
|
||||||
<button onclick="location.href='main.php?loc=1.180.0.9&rnd=<?= $code; ?>'">Центральная Площадь</button>
|
<button onclick="location.href='main.php?loc=1.180.0.9&rnd=<?= $code; ?>'">Центральная Площадь</button>
|
||||||
<button onclick="location.href='main.php?loc=1.180.0.368&rnd=<?= $code; ?>'">Подпольная лавка</button>
|
<button onclick="location.href='main.php?loc=1.180.0.368&rnd=<?= $code; ?>'">Подпольная лавка</button>
|
||||||
<button onclick="location.href='main.php?loc=1.180.0.13&rnd=<?= $code; ?>'">Магазин «Берёзка»</button>
|
<button onclick="location.href='main.php?loc=1.180.0.13&rnd=<?= $code; ?>'">Магазин «Берёзка»</button>
|
||||||
@ -164,12 +169,12 @@
|
|||||||
//$i = 1;
|
//$i = 1;
|
||||||
foreach ($otdels as $k => $v) {
|
foreach ($otdels as $k => $v) {
|
||||||
$color = $otdel === $k ? '#C7C7C7' : '#e2e0e0';
|
$color = $otdel === $k ? '#C7C7C7' : '#e2e0e0';
|
||||||
if (in_array($k, array_keys($shop::OTDEL_GROUP_NAME))) {
|
if (in_array($k, array_keys($shop->shopOtdel->getGroups()))) {
|
||||||
if ($i !== 1) {
|
if ($i !== 1) {
|
||||||
echo '<br>';
|
echo '<br>';
|
||||||
}
|
}
|
||||||
echo sprintf('<div style="background-color: #d5d5d5;"><img src="/i/shop_ico/%s.png" alt="%s"> <strong>%s</strong></div>',
|
echo sprintf('<div style="background-color: #d5d5d5;"><img src="/i/shop_ico/%s.png" alt="%s"> <strong>%s</strong></div>',
|
||||||
$i, $shop::OTDEL_GROUP_NAME[$k], $shop::OTDEL_GROUP_NAME[$k]);
|
$i, $shop->shopOtdel->getGroups()[$k], $shop->shopOtdel->getGroups()[$k]);
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
if ($k === 100) {
|
if ($k === 100) {
|
||||||
|
35
_incl_data/class/Enum/ShopId.php
Normal file
35
_incl_data/class/Enum/ShopId.php
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Enum;
|
||||||
|
|
||||||
|
enum ShopId: int
|
||||||
|
{
|
||||||
|
case MAIN = 1;
|
||||||
|
case BEREZKA = 2;
|
||||||
|
case LUKA = 5; // ïåùåðà òûñÿ÷è ïðîêëÿòèé
|
||||||
|
case FLOWER = 6;
|
||||||
|
case BOOKS = 7;
|
||||||
|
case ANIMALS = 8; // ìàãàçèí íîâè÷êà
|
||||||
|
case TAVERN = 9; // íàêîâàëüíÿ
|
||||||
|
case IZLOM = 10;
|
||||||
|
case BLOOD_ALTAR = 11; //àëòàðü êðîâè
|
||||||
|
case TEMPLE = 14;
|
||||||
|
case MUSHROOMS = 17; // îáùèé ðûöàðñêèé
|
||||||
|
case REFERALS = 27;
|
||||||
|
case RULF_HRUNT = 33; // áåçäíà
|
||||||
|
case SHOP_KAT = 44; // ìàãàçèí ðóëüôà õðóíòà, à òû ÷òî òàêîå?
|
||||||
|
case LABORATORY = 45;
|
||||||
|
case NEWBIE = 106; // ïåùåðà ìãëû
|
||||||
|
case KNIGHTS_MAIN = 400; //ìàãàçèí ðåôåðàëîâ
|
||||||
|
case SHOP_PRIZ = 404; // êàìîðêà Ëóêè
|
||||||
|
case SHOP_2 = 609; // ìàãàçèí ãðèáîåäà??
|
||||||
|
case ANVIL = 700; // êàòàêîìáû
|
||||||
|
case ARTEFACTS = 777; //ìàãàçèí ñàìîöâåòîâ
|
||||||
|
case DUNGEON_BEZDNA = 801; // õðàì?!
|
||||||
|
case DUNGEON_PTP = 802; // èçëîì?!
|
||||||
|
case DUNGEON_CATACOMBS = 803; //ëàáîðàòîðèÿ?!?!
|
||||||
|
case DUNGEON_MISTY = 804;
|
||||||
|
case CRYSTALS = 1050;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
10
_incl_data/class/Enum/StatFilterCellName.php
Normal file
10
_incl_data/class/Enum/StatFilterCellName.php
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Enum;
|
||||||
|
|
||||||
|
enum StatFilterCellName: string
|
||||||
|
{
|
||||||
|
case Bonus = 'is_bonus';
|
||||||
|
case Requirement = 'is_requirement';
|
||||||
|
case Percentage = 'is_percentage';
|
||||||
|
}
|
@ -1,228 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
|
|
||||||
use Helper\Conversion;
|
|
||||||
|
|
||||||
class Item
|
|
||||||
{
|
|
||||||
public static array $parameterName = [
|
|
||||||
'sex' => 'Пол',
|
|
||||||
'align' => 'Склонность',
|
|
||||||
'lvl' => 'Уровень',
|
|
||||||
|
|
||||||
'antm3' => 'Мф. против мощности крита',
|
|
||||||
'spasenie' => 'Спасение после смерти',
|
|
||||||
'exp' => 'Получаемый опыт (%)',
|
|
||||||
'gold' => 'Благодать Ангела',
|
|
||||||
'repair_discount' => 'Скидка на ремонт вещей',
|
|
||||||
'repair_z' => 'Бесплатное извлечение заточек',
|
|
||||||
'repair_r' => 'Бесплатное извлечение рун',
|
|
||||||
'speed_dungeon' => 'Скорость передвижения по подземельям',
|
|
||||||
|
|
||||||
's1' => 'Сила',
|
|
||||||
's2' => 'Ловкость',
|
|
||||||
's3' => 'Интуиция',
|
|
||||||
's4' => 'Выносливость',
|
|
||||||
's5' => 'Интеллект',
|
|
||||||
's6' => 'Мудрость',
|
|
||||||
's7' => 'Духовность',
|
|
||||||
|
|
||||||
'a1' => 'Мастерство владения ножами, кинжалами',
|
|
||||||
'a2' => 'Мастерство владения топорами, секирами',
|
|
||||||
'a3' => 'Мастерство владения дубинами, молотами',
|
|
||||||
'a4' => 'Мастерство владения мечами',
|
|
||||||
'a5' => 'Мастерство владения магическими посохами',
|
|
||||||
'aall' => 'Мастерство владения оружием',
|
|
||||||
|
|
||||||
'mg1' => 'Мастерство владения магией огня',
|
|
||||||
'mg2' => 'Мастерство владения магией воздуха',
|
|
||||||
'mg3' => 'Мастерство владения магией воды',
|
|
||||||
'mg4' => 'Мастерство владения магией земли',
|
|
||||||
'mg7' => 'Мастерство владения серой магией',
|
|
||||||
'mall' => 'Мастерство владения магией стихий',
|
|
||||||
|
|
||||||
'hpAll' => "Уровень жизни (HP)",
|
|
||||||
'mpAll' => "Уровень маны (МP)",
|
|
||||||
|
|
||||||
'pa1' => 'Мф. мощности колющего урона',
|
|
||||||
'pa2' => 'Мф. мощности рубящего урона',
|
|
||||||
'pa3' => 'Мф. мощности дробящего урона',
|
|
||||||
'pa4' => 'Мф. мощности режущего урона',
|
|
||||||
'pm1' => 'Мф. мощности магии огня',
|
|
||||||
'pm2' => 'Мф. мощности магии воздуха',
|
|
||||||
'pm3' => 'Мф. мощности магии воды',
|
|
||||||
'pm4' => 'Мф. мощности магии земли',
|
|
||||||
|
|
||||||
'zona' => 'Дополнительная зона атаки',
|
|
||||||
'zonb' => '???',
|
|
||||||
|
|
||||||
'speedhp' => 'Регенерация здоровья (%)',
|
|
||||||
'speedmp' => 'Регенерация маны (%)',
|
|
||||||
|
|
||||||
'za' => 'Защита от урона',
|
|
||||||
'zm' => 'Защита от магии стихий',
|
|
||||||
'magic_cast' => 'Дополнительный каст за ход',
|
|
||||||
|
|
||||||
'm1' => 'Мф. критического удара (%)',
|
|
||||||
'm2' => 'Мф. против критического удара (%)',
|
|
||||||
'm3' => 'Мф. мощности крит. удара (%)',
|
|
||||||
'm4' => 'Мф. увертывания (%)',
|
|
||||||
'm5' => 'Мф. против увертывания (%)',
|
|
||||||
'm6' => 'Мф. контрудара (%)',
|
|
||||||
'm7' => 'Мф. парирования (%)',
|
|
||||||
'm8' => 'Мф. блока щитом (%)',
|
|
||||||
'm9' => 'Мф. удара сквозь броню (%)',
|
|
||||||
'm10' => 'Мф. мощности урона',
|
|
||||||
'm11' => 'Мф. мощности магии стихий',
|
|
||||||
'm14' => 'Мф. абс. критического удара (%)',
|
|
||||||
'm15' => 'Мф. абс. увертывания (%)',
|
|
||||||
'm18' => 'Мф. абс. блока щитом (%)',
|
|
||||||
|
|
||||||
'mib1' => 'Броня головы минимум',
|
|
||||||
'mab1' => 'Броня головы максимум',
|
|
||||||
'mib2' => 'Броня груди и живота минимум',
|
|
||||||
'mab2' => 'Броня груди и живота максимум',
|
|
||||||
'mib3' => 'Броня пояса минимум',
|
|
||||||
'mab3' => 'Броня пояса максимум',
|
|
||||||
'mib4' => 'Броня ног минимум',
|
|
||||||
'mab4' => 'Броня ног максимум',
|
|
||||||
];
|
|
||||||
|
|
||||||
public static array $parameterNameDeprecated = [
|
|
||||||
'acestar' => 'Следующий каст будет критическим',
|
|
||||||
'more_awards' => 'Повышеная награда %',
|
|
||||||
'align_bs' => 'Служитель закона',
|
|
||||||
'nopryh' => 'Прямое поподание',
|
|
||||||
'puti' => 'Запрет перемещения',
|
|
||||||
'enAll' => 'Уровень энергии',
|
|
||||||
'm21' => 'Мф. абс. попадания (%)',
|
|
||||||
'm16' => 'Мф. абс. парирования (%)',
|
|
||||||
'm17' => 'Мф. абс. контрудара (%)',
|
|
||||||
'm19' => 'Мф. абс. магический промах (%)',
|
|
||||||
'm20' => 'Мф. удача (%)',
|
|
||||||
'a6' => 'Мастерство владения луками',
|
|
||||||
'a7' => 'Мастерство владения арбалетами',
|
|
||||||
'm2all' => 'Мастерство владения магией',
|
|
||||||
'mg5' => 'Мастерство владения магией Света',
|
|
||||||
'mg6' => 'Мастерство владения магией Тьмы',
|
|
||||||
'tj' => 'Тяжелая броня',
|
|
||||||
'lh' => 'Легкая броня',
|
|
||||||
'minAtack' => 'Минимальный урон',
|
|
||||||
'maxAtack' => 'Максимальный урон',
|
|
||||||
'm11a' => 'Мф. мощности магии',
|
|
||||||
'pm5' => 'Мф. мощности магии Света',
|
|
||||||
'pm6' => 'Мф. мощности магии Тьмы',
|
|
||||||
'zma' => 'Защита от магии',
|
|
||||||
'za1' => 'Защита от колющего урона',
|
|
||||||
'za2' => 'Защита от рубящего урона',
|
|
||||||
'za3' => 'Защита от дробящего урона',
|
|
||||||
'za4' => 'Защита от режущего урона',
|
|
||||||
'zm1' => 'Защита от магии огня',
|
|
||||||
'zm2' => 'Защита от магии воздуха',
|
|
||||||
'zm3' => 'Защита от магии воды',
|
|
||||||
'zm4' => 'Защита от магии земли',
|
|
||||||
'zm5' => 'Защита от магии Света',
|
|
||||||
'zm6' => 'Защита от магии Тьмы',
|
|
||||||
'zm7' => 'Защита от серой магии',
|
|
||||||
'pza' => 'Понижение защиты от урона',
|
|
||||||
'pzm' => 'Понижение защиты от магии',
|
|
||||||
'pza1' => 'Понижение защиты от колющего урона',
|
|
||||||
'min_heal_proc' => 'Эффект лечения (%)',
|
|
||||||
'notravma' => 'Защита от травм',
|
|
||||||
'yron_min' => 'Минимальный урон',
|
|
||||||
'yron_max' => 'Максимальный урон',
|
|
||||||
'zaproc' => 'Блокировка Физического Урона (%)',
|
|
||||||
'zmproc' => 'Блокировка Магического Урона (%)',
|
|
||||||
'zm2proc' => 'Защита от магии Воздуха (%)',
|
|
||||||
'pza2' => 'Понижение защиты от рубящего урона',
|
|
||||||
'pza3' => 'Понижение защиты от дробящего урона',
|
|
||||||
'pza4' => 'Понижение защиты от режущего урона',
|
|
||||||
'pzm1' => 'Понижение защиты от магии огня',
|
|
||||||
'pzm2' => 'Понижение защиты от магии воздуха',
|
|
||||||
'pzm3' => 'Понижение защиты от магии воды',
|
|
||||||
'pzm4' => 'Понижение защиты от магии земли',
|
|
||||||
'pzm5' => 'Понижение защиты от магии Света',
|
|
||||||
'pzm6' => 'Понижение защиты от магии Тьмы',
|
|
||||||
'pzm7' => 'Понижение защиты от серой магии',
|
|
||||||
'tya1' => 'Колющие атаки',
|
|
||||||
'tya2' => 'Рубящие атаки',
|
|
||||||
'tya3' => 'Дробящие атаки',
|
|
||||||
'tya4' => 'Режущие атаки',
|
|
||||||
'tym1' => 'Огненные атаки',
|
|
||||||
'mg2static_points' => 'Уровень заряда (Воздух)',
|
|
||||||
'tym2' => 'Электрические атаки',
|
|
||||||
'tym3' => 'Ледяные атаки',
|
|
||||||
'tym4' => 'Земляные атаки',
|
|
||||||
'hpProc' => 'Уровень жизни (%)',
|
|
||||||
'mpProc' => 'Уровень маны (%)',
|
|
||||||
'tym5' => 'Атаки Света',
|
|
||||||
'tym6' => 'Атаки Тьмы',
|
|
||||||
'tym7' => 'Серые атаки',
|
|
||||||
'min_use_mp' => 'Уменьшает расход маны',
|
|
||||||
'pog' => 'Поглощение урона',
|
|
||||||
'pog2' => 'Поглощение урона',
|
|
||||||
'pog2p' => 'Процент поглощение урона',
|
|
||||||
'pog2mp' => 'Цена поглощение урона',
|
|
||||||
'maxves' => 'Увеличивает рюкзак',
|
|
||||||
'bonusexp' => 'Увеличивает получаемый опыт',
|
|
||||||
'speeden' => 'Регенерация энергии (%)',
|
|
||||||
'yza' => 'Уязвимость физическому урона (%)',
|
|
||||||
'yzm' => 'Уязвимость магии стихий (%)',
|
|
||||||
'yzma' => 'Уязвимость магии (%)',
|
|
||||||
'yza1' => 'Уязвимость колющему урона (%)',
|
|
||||||
'yza2' => 'Уязвимость рубящему урона (%)',
|
|
||||||
'yza3' => 'Уязвимость дробящему урона (%)',
|
|
||||||
'yza4' => 'Уязвимость режущему урона (%)',
|
|
||||||
'yzm1' => 'Уязвимость магии огня (%)',
|
|
||||||
'yzm2' => 'Уязвимость магии воздуха (%)',
|
|
||||||
'yzm3' => 'Уязвимость магии воды (%)',
|
|
||||||
'yzm4' => 'Уязвимость магии земли (%)',
|
|
||||||
'yzm5' => 'Уязвимость магии (%)',
|
|
||||||
'yzm6' => 'Уязвимость магии (%)',
|
|
||||||
'yzm7' => 'Уязвимость магии (%)',
|
|
||||||
'rep' => 'Репутация Рыцаря',
|
|
||||||
'hpVinos' => 'Бонус жизни',
|
|
||||||
'bronze' => 'Bronze Premium Account',
|
|
||||||
'silvers' => 'Silver Premium Account',
|
|
||||||
];
|
|
||||||
|
|
||||||
public static function test(string $data)
|
|
||||||
{
|
|
||||||
$t = self::parseDataString($data);
|
|
||||||
$r = [];
|
|
||||||
$b = [];
|
|
||||||
foreach ($t['tr'] as $k => $v) {
|
|
||||||
if (isset(self::$parameterName[explode('_', $k)[1]])) {
|
|
||||||
$k = "($k) " . self::$parameterName[explode('_', $k)[1]];
|
|
||||||
}
|
|
||||||
$r[$k] = $v;
|
|
||||||
}
|
|
||||||
foreach ($t['add'] as $k2 => $v2) {
|
|
||||||
if (isset(self::$parameterName[explode('_', $k2)[1]])) {
|
|
||||||
$k2 = "($k2) " . self::$parameterName[explode('_', $k2)[1]];
|
|
||||||
}
|
|
||||||
$b[$k2] = $v2;
|
|
||||||
}
|
|
||||||
return ['tr' => $r, 'add' => $b,];
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function parseDataString(string $data)
|
|
||||||
{
|
|
||||||
$a = Conversion::dataStringToArray($data);
|
|
||||||
$sex = ['Мужской', 'Женский'];
|
|
||||||
$requirements = [];
|
|
||||||
$bonuses = [];
|
|
||||||
foreach ($a as $k => $v) {
|
|
||||||
if (str_starts_with($k, 'tr_')) {
|
|
||||||
$requirements[$k] = $v;
|
|
||||||
}
|
|
||||||
if (str_starts_with($k, 'add_')) {
|
|
||||||
$bonuses[$k] = $v;
|
|
||||||
}
|
|
||||||
if (isset($requirements['tr_sex'])) {
|
|
||||||
$requirements['tr_sex'] = $sex[$requirements['tr_sex']];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ['tr' => $requirements, 'add' => $bonuses,];
|
|
||||||
}
|
|
||||||
}
|
|
@ -2,77 +2,23 @@
|
|||||||
|
|
||||||
namespace Item\Data;
|
namespace Item\Data;
|
||||||
|
|
||||||
|
use Model\Constant\Stat;
|
||||||
|
|
||||||
class Bonuses
|
class Bonuses
|
||||||
{
|
{
|
||||||
public static array $names = [
|
private Stat $stat;
|
||||||
'hpAll' => 'Уровень жизни (HP)',
|
|
||||||
'mpAll' => 'Уровень маны',
|
|
||||||
's1' => 'Сила',
|
|
||||||
's2' => 'Ловкость',
|
|
||||||
's3' => 'Интуиция',
|
|
||||||
's4' => 'Выносливость',
|
|
||||||
's5' => 'Интелект',
|
|
||||||
's6' => 'Мудрость',
|
|
||||||
'm1' => 'Мф. критического удара (%)',
|
|
||||||
'm2' => 'Мф. против критического удара (%)',
|
|
||||||
'm3' => 'Мф. мощности критического удара (%)',
|
|
||||||
'm4' => 'Мф. увертывания (%)',
|
|
||||||
'm5' => 'Мф. против увертывания (%)',
|
|
||||||
'm6' => 'Мф. контрудара (%)',
|
|
||||||
'm7' => 'Мф. парирования (%)',
|
|
||||||
'm8' => 'Мф. блока щитом (%)',
|
|
||||||
'm9' => 'Мф. пробоя брони (%)',
|
|
||||||
'm10' => 'Мф. мощности урона',
|
|
||||||
'm11' => 'Мф. мощности магии стихий',
|
|
||||||
'm14' => 'Мф. абс. критического удара (%)',
|
|
||||||
'm15' => 'Мф. абс. увертывания (%)',
|
|
||||||
'm18' => 'Мф. абс. блока щитом (%)',
|
|
||||||
'a1' => 'Мастерство владения ножами, кинжалами',
|
|
||||||
'a2' => 'Мастерство владения топорами, секирами',
|
|
||||||
'a3' => 'Мастерство владения дубинами, молотами',
|
|
||||||
'a4' => 'Мастерство владения мечами',
|
|
||||||
'a5' => 'Мастерство владения магическими посохами',
|
|
||||||
'aall' => 'Мастерство владения оружием',
|
|
||||||
'mall' => 'Мастерство владения магией стихий',
|
|
||||||
'mg1' => 'Мастерство владения магией огня',
|
|
||||||
'mg2' => 'Мастерство владения магией воздуха',
|
|
||||||
'mg3' => 'Мастерство владения магией воды',
|
|
||||||
'mg4' => 'Мастерство владения магией земли',
|
|
||||||
'mg7' => 'Мастерство владения серой магией',
|
|
||||||
'pa1' => 'Мф. мощности колющего урона',
|
|
||||||
'pa2' => 'Мф. мощности рубящего урона',
|
|
||||||
'pa3' => 'Мф. мощности дробящий урона',
|
|
||||||
'pa4' => 'Мф. мощности режущий урона',
|
|
||||||
'pm1' => 'Мф. мощности магии огня',
|
|
||||||
'pm2' => 'Мф. мощности магии воздуха',
|
|
||||||
'pm3' => 'Мф. мощности магии воды',
|
|
||||||
'pm4' => 'Мф. мощности магии земли',
|
|
||||||
'za' => 'Защита от урона',
|
|
||||||
'zm' => 'Защита от магии стихий',
|
|
||||||
'speedhp' => 'Регенерация здоровья (НР)',
|
|
||||||
'speedmp' => 'Регенерация маны (МР)',
|
|
||||||
'zona' => 'Дополнительная зона атаки',
|
|
||||||
'zonb' => 'Дополнительная зона блока',
|
|
||||||
'speed_dungeon' => 'Скорость перемещения по пещерам',
|
|
||||||
'antm3' => 'Мф. против мощности крит. удара',
|
|
||||||
'spasenie' => 'Спасение после смерти',
|
|
||||||
'exp' => 'Получаемый опыт (%)',
|
|
||||||
'repair_z' => 'Бесплатное извлечение заточек',
|
|
||||||
'repair_r' => 'Бесплатное извлечение рун',
|
|
||||||
'repair_discount' => 'Скидка на ремонт вещей',
|
|
||||||
'gold' => 'Благодать Ангела',
|
|
||||||
'magic_cast' => 'Дополнительное заклинание за ход',
|
|
||||||
];
|
|
||||||
|
|
||||||
private array $result = [];
|
private array $result = [];
|
||||||
|
|
||||||
public function __construct(array $data)
|
public function __construct(array $data)
|
||||||
{
|
{
|
||||||
|
$this->stat = new Stat();
|
||||||
|
|
||||||
foreach ($data as $bonusName => $value) {
|
foreach ($data as $bonusName => $value) {
|
||||||
if (!self::$names[$bonusName]) {
|
if (!$this->stat->getBonusNames()[$bonusName]) {
|
||||||
continue;
|
$this->result[$bonusName] = $value; //fixme на период отладки для отлова забытых
|
||||||
|
//continue;
|
||||||
}
|
}
|
||||||
$this->result[self::$names[$bonusName]] = $value;
|
$this->result[$this->stat->getBonusNames()[$bonusName]] = $value;
|
||||||
}
|
}
|
||||||
$this->armor($data);
|
$this->armor($data);
|
||||||
}
|
}
|
||||||
@ -112,16 +58,10 @@ class Bonuses
|
|||||||
|
|
||||||
public function addZonb(): void
|
public function addZonb(): void
|
||||||
{
|
{
|
||||||
if (isset($this->result[self::$names['zonb']])) {
|
if (isset($this->result[$this->stat->getBonusNames()['zonb']])) {
|
||||||
$this->result[self::$names['zonb']]++;
|
$this->result[$this->stat->getBonusNames()['zonb']]++;
|
||||||
} else {
|
} else {
|
||||||
$this->result[self::$names['zonb']] = 1;
|
$this->result[$this->stat->getBonusNames()['zonb']] = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getBonusSystemNames(): array
|
|
||||||
{
|
|
||||||
return array_keys(self::$names);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,29 +2,10 @@
|
|||||||
|
|
||||||
namespace Item\Data;
|
namespace Item\Data;
|
||||||
|
|
||||||
|
use Model\Constant\Stat;
|
||||||
|
|
||||||
class Requirements
|
class Requirements
|
||||||
{
|
{
|
||||||
public static array $names = [
|
|
||||||
'sex' => 'Пол',
|
|
||||||
'lvl' => 'Уровень',
|
|
||||||
's1' => 'Сила',
|
|
||||||
's2' => 'Ловкость',
|
|
||||||
's3' => 'Интуиция',
|
|
||||||
's4' => 'Выносливость',
|
|
||||||
's5' => 'Интелект',
|
|
||||||
's6' => 'Мудрость',
|
|
||||||
'a1' => 'Мастерство владения ножами, кинжалами',
|
|
||||||
'a2' => 'Мастерство владения топорами, секирами',
|
|
||||||
'a3' => 'Мастерство владения дубинами, молотами',
|
|
||||||
'a4' => 'Мастерство владения мечами',
|
|
||||||
'a5' => 'Мастерство владения магическими посохами',
|
|
||||||
'mg1' => 'Мастерство владения магией огня',
|
|
||||||
'mg2' => 'Мастерство владения магией воздуха',
|
|
||||||
'mg3' => 'Мастерство владения магией воды',
|
|
||||||
'mg4' => 'Мастерство владения магией земли',
|
|
||||||
'mg7' => 'Мастерство владения серой магией',
|
|
||||||
'align' => 'Склонность',
|
|
||||||
];
|
|
||||||
private static array $sex = [
|
private static array $sex = [
|
||||||
0 => 'Мужской',
|
0 => 'Мужской',
|
||||||
1 => 'Женский',
|
1 => 'Женский',
|
||||||
@ -39,12 +20,15 @@ class Requirements
|
|||||||
private int $alignValue = 0;
|
private int $alignValue = 0;
|
||||||
|
|
||||||
private array $result = [];
|
private array $result = [];
|
||||||
|
private Stat $stat;
|
||||||
|
|
||||||
public function __construct(array $data)
|
public function __construct(array $data)
|
||||||
{
|
{
|
||||||
|
$this->stat = new Stat();
|
||||||
foreach ($data as $requirementName => $value) {
|
foreach ($data as $requirementName => $value) {
|
||||||
if (!self::$names[$requirementName]) {
|
if (!$this->stat->getRequirementNames()[$requirementName]) {
|
||||||
continue;
|
$this->result[$requirementName] = $value; //fixme на период отладки для отлова забытых
|
||||||
|
//continue;
|
||||||
}
|
}
|
||||||
if ($requirementName === 'sex') {
|
if ($requirementName === 'sex') {
|
||||||
if (self::$sex[$value]) {
|
if (self::$sex[$value]) {
|
||||||
@ -56,16 +40,20 @@ class Requirements
|
|||||||
if ($requirementName === 'align') {
|
if ($requirementName === 'align') {
|
||||||
if (self::$align[$value]) {
|
if (self::$align[$value]) {
|
||||||
$this->alignValue = $value;
|
$this->alignValue = $value;
|
||||||
|
$this->result[$requirementName]['sysvalue'] = $value;
|
||||||
$value = self::$align[$value];
|
$value = self::$align[$value];
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//$this->result[$this->stat->getRequirementNames()[$requirementName]] = $value;
|
||||||
|
|
||||||
$this->result[$requirementName] = [
|
$this->result[$requirementName] = [
|
||||||
'name' => self::$names[$requirementName],
|
'name' => $this->stat->getRequirementNames()[$requirementName],
|
||||||
'value' => $value,
|
'value' => $value,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get(): array
|
public function get(): array
|
||||||
|
@ -32,18 +32,13 @@ class DataModel
|
|||||||
{
|
{
|
||||||
$result = [];
|
$result = [];
|
||||||
foreach ($this->data as $k => $v) {
|
foreach ($this->data as $k => $v) {
|
||||||
if ($this->searchByPrefix($prefix, $k)) {
|
if (str_starts_with($k, $prefix)) {
|
||||||
$result[str_replace($prefix, '', $k)] = $v;
|
$result[str_replace($prefix, '', $k)] = $v;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function searchByPrefix(string $prefix, string $string): bool
|
|
||||||
{
|
|
||||||
return substr($string, 0, strlen($prefix)) === $prefix;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getBonuses(): array
|
public function getBonuses(): array
|
||||||
{
|
{
|
||||||
return $this->getPrefixed('add_');
|
return $this->getPrefixed('add_');
|
||||||
|
@ -5,107 +5,34 @@ namespace Location;
|
|||||||
use Core\Config;
|
use Core\Config;
|
||||||
use Core\Db;
|
use Core\Db;
|
||||||
use Delo;
|
use Delo;
|
||||||
|
use Enum\ShopId;
|
||||||
use Helper\Conversion;
|
use Helper\Conversion;
|
||||||
use Item\Data\Bonuses;
|
use Item\Data\Bonuses;
|
||||||
use Item\Data\Properties;
|
use Item\Data\Properties;
|
||||||
use Item\Data\Requirements;
|
use Item\Data\Requirements;
|
||||||
use Item\DataModel;
|
use Item\DataModel;
|
||||||
|
use Model\Constant\ShopOtdel;
|
||||||
use User;
|
use User;
|
||||||
|
|
||||||
class Shop
|
class Shop
|
||||||
{
|
{
|
||||||
private const ITEM_GENERATION_CURRENT = 2;
|
public ShopOtdel $shopOtdel;
|
||||||
public const MAIN = 1;
|
private ShopId $shopId;
|
||||||
public const BEREZKA = 2;
|
|
||||||
public const CRYSTALS = 1050;
|
|
||||||
public const REFERALS = 27;
|
|
||||||
public const TEMPLE = 14;
|
|
||||||
public const IZLOM = 10;
|
|
||||||
public const LABORATORY = 45;
|
|
||||||
public const ARTEFACTS = 777; //магазин самоцветов
|
|
||||||
public const KNIGHTS_MAIN = 400; //магазин рефералов
|
|
||||||
public const DUNGEON_BEZDNA = 801; // храм?!
|
|
||||||
public const DUNGEON_PTP = 802; // излом?!
|
|
||||||
public const DUNGEON_CATACOMBS = 803; //лаборатория?!?!
|
|
||||||
public const DUNGEON_MISTY = 804;
|
|
||||||
//public const BOOKS = 7;
|
|
||||||
public const MUSHROOMS = 17; // общий рыцарский
|
|
||||||
public const RULF_HRUNT = 33; // бездна
|
|
||||||
public const LUKA = 5; // пещера тысячи проклятий
|
|
||||||
public const ANVIL = 700; // катакомбы
|
|
||||||
public const NEWBIE = 106; // пещера мглы
|
|
||||||
//public const FLOWER = 6;
|
|
||||||
public const SHOP_2 = 609; // магазин грибоеда??
|
|
||||||
public const SHOP_KAT = 44; // магазин рульфа хрунта, а ты что такое?
|
|
||||||
public const SHOP_PRIZ = 404; // каморка Луки
|
|
||||||
//public const BLOOD_ALTAR = 11; //алтарь крови
|
|
||||||
public const TAVERN = 9; // наковальня
|
|
||||||
public const ANIMALS = 8; // магазин новичка
|
|
||||||
public const OTDEL_NAME = [
|
|
||||||
1 => 'Кастеты,ножи',
|
|
||||||
2 => 'Топоры',
|
|
||||||
3 => 'Дубины,булавы',
|
|
||||||
4 => 'Мечи',
|
|
||||||
5 => 'Магические посохи',
|
|
||||||
6 => 'Сапоги',
|
|
||||||
7 => 'Перчатки',
|
|
||||||
8 => 'Рубахи',
|
|
||||||
9 => 'Легкая броня',
|
|
||||||
10 => 'Тяжелая броня',
|
|
||||||
11 => 'Шлемы',
|
|
||||||
12 => 'Наручи',
|
|
||||||
13 => 'Пояса',
|
|
||||||
14 => 'Поножи',
|
|
||||||
15 => 'Щиты',
|
|
||||||
16 => 'Серьги',
|
|
||||||
17 => 'Ожерелья',
|
|
||||||
18 => 'Кольца',
|
|
||||||
19 => 'Заклинания: нейтральные',
|
|
||||||
20 => 'Заклинания: боевые и защитные',
|
|
||||||
21 => 'Заклинания: карманные',
|
|
||||||
22 => 'Заклинания: исцеляющие',
|
|
||||||
23 => 'Заклинания: манящие',
|
|
||||||
24 => 'Заклинания: стратегические',
|
|
||||||
25 => 'Заклинания: тактические',
|
|
||||||
26 => 'Заклинания: сервисные',
|
|
||||||
27 => 'Амуниция',
|
|
||||||
28 => 'Эликсиры',
|
|
||||||
29 => 'Еда',
|
|
||||||
30 => 'Подарки',
|
|
||||||
31 => 'Подарки: недобрые',
|
|
||||||
32 => 'Подарки: упаковка',
|
|
||||||
33 => 'Подарки: открытки',
|
|
||||||
34 => 'Подарки: фейерверки',
|
|
||||||
35 => 'Усиление оружия: Заточки',
|
|
||||||
36 => 'Плащи и Накидки:',
|
|
||||||
37 => 'Готовые Комплекты:',
|
|
||||||
];
|
|
||||||
public const OTDEL_GROUP_NAME = [
|
|
||||||
1 => 'Оружие',
|
|
||||||
6 => 'Одежда',
|
|
||||||
15 => 'Щиты',
|
|
||||||
16 => 'Ювелирные товары',
|
|
||||||
19 => 'Заклинания',
|
|
||||||
27 => 'Амуниция',
|
|
||||||
28 => 'Эликсиры',
|
|
||||||
30 => 'Подарки',
|
|
||||||
35 => 'Прочее',
|
|
||||||
];
|
|
||||||
private int $shopId;
|
|
||||||
private array $wares;
|
private array $wares;
|
||||||
private int $otdel;
|
private int $otdel;
|
||||||
private int $itemId;
|
private int $itemId;
|
||||||
private $buyer;
|
private $buyer;
|
||||||
|
|
||||||
public function __construct(int $shopId, int $otdel = 1)
|
public function __construct(ShopId $shopId, int $otdel = 1)
|
||||||
{
|
{
|
||||||
|
$this->shopOtdel = new ShopOtdel();
|
||||||
$this->otdel = $otdel;
|
$this->otdel = $otdel;
|
||||||
$this->itemId = intval($_GET['itmid']);
|
$this->itemId = intval($_GET['itmid']);
|
||||||
$this->shopId = $shopId;
|
$this->shopId = $shopId;
|
||||||
$this->wares = Db::getRows('select * from
|
$this->wares = Db::getRows('select * from
|
||||||
items_shop
|
items_shop
|
||||||
left join items_main on items_shop.item_id = items_main.id
|
left join items_main on items_shop.item_id = items_main.id
|
||||||
where sid = ? and r = ? and kolvo > 0 order by pos', [$shopId, $otdel]);
|
where sid = ? and r = ? and kolvo > 0 order by pos', [$shopId->value, $otdel]);
|
||||||
|
|
||||||
$this->buyer = new class {
|
$this->buyer = new class {
|
||||||
public function getId(): int
|
public function getId(): int
|
||||||
@ -178,23 +105,23 @@ class Shop
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function itemUp()
|
private function itemUp(): void
|
||||||
{
|
{
|
||||||
$this->changeItemPositionByInt(-1);
|
$this->changeItemPositionByInt(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function changeItemPositionByInt(int $modificator)
|
private function changeItemPositionByInt(int $modificator): void
|
||||||
{
|
{
|
||||||
Db::sql('update items_shop set pos = pos + ? where sid = ? and r = ? and item_id = ? and kolvo > 0',
|
Db::sql('update items_shop set pos = pos + ? where sid = ? and r = ? and item_id = ? and kolvo > 0',
|
||||||
[$modificator, $this->shopId, $this->otdel, $this->itemId]);
|
[$modificator, $this->shopId->value, $this->otdel, $this->itemId]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function itemDown()
|
private function itemDown(): void
|
||||||
{
|
{
|
||||||
$this->changeItemPositionByInt(1);
|
$this->changeItemPositionByInt(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function printWares()
|
public function printWares(): void
|
||||||
{
|
{
|
||||||
foreach ($this->wares as $pl) {
|
foreach ($this->wares as $pl) {
|
||||||
$data = new DataModel($pl['item_id']);
|
$data = new DataModel($pl['item_id']);
|
||||||
@ -229,7 +156,7 @@ class Shop
|
|||||||
if ($pl['iznos'] > 0) {
|
if ($pl['iznos'] > 0) {
|
||||||
$pl['iznosMAXi'] = $pl['iznos'];
|
$pl['iznosMAXi'] = $pl['iznos'];
|
||||||
}
|
}
|
||||||
if ($pl['iznosMAXi'] > 0 && $pl['iznosMAXi'] !== 999999999) {
|
if ($pl['iznosMAXi'] > 0 && $pl['iznosMAXi'] < 1000) {
|
||||||
$is2 .= 'Долговечность: 0/' . $pl['iznosMAXi'] . '<br>';
|
$is2 .= 'Долговечность: 0/' . $pl['iznosMAXi'] . '<br>';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,11 +191,14 @@ class Shop
|
|||||||
$is2 .= '<ul style="margin: 0; padding: 0 30px;">';
|
$is2 .= '<ul style="margin: 0; padding: 0 30px;">';
|
||||||
foreach ($itemRequirements->get() as $dataName => $dataInfo) {
|
foreach ($itemRequirements->get() as $dataName => $dataInfo) {
|
||||||
if ($dataName === 'align' || $dataName === 'sex') {
|
if ($dataName === 'align' || $dataName === 'sex') {
|
||||||
$is2 .= $this->buyer->hasExactly($dataName, intval($dataInfo['value'])) ? '<li>' : '<li style="color: crimson; list-style-type: \'× \';">';
|
$value = $dataName === 'align' ? intval($dataInfo['sysvalue']) : intval($dataInfo['value']);
|
||||||
|
$is2 .= $this->buyer->hasExactly($dataName, $value) ? '<li>' : '<li style="color: crimson; list-style-type: \'× \';">';
|
||||||
} else {
|
} else {
|
||||||
$is2 .= $this->buyer->hasEnough($dataName, intval($dataInfo['value'])) ? '<li>' : '<li style="color: crimson; list-style-type: \'× \';">';
|
$is2 .= $this->buyer->hasEnough($dataName, intval($dataInfo['value'])) ? '<li>' : '<li style="color: crimson; list-style-type: \'× \';">';
|
||||||
}
|
}
|
||||||
$is2 .= $dataInfo['name'] . ': ' . $dataInfo['value'];
|
$name = empty($dataInfo['name']) ? $dataName : $dataInfo['name'];
|
||||||
|
$is2 .= $name . ': ' . $dataInfo['value'];
|
||||||
|
//$is2 .= $dataName . ': ' . $dataInfo;
|
||||||
$is2 .= '</li>';
|
$is2 .= '</li>';
|
||||||
}
|
}
|
||||||
$is2 .= '</ul>';
|
$is2 .= '</ul>';
|
||||||
@ -391,7 +321,7 @@ HTML;
|
|||||||
private function name(string $name, ?string $defaultName, int $itemid): string
|
private function name(string $name, ?string $defaultName, int $itemid): string
|
||||||
{
|
{
|
||||||
$styleSuffix = '';
|
$styleSuffix = '';
|
||||||
if ($this->shopId == self::SHOP_2) {
|
if ($this->shopId === ShopId::SHOP_2) {
|
||||||
$styleSuffix = 'WL';
|
$styleSuffix = 'WL';
|
||||||
}
|
}
|
||||||
if (!empty($defaultName)) {
|
if (!empty($defaultName)) {
|
||||||
@ -437,10 +367,10 @@ HTML;
|
|||||||
private function price(int $credits, int $eurocredits, int $voinstvennost): string
|
private function price(int $credits, int $eurocredits, int $voinstvennost): string
|
||||||
{
|
{
|
||||||
$result = 'Цена: ';
|
$result = 'Цена: ';
|
||||||
if ($this->shopId === self::SHOP_2) {
|
if ($this->shopId === ShopId::SHOP_2) {
|
||||||
$result .= $this->printColoredValue($this->buyer->getVoinstvennost() >= $voinstvennost, $voinstvennost);
|
$result .= $this->printColoredValue($this->buyer->getVoinstvennost() >= $voinstvennost, $voinstvennost);
|
||||||
$result .= ' Воинственности ';
|
$result .= ' Воинственности ';
|
||||||
} elseif ($this->shopId === self::BEREZKA || $this->shopId === self::ARTEFACTS) {
|
} elseif ($this->shopId === ShopId::BEREZKA || $this->shopId === ShopId::ARTEFACTS) {
|
||||||
$result .= '<span style="color: cornflowerblue;">';
|
$result .= '<span style="color: cornflowerblue;">';
|
||||||
$result .= $this->printColoredValue($this->buyer->getEuroCredits() >= $eurocredits, $eurocredits);
|
$result .= $this->printColoredValue($this->buyer->getEuroCredits() >= $eurocredits, $eurocredits);
|
||||||
$result .= ' екр.</span> ';
|
$result .= ' екр.</span> ';
|
||||||
@ -524,14 +454,23 @@ HTML;
|
|||||||
} else {
|
} else {
|
||||||
$result = '<img src="' . Config::img() . '/i/items/' . $image . '" alt="' . $name . '"><br>';
|
$result = '<img src="' . Config::img() . '/i/items/' . $image . '" alt="' . $name . '"><br>';
|
||||||
}
|
}
|
||||||
if ($this->shopId == self::SHOP_2) {
|
if ($this->shopId == ShopId::SHOP_2) {
|
||||||
$result .= '<a href="javascript:void(' . $id . ');" onClick="top.buyShopNow(' . $id . ',\'?' . 'otdel=' . $this->otdel . '&buyVn=' . $id . '&sd4=' . $this->buyer->getNextAct() . '\',\'' . $name . '\',\'??\',\' ??.\');">купить</a>';
|
$js = <<<JS
|
||||||
} elseif (($this->shopId == self::BEREZKA || $this->shopId == self::ARTEFACTS) && $this->buyer->hasEnoughEuroCredits($eurocredits)) {
|
<button onClick="top.buyShopNow($id,'?otdel=$this->otdel&buyVn=$id&sd4={$this->buyer->getNextAct()}','$name')">Купить</button>
|
||||||
$result .= '<a href="javascript:void(' . $id . ');" onClick="top.buyShopNow(' . $id . ',\'?' . 'otdel=' . $this->otdel . '&buyEkr=' . $id . '&sd4=' . $this->buyer->getNextAct() . '\',\'' . $name . '\',\'' . $eurocredits . '\',\' екр.\');">купить</a>';
|
JS;
|
||||||
|
} elseif (($this->shopId == ShopId::BEREZKA || $this->shopId == ShopId::ARTEFACTS) && $this->buyer->hasEnoughEuroCredits($eurocredits)) {
|
||||||
|
$js = <<<JS
|
||||||
|
<button onClick="top.buyShopNow($id,'?otdel=$this->otdel&buyEkr=$id&sd4={$this->buyer->getNextAct()}','$name',$eurocredits,'екр.')">Купить</button>
|
||||||
|
JS;
|
||||||
} elseif ($this->buyer->hasEnoughCredits($credits)) {
|
} elseif ($this->buyer->hasEnoughCredits($credits)) {
|
||||||
$result .= '<a href="javascript:void(' . $id . ');" onClick="top.buyShopNow(' . $id . ',\'?' . 'otdel=' . $this->otdel . '&buy=' . $id . '&sd4=' . $this->buyer->getNextAct() . '\',\'' . $name . '\',\'' . $credits . '\',\' кр.\');">купить</a>';
|
$js = <<<JS
|
||||||
|
<button onClick="top.buyShopNow($id,'?otdel=$this->otdel&buy=$id&sd4={$this->buyer->getNextAct()}','$name',$credits,'кр.')">Купить</button>
|
||||||
|
JS;
|
||||||
|
} else {
|
||||||
|
return '';
|
||||||
}
|
}
|
||||||
return $result;
|
|
||||||
|
return $result . $js;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function adminOptions(int $itemId, int $itemPosition): string
|
private function adminOptions(int $itemId, int $itemPosition): string
|
||||||
@ -556,7 +495,7 @@ HTML;
|
|||||||
public function buy(int $itemid): string
|
public function buy(int $itemid): string
|
||||||
{
|
{
|
||||||
$sql = 'select sid, items_shop.price_1, name from items_shop left join items_main on item_id = id where item_id = ? and sid = ?';
|
$sql = 'select sid, items_shop.price_1, name from items_shop left join items_main on item_id = id where item_id = ? and sid = ?';
|
||||||
$item = Db::getRow($sql, [$itemid, $this->shopId]);
|
$item = Db::getRow($sql, [$itemid, $this->shopId->value]);
|
||||||
if (!$this->buyer->hasEnoughCredits($item['price_1'])) {
|
if (!$this->buyer->hasEnoughCredits($item['price_1'])) {
|
||||||
return 'Покупка не удалась.';
|
return 'Покупка не удалась.';
|
||||||
}
|
}
|
||||||
@ -572,7 +511,7 @@ HTML;
|
|||||||
public function buyEkr(int $itemid): string
|
public function buyEkr(int $itemid): string
|
||||||
{
|
{
|
||||||
$sql = 'select sid, items_shop.price_2, name from items_shop left join items_main on item_id = id where item_id = ? and sid = ?';
|
$sql = 'select sid, items_shop.price_2, name from items_shop left join items_main on item_id = id where item_id = ? and sid = ?';
|
||||||
$item = Db::getRow($sql, [$itemid, $this->shopId]);
|
$item = Db::getRow($sql, [$itemid, $this->shopId->value]);
|
||||||
if (!$this->buyer->hasEnoughEuroCredits($item['price_2'])) {
|
if (!$this->buyer->hasEnoughEuroCredits($item['price_2'])) {
|
||||||
return 'Покупка не удалась.';
|
return 'Покупка не удалась.';
|
||||||
}
|
}
|
||||||
@ -588,7 +527,7 @@ HTML;
|
|||||||
public function buyVn(int $itemid): string
|
public function buyVn(int $itemid): string
|
||||||
{
|
{
|
||||||
$sql = 'select sid, items_shop.price_4, name from items_shop left join items_main on item_id = id where item_id = ? and sid = ?';
|
$sql = 'select sid, items_shop.price_4, name from items_shop left join items_main on item_id = id where item_id = ? and sid = ?';
|
||||||
$item = Db::getRow($sql, [$itemid, $this->shopId]);
|
$item = Db::getRow($sql, [$itemid, $this->shopId->value]);
|
||||||
if (!$this->buyer->hasEnoughVoinstvennost($item['price_4'])) {
|
if (!$this->buyer->hasEnoughVoinstvennost($item['price_4'])) {
|
||||||
return 'Покупка не удалась.';
|
return 'Покупка не удалась.';
|
||||||
}
|
}
|
||||||
@ -604,9 +543,8 @@ HTML;
|
|||||||
public function getUsedOtdels(): array
|
public function getUsedOtdels(): array
|
||||||
{
|
{
|
||||||
$result = [];
|
$result = [];
|
||||||
$o = Db::getColumn('select r from items_shop where sid = ? group by r', [$this->shopId]);
|
foreach (Db::getColumn('select r from items_shop where sid = ? group by r', [$this->shopId->value]) as $v) {
|
||||||
foreach ($o as $v) {
|
$result[$v] = $this->shopOtdel->getName($v);
|
||||||
$result[$v] = self::OTDEL_NAME[$v];
|
|
||||||
}
|
}
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
@ -614,11 +552,11 @@ HTML;
|
|||||||
public function getUserWallet(): string
|
public function getUserWallet(): string
|
||||||
{
|
{
|
||||||
$result = '';
|
$result = '';
|
||||||
if ($this->shopId === self::MAIN) {
|
if ($this->shopId === ShopId::MAIN) {
|
||||||
$result = $this->buyer->getCredits() . ' кр.';
|
$result = $this->buyer->getCredits() . ' кр.';
|
||||||
} elseif (in_array($this->shopId, [self::BEREZKA, self::ARTEFACTS])) {
|
} elseif (in_array($this->shopId, [ShopId::BEREZKA, ShopId::ARTEFACTS])) {
|
||||||
$result = $this->buyer->getEuroCredits() . ' екр.';
|
$result = $this->buyer->getEuroCredits() . ' екр.';
|
||||||
} elseif ($this->shopId === self::SHOP_2) {
|
} elseif ($this->shopId === ShopId::SHOP_2) {
|
||||||
$result = $this->buyer->getVoinstvennost() . ' воинственности.';
|
$result = $this->buyer->getVoinstvennost() . ' воинственности.';
|
||||||
}
|
}
|
||||||
return $result;
|
return $result;
|
||||||
|
18
_incl_data/class/Model/Constant/Constant.php
Normal file
18
_incl_data/class/Model/Constant/Constant.php
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Model\Constant;
|
||||||
|
|
||||||
|
use Core\Db;
|
||||||
|
|
||||||
|
class Constant
|
||||||
|
{
|
||||||
|
protected static string $tableName = '';
|
||||||
|
protected array $rows = [];
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->rows = Db::getRows('select * from ' . self::$tableName);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
47
_incl_data/class/Model/Constant/ShopOtdel.php
Normal file
47
_incl_data/class/Model/Constant/ShopOtdel.php
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Model\Constant;
|
||||||
|
|
||||||
|
class ShopOtdel extends Constant
|
||||||
|
{
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
self::$tableName = 'const_shop_otdels';
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getName(int $id): string
|
||||||
|
{
|
||||||
|
foreach ($this->rows as $row) {
|
||||||
|
if ($row['id'] === $id) {
|
||||||
|
return $row['name'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Âîçâðàùàåò ñïèñîê ãðóïï òîâàðîâ, ãäå id áåð¸òñÿ èç ïåðâîãî òîâàðà â ãðóïïå.
|
||||||
|
* Ëîãèêà ñòðàííàÿ èç çà legacy-ðåøåíèÿ.
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getGroups(): array
|
||||||
|
{
|
||||||
|
$groups = [];
|
||||||
|
foreach ($this->getGrouped() as $name => $arr) {
|
||||||
|
$groups[$name] = array_keys($arr)[0];
|
||||||
|
}
|
||||||
|
return array_flip($groups);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getGrouped(): array
|
||||||
|
{
|
||||||
|
$result = [];
|
||||||
|
foreach ($this->rows as $row) {
|
||||||
|
//$result[$row['id']] = [$row['name'], $row['group_name']];
|
||||||
|
$result[$row['group_name']][$row['id']] = $row['name'];
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
}
|
40
_incl_data/class/Model/Constant/Stat.php
Normal file
40
_incl_data/class/Model/Constant/Stat.php
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Model\Constant;
|
||||||
|
|
||||||
|
|
||||||
|
use Enum\StatFilterCellName;
|
||||||
|
|
||||||
|
class Stat extends Constant
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
self::$tableName = 'const_stats';
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getBonusNames(): array
|
||||||
|
{
|
||||||
|
return $this->filterByCell(StatFilterCellName::Bonus);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function filterByCell(StatFilterCellName $cellName): array
|
||||||
|
{
|
||||||
|
$result = [];
|
||||||
|
foreach ($this->rows as $row) {
|
||||||
|
if (!$row[$cellName->value]) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ($row['sys_name'] === 'level') {
|
||||||
|
$row['sys_name'] = 'lvl';
|
||||||
|
}
|
||||||
|
$result[$row['sys_name']] = $row['name'];
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRequirementNames(): array
|
||||||
|
{
|
||||||
|
return $this->filterByCell(StatFilterCellName::Requirement);
|
||||||
|
}
|
||||||
|
}
|
@ -11,6 +11,8 @@ use User\InfoBox;
|
|||||||
use User\ItemsModel;
|
use User\ItemsModel;
|
||||||
use User\Reputation;
|
use User\Reputation;
|
||||||
use User\Stats;
|
use User\Stats;
|
||||||
|
use User\UserCalculatedStats;
|
||||||
|
use User\UserStats;
|
||||||
|
|
||||||
class User
|
class User
|
||||||
{
|
{
|
||||||
@ -1099,12 +1101,8 @@ class User
|
|||||||
where users.' . $cell . ' = ?';
|
where users.' . $cell . ' = ?';
|
||||||
$result = Db::getRow($query, [$user]);
|
$result = Db::getRow($query, [$user]);
|
||||||
|
|
||||||
$temp = Conversion::dataStringToArray($result['stats']);
|
|
||||||
|
|
||||||
$result['testStats'] = new User\UserStats(
|
$result['testStats2'] = new UserCalculatedStats(new UserStats(Conversion::dataStringToArray($result['stats'])));
|
||||||
$temp
|
|
||||||
);
|
|
||||||
$result['testStats2'] = new \User\UserCalculatedStats($result['testStats']);
|
|
||||||
|
|
||||||
return $result ?: [];
|
return $result ?: [];
|
||||||
}
|
}
|
||||||
|
@ -1,97 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace User;
|
|
||||||
|
|
||||||
class Parameters
|
|
||||||
{
|
|
||||||
public static array $parameterName = [
|
|
||||||
'spasenie' => 'Спасение после смерти',
|
|
||||||
'puti' => 'Запрет перемещения',
|
|
||||||
'align' => 'Склонность',
|
|
||||||
'hpAll' => 'Уровень жизни (HP)',
|
|
||||||
'mpAll' => 'Уровень маны (МP)',
|
|
||||||
'sex' => 'Пол',
|
|
||||||
'lvl' => 'Уровень',
|
|
||||||
's1' => 'Сила',
|
|
||||||
's2' => 'Ловкость',
|
|
||||||
's3' => 'Интуиция',
|
|
||||||
's4' => 'Выносливость',
|
|
||||||
's5' => 'Интеллект',
|
|
||||||
's6' => 'Мудрость',
|
|
||||||
's7' => 'Духовность',
|
|
||||||
'm1' => 'Мф. критического удара (%)',
|
|
||||||
'm2' => 'Мф. против критического удара (%)',
|
|
||||||
'm3' => 'Мф. мощности крит. удара (%)',
|
|
||||||
'm4' => 'Мф. увертывания (%)',
|
|
||||||
'm5' => 'Мф. против увертывания (%)',
|
|
||||||
'm6' => 'Мф. контрудара (%)',
|
|
||||||
'm7' => 'Мф. парирования (%)',
|
|
||||||
'm8' => 'Мф. блока щитом (%)',
|
|
||||||
'm9' => 'Мф. удара сквозь броню (%)',
|
|
||||||
'm14' => 'Мф. абс. критического удара (%)',
|
|
||||||
'm15' => 'Мф. абс. увертывания (%)',
|
|
||||||
'm18' => 'Мф. абс. блока щитом (%)',
|
|
||||||
'm19' => 'Мф. абс. магический промах (%)',
|
|
||||||
'a1' => 'Мастерство владения ножами, кинжалами',
|
|
||||||
'a2' => 'Мастерство владения топорами, секирами',
|
|
||||||
'a3' => 'Мастерство владения дубинами, молотами',
|
|
||||||
'a4' => 'Мастерство владения мечами',
|
|
||||||
'a5' => 'Мастерство владения магическими посохами',
|
|
||||||
'aall' => 'Мастерство владения оружием',
|
|
||||||
'mall' => 'Мастерство владения магией стихий',
|
|
||||||
'mg1' => 'Мастерство владения магией огня',
|
|
||||||
'mg2' => 'Мастерство владения магией воздуха',
|
|
||||||
'mg3' => 'Мастерство владения магией воды',
|
|
||||||
'mg4' => 'Мастерство владения магией земли',
|
|
||||||
'mg7' => 'Мастерство владения серой магией',
|
|
||||||
'minAtack' => 'Минимальный урон бота в пещере',
|
|
||||||
'maxAtack' => 'Максимальный урон бота в пещере',
|
|
||||||
'm10' => 'Мф. мощности урона',
|
|
||||||
'm11' => 'Мф. мощности магии стихий',
|
|
||||||
'pa1' => 'Мф. мощности колющего урона',
|
|
||||||
'pa2' => 'Мф. мощности рубящего урона',
|
|
||||||
'pa3' => 'Мф. мощности дробящего урона',
|
|
||||||
'pa4' => 'Мф. мощности режущего урона',
|
|
||||||
'pm1' => 'Мф. мощности магии огня',
|
|
||||||
'pm2' => 'Мф. мощности магии воздуха',
|
|
||||||
'pm3' => 'Мф. мощности магии воды',
|
|
||||||
'pm4' => 'Мф. мощности магии земли',
|
|
||||||
'pm7' => 'Мф. мощности серой магии',
|
|
||||||
'za' => 'Защита от урона',
|
|
||||||
'zm' => 'Защита от магии стихий',
|
|
||||||
'magic_cast' => 'Дополнительный каст за ход',
|
|
||||||
'min_heal_proc' => 'Эффект лечения (%)',
|
|
||||||
'notravma' => 'Защита от травм',
|
|
||||||
'yron_min' => 'Минимальный урон',
|
|
||||||
'yron_max' => 'Максимальный урон',
|
|
||||||
'speedhp' => 'Регенерация здоровья (%)',
|
|
||||||
'speedmp' => 'Регенерация маны (%)',
|
|
||||||
'tya1' => 'Колющие атаки',
|
|
||||||
'tya2' => 'Рубящие атаки',
|
|
||||||
'tya3' => 'Дробящие атаки',
|
|
||||||
'tya4' => 'Режущие атаки',
|
|
||||||
'tym1' => 'Огненные атаки',
|
|
||||||
'mg2static_points' => 'Уровень заряда (Воздух)',
|
|
||||||
'tym2' => 'Электрические атаки',
|
|
||||||
'tym3' => 'Ледяные атаки',
|
|
||||||
'tym4' => 'Земляные атаки',
|
|
||||||
'tym7' => 'Серые атаки',
|
|
||||||
'min_use_mp' => 'Уменьшает расход маны',
|
|
||||||
'pog' => 'Поглощение урона (прием)',
|
|
||||||
'pog2' => 'Поглощение урона (прием)',
|
|
||||||
'pog2p' => 'Процент поглощение урона (прием)',
|
|
||||||
'pog2mp' => 'Цена поглощение урона (прием)',
|
|
||||||
'maxves' => 'Увеличивает рюкзак',
|
|
||||||
'antm3' => 'Мф. против мощности крита',
|
|
||||||
'repair_z' => 'Бесплатное извлечение заточек',
|
|
||||||
'repair_r' => 'Бесплатное извлечение рун',
|
|
||||||
'rep' => 'Репутация Рыцаря',
|
|
||||||
'repair_discount' => 'Скидка на ремонт вещей',
|
|
||||||
'hpVinos' => 'Бонус жизни',
|
|
||||||
'gold' => 'Благодать Ангела',
|
|
||||||
'speed_dungeon' => 'Скорость передвижения по подземельям',
|
|
||||||
'zona' => 'Дополнительная зона атаки',
|
|
||||||
];
|
|
||||||
|
|
||||||
public static array $parameterNameDeprecated = [];
|
|
||||||
}
|
|
@ -5,16 +5,20 @@ namespace User;
|
|||||||
use Core\Config;
|
use Core\Config;
|
||||||
use Core\Db;
|
use Core\Db;
|
||||||
use Helper\Conversion;
|
use Helper\Conversion;
|
||||||
use Item\Data\Bonuses;
|
|
||||||
use User;
|
use User;
|
||||||
|
|
||||||
class Stats
|
class Stats
|
||||||
{
|
{
|
||||||
private User $u;
|
private User $u;
|
||||||
|
private array $sysNames = [];
|
||||||
|
|
||||||
public function __construct(User $user)
|
public function __construct(User $user)
|
||||||
{
|
{
|
||||||
$this->u = $user;
|
$this->u = $user;
|
||||||
|
$this->sysNames = Db::getColumn('select sys_name from const_stats where is_bonus = true');
|
||||||
|
$this->sysNames['hpAll'] = $this->sysNames['hpall'];
|
||||||
|
$this->sysNames['mpAll'] = $this->sysNames['mpall'];
|
||||||
|
unset($this->sysNames['hpall'], $this->sysNames['mpall']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -115,17 +119,6 @@ class Stats
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Присваиваем только разрешенные значения.
|
|
||||||
*/
|
|
||||||
private static function a(&$array, string $key, $value): void
|
|
||||||
{
|
|
||||||
if (!in_array($key, array_keys(Bonuses::getBonusSystemNames()))) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$array[$key] = $value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getStats(int|array|null $uid = null, $i1 = 0, $res = 0, $reimg = false, $btl_cache = false): array
|
public function getStats(int|array|null $uid = null, $i1 = 0, $res = 0, $reimg = false, $btl_cache = false): array
|
||||||
{
|
{
|
||||||
if (empty($uid) || $uid == $this->u->info['id'] && $res != 1) {
|
if (empty($uid) || $uid == $this->u->info['id'] && $res != 1) {
|
||||||
@ -141,30 +134,8 @@ class Stats
|
|||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
$st = [
|
$st = array_fill_keys($this->sysNames, 0);
|
||||||
'maxves' => 0,
|
|
||||||
'pzm' => 0,
|
|
||||||
'yza' => 0,
|
|
||||||
'yza1' => 0,
|
|
||||||
'yza2' => 0,
|
|
||||||
'yza3' => 0,
|
|
||||||
'yza4' => 0,
|
|
||||||
'yza5' => 0,
|
|
||||||
'yza6' => 0,
|
|
||||||
'yza7' => 0,
|
|
||||||
'yzm' => 0,
|
|
||||||
'yzm1' => 0,
|
|
||||||
'yzm2' => 0,
|
|
||||||
'yzm3' => 0,
|
|
||||||
'yzm4' => 0,
|
|
||||||
'yzm5' => 0,
|
|
||||||
'yzm6' => 0,
|
|
||||||
'yzm7' => 0,
|
|
||||||
'yzma' => 0,
|
|
||||||
'pbe' => 0,
|
|
||||||
'os7' => 0,
|
|
||||||
'' => 0,
|
|
||||||
];
|
|
||||||
$s_vi = [];
|
$s_vi = [];
|
||||||
$s_v = [];
|
$s_v = [];
|
||||||
$u['clanpos'] = 0;
|
$u['clanpos'] = 0;
|
||||||
@ -229,7 +200,6 @@ class Stats
|
|||||||
item_id, inslot, useInBattle, btl_zd, iznosNOW, iznosMAX, magic_inci, name, items_users.id, img, `2h`
|
item_id, inslot, useInBattle, btl_zd, iznosNOW, iznosMAX, magic_inci, name, items_users.id, img, `2h`
|
||||||
from items_users left join items_main on items_main.id = item_id where inOdet != 0 and uid = ?', [$u['id']]);
|
from items_users left join items_main on items_main.id = item_id where inOdet != 0 and uid = ?', [$u['id']]);
|
||||||
|
|
||||||
$ia = Bonuses::getBonusSystemNames();
|
|
||||||
$h = 0;
|
$h = 0;
|
||||||
$hnd1 = 0;
|
$hnd1 = 0;
|
||||||
$hnd2 = 0;
|
$hnd2 = 0;
|
||||||
@ -266,20 +236,8 @@ from items_users left join items_main on items_main.id = item_id where inOdet !=
|
|||||||
} elseif ($wearedItem['inOdet'] == 14 && $wearedItem['type'] == 13) {
|
} elseif ($wearedItem['inOdet'] == 14 && $wearedItem['type'] == 13) {
|
||||||
$sht1 = 1;
|
$sht1 = 1;
|
||||||
}
|
}
|
||||||
$sts = explode('|', $wearedItem['data']);
|
|
||||||
$i = 0;
|
|
||||||
$sti = [];
|
|
||||||
while ($i < count($sts)) {
|
|
||||||
$ste = explode('=', $sts[$i]);
|
|
||||||
if (isset($ste[1])) {
|
|
||||||
if (!isset($sti[$ste[0]])) {
|
|
||||||
$sti[$ste[0]] = 0;
|
|
||||||
}
|
|
||||||
$sti[$ste[0]] += intval($ste[1]);
|
|
||||||
}
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
$sti = Conversion::dataStringToArray($wearedItem['data']);
|
||||||
if ($wearedItem['inOdet'] <= 18 && $wearedItem['inOdet'] > 0) {
|
if ($wearedItem['inOdet'] <= 18 && $wearedItem['inOdet'] > 0) {
|
||||||
$st['reting'] += 1;
|
$st['reting'] += 1;
|
||||||
}
|
}
|
||||||
@ -436,24 +394,22 @@ from items_users left join items_main on items_main.id = item_id where inOdet !=
|
|||||||
$st['zona'] += $sti['zona'];
|
$st['zona'] += $sti['zona'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Добавляем статы от данного предмета
|
//Добавляем статы от данного предмета
|
||||||
if (!isset($sti['restart_stats'])) {
|
if (!isset($sti['restart_stats'])) {
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while ($i < count($ia)) {
|
while ($i < count($this->sysNames)) {
|
||||||
//Действует на (Действует на)
|
//Действует на (Действует на)
|
||||||
if (isset($ia[$i]) && isset($sti['add_' . $ia[$i]])) {
|
if (isset($this->sysNames[$i]) && isset($sti['add_' . $this->sysNames[$i]])) {
|
||||||
if ($ia[$i] != 'zmproc' && $ia[$i] != 'zaproc') {
|
if (!isset($st[$this->sysNames[$i]])) {
|
||||||
if (!isset($st[$ia[$i]])) {
|
$st[$this->sysNames[$i]] = 0;
|
||||||
$st[$ia[$i]] = 0;
|
|
||||||
}
|
}
|
||||||
$st[$ia[$i]] += intval($sti['add_' . $ia[$i]]);
|
if ($this->sysNames[$i] != 'zmproc' && $this->sysNames[$i] != 'zaproc') {
|
||||||
|
$st[$this->sysNames[$i]] += intval($sti['add_' . $this->sysNames[$i]]);
|
||||||
} else {
|
} else {
|
||||||
if (!isset($st[$ia[$i]])) {
|
$st[$this->sysNames[$i]] = 100 - $st[$this->sysNames[$i]];
|
||||||
$st[$ia[$i]] = 0;
|
$st[$this->sysNames[$i]] = $st[$this->sysNames[$i]] - $st[$this->sysNames[$i]] / 100 * intval($sti['add_' . $this->sysNames[$i]]);
|
||||||
}
|
$st[$this->sysNames[$i]] = 100 - $st[$this->sysNames[$i]];
|
||||||
$st[$ia[$i]] = 100 - $st[$ia[$i]];
|
|
||||||
$st[$ia[$i]] = $st[$ia[$i]] - $st[$ia[$i]] / 100 * intval($sti['add_' . $ia[$i]]);
|
|
||||||
$st[$ia[$i]] = 100 - $st[$ia[$i]];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$i++;
|
$i++;
|
||||||
@ -461,15 +417,16 @@ from items_users left join items_main on items_main.id = item_id where inOdet !=
|
|||||||
} else {
|
} else {
|
||||||
$reitm[] = $sti;
|
$reitm[] = $sti;
|
||||||
}
|
}
|
||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while ($i < count($ia)) {
|
while ($i < count($this->sysNames)) {
|
||||||
if (isset($ia[$i]) && isset($sti['sv_' . $ia[$i]])) {
|
if (isset($this->sysNames[$i]) && isset($sti['sv_' . $this->sysNames[$i]])) {
|
||||||
if (!isset($s_v[$ia[$i]])) {
|
if (!isset($s_v[$this->sysNames[$i]])) {
|
||||||
$s_v[$ia[$i]] = 0;
|
$s_v[$this->sysNames[$i]] = 0;
|
||||||
$s_v['z'][$wearedItem['inOdet']][$ia[$i]] = 0;
|
$s_v['z'][$wearedItem['inOdet']][$this->sysNames[$i]] = 0;
|
||||||
}
|
}
|
||||||
$s_v[$ia[$i]] += intval($sti['sv_' . $ia[$i]]);
|
$s_v[$this->sysNames[$i]] += intval($sti['sv_' . $this->sysNames[$i]]);
|
||||||
$s_v['z'][$wearedItem['inOdet']][$ia[$i]] += intval($sti['sv_' . $ia[$i]]);
|
$s_v['z'][$wearedItem['inOdet']][$this->sysNames[$i]] += intval($sti['sv_' . $this->sysNames[$i]]);
|
||||||
}
|
}
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
@ -598,49 +555,48 @@ from items_users left join items_main on items_main.id = item_id where inOdet !=
|
|||||||
if (isset($sts['add_silver'])) {
|
if (isset($sts['add_silver'])) {
|
||||||
$st['slvtm'] = $e['timeUse'] + $e['actionTime'];
|
$st['slvtm'] = $e['timeUse'] + $e['actionTime'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while ($i < count($ia)) {
|
while ($i < count($this->sysNames)) {
|
||||||
if (isset($ia[$i])) {
|
if (isset($this->sysNames[$i])) {
|
||||||
if (isset($sts['add_' . $ia[$i]])) {
|
if (isset($sts['add_' . $this->sysNames[$i]])) {
|
||||||
if (!isset($sti[$ia[$i]])) {
|
if (!isset($sti[$this->sysNames[$i]])) {
|
||||||
$sti[$ia[$i]] = 0;
|
$sti[$this->sysNames[$i]] = 0;
|
||||||
}
|
}
|
||||||
$sti[$ia[$i]] += intval($sts['add_' . $ia[$i]]);
|
$sti[$this->sysNames[$i]] += intval($sts['add_' . $this->sysNames[$i]]);
|
||||||
}
|
}
|
||||||
if (isset($sts['add_' . $ia[$i]])) {
|
if (isset($sts['add_' . $this->sysNames[$i]])) {
|
||||||
if ($ia[$i] != 'zaproc' && $ia[$i] != 'zmproc') {
|
if (!isset($st[$this->sysNames[$i]])) {
|
||||||
if (!isset($st[$ia[$i]])) {
|
$st[$this->sysNames[$i]] = 0;
|
||||||
$st[$ia[$i]] = 0;
|
|
||||||
}
|
}
|
||||||
$st[$ia[$i]] += intval($sts['add_' . $ia[$i]]);
|
if ($this->sysNames[$i] != 'zaproc' && $this->sysNames[$i] != 'zmproc') {
|
||||||
|
$st[$this->sysNames[$i]] += intval($sts['add_' . $this->sysNames[$i]]);
|
||||||
} else {
|
} else {
|
||||||
if (!isset($st[$ia[$i]])) {
|
$st[$this->sysNames[$i]] = 100 - $st[$this->sysNames[$i]];
|
||||||
$st[$ia[$i]] = 0;
|
$st[$this->sysNames[$i]] = $st[$this->sysNames[$i]] - $st[$this->sysNames[$i]] / 100 * intval(
|
||||||
}
|
$sts['add_' . $this->sysNames[$i]]
|
||||||
$st[$ia[$i]] = 100 - $st[$ia[$i]];
|
|
||||||
$st[$ia[$i]] = $st[$ia[$i]] - $st[$ia[$i]] / 100 * intval(
|
|
||||||
$sts['add_' . $ia[$i]]
|
|
||||||
);
|
);
|
||||||
$st[$ia[$i]] = 100 - $st[$ia[$i]];
|
$st[$this->sysNames[$i]] = 100 - $st[$this->sysNames[$i]];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while ($i < count($ia)) {
|
while ($i < count($this->sysNames)) {
|
||||||
if (isset($ia[$i])) {
|
if (isset($this->sysNames[$i])) {
|
||||||
if (isset($sts['sv_' . $ia[$i]])) {
|
if (isset($sts['sv_' . $this->sysNames[$i]])) {
|
||||||
if (!isset($s_vi[$ia[$i]])) {
|
if (!isset($s_vi[$this->sysNames[$i]])) {
|
||||||
$s_vi[$ia[$i]] = 0;
|
$s_vi[$this->sysNames[$i]] = 0;
|
||||||
}
|
}
|
||||||
$s_vi[$ia[$i]] += intval($sts['sv_' . $ia[$i]]);
|
$s_vi[$this->sysNames[$i]] += intval($sts['sv_' . $this->sysNames[$i]]);
|
||||||
}
|
}
|
||||||
if (isset($sts['sv_' . $ia[$i]])) {
|
if (isset($sts['sv_' . $this->sysNames[$i]])) {
|
||||||
if (!isset($s_v[$ia[$i]])) {
|
if (!isset($s_v[$this->sysNames[$i]])) {
|
||||||
$s_v[$ia[$i]] = 0;
|
$s_v[$this->sysNames[$i]] = 0;
|
||||||
}
|
}
|
||||||
$s_v[$ia[$i]] += intval($sts['sv_' . $ia[$i]]);
|
$s_v[$this->sysNames[$i]] += intval($sts['sv_' . $this->sysNames[$i]]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$i++;
|
$i++;
|
||||||
@ -792,43 +748,45 @@ from items_users left join items_main on items_main.id = item_id where inOdet !=
|
|||||||
$st['set_pog2'][$ctt]['m'] = $sts['add_pog2mp'];
|
$st['set_pog2'][$ctt]['m'] = $sts['add_pog2mp'];
|
||||||
unset($ctt);
|
unset($ctt);
|
||||||
}
|
}
|
||||||
$i = 0;
|
|
||||||
while ($i < count($ia)) {
|
|
||||||
if (isset($ia[$i]) && isset($sts['add_' . $ia[$i]])) {
|
|
||||||
if ($ia[$i] != 'zaproc' && $ia[$i] != 'zmproc') {
|
|
||||||
if (!isset($sti[$ia[$i]])) {
|
|
||||||
$sti[$ia[$i]] = 0;
|
|
||||||
}
|
|
||||||
$sti[$ia[$i]] += intval($sts['add_' . $ia[$i]]);
|
|
||||||
if (!isset($st[$ia[$i]])) {
|
|
||||||
$st[$ia[$i]] = 0;
|
|
||||||
}
|
|
||||||
$st[$ia[$i]] += intval($sts['add_' . $ia[$i]]);
|
|
||||||
} else {
|
|
||||||
$sti[$ia[$i]] = 100 - $sti[$ia[$i]];
|
|
||||||
$sti[$ia[$i]] = $sti[$ia[$i]] - $sti[$ia[$i]] / 100 * intval(
|
|
||||||
$sts['add_' . $ia[$i]]
|
|
||||||
);
|
|
||||||
$sti[$ia[$i]] = 100 - $sti[$ia[$i]];
|
|
||||||
|
|
||||||
$st[$ia[$i]] = 100 - $st[$ia[$i]];
|
$i = 0;
|
||||||
$st[$ia[$i]] = $st[$ia[$i]] - $st[$ia[$i]] / 100 * intval($sts['add_' . $ia[$i]]);
|
while ($i < count($this->sysNames)) {
|
||||||
$st[$ia[$i]] = 100 - $st[$ia[$i]];
|
if (isset($this->sysNames[$i]) && isset($sts['add_' . $this->sysNames[$i]])) {
|
||||||
|
if ($this->sysNames[$i] != 'zaproc' && $this->sysNames[$i] != 'zmproc') {
|
||||||
|
if (!isset($sti[$this->sysNames[$i]])) {
|
||||||
|
$sti[$this->sysNames[$i]] = 0;
|
||||||
|
}
|
||||||
|
$sti[$this->sysNames[$i]] += intval($sts['add_' . $this->sysNames[$i]]);
|
||||||
|
if (!isset($st[$this->sysNames[$i]])) {
|
||||||
|
$st[$this->sysNames[$i]] = 0;
|
||||||
|
}
|
||||||
|
$st[$this->sysNames[$i]] += intval($sts['add_' . $this->sysNames[$i]]);
|
||||||
|
} else {
|
||||||
|
$sti[$this->sysNames[$i]] = 100 - $sti[$this->sysNames[$i]];
|
||||||
|
$sti[$this->sysNames[$i]] = $sti[$this->sysNames[$i]] - $sti[$this->sysNames[$i]] / 100 * intval(
|
||||||
|
$sts['add_' . $this->sysNames[$i]]
|
||||||
|
);
|
||||||
|
$sti[$this->sysNames[$i]] = 100 - $sti[$this->sysNames[$i]];
|
||||||
|
|
||||||
|
$st[$this->sysNames[$i]] = 100 - $st[$this->sysNames[$i]];
|
||||||
|
$st[$this->sysNames[$i]] = $st[$this->sysNames[$i]] - $st[$this->sysNames[$i]] / 100 * intval($sts['add_' . $this->sysNames[$i]]);
|
||||||
|
$st[$this->sysNames[$i]] = 100 - $st[$this->sysNames[$i]];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while ($i < count($ia)) {
|
while ($i < count($this->sysNames)) {
|
||||||
if (isset($ia[$i]) && isset($sts['add_' . $ia[$i]])) {
|
if (isset($this->sysNames[$i]) && isset($sts['add_' . $this->sysNames[$i]])) {
|
||||||
if (!isset($s_vi[$ia[$i]])) {
|
if (!isset($s_vi[$this->sysNames[$i]])) {
|
||||||
$s_vi[$ia[$i]] = 0;
|
$s_vi[$this->sysNames[$i]] = 0;
|
||||||
}
|
}
|
||||||
$s_vi[$ia[$i]] += intval($sts['sv_' . $ia[$i]]);
|
$s_vi[$this->sysNames[$i]] += intval($sts['sv_' . $this->sysNames[$i]]);
|
||||||
if (!isset($s_v[$ia[$i]])) {
|
if (!isset($s_v[$this->sysNames[$i]])) {
|
||||||
$s_v[$ia[$i]] = 0;
|
$s_v[$this->sysNames[$i]] = 0;
|
||||||
}
|
}
|
||||||
$s_v[$ia[$i]] += intval($sts['sv_' . $ia[$i]]);
|
$s_v[$this->sysNames[$i]] += intval($sts['sv_' . $this->sysNames[$i]]);
|
||||||
}
|
}
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
@ -842,90 +800,29 @@ from items_users left join items_main on items_main.id = item_id where inOdet !=
|
|||||||
|
|
||||||
|
|
||||||
//Характеристики от статов
|
//Характеристики от статов
|
||||||
if (!isset($st['hpAll'])) {
|
|
||||||
$st['hpAll'] = 0;
|
|
||||||
}
|
|
||||||
$st['hpAll'] += $st['s4'] * 5;
|
$st['hpAll'] += $st['s4'] * 5;
|
||||||
|
|
||||||
if (!isset($st['mpAll'])) {
|
|
||||||
$st['mpAll'] = 0;
|
|
||||||
}
|
|
||||||
$st['mpAll'] += $st['s6'] * 10;
|
$st['mpAll'] += $st['s6'] * 10;
|
||||||
|
|
||||||
//Турнир
|
//Турнир
|
||||||
if (!isset($st['m1'])) {
|
|
||||||
$st['m1'] = 0;
|
|
||||||
}
|
|
||||||
$st['m1'] += $st['s3'] * 5;
|
$st['m1'] += $st['s3'] * 5;
|
||||||
|
|
||||||
|
|
||||||
// мф.анти-крит = 2.5
|
// мф.анти-крит = 2.5
|
||||||
if (!isset($st['m2'])) {
|
|
||||||
$st['m2'] = 0;
|
|
||||||
}
|
|
||||||
$st['m2'] += $st['s3'] * 5;
|
$st['m2'] += $st['s3'] * 5;
|
||||||
|
|
||||||
// мф.уворот = 2.5
|
// мф.уворот = 2.5
|
||||||
if (!isset($st['m4'])) {
|
|
||||||
$st['m4'] = 0;
|
|
||||||
}
|
|
||||||
$st['m4'] += $st['s2'] * 5;
|
$st['m4'] += $st['s2'] * 5;
|
||||||
|
|
||||||
// мф.анти-уворот = 2.5
|
// мф.анти-уворот = 2.5
|
||||||
if (!isset($st['m5'])) {
|
|
||||||
$st['m5'] = 0;
|
|
||||||
}
|
|
||||||
$st['m5'] += $st['s2'] * 5;
|
$st['m5'] += $st['s2'] * 5;
|
||||||
|
|
||||||
if (!isset($st['za'])) {
|
|
||||||
$st['za'] = 0;
|
|
||||||
}
|
|
||||||
$st['za'] += $st['s4'] * 1.0;
|
$st['za'] += $st['s4'] * 1.0;
|
||||||
|
|
||||||
if (!isset($st['zm'])) {
|
|
||||||
$st['zm'] = 0;
|
|
||||||
}
|
|
||||||
$st['zm'] += $st['s4'] * 0.0;
|
$st['zm'] += $st['s4'] * 0.0;
|
||||||
|
|
||||||
if (!isset($st['zaproc'])) { //Тут зм 'zaproc'=>'Защита от урона (%)','zmproc'=>'Защита от магии стихий (%)
|
|
||||||
$st['zaproc'] = 0;
|
|
||||||
}
|
|
||||||
$st['zaproc'] += round($st['s5'] * 0);
|
|
||||||
|
|
||||||
if (!isset($st['m19'])) {
|
|
||||||
$st['m19'] = 0;
|
|
||||||
}
|
|
||||||
$st['m19'] += round($st['s3'] * 0.03);
|
$st['m19'] += round($st['s3'] * 0.03);
|
||||||
|
|
||||||
//Мощности
|
//Мощности
|
||||||
//Мощность против "Мощность крит. урона". Гамс
|
//Мощность против "Мощность крит. урона". Гамс
|
||||||
if (!isset($st['antm3'])) {
|
|
||||||
$st['antm3'] = 0;
|
|
||||||
}
|
|
||||||
$st['antm3'] += $st['s5'] * 0.5;
|
$st['antm3'] += $st['s5'] * 0.5;
|
||||||
|
|
||||||
|
|
||||||
if (!isset($st['m10'])) {
|
|
||||||
$st['m10'] = 0;
|
|
||||||
}
|
|
||||||
$st['m10'] += 0;
|
|
||||||
|
|
||||||
if (!isset($st['m11'])) {
|
|
||||||
$st['m11'] = 0;
|
|
||||||
}
|
|
||||||
$st['m11'] += 0;
|
|
||||||
|
|
||||||
if (!isset($st['m11a'])) {
|
|
||||||
$st['m11a'] = 0;
|
|
||||||
}
|
|
||||||
$st['m11a'] += 0;
|
|
||||||
|
|
||||||
|
|
||||||
if (!isset($st['m8'])) {
|
|
||||||
$st['m8'] = 0;
|
|
||||||
}
|
|
||||||
$st['m8'] += 0;
|
|
||||||
|
|
||||||
//Бонусы комплектов
|
//Бонусы комплектов
|
||||||
$i = 0;
|
$i = 0;
|
||||||
if (!empty($coms['new']) && is_array($coms['new'])) {
|
if (!empty($coms['new']) && is_array($coms['new'])) {
|
||||||
@ -942,9 +839,9 @@ from items_users left join items_main on items_main.id = item_id where inOdet !=
|
|||||||
//добавляем действия комплекта
|
//добавляем действия комплекта
|
||||||
$ij = 0;
|
$ij = 0;
|
||||||
$sti = Conversion::dataStringToArray($com['data']);
|
$sti = Conversion::dataStringToArray($com['data']);
|
||||||
while ($ij < count($ia)) {
|
while ($ij < count($this->sysNames)) {
|
||||||
if (isset($ia[$ij]) && isset($sti[$ia[$ij]])) {
|
if (isset($this->sysNames[$ij]) && isset($sti[$this->sysNames[$ij]])) {
|
||||||
$st[$ia[$ij]] += $sti[$ia[$ij]];
|
$st[$this->sysNames[$ij]] += $sti[$this->sysNames[$ij]];
|
||||||
}
|
}
|
||||||
$ij++;
|
$ij++;
|
||||||
}
|
}
|
||||||
@ -1014,20 +911,11 @@ from items_users left join items_main on items_main.id = item_id where inOdet !=
|
|||||||
if ($sht1 == 1) {
|
if ($sht1 == 1) {
|
||||||
$st['zonb']++;
|
$st['zonb']++;
|
||||||
}/* Владения */
|
}/* Владения */
|
||||||
|
|
||||||
|
//mib1-mib4, mab1-mab4 armor??
|
||||||
|
|
||||||
$i = 1;
|
$i = 1;
|
||||||
while ($i <= 7) {
|
while ($i <= 7) {
|
||||||
if (!isset($st['pm' . $i])) {
|
|
||||||
$st['pm' . $i] = 0;
|
|
||||||
}
|
|
||||||
if (!isset($st['a' . $i])) {
|
|
||||||
$st['a' . $i] = 0;
|
|
||||||
}
|
|
||||||
if (!isset($st['mg' . $i])) {
|
|
||||||
$st['mg' . $i] = 0;
|
|
||||||
}
|
|
||||||
if (!isset($st['zm' . $i])) {
|
|
||||||
$st['zm' . $i] = 0;
|
|
||||||
}
|
|
||||||
if (isset($st['s5'])) {
|
if (isset($st['s5'])) {
|
||||||
$st['pm' . $i] += $st['s5'] * 0.5;
|
$st['pm' . $i] += $st['s5'] * 0.5;
|
||||||
}
|
}
|
||||||
@ -1047,26 +935,6 @@ from items_users left join items_main on items_main.id = item_id where inOdet !=
|
|||||||
$st['zm' . $i] += $st['zma'];
|
$st['zm' . $i] += $st['zma'];
|
||||||
}
|
}
|
||||||
if ($i <= 4) {
|
if ($i <= 4) {
|
||||||
if (!isset($st['mib' . $i])) {
|
|
||||||
$st['mib' . $i] = 0;
|
|
||||||
}
|
|
||||||
if (!isset($st['mab' . $i])) {
|
|
||||||
$st['mab' . $i] = 0;
|
|
||||||
}
|
|
||||||
if (!isset($st['mg' . $i])) {
|
|
||||||
$st['mg' . $i] = 0;
|
|
||||||
}
|
|
||||||
if (!isset($st['pm' . $i])) {
|
|
||||||
$st['pm' . $i] = 0;
|
|
||||||
}
|
|
||||||
if (!isset($st['pa' . $i])) {
|
|
||||||
$st['pa' . $i] = 0;
|
|
||||||
}
|
|
||||||
if (!isset($st['za' . $i])) {
|
|
||||||
$st['za' . $i] = 0;
|
|
||||||
}
|
|
||||||
$st['mib' . $i] += 0;
|
|
||||||
$st['mab' . $i] += 0;
|
|
||||||
if (isset($st['mall'])) {
|
if (isset($st['mall'])) {
|
||||||
$st['mg' . $i] += $st['mall'];
|
$st['mg' . $i] += $st['mall'];
|
||||||
}
|
}
|
||||||
@ -1081,7 +949,9 @@ from items_users left join items_main on items_main.id = item_id where inOdet !=
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$i++;
|
$i++;
|
||||||
}//Уязвимость оружие и магиям
|
}
|
||||||
|
|
||||||
|
//Уязвимость оружие и магиям
|
||||||
$i = 1;
|
$i = 1;
|
||||||
while ($i <= 7) {
|
while ($i <= 7) {
|
||||||
$st['yzm' . $i] += $st['yzma'];
|
$st['yzm' . $i] += $st['yzma'];
|
||||||
@ -1127,7 +997,9 @@ from items_users left join items_main on items_main.id = item_id where inOdet !=
|
|||||||
$st['mpNow'] = 0;
|
$st['mpNow'] = 0;
|
||||||
} elseif ($st['mpNow'] > $st['mpAll']) {
|
} elseif ($st['mpNow'] > $st['mpAll']) {
|
||||||
$st['mpNow'] = $st['mpAll'];
|
$st['mpNow'] = $st['mpAll'];
|
||||||
}//зоны блока и удара
|
}
|
||||||
|
|
||||||
|
//зоны блока и удара
|
||||||
if ($st['zona'] < 1) {
|
if ($st['zona'] < 1) {
|
||||||
$st['zona'] = 1;
|
$st['zona'] = 1;
|
||||||
}
|
}
|
||||||
@ -1140,6 +1012,7 @@ from items_users left join items_main on items_main.id = item_id where inOdet !=
|
|||||||
if ($st['zonb'] > 3) {
|
if ($st['zonb'] > 3) {
|
||||||
$st['zonb'] = 3;
|
$st['zonb'] = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
$st['ozash'] = $oza;
|
$st['ozash'] = $oza;
|
||||||
$st['ozmsh'] = $ozm;
|
$st['ozmsh'] = $ozm;
|
||||||
$st['weapon1'] = $hnd1;
|
$st['weapon1'] = $hnd1;
|
||||||
@ -1154,18 +1027,14 @@ from items_users left join items_main on items_main.id = item_id where inOdet !=
|
|||||||
$st['y'] = $u['y'];
|
$st['y'] = $u['y'];
|
||||||
$st['s'] = $u['s'];
|
$st['s'] = $u['s'];
|
||||||
|
|
||||||
$st['reting'] = 1 + ceil($st['reting']);
|
|
||||||
|
|
||||||
|
|
||||||
$this->addDungeonsBonuses($u['id'], $st);
|
$this->addDungeonsBonuses($u['id'], $st);
|
||||||
|
|
||||||
|
|
||||||
//Добавочный подьем для игроков
|
//Добавочный подьем для игроков
|
||||||
$st['maxves'] += 500;
|
$st['maxves'] += 100;
|
||||||
|
|
||||||
if ($u['admin'] > 0) { // ускоренная регенерация и пробег по подземелью
|
if ($u['admin'] > 0) { // ускоренная регенерация и пробег по подземелью
|
||||||
$st['speed_dungeon'] = 1000;
|
$st['speed_dungeon'] = 500;
|
||||||
$st['speedhp'] = 1000;
|
$st['speedhp'] = 500;
|
||||||
if ($u['battle']) {
|
if ($u['battle']) {
|
||||||
Db::sql("update stats set
|
Db::sql("update stats set
|
||||||
tactic1 = tactic2 = tactic3 = tactic4 = tactic5 = tactic6 = tactic7 = 25,
|
tactic1 = tactic2 = tactic3 = tactic4 = tactic5 = tactic6 = tactic7 = 25,
|
||||||
@ -1176,7 +1045,9 @@ from items_users left join items_main on items_main.id = item_id where inOdet !=
|
|||||||
|
|
||||||
if (date('H') >= 22 && date('H') <= 10) {
|
if (date('H') >= 22 && date('H') <= 10) {
|
||||||
$st['exp'] += 25;
|
$st['exp'] += 25;
|
||||||
}//Сохраняем рейтинг игрока
|
}
|
||||||
|
|
||||||
|
//Сохраняем рейтинг игрока
|
||||||
$st['reting'] = floor($st['reting']);
|
$st['reting'] = floor($st['reting']);
|
||||||
|
|
||||||
if (isset($st['btl_cof'], $st['prckr']) && $st['btl_cof'] != $st['prckr']) {
|
if (isset($st['btl_cof'], $st['prckr']) && $st['btl_cof'] != $st['prckr']) {
|
||||||
@ -1227,7 +1098,7 @@ from items_users left join items_main on items_main.id = item_id where inOdet !=
|
|||||||
$sts = Conversion::dataStringToArray($data);
|
$sts = Conversion::dataStringToArray($data);
|
||||||
foreach ($sts as $paramName => $value) {
|
foreach ($sts as $paramName => $value) {
|
||||||
//todo убедиться, что не могут прилететь параметры, которых нет в словарей бонусов предметов
|
//todo убедиться, что не могут прилететь параметры, которых нет в словарей бонусов предметов
|
||||||
if (!str_contains(implode(',', Bonuses::getBonusSystemNames()), 'add_' . $paramName)) { // есть ли параметр в разрешенных?
|
if (!str_contains(implode(',', $this->sysNames), 'add_' . $paramName)) { // есть ли параметр в разрешенных?
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (empty($st['add_' . $paramName])) {
|
if (empty($st['add_' . $paramName])) {
|
||||||
|
@ -4,53 +4,59 @@ namespace User;
|
|||||||
|
|
||||||
class UserCalculatedStats
|
class UserCalculatedStats
|
||||||
{
|
{
|
||||||
|
private UserStats $userStats;
|
||||||
|
private UserStats $baseUserStats;
|
||||||
public int $hpAll;
|
public int $hpAll;
|
||||||
public int $mpAll;
|
public int $mpAll;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly UserStats $us
|
UserStats $userStats
|
||||||
) {
|
)
|
||||||
|
{
|
||||||
|
$this->userStats = $userStats;
|
||||||
|
$this->baseUserStats = $userStats;
|
||||||
$this->hpAll = $this->hpAll();
|
$this->hpAll = $this->hpAll();
|
||||||
$this->mpAll = $this->mpAll();
|
$this->mpAll = $this->mpAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function hpAll(): int
|
private function hpAll(): int
|
||||||
{
|
{
|
||||||
$hpAll = $this->us->s4 * 5;
|
$hpAll = $this->userStats->s4 * 5;
|
||||||
$hpAll += match (true){
|
$hpAll += match (true) {
|
||||||
$this->us->s4 >= 200 => 850,
|
$this->userStats->s4 >= 200 => 850,
|
||||||
$this->us->s4 >= 175 => 600,
|
$this->userStats->s4 >= 175 => 600,
|
||||||
$this->us->s4 >= 150 => 450,
|
$this->userStats->s4 >= 150 => 450,
|
||||||
$this->us->s4 >= 125 => 400,
|
$this->userStats->s4 >= 125 => 400,
|
||||||
$this->us->s4 >= 100 => 250,
|
$this->userStats->s4 >= 100 => 250,
|
||||||
$this->us->s4 >= 75 => 175,
|
$this->userStats->s4 >= 75 => 175,
|
||||||
$this->us->s4 >= 50 => 100,
|
$this->userStats->s4 >= 50 => 100,
|
||||||
$this->us->s4 >= 25 => 50,
|
$this->userStats->s4 >= 25 => 50,
|
||||||
default => 0
|
default => 0
|
||||||
};
|
};
|
||||||
return $hpAll;
|
return $hpAll;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function mpAll():int
|
private function mpAll(): int
|
||||||
{
|
{
|
||||||
$mpAll = $this->us->s6 * 10;
|
$mpAll = $this->userStats->s6 * 10;
|
||||||
$mpAll += match (true) {
|
$mpAll += match (true) {
|
||||||
$this->us->s6 >= 200 => 1500,
|
$this->userStats->s6 >= 200 => 1500,
|
||||||
$this->us->s6 >= 175 => 900,
|
$this->userStats->s6 >= 175 => 900,
|
||||||
$this->us->s6 >= 150 => 700,
|
$this->userStats->s6 >= 150 => 700,
|
||||||
$this->us->s6 >= 125 => 500,
|
$this->userStats->s6 >= 125 => 500,
|
||||||
$this->us->s6 >= 100 => 350,
|
$this->userStats->s6 >= 100 => 350,
|
||||||
$this->us->s6 >= 75 => 250,
|
$this->userStats->s6 >= 75 => 250,
|
||||||
$this->us->s6 >= 50 => 150,
|
$this->userStats->s6 >= 50 => 150,
|
||||||
$this->us->s6 >= 25 => 50,
|
$this->userStats->s6 >= 25 => 50,
|
||||||
default => 0
|
default => 0
|
||||||
};
|
};
|
||||||
return $mpAll;
|
return $mpAll;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function __toString():string
|
public function __toString(): string
|
||||||
{
|
{
|
||||||
$arr = [];
|
$arr = [];
|
||||||
foreach ($this as $k=>$v) {
|
foreach ($this as $k => $v) {
|
||||||
if (empty($v) || $k === 'us') {
|
if (empty($v) || $k === 'us') {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -62,7 +68,7 @@ class UserCalculatedStats
|
|||||||
public function __debugInfo()
|
public function __debugInfo()
|
||||||
{
|
{
|
||||||
$arr = [];
|
$arr = [];
|
||||||
foreach ($this as $k=>$v) {
|
foreach ($this as $k => $v) {
|
||||||
if ($k === 'us') {
|
if ($k === 'us') {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -21,12 +21,8 @@ readonly class UserStats
|
|||||||
public int $mg3;
|
public int $mg3;
|
||||||
public int $mg4;
|
public int $mg4;
|
||||||
public int $mg7;
|
public int $mg7;
|
||||||
//public int $hpAll;
|
|
||||||
//public int $mpAll;
|
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(array $a)
|
||||||
array $a
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
$this->s1 = $a['s1'] ?? 0;
|
$this->s1 = $a['s1'] ?? 0;
|
||||||
$this->s2 = $a['s2'] ?? 0;
|
$this->s2 = $a['s2'] ?? 0;
|
||||||
@ -45,53 +41,6 @@ readonly class UserStats
|
|||||||
$this->mg3 = max($a['mg3'] ?? 0, $a['mall'] ?? 0);
|
$this->mg3 = max($a['mg3'] ?? 0, $a['mall'] ?? 0);
|
||||||
$this->mg4 = max($a['mg4'] ?? 0, $a['mall'] ?? 0);
|
$this->mg4 = max($a['mg4'] ?? 0, $a['mall'] ?? 0);
|
||||||
$this->mg7 = $a['mg7'] ?? 0;
|
$this->mg7 = $a['mg7'] ?? 0;
|
||||||
//$this->hpAll = $this->hpAll();
|
|
||||||
//$this->mpAll = $this->mpAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*private function hpAll(): int
|
|
||||||
{
|
|
||||||
$hpAll = $this->s4 * 5;
|
|
||||||
$hpAll += match (true){
|
|
||||||
$this->s4 >= 200 => 850,
|
|
||||||
$this->s4 >= 175 => 600,
|
|
||||||
$this->s4 >= 150 => 450,
|
|
||||||
$this->s4 >= 125 => 400,
|
|
||||||
$this->s4 >= 100 => 250,
|
|
||||||
$this->s4 >= 75 => 175,
|
|
||||||
$this->s4 >= 50 => 100,
|
|
||||||
$this->s4 >= 25 => 50,
|
|
||||||
default => 0
|
|
||||||
};
|
|
||||||
return $hpAll;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function mpAll():int
|
|
||||||
{
|
|
||||||
$mpAll = $this->s6 * 10;
|
|
||||||
$mpAll += match (true) {
|
|
||||||
$this->s6 >= 200 => 1500,
|
|
||||||
$this->s6 >= 175 => 900,
|
|
||||||
$this->s6 >= 150 => 700,
|
|
||||||
$this->s6 >= 125 => 500,
|
|
||||||
$this->s6 >= 100 => 350,
|
|
||||||
$this->s6 >= 75 => 250,
|
|
||||||
$this->s6 >= 50 => 150,
|
|
||||||
$this->s6 >= 25 => 50,
|
|
||||||
default => 0
|
|
||||||
};
|
|
||||||
return $mpAll;
|
|
||||||
}*/
|
|
||||||
public function __toString():string
|
|
||||||
{
|
|
||||||
$arr = [];
|
|
||||||
foreach ($this as $k=>$v) {
|
|
||||||
if (empty($v)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
$arr[$k] = $v;
|
|
||||||
}
|
|
||||||
return json_encode($arr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
300
css/inf.css
Normal file
300
css/inf.css
Normal file
@ -0,0 +1,300 @@
|
|||||||
|
body {
|
||||||
|
background-color: #dedede;
|
||||||
|
margin: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
height: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
border: solid 1pt #B0B0B0;
|
||||||
|
font-family: MS Sans Serif, sans-serif;
|
||||||
|
font-size: 11px;
|
||||||
|
color: #191970;
|
||||||
|
padding: 2px 7px 2px 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:active {
|
||||||
|
padding: 3px 6px 1px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ttl_css {
|
||||||
|
position: absolute;
|
||||||
|
text-shadow: 0 0 2px #fff;
|
||||||
|
padding: 4px 8px;
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.25);
|
||||||
|
background-color: #cfcfcf;
|
||||||
|
border-radius: 3px;
|
||||||
|
-webkit-border-radius: 3px;
|
||||||
|
-moz-border-radius: 3px;
|
||||||
|
box-shadow: 0 0 3px #000000;
|
||||||
|
-webkit-box-shadow: 0 0 3px #000000;
|
||||||
|
-moz-box-shadow: 0 0 3px #000000;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.findlg {
|
||||||
|
filter: alpha(opacity=37);
|
||||||
|
opacity: 0.37;
|
||||||
|
-moz-opacity: 0.37;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.findlg:hover {
|
||||||
|
filter: alpha(opacity=100);
|
||||||
|
opacity: 1.00;
|
||||||
|
-moz-opacity: 1.00;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gifin {
|
||||||
|
position: absolute;
|
||||||
|
left: 112px;
|
||||||
|
top: 428px;
|
||||||
|
padding: 5px;
|
||||||
|
background-color: #fcfef3;
|
||||||
|
border: 1px solid #6e6960;
|
||||||
|
font-size: 12px;
|
||||||
|
max-width: 300px;
|
||||||
|
min-height: 100px;
|
||||||
|
min-width: 150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pg_btn1 {
|
||||||
|
width: 27px;
|
||||||
|
height: 78px;
|
||||||
|
cursor: pointer;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pg_btn1:hover {
|
||||||
|
background-position: -27px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pg_btn1:active {
|
||||||
|
background-position: -55px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pg_btn2 {
|
||||||
|
background-position: -54px;
|
||||||
|
width: 27px;
|
||||||
|
height: 78px;
|
||||||
|
cursor: pointer;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pg_btn2:hover {
|
||||||
|
background-position: -27px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pg_btn2:active {
|
||||||
|
background-position: 1px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
progress {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prog0 {
|
||||||
|
width: 10em;
|
||||||
|
height: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prog0::-webkit-progress-bar {
|
||||||
|
background-color: #eee;
|
||||||
|
border-radius: 2px;
|
||||||
|
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prog0[value]::-webkit-progress-value {
|
||||||
|
background-image: -webkit-linear-gradient(-45deg,
|
||||||
|
transparent 33%, rgba(0, 0, 0, .1) 33%,
|
||||||
|
rgba(0, 0, 0, .1) 66%, transparent 66%),
|
||||||
|
-webkit-linear-gradient(top,
|
||||||
|
rgba(255, 255, 255, .25),
|
||||||
|
rgba(0, 0, 0, .25)),
|
||||||
|
-webkit-linear-gradient(left, #09c, #7FFFD4);
|
||||||
|
|
||||||
|
border-radius: 2px;
|
||||||
|
background-size: 35px 20px, 100% 100%, 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prog1 {
|
||||||
|
width: 10em;
|
||||||
|
height: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prog1::-webkit-progress-bar {
|
||||||
|
background-color: #eee;
|
||||||
|
border-radius: 2px;
|
||||||
|
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prog1[value]::-webkit-progress-value {
|
||||||
|
background-image: -webkit-linear-gradient(-45deg,
|
||||||
|
transparent 33%, rgba(0, 0, 0, .1) 33%,
|
||||||
|
rgba(0, 0, 0, .1) 66%, transparent 66%),
|
||||||
|
-webkit-linear-gradient(top,
|
||||||
|
rgba(255, 255, 255, .25),
|
||||||
|
rgba(0, 0, 0, .25)),
|
||||||
|
-webkit-linear-gradient(left, #7FFFD4, #F4A460);
|
||||||
|
|
||||||
|
border-radius: 2px;
|
||||||
|
background-size: 35px 20px, 100% 100%, 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prog2 {
|
||||||
|
width: 10em;
|
||||||
|
height: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prog2::-webkit-progress-bar {
|
||||||
|
background-color: #eee;
|
||||||
|
border-radius: 2px;
|
||||||
|
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prog2[value]::-webkit-progress-value {
|
||||||
|
background-image: -webkit-linear-gradient(-45deg,
|
||||||
|
transparent 33%, rgba(0, 0, 0, .1) 33%,
|
||||||
|
rgba(0, 0, 0, .1) 66%, transparent 66%),
|
||||||
|
-webkit-linear-gradient(top,
|
||||||
|
rgba(255, 255, 255, .25),
|
||||||
|
rgba(0, 0, 0, .25)),
|
||||||
|
-webkit-linear-gradient(left, #F4A460, #FFC0CB);
|
||||||
|
|
||||||
|
border-radius: 2px;
|
||||||
|
background-size: 35px 20px, 100% 100%, 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prog3 {
|
||||||
|
width: 10em;
|
||||||
|
height: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prog3::-webkit-progress-bar {
|
||||||
|
background-color: #eee;
|
||||||
|
border-radius: 2px;
|
||||||
|
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prog3[value]::-webkit-progress-value {
|
||||||
|
background-image: -webkit-linear-gradient(-45deg,
|
||||||
|
transparent 33%, rgba(0, 0, 0, .1) 33%,
|
||||||
|
rgba(0, 0, 0, .1) 66%, transparent 66%),
|
||||||
|
-webkit-linear-gradient(top,
|
||||||
|
rgba(255, 255, 255, .25),
|
||||||
|
rgba(0, 0, 0, .25)),
|
||||||
|
-webkit-linear-gradient(left, #FFC0CB, #FFD700);
|
||||||
|
|
||||||
|
border-radius: 2px;
|
||||||
|
background-size: 35px 20px, 100% 100%, 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prog4 {
|
||||||
|
width: 10em;
|
||||||
|
height: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prog4::-webkit-progress-bar {
|
||||||
|
background-color: #eee;
|
||||||
|
border-radius: 2px;
|
||||||
|
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prog4[value]::-webkit-progress-value {
|
||||||
|
background-image: -webkit-linear-gradient(-45deg,
|
||||||
|
transparent 33%, rgba(0, 0, 0, .1) 33%,
|
||||||
|
rgba(0, 0, 0, .1) 66%, transparent 66%),
|
||||||
|
-webkit-linear-gradient(top,
|
||||||
|
rgba(255, 255, 255, .25),
|
||||||
|
rgba(0, 0, 0, .25)),
|
||||||
|
-webkit-linear-gradient(left, #FFD700, #FF0000);
|
||||||
|
|
||||||
|
border-radius: 2px;
|
||||||
|
background-size: 35px 20px, 100% 100%, 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prog5 {
|
||||||
|
width: 10em;
|
||||||
|
height: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prog5::-webkit-progress-bar {
|
||||||
|
background-color: #eee;
|
||||||
|
border-radius: 2px;
|
||||||
|
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prog5[value]::-webkit-progress-value {
|
||||||
|
background-image: -webkit-linear-gradient(-45deg,
|
||||||
|
transparent 33%, rgba(0, 0, 0, .1) 33%,
|
||||||
|
rgba(0, 0, 0, .1) 66%, transparent 66%),
|
||||||
|
-webkit-linear-gradient(top,
|
||||||
|
rgba(255, 255, 255, .25),
|
||||||
|
rgba(0, 0, 0, .25)),
|
||||||
|
-webkit-linear-gradient(left, #FF0000, #FF0000);
|
||||||
|
|
||||||
|
border-radius: 2px;
|
||||||
|
background-size: 35px 20px, 100% 100%, 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dvfirs {
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
float: left;
|
||||||
|
margin-left: 20px;
|
||||||
|
width: 350px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dvsec {
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
float: left;
|
||||||
|
width: 140px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dvtre {
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
float: left;
|
||||||
|
width: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.grid-container-main {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 265px auto 111px;
|
||||||
|
gap: 10px 5px;
|
||||||
|
grid-template-areas:
|
||||||
|
' . . .'
|
||||||
|
'footer footer footer';
|
||||||
|
}
|
||||||
|
|
||||||
|
div.grid-container-main > div {
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.grid-container-main > div.bottom {
|
||||||
|
grid-area: footer;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.grid-container-main > div.center {
|
||||||
|
margin-top: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.donatedEkr {
|
||||||
|
background-color: lightyellow;
|
||||||
|
padding: 2px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
@ -3,6 +3,7 @@
|
|||||||
use Core\Config;
|
use Core\Config;
|
||||||
use Core\Db;
|
use Core\Db;
|
||||||
use Core\View;
|
use Core\View;
|
||||||
|
use Enum\ShopId;
|
||||||
use Helper\Conversion;
|
use Helper\Conversion;
|
||||||
use Location\Shop;
|
use Location\Shop;
|
||||||
use User\Clan;
|
use User\Clan;
|
||||||
@ -28,13 +29,13 @@ $giftsvars = [];
|
|||||||
$otdel = 1;
|
$otdel = 1;
|
||||||
|
|
||||||
if ((int)$u->info['room'] === 10) {
|
if ((int)$u->info['room'] === 10) {
|
||||||
$shopId = Shop::MAIN;
|
$shopId = ShopId::MAIN;
|
||||||
}
|
}
|
||||||
if ((int)$u->info['room'] === 368) {
|
if ((int)$u->info['room'] === 368) {
|
||||||
$shopId = Shop::SHOP_2;
|
$shopId = ShopId::SHOP_2;
|
||||||
}
|
}
|
||||||
if ((int)$u->info['room'] === 13) {
|
if ((int)$u->info['room'] === 13) {
|
||||||
$shopId = Shop::BEREZKA;
|
$shopId = ShopId::BEREZKA;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_SERVER["REQUEST_METHOD"] === "GET") { //неясно почему, $_GET вызывается буквалльно всегда, даже на пустом месте.
|
if ($_SERVER["REQUEST_METHOD"] === "GET") { //неясно почему, $_GET вызывается буквалльно всегда, даже на пустом месте.
|
||||||
@ -91,7 +92,7 @@ if ($actionSale) {
|
|||||||
ItemsModel::delete($item['id']);
|
ItemsModel::delete($item['id']);
|
||||||
$u->addKr($sellprice);
|
$u->addKr($sellprice);
|
||||||
$status = "Вы успешно продали предмет «{$item['name']}» за $sellprice кр.";
|
$status = "Вы успешно продали предмет «{$item['name']}» за $sellprice кр.";
|
||||||
Delo::add(2, 'shopid:' . $shopId, $u->info['id'], "Предмет «{$item['name']}» [id:{$item['id']}] продан за $sellprice кр.", -$sellprice);
|
Delo::add(2, 'shopid:' . $shopId->value, $u->info['id'], "Предмет «{$item['name']}» [id:{$item['id']}] продан за $sellprice кр.", -$sellprice);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -132,7 +133,7 @@ $renderArgs = [
|
|||||||
'shop' => $shop,
|
'shop' => $shop,
|
||||||
'goLis' => $goLis,
|
'goLis' => $goLis,
|
||||||
'code' => $code,
|
'code' => $code,
|
||||||
'shopId' => $shopId,
|
'shopId' => $shopId->value,
|
||||||
'otdels' => $shop->getUsedOtdels(),
|
'otdels' => $shop->getUsedOtdels(),
|
||||||
'i' => 1,
|
'i' => 1,
|
||||||
];
|
];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user