Удалён зодиак. Фиксы перехода php7.2 -> php7.4. Покупка и продажа за банкноты (#25). Унификация вывода кнопок в магазине. Удалён старый закомментированый код. Больше констант. Плавная текучка от библиотеки db::c в сторону DBPDO. И тому подобное. Процесс идёт...
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
<?php
|
||||
|
||||
use Battles\Bank;
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\GameLogs;
|
||||
use Battles\Item;
|
||||
use Battles\ShopItem;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
@@ -11,287 +13,148 @@ session_start();
|
||||
require_once 'functions.php';
|
||||
$user = $user ?? new User($_SESSION['uid']);
|
||||
$db = new DBPDO();
|
||||
/*
|
||||
* aheroshop.php
|
||||
* $data = db::c()->query('SELECT * FROM `ahero_shop` WHERE `count` > 0 AND `razdel` = ?i ORDER by `point` ASC', $_GET['otdel']);
|
||||
* db::c()->query('UPDATE `shop` SET `count` = `count`- ?i WHERE `id` = ?i', $_POST['count'], $set);
|
||||
* db::c()->query('UPDATE `users` set `doblest` = `doblest` - ?i * ?i WHERE id = ?i', $_POST['count'], $dress['point'], $user['id']);
|
||||
*
|
||||
* shop_luka.php
|
||||
* $data = mysql_query("SELECT * FROM `shop` WHERE `count` > 0 AND `razdel` = '{$_GET['otdel']}' AND `zeton` != '0' ORDER by `cost` ASC");
|
||||
* $vsego = $zetons-$_POST['count']*$dress['zeton'];
|
||||
* if($vsego<='0'){
|
||||
* mysql_query("DELETE FROM `inventory` WHERE `type`='200' and `name`='Жетон' and owner='".$user["id"]."'");
|
||||
* }else{mysql_query("UPDATE `inventory` set `maxdur` = '$vsego' WHERE `type`='200' and `name`='Жетон' and owner='".$user["id"]."'");}
|
||||
* */
|
||||
|
||||
|
||||
$saleItems = false;
|
||||
$shopCategoryType = $_POST['sale'] ?? '';
|
||||
$shopCategoryTypeNumber = $_GET['otdel'] ?? 0;
|
||||
$status = null;
|
||||
|
||||
if (!empty($_POST['sellshop'])) {
|
||||
$status = ShopItem::sellItem($_POST['itemId'], $user, 1);
|
||||
}
|
||||
|
||||
if (!empty($_POST['buyshop'])) {
|
||||
$status = ShopItem::buyItem($_POST['itemId'], $user);
|
||||
}
|
||||
|
||||
$bank = new Bank($user->getId());
|
||||
|
||||
switch ($shopCategoryTypeNumber) {
|
||||
default:
|
||||
$shopCategoryType = "Все товары";
|
||||
break;
|
||||
case Item::ITEM_TYPE_HELMET:
|
||||
$shopCategoryType = "Шлемы";
|
||||
break;
|
||||
case Item::ITEM_TYPE_ARMOR:
|
||||
$shopCategoryType = "Броня";
|
||||
break;
|
||||
case Item::ITEM_TYPE_LEGS:
|
||||
$shopCategoryType = "Поножи";
|
||||
break;
|
||||
case Item::ITEM_TYPE_BOOTS:
|
||||
$shopCategoryType = "Сапоги";
|
||||
break;
|
||||
case Item::ITEM_TYPE_GLOVES:
|
||||
$shopCategoryType = "Перчатки";
|
||||
break;
|
||||
case Item::ITEM_TYPE_WEAPON:
|
||||
$shopCategoryType = "Оружие";
|
||||
break;
|
||||
case Item::ITEM_TYPE_SHIELD:
|
||||
$shopCategoryType = "Щиты";
|
||||
break;
|
||||
case Item::ITEM_TYPE_BELT:
|
||||
$shopCategoryType = "Пояса";
|
||||
break;
|
||||
case Item::ITEM_TYPE_RING:
|
||||
$shopCategoryType = "Кольца";
|
||||
break;
|
||||
case Item::ITEM_TYPE_AMULET:
|
||||
$shopCategoryType = "Амулеты";
|
||||
break;
|
||||
case Item::ITEM_TYPE_CONSUMABLE:
|
||||
$shopCategoryType = "Расходники";
|
||||
break;
|
||||
case Item::ITEM_TYPE_OTHER:
|
||||
$shopCategoryType = "Разное";
|
||||
break;
|
||||
case 'sale':
|
||||
$shopCategoryType = "Предметы в инвентаре";
|
||||
$saleItems = true;
|
||||
break;
|
||||
case 1:
|
||||
$shopCategoryType = "Кинжалы";
|
||||
break;
|
||||
case 11:
|
||||
$shopCategoryType = "Топоры";
|
||||
break;
|
||||
case 12:
|
||||
$shopCategoryType = "Дубины";
|
||||
break;
|
||||
case 13:
|
||||
$shopCategoryType = "Мечи";
|
||||
break;
|
||||
case 2:
|
||||
$shopCategoryType = "Сапоги";
|
||||
break;
|
||||
case 21:
|
||||
$shopCategoryType = "Перчатки";
|
||||
break;
|
||||
case 22:
|
||||
$shopCategoryType = "Легкая броня";
|
||||
break;
|
||||
case 23:
|
||||
$shopCategoryType = "Тяжелая броня";
|
||||
break;
|
||||
case 24:
|
||||
$shopCategoryType = "Шлемы";
|
||||
break;
|
||||
case 3:
|
||||
$shopCategoryType = "Щиты";
|
||||
break;
|
||||
case 4:
|
||||
$shopCategoryType = "Серьги";
|
||||
break;
|
||||
case 41:
|
||||
$shopCategoryType = "Ожерелья";
|
||||
break;
|
||||
case 42:
|
||||
$shopCategoryType = "Кольца";
|
||||
break;
|
||||
case 5:
|
||||
$shopCategoryType = "Заклинания: нейтральные";
|
||||
break;
|
||||
case 51:
|
||||
$shopCategoryType = "Заклинания: боевые и защитные";
|
||||
break;
|
||||
case 6:
|
||||
$shopCategoryType = "Амуниция";
|
||||
break;
|
||||
}
|
||||
|
||||
// MUST BE ARRAY!
|
||||
$iteminfo = [];
|
||||
if (!$saleItems) {
|
||||
$shopItems = db::c()->query('SELECT `shop`.*,
|
||||
`magic`.`name` AS `magic_name`,
|
||||
`magic`.`chanse` AS `magic_chanse`,
|
||||
`magic`.`time` AS `magic_time`,
|
||||
`magic`.`file` AS `magic_file`,
|
||||
`magic`.`targeted` AS `magic_targeted`,
|
||||
`magic`.`needcharge` AS `magic_needcharge`,
|
||||
`magic`.`img` AS `magic_img`
|
||||
|
||||
FROM `shop` LEFT JOIN `magic` ON `magic` = `magic`.`id` WHERE `count` > 0 AND `cost` > 0 AND `razdel` = ?i ORDER by `nlevel` ASC, `id` ASC', $shopCategoryTypeNumber);
|
||||
|
||||
$iteminfo = [];
|
||||
while ($row = $shopItems->fetch_assoc()) {
|
||||
$iteminfo[] = new ShopItem($row);
|
||||
$shopItems = $db->ofetchAll("select * from items inner join trade_offers on id = shop_item_id where shop_id = 1 and shop_item_quantity !=0");
|
||||
foreach ($shopItems as $shopItemObject) {
|
||||
$iteminfo[] = new ShopItem($shopItemObject, 'buyshop');
|
||||
}
|
||||
} else {
|
||||
$inventoryItems = db::c()->query('SELECT `inventory`.*,
|
||||
`magic`.`name` AS `magic_name`,
|
||||
`magic`.`chanse` AS `magic_chanse`,
|
||||
`magic`.`time` AS `magic_time`,
|
||||
`magic`.`file` AS `magic_file`,
|
||||
`magic`.`targeted` AS `magic_targeted`,
|
||||
`magic`.`needcharge` AS `magic_needcharge`,
|
||||
`magic`.`img` AS `magic_img`,
|
||||
0 AS `maxdur`
|
||||
|
||||
FROM `inventory` LEFT JOIN `magic` ON `magic` = `magic`.`id` WHERE
|
||||
`dressed` = 0 AND `setsale` = 0 AND `cost` > 0 AND `present` = "?s" AND
|
||||
`tradesale` = 0 AND `podzem` = 0 AND `goden` = 0 AND `artefact` = 0 AND `owner` = ?i
|
||||
ORDER BY `update` DESC', null, $_SESSION['uid']);
|
||||
|
||||
$iteminfo = [];
|
||||
while ($row = $inventoryItems->fetch_assoc()) {
|
||||
$iteminfo[] = new ShopItem($row);
|
||||
$inventoryItems = $db->ofetchall("select * from inventory where on_sale = 0 and dressed_slot = 0 and durability > 0 and owner_id = ?", $user->getId());
|
||||
foreach ($inventoryItems as $inventoryItemObject) {
|
||||
$iteminfo[] = new ShopItem($inventoryItemObject, 'sellshop');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$sellItemId = $_GET['sell'] ?? 0;
|
||||
|
||||
if ($sellItemId) {
|
||||
ShopItem::sellItem($sellItemId, $user);
|
||||
}
|
||||
|
||||
if (!empty($_GET['buy'])) {
|
||||
ShopItem::buyItem($_GET['buy'], $user);
|
||||
/* $dress = db::c()->query('SELECT * FROM `shop` WHERE `id`=?i', $_GET['buy'])->fetch_assoc();
|
||||
$itemWeight = db::c()->query('SELECT sum(`massa`) AS `m` FROM `inventory` WHERE `owner` = ?i AND `setsale` = 0', $_SESSION['uid'])->fetch_assoc();
|
||||
|
||||
if (($dress['massa'] + $itemWeight['m']) > (get_meshok())) {
|
||||
$status = 'Недостаточно места в рюкзаке.';
|
||||
}
|
||||
elseif ($user['money'] >= $dress['cost'] && ($dress['count'] > 0 || $dress['count'] == -1)) {
|
||||
$newItem = [
|
||||
'prototype' => $dress['id'],
|
||||
'owner' => $user['id'],
|
||||
'name' => $dress['name'], //s
|
||||
'type' => $dress['type'],
|
||||
'massa' => $dress['massa'],
|
||||
'cost' => $dress['cost'],
|
||||
'img' => $dress['img'], //s
|
||||
'maxdur' => $dress['maxdur'],
|
||||
'isrep' => $dress['isrep'],
|
||||
'gsila' => $dress['gsila'],
|
||||
'glovk' => $dress['glovk'],
|
||||
'ginta' => $dress['ginta'],
|
||||
'gintel' => $dress['gintel'],
|
||||
|
||||
'ghp' => $dress['ghp'],
|
||||
'gnoj' => $dress['gnoj'],
|
||||
'gtopor' => $dress['gtopor'],
|
||||
'gdubina' => $dress['gdubina'],
|
||||
'gmech' => $dress['gmech'],
|
||||
'gfire' => $dress['gfire'],
|
||||
'gwater' => $dress['gwater'],
|
||||
'gair' => $dress['gair'],
|
||||
'gearth' => $dress['gearth'],
|
||||
'glight' => $dress['glight'],
|
||||
'ggray' => $dress['ggray'],
|
||||
'gdark' => $dress['gdark'],
|
||||
|
||||
'needident' => $dress['needident'],
|
||||
'nsila' => $dress['nsila'],
|
||||
'nlovk' => $dress['nlovk'],
|
||||
'ninta' => $dress['ninta'],
|
||||
'nintel' => $dress['nintel'],
|
||||
'nmudra' => $dress['nmudra'],
|
||||
'nvinos' => $dress['nvinos'],
|
||||
'nnoj' => $dress['nnoj'],
|
||||
'ntopor' => $dress['ntopor'],
|
||||
'ndubina' => $dress['ndubina'],
|
||||
'nmech' => $dress['nmech'],
|
||||
|
||||
'nfire' => $dress['nfire'],
|
||||
'nwater' => $dress['nwater'],
|
||||
'nair' => $dress['nair'],
|
||||
'nearth' => $dress['nearth'],
|
||||
'nlight' => $dress['nlight'],
|
||||
'ngray' => $dress['ngray'],
|
||||
'ndark' => $dress['ndark'],
|
||||
'mfkrit' => $dress['mfkrit'],
|
||||
'mfakrit' => $dress['mfakrit'],
|
||||
'mfuvorot' => $dress['mfuvorot'],
|
||||
'mfauvorot' => $dress['mfauvorot'],
|
||||
|
||||
'bron1' => $dress['bron1'],
|
||||
'bron2' => $dress['bron2'],
|
||||
'bron3' => $dress['bron3'],
|
||||
'bron4' => $dress['bron4'],
|
||||
'minu' => $dress['minu'],
|
||||
'maxu' => $dress['maxu'],
|
||||
'magic' => $dress['magic'],
|
||||
'nlevel' => $dress['nlevel'],
|
||||
'nalign' => $dress['nalign'],
|
||||
'dategoden' => $dress['dategoden'],
|
||||
'goden' => $dress['goden'],
|
||||
'gmp' => $dress['gmp'],
|
||||
'artefact' => $dress['artefact'],
|
||||
'koll' => $dress['koll'],
|
||||
];
|
||||
|
||||
db::c()->query('INSERT INTO `inventory` SET ?A[?i,?i,"?s",?i,?i,?i,"?s",?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i,?i]', $newItem);
|
||||
$inventoryItemId = db::c()->getLastInsertId();
|
||||
if ($dress['count'] != -1) {
|
||||
db::c()->query('UPDATE `shop` SET `count` = `count` - 1 WHERE `id` = ?i', $_GET['buy']);
|
||||
}
|
||||
$status = "Вы купили «{$dress['name']}» за {$dress['cost']} кр.";
|
||||
db::c()->query('UPDATE `users` set `money` = `money` - ?i WHERE `id` = ?i', $dress['cost'], $_SESSION['uid']);
|
||||
$deloText = "{$user->getLogin()} купил товар «{$dress['name']}» id:({$inventoryItemId}) в магазине за {$dress['cost']} кр.";
|
||||
GameLogs::addUserLog($user->getId(), $deloText);
|
||||
// Для обновления данных о деньгах на странице
|
||||
$user['money'] -= $dress['cost'];
|
||||
|
||||
} else {
|
||||
$status = "Недостаточно денег или нет вещей в наличии.";
|
||||
}*/
|
||||
}
|
||||
Template::header('Магазин');
|
||||
?>
|
||||
<script src="js/main.js"></script>
|
||||
<script src="js/main.js"></script>
|
||||
<style>
|
||||
a.waretype {
|
||||
margin: 2px 16px;
|
||||
padding: 6px;
|
||||
border: 1px silver solid;
|
||||
border-radius: 4px;
|
||||
background-color: #ccc;
|
||||
display: block;
|
||||
}
|
||||
a.sell {
|
||||
background-color: #cdc;
|
||||
}
|
||||
a.alltypes {
|
||||
background-color: #ccd;
|
||||
}
|
||||
.status {
|
||||
color:darkgreen;
|
||||
background:#afa;
|
||||
}
|
||||
</style>
|
||||
<h1>Государственный магазин</h1>
|
||||
<a href=# onclick=hrefToFrame('city.php?cp')> ← выйти на Центральную площадь</a>
|
||||
<div><?php if (!empty($status)) err($status); ?></div>
|
||||
<TABLE width=100% cellspacing="0" cellpadding="4">
|
||||
<TR>
|
||||
<TD valign=top align=left>
|
||||
<div class="status"><?= $status ?></div>
|
||||
<table style="width: 100%; border-collapse: collapse; border-spacing: 0; padding: 4px;">
|
||||
<tr>
|
||||
<td style="vertical-align: top; text-align: left;">
|
||||
<h3><?= $shopCategoryType ?></h3>
|
||||
<?php if ($saleItems): ?>
|
||||
<div style="text-align: center;">Вы можете продать ваши предметы за сущие копейки.</div>
|
||||
<?php endif; ?>
|
||||
<!--Магазин-->
|
||||
<TABLE class="zebra" WIDTH=100% CELLSPACING="1" CELLPADDING="2">
|
||||
<table class="zebra" style="width: 100%; border-collapse: separate; border-spacing: 1px; padding: 2px;">
|
||||
<?php
|
||||
if ($saleItems == true) {
|
||||
foreach ($iteminfo as $ii) {
|
||||
echo "<tr><td style='width: 150px; text-align: center;'>";
|
||||
$ii->printImage();
|
||||
$ii->printControls('sell');
|
||||
echo "</td>";
|
||||
echo "<td style='vertical-align: top;'>";
|
||||
$ii->printInfo();
|
||||
echo "</td></tr>";
|
||||
}
|
||||
} else {
|
||||
foreach ($iteminfo as $ii) {
|
||||
echo "<tr><td style='width: 150px; text-align: center;'>";
|
||||
$ii->printImage();
|
||||
$ii->printControls();
|
||||
echo "</td>";
|
||||
echo "<td style='vertical-align: top;'>";
|
||||
$ii->printInfo();
|
||||
echo "</td></tr>";
|
||||
foreach ($iteminfo as $ii) {
|
||||
if ($ii->getItemType() != $shopCategoryTypeNumber && $shopCategoryTypeNumber != 'sale') {
|
||||
continue;
|
||||
}
|
||||
echo "<tr><td style='width: 150px; text-align: center; padding: 5px;'>";
|
||||
echo $ii->printImage();
|
||||
$ii->printControls();
|
||||
echo "<td style='vertical-align: top; padding: 5px;'>";
|
||||
$ii->printInfo();
|
||||
}
|
||||
?>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD valign=top width=280>
|
||||
<B>Масса всех ваших вещей: <?= getItemsMassaInfo() ?>
|
||||
<BR>У вас в наличии: <span style="color: darkgreen;"><?= $user['money'] ?></span> кр.</B>
|
||||
</table>
|
||||
<td style="width: 280px; vertical-align: top;">
|
||||
<strong>
|
||||
Масса всех ваших вещей: <?= getItemsMassaInfo() ?> <br>
|
||||
У вас в банке: <span style="color: darkgreen;"><?= $bank->getMoney() ?></span> банкнот.
|
||||
</strong>
|
||||
<hr>
|
||||
<div style="text-align: center; font-weight: bold;">Отделы магазина</div>
|
||||
<a href="shop.php?otdel=sale&rnd=<?= mt_rand() ?>">Продать вещи</a>
|
||||
<dl>
|
||||
<dt><b>Оружие:</b></dt>
|
||||
<dd><a href="?otdel=1&rnd=<?= mt_rand() ?>">кинжалы</a></dd>
|
||||
<dd><a href="?otdel=11&rnd=<?= mt_rand() ?>">топоры</a></dd>
|
||||
<dd><a href="?otdel=12&rnd=<?= mt_rand() ?>">дубины</a></dd>
|
||||
<dd><a href="?otdel=13&rnd=<?= mt_rand() ?>">мечи</a></dd>
|
||||
<dt><b>Одежда:</b></dt>
|
||||
<dd><a href="?otdel=24&rnd=<?= mt_rand() ?>">шлемы</a></dd>
|
||||
<dd><a href="?otdel=23&rnd=<?= mt_rand() ?>">тяжелая броня</a></dd>
|
||||
<dd><a href="?otdel=22&rnd=<?= mt_rand() ?>">легкая броня</a></dd>
|
||||
<dd><a href="?otdel=3&rnd=<?= mt_rand() ?>">щиты</a></dd>
|
||||
<dd><a href="?otdel=21&rnd=<?= mt_rand() ?>">перчатки</a></dd>
|
||||
<dd><a href="?otdel=2&rnd=<?= mt_rand() ?>">сапоги</a></dd>
|
||||
<dt><b>Ювелирные товары:</b></dt>
|
||||
<dd><a href="?otdel=4&rnd=<?= mt_rand() ?>">серьги</a></dd>
|
||||
<dd><a href="?otdel=41&rnd=<?= mt_rand() ?>">ожерелья</a></dd>
|
||||
<dd><a href="?otdel=42&rnd=<?= mt_rand() ?>">кольца</a></dd>
|
||||
<dt><b>Магия:</b></dt>
|
||||
<dd><a href="?otdel=51&rnd=<?= mt_rand() ?>">боевые</a></dd>
|
||||
<dd><a href="?otdel=5&rnd=<?= mt_rand() ?>">разные</a></dd>
|
||||
<dt><b>Разное:</b></dt>
|
||||
<dd><a href="?otdel=6&rnd=<?= mt_rand() ?>">амуниция</a></dd>
|
||||
</dl>
|
||||
<a class="waretype" href="?otdel=6&rnd=<?= mt_rand() ?>">Оружие</a>
|
||||
<a class="waretype" href="?otdel=1&rnd=<?= mt_rand() ?>">Шлемы</a>
|
||||
<a class="waretype" href="?otdel=2&rnd=<?= mt_rand() ?>">Броня</a>
|
||||
<a class="waretype" href="?otdel=3&rnd=<?= mt_rand() ?>">Поножи</a>
|
||||
<a class="waretype" href="?otdel=4&rnd=<?= mt_rand() ?>">Сапоги</a>
|
||||
<a class="waretype" href="?otdel=5&rnd=<?= mt_rand() ?>">Перчатки</a>
|
||||
<a class="waretype" href="?otdel=7&rnd=<?= mt_rand() ?>">Щиты</a>
|
||||
<a class="waretype" href="?otdel=8&rnd=<?= mt_rand() ?>">Пояса</a>
|
||||
<a class="waretype" href="?otdel=9&rnd=<?= mt_rand() ?>">Кольца</a>
|
||||
<a class="waretype" href="?otdel=10&rnd=<?= mt_rand() ?>">Амулеты</a>
|
||||
<a class="waretype" href="?otdel=20&rnd=<?= mt_rand() ?>">Расходники</a>
|
||||
<a class="waretype" href="?otdel=50&rnd=<?= mt_rand() ?>">Разное</a>
|
||||
<a class="waretype alltypes" href="?rnd=<?= mt_rand() ?>">Все товары</a>
|
||||
<a class="waretype sell" href="?otdel=sale&rnd=<?= mt_rand() ?>">Продать вещи</a>
|
||||
<div id="hint3" class="ahint"></div>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</table>
|
||||
Reference in New Issue
Block a user