Покупки-продажи из класса
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace Battles;
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
|
||||
class ShopItem extends Item
|
||||
@@ -9,11 +11,12 @@ class ShopItem extends Item
|
||||
parent::printAllInfo();
|
||||
}
|
||||
|
||||
public function buyItem($owner)
|
||||
public static function buyItem($id, User $buyer): string
|
||||
{
|
||||
if ($owner) {
|
||||
$db = new DBPDO();
|
||||
$query = "INSERT INTO inventory (
|
||||
//TODO Добавить снятие денег с проверками на их наличие.
|
||||
$db = new DBPDO();
|
||||
$item = $db->ofetch('select * from shop where item_id = ?', $id);
|
||||
$query = "INSERT INTO inventory (
|
||||
owner_id, name, item_type, durability, price,
|
||||
need_strength, need_dexterity, need_intuition,
|
||||
need_endurance, need_intelligence, need_wisdom,
|
||||
@@ -23,24 +26,51 @@ class ShopItem extends Item
|
||||
add_min_physical_damage, add_max_physical_damage,
|
||||
image, weight)
|
||||
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
|
||||
$values = [
|
||||
$owner, $this->name, $this->item_type, $this->durability, $this->price,
|
||||
$this->need_strength, $this->need_dexterity, $this->need_intuition,
|
||||
$this->need_endurance, $this->need_intelligence, $this->need_wisdom,
|
||||
$this->add_strength, $this->add_dexterity, $this->add_intuition,
|
||||
$this->add_endurance, $this->add_intelligence, $this->add_wisdom,
|
||||
$this->add_accuracy, $this->add_evasion, $this->add_criticals,
|
||||
$this->add_min_physical_damage, $this->add_max_physical_damage,
|
||||
$this->image, $this->weight
|
||||
];
|
||||
$db->execute($query, $values);
|
||||
$values = [
|
||||
$buyer->getId(), $item->name, $item->item_type, $item->durability, $item->price,
|
||||
$item->need_strength, $item->need_dexterity, $item->need_intuition,
|
||||
$item->need_endurance, $item->need_intelligence, $item->need_wisdom,
|
||||
$item->add_strength, $item->add_dexterity, $item->add_intuition,
|
||||
$item->add_endurance, $item->add_intelligence, $item->add_wisdom,
|
||||
$item->add_accuracy, $item->add_evasion, $item->add_criticals,
|
||||
$item->add_min_physical_damage, $item->add_max_physical_damage,
|
||||
$item->image, $item->weight
|
||||
];
|
||||
$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') {
|
||||
echo <<<BTN
|
||||
|
||||
Reference in New Issue
Block a user