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>
|
||||
.wares {
|
||||
display: grid;
|
||||
@ -39,8 +44,8 @@
|
||||
У вас в наличии:
|
||||
<?php elseif ($actionGifts): ?>
|
||||
<strong>Отдел «Сделать подарки»</strong>
|
||||
<?php elseif (isset($shop::OTDEL_NAME[$otdel])): ?>
|
||||
<strong>Отдел «<?= $shop::OTDEL_NAME[$otdel] ?>»</strong>
|
||||
<?php elseif ($shop->shopOtdel->getName($otdel)): ?>
|
||||
<strong>Отдел «<?= $shop->shopOtdel->getName($otdel) ?>»</strong>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
</tr>
|
||||
@ -127,7 +132,7 @@
|
||||
<td style="width: 280px; vertical-align: top;">
|
||||
<div style="display: flex; align-items: flex-end; font-size: smaller; flex-direction: column; gap: 2px;">
|
||||
<?= $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.368&rnd=<?= $code; ?>'">Подпольная лавка</button>
|
||||
<button onclick="location.href='main.php?loc=1.180.0.13&rnd=<?= $code; ?>'">Магазин «Берёзка»</button>
|
||||
@ -164,12 +169,12 @@
|
||||
//$i = 1;
|
||||
foreach ($otdels as $k => $v) {
|
||||
$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) {
|
||||
echo '<br>';
|
||||
}
|
||||
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++;
|
||||
}
|
||||
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;
|
||||
|
||||
use Model\Constant\Stat;
|
||||
|
||||
class Bonuses
|
||||
{
|
||||
public static array $names = [
|
||||
'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 Stat $stat;
|
||||
private array $result = [];
|
||||
|
||||
public function __construct(array $data)
|
||||
{
|
||||
$this->stat = new Stat();
|
||||
|
||||
foreach ($data as $bonusName => $value) {
|
||||
if (!self::$names[$bonusName]) {
|
||||
continue;
|
||||
if (!$this->stat->getBonusNames()[$bonusName]) {
|
||||
$this->result[$bonusName] = $value; //fixme на период отладки для отлова забытых
|
||||
//continue;
|
||||
}
|
||||
$this->result[self::$names[$bonusName]] = $value;
|
||||
$this->result[$this->stat->getBonusNames()[$bonusName]] = $value;
|
||||
}
|
||||
$this->armor($data);
|
||||
}
|
||||
@ -112,16 +58,10 @@ class Bonuses
|
||||
|
||||
public function addZonb(): void
|
||||
{
|
||||
if (isset($this->result[self::$names['zonb']])) {
|
||||
$this->result[self::$names['zonb']]++;
|
||||
if (isset($this->result[$this->stat->getBonusNames()['zonb']])) {
|
||||
$this->result[$this->stat->getBonusNames()['zonb']]++;
|
||||
} 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;
|
||||
|
||||
use Model\Constant\Stat;
|
||||
|
||||
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 = [
|
||||
0 => 'Мужской',
|
||||
1 => 'Женский',
|
||||
@ -39,12 +20,15 @@ class Requirements
|
||||
private int $alignValue = 0;
|
||||
|
||||
private array $result = [];
|
||||
private Stat $stat;
|
||||
|
||||
public function __construct(array $data)
|
||||
{
|
||||
$this->stat = new Stat();
|
||||
foreach ($data as $requirementName => $value) {
|
||||
if (!self::$names[$requirementName]) {
|
||||
continue;
|
||||
if (!$this->stat->getRequirementNames()[$requirementName]) {
|
||||
$this->result[$requirementName] = $value; //fixme на период отладки для отлова забытых
|
||||
//continue;
|
||||
}
|
||||
if ($requirementName === 'sex') {
|
||||
if (self::$sex[$value]) {
|
||||
@ -56,16 +40,20 @@ class Requirements
|
||||
if ($requirementName === 'align') {
|
||||
if (self::$align[$value]) {
|
||||
$this->alignValue = $value;
|
||||
$this->result[$requirementName]['sysvalue'] = $value;
|
||||
$value = self::$align[$value];
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
//$this->result[$this->stat->getRequirementNames()[$requirementName]] = $value;
|
||||
|
||||
$this->result[$requirementName] = [
|
||||
'name' => self::$names[$requirementName],
|
||||
'name' => $this->stat->getRequirementNames()[$requirementName],
|
||||
'value' => $value,
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function get(): array
|
||||
|
@ -32,18 +32,13 @@ class DataModel
|
||||
{
|
||||
$result = [];
|
||||
foreach ($this->data as $k => $v) {
|
||||
if ($this->searchByPrefix($prefix, $k)) {
|
||||
if (str_starts_with($k, $prefix)) {
|
||||
$result[str_replace($prefix, '', $k)] = $v;
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function searchByPrefix(string $prefix, string $string): bool
|
||||
{
|
||||
return substr($string, 0, strlen($prefix)) === $prefix;
|
||||
}
|
||||
|
||||
public function getBonuses(): array
|
||||
{
|
||||
return $this->getPrefixed('add_');
|
||||
|
@ -5,107 +5,34 @@ namespace Location;
|
||||
use Core\Config;
|
||||
use Core\Db;
|
||||
use Delo;
|
||||
use Enum\ShopId;
|
||||
use Helper\Conversion;
|
||||
use Item\Data\Bonuses;
|
||||
use Item\Data\Properties;
|
||||
use Item\Data\Requirements;
|
||||
use Item\DataModel;
|
||||
use Model\Constant\ShopOtdel;
|
||||
use User;
|
||||
|
||||
class Shop
|
||||
{
|
||||
private const ITEM_GENERATION_CURRENT = 2;
|
||||
public const MAIN = 1;
|
||||
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;
|
||||
public ShopOtdel $shopOtdel;
|
||||
private ShopId $shopId;
|
||||
private array $wares;
|
||||
private int $otdel;
|
||||
private int $itemId;
|
||||
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->itemId = intval($_GET['itmid']);
|
||||
$this->shopId = $shopId;
|
||||
$this->wares = Db::getRows('select * from
|
||||
items_shop
|
||||
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 {
|
||||
public function getId(): int
|
||||
@ -178,23 +105,23 @@ class Shop
|
||||
}
|
||||
}
|
||||
|
||||
private function itemUp()
|
||||
private function itemUp(): void
|
||||
{
|
||||
$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',
|
||||
[$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);
|
||||
}
|
||||
|
||||
public function printWares()
|
||||
public function printWares(): void
|
||||
{
|
||||
foreach ($this->wares as $pl) {
|
||||
$data = new DataModel($pl['item_id']);
|
||||
@ -229,7 +156,7 @@ class Shop
|
||||
if ($pl['iznos'] > 0) {
|
||||
$pl['iznosMAXi'] = $pl['iznos'];
|
||||
}
|
||||
if ($pl['iznosMAXi'] > 0 && $pl['iznosMAXi'] !== 999999999) {
|
||||
if ($pl['iznosMAXi'] > 0 && $pl['iznosMAXi'] < 1000) {
|
||||
$is2 .= 'Долговечность: 0/' . $pl['iznosMAXi'] . '<br>';
|
||||
}
|
||||
|
||||
@ -264,11 +191,14 @@ class Shop
|
||||
$is2 .= '<ul style="margin: 0; padding: 0 30px;">';
|
||||
foreach ($itemRequirements->get() as $dataName => $dataInfo) {
|
||||
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 {
|
||||
$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 .= '</ul>';
|
||||
@ -391,7 +321,7 @@ HTML;
|
||||
private function name(string $name, ?string $defaultName, int $itemid): string
|
||||
{
|
||||
$styleSuffix = '';
|
||||
if ($this->shopId == self::SHOP_2) {
|
||||
if ($this->shopId === ShopId::SHOP_2) {
|
||||
$styleSuffix = 'WL';
|
||||
}
|
||||
if (!empty($defaultName)) {
|
||||
@ -437,10 +367,10 @@ HTML;
|
||||
private function price(int $credits, int $eurocredits, int $voinstvennost): string
|
||||
{
|
||||
$result = 'Цена: ';
|
||||
if ($this->shopId === self::SHOP_2) {
|
||||
if ($this->shopId === ShopId::SHOP_2) {
|
||||
$result .= $this->printColoredValue($this->buyer->getVoinstvennost() >= $voinstvennost, $voinstvennost);
|
||||
$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 .= $this->printColoredValue($this->buyer->getEuroCredits() >= $eurocredits, $eurocredits);
|
||||
$result .= ' екр.</span> ';
|
||||
@ -524,14 +454,23 @@ HTML;
|
||||
} else {
|
||||
$result = '<img src="' . Config::img() . '/i/items/' . $image . '" alt="' . $name . '"><br>';
|
||||
}
|
||||
if ($this->shopId == self::SHOP_2) {
|
||||
$result .= '<a href="javascript:void(' . $id . ');" onClick="top.buyShopNow(' . $id . ',\'?' . 'otdel=' . $this->otdel . '&buyVn=' . $id . '&sd4=' . $this->buyer->getNextAct() . '\',\'' . $name . '\',\'??\',\' ??.\');">купить</a>';
|
||||
} elseif (($this->shopId == self::BEREZKA || $this->shopId == self::ARTEFACTS) && $this->buyer->hasEnoughEuroCredits($eurocredits)) {
|
||||
$result .= '<a href="javascript:void(' . $id . ');" onClick="top.buyShopNow(' . $id . ',\'?' . 'otdel=' . $this->otdel . '&buyEkr=' . $id . '&sd4=' . $this->buyer->getNextAct() . '\',\'' . $name . '\',\'' . $eurocredits . '\',\' екр.\');">купить</a>';
|
||||
if ($this->shopId == ShopId::SHOP_2) {
|
||||
$js = <<<JS
|
||||
<button onClick="top.buyShopNow($id,'?otdel=$this->otdel&buyVn=$id&sd4={$this->buyer->getNextAct()}','$name')">Купить</button>
|
||||
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)) {
|
||||
$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
|
||||
@ -556,7 +495,7 @@ HTML;
|
||||
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 = ?';
|
||||
$item = Db::getRow($sql, [$itemid, $this->shopId]);
|
||||
$item = Db::getRow($sql, [$itemid, $this->shopId->value]);
|
||||
if (!$this->buyer->hasEnoughCredits($item['price_1'])) {
|
||||
return 'Покупка не удалась.';
|
||||
}
|
||||
@ -572,7 +511,7 @@ HTML;
|
||||
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 = ?';
|
||||
$item = Db::getRow($sql, [$itemid, $this->shopId]);
|
||||
$item = Db::getRow($sql, [$itemid, $this->shopId->value]);
|
||||
if (!$this->buyer->hasEnoughEuroCredits($item['price_2'])) {
|
||||
return 'Покупка не удалась.';
|
||||
}
|
||||
@ -588,7 +527,7 @@ HTML;
|
||||
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 = ?';
|
||||
$item = Db::getRow($sql, [$itemid, $this->shopId]);
|
||||
$item = Db::getRow($sql, [$itemid, $this->shopId->value]);
|
||||
if (!$this->buyer->hasEnoughVoinstvennost($item['price_4'])) {
|
||||
return 'Покупка не удалась.';
|
||||
}
|
||||
@ -604,9 +543,8 @@ HTML;
|
||||
public function getUsedOtdels(): array
|
||||
{
|
||||
$result = [];
|
||||
$o = Db::getColumn('select r from items_shop where sid = ? group by r', [$this->shopId]);
|
||||
foreach ($o as $v) {
|
||||
$result[$v] = self::OTDEL_NAME[$v];
|
||||
foreach (Db::getColumn('select r from items_shop where sid = ? group by r', [$this->shopId->value]) as $v) {
|
||||
$result[$v] = $this->shopOtdel->getName($v);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
@ -614,11 +552,11 @@ HTML;
|
||||
public function getUserWallet(): string
|
||||
{
|
||||
$result = '';
|
||||
if ($this->shopId === self::MAIN) {
|
||||
if ($this->shopId === ShopId::MAIN) {
|
||||
$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() . ' екр.';
|
||||
} elseif ($this->shopId === self::SHOP_2) {
|
||||
} elseif ($this->shopId === ShopId::SHOP_2) {
|
||||
$result = $this->buyer->getVoinstvennost() . ' воинственности.';
|
||||
}
|
||||
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\Reputation;
|
||||
use User\Stats;
|
||||
use User\UserCalculatedStats;
|
||||
use User\UserStats;
|
||||
|
||||
class User
|
||||
{
|
||||
@ -1099,12 +1101,8 @@ class User
|
||||
where users.' . $cell . ' = ?';
|
||||
$result = Db::getRow($query, [$user]);
|
||||
|
||||
$temp = Conversion::dataStringToArray($result['stats']);
|
||||
|
||||
$result['testStats'] = new User\UserStats(
|
||||
$temp
|
||||
);
|
||||
$result['testStats2'] = new \User\UserCalculatedStats($result['testStats']);
|
||||
$result['testStats2'] = new UserCalculatedStats(new UserStats(Conversion::dataStringToArray($result['stats'])));
|
||||
|
||||
return $result ?: [];
|
||||
}
|
||||
@ -5174,103 +5172,103 @@ class User
|
||||
[$u['id']]);
|
||||
|
||||
|
||||
$t = $this->items['tr'];
|
||||
$x = 0;
|
||||
$notr = 0;
|
||||
$t = $this->items['tr'];
|
||||
$x = 0;
|
||||
$notr = 0;
|
||||
|
||||
if (empty($itm['data'])) {
|
||||
if ($this->info['twink'] > 0) {
|
||||
//Не дороже 100 екр.
|
||||
if ($itm['price2'] > 1 || $itm['2price'] > 1) {
|
||||
$notr++;
|
||||
}
|
||||
}
|
||||
if ($itm['iznosNOW'] >= ceil($itm['iznosMAX']) && $itm['iznosMAXi'] != 999999999) {
|
||||
if (empty($itm['data'])) {
|
||||
if ($this->info['twink'] > 0) {
|
||||
//Не дороже 100 екр.
|
||||
if ($itm['price2'] > 1 || $itm['2price'] > 1) {
|
||||
$notr++;
|
||||
}
|
||||
if ($notr > 0 && $itm['inOdet'] != 0) {
|
||||
//снимаем предмет
|
||||
$this->snatItem($itm['id'], $u['id']);
|
||||
$snIt++;
|
||||
}
|
||||
} else {
|
||||
|
||||
$po = Conversion::dataStringToArray($itm['data']);
|
||||
$po['lvl'] = $u['level'];
|
||||
//проверяем требования
|
||||
$j = 1;
|
||||
while ($j <= 4) {
|
||||
if (!isset($po['tr_s' . $j]) && $itm['type'] != 26) {
|
||||
$po['tr_s' . $j] = 0;
|
||||
}
|
||||
$j++;
|
||||
}
|
||||
while ($x < count($t)) {
|
||||
$n = $t[$x];
|
||||
if (isset($po['tr_' . $n]) && $n == 'sex') {
|
||||
if ($po['tr_' . $n] != $this->info['sex']) {
|
||||
$notr++;
|
||||
}
|
||||
} elseif (isset($po['tr_' . $n])) {
|
||||
if ($po['tr_' . $n] > $this->stats[$n] && $n != 'align' && $n != 'align_bs') {
|
||||
$notr++;
|
||||
}
|
||||
}
|
||||
$x++;
|
||||
}
|
||||
if ($this->info['twink'] > 0) {
|
||||
//Не дороже 100 екр.
|
||||
if ($itm['price2'] > 1 || $itm['2price'] > 1) {
|
||||
$notr++;
|
||||
}
|
||||
//Нельзя руны + чарки
|
||||
if (isset($po['rune']) && $po['rune'] > 0) {
|
||||
$notr++;
|
||||
}
|
||||
if (isset($po['spell_id']) && $po['spell_id'] > 0) {
|
||||
$notr++;
|
||||
}
|
||||
}
|
||||
if (isset($po['sudba']) && $po['sudba'] == 1) {
|
||||
$po['sudba'] = $u['login'];
|
||||
Db::sql('update items_users set data = ? where id = ? and uid = ?', [Conversion::arrayToDataString($po), $itm['iduid'], $u['id']]);
|
||||
}
|
||||
|
||||
if (isset($po['srok']) && $po['srok'] > 0) {
|
||||
$itm['srok'] = $po['srok'];
|
||||
}
|
||||
if (isset($po['vip_sale']) && $sn['silver'] < 2 && ($itm['time_create'] - time()) < 0) {
|
||||
if ($itm['item_id'] == 4704) {
|
||||
$po['musor2'] = 4708;
|
||||
}
|
||||
ItemsModel::itemDecay($itm['id'], $itm['overType'], $u['id'], (int)$po['musor2'], $itm['type'], $itm['name']);
|
||||
$notr++;
|
||||
}
|
||||
if ($itm['iznosNOW'] >= ceil($itm['iznosMAX']) && $itm['iznosMAXi'] != 999999999) {
|
||||
$notr++;
|
||||
}
|
||||
if ($notr > 0 && $itm['inOdet'] != 0) {
|
||||
//снимаем предмет
|
||||
$this->snatItem($itm['id'], $u['id']);
|
||||
$snIt++;
|
||||
}
|
||||
//проверяем срок годности
|
||||
if ($itm['iznosNOW'] >= ceil($itm['iznosMAX']) && $itm['iznosMAXi'] != 999999999 && isset($po['musor']) && $po['musor'] > 0) {
|
||||
//предмет сломался
|
||||
$this->itemDestroy($itm['id'], $u['id'], (int)$po['musor']);
|
||||
}
|
||||
if ($itm['time_create'] + $itm['srok'] <= time() && $itm['srok'] > 0 && $itm['time_sleep'] == 0) {
|
||||
if ($itm['inOdet'] != 0) {
|
||||
$this->snatItem($itm['id'], $u['id']);
|
||||
$snIt++;
|
||||
}
|
||||
//удаляем предмет
|
||||
if ($itm['item_id'] == 4704) {
|
||||
$po['musor2'] = 4708;
|
||||
}
|
||||
ItemsModel::itemDecay($itm['id'], $itm['overType'], $u['id'], (int)$po['musor2'], $itm['type'], $itm['name']);
|
||||
}
|
||||
}
|
||||
if ($itm['iznosNOW'] >= ceil($itm['iznosMAX']) && $itm['iznosMAXi'] != 999999999) {
|
||||
$notr++;
|
||||
}
|
||||
if ($notr > 0 && $itm['inOdet'] != 0) {
|
||||
//снимаем предмет
|
||||
$this->snatItem($itm['id'], $u['id']);
|
||||
$snIt++;
|
||||
}
|
||||
} else {
|
||||
|
||||
$po = Conversion::dataStringToArray($itm['data']);
|
||||
$po['lvl'] = $u['level'];
|
||||
//проверяем требования
|
||||
$j = 1;
|
||||
while ($j <= 4) {
|
||||
if (!isset($po['tr_s' . $j]) && $itm['type'] != 26) {
|
||||
$po['tr_s' . $j] = 0;
|
||||
}
|
||||
$j++;
|
||||
}
|
||||
while ($x < count($t)) {
|
||||
$n = $t[$x];
|
||||
if (isset($po['tr_' . $n]) && $n == 'sex') {
|
||||
if ($po['tr_' . $n] != $this->info['sex']) {
|
||||
$notr++;
|
||||
}
|
||||
} elseif (isset($po['tr_' . $n])) {
|
||||
if ($po['tr_' . $n] > $this->stats[$n] && $n != 'align' && $n != 'align_bs') {
|
||||
$notr++;
|
||||
}
|
||||
}
|
||||
$x++;
|
||||
}
|
||||
if ($this->info['twink'] > 0) {
|
||||
//Не дороже 100 екр.
|
||||
if ($itm['price2'] > 1 || $itm['2price'] > 1) {
|
||||
$notr++;
|
||||
}
|
||||
//Нельзя руны + чарки
|
||||
if (isset($po['rune']) && $po['rune'] > 0) {
|
||||
$notr++;
|
||||
}
|
||||
if (isset($po['spell_id']) && $po['spell_id'] > 0) {
|
||||
$notr++;
|
||||
}
|
||||
}
|
||||
if (isset($po['sudba']) && $po['sudba'] == 1) {
|
||||
$po['sudba'] = $u['login'];
|
||||
Db::sql('update items_users set data = ? where id = ? and uid = ?', [Conversion::arrayToDataString($po), $itm['iduid'], $u['id']]);
|
||||
}
|
||||
|
||||
if (isset($po['srok']) && $po['srok'] > 0) {
|
||||
$itm['srok'] = $po['srok'];
|
||||
}
|
||||
if (isset($po['vip_sale']) && $sn['silver'] < 2 && ($itm['time_create'] - time()) < 0) {
|
||||
if ($itm['item_id'] == 4704) {
|
||||
$po['musor2'] = 4708;
|
||||
}
|
||||
ItemsModel::itemDecay($itm['id'], $itm['overType'], $u['id'], (int)$po['musor2'], $itm['type'], $itm['name']);
|
||||
$notr++;
|
||||
}
|
||||
if ($itm['iznosNOW'] >= ceil($itm['iznosMAX']) && $itm['iznosMAXi'] != 999999999) {
|
||||
$notr++;
|
||||
}
|
||||
if ($notr > 0 && $itm['inOdet'] != 0) {
|
||||
//снимаем предмет
|
||||
$this->snatItem($itm['id'], $u['id']);
|
||||
$snIt++;
|
||||
}
|
||||
//проверяем срок годности
|
||||
if ($itm['iznosNOW'] >= ceil($itm['iznosMAX']) && $itm['iznosMAXi'] != 999999999 && isset($po['musor']) && $po['musor'] > 0) {
|
||||
//предмет сломался
|
||||
$this->itemDestroy($itm['id'], $u['id'], (int)$po['musor']);
|
||||
}
|
||||
if ($itm['time_create'] + $itm['srok'] <= time() && $itm['srok'] > 0 && $itm['time_sleep'] == 0) {
|
||||
if ($itm['inOdet'] != 0) {
|
||||
$this->snatItem($itm['id'], $u['id']);
|
||||
$snIt++;
|
||||
}
|
||||
//удаляем предмет
|
||||
if ($itm['item_id'] == 4704) {
|
||||
$po['musor2'] = 4708;
|
||||
}
|
||||
ItemsModel::itemDecay($itm['id'], $itm['overType'], $u['id'], (int)$po['musor2'], $itm['type'], $itm['name']);
|
||||
}
|
||||
}
|
||||
if ($snIt > 0) {
|
||||
$this->testItems($uid, $sn, 1);
|
||||
} elseif ($dt == 0) {
|
||||
|
@ -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\Db;
|
||||
use Helper\Conversion;
|
||||
use Item\Data\Bonuses;
|
||||
use User;
|
||||
|
||||
class Stats
|
||||
{
|
||||
private User $u;
|
||||
private array $sysNames = [];
|
||||
|
||||
public function __construct(User $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
|
||||
{
|
||||
if (empty($uid) || $uid == $this->u->info['id'] && $res != 1) {
|
||||
@ -141,30 +134,8 @@ class Stats
|
||||
return [];
|
||||
}
|
||||
|
||||
$st = [
|
||||
'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,
|
||||
];
|
||||
$st = array_fill_keys($this->sysNames, 0);
|
||||
|
||||
$s_vi = [];
|
||||
$s_v = [];
|
||||
$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`
|
||||
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;
|
||||
$hnd1 = 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) {
|
||||
$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) {
|
||||
$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'];
|
||||
}
|
||||
|
||||
|
||||
//Добавляем статы от данного предмета
|
||||
if (!isset($sti['restart_stats'])) {
|
||||
$i = 0;
|
||||
while ($i < count($ia)) {
|
||||
while ($i < count($this->sysNames)) {
|
||||
//Действует на (Действует на)
|
||||
if (isset($ia[$i]) && isset($sti['add_' . $ia[$i]])) {
|
||||
if ($ia[$i] != 'zmproc' && $ia[$i] != 'zaproc') {
|
||||
if (!isset($st[$ia[$i]])) {
|
||||
$st[$ia[$i]] = 0;
|
||||
}
|
||||
$st[$ia[$i]] += intval($sti['add_' . $ia[$i]]);
|
||||
if (isset($this->sysNames[$i]) && isset($sti['add_' . $this->sysNames[$i]])) {
|
||||
if (!isset($st[$this->sysNames[$i]])) {
|
||||
$st[$this->sysNames[$i]] = 0;
|
||||
}
|
||||
if ($this->sysNames[$i] != 'zmproc' && $this->sysNames[$i] != 'zaproc') {
|
||||
$st[$this->sysNames[$i]] += intval($sti['add_' . $this->sysNames[$i]]);
|
||||
} else {
|
||||
if (!isset($st[$ia[$i]])) {
|
||||
$st[$ia[$i]] = 0;
|
||||
}
|
||||
$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]];
|
||||
$st[$this->sysNames[$i]] = 100 - $st[$this->sysNames[$i]];
|
||||
$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]];
|
||||
}
|
||||
}
|
||||
$i++;
|
||||
@ -461,15 +417,16 @@ from items_users left join items_main on items_main.id = item_id where inOdet !=
|
||||
} else {
|
||||
$reitm[] = $sti;
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
while ($i < count($ia)) {
|
||||
if (isset($ia[$i]) && isset($sti['sv_' . $ia[$i]])) {
|
||||
if (!isset($s_v[$ia[$i]])) {
|
||||
$s_v[$ia[$i]] = 0;
|
||||
$s_v['z'][$wearedItem['inOdet']][$ia[$i]] = 0;
|
||||
while ($i < count($this->sysNames)) {
|
||||
if (isset($this->sysNames[$i]) && isset($sti['sv_' . $this->sysNames[$i]])) {
|
||||
if (!isset($s_v[$this->sysNames[$i]])) {
|
||||
$s_v[$this->sysNames[$i]] = 0;
|
||||
$s_v['z'][$wearedItem['inOdet']][$this->sysNames[$i]] = 0;
|
||||
}
|
||||
$s_v[$ia[$i]] += intval($sti['sv_' . $ia[$i]]);
|
||||
$s_v['z'][$wearedItem['inOdet']][$ia[$i]] += intval($sti['sv_' . $ia[$i]]);
|
||||
$s_v[$this->sysNames[$i]] += intval($sti['sv_' . $this->sysNames[$i]]);
|
||||
$s_v['z'][$wearedItem['inOdet']][$this->sysNames[$i]] += intval($sti['sv_' . $this->sysNames[$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'])) {
|
||||
$st['slvtm'] = $e['timeUse'] + $e['actionTime'];
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
while ($i < count($ia)) {
|
||||
if (isset($ia[$i])) {
|
||||
if (isset($sts['add_' . $ia[$i]])) {
|
||||
if (!isset($sti[$ia[$i]])) {
|
||||
$sti[$ia[$i]] = 0;
|
||||
while ($i < count($this->sysNames)) {
|
||||
if (isset($this->sysNames[$i])) {
|
||||
if (isset($sts['add_' . $this->sysNames[$i]])) {
|
||||
if (!isset($sti[$this->sysNames[$i]])) {
|
||||
$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 ($ia[$i] != 'zaproc' && $ia[$i] != 'zmproc') {
|
||||
if (!isset($st[$ia[$i]])) {
|
||||
$st[$ia[$i]] = 0;
|
||||
}
|
||||
$st[$ia[$i]] += intval($sts['add_' . $ia[$i]]);
|
||||
if (isset($sts['add_' . $this->sysNames[$i]])) {
|
||||
if (!isset($st[$this->sysNames[$i]])) {
|
||||
$st[$this->sysNames[$i]] = 0;
|
||||
}
|
||||
if ($this->sysNames[$i] != 'zaproc' && $this->sysNames[$i] != 'zmproc') {
|
||||
$st[$this->sysNames[$i]] += intval($sts['add_' . $this->sysNames[$i]]);
|
||||
} else {
|
||||
if (!isset($st[$ia[$i]])) {
|
||||
$st[$ia[$i]] = 0;
|
||||
}
|
||||
$st[$ia[$i]] = 100 - $st[$ia[$i]];
|
||||
$st[$ia[$i]] = $st[$ia[$i]] - $st[$ia[$i]] / 100 * intval(
|
||||
$sts['add_' . $ia[$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[$ia[$i]] = 100 - $st[$ia[$i]];
|
||||
$st[$this->sysNames[$i]] = 100 - $st[$this->sysNames[$i]];
|
||||
}
|
||||
}
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
while ($i < count($ia)) {
|
||||
if (isset($ia[$i])) {
|
||||
if (isset($sts['sv_' . $ia[$i]])) {
|
||||
if (!isset($s_vi[$ia[$i]])) {
|
||||
$s_vi[$ia[$i]] = 0;
|
||||
while ($i < count($this->sysNames)) {
|
||||
if (isset($this->sysNames[$i])) {
|
||||
if (isset($sts['sv_' . $this->sysNames[$i]])) {
|
||||
if (!isset($s_vi[$this->sysNames[$i]])) {
|
||||
$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($s_v[$ia[$i]])) {
|
||||
$s_v[$ia[$i]] = 0;
|
||||
if (isset($sts['sv_' . $this->sysNames[$i]])) {
|
||||
if (!isset($s_v[$this->sysNames[$i]])) {
|
||||
$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++;
|
||||
@ -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'];
|
||||
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]];
|
||||
$st[$ia[$i]] = $st[$ia[$i]] - $st[$ia[$i]] / 100 * intval($sts['add_' . $ia[$i]]);
|
||||
$st[$ia[$i]] = 100 - $st[$ia[$i]];
|
||||
$i = 0;
|
||||
while ($i < count($this->sysNames)) {
|
||||
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 = 0;
|
||||
while ($i < count($ia)) {
|
||||
if (isset($ia[$i]) && isset($sts['add_' . $ia[$i]])) {
|
||||
if (!isset($s_vi[$ia[$i]])) {
|
||||
$s_vi[$ia[$i]] = 0;
|
||||
while ($i < count($this->sysNames)) {
|
||||
if (isset($this->sysNames[$i]) && isset($sts['add_' . $this->sysNames[$i]])) {
|
||||
if (!isset($s_vi[$this->sysNames[$i]])) {
|
||||
$s_vi[$this->sysNames[$i]] = 0;
|
||||
}
|
||||
$s_vi[$ia[$i]] += intval($sts['sv_' . $ia[$i]]);
|
||||
if (!isset($s_v[$ia[$i]])) {
|
||||
$s_v[$ia[$i]] = 0;
|
||||
$s_vi[$this->sysNames[$i]] += intval($sts['sv_' . $this->sysNames[$i]]);
|
||||
if (!isset($s_v[$this->sysNames[$i]])) {
|
||||
$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++;
|
||||
}
|
||||
@ -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;
|
||||
|
||||
if (!isset($st['mpAll'])) {
|
||||
$st['mpAll'] = 0;
|
||||
}
|
||||
$st['mpAll'] += $st['s6'] * 10;
|
||||
|
||||
//Турнир
|
||||
if (!isset($st['m1'])) {
|
||||
$st['m1'] = 0;
|
||||
}
|
||||
$st['m1'] += $st['s3'] * 5;
|
||||
|
||||
|
||||
// мф.анти-крит = 2.5
|
||||
if (!isset($st['m2'])) {
|
||||
$st['m2'] = 0;
|
||||
}
|
||||
$st['m2'] += $st['s3'] * 5;
|
||||
|
||||
// мф.уворот = 2.5
|
||||
if (!isset($st['m4'])) {
|
||||
$st['m4'] = 0;
|
||||
}
|
||||
$st['m4'] += $st['s2'] * 5;
|
||||
|
||||
// мф.анти-уворот = 2.5
|
||||
if (!isset($st['m5'])) {
|
||||
$st['m5'] = 0;
|
||||
}
|
||||
$st['m5'] += $st['s2'] * 5;
|
||||
|
||||
if (!isset($st['za'])) {
|
||||
$st['za'] = 0;
|
||||
}
|
||||
$st['za'] += $st['s4'] * 1.0;
|
||||
|
||||
if (!isset($st['zm'])) {
|
||||
$st['zm'] = 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);
|
||||
|
||||
//Мощности
|
||||
//Мощность против "Мощность крит. урона". Гамс
|
||||
if (!isset($st['antm3'])) {
|
||||
$st['antm3'] = 0;
|
||||
}
|
||||
$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;
|
||||
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;
|
||||
$sti = Conversion::dataStringToArray($com['data']);
|
||||
while ($ij < count($ia)) {
|
||||
if (isset($ia[$ij]) && isset($sti[$ia[$ij]])) {
|
||||
$st[$ia[$ij]] += $sti[$ia[$ij]];
|
||||
while ($ij < count($this->sysNames)) {
|
||||
if (isset($this->sysNames[$ij]) && isset($sti[$this->sysNames[$ij]])) {
|
||||
$st[$this->sysNames[$ij]] += $sti[$this->sysNames[$ij]];
|
||||
}
|
||||
$ij++;
|
||||
}
|
||||
@ -1014,20 +911,11 @@ from items_users left join items_main on items_main.id = item_id where inOdet !=
|
||||
if ($sht1 == 1) {
|
||||
$st['zonb']++;
|
||||
}/* Владения */
|
||||
|
||||
//mib1-mib4, mab1-mab4 armor??
|
||||
|
||||
$i = 1;
|
||||
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'])) {
|
||||
$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'];
|
||||
}
|
||||
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'])) {
|
||||
$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 = 1;
|
||||
while ($i <= 7) {
|
||||
$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;
|
||||
} elseif ($st['mpNow'] > $st['mpAll']) {
|
||||
$st['mpNow'] = $st['mpAll'];
|
||||
}//зоны блока и удара
|
||||
}
|
||||
|
||||
//зоны блока и удара
|
||||
if ($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) {
|
||||
$st['zonb'] = 3;
|
||||
}
|
||||
|
||||
$st['ozash'] = $oza;
|
||||
$st['ozmsh'] = $ozm;
|
||||
$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['s'] = $u['s'];
|
||||
|
||||
$st['reting'] = 1 + ceil($st['reting']);
|
||||
|
||||
|
||||
$this->addDungeonsBonuses($u['id'], $st);
|
||||
|
||||
|
||||
//Добавочный подьем для игроков
|
||||
$st['maxves'] += 500;
|
||||
$st['maxves'] += 100;
|
||||
|
||||
if ($u['admin'] > 0) { // ускоренная регенерация и пробег по подземелью
|
||||
$st['speed_dungeon'] = 1000;
|
||||
$st['speedhp'] = 1000;
|
||||
$st['speed_dungeon'] = 500;
|
||||
$st['speedhp'] = 500;
|
||||
if ($u['battle']) {
|
||||
Db::sql("update stats set
|
||||
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) {
|
||||
$st['exp'] += 25;
|
||||
}//Сохраняем рейтинг игрока
|
||||
}
|
||||
|
||||
//Сохраняем рейтинг игрока
|
||||
$st['reting'] = floor($st['reting']);
|
||||
|
||||
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);
|
||||
foreach ($sts as $paramName => $value) {
|
||||
//todo убедиться, что не могут прилететь параметры, которых нет в словарей бонусов предметов
|
||||
if (!str_contains(implode(',', Bonuses::getBonusSystemNames()), 'add_' . $paramName)) { // есть ли параметр в разрешенных?
|
||||
if (!str_contains(implode(',', $this->sysNames), 'add_' . $paramName)) { // есть ли параметр в разрешенных?
|
||||
continue;
|
||||
}
|
||||
if (empty($st['add_' . $paramName])) {
|
||||
|
@ -4,53 +4,59 @@ namespace User;
|
||||
|
||||
class UserCalculatedStats
|
||||
{
|
||||
private UserStats $userStats;
|
||||
private UserStats $baseUserStats;
|
||||
public int $hpAll;
|
||||
public int $mpAll;
|
||||
|
||||
public function __construct(
|
||||
private readonly UserStats $us
|
||||
) {
|
||||
UserStats $userStats
|
||||
)
|
||||
{
|
||||
$this->userStats = $userStats;
|
||||
$this->baseUserStats = $userStats;
|
||||
$this->hpAll = $this->hpAll();
|
||||
$this->mpAll = $this->mpAll();
|
||||
}
|
||||
|
||||
private function hpAll(): int
|
||||
{
|
||||
$hpAll = $this->us->s4 * 5;
|
||||
$hpAll += match (true){
|
||||
$this->us->s4 >= 200 => 850,
|
||||
$this->us->s4 >= 175 => 600,
|
||||
$this->us->s4 >= 150 => 450,
|
||||
$this->us->s4 >= 125 => 400,
|
||||
$this->us->s4 >= 100 => 250,
|
||||
$this->us->s4 >= 75 => 175,
|
||||
$this->us->s4 >= 50 => 100,
|
||||
$this->us->s4 >= 25 => 50,
|
||||
$hpAll = $this->userStats->s4 * 5;
|
||||
$hpAll += match (true) {
|
||||
$this->userStats->s4 >= 200 => 850,
|
||||
$this->userStats->s4 >= 175 => 600,
|
||||
$this->userStats->s4 >= 150 => 450,
|
||||
$this->userStats->s4 >= 125 => 400,
|
||||
$this->userStats->s4 >= 100 => 250,
|
||||
$this->userStats->s4 >= 75 => 175,
|
||||
$this->userStats->s4 >= 50 => 100,
|
||||
$this->userStats->s4 >= 25 => 50,
|
||||
default => 0
|
||||
};
|
||||
return $hpAll;
|
||||
}
|
||||
|
||||
private function mpAll():int
|
||||
private function mpAll(): int
|
||||
{
|
||||
$mpAll = $this->us->s6 * 10;
|
||||
$mpAll = $this->userStats->s6 * 10;
|
||||
$mpAll += match (true) {
|
||||
$this->us->s6 >= 200 => 1500,
|
||||
$this->us->s6 >= 175 => 900,
|
||||
$this->us->s6 >= 150 => 700,
|
||||
$this->us->s6 >= 125 => 500,
|
||||
$this->us->s6 >= 100 => 350,
|
||||
$this->us->s6 >= 75 => 250,
|
||||
$this->us->s6 >= 50 => 150,
|
||||
$this->us->s6 >= 25 => 50,
|
||||
$this->userStats->s6 >= 200 => 1500,
|
||||
$this->userStats->s6 >= 175 => 900,
|
||||
$this->userStats->s6 >= 150 => 700,
|
||||
$this->userStats->s6 >= 125 => 500,
|
||||
$this->userStats->s6 >= 100 => 350,
|
||||
$this->userStats->s6 >= 75 => 250,
|
||||
$this->userStats->s6 >= 50 => 150,
|
||||
$this->userStats->s6 >= 25 => 50,
|
||||
default => 0
|
||||
};
|
||||
return $mpAll;
|
||||
}
|
||||
|
||||
public function __toString():string
|
||||
public function __toString(): string
|
||||
{
|
||||
$arr = [];
|
||||
foreach ($this as $k=>$v) {
|
||||
foreach ($this as $k => $v) {
|
||||
if (empty($v) || $k === 'us') {
|
||||
continue;
|
||||
}
|
||||
@ -62,7 +68,7 @@ class UserCalculatedStats
|
||||
public function __debugInfo()
|
||||
{
|
||||
$arr = [];
|
||||
foreach ($this as $k=>$v) {
|
||||
foreach ($this as $k => $v) {
|
||||
if ($k === 'us') {
|
||||
continue;
|
||||
}
|
||||
|
@ -21,12 +21,8 @@ readonly class UserStats
|
||||
public int $mg3;
|
||||
public int $mg4;
|
||||
public int $mg7;
|
||||
//public int $hpAll;
|
||||
//public int $mpAll;
|
||||
|
||||
public function __construct(
|
||||
array $a
|
||||
)
|
||||
public function __construct(array $a)
|
||||
{
|
||||
$this->s1 = $a['s1'] ?? 0;
|
||||
$this->s2 = $a['s2'] ?? 0;
|
||||
@ -45,53 +41,6 @@ readonly class UserStats
|
||||
$this->mg3 = max($a['mg3'] ?? 0, $a['mall'] ?? 0);
|
||||
$this->mg4 = max($a['mg4'] ?? 0, $a['mall'] ?? 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\Db;
|
||||
use Core\View;
|
||||
use Enum\ShopId;
|
||||
use Helper\Conversion;
|
||||
use Location\Shop;
|
||||
use User\Clan;
|
||||
@ -28,13 +29,13 @@ $giftsvars = [];
|
||||
$otdel = 1;
|
||||
|
||||
if ((int)$u->info['room'] === 10) {
|
||||
$shopId = Shop::MAIN;
|
||||
$shopId = ShopId::MAIN;
|
||||
}
|
||||
if ((int)$u->info['room'] === 368) {
|
||||
$shopId = Shop::SHOP_2;
|
||||
$shopId = ShopId::SHOP_2;
|
||||
}
|
||||
if ((int)$u->info['room'] === 13) {
|
||||
$shopId = Shop::BEREZKA;
|
||||
$shopId = ShopId::BEREZKA;
|
||||
}
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] === "GET") { //неясно почему, $_GET вызывается буквалльно всегда, даже на пустом месте.
|
||||
@ -91,7 +92,7 @@ if ($actionSale) {
|
||||
ItemsModel::delete($item['id']);
|
||||
$u->addKr($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,
|
||||
'goLis' => $goLis,
|
||||
'code' => $code,
|
||||
'shopId' => $shopId,
|
||||
'shopId' => $shopId->value,
|
||||
'otdels' => $shop->getUsedOtdels(),
|
||||
'i' => 1,
|
||||
];
|
||||
|
Loading…
Reference in New Issue
Block a user