Великое объединение магазинов. #54.

This commit is contained in:
2023-07-29 00:18:04 +03:00
parent ad182a21fe
commit 9de7415f08
19 changed files with 1865 additions and 3125 deletions
+396 -451
View File
@@ -3639,14 +3639,6 @@ class User
return $plid;
}
public function addKr($amount, $uid = 0)
{
if ($uid === 0) {
$uid = $this->info['id'];
}
Db::sql('update users set money = money + ? where id = ?', [$amount, $uid]);
}
public function addNewbot($id, $botDate, $clon, $logins_bot = null, $luser = null, $round = null)
{
if ($clon != null) {
@@ -3907,11 +3899,14 @@ class User
return ItemsModel::addItem($id, $uid, $md, $dn, $mxiznos, $nosudba, $plavka);
}
/*
* $iid Уникальный id прдемета и одновремено флаг что
* покупка из комка.
*/
/**
* @param $sid
* @param $itm
* @param mixed $x количество
* @param $mdata
* @param $vip
* @return string
*/
public function buyItem($sid, $itm, $x, $mdata = null, $vip = false)
{
global $c, $code, $sid;
@@ -3932,7 +3927,7 @@ class User
);
$r = '';
$vip = false;
if ($this->info['allLock'] > time()) {
$r = 'Вам запрещено совершать покупки до ' . date('d.m.y H:i', $this->info['allLock']) . '';
} elseif (isset($i['id'])) {
@@ -4540,13 +4535,11 @@ class User
$r = 'Для покупки доступно ' . $i['max_buy'] . ' шт.';
} elseif ($need_rep > 0) {
$r = 'Вы не заслужили нашего доверия, мы не продадим вам этот товар.';
} elseif ($i['price_1'] * $x > $this->info['money4'] && $zuby == 1) {
$r = 'У вас недостаточно денег.';
} elseif ($mxby == -1) {
$r = 'Максимальное количество покупок для данного предмета исчерпана<br>Возможно купить: ' . $i['max_buy'] . ' шт.';
} elseif ($trn == 0 && $this->info['admin'] == 0) {
$r = 'У вас недостаточно требуемых предметов (не хватает ' . $trnt . ')';
} elseif ($i['price_1'] * $x > $this->info['money'] && $zuby == 0) {
} elseif ($i['price_1'] * $x > $this->info['money']) {
$r = 'У вас недостаточно денег (не хватает ' . ($price - $this->info['money']) . ' кр.)';
} else {
$d = mysql_fetch_array(
@@ -4554,164 +4547,144 @@ class User
'SELECT `id`,`items_id`,`data` FROM `items_main_data` WHERE `items_id` = "' . $i['id'] . '" LIMIT 1'
)
);
if ($zuby == 0) {
$this->info['money'] -= $price;
$this->info['money'] -= $price;
$this->addKr(-$price);
//новая дата
$data = '';
$data .= $d['data'];
if ($mdata != null) {
$data .= '|' . $mdata;
}
$upd = mysql_query(
'UPDATE `users` SET `money` = "' . mysql_real_escape_string(
round($this->info['money'], 2)
) . '",`money4` = "' . mysql_real_escape_string(
round($this->info['money4'], 2)
) . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'
);
if ($upd) {
//новая дата
$data = '';
$data .= $d['data'];
if ($mdata != null) {
$data .= '|' . $mdata;
$j = 0;
$c_itm = 0;
$c_itm_data_a = [];
while ($j < count($detrn)) {
$itm = mysql_fetch_array(
mysql_query(
'SELECT `id`,`item_id`,`1price`,`2price`,`3price`,`uid`,`use_text`,`data`,`inOdet`,`inShop`,`delete`,`iznosNOW`,`iznosMAX`,`gift`,`gtxt1`,`gtxt2`,`kolvo`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`timeOver`,`overType`,`secret_id`,`time_create`,`inGroup`,`dn_delete`,`inTransfer`,`post_delivery`,`lbtl_`,`bexp`,`so`,`blvl` FROM `items_users` WHERE `item_id` = "' . ((int)$detrn[$j][0]) . '" AND `uid` = "' . $this->info['id'] . '" AND (`delete` = "0") AND `inShop` = "0" ORDER BY `inGroup` DESC LIMIT 1'
)
);
if (!empty($itm['data']) && $c_itm == 0) {
$po = ConversionHelper::dataStringToArray($itm['data']);
if (isset($po['sudba'])) {
$c_itm_data_a['sudba'] = $po['sudba'];
}
if (!empty($po['gravi'])) {
$c_itm_data_a['gravi'] = $po['gravi'];
if (isset($po['gravic'])) {
$c_itm_data_a['gravic'] = $po['gravic'];
}
$c_itm++;
}
if (!empty($po['imposed_id']) && $po['imposed_id'] > 0) {
$c_itm_data_a['imposed_id'] = $po['imposed_id'];
if (isset($po['imposed'])) {
$c_itm_data_a['imposed'] = $po['imposed'];
}
if (isset($po['imposed_name'])) {
$c_itm_data_a['imposed_name'] = $po['imposed_name'];
}
if (isset($po['imposed_level'])) {
$c_itm_data_a['imposed_level'] = $po['imposed_level'];
}
if (isset($po['bm_a1'])) {
$c_itm_data_a['bm_a1'] = $po['bm_a1'];
}
$c_itm++;
}
if (!empty($po['spell_id']) && $po['spell_id'] > 0) {
$c_itm_data_a['spell_id'] = $po['spell_id'];
if (isset($po['spell'])) {
$c_itm_data_a['spell'] = $po['spell'];
}
if (isset($po['spell_name'])) {
$c_itm_data_a['spell_name'] = $po['spell_name'];
}
if (isset($po['spell_lvl'])) {
$c_itm_data_a['spell_lvl'] = $po['spell_lvl'];
}
if (isset($po['spell_st_name'])) {
$c_itm_data_a['spell_st_name'] = $po['spell_st_name'];
}
if (isset($po['spell_st_val'])) {
$c_itm_data_a['spell_st_val'] = $po['spell_st_val'];
}
$c_itm++;
}
if (!empty($po['rune_id']) && $po['rune_id'] > 0) {
$c_itm_data_a['rune_id'] = $po['rune_id'];
if (isset($po['rune'])) {
$c_itm_data_a['rune'] = $po['rune'];
}
if (isset($po['rune_name'])) {
$c_itm_data_a['rune_name'] = $po['rune_name'];
}
if (isset($po['rune_lvl'])) {
$c_itm_data_a['rune_lvl'] = $po['rune_lvl'];
}
$c_itm++;
}
if (!empty($po['upatack_id']) && $po['upatack_id'] > 0) {
$c_itm_data_a['upatack_id'] = $po['upatack_id'];
if (isset($po['upatack'])) {
$c_itm_data_a['upatack'] = $po['upatack'];
}
if (isset($po['upatack_name'])) {
$c_itm_data_a['upatack_name'] = $po['upatack_name'];
}
if (isset($po['upatack_lvl'])) {
$c_itm_data_a['upatack_lvl'] = $po['upatack_lvl'];
}
$c_itm++;
}
}
$j = 0;
$c_itm = 0;
$c_itm_data_a = [];
while ($j < count($detrn)) {
$itm = mysql_fetch_array(
$j++;
}
if ($c_itm > 0) {
$data = ConversionHelper::dataStringToArray($data);
// Чарка
if (isset($c_itm_data_a['spell_st_name']) && isset($c_itm_data_a['spell_st_val']) && $c_itm_data_a['spell_st_name'] != '' && $c_itm_data_a['spell_st_val'] != '') {
$data['add_' . $c_itm_data_a['spell_st_name']] = (int)(isset($data['add_' . $c_itm_data_a['spell_st_name']]) ? (int)$data['add_' . $c_itm_data_a['spell_st_name']] : 0) + (int)$c_itm_data_a['spell_st_val'];
}
// Руна
if (isset($c_itm_data_a['rune']) && $c_itm_data_a['rune'] > 0) {
$ritm = mysql_fetch_array(
mysql_query(
'SELECT `id`,`item_id`,`1price`,`2price`,`3price`,`uid`,`use_text`,`data`,`inOdet`,`inShop`,`delete`,`iznosNOW`,`iznosMAX`,`gift`,`gtxt1`,`gtxt2`,`kolvo`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`timeOver`,`overType`,`secret_id`,`time_create`,`inGroup`,`dn_delete`,`inTransfer`,`post_delivery`,`lbtl_`,`bexp`,`so`,`blvl` FROM `items_users` WHERE `item_id` = "' . ((int)$detrn[$j][0]) . '" AND `uid` = "' . $this->info['id'] . '" AND (`delete` = "0") AND `inShop` = "0" ORDER BY `inGroup` DESC LIMIT 1'
'SELECT * FROM `items_main_data` WHERE `items_id` = "' . $c_itm_data_a['rune_id'] . '" LIMIT 1'
)
);
if (isset($itm['data']) && $itm['data'] != '' && $c_itm == 0) {
$po = ConversionHelper::dataStringToArray($itm['data']);
if (isset($po['sudba'])) {
if (isset($po['sudba'])) {
$c_itm_data_a['sudba'] = $po['sudba'];
}
}
if (isset($po['gravi']) && $po['gravi'] != '') {
if (isset($po['gravi'])) {
$c_itm_data_a['gravi'] = $po['gravi'];
}
if (isset($po['gravic'])) {
$c_itm_data_a['gravic'] = $po['gravic'];
}
$c_itm++;
}
if (isset($po['imposed_id']) && $po['imposed_id'] > 0) {
if (isset($po['imposed'])) {
$c_itm_data_a['imposed'] = $po['imposed'];
}
if (isset($po['imposed_id'])) {
$c_itm_data_a['imposed_id'] = $po['imposed_id'];
}
if (isset($po['imposed_name'])) {
$c_itm_data_a['imposed_name'] = $po['imposed_name'];
}
if (isset($po['imposed_level'])) {
$c_itm_data_a['imposed_level'] = $po['imposed_level'];
}
if (isset($po['bm_a1'])) {
$c_itm_data_a['bm_a1'] = $po['bm_a1'];
}
$c_itm++;
}
if (isset($po['spell_id']) && $po['spell_id'] > 0) {
if (isset($po['spell'])) {
$c_itm_data_a['spell'] = $po['spell'];
}
if (isset($po['spell_id'])) {
$c_itm_data_a['spell_id'] = $po['spell_id'];
}
if (isset($po['spell_name'])) {
$c_itm_data_a['spell_name'] = $po['spell_name'];
}
if (isset($po['spell_lvl'])) {
$c_itm_data_a['spell_lvl'] = $po['spell_lvl'];
}
if (isset($po['spell_st_name'])) {
$c_itm_data_a['spell_st_name'] = $po['spell_st_name'];
}
if (isset($po['spell_st_val'])) {
$c_itm_data_a['spell_st_val'] = $po['spell_st_val'];
}
$c_itm++;
}
if (isset($po['rune_id']) && $po['rune_id'] > 0) {
if (isset($po['rune'])) {
$c_itm_data_a['rune'] = $po['rune'];
}
if (isset($po['rune_id'])) {
$c_itm_data_a['rune_id'] = $po['rune_id'];
}
if (isset($po['rune_name'])) {
$c_itm_data_a['rune_name'] = $po['rune_name'];
}
if (isset($po['rune_lvl'])) {
$c_itm_data_a['rune_lvl'] = $po['rune_lvl'];
}
$c_itm++;
}
if (isset($po['upatack_id']) && $po['upatack_id'] > 0) {
if (isset($po['upatack'])) {
$c_itm_data_a['upatack'] = $po['upatack'];
}
if (isset($po['upatack_id'])) {
$c_itm_data_a['upatack_id'] = $po['upatack_id'];
}
if (isset($po['upatack_name'])) {
$c_itm_data_a['upatack_name'] = $po['upatack_name'];
}
if (isset($po['upatack_lvl'])) {
$c_itm_data_a['upatack_lvl'] = $po['upatack_lvl'];
}
$c_itm++;
$j = 0;
$data_r = ConversionHelper::dataStringToArray($ritm['data']);
while ($j < count($this->items['add'])) {
if (isset($data_r['add_' . $this->items['add'][$j]])) {
$data['add_' . $this->items['add'][$j]] += $data_r['add_' . $this->items['add'][$j]];
}
$j++;
}
$j++;
}
if ($c_itm > 0) {
$data = ConversionHelper::dataStringToArray($data);
// Чарка
if (isset($c_itm_data_a['spell_st_name']) && isset($c_itm_data_a['spell_st_val']) && $c_itm_data_a['spell_st_name'] != '' && $c_itm_data_a['spell_st_val'] != '') {
$data['add_' . $c_itm_data_a['spell_st_name']] = (int)(isset($data['add_' . $c_itm_data_a['spell_st_name']]) ? (int)$data['add_' . $c_itm_data_a['spell_st_name']] : 0) + (int)$c_itm_data_a['spell_st_val'];
}
// Руна
if (isset($c_itm_data_a['rune']) && $c_itm_data_a['rune'] > 0) {
$ritm = mysql_fetch_array(
mysql_query(
'SELECT * FROM `items_main_data` WHERE `items_id` = "' . $c_itm_data_a['rune_id'] . '" LIMIT 1'
)
);
$j = 0;
$data_r = ConversionHelper::dataStringToArray($ritm['data']);
while ($j < count($this->items['add'])) {
if (isset($data_r['add_' . $this->items['add'][$j]])) {
$data['add_' . $this->items['add'][$j]] += $data_r['add_' . $this->items['add'][$j]];
}
$j++;
}
}
$data = ConversionHelper::arrayToDataString($data);
$c_itm_data = ConversionHelper::arrayToDataString($c_itm_data_a);
$data .= '|' . $c_itm_data;
}
$i['gift'] = '';
$data = ConversionHelper::arrayToDataString($data);
$c_itm_data = ConversionHelper::arrayToDataString($c_itm_data_a);
$data .= '|' . $c_itm_data;
}
$ix = 1;
$gix = 0;
while ($ix <= $x) {
if ($i['type'] != 71) {
if ($i['iznos'] > 0) {
$i['iznosMAXi'] = $i['iznos'];
}
//
$i['price_2'] = 0;
//
$ins = mysql_query(
'INSERT INTO `items_users` (`1price`,`2price`,`gift`,`overType`,`item_id`,`uid`,`data`,`iznosMAX`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`time_create`) VALUES (
$i['gift'] = '';
$ix = 1;
$gix = 0;
while ($ix <= $x) {
if ($i['type'] != 71) {
if ($i['iznos'] > 0) {
$i['iznosMAXi'] = $i['iznos'];
}
//
$i['price_2'] = 0;
//
$ins = mysql_query(
'INSERT INTO `items_users` (`1price`,`2price`,`gift`,`overType`,`item_id`,`uid`,`data`,`iznosMAX`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`time_create`) VALUES (
"' . $i['price_1'] . '",
"' . $i['price_2'] . '",
"' . $i['gift'] . '",
@@ -4725,76 +4698,68 @@ class User
"' . $this->info['city'] . '",
"' . time() . '",
"' . time() . '")'
);
} else {
mysql_query(
'DELETE FROM `obraz` WHERE `uid` = "' . $this->info['id'] . '" AND `sex` = "' . $i['sex'] . '" AND `img` = "' . str_replace(
'.png', '.gif', $i['img']
) . '" LIMIT 1'
);
$ins = mysql_query(
'INSERT INTO `obraz` (`sex`,`img`,`level`,`uid`,`usr_add`) VALUES ("' . $i['sex'] . '","' . str_replace(
'.png', '.gif', $i['img']
) . '","' . $i['level'] . '","' . $this->info['id'] . '","' . time() . '")'
);
}
if ($ins) {
$gix++;
}
$ix++;
}
if ($ins) {
//Записываем в личное дело что предмет получен
if ($trnt != '' && $i['tr_items'] != '') {
$trnt = ', ' . $trnt;
}
if ($zuby == 0) {
$r = 'Вы приобрели предмет &quot;' . $i['name'] . '&quot; (x' . $x . ' / ' . $gix . ') за ' . $price . ' кр. ' . $trnt . '<br>Предмет успешно добавлен в инвентарь.';
} else {
$r = 'Вы приобрели предмет &quot;' . $i['name'] . '&quot; (x' . $x . ' / ' . $gix . ') за ' . $this->zuby(
$price
) . '. ' . $trnt . '<br>Предмет успешно добавлен в инвентарь.';
}
$j = 0;
while ($j < count($detrn)) {
$ost = ((int)$detrn[$j][1]);
$s4 = mysql_query(
'SELECT `id`,`item_id`,`1price`,`2price`,`3price`,`uid`,`use_text`,`data`,`inOdet`,`inShop`,`delete`,`iznosNOW`,`iznosMAX`,`gift`,`gtxt1`,`gtxt2`,`kolvo`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`timeOver`,`overType`,`secret_id`,`time_create`,`inGroup`,`dn_delete`,`inTransfer`,`post_delivery`,`lbtl_`,`bexp`,`so`,`blvl` FROM `items_users` WHERE `item_id` = "' . ((int)$detrn[$j][0]) . '" AND `uid` = "' . $this->info['id'] . '" AND (`delete` = "0" OR `delete` = "1000") AND `inShop` = "0" AND `inOdet` = "0" ORDER BY `inGroup` DESC LIMIT ' . ((int)$detrn[$j][1]) . ''
);
while ($itm = mysql_fetch_array($s4)) {
//удаляем предмет
mysql_query(
'UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
$j++;
}
mysql_query(
'UPDATE `items_shop` SET `kolvo` = "' . ($i['kolvo'] - $x) . '" WHERE `iid` = "' . $i['iid'] . '" LIMIT 1'
);
$ld = $this->addDelo(
1, $this->info['id'],
'&quot;<font color=green>Shop.' . $this->info['city'] . '</font>&quot;: Приобрел предмет &quot;<strong>' . $i['name'] . '</strong>&quot; (x' . $x . ') [#' . $i['iid'] . '] за <strong>' . $price . '</strong> кр.',
time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0
);
} else {
//Записываем в личное дело что предмет не получен
$r = 'Вам не удалось приобрести &quot;' . $i['name'] . '&quot;. Администрация магазина в &quot;' . $this->city_name[$this->info['city']] . '&quot; должна Вам ' . $price . ' кр.<br>Приносим свои извинения за неудобства.';
$ld = $this->addDelo(
1, $this->info['id'],
'&quot;<font color=green>Shop.' . $this->info['city'] . '</font>&quot;: не удалось приобрести предмет #' . $i['iid'] . '. К возрату: <strong>' . $price . '</strong> кр.',
time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0
mysql_query(
'DELETE FROM `obraz` WHERE `uid` = "' . $this->info['id'] . '" AND `sex` = "' . $i['sex'] . '" AND `img` = "' . str_replace(
'.png', '.gif', $i['img']
) . '" LIMIT 1'
);
$ins = mysql_query(
'INSERT INTO `obraz` (`sex`,`img`,`level`,`uid`,`usr_add`) VALUES ("' . $i['sex'] . '","' . str_replace(
'.png', '.gif', $i['img']
) . '","' . $i['level'] . '","' . $this->info['id'] . '","' . time() . '")'
);
if (!$ld) {
echo '<div>Ошибка, невозможно добавить запись в /db/usersDelo/!</div>';
}
}
} else {
$r = 'Вам не удалось приобрести предмет...';
if ($ins) {
$gix++;
}
$ix++;
}
if ($ins) {
//Записываем в личное дело что предмет получен
if ($trnt != '' && $i['tr_items'] != '') {
$trnt = ', ' . $trnt;
}
$r = 'Вы приобрели предмет &quot;' . $i['name'] . '&quot; (x' . $x . ' / ' . $gix . ') за ' . $price . ' кр. ' . $trnt . '<br>Предмет успешно добавлен в инвентарь.';
$j = 0;
while ($j < count($detrn)) {
$ost = ((int)$detrn[$j][1]);
$s4 = mysql_query(
'SELECT `id`,`item_id`,`1price`,`2price`,`3price`,`uid`,`use_text`,`data`,`inOdet`,`inShop`,`delete`,`iznosNOW`,`iznosMAX`,`gift`,`gtxt1`,`gtxt2`,`kolvo`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`timeOver`,`overType`,`secret_id`,`time_create`,`inGroup`,`dn_delete`,`inTransfer`,`post_delivery`,`lbtl_`,`bexp`,`so`,`blvl` FROM `items_users` WHERE `item_id` = "' . ((int)$detrn[$j][0]) . '" AND `uid` = "' . $this->info['id'] . '" AND (`delete` = "0" OR `delete` = "1000") AND `inShop` = "0" AND `inOdet` = "0" ORDER BY `inGroup` DESC LIMIT ' . ((int)$detrn[$j][1]) . ''
);
while ($itm = mysql_fetch_array($s4)) {
//удаляем предмет
mysql_query(
'UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
$j++;
}
mysql_query(
'UPDATE `items_shop` SET `kolvo` = "' . ($i['kolvo'] - $x) . '" WHERE `iid` = "' . $i['iid'] . '" LIMIT 1'
);
$ld = $this->addDelo(
1, $this->info['id'],
'&quot;<font color=green>Shop.' . $this->info['city'] . '</font>&quot;: Приобрел предмет &quot;<strong>' . $i['name'] . '</strong>&quot; (x' . $x . ') [#' . $i['iid'] . '] за <strong>' . $price . '</strong> кр.',
time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0
);
} else {
//Записываем в личное дело что предмет не получен
$r = 'Вам не удалось приобрести &quot;' . $i['name'] . '&quot;. Администрация магазина в &quot;' . $this->city_name[$this->info['city']] . '&quot; должна Вам ' . $price . ' кр.<br>Приносим свои извинения за неудобства.';
$ld = $this->addDelo(
1, $this->info['id'],
'&quot;<font color=green>Shop.' . $this->info['city'] . '</font>&quot;: не удалось приобрести предмет #' . $i['iid'] . '. К возрату: <strong>' . $price . '</strong> кр.',
time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0
);
if (!$ld) {
echo '<div>Ошибка, невозможно добавить запись в /db/usersDelo/!</div>';
}
}
}
} else { // Стандартная покупка предмета
if ($i['kolvo'] < $x) {
@@ -4886,83 +4851,57 @@ class User
}
}
$zuby = 0;
if (isset($_GET['zuby']) && $i['level'] < 8 && Config::get('zuby') == true) {
$zuby = 1;
}
$d = mysql_fetch_array(
mysql_query(
'SELECT `id`,`items_id`,`data` FROM `items_main_data` WHERE `items_id` = "' . $i['id'] . '" LIMIT 1'
)
);
$po = ConversionHelper::dataStringToArray($d['data']);
if (!empty($d['data'])) {
$po = ConversionHelper::dataStringToArray($d['data']);
}
if ($zuby == 1 && $po['tr_lvl'] > 7) {
$r = 'Данный предмет нельзя приобрести за зубы.';
} elseif (!isset($this->sid_zuby[$sid]) && $zuby == 1) {
$r = 'Данный предмет нельзя приобрести за зубы.';
} elseif ($zuby == 1 && $i['nozuby'] == 1) {
$r = 'Данный предмет нельзя приобрести за зубы.';
} elseif ($i['max_buy'] < $x && $i['max_buy'] > 0) {
if ($i['max_buy'] < $x && $i['max_buy'] > 0) {
$r = 'Для покупки доступно ' . $i['max_buy'] . ' шт.';
} elseif (isset($need_rep) && $need_rep == 0) {
$r = 'Вы не заслужили нашего доверия, мы не продадим вам этот товар.';
} elseif ($zuby == 1 && $this->info['money4'] < $i['price_1']) {
$r = 'У вас недостаточно зубов.';
} elseif ($i['price_1'] * $x > $this->info['money4'] && $zuby == 1) {
$r = 'У вас недостаточно денег.';
} elseif ($mxby == -1) {
$r = 'Максимальное количество покупок для данного предмета исчерпана<br>Возможно купить: ' . $i['max_buy'] . ' шт.';
} elseif ($trn == 0 && $this->info['admin'] == 0) {
$r = 'У вас недостаточно требуемых предметов (не хватает ' . $trnt . ')';
} elseif ($i['price_1'] * $x > $this->info['money'] && $zuby == 0) {
} elseif ($i['price_1'] * $x > $this->info['money']) {
$r = 'У вас недостаточно денег (не хватает ' . ($price - $this->info['money']) . ' кр.)';
} else {
if ($zuby == 0) {
$this->info['money'] -= $price;
} else {
$this->info['money4'] -= $price;
$this->info['money'] -= $price;
$this->addKr(-$price);
//новая дата
$data = '';
$data .= $d['data'];
$data = str_replace('sudba=1', 'sudba=' . $this->info['login'], $data);
if ($mdata != null) {
$data .= '|' . $mdata;
}
$upd = mysql_query(
'UPDATE `users` SET `money` = "' . mysql_real_escape_string(
round($this->info['money'], 2)
) . '",`money4` = "' . mysql_real_escape_string(
round($this->info['money4'], 2)
) . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'
);
if ($upd) {
//новая дата
$data = '';
$data .= $d['data'];
$data = str_replace('sudba=1', 'sudba=' . $this->info['login'], $data);
if ($mdata != null) {
$data .= '|' . $mdata;
}
$i['gift'] = '';
$i['gift'] = '';
if ($zuby == 1) {
$i['gift'] = '1';
$data .= '|nosale=1|zazuby=' . round($price / $x, 2) . '';
}
if ($sid == 404) {
$data .= '|nosale=1|notransfer=1|fromshop=404|sudba=1';
}
if ($sid == 404) {
$data .= '|nosale=1|notransfer=1|fromshop=404|sudba=1';
}
$ix = 1;
$gix = 0;
while ($ix <= $x) {
if ($i['type'] != 71) {
if ($i['iznos'] > 0) {
$i['iznosMAXi'] = $i['iznos'];
}
//
$i['price_2'] = 0;
//
$ins = mysql_query(
'INSERT INTO `items_users` (`1price`,`2price`,`gift`,`overType`,`item_id`,`uid`,`data`,`iznosMAX`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`time_create`) VALUES (
$ix = 1;
$gix = 0;
while ($ix <= $x) {
if ($i['type'] != 71) {
if ($i['iznos'] > 0) {
$i['iznosMAXi'] = $i['iznos'];
}
//
$i['price_2'] = 0;
//
$ins = mysql_query(
'INSERT INTO `items_users` (`1price`,`2price`,`gift`,`overType`,`item_id`,`uid`,`data`,`iznosMAX`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`time_create`) VALUES (
"' . $i['price_1'] . '",
"' . $i['price_2'] . '",
"' . $i['gift'] . '",
@@ -4976,127 +4915,112 @@ class User
"' . $this->info['city'] . '",
"' . time() . '",
"' . time() . '")'
);
} else {
mysql_query(
'DELETE FROM `obraz` WHERE `uid` = "' . $this->info['id'] . '" AND `sex` = "' . $i['sex'] . '" AND `img` = "' . str_replace(
'.png', '.gif', $i['img']
) . '" LIMIT 1'
);
$ins = mysql_query(
'INSERT INTO `obraz` (`sex`,`img`,`level`,`uid`,`usr_add`) VALUES ("' . $i['sex'] . '","' . str_replace(
'.png', '.gif', $i['img']
) . '","' . $i['level'] . '","' . $this->info['id'] . '","' . time() . '")'
);
}
if ($ins) {
$gix++;
}
$ix++;
}
if ($ins) {
//Записываем в личное дело что предмет получен
if ($trnt != '' && $i['tr_items'] != '') {
$trnt = ', ' . $trnt;
}
if ($zuby == 0) {
$r = 'Вы приобрели предмет &quot;' . $i['name'] . '&quot; (x' . $x . ' / ' . $gix . ') за ' . $price . ' кр. ' . $trnt . '<br>Предмет успешно добавлен в инвентарь.';
} else {
$r = 'Вы приобрели предмет &quot;' . $i['name'] . '&quot; (x' . $x . ' / ' . $gix . ') за ' . $this->zuby(
$price
) . '. ' . $trnt . '<br>Предмет успешно добавлен в инвентарь.';
}
$zx = 0;
$rs = 0;
while ($zx < $x) {
if (($sid == 1 || $sid == 5) && $i['level'] >= 4 && round($price / $x) > 25) {
if ($this->stats['shopSale'] == 0 && !Config::get('nosanich')) {
//Выдаем странички Саныча в гос магазине и канаве
$prmn = 0; //дополнительный бонус
$prmn = (1 - (pow(0.5, ($price / $x / 200)))) * 100;
$prmn = round(20 / 100 * $prmn);
if (rand(0, 100) < 20 + $prmn && rand(0, 100) > 80 - $prmn) {
//3143 - 3192
if (rand(0, 100) < 20 + $prmn && rand(0, 100) > 80 - $prmn) {
//обложка
$gitm = rand(3193, 3195);
} else {
$gitm = rand(3143, 3192);
}
if ($gitm == 3193) {
$gitm = 3194;
}
$this->addItem($gitm, $this->info['id']);
$rs++;
}
}
}
$zx++;
}
if ($rs > 1) {
if (rand(0, 1) == 1) {
$r .= ' Предмет был завернут в какую-то бумажку. (x' . $rs . ')';
} elseif (rand(0, 1)) {
$r .= ' Предмет был завернут в странный свиток. (x' . $rs . ')';
} else {
$r .= ' К предмету была прикреплена какая-та бумажка. (x' . $rs . ')';
}
} elseif ($rs > 0) {
if (rand(0, 1) == 1) {
$r .= ' Предмет был завернут в какую-то бумажку.';
} elseif (rand(0, 1)) {
$r .= ' Предмет был завернут в странный свиток.';
} else {
$r .= ' К предмету была прикреплена какая-та бумажка.';
}
}
$j = 0;
while ($j < count($detrn)) {
$ost = ((int)$detrn[$j][1]);
$s4 = mysql_query(
'SELECT `id`,`item_id`,`1price`,`2price`,`3price`,`uid`,`use_text`,`data`,`inOdet`,`inShop`,`delete`,`iznosNOW`,`iznosMAX`,`gift`,`gtxt1`,`gtxt2`,`kolvo`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`timeOver`,`overType`,`secret_id`,`time_create`,`inGroup`,`dn_delete`,`inTransfer`,`post_delivery`,`lbtl_`,`bexp`,`so`,`blvl` FROM `items_users` WHERE `item_id` = "' . ((int)$detrn[$j][0]) . '" AND `uid` = "' . $this->info['id'] . '" AND (`delete` = "0" OR `delete` = "1000") AND `inShop` = "0" AND `inOdet` = "0" ORDER BY `inGroup` DESC LIMIT ' . ((int)$detrn[$j][1]) . ''
);
while ($itm = mysql_fetch_array($s4)) {
//удаляем предмет
mysql_query(
'UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
$j++;
}
mysql_query(
'UPDATE `items_shop` SET `kolvo` = "' . ($i['kolvo'] - $x) . '" WHERE `iid` = "' . $i['iid'] . '" LIMIT 1'
);
$zuby_inf = '';
if ($zuby == 1) {
$zuby_inf = ' <font color=red><small>(За зубы)</small></font>';
}
$ld = $this->addDelo(
1, $this->info['id'],
'&quot;<font color=green>Shop.' . $this->info['city'] . '</font>&quot;: Приобрел предмет &quot;<strong>' . $i['name'] . '</strong>&quot; (x' . $x . ') [#' . $i['iid'] . '] за <strong>' . $price . '</strong> кр.' . $zuby_inf . '',
time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0
);
} else {
//Записываем в личное дело что предмет не получен
$r = 'Вам не удалось приобрести &quot;' . $i['name'] . '&quot;. Администрация магазина в &quot;' . $this->city_name[$this->info['city']] . '&quot; должна Вам ' . $price . ' кр.<br>Приносим свои извинения за неудобства.';
$ld = $this->addDelo(
1, $this->info['id'],
'&quot;<font color=green>Shop.' . $this->info['city'] . '</font>&quot;: не удалось приобрести предмет #' . $i['iid'] . '. К возрату: <strong>' . $price . '</strong> кр.',
time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0
mysql_query(
'DELETE FROM `obraz` WHERE `uid` = "' . $this->info['id'] . '" AND `sex` = "' . $i['sex'] . '" AND `img` = "' . str_replace(
'.png', '.gif', $i['img']
) . '" LIMIT 1'
);
if (!$ld) {
echo '<div>Ошибка, невозможно добавить запись в /db/usersDelo/!</div>';
$ins = mysql_query(
'INSERT INTO `obraz` (`sex`,`img`,`level`,`uid`,`usr_add`) VALUES ("' . $i['sex'] . '","' . str_replace(
'.png', '.gif', $i['img']
) . '","' . $i['level'] . '","' . $this->info['id'] . '","' . time() . '")'
);
}
if ($ins) {
$gix++;
}
$ix++;
}
if ($ins) {
//Записываем в личное дело что предмет получен
if ($trnt != '' && $i['tr_items'] != '') {
$trnt = ', ' . $trnt;
}
$r = 'Вы приобрели предмет &quot;' . $i['name'] . '&quot; (x' . $x . ' / ' . $gix . ') за ' . $price . ' кр. ' . $trnt . '<br>Предмет успешно добавлен в инвентарь.';
$zx = 0;
$rs = 0;
while ($zx < $x) {
if (($sid == 1 || $sid == 5) && $i['level'] >= 4 && round($price / $x) > 25 && $this->stats['shopSale'] == 0 && !Config::get('nosanich')) {
//Выдаем странички Саныча в гос магазине и канаве
$prmn = 0; //дополнительный бонус
$prmn = (1 - (pow(0.5, ($price / $x / 200)))) * 100;
$prmn = round(20 / 100 * $prmn);
if (rand(0, 100) < 20 + $prmn && rand(0, 100) > 80 - $prmn) {
//3143 - 3192
if (rand(0, 100) < 20 + $prmn && rand(0, 100) > 80 - $prmn) {
//обложка
$gitm = rand(3193, 3195);
} else {
$gitm = rand(3143, 3192);
}
if ($gitm == 3193) {
$gitm = 3194;
}
$this->addItem($gitm, $this->info['id']);
$rs++;
}
}
$zx++;
}
if ($rs > 1) {
if (rand(0, 1) == 1) {
$r .= ' Предмет был завернут в какую-то бумажку. (x' . $rs . ')';
} elseif (rand(0, 1)) {
$r .= ' Предмет был завернут в странный свиток. (x' . $rs . ')';
} else {
$r .= ' К предмету была прикреплена какая-та бумажка. (x' . $rs . ')';
}
} elseif ($rs > 0) {
if (rand(0, 1) == 1) {
$r .= ' Предмет был завернут в какую-то бумажку.';
} elseif (rand(0, 1)) {
$r .= ' Предмет был завернут в странный свиток.';
} else {
$r .= ' К предмету была прикреплена какая-та бумажка.';
}
}
$j = 0;
while ($j < count($detrn)) {
$ost = ((int)$detrn[$j][1]);
$s4 = mysql_query(
'SELECT `id`,`item_id`,`1price`,`2price`,`3price`,`uid`,`use_text`,`data`,`inOdet`,`inShop`,`delete`,`iznosNOW`,`iznosMAX`,`gift`,`gtxt1`,`gtxt2`,`kolvo`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`timeOver`,`overType`,`secret_id`,`time_create`,`inGroup`,`dn_delete`,`inTransfer`,`post_delivery`,`lbtl_`,`bexp`,`so`,`blvl` FROM `items_users` WHERE `item_id` = "' . ((int)$detrn[$j][0]) . '" AND `uid` = "' . $this->info['id'] . '" AND (`delete` = "0" OR `delete` = "1000") AND `inShop` = "0" AND `inOdet` = "0" ORDER BY `inGroup` DESC LIMIT ' . ((int)$detrn[$j][1]) . ''
);
while ($itm = mysql_fetch_array($s4)) {
//удаляем предмет
mysql_query(
'UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
$j++;
}
mysql_query(
'UPDATE `items_shop` SET `kolvo` = "' . ($i['kolvo'] - $x) . '" WHERE `iid` = "' . $i['iid'] . '" LIMIT 1'
);
$ld = $this->addDelo(
1, $this->info['id'],
'&quot;<font color=green>Shop.' . $this->info['city'] . '</font>&quot;: Приобрел предмет &quot;<strong>' . $i['name'] . '</strong>&quot; (x' . $x . ') [#' . $i['iid'] . '] за <strong>' . $price . '</strong> кр.',
time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0
);
} else {
$r = 'Вам не удалось приобрести предмет...';
//Записываем в личное дело что предмет не получен
$r = 'Вам не удалось приобрести &quot;' . $i['name'] . '&quot;. Администрация магазина в &quot;' . $this->city_name[$this->info['city']] . '&quot; должна Вам ' . $price . ' кр.<br>Приносим свои извинения за неудобства.';
$ld = $this->addDelo(
1, $this->info['id'],
'&quot;<font color=green>Shop.' . $this->info['city'] . '</font>&quot;: не удалось приобрести предмет #' . $i['iid'] . '. К возрату: <strong>' . $price . '</strong> кр.',
time(), $this->info['city'], 'Shop.' . $this->info['city'] . '', (int)$price, 0
);
if (!$ld) {
echo '<div>Ошибка, невозможно добавить запись в /db/usersDelo/!</div>';
}
}
}
}
@@ -5106,59 +5030,37 @@ class User
return '<div align="left">' . $r . '</div>';
}
public function addDelo($type, $uid, $txt, $tm, $ct, $frm, $mo, $mi, $vvv = false)
/*
* $iid Уникальный id прдемета и одновремено флаг что
* покупка из комка.
*/
/**
* @param $type
* @param $uid
* @param $txt
* @param @deprecated $tm
* @param @deprecated $ct
* @param $frm
* @param $mo
* @param @deprecated $mi
* @param $vvv
* @return bool
* @deprecated использовать Delo::add().
*/
public function addDelo($type, $uid, $txt, $tm, $ct, $frm, $mo, $mi, $vvv = false): bool
{
return Db::sql(
'insert into users_delo (uid, dop, time, city, text, login, `delete`, ip, moneyOut, type, no_right) values (?,?,?,?,?,?,?,?,?,?,?)',
[
$uid,
$vvv,
$tm,
$ct,
$txt,
$frm,
0,
$_SERVER['HTTP_X_REAL_IP'],
$mo,
$type,
'',
]
);
$dop = $vvv ?: '';
Delo::add($type, $frm, $uid, $txt, $mo, $dop);
return true;
}
public function zuby($v, $t = 0): string
public function addKr($amount, $uid = 0)
{
$r = '';
if ($v < 0) {
$v = 0;
if ($uid === 0) {
$uid = $this->info['id'];
}
if ($t == 0) {
$names[] = ' <img height=7 title=Гнилой&nbsp;Зуб src=' . Config::img() . '/zub_low1.gif />';
$names[] = ' <img height=7 title=Нормальный&nbsp;Зуб src=' . Config::img() . '/zub_low2.gif />';
$names[] = ' <img height=7 title=Белый&nbsp;Зуб src=' . Config::img() . '/zub_low3.gif />';
$names[] = ' <img height=7 title=Золотой&nbsp;Зуб src=' . Config::img() . '/zub_low4.gif />';
} else {
$names[] = ' <img style=vertical-align:baseline height=7 title=Гнилой&nbsp;Зуб src=' . Config::img() . '/zub_low1.gif />';
$names[] = ' <img style=vertical-align:baseline height=7 title=Нормальный&nbsp;Зуб src=' . Config::img() . '/zub_low2.gif />';
$names[] = ' <img style=vertical-align:baseline height=7 title=Белый&nbsp;Зуб src=' . Config::img() . '/zub_low3.gif />';
$names[] = ' <img style=vertical-align:baseline height=7 title=Золотой&nbsp;Зуб src=' . Config::img() . '/zub_low4.gif />';
}
$int = $v;
do {
$mod = $int % 10;
$int = floor($int / 10);//или быстрее $int = ($int-$mod)/10;
$r = array_shift($names) . "" . $mod . $r;
} while ($int);
$ost = explode('.', $v);
$ost = $ost[1];
if (empty($ost)) {
$ost = '00';
}
$r .= '.' . $ost;
return $r;
Db::sql('update users set money = money + ? where id = ?', [$amount, $uid]);
}
public function newAct($test): bool
@@ -5973,6 +5875,41 @@ class User
}
}
public function zuby($v, $t = 0): string
{
$r = '';
if ($v < 0) {
$v = 0;
}
if ($t == 0) {
$names[] = ' <img height=7 title=Гнилой&nbsp;Зуб src=' . Config::img() . '/zub_low1.gif />';
$names[] = ' <img height=7 title=Нормальный&nbsp;Зуб src=' . Config::img() . '/zub_low2.gif />';
$names[] = ' <img height=7 title=Белый&nbsp;Зуб src=' . Config::img() . '/zub_low3.gif />';
$names[] = ' <img height=7 title=Золотой&nbsp;Зуб src=' . Config::img() . '/zub_low4.gif />';
} else {
$names[] = ' <img style=vertical-align:baseline height=7 title=Гнилой&nbsp;Зуб src=' . Config::img() . '/zub_low1.gif />';
$names[] = ' <img style=vertical-align:baseline height=7 title=Нормальный&nbsp;Зуб src=' . Config::img() . '/zub_low2.gif />';
$names[] = ' <img style=vertical-align:baseline height=7 title=Белый&nbsp;Зуб src=' . Config::img() . '/zub_low3.gif />';
$names[] = ' <img style=vertical-align:baseline height=7 title=Золотой&nbsp;Зуб src=' . Config::img() . '/zub_low4.gif />';
}
$int = $v;
do {
$mod = $int % 10;
$int = floor($int / 10);//или быстрее $int = ($int-$mod)/10;
$r = array_shift($names) . "" . $mod . $r;
} while ($int);
$ost = explode('.', $v);
$ost = $ost[1];
if (empty($ost)) {
$ost = '00';
}
$r .= '.' . $ost;
return $r;
}
public function price($vl)
{
if ($vl == round($vl)) {
@@ -10925,6 +10862,14 @@ LIMIT 1'
return number_format($v, 2, '.', ' ');
}
public function addVoinstvennost($amount, $uid = 0)
{
if ($uid === 0) {
$uid = $this->info['id'];
}
Db::sql('update rep set rep3 = rep3 + ? where id = ?', [$amount, $uid]);
}
/**
* Эта функция сломана! Формулы hp и mp в любых условиях выдают числа около 1000 за раз, в результате
* любое восстановление - практически моментальное. 12.07.2022 Инс.