#49: Удаление здания комиссионки.

This commit is contained in:
Igor Barkov (iwork) 2022-01-21 18:17:56 +02:00
parent baf127231e
commit 415d198351
13 changed files with 28 additions and 179 deletions

View File

@ -3,6 +3,7 @@
* Центральная площадь
*/
use Battles\Database\DBPDO;
use Battles\Template;
require_once "functions.php";
@ -11,7 +12,7 @@ if ($user->getZayavka()) {
exit;
}
$online = db::c()->query('SELECT 1 FROM `online` WHERE `real_time` >= ?i', (time() - 60));
$online = DBPDO::$db->fetchColumn('select count(*) from online where real_time >= ?', time()-60);
$location = explode('/', filter_input(INPUT_SERVER, 'QUERY_STRING'));
switch ($location[0]) {
@ -73,9 +74,6 @@ switch ($location[0]) {
case 'level6':
Battles\Travel::toRoom(27,$user->getRoom());
break;
case 'level3':
Battles\Travel::toRoom(25,$user->getRoom());
break;
}
} elseif ($user->getRoom() == 21) {
switch ($location[1]) {
@ -198,7 +196,7 @@ switch ($location[0]) {
}
Template::header('city');
echo sprintf('<div style="text-align: right;">Сейчас в игре: %s игроков.></div>', $online->getNumRows());
echo sprintf('<div style="text-align: right;">Сейчас в игре: %s игроков.></div>', $online);
if (in_array($user->getRoom(), [20, 21, 26, 2601, 2655, 2111, 2701, 2702])) {
/* Улицы:
* 20 Центральная

View File

@ -10,7 +10,6 @@ class City
echo '<div style="position:relative; display: inline-block;" id="ione"><img alt="background" src="/i/city/spring_cap_cp_day.jpg">' .
self::showBuilding(1, "spring_cap_club", 30, 235, self::$roomNames[1]) .
self::showBuilding(2, "spring_cap_shop", 202, 171, self::$roomNames[22]) .
self::showBuilding(3, "spring_cap_kom", 205, 105, self::$roomNames[25]) .
self::showBuilding(4, "spring_cap_rem", 202, 290, self::$roomNames[23]) .
self::showBuilding(6, "spring_cap_po4ta", 180, 540, self::$roomNames[27]) .
self::showBuilding(7, "cap_arr_right", 260, 710, self::$roomNames[21]) .

View File

@ -141,4 +141,14 @@ class DBPDO
{
return $this->pdo->lastInsertId();
}
function fetchColumn($query, $values = null) {
if (is_null($values)) {
$values = [];
} elseif (!is_array($values)) {
$values = [$values];
}
$stmt = $this->execute($query, $values);
return $stmt->fetchColumn();
}
}

View File

@ -13,7 +13,6 @@ trait Rooms
22 => "Магазин",
23 => "Ремонтная мастерская",
24 => "Памятник Архангелу",
25 => "Комиссионный магазин",
26 => "Большая парковая улица",
27 => "Почта",
29 => "Банк",

View File

@ -42,8 +42,12 @@ class Shop
$stmt = DBPDO::$db->ofetchall('select * from inventory where on_sale = 0 and dressed_slot = 0 and durability > 0 and owner_id = ?', User::$current->getId());
$iteminfo = [];
$operationType = 'sellshop';
if ($this->categoryType === self::BARTER_SHOP) {
$operationType = 'setmarket';
}
foreach ($stmt as $item) {
$iteminfo[] = new ShopItem($item, 'sellshop');
$iteminfo[] = new ShopItem($item, $operationType);
}
return $this->strFromArr($iteminfo);
}
@ -81,6 +85,6 @@ class Shop
public function getItemsList(): string
{
return $this->categoryType !== self::CATEGORY_SALE_ITEMS ? $this->showGoods() : $this->showUserSellItems();
return $this->categoryType !== self::CATEGORY_SALE_ITEMS || $this->categoryType !== self::BARTER_SHOP ? $this->showGoods() : $this->showUserSellItems();
}
}

View File

@ -16,7 +16,6 @@ class Travel
21 => 'city.php',
22 => 'shop.php',
23 => 'repair.php',
25 => 'comission.php',
26 => 'city.php',
27 => 'post.php',
29 => 'bank.php',
@ -97,7 +96,6 @@ class Travel
/*
* 1 location: main.php?goto=arena
* 2 Room 22 shop.php
* 3 Room 25 comission.php
* 4 Room 23 repair.php
* 6 Room 27 posr.php
* 7 Room 21 [STREET]
@ -105,8 +103,8 @@ class Travel
* 13 location: quest_room.php
* 222 Room 2702 [STREET]
*/
$room[20] = [1, 21, 22, 23, 25, 26, 27, 2702];
$room[1] = $room[22] = $room[23] = $room[25] = $room[27] = [20];
$room[20] = [1, 21, 22, 23, 26, 27, 2702];
$room[1] = $room[22] = $room[23] = $room[27] = [20];
/*
* 3 Room 2111 [STREET]
* 4 Room 20 [STREET]

View File

@ -474,7 +474,6 @@ class fbattle
'Жизнь вне нашего клуба - это пустая трата кислорода!!!',
'Жми! Дави! Кусай! Царапай!',
'За такие бои надо в хаос отправлять!',
'Знаете откуда в комиссионном магазине столько вещей? Это я после ваших гулянок собираю и сдаю туда. Иногда вместе с частями тела, застрявшими в них.',
'Здесь люди так близки друг к другу. Просто иначе ударить нельзя.',
'И пролитая кровь еще пульсирует...',
'Инвалидов развелось...',

View File

@ -1,158 +0,0 @@
<?php
use Battles\Database\DBPDO;
use Battles\GameLogs;
use Battles\InventoryItem;
use Battles\ShopItem;
use Battles\Template;
require_once 'functions.php';
$get = urldecode(filter_input(INPUT_SERVER, 'QUERY_STRING'));
$putItemCost = (int)filter_input(INPUT_POST, 'cost', FILTER_VALIDATE_INT, ['options' => ['min_range' => 1]]);
$putItemId = (int)filter_input(INPUT_POST, 'putId', FILTER_VALIDATE_INT, ['options' => ['min_range' => 1]]);
$returningItemId = (int)filter_input(INPUT_GET, 'back', FILTER_VALIDATE_INT, ['options' => ['min_range' => 1]]);
$byingItemId = (int)filter_input(INPUT_GET, 'set', FILTER_VALIDATE_INT, ['options' => ['min_range' => 1]]);
if ($putItemId) {
$query = 'select name from inventory where dressed_slot = 0 and owner_id = ? and item_id = ?';
DBPDO::INIT()->ofetch($query, [$_SESSION['uid'], $putItemId]);
$dress = db::c()->query('SELECT `name`,`duration`,`maxdur`,`cost` FROM `inventory` WHERE `dressed` = 0 AND `id` = ?i AND `owner` = ?i', $putItemId, $_SESSION['uid'])->fetch_assoc();
if (empty($putItemCost)) {
$putItemCost = $dress['cost'];
}
$commission = ceil($putItemCost / 10); # 10% от суммы с округлением вверх.
if ($user->getMoney() > $commission) {
if (db::c()->getAffectedRows()) {
$deloText = "{$user->getLogin()} выставил товар: «{$dress['name']}» id:({$putItemId}) [{$dress['duration']}/{$dress['maxdur']}] на продажу в комиссионку за {$putItemCost} кр. ";
GameLogs::addUserLog($user->getId(), $deloText);
db::c()->query('UPDATE `inventory` SET `setsale` = ?i WHERE `id` = ?i', $putItemCost, $putItemId);
db::c()->query('UPDATE `users` SET `money` = `money` - ?i WHERE `id` = ?i', $commission, $_SESSION['uid']);
$status = "Вы сдали в магазин «{$dress['name']}» за {$putItemCost} кр. Вычтено за услуги магазина: {$commission} кр.";
} else {
$status = "Предмет не найден в инвентаре!";
}
} else {
$status = "У вас не хватает " . $commission - $user->getMoney() . " кр. чтобы оплатить комиссию!";
}
}
if ($returningItemId) {
$dress = db::c()->query('SELECT `name`,`duration`,`maxdur` FROM `inventory` WHERE `dressed` = 0 AND `setsale` > 0 AND `id` = ?i AND `owner` = ?i', $returningItemId, $_SESSION['uid'])->fetch_assoc();
if (db::c()->getAffectedRows()) {
$deloText = "{$user->getLogin()} забрал свой товар: «{$dress['name']}» id:({$returningItemId}) [{$dress['duration']}/{$dress['maxdur']}] из комиссионки.";
GameLogs::addUserLog($user->getId(), $deloText);
db::c()->query('UPDATE `inventory` SET `setsale` = 0 WHERE `id` = ?i', $returningItemId);
$status = "Вы забрали из магазина ваш «{$dress['name']}».";
} else {
$status = "Предмет не найден на полках магазина!";
}
}
if ($byingItemId) {
$dress = db::c()->query('SELECT `name`,`owner`,`duration`,`maxdur`,`setsale` FROM `inventory` WHERE `dressed` = 0 AND `setsale` > 0 AND `id` = ?i', $byingItemId)->fetch_assoc();
$seller = db::c()->query('SELECT `login` FROM `users` WHERE `id` =?i', $dress['owner'])->fetch_assoc();
if ($dress['setsale']) {
if ($user->getMoney() >= $dress['setsale']) {
db::c()->query('UPDATE `inventory` SET `setsale` = 0, `owner` = ?i WHERE `id` = ?i', $user->getId(), $byingItemId);
db::c()->query('UPDATE `users` set `money` = `money` - ?i WHERE `id` = ?i', $dress['setsale'], $user->getId());
db::c()->query('UPDATE `users` set `money` = `money` + ?i WHERE `id` = ?i', $dress['setsale'], $dress['owner']);
$status = "Вы купили «{$dress['name']}» за {$dress['setsale']} кр.";
$deloText = "{$user->getLogin()} купил на рынке товар: «{$dress['name']}» id:({$byingItemId}) [{$dress['duration']}/{$dress['maxdur']}] у {$seller['login']} за {$dress['setsale']} кр.";
GameLogs::addUserLog($user->getId(), $deloText);
$deloText = "{$seller['login']} продал на рынке товар: «{$dress['name']}» id:({$byingItemId}) [{$dress['duration']}/{$dress['maxdur']}] персонажу {$user->getLogin()} за {$dress['setsale']} кр.";
GameLogs::addUserLog($dress['owner'], $deloText);
$user->setMoney($user->getMoney() - $dress['setsale']);
telegraph($dress['owner'], "Предмет «{$dress['name']}» продан на рынке за {$dress['setsale']} кр.");
} else {
$status = "Недостаточно средств!";
}
} else {
$status = "Предмет не найден на полках магазина!";
}
}
$classPrintControlName = "marketbuy";
if ($get === 'sale') {
$search = $_SESSION['uid'];
$query = 'select * from inventory where on_sale = 0 and dressed_slot = 0 and present is null and owner_id = ? order by name';
$classPrintControlName = "marketput";
} elseif ($get === 'unsale') {
$search = $_SESSION['uid'];
$query = 'select * from inventory where on_sale > 0 and dressed_slot = 0 and owner_id = ? order by name';
$classPrintControlName = "marketgetback";
} else if (!empty($_POST['search'])) {
$search = "%{$_POST['search']}%";
$query = 'select * from inventory where on_sale > 0 and dressed_slot = 0 and name like ? order by item_id';
} else {
$query = 'select * from inventory where on_sale > 0 and dressed_slot = 0 order by name';
}
if (isset($search)) {
$data = DBPDO::INIT()->ofetchAll($query, $search);
unset($search);
} else {
$data = DBPDO::INIT()->ofetchAll($query);
}
$iteminfo = [];
foreach ($data as $itemObject) {
$iteminfo[] = new ShopItem($itemObject, 'buymarket');
}
Template::header('Рынок');
?>
<script src="js/main.js"></script>
<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>
<table class="zebra" width=100%>
<tr>
<th>
<?php if ($get === 'sale'): ?>
Выставить товар на продажу.
<br>Комиссия за услуги магазина составляет 10% от цены, по которой вы предлагаете предмет.
<?php elseif ($get === 'unsale'): ?>
Забрать свой товар.
<?php else: ?>
Список товаров.<br>
<form method="post">
<input name="search"> <input type="submit" value="Искать товар">
</form>
<?php endif; ?>
<tr>
<td><!--Рюкзак-->
<table width=100%>
<?php
foreach ($iteminfo as $ii) {
echo "<tr><td style='width: 150px; text-align: center;'>";
$ii->printImage();
$ii->printControls($classPrintControlName);
echo "</td>";
echo "<td style='vertical-align: top;'>";
$ii->printInfo();
echo "</td></tr>";
}
?>
</table>
</table>
<TD valign=top width=280>
<div style="margin-left:15px; margin-top: 10px;">
<b>Масса всех ваших вещей: <?= InventoryItem::getWeightData() ?>
<br>У вас в наличии: <span style="color: darkgreen;"><?= $user['money'] ?></span> кр.</b>
<hr>
<br>
<button onclick="hrefToFrame('?show')">Осмотреть товары</button>
<br>
<button onclick="hrefToFrame('?sale')">Сдать вещи в магазин</button>
<br>
<button onclick="hrefToFrame('?unsale')">Забрать вещи из магазина</button>
<br>
<button onclick="hrefToFrame('city.php?cp=1')">Вернуться</button>
</div>
</table>

View File

@ -1772,7 +1772,6 @@ class fbattle
'Жизнь вне нашего клуба - это пустая трата кислорода!!!',
'Жми! Дави! Кусай! Царапай!',
'За такие бои надо в хаос отправлять!',
'Знаете откуда в комиссионном магазине столько вещей? Это я после ваших гулянок собираю и сдаю туда. Иногда вместе с частями тела, застрявшими в них.',
'Здесь люди так близки друг к другу. Просто иначе ударить нельзя.',
'И пролитая кровь еще пульсирует...',
'Инвалидов развелось...',

View File

@ -34,7 +34,6 @@ $fbattleCheckFiles = [
'c_park.php',
'city.php',
'clan_castle.php',
'comission.php',
'enter_cave.php',
'library.php',
'atk.php',

View File

@ -23,7 +23,6 @@ $imgPath = '/locations/central-square/img/'.$now->getTimeOfDay();
<div class="location" style="left: 430px; top: 230px; width: 44px; height: 54px;"><img class="loc" onclick="solo(13)" title="<b>Памятник Архангелу</b>" src="<?php echo $imgPath; ?>/n/vesna_cap_statue.png" width="44" height="54" /></div>
<div class="location" style="left: 535px; top: 205px; width: 110px; height: 76px;"><img class="loc" onclick="solo(17)" title="<b>Магазин &laquo;Берёзка&raquo;</b>" src="<?php echo $imgPath; ?>/n/zima_berezka.png" width="110" height="76" /></div>
<div class="location" style="left: 640px; top: 180px; width: 112px; height: 76px;"><img class="loc" onclick="solo(6)" title="<b>Почта</b>" src="<?php echo $imgPath; ?>/n/zima_po4ta.png" width="112" height="76" /></div>
<div class="location" style="left: 105px; top: 205px; width: 70px; height: 46px;"><img class="loc" onclick="solo(3)" title="<b>Комиссионный магазин</b>" src="<?php echo $imgPath; ?>/n/zima_kom.png" width="70" height="46" /></div>
<div class="location" style="left: 171px; top: 202px; width: 122px; height: 77px;"><img class="loc" onclick="solo(2)" title="<b>Магазин</b>" src="<?php echo $imgPath; ?>/n/zima_shop.png" width="122" height="77" /></div>
<div class="location" style="left: 715px; top: 230px; width: 100px; height: 69px;"><img class="loc" onclick="solo(10)" title="<b>Сувенирный магазин</b>" src="<?php echo $imgPath; ?>/n/zima_loto.png" width="100" height="69" /></div>
<div class="location" style="left: 856px; top: 246px; width: 69px; height: 79px;"><img class="loc" onclick="solo(7)" title="<b>Страшилкина улица</b>" src="<?php echo $imgPath; ?>/n/signright.png" width="69" height="79" /></div>

View File

@ -23,7 +23,6 @@ $imgPath = '/locations/central-square/img/'.$now->getTimeOfDay();
<div class="location" style="left: 398px; top: 172px; width: 89px; height: 127px;"><img class="loc" onclick="solo(13)" title="<b>Памятник Архангелу</b>" src="<?php echo $imgPath; ?>/n/statue.png" width="89" height="127" /></div>
<div class="location" style="left: 509px; top: 170px; width: 146px; height: 140px;"><img class="loc" onclick="solo(17)" title="<b>Магазин &laquo;Берёзка&raquo;</b>" src="<?php echo $imgPath; ?>/n/shop.png" width="146" height="140" /></div>
<div class="location" style="left: 620px; top: 146px; width: 154px; height: 155px;"><img class="loc" onclick="solo(6)" title="<b>Почта</b>" src="<?php echo $imgPath; ?>/n/postoffice.png" width="154" height="155" /></div>
<div class="location" style="left: 53px; top: 171px; width: 120px; height: 124px;"><img class="loc" onclick="solo(3)" title="<b>Комиссионный магазин</b>" src="<?php echo $imgPath; ?>/n/fleamarket.png" width="120" height="124" /></div>
<div class="location" style="left: 149px; top: 155px; width: 173px; height: 161px;"><img class="loc" onclick="solo(2)" title="<b>Магазин</b>" src="<?php echo $imgPath; ?>/n/bigshop.png" width="173" height="161" /></div>
<div class="location" style="left: 752px; top: 158px; width: 119px; height: 167px;"><img class="loc" onclick="solo(10)" title="<b>Сувенирный магазин</b>" src="<?php echo $imgPath; ?>/n/loto.png" width="119" height="167" /></div>
<div class="location" style="left: 856px; top: 246px; width: 69px; height: 79px;"><img class="loc" onclick="solo(7)" title="<b>Страшилкина улица</b>" src="<?php echo $imgPath; ?>/n/signright.png" width="69" height="79" /></div>

View File

@ -10,11 +10,15 @@ use Battles\User;
require_once 'functions.php';
Shop::$current = new Shop(Shop::GENERAL_SHOP);
if (!empty($_GET['otdel'])) {
if ($_GET['otdel'] !== 'sale') {
Shop::$current->categoryType = $_GET['otdel'];
} else {
if ($_GET['otdel'] === 'sale') {
Shop::$current->categoryType = Shop::CATEGORY_SALE_ITEMS;
}
elseif ($_GET['otdel'] === 'market') {
Shop::$current->categoryType = Shop::BARTER_SHOP;
}
else {
Shop::$current->categoryType = $_GET['otdel'];
}
}
if (!empty($_POST['sellshop'])) {