new selling price generation algorytm
This commit is contained in:
parent
c6f86632ef
commit
0bd9308d01
@ -20,10 +20,15 @@ class ShopItem extends Item
|
|||||||
/**
|
/**
|
||||||
* Для кнопок управления под картинкой прелмета в зависимости от ситуации.
|
* Для кнопок управления под картинкой прелмета в зависимости от ситуации.
|
||||||
*/
|
*/
|
||||||
public function printControls()
|
public function printControls($sell = false)
|
||||||
{
|
{
|
||||||
|
if ($sell) {
|
||||||
|
$btnPrice = "Продать";
|
||||||
|
$btnLink = "/shop.php?sell={$this->id}&rnd=".mt_rand();
|
||||||
|
} else {
|
||||||
$btnPrice = "Купить за " . intval($this->cost) . " кр.";
|
$btnPrice = "Купить за " . intval($this->cost) . " кр.";
|
||||||
$btnLink = "/shop.php?buy={$this->id}&rnd=" . mt_rand();
|
$btnLink = "/shop.php?buy={$this->id}&rnd=" . mt_rand();
|
||||||
|
}
|
||||||
echo <<<BTN
|
echo <<<BTN
|
||||||
<p><input type="button" style="background: darkgrey; border: 1px solid grey; border-radius: 2px;" value="{$btnPrice}"
|
<p><input type="button" style="background: darkgrey; border: 1px solid grey; border-radius: 2px;" value="{$btnPrice}"
|
||||||
onclick="location='{$btnLink}'">
|
onclick="location='{$btnLink}'">
|
||||||
|
105
shop.php
105
shop.php
@ -13,35 +13,63 @@ if ($user['battle'] != 0) {
|
|||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
$sellItemId = filter_input(INPUT_GET, 'sellitem');
|
|
||||||
$saleItems = false;
|
$saleItems = false;
|
||||||
|
|
||||||
if ($sellItemId && is_numeric($sellItemId)) {
|
if (false == $saleItems) {
|
||||||
$dress = db::c()->query('SELECT `id`, `name`, `cost`, `type`, `duration`, `maxdur`, `goden`, `dategoden`, `koll` FROM `inventory` WHERE `dressed` = 0 AND `id` = ?i AND `owner` = ?i', $sellItemId, $user['id'])->fetch_assoc();
|
$shopItems = db::c()->query('SELECT `shop`.*,
|
||||||
$price = $dress['cost'] * 1;
|
`magic`.`name` AS `magic_name`,
|
||||||
$kols = '';
|
`magic`.`chanse` AS `magic_chanse`,
|
||||||
if ($dress['koll']) {
|
`magic`.`time` AS `magic_time`,
|
||||||
$price *= $dress['koll'];
|
`magic`.`file` AS `magic_file`,
|
||||||
$kols = '(x' . $dress['koll'] . ')';
|
`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);
|
||||||
}
|
}
|
||||||
destructitem($dress['id']);
|
|
||||||
if ($dress['type'] == 12) {
|
|
||||||
$allcost = round($price * (1 - $dress['duration'] / $dress['maxdur']), 2);
|
|
||||||
} else {
|
} else {
|
||||||
$allcost = round($price - $dress['duration'] * ($dress['cost'] / ($dress['maxdur'] * 10)), 2);
|
$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`
|
||||||
|
|
||||||
|
FROM `inventory` LEFT JOIN `magic` ON `magic` = `magic`.`id` WHERE `dressed` = 0 AND `setsale` = 0 AND `cost` > 0 AND `present` = "?n" AND `tradesale` = 0 AND `podzem` = 0 AND `goden` = 0 AND `owner` = ?i ORDER BY `update` DESC', $_SESSION['uid'], null);
|
||||||
|
|
||||||
|
$iteminfo = [];
|
||||||
|
while ($row = $inventoryItems->fetch_assoc()) {
|
||||||
|
$iteminfo[] = new ShopItem($row);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($dress['goden'] != 0) {
|
|
||||||
$goden_max = $dress['goden'] * 24 * 60;
|
|
||||||
$goden_left = ($dress['dategoden'] - time()) / 60;
|
|
||||||
$per = $goden_left / $goden_max;
|
|
||||||
$allcost = round(($allcost * $per), 2);
|
|
||||||
}
|
}
|
||||||
$user['money'] += $allcost;
|
|
||||||
$deloText = "\"" . $user['login'] . "\" продал в магазин товар : \"" . $dress['name'] . "\" $kols id:(cap" . $dress['id'] . ") [" . $dress['duration'] . "/" . $dress['maxdur'] . "] за " . $allcost . " кр. ";
|
$sellItemId = filter_input(INPUT_GET, 'sell');
|
||||||
db::c()->query('UPDATE `users` SET `money` = ?i WHERE `id` = ?i', $user['money'], $user['id']);
|
|
||||||
db::c()->query('INSERT INTO `delo` (`pers`, `text`, `type`, `date`) VALUES (?i, "?s", 1, ?i)', $user['id'], $deloText, time());
|
if ($sellItemId) {
|
||||||
$status = "Вы продали \"{$dress['name']}\" $kols за " . $allcost . " кр.";
|
$dress = db::c()->query('SELECT `id`, `name`, `cost`, `koll` FROM `inventory` WHERE `dressed` = 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);
|
||||||
|
|
||||||
|
#destructitem($dress['id']);
|
||||||
|
db::c()->query('DELETE FROM `inventory` WHERE `id` = ?i', $dress['id']);
|
||||||
|
|
||||||
|
db::c()->query('UPDATE `users` SET `money` = ?i WHERE `id` = ?i', $allcost, $_SESSION['uid']);
|
||||||
|
$status = "Вы продали «{$dress['name']}» $kols за " . $allcost . " кр.";
|
||||||
|
|
||||||
|
$deloText = "{$user['login']} продал товар «{$dress['name']}»{$kols}id:({$dress['id']}) в магазине за {$allcost} кр.";
|
||||||
|
addToDelo($deloText);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($_GET['buy'])) {
|
if (!empty($_GET['buy'])) {
|
||||||
@ -51,7 +79,6 @@ if (!empty($_GET['buy'])) {
|
|||||||
|
|
||||||
if (($dress['massa'] + $itemWeight['m']) > (get_meshok())) $status = 'Недостаточно места в рюкзаке.';
|
if (($dress['massa'] + $itemWeight['m']) > (get_meshok())) $status = 'Недостаточно места в рюкзаке.';
|
||||||
elseif ($user['money'] >= $dress['cost'] AND ($dress['count'] > 0 OR $dress['count'] == -1)) {
|
elseif ($user['money'] >= $dress['cost'] AND ($dress['count'] > 0 OR $dress['count'] == -1)) {
|
||||||
|
|
||||||
$newItem = [
|
$newItem = [
|
||||||
'prototype' => $dress['id'],
|
'prototype' => $dress['id'],
|
||||||
'owner' => $user['id'],
|
'owner' => $user['id'],
|
||||||
@ -177,24 +204,6 @@ switch ($shopCategoryTypeNumber) {
|
|||||||
$shopCategoryType = "Руны";
|
$shopCategoryType = "Руны";
|
||||||
break;
|
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
@ -232,7 +241,7 @@ FROM `shop` LEFT JOIN `magic` ON `magic` = `magic`.`id` WHERE `count` > 0 AND `c
|
|||||||
<TD align=center>
|
<TD align=center>
|
||||||
<h3><?= $shopCategoryType ?></h3>
|
<h3><?= $shopCategoryType ?></h3>
|
||||||
<?php if ($saleItems): ?>
|
<?php if ($saleItems): ?>
|
||||||
Вы можете продать ваши предметы за 10% от стоимости.
|
Вы можете продать ваши предметы за сущие копейки.
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</TD>
|
</TD>
|
||||||
</TR>
|
</TR>
|
||||||
@ -242,9 +251,8 @@ FROM `shop` LEFT JOIN `magic` ON `magic` = `magic`.`id` WHERE `count` > 0 AND `c
|
|||||||
<?php
|
<?php
|
||||||
if ($saleItems == true) {
|
if ($saleItems == true) {
|
||||||
// Выбираем всё потому что эту выборку потом использует showitem();
|
// Выбираем всё потому что эту выборку потом использует showitem();
|
||||||
$data = db::c()->query('SELECT * FROM `inventory` WHERE `owner` = ?i AND `dressed` = 0 AND `setsale` = 0 AND `cost` > 0 AND `present` = "?s" AND `tradesale` = 0 AND `podzem` = 0 ORDER BY `update` DESC', $user['id'], null);
|
$data = db::c()->query('SELECT * FROM `inventory` WHERE `owner` = ?i AND `dressed` = 0 AND `setsale` = 0 AND `cost` > 0 AND `present` = "?n" AND `tradesale` = 0 AND `podzem` = 0 AND `goden` = 0 ORDER BY `update` DESC', $user['id'], null);
|
||||||
while ($row = $data->fetch_assoc()) {
|
while ($row = $data->fetch_assoc()) {
|
||||||
$row['count'] = 1;
|
|
||||||
$price = $row['cost'] * 0.1;
|
$price = $row['cost'] * 0.1;
|
||||||
if ($row['koll']) {
|
if ($row['koll']) {
|
||||||
$price *= $row['koll'];
|
$price *= $row['koll'];
|
||||||
@ -254,17 +262,12 @@ FROM `shop` LEFT JOIN `magic` ON `magic` = `magic`.`id` WHERE `count` > 0 AND `c
|
|||||||
} else {
|
} else {
|
||||||
$allcost = round($price - $row['duration'] * ($row['cost'] / ($row['maxdur'] * 10)), 2);
|
$allcost = round($price - $row['duration'] * ($row['cost'] / ($row['maxdur'] * 10)), 2);
|
||||||
}
|
}
|
||||||
if ($row['goden'] != 0) {
|
|
||||||
$goden_max = $row['goden'] * 24 * 60;
|
|
||||||
$goden_left = ($row['dategoden'] - time()) / 60;
|
|
||||||
$per = $goden_left / $goden_max;
|
|
||||||
$allcost = round(($allcost * $per), 2);
|
|
||||||
}
|
|
||||||
?>
|
?>
|
||||||
<tr>
|
<tr>
|
||||||
<td align=center style='width: 150px;'>
|
<td align=center style='width: 150px;'>
|
||||||
<img src="i/sh/<?= $row['img'] ?>" border=0>
|
<img src="i/sh/<?= $row['img'] ?>" border=0>
|
||||||
<br><a href="shop.php?sellitem=<?= $row['id'] ?>&sid=&sale=1">продать
|
<br><a href="shop.php?sell=<?= $row['id'] ?>&sid=&sale=1">продать
|
||||||
за <?= $allcost ?></a>
|
за <?= $allcost ?></a>
|
||||||
</td>
|
</td>
|
||||||
<td valign=top class="row">
|
<td valign=top class="row">
|
||||||
|
Loading…
Reference in New Issue
Block a user