346 lines
17 KiB
PHP
346 lines
17 KiB
PHP
<?php
|
||
|
||
/* @var $u User */
|
||
|
||
use Core\Config;
|
||
use Core\Db;
|
||
use Model\EkrExchangeRates;
|
||
use User\UserIp;
|
||
|
||
if (!defined('GAME')) {
|
||
die();
|
||
}
|
||
|
||
?>
|
||
<script>
|
||
let elem = document.getElementById('se-pre-con');
|
||
elem.parentNode.removeChild(elem);
|
||
|
||
function openMod(title, dat) {
|
||
const d = document.getElementById('useMagic');
|
||
if (!d) {
|
||
return;
|
||
}
|
||
document.getElementById('modtitle').innerHTML = '<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td valign="top">' + title + '</td><td width="30" valign="top"><div align="right"><a title="Закрыть окно" onClick="closeMod(); return false;" href="#">x</a></div></td></tr></table>';
|
||
document.getElementById('moddata').innerHTML = dat;
|
||
d.style.display = '';
|
||
}
|
||
|
||
function closeMod() {
|
||
const d = document.getElementById('useMagic');
|
||
if (!d) {
|
||
return;
|
||
}
|
||
document.getElementById('modtitle').innerHTML = '';
|
||
document.getElementById('moddata').innerHTML = '';
|
||
d.style.display = 'none';
|
||
}
|
||
</script>
|
||
<script src='<?= Config::img() ?>/js/commoninf.js'></script>
|
||
<style>
|
||
.modpow {
|
||
background-color: #ddd5bf;
|
||
border: solid 1px #776f59;
|
||
position: absolute;
|
||
left: 50px;
|
||
top: 186px;
|
||
}
|
||
|
||
.mt {
|
||
background-color: #b1a993;
|
||
padding: 5px 10px;
|
||
}
|
||
|
||
.md {
|
||
padding: 10px;
|
||
}
|
||
</style>
|
||
|
||
<div id="useMagic" style="display:none;" class="modpow">
|
||
<div class="mt" id="modtitle"></div>
|
||
<div class="md" id="moddata"></div>
|
||
</div>
|
||
|
||
<div style="text-align: right;">
|
||
<INPUT TYPE="button" onclick="location.href='main.php?alhp=1';" class="btn" value="Обновить" title="Обновить">
|
||
<INPUT TYPE="button" onclick="location.href='main.php';" class="btn" value="Вернуться" title="Вернуться">
|
||
</div>
|
||
|
||
<?php
|
||
$exchangeToday = new EkrExchangeRates();
|
||
$ba = Db::getRow('select * from bank_alh where uid = ?', [$u->info['id']]);
|
||
|
||
if (isset($ba['id'])) {
|
||
?>
|
||
<table style="width: 320px;">
|
||
<tr>
|
||
<td>
|
||
<h4>На алхимических счетах:</h4>
|
||
<b><?= $ba['ekr'] ?></b> ЕКР
|
||
<hr/>
|
||
<?php
|
||
$ucur = round($exchangeToday->oneEkrInUSD() / 100 * (100 - $ba['procent']), 2);
|
||
?>
|
||
Персональный курс: <b><?= $ucur ?></b> $ = 1 Еврокредит.
|
||
<hr/>
|
||
<form method="post" action="/main.php?alhp=1">
|
||
<?php
|
||
if (isset($_POST['buy_ekr'])) {
|
||
$uba = Db::getRow('select * from users where login = ? and banned = 0', [$_POST['buy_ekr']]);
|
||
$uba['uid'] = $uba['id'];
|
||
if (isset($uba['id'])) {
|
||
echo 'Покупатель: ' . $u->microLogin($uba['uid']) . '<br>';
|
||
} else {
|
||
echo '<span style="color: red;">Персонаж заблокирован, либо не найден.</span><hr>';
|
||
unset($_POST['buy_ekr']);
|
||
}
|
||
echo '<hr>';
|
||
if (isset($uba['id'])) {
|
||
|
||
$_POST['buy4ekr'] = round($_POST['buy4ekr'], 2);
|
||
|
||
$bns = [
|
||
[0, 0, 0],
|
||
[10, 1, 0],
|
||
[50, 2, 0],
|
||
[100, 3, 0],
|
||
[200, 4, 0],
|
||
[300, 5, 0],
|
||
[400, 6, 0],
|
||
[500, 7, 0],
|
||
[600, 8, 0],
|
||
[700, 9, 0],
|
||
[800, 10, 0],
|
||
[900, 11, 0],
|
||
[1000, 13, 1],
|
||
[1100, 15, 2],
|
||
[1200, 17, 3],
|
||
[1300, 19, 4],
|
||
[1500, 21, 5],
|
||
[1700, 23, 6],
|
||
[2000, 25, 7],
|
||
[2500, 27, 8],
|
||
[3000, 30, 9],
|
||
];
|
||
|
||
$bns2 = [
|
||
[0, 0],
|
||
[10, 10],
|
||
[20, 10],
|
||
[30, 10],
|
||
[40, 10],
|
||
[50, 10],
|
||
[60, 10],
|
||
[70, 10],
|
||
[80, 10],
|
||
[90, 10],
|
||
[100, 20],
|
||
];
|
||
|
||
$ball = Db::getValue('select sum(ekr) from pay_operation where uid = ? and good > 0', [$uba['id']]);
|
||
|
||
$i = 0;
|
||
while ($i < count($bns)) {
|
||
if (isset($bns[$i][0]) && $ball > $bns[$i][0]) {
|
||
$b1 = $i;
|
||
}
|
||
$i++;
|
||
}
|
||
|
||
$i = 0;
|
||
while ($i < count($bns2)) {
|
||
if (isset($bns2[$i][0]) && $_POST['buy4ekr'] >= $bns2[$i][0]) {
|
||
$b2 = $i;
|
||
}
|
||
$i++;
|
||
}
|
||
|
||
//Бонус опытовый, первичный и накопительный
|
||
$out_ekr = $_POST['buy4ekr'];
|
||
$out_ekr0 = $_POST['buy4ekr'];
|
||
//
|
||
$out_ekr += round($out_ekr0 / 100 * $bns[$b1][1], 2);
|
||
$i = 0;
|
||
while ($i < count($bns2)) {
|
||
if (isset($bns2[$i][0]) && $out_ekr >= $bns2[$i][0]) {
|
||
$b2_2 = $i;
|
||
}
|
||
$i++;
|
||
}
|
||
$out_ekr += round($out_ekr0 / 100 * $bns2[$b2_2][1], 2);
|
||
if ($ball == 0) {
|
||
$out_ekr += round($out_ekr0 / 100 * 20, 2);
|
||
}
|
||
|
||
if (isset($_POST['buy4ekr']) && $_POST['buy4ekr'] < 0.01) {
|
||
echo '<span style="color: red;">Минимальная сумма продажи: 0.01 екр.</span><hr>';
|
||
unset($_POST['buy4ekr']);
|
||
} elseif ($_POST['buy4ekr'] > $ba['ekr']) {
|
||
echo '<span style="color: red;">Недостаточно средств на счете</span><hr>';
|
||
unset($_POST['buy4ekr']);
|
||
}
|
||
if (isset($_POST['buygoodluck'])) {
|
||
echo '<script>alert("Продажа на сумму ' . $_POST['buy4ekr'] . ' екр. была совершена успешно!");location.href="main.php?alhp=1";</script>';
|
||
$ba['ekr'] -= $_POST['buy4ekr'];
|
||
$ba['USD'] += round($_POST['buy4ekr'] * $ucur, 2);
|
||
Db::sql('update bank_alh set ekr = ?, USD = ? where id = ?', [$ba['ekr'], $ba['USD'], $ba['id']]);
|
||
$u->addEkr($out_ekr, $uba['id']);
|
||
|
||
$money = round($_POST['buy4ekr'] * $exchangeToday->oneEkrInRUB(), 2);
|
||
$money = round($money / 100 * (100 - $ba['procent']), 2);
|
||
|
||
|
||
$user = Db::getRow('select id, login, city, sex, room, host_reg from users where id = ?', [$uba['uid']]);
|
||
Db::sql('insert into pay_operation (uid, ekr, time, good, var, ref, ref2) values (?,?,unix_timestamp(),unix_timestamp(),?,?,0)',
|
||
[$uba['id'], $_POST['buy4ekr'], 'buy_ekr_alh' . $u->info['id'], $uba['host_reg']]);
|
||
|
||
|
||
$r = '<span class=date>' . date(
|
||
'd.m.Y H:i'
|
||
) . '</span> <img src="' . Config::img() . '/i/align/align50.gif" alt="Алхимик"><u> Алхимик <b>' . $u->info['login'] . '</b></u> сообщает: ';
|
||
|
||
if ($user['sex'] == 1) {
|
||
$r .= 'Уважаемая';
|
||
} else {
|
||
$r .= 'Уважаемый';
|
||
}
|
||
|
||
$bnss = '';
|
||
|
||
if (($out_ekr - round((int)$_POST['buy4ekr'], 2)) > 0) {
|
||
$bnss = ' (+' . ($out_ekr - round((int)$_POST['buy4ekr'], 2)) . ' ЕКР бонус!)';
|
||
}
|
||
|
||
$r .= ' <b>' . $user['login'] . '</b>, вам зачислено ' . $_POST['buy4ekr'] . ' ЕКР' . $bnss . '. Благодарим Вас за покупку!';
|
||
|
||
$cmsg = new ChatMessage();
|
||
$cmsg->setCity($user['city']);
|
||
$cmsg->setRoom($user['room']);
|
||
$cmsg->setTo($user['login']);
|
||
$cmsg->setType(5);
|
||
$cmsg->setText($r);
|
||
(new Chat())->sendMsg($cmsg);
|
||
|
||
$text_msg = 'Алхимик <b>' . $u->info['login'] . '</b> совершил продажу <b>' .
|
||
$_POST['buy4ekr'] . '</b> ЕКР. (скидка ' . $ba['procent'] . '% , задолжность ' . $ba['USD'] . '$). Покупатель: ' . $u->microLogin($uba['uid'], 1) . '.</b>.';
|
||
|
||
$balance = Db::getValue('select sum(money) from balance_money where cancel = 0');
|
||
$balance += $money;
|
||
Db::sql('insert into balance_money (time, money, ip, comment2, balance, cancel) values (unix_timestamp(),?,?,?,?,unix_timestamp())',
|
||
[$money, UserIp::get(), $text_msg, $balance]);
|
||
|
||
//Рейтинг по вкладам
|
||
$ub = [];
|
||
$ui = [];
|
||
$sp = Db::getRows('select * from pay_operation where good > 0 order by id desc');
|
||
foreach ($sp as $pl) {
|
||
if (empty($ub[$pl['uid']])) {
|
||
$ui[] = $pl['uid'];
|
||
}
|
||
$ub[$pl['uid']][date('d.m.Y', $pl['good'])] = $pl['ekr'];
|
||
}
|
||
|
||
$i = 0;
|
||
while ($i < count($ui)) {
|
||
if (!isset($ui[$i])) {
|
||
$i++;
|
||
continue;
|
||
}
|
||
$j = 1;
|
||
$k = 0;
|
||
$nj = 0;
|
||
while ($j <= 1000) {
|
||
$dt = date('d.m.Y', time() - (86400 * $j));
|
||
if (isset($ub[$ui[$i]][$dt])) {
|
||
$k++;
|
||
$nj = 0;
|
||
} elseif ($j > 0 && $nj >= 6) {
|
||
$j = 1000;
|
||
} else {
|
||
$nj++;
|
||
}
|
||
$j++;
|
||
}
|
||
Db::sql('replace into users_paybonus (id, level) values (?,?)', [$ui[$i], $k]);
|
||
$i++;
|
||
}
|
||
|
||
} else {
|
||
echo 'Сумма екр.:';
|
||
if (!isset($_POST['buy4ekr'])) {
|
||
echo ' <input name="buy4ekr" style="width:50px;" value="0.00" />
|
||
<input class="btn btn-danger" value="Далее" type="submit"><br>';
|
||
} else {
|
||
echo ' <b>' . round((int)$_POST['buy4ekr'], 2) . '</b> ЕКР +
|
||
<b>' . ($out_ekr - round((int)$_POST['buy4ekr'], 2)) . '</b> ЕКР бонус.
|
||
<input name="buy4ekr" type="hidden" value="' . $_POST['buy4ekr'] . '">';
|
||
echo ' <br><br><input type="submit" name="buygoodluck" class="btn btn-success" value="Совершить продажу">';
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (isset($_POST['buy_ekr'])) { ?>
|
||
<input name="buy_ekr" type="hidden" value="<?= $_POST['buy_ekr'] ?>"/>
|
||
<?php } else { ?>Перести екр. персонажу:
|
||
<input name="buy_ekr" style="width:50px;" value="<?= $_POST['buy_ekr'] ?>"/>
|
||
<input class="btn btn-danger" value="Далее" type="submit"/>
|
||
<?php } ?>
|
||
</form>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<?php
|
||
}
|
||
|
||
echo "<br><h4><div align=left>Необходимые средства в работе алхимика</div></h4>";
|
||
|
||
$p['m1'] = 1;
|
||
$srok = [15 => '15 минут', 30 => '30 минут', 60 => 'один час', 180 => 'три часа', 360 => 'шесть часов', 720 => 'двенадцать часов', 1440 => 'одни сутки', 4320 => 'трое суток'];
|
||
|
||
if (isset($_GET['usemod']) && isset($_POST['usem1'])) {
|
||
require_once('moder/usem1.php');
|
||
}
|
||
if (isset($_POST['tologin'], $_POST['message'])) {
|
||
$cmsg = new ChatMessage();
|
||
$cmsg->setRoom(1);
|
||
$cmsg->setTo($_POST['tologin']);
|
||
$cmsg->setText(
|
||
'<span style="color: darkblue; ">Сообщение телеграфом от </span> <b>' . $u->info['login'] . '</b>: ' . $_POST['message']
|
||
);
|
||
$cmsg->setType(6);
|
||
(new Chat())->sendMsg($cmsg);
|
||
}
|
||
?>
|
||
<table>
|
||
<a href="#"
|
||
onClick="openMod('<b>Заклятие молчания</b>','<form action=\'main.php?<?= 'alhp&usemod=' . PassGen::intCode(); ?>\' method=\'post\'>Логин персонажа: <input type=\'text\' style=\'width:144px;\' id=\'logingo\' name=\'logingo\'><br>Время заклятия: <select style=\'margin-left:2px;\' name=\'time\'><option value=\'1440\'>Сутки</option></select> <input type=\'submit\' name=\'usem1\' value=\'Исп-ть\'></form>');"><img
|
||
src="<?= Config::img() ?>/i/items/sleep.gif" title="Заклятие молчания"/></a>
|
||
|
||
<br><h4>Телеграф</h4>
|
||
<form method=post style="margin:5px;">
|
||
Логин персонажа <input type=text size=20 name="tologin">
|
||
сообщение <input type=text size=80 name="message">
|
||
<input type=submit class="btn btn-success" value="отправить">
|
||
</form>
|
||
<?php
|
||
echo '<br><h2>Список реальщиков:</h2><br>';
|
||
$sp = Db::getRows('select * from pay_operation where good > 0 group by uid');
|
||
foreach ($sp as $pl) {
|
||
$online = Db::getValue('select online from users where id = ?', [$pl['uid']]);
|
||
$lg = $u->microLogin($pl['uid'], 1);
|
||
|
||
if (!stristr($u->microLogin($pl['uid']), 'Невидимка')) {
|
||
if ($online > time() - 240) {
|
||
$lg = '<span style="color: green;">' . $lg . '</span>';
|
||
} else {
|
||
$lg .= ' (был тут ' . date('d.m.Y H:i', $online) . ')';
|
||
}
|
||
if ($u->info['admin'] > 0) {
|
||
$sum = Db::getValue('select sum(ekr) from pay_operation where good > 0 and uid = ?', [$pl['uid']]);
|
||
echo $lg . ' - ' . $sum . ' екр.<br>';
|
||
} else {
|
||
echo $lg . '<br>';
|
||
}
|
||
}
|
||
}
|