Compare commits
4 Commits
73b1f134b2
...
4fd822e644
Author | SHA1 | Date | |
---|---|---|---|
![]() |
4fd822e644 | ||
![]() |
582cce3c17 | ||
![]() |
2f4dfd84cf | ||
![]() |
cb3887b773 |
@ -7,6 +7,7 @@ class InventoryItem extends Item
|
||||
{
|
||||
private $present;
|
||||
private $owner_id;
|
||||
private $db;
|
||||
private const TOO_MANY_ITEMS_IN_SLOTS = 'Критическая ошибка: Переполнение слота!';
|
||||
private const UNKNOWN_ITEM_TYPE = 'Неизвестный тип предмета!';
|
||||
private const REQUIREMENTS_NOT_MET = 'Персонаж не соответствует требованиям!';
|
||||
@ -20,6 +21,7 @@ class InventoryItem extends Item
|
||||
{
|
||||
parent::__construct($row);
|
||||
$this->owner_id = $row->owner_id;
|
||||
$this->db = DBPDO::INIT();
|
||||
}
|
||||
|
||||
public function printInfo()
|
||||
@ -127,4 +129,15 @@ IMG;
|
||||
|
||||
return isset($error) ? $error : true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $itemId
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function destroyItem($itemId): bool
|
||||
{
|
||||
$db = new DBPDO();
|
||||
return $db->execute('delete from inventory where dressed_slot = 0 and owner_id = ? and item_id = ?', [$_SESSION['uid'], $itemId]);
|
||||
}
|
||||
}
|
@ -52,7 +52,7 @@ class CureInjury extends Magic
|
||||
} else {
|
||||
$this->target = new User($this->target);
|
||||
}
|
||||
$this->login = $this->target->login;
|
||||
$this->login = $this->target->getLogin();
|
||||
return ($this->isVisible($caster, $this->target) && $this->isNotDead($caster) && $this->enoughMana($caster) && $this->isNotInBattle($caster));
|
||||
}
|
||||
}
|
@ -224,5 +224,9 @@ INFO;
|
||||
}
|
||||
return $r;
|
||||
}
|
||||
public function showStarSign(): ?string
|
||||
{
|
||||
return parent::showStarSign();
|
||||
}
|
||||
|
||||
}
|
110
functions.php
110
functions.php
@ -468,21 +468,6 @@ function ref_drop()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Уничтожить предмет, принадлежащий игроку, вызывающего функцию.
|
||||
* @param $id - ID предмета игрока.
|
||||
* @throws \Krugozor\Database\Mysql\Exception
|
||||
*/
|
||||
function destructitem($id)
|
||||
{
|
||||
global $user;
|
||||
$item = db::c()->query('SELECT 1 FROM inventory WHERE owner_id = ?i AND item_id = ?i', $user->getId(), $id);
|
||||
if ($item->getNumRows()) {
|
||||
db::c()->query('DELETE FROM `inventory` WHERE `id` = ?i', $id);
|
||||
}
|
||||
}
|
||||
|
||||
// использовать магию
|
||||
function usemagic($id, $target)
|
||||
{
|
||||
@ -543,7 +528,7 @@ function usemagic($id, $target)
|
||||
}
|
||||
if ($bat) {
|
||||
if ($row['maxdur'] <= ($row['duration'] + 1)) {
|
||||
destructitem($row['id']);
|
||||
\Battles\InventoryItem::destroyItem($row['id']);
|
||||
} else {
|
||||
if (!$row['magic']) {
|
||||
db::c()->query('UPDATE `inventory` SET `includemagicdex` =`includemagicdex` - ?i WHERE id = ?i', $bat, $row['id']);
|
||||
@ -667,47 +652,6 @@ function addlog($id, $log)
|
||||
unset($id, $log);
|
||||
}
|
||||
|
||||
function star_sign($date)
|
||||
{
|
||||
/*
|
||||
* 1 aries
|
||||
* 2 taurus
|
||||
* 3 gemini
|
||||
* 4 cancer
|
||||
* 5 leo
|
||||
* 6 virgo
|
||||
* 7 libra
|
||||
* 8 scorpio
|
||||
* 9 sagittarios
|
||||
* 10 capricorn
|
||||
* 11 aquarius
|
||||
* 12 pisches
|
||||
*/
|
||||
$zodiac[356] = "10";
|
||||
$zodiac[326] = "09";
|
||||
$zodiac[296] = "08";
|
||||
$zodiac[266] = "07";
|
||||
$zodiac[235] = "06";
|
||||
$zodiac[203] = "05";
|
||||
$zodiac[172] = "04";
|
||||
$zodiac[140] = "03";
|
||||
$zodiac[111] = "02";
|
||||
$zodiac[78] = "01";
|
||||
$zodiac[51] = "12";
|
||||
$zodiac[20] = "11";
|
||||
$zodiac[0] = "10";
|
||||
$dayOfYear = date("z", strtotime($date));
|
||||
$isLeapYear = date("L", strtotime($date)); //Высокосный?
|
||||
if ($isLeapYear && $dayOfYear > 59) {
|
||||
--$dayOfYear;
|
||||
}
|
||||
foreach ($zodiac as $day => $sign) {
|
||||
if ($dayOfYear > $day) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return $sign;
|
||||
}
|
||||
|
||||
function SolveExp($at_id, $def_id, $damage)
|
||||
{
|
||||
@ -803,55 +747,3 @@ function SolveExp($at_id, $def_id, $damage)
|
||||
|
||||
return round((($baseexp[$def['level']]) * ($def_cost[0] / (($at_cost[0] + $def_cost[0]) / 2)) * ($damage / $def['maxhp']) * $expmf * $mfit * $mfbot * $mfbot2) / 3);
|
||||
}
|
||||
|
||||
/**
|
||||
* Апаем стат или мастерство на единицу.
|
||||
*
|
||||
* @param $name - техническое имя параметра, как в базе.
|
||||
* @param null $param - выбор что повышать.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function addOnePoint($name, $param = null)
|
||||
{
|
||||
$allowed_stats = ['sila', 'lovk', 'inta', 'vinos', 'intel', 'mudra'];
|
||||
$allowed_mastery = ['noj', 'mec', 'dubina', 'topor', 'mfire', 'mwater', 'mair', 'mearth', 'mlight', 'mgray', 'mdark'];
|
||||
$naming = [
|
||||
'sila' => 'Сила',
|
||||
'lovk' => 'Ловкость',
|
||||
'inta' => 'Интуиция',
|
||||
'vinos' => 'Выносливость',
|
||||
'intel' => 'Интеллект',
|
||||
'mudra' => 'Мудрость',
|
||||
'noj' => 'Владение кинжалами',
|
||||
'mec' => 'Владение мечами',
|
||||
'dubina' => 'Владение дубинами',
|
||||
'topor' => 'Владение топорами',
|
||||
'mfire' => 'Магия огня',
|
||||
'mwater' => 'Магия воды',
|
||||
'mair' => 'Магия воздуха',
|
||||
'mearth' => 'Магия земли',
|
||||
'mlight' => 'Магия света',
|
||||
'mgray' => 'Магия серости',
|
||||
'mdark' => 'Магия тьмы',
|
||||
];
|
||||
if ($param == 'stat' && in_array($name, $allowed_stats)) {
|
||||
db::c()->query('UPDATE `users` SET ?f = ?f + 1, `stats` = `stats` - 1 WHERE `id` = ?i', $name, $name, $_SESSION['uid']);
|
||||
echo "<span style='color:darkgreen'>Параметр {$naming[$name]} увеличен на 1 ед.</span>";
|
||||
} elseif ($param == 'mastery' && in_array($name, $allowed_mastery)) {
|
||||
$mastery_level = db::c()->query('SELECT ?f FROM `users` WHERE `id` = ?i', $name, $_SESSION['uid'])->fetch_assoc();
|
||||
if ($mastery_level[$name] < 10) {
|
||||
db::c()->query('UPDATE `users` SET ?f = ?f + 1, `master` = `master` - 1 WHERE `id` = ?i', $name, $name, $_SESSION['uid']);
|
||||
echo "<span style='color:darkgreen'>Параметр {$naming[$name]} увеличен на 1 ед.</span>";
|
||||
} else {
|
||||
echo "<span style='color: maroon;'>Ошибка: параметр достиг максимального значения!</span>";
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function checkIntInRange($int, $min = 1, $max = PHP_INT_MAX)
|
||||
{
|
||||
return (int)filter_var($int, FILTER_VALIDATE_INT, ['options' => ['min_range' => $min, 'max_range' => $max]]);
|
||||
}
|
@ -12,7 +12,7 @@ $vips = [1 => 0.15, 2 => 0.30, 3 => 0.45];
|
||||
function show_item($row, $txt, $place)
|
||||
{
|
||||
if (($row['maxdur'] <= $row['duration']) || ($row['dategoden'] && $row['dategoden'] <= time())) {
|
||||
destructitem($row['id']);
|
||||
\Battles\InventoryItem::destroyItem($row['id']);
|
||||
}
|
||||
$r = '';
|
||||
|
||||
|
11
library.php
11
library.php
@ -211,14 +211,13 @@ if ($_GET['lib_room'] == 'hall' || !$_GET['lib_room']) {
|
||||
addchp('Вы успешно создали свиток <strong>' . $dress['name'] . '</strong>!', '{[]}' . Nick::id($user['id'])->short() . '{[]}');
|
||||
}
|
||||
}
|
||||
echo '<tr><td>Вы стоите в небольшой комнате, от пола до потолка забтиой банками, пробирками, ингредиентами и прочими полезными вещами.
|
||||
Здесь Вы можете собрать предметы по имеющимся у Вас рецептам.<br/><br/><IMG align=left alt="Знак зодиака" height=99 src="i/';
|
||||
//выводим знак зодиака
|
||||
echo star_sign(substr($user['borndate'], 3, 2), substr($user['borndate'], 0, 2));
|
||||
echo '.gif" width=100>';
|
||||
$a = new \Battles\UserInfo($user['id']);
|
||||
echo "<tr><td>Вы стоите в небольшой комнате, от пола до потолка забтиой банками, пробирками, ингредиентами и прочими полезными вещами.
|
||||
Здесь Вы можете собрать предметы по имеющимся у Вас рецептам.<br><br><img align=left alt='Родовой знак' src='i/zodiac/{$a->showStarSign()}.png'";
|
||||
|
||||
//выводим инфо по стихиям
|
||||
echo 'Ваша стихия:';
|
||||
$el = element(star_sign(substr($user['borndate'], 3, 2), substr($user['borndate'], 0, 2)));
|
||||
$el = element($a->showStarSign());
|
||||
switch ($el) {
|
||||
case 'a':
|
||||
echo "<strong><font color=#0198ef><ins>Воздух</ins></font></strong>";
|
||||
|
@ -43,7 +43,7 @@ if ($user['battle'] > 0) {
|
||||
echo "<font color=red><b>Этот свиток нельзя встраивать в предметы!<b></font>";
|
||||
} else {
|
||||
// встраиваем
|
||||
destructitem($svitok['id']);
|
||||
\Battles\InventoryItem::destroyItem($svitok['id']);
|
||||
echo "<font color=red><b>Свиток \"" . $svitok['name'] . "\" удачно встроен в \"" . $dress['name'] . "\"<b></font>";
|
||||
mysql_query("UPDATE `inventory` SET
|
||||
" . ($dress['nintel'] < $svitok['nintel'] ? "`nintel`='" . $svitok['nintel'] . "'," : "") . "
|
||||
|
17
main.php
17
main.php
@ -34,7 +34,6 @@ $edit = $_GET['edit'] ?? null;
|
||||
|
||||
if ($edit) {
|
||||
$ups = $_GET['ups'] ?? null;
|
||||
$upm = $_GET['upm'] ?? null;
|
||||
$use = $_GET['use'] ?? null;
|
||||
$useTarget = $_POST['target'] ?? null;
|
||||
$drop = $_GET['drop'] ?? null;
|
||||
@ -45,9 +44,6 @@ if ($edit) {
|
||||
if ($ups) {
|
||||
$user->addOnePointToStat($ups);
|
||||
}
|
||||
if ($upm) {
|
||||
addOnePoint($upm, 'mastery');
|
||||
}
|
||||
if ($drop) {
|
||||
$items = new DressedItems($_SESSION['uid']);
|
||||
$items->undressItem($drop);
|
||||
@ -60,13 +56,12 @@ if ($edit) {
|
||||
unset($dressing);
|
||||
}
|
||||
if ($destruct) {
|
||||
$q = db::c()->query('SELECT `id`, `dressed`, `name`, `duration`, `maxdur` FROM `inventory` WHERE `owner` = ?i AND `id` = ?i', $_SESSION['uid'], $destruct);
|
||||
if ($q->getNumRows()) {
|
||||
$q = $q->fetch_assoc();
|
||||
if (empty($q['dressed'])) {
|
||||
destructitem($q['id']);
|
||||
GameLogs::addUserLog($user->getId(), $user->getLogin() . ' выбросил предмет ' . $q['name'] . ' id:(cap' . $q['id'] . ')');
|
||||
err('Предмет ' . $q['name'] . ' выброшен.');
|
||||
$q = DBPDO::INIT()->ofetch('select name,dressed_slot from inventory where owner_id = ? and item_id = ?', [$user->getId(), $destruct]);
|
||||
if ($q) {
|
||||
if (empty($q->dressed_slot)) {
|
||||
InventoryItem::destroyItem($destruct);
|
||||
GameLogs::addUserLog($user->getId(), $user->getLogin() . ' выбросил предмет ' . $q->name . ' id:(cap' . $destruct . ')');
|
||||
err('Предмет ' . $q->name . ' выброшен.');
|
||||
} else {
|
||||
err('Ошибка: нельзя выбросить одетый предмет!');
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user