016e5a9ccd
2. shop bying fixes 3. item class code clear 4. moved all gifts to separate file 5. removed artefact upgrade
309 lines
13 KiB
PHP
309 lines
13 KiB
PHP
<?php
|
||
ob_start();
|
||
session_start();
|
||
if ($_SESSION['uid'] == null) header("Location: index.php");
|
||
require_once 'functions.php';
|
||
|
||
if ($user['room'] != 22) {
|
||
header("Location: main.php");
|
||
die();
|
||
}
|
||
if ($user['battle'] != 0) {
|
||
header('location: fbattle.php');
|
||
die();
|
||
}
|
||
|
||
$saleItems = false;
|
||
$shopCategoryType = empty($_POST['sale']) ?: $_POST['sale'];
|
||
$shopCategoryTypeNumber = empty($_GET['otdel']) ?: $_GET['otdel'];
|
||
switch ($shopCategoryTypeNumber) {
|
||
default:
|
||
$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;
|
||
case 52:
|
||
$shopCategoryType = "Руны";
|
||
break;
|
||
}
|
||
|
||
if (false == $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);
|
||
}
|
||
} 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);
|
||
}
|
||
|
||
}
|
||
|
||
$sellItemId = filter_input(INPUT_GET, 'sell');
|
||
|
||
if ($sellItemId) {
|
||
$dress = db::c()->query('SELECT `id`, `name`, `cost`, `koll` FROM `inventory` WHERE `dressed` = 0 AND `artefact` = 0 AND `id` = ?i AND `owner` = ?i', $sellItemId, $user['id'])->fetch_assoc();
|
||
$kols = '';
|
||
if ($dress['koll']) {
|
||
$dress['cost'] *= $dress['koll'];
|
||
$kols = " (x{$dress['koll']}) ";
|
||
}
|
||
|
||
$allcost = mt_rand(0, $dress['cost'] / 2);
|
||
db::c()->query('DELETE FROM `inventory` WHERE `id` = ?i', $dress['id']);
|
||
db::c()->query('UPDATE `users` SET `money` = `money` + ?i WHERE `id` = ?i', $allcost, $_SESSION['uid']);
|
||
if ($allcost == 0) $status = "После длительных и изнурительных торгов вы плюнули на всё и просто подарили ваш «{$dress['name']}» торговцу.";
|
||
else $status = "Вы продали «{$dress['name']}» $kols за " . $allcost . " кр.";
|
||
$deloText = "{$user['login']} продал товар «{$dress['name']}»{$kols}id:({$dress['id']}) в магазине за {$allcost} кр.";
|
||
addToDelo($deloText);
|
||
// Для обновления данных о деньгах на странице
|
||
$user['money'] += $allcost;
|
||
}
|
||
|
||
if (!empty($_GET['buy'])) {
|
||
$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'] AND ($dress['count'] > 0 OR $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['login']} купил товар «{$dress['name']}» id:({$inventoryItemId}) в магазине за {$dress['cost']} кр.";
|
||
addToDelo($deloText);
|
||
// Для обновления данных о деньгах на странице
|
||
$user['money'] -= $dress['cost'];
|
||
|
||
} else {
|
||
$status = "Недостаточно денег или нет вещей в наличии.";
|
||
}
|
||
}
|
||
?>
|
||
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<link href="css/main.css" rel="stylesheet"/>
|
||
<script src="js/jquery-1.7.2.min.js"></script>
|
||
<script src="js/jquery.simplemodal.js"></script>
|
||
<script src="js/jquery.ui.js?100"></script>
|
||
<script src="js/main.js"></script>
|
||
</head>
|
||
<body>
|
||
<h1>Государственный магазин</h1>
|
||
<a href=# onclick=leave('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>
|
||
<h3><?= $shopCategoryType ?></h3>
|
||
<?php if ($saleItems): ?>
|
||
<div style="text-align: center;">Вы можете продать ваши предметы за сущие копейки.</div>
|
||
<?php endif; ?>
|
||
<!--Магазин-->
|
||
<TABLE class="zebra" WIDTH=100% CELLSPACING="1" CELLPADDING="2">
|
||
<?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>";
|
||
}
|
||
}
|
||
?>
|
||
</TABLE>
|
||
</TD>
|
||
<TD valign=top width=280>
|
||
<B>Масса всех ваших вещей: <?= getItemsMassaInfo() ?>
|
||
<BR>У вас в наличии: <span style="color: darkgreen;"><?= $user['money'] ?></span> кр.</B>
|
||
<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>
|
||
<dd><a href="?otdel=52&rnd=<?= mt_rand() ?>">руны</a></dd>
|
||
</dl>
|
||
<div id="hint3" class="ahint"></div>
|
||
</TD>
|
||
</TR>
|
||
</TABLE>
|
||
</BODY>
|
||
</HTML>
|