Compare commits
2 Commits
8e3a14eb2c
...
a1ea3a0a8c
Author | SHA1 | Date | |
---|---|---|---|
a1ea3a0a8c | |||
|
415d198351 |
8
city.php
8
city.php
@ -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 Центральная
|
||||
|
@ -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]) .
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
@ -13,7 +13,6 @@ trait Rooms
|
||||
22 => "Магазин",
|
||||
23 => "Ремонтная мастерская",
|
||||
24 => "Памятник Архангелу",
|
||||
25 => "Комиссионный магазин",
|
||||
26 => "Большая парковая улица",
|
||||
27 => "Почта",
|
||||
29 => "Банк",
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
@ -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]
|
||||
|
@ -474,7 +474,6 @@ class fbattle
|
||||
'Жизнь вне нашего клуба - это пустая трата кислорода!!!',
|
||||
'Жми! Дави! Кусай! Царапай!',
|
||||
'За такие бои надо в хаос отправлять!',
|
||||
'Знаете откуда в комиссионном магазине столько вещей? Это я после ваших гулянок собираю и сдаю туда. Иногда вместе с частями тела, застрявшими в них.',
|
||||
'Здесь люди так близки друг к другу. Просто иначе ударить нельзя.',
|
||||
'И пролитая кровь еще пульсирует...',
|
||||
'Инвалидов развелось...',
|
||||
|
158
comission.php
158
comission.php
@ -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>
|
@ -1772,7 +1772,6 @@ class fbattle
|
||||
'Жизнь вне нашего клуба - это пустая трата кислорода!!!',
|
||||
'Жми! Дави! Кусай! Царапай!',
|
||||
'За такие бои надо в хаос отправлять!',
|
||||
'Знаете откуда в комиссионном магазине столько вещей? Это я после ваших гулянок собираю и сдаю туда. Иногда вместе с частями тела, застрявшими в них.',
|
||||
'Здесь люди так близки друг к другу. Просто иначе ударить нельзя.',
|
||||
'И пролитая кровь еще пульсирует...',
|
||||
'Инвалидов развелось...',
|
||||
|
@ -34,7 +34,6 @@ $fbattleCheckFiles = [
|
||||
'c_park.php',
|
||||
'city.php',
|
||||
'clan_castle.php',
|
||||
'comission.php',
|
||||
'enter_cave.php',
|
||||
'library.php',
|
||||
'atk.php',
|
||||
|
@ -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>Магазин «Берёзка»</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>
|
||||
|
@ -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>Магазин «Берёзка»</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>
|
||||
|
10
shop.php
10
shop.php
@ -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'])) {
|
||||
|
Loading…
Reference in New Issue
Block a user