Покупки-продажи из класса
This commit is contained in:
parent
3480dcf5a8
commit
6176be30b7
@ -1,5 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Battles;
|
namespace Battles;
|
||||||
|
|
||||||
use Battles\Database\DBPDO;
|
use Battles\Database\DBPDO;
|
||||||
|
|
||||||
class ShopItem extends Item
|
class ShopItem extends Item
|
||||||
@ -9,11 +11,12 @@ class ShopItem extends Item
|
|||||||
parent::printAllInfo();
|
parent::printAllInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function buyItem($owner)
|
public static function buyItem($id, User $buyer): string
|
||||||
{
|
{
|
||||||
if ($owner) {
|
//TODO Добавить снятие денег с проверками на их наличие.
|
||||||
$db = new DBPDO();
|
$db = new DBPDO();
|
||||||
$query = "INSERT INTO inventory (
|
$item = $db->ofetch('select * from shop where item_id = ?', $id);
|
||||||
|
$query = "INSERT INTO inventory (
|
||||||
owner_id, name, item_type, durability, price,
|
owner_id, name, item_type, durability, price,
|
||||||
need_strength, need_dexterity, need_intuition,
|
need_strength, need_dexterity, need_intuition,
|
||||||
need_endurance, need_intelligence, need_wisdom,
|
need_endurance, need_intelligence, need_wisdom,
|
||||||
@ -23,24 +26,51 @@ class ShopItem extends Item
|
|||||||
add_min_physical_damage, add_max_physical_damage,
|
add_min_physical_damage, add_max_physical_damage,
|
||||||
image, weight)
|
image, weight)
|
||||||
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
|
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
|
||||||
$values = [
|
$values = [
|
||||||
$owner, $this->name, $this->item_type, $this->durability, $this->price,
|
$buyer->getId(), $item->name, $item->item_type, $item->durability, $item->price,
|
||||||
$this->need_strength, $this->need_dexterity, $this->need_intuition,
|
$item->need_strength, $item->need_dexterity, $item->need_intuition,
|
||||||
$this->need_endurance, $this->need_intelligence, $this->need_wisdom,
|
$item->need_endurance, $item->need_intelligence, $item->need_wisdom,
|
||||||
$this->add_strength, $this->add_dexterity, $this->add_intuition,
|
$item->add_strength, $item->add_dexterity, $item->add_intuition,
|
||||||
$this->add_endurance, $this->add_intelligence, $this->add_wisdom,
|
$item->add_endurance, $item->add_intelligence, $item->add_wisdom,
|
||||||
$this->add_accuracy, $this->add_evasion, $this->add_criticals,
|
$item->add_accuracy, $item->add_evasion, $item->add_criticals,
|
||||||
$this->add_min_physical_damage, $this->add_max_physical_damage,
|
$item->add_min_physical_damage, $item->add_max_physical_damage,
|
||||||
$this->image, $this->weight
|
$item->image, $item->weight
|
||||||
];
|
];
|
||||||
$db->execute($query, $values);
|
$db->execute($query, $values);
|
||||||
|
$deloText = "{$buyer->getLogin()} купил товар «{$item->name}» id:($id) в магазине за $item->price кр.";
|
||||||
|
GameLogs::addUserLog($buyer->getId(), $deloText);
|
||||||
|
return "Предмет $item->name куплен за $item->price.";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function sellItem($id, User $seller, $bankTrade = 0): string
|
||||||
|
{
|
||||||
|
$db = new DBPDO();
|
||||||
|
$item = $db->ofetch('select * from inventory where item_id = ?', $id);
|
||||||
|
// Продажа за цену от нуля до половины стоимости.
|
||||||
|
$sellingPrice = mt_rand(0, $item->price / 2);
|
||||||
|
$db->execute('delete from inventory where item_id = ?', $id);
|
||||||
|
if ($bankTrade) {
|
||||||
|
$bank = new Bank($seller->getId());
|
||||||
|
$bank->setMoney($bank->getMoney() - $sellingPrice);
|
||||||
|
Bank::setBankMoney($bank->getMoney(), $seller->getId(), 'shopsell');
|
||||||
|
} else {
|
||||||
|
$db->execute('update users set money = money - ? where id = ?', [$sellingPrice, $_SESSION['uid']]);
|
||||||
}
|
}
|
||||||
|
$deloText = "{$seller->getLogin()} продал товар «{$item->name}» id:($id) в магазине за $sellingPrice кр.";
|
||||||
|
GameLogs::addUserLog($seller->getId(), $deloText);
|
||||||
|
if ($sellingPrice == 0) {
|
||||||
|
$status = "После длительных и изнурительных торгов вы плюнули на всё и просто подарили ваш «{$item->name}» торговцу.";
|
||||||
|
} else {
|
||||||
|
$status = "Вы продали «{$item->name}» за $sellingPrice кр.";
|
||||||
|
}
|
||||||
|
return $status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Для кнопок управления под картинкой предмета в зависимости от ситуации.
|
* Для кнопок управления под картинкой предмета в зависимости от ситуации.
|
||||||
|
* @param null $shopType
|
||||||
*/
|
*/
|
||||||
public function printControls($shopType = false)
|
public function printControls($shopType = null)
|
||||||
{
|
{
|
||||||
if ($shopType === 'marketput') {
|
if ($shopType === 'marketput') {
|
||||||
echo <<<BTN
|
echo <<<BTN
|
||||||
|
28
shop.php
28
shop.php
@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use Battles\Database\DBPDO;
|
||||||
use Battles\GameLogs;
|
use Battles\GameLogs;
|
||||||
use Battles\ShopItem;
|
use Battles\ShopItem;
|
||||||
use Battles\Template;
|
use Battles\Template;
|
||||||
@ -9,6 +10,7 @@ ob_start();
|
|||||||
session_start();
|
session_start();
|
||||||
require_once 'functions.php';
|
require_once 'functions.php';
|
||||||
$user = $user ?? new User($_SESSION['uid']);
|
$user = $user ?? new User($_SESSION['uid']);
|
||||||
|
$db = new DBPDO();
|
||||||
/*
|
/*
|
||||||
* aheroshop.php
|
* aheroshop.php
|
||||||
* $data = db::c()->query('SELECT * FROM `ahero_shop` WHERE `count` > 0 AND `razdel` = ?i ORDER by `point` ASC', $_GET['otdel']);
|
* $data = db::c()->query('SELECT * FROM `ahero_shop` WHERE `count` > 0 AND `razdel` = ?i ORDER by `point` ASC', $_GET['otdel']);
|
||||||
@ -124,30 +126,12 @@ ORDER BY `update` DESC', null, $_SESSION['uid']);
|
|||||||
$sellItemId = $_GET['sell'] ?? 0;
|
$sellItemId = $_GET['sell'] ?? 0;
|
||||||
|
|
||||||
if ($sellItemId) {
|
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();
|
ShopItem::sellItem($sellItemId, $user);
|
||||||
$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->getLogin()} продал товар «{$dress['name']}» {$kols}id:({$dress['id']}) в магазине за {$allcost} кр.";
|
|
||||||
GameLogs::addUserLog($user->getId(), $deloText);
|
|
||||||
// Для обновления данных о деньгах на странице
|
|
||||||
$user['money'] += $allcost;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($_GET['buy'])) {
|
if (!empty($_GET['buy'])) {
|
||||||
$dress = db::c()->query('SELECT * FROM `shop` WHERE `id`=?i', $_GET['buy'])->fetch_assoc();
|
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();
|
$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())) {
|
if (($dress['massa'] + $itemWeight['m']) > (get_meshok())) {
|
||||||
@ -236,7 +220,7 @@ if (!empty($_GET['buy'])) {
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
$status = "Недостаточно денег или нет вещей в наличии.";
|
$status = "Недостаточно денег или нет вещей в наличии.";
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
Template::header('Магазин');
|
Template::header('Магазин');
|
||||||
?>
|
?>
|
||||||
|
Loading…
Reference in New Issue
Block a user