Merge branch 'master' into dev-arena
This commit is contained in:
commit
b652c242c4
@ -7,25 +7,23 @@
|
||||
require_once '../functions.php';
|
||||
|
||||
use Battles\Bank;
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\GameConfigs;
|
||||
use Battles\Moderation;
|
||||
use Battles\Nick;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
if (!User::$current->getAdmin()) {
|
||||
if (!User::getInstance()->getAdmin()) {
|
||||
header("HTTP/1.0 404 Not Found");
|
||||
exit;
|
||||
}
|
||||
if (isset($_GET['sleep'])) {
|
||||
Moderation::muteChat(User::$current->getId(), strtotime('15min'));
|
||||
Moderation::muteChat(User::getInstance()->getId(), strtotime('15min'));
|
||||
}
|
||||
|
||||
if (isset($_POST['ldnick']) && isset($_POST['ldtext'])) {
|
||||
$u = new User($_POST['ldnick']);
|
||||
Moderation::addToUserLog($u->getId(), $_POST['ldtext'], User::$current->getId());
|
||||
unset($u);
|
||||
Moderation::addToUserLog(User::getInstance($_POST['ldnick'])->getId(), $_POST['ldtext'], User::getInstance()->getId());
|
||||
}
|
||||
|
||||
if (isset($_POST['syschatmsg'])) {
|
||||
@ -37,11 +35,11 @@ $unregisteredClans = new class {
|
||||
|
||||
public function getList()
|
||||
{
|
||||
$row = DBPDO::$db->ofetchAll('SELECT * FROM clans WHERE status = 0');
|
||||
$row = Db::getInstance()->ofetchAll('SELECT * FROM clans WHERE status = 0');
|
||||
$i = 0;
|
||||
while ($i < count($row)) {
|
||||
$id = $row[$i]->owner_id;
|
||||
$login = Nick::id($row[$i]->owner_id)->short(1);
|
||||
$login = User::getInstance($row[$i]->owner_id)->getLogin();
|
||||
$fullName = $row[$i]->full_name;
|
||||
$shortName = $row[$i]->short_name;
|
||||
$info = nl2br($row[$i]->info);
|
||||
@ -64,13 +62,13 @@ UNREGCLANLIST;
|
||||
|
||||
public function allowRegister($id)
|
||||
{
|
||||
DBPDO::$db->execute('UPDATE clans SET status = 1 WHERE status = 0 AND owner_id = ?', $id);
|
||||
Db::getInstance()->execute('UPDATE clans SET status = 1 WHERE status = 0 AND owner_id = ?', $id);
|
||||
}
|
||||
|
||||
public function disallowRegister($id)
|
||||
{
|
||||
$bank = new Bank($id);
|
||||
DBPDO::$db->execute('DELETE FROM clans WHERE status = 0 AND owner_id = ?', $id);
|
||||
Db::getInstance()->execute('DELETE FROM clans WHERE status = 0 AND owner_id = ?', $id);
|
||||
$bank::setBankMoney($bank->getMoney() + GameConfigs::CLAN['clan_register_cost'], $id);
|
||||
}
|
||||
};
|
||||
@ -89,12 +87,12 @@ if (isset($_GET['remclan'])) {
|
||||
|
||||
# Телеграф.
|
||||
if (!empty($_POST['receiver']) && !empty($_POST['tgmsg'])) {
|
||||
$receiver = DBPDO::$db->ofetch('SELECT id FROM users WHERE login= ?', $_POST['receiver']);
|
||||
$receiver = Db::getInstance()->ofetch('SELECT id FROM users WHERE login= ?', $_POST['receiver']);
|
||||
telegraph($receiver->id, $_POST['tgmsg']);
|
||||
echo "Успешно.";
|
||||
}
|
||||
# Показывает невидимок.
|
||||
$row = DBPDO::$db->ofetchAll('SELECT id,login FROM users LEFT JOIN users_effects ue on users.id = ue.owner_id WHERE type = 1022 ORDER BY `id` DESC');
|
||||
$row = Db::getInstance()->ofetchAll('SELECT id,login FROM users LEFT JOIN users_effects ue on users.id = ue.owner_id WHERE type = 1022 ORDER BY `id` DESC');
|
||||
foreach ($row as $r) {
|
||||
$invisList .= '<b>[id] = ' .$r->id. ', ' .$r->login. '</b><br>';
|
||||
}
|
||||
|
@ -5,12 +5,13 @@
|
||||
* Project name: Battles-Game
|
||||
*/
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\DressedItems;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once "../functions.php";
|
||||
if (!$user->getAdmin()) {
|
||||
if (!User::getInstance()->getAdmin()) {
|
||||
header("HTTP/1.0 404 Not Found");
|
||||
exit;
|
||||
}
|
||||
@ -21,7 +22,7 @@ $end = $_POST['end'] ?? null;
|
||||
$del = $_POST['del'] ?? null;
|
||||
|
||||
if ($player) {
|
||||
$row = DBPDO::$db->ofetch('select id, login from users where id = ? or login = ?', [$player, $player]);
|
||||
$row = Db::getInstance()->ofetch('select id, login from users where id = ? or login = ?', [$player, $player]);
|
||||
$_SESSION['player_id'] = $row->id;
|
||||
$_SESSION['player_name'] = $row->login;
|
||||
unset($row);
|
||||
@ -46,7 +47,7 @@ if ($del) {
|
||||
$item->undressItem(7);
|
||||
}
|
||||
}
|
||||
DBPDO::$db->execute('delete from inventory where id = ?', $del);
|
||||
Db::getInstance()->execute('delete from inventory where id = ?', $del);
|
||||
}
|
||||
Template::header('ᐰdminка инвентаря');
|
||||
?>
|
||||
|
13
akadem.php
13
akadem.php
@ -3,6 +3,7 @@
|
||||
use Battles\Bank;
|
||||
use Battles\GameLogs;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once 'functions.php';
|
||||
const SMITH = 'оружейник';
|
||||
@ -42,9 +43,9 @@ function setProfession($name, $type, $needMoney, $needLevel)
|
||||
$profId = 22;
|
||||
}
|
||||
if (!empty($profId)) {
|
||||
$user->setMoney($user->getMoney() - $needMoney);
|
||||
Bank::setWalletMoney($user->getMoney(), $user->getId());
|
||||
db::c()->query('UPDATE `users` SET ?f = ?i WHERE `id` = ?i', 'prof' . $type, $profId, $user->getId());
|
||||
User::getInstance()->setMoney(User::getInstance()->getMoney() - $needMoney);
|
||||
Bank::setWalletMoney(User::getInstance()->getMoney(), User::getInstance()->getId());
|
||||
db::c()->query('UPDATE `users` SET ?f = ?i WHERE `id` = ?i', 'prof' . $type, $profId, User::getInstance()->getId());
|
||||
$deloText = "{$user['login']} купил профессию «{$name}» в академии за {$needMoney} кр.";
|
||||
GameLogs::addUserLog($_SESSION['uid'], $deloText);
|
||||
$user['prof' . $type] = true;
|
||||
@ -66,7 +67,7 @@ if ($get == 'medic') {
|
||||
}
|
||||
|
||||
if ($get == 'exit') {
|
||||
db::c()->query('UPDATE `users`,`online` SET `users`.`room` = 2702, `online`.`room` = 2702 WHERE `users`.`id` = ?i AND `online`.`id` = ?i', $user->getId(), $user->getId());
|
||||
db::c()->query('UPDATE `users`,`online` SET `users`.`room` = 2702, `online`.`room` = 2702 WHERE `users`.`id` = ?i AND `online`.`id` = ?i', User::getInstance()->getId(), User::getInstance()->getId());
|
||||
header('Location: city.php');
|
||||
}
|
||||
Template::header('Академия');
|
||||
@ -79,8 +80,8 @@ Template::header('Академия');
|
||||
<div><?= $status ?></div>
|
||||
<div class="appblock appblock-main">
|
||||
<span class="legend">Информация</span>
|
||||
<span class="wrap">Кредиты<span class="num"><?= $user->getMoney() ?></span></span>
|
||||
<span class="wrap">Уровень персонажа<span class="num"><?= $user->getLevel() ?></span></span>
|
||||
<span class="wrap">Кредиты<span class="num"><?= User::getInstance()->getMoney() ?></span></span>
|
||||
<span class="wrap">Уровень персонажа<span class="num"><?= User::getInstance()->getLevel() ?></span></span>
|
||||
</div>
|
||||
<div class="appblock">
|
||||
<span class="legend">Наёмник</span>
|
||||
|
11
bank.php
11
bank.php
@ -5,11 +5,12 @@ use Battles\GameConfigs;
|
||||
use Battles\Rooms;
|
||||
use Battles\Template;
|
||||
use Exceptions\GameException;
|
||||
use Battles\User;
|
||||
|
||||
require_once "functions.php";
|
||||
const SUCCESS = "Успешная операция!";
|
||||
|
||||
$bank = new Bank($user->getId());
|
||||
$bank = new Bank(User::getInstance()->getId());
|
||||
$status = '';
|
||||
|
||||
$toid = $_POST['to_id'] ?? 0;
|
||||
@ -19,20 +20,20 @@ try {
|
||||
// Зачисление кредитов на счёт.
|
||||
if ($submit === 'depositMoney' && $summa) {
|
||||
$operation = $bank->depositMoney($summa);
|
||||
$user->setMoney($operation['walletMoney']);
|
||||
User::getInstance()->setMoney($operation['walletMoney']);
|
||||
$bank->setMoney($operation['bankMoney']);
|
||||
$status = SUCCESS;
|
||||
}
|
||||
// Снятие кредитов со счёта.
|
||||
if ($submit === 'withdrawMoney' && $summa) {
|
||||
$operation = $bank->withdrawMoney($summa);
|
||||
$user->setMoney($operation['walletMoney']);
|
||||
User::getInstance()->setMoney($operation['walletMoney']);
|
||||
$bank->setMoney($operation['bankMoney']);
|
||||
$status = SUCCESS;
|
||||
}
|
||||
// Перевод кредитов на другой счёт.
|
||||
if ($submit === 'sendMoney' && $summa && $toid) {
|
||||
$user->setMoney($bank->sendMoney($toid, $summa));
|
||||
User::getInstance()->setMoney($bank->sendMoney($toid, $summa));
|
||||
$status = SUCCESS;
|
||||
}
|
||||
} catch (GameException $e) {
|
||||
@ -49,7 +50,7 @@ Template::header('Банк');
|
||||
<div class="appblock appblock-main">
|
||||
<span class="wrap">На счету: <span class="num"><?= $bank->getMoney() ?></span></span>
|
||||
<hr>
|
||||
<span class="wrap">На руках: <span class="num"><?= $user->getMoney() ?></span></span>
|
||||
<span class="wrap">На руках: <span class="num"><?= User::getInstance()->getMoney() ?></span></span>
|
||||
</div>
|
||||
<div class="appblock">
|
||||
<span class="legend">Работа со счётом</span>
|
||||
|
10
buy.php
10
buy.php
@ -1,11 +1,11 @@
|
||||
<?php
|
||||
|
||||
use Battles\Bank;
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\User;
|
||||
|
||||
require_once "functions.php";
|
||||
if (User::$current->getBattle()) {
|
||||
if (User::getInstance()->getBattle()) {
|
||||
exit();
|
||||
}
|
||||
const PRICES = [
|
||||
@ -26,7 +26,7 @@ const PRICES = [
|
||||
'unclone' => 25,
|
||||
];
|
||||
|
||||
$check_bonuses = DBPDO::$db->ofetch('select 1 from users_bonuses where user_id = ?', User::$current->getId());
|
||||
$check_bonuses = Db::getInstance()->ofetch('select 1 from users_bonuses where user_id = ?', User::getInstance()->getId());
|
||||
|
||||
if (!$check_bonuses) {
|
||||
exit('Запрещено: Вам нельзя покупать бонусы.');
|
||||
@ -35,12 +35,12 @@ if (!$check_bonuses) {
|
||||
function buy_bonus($name): bool
|
||||
{
|
||||
global $prices;
|
||||
$bank = new Bank(User::$current->getId());
|
||||
$bank = new Bank(User::getInstance()->getId());
|
||||
if ($bank->getMoney() <= PRICES[$name]) {
|
||||
return false;
|
||||
}
|
||||
$query = sprintf('update users_bonuses set %s = %s + 1 where user_id = ?', $name, $name);
|
||||
DBPDO::$db->execute($query, User::$current->getId());
|
||||
Db::getInstance()->execute($query, User::getInstance()->getId());
|
||||
$bank->setMoney($bank->getMoney() - $prices[$name]);
|
||||
return true;
|
||||
}
|
||||
|
18
buy_klan.php
18
buy_klan.php
@ -1,11 +1,11 @@
|
||||
<?php
|
||||
|
||||
use Battles\Bank;
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\User;
|
||||
|
||||
require_once "functions.php";
|
||||
if (!User::$current->getClan() || User::$current->getBattle()) {
|
||||
if (!User::getInstance()->getClan() || User::getInstance()->getBattle()) {
|
||||
exit();
|
||||
}
|
||||
const PRICES = [
|
||||
@ -26,10 +26,10 @@ const PRICES = [
|
||||
'unclone' => 25,
|
||||
];
|
||||
|
||||
$check_owner = DBPDO::$db->ofetch('select short_name from clans where owner_id = ?', User::$current->getId());
|
||||
$check_bonuses = DBPDO::$db->ofetch('select 1 from clan_bonuses where short_name = ?', User::$current->getClan());
|
||||
$check_owner = Db::getInstance()->execute('select short_name from clans where owner_id = ?', User::getInstance()->getId())->fetchColumn();
|
||||
$check_bonuses = Db::getInstance()->execute('select count(*) from clan_bonuses where short_name = ?', User::getInstance()->getClan())->fetchColumn();
|
||||
|
||||
if (User::$current->getClan() !== $check_owner->short_name) {
|
||||
if (User::getInstance()->getClan() !== $check_owner) {
|
||||
exit('Запрещено: Вы не глава клана.');
|
||||
}
|
||||
if (!$check_bonuses) {
|
||||
@ -38,14 +38,14 @@ if (!$check_bonuses) {
|
||||
|
||||
function buy_bonus($name): bool
|
||||
{
|
||||
global $prices;
|
||||
$bank = new Bank(User::$current->getId());
|
||||
$bank = new Bank(User::getInstance()->getId());
|
||||
if ($bank->getMoney() <= PRICES[$name]) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$query = sprintf('update clan_bonuses set %s = %s + 1 where short_name = ?', $name, $name);
|
||||
DBPDO::$db->execute($query, User::$current->getClan());
|
||||
$bank->setMoney($bank->getMoney() - $prices[$name]);
|
||||
Db::getInstance()->execute($query, User::getInstance()->getClan());
|
||||
$bank->setMoney($bank->getMoney() - PRICES[$name]);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
<?php
|
||||
|
||||
use Battles\Template;
|
||||
use Battles\Template, Battles\User;
|
||||
|
||||
require_once('functions.php');
|
||||
if ($user->getRoom() == 51) {
|
||||
if (User::getInstance()->getRoom() == 51) {
|
||||
header('location: city.php');
|
||||
exit;
|
||||
}
|
||||
@ -26,8 +26,8 @@ $map_user = loadmap_cell();
|
||||
|
||||
if ($_GET['exit_forest'] == 'true') {
|
||||
if ($forest['room']) {
|
||||
#db::c()->query('DELETE FROM `forest_bots` WHERE `user` = ?i AND `group` = ?i', $user['id'], $forest['id']);
|
||||
#db::c()->query('DELETE FROM `forest_items` WHERE `user` = ?i AND `group` = ?i', $user['id'], $forest['id']);
|
||||
#getInstance::c()->query('DELETE FROM `forest_bots` WHERE `user` = ?i AND `group` = ?i', $user['id'], $forest['id']);
|
||||
#getInstance::c()->query('DELETE FROM `forest_items` WHERE `user` = ?i AND `group` = ?i', $user['id'], $forest['id']);
|
||||
db::c()->query('UPDATE `users`,`online` SET `users`.`room` = 51, `online`.`room` = 51 WHERE `online`.`id` = `users`.`id` AND `online`.`id` = ?i', $user['id']);
|
||||
db::c()->query('DELETE FROM `forest` WHERE `user` = ?i', $user['id']);
|
||||
unset($forest);
|
||||
|
@ -1,9 +1,9 @@
|
||||
<?php
|
||||
|
||||
use Battles\Template;
|
||||
use Battles\Template, Battles\User;
|
||||
|
||||
require_once "functions.php";
|
||||
if ($user->getRoom() == 403) {
|
||||
if (User::getInstance()->getRoom() == 403) {
|
||||
include "startpodzemel.php";
|
||||
if ($_GET['act'] == "cexit") {
|
||||
$das = mysql_query("select glava,glav_id from `labirint` where user_id='" . $user['id'] . "'");
|
||||
@ -38,7 +38,7 @@ if ($user->getRoom() == 403) {
|
||||
'Ключик №9',
|
||||
'Ключик №10'
|
||||
];
|
||||
db::c()->query('DELETE FROM inventory WHERE name IN ("?s") AND owner_id = ?i', implode(",", $items_to_delete), $user->getId());
|
||||
db::c()->query('DELETE FROM inventory WHERE name IN ("?s") AND owner_id = ?i', implode(",", $items_to_delete), User::getInstance()->getId());
|
||||
}
|
||||
}
|
||||
$e = mysql_query("DELETE FROM labirint WHERE user_id='" . $user['id'] . "'");
|
||||
@ -51,7 +51,7 @@ if ($user->getRoom() == 403) {
|
||||
{
|
||||
$frt = mysql_query("select user_id from `labirint` where glava='" . $glava . "'");
|
||||
while ($rbb = mysql_fetch_array($frt)) {
|
||||
addchp('<b>' . $user->getLogin() . '</b> поднял предмет "' . $mis . '". ', '{[]}' . Nick::id($rbb["user_id"])->short() . '{[]}');
|
||||
addchp('<b>' . User::getInstance()->getLogin() . '</b> поднял предмет "' . $mis . '". ', '{[]}' . Nick::id($rbb["user_id"])->short() . '{[]}');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?php
|
||||
if ($user->getRoom() == 403) {
|
||||
|
||||
use Battles\User;
|
||||
|
||||
if (User::getInstance()->getRoom() == 403) {
|
||||
$s = db::c()->query('SELECT * FROM podzem2 WHERE name= "?s"', $mir['name'])->fetch_assoc();
|
||||
|
||||
$rooms[0] = "";
|
||||
|
24
ch.php
24
ch.php
@ -1,15 +1,15 @@
|
||||
<?php
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once 'functions.php';
|
||||
DBPDO::$db->execute('update online set real_time = ? where user_id = ?', [time(), User::$current->getId()]);
|
||||
Db::getInstance()->execute('update online set real_time = ? where user_id = ?', [time(), User::getInstance()->getId()]);
|
||||
|
||||
if (isset($_GET['online']) && $_GET['online'] != null) {
|
||||
if ($_GET['room'] && (int)$_GET['room'] < 500) {
|
||||
$user->setRoom($_GET['room']);
|
||||
User::getInstance()->setRoom($_GET['room']);
|
||||
}
|
||||
if ($u->i()['caveleader'] > 0) {
|
||||
$data = db::c()->query('
|
||||
@ -35,13 +35,13 @@ if (isset($_GET['online']) && $_GET['online'] != null) {
|
||||
ORDER BY
|
||||
`u`.`login`
|
||||
');
|
||||
$ttl = "<span style=\"color: #8f0000; font-size: 10pt;\"><b>" . $rooms[$user->getRoom()] . " (" . mysql_num_rows($data) . ")</b></span>";
|
||||
$ttl = "<span style=\"color: #8f0000; font-size: 10pt;\"><b>" . $rooms[User::getInstance()->getRoom()] . " (" . mysql_num_rows($data) . ")</b></span>";
|
||||
$ch1 = '_active';
|
||||
$ch2 = '_passive';
|
||||
$ch3 = '_passive';
|
||||
$ch4 = '_passive';
|
||||
$ch5 = '_passive';
|
||||
} elseif ($user->getRoom() == 760) {
|
||||
} elseif (User::getInstance()->getRoom() == 760) {
|
||||
$forest = db::c()->query('SELECT `id`, `room`, `time`, `user`, `data` FROM `forest` WHERE `user` = "' . $user['id'] . '" LIMIT 1')->fetch_assoc();
|
||||
$sp = db::c()->query('SELECT `id`, `room`, `user` FROM `forest` WHERE `room` = "' . $forest['room'] . '"');
|
||||
while ($pl = $sp->fetch_assoc()) {
|
||||
@ -100,18 +100,18 @@ if (isset($_GET['online']) && $_GET['online'] != null) {
|
||||
WHERE
|
||||
`o`.`id` = `u`.`id` AND
|
||||
(`o`.login_time >= ' . (time() - 90) . ' OR `u`.`in_tower` = 1) AND
|
||||
`o`.`room` = "' . $user->getRoom() . '"
|
||||
`o`.`room` = "' . User::getInstance()->getRoom() . '"
|
||||
ORDER BY
|
||||
`u`.`login`
|
||||
');
|
||||
$ttl = "<span style=\"color: #8f0000; font-size: 10pt;\"><b>" . $rooms[$user->getRoom()] . " (" . mysql_num_rows($data) . ")</b></span>";
|
||||
$ttl = "<span style=\"color: #8f0000; font-size: 10pt;\"><b>" . $rooms[User::getInstance()->getRoom()] . " (" . mysql_num_rows($data) . ")</b></span>";
|
||||
$ch1 = '_active';
|
||||
$ch2 = '_passive';
|
||||
$ch3 = '_passive';
|
||||
$ch4 = '_passive';
|
||||
$ch5 = '_passive';
|
||||
}
|
||||
Template::header(sprintf('%s (%s)', $rooms[$user->getRoom()], mysql_num_rows($data)));
|
||||
Template::header(sprintf('%s (%s)', $rooms[User::getInstance()->getRoom()], mysql_num_rows($data)));
|
||||
?>
|
||||
<script>
|
||||
function fastshow(content) {
|
||||
@ -366,7 +366,7 @@ if (isset($_GET['online']) && $_GET['online'] != null) {
|
||||
$ks++;
|
||||
$lastpost = $math[1];
|
||||
unset($math[3]);
|
||||
} elseif ((strpos($math[3], "private") === FALSE) /*&& ($user->getRoom() == $math[4])*/) {
|
||||
} elseif ((strpos($math[3], "private") === FALSE) /*&& (User::getInstance()->getRoom() == $math[4])*/) {
|
||||
$times = '';
|
||||
$soundON = '';
|
||||
if ((strpos($math[3], "[" . $user['login'] . "]") > 0) || ($math[2] == $user['login'])) {
|
||||
@ -414,7 +414,7 @@ if (isset($_GET['online']) && $_GET['online'] != null) {
|
||||
|
||||
$_GET['text'] = preg_replace('/private \[klan-([a-zA-Z]*)\]/', '', $_GET['text']);
|
||||
|
||||
if (empty($user->getClan())) {
|
||||
if (empty(User::getInstance()->getClan())) {
|
||||
$_GET['text'] = str_replace('private [klan]', '', $_GET['text']);
|
||||
$_GET['text'] = str_replace('private [klan]', 'private [klan-' . $user['klan'] . ']', $_GET['text']);
|
||||
} else {
|
||||
@ -461,7 +461,7 @@ if (isset($_GET['online']) && $_GET['online'] != null) {
|
||||
if ($action != 1) {
|
||||
$file = 'tmp/chat.txt';
|
||||
if (filesize("tmp/chat.txt") > 100 * 1024) {
|
||||
$line = "\r\n:[" . time() . "]:[{$user['login']}]:[<font color=\"" . (($user['color']) ? $user['color'] : "#000000") . "\">" . ($_GET['text']) . "</font>]:[" . $user->getRoom() . "]\r\n";
|
||||
$line = "\r\n:[" . time() . "]:[{$user['login']}]:[<font color=\"" . (($user['color']) ? $user['color'] : "#000000") . "\">" . ($_GET['text']) . "</font>]:[" . User::getInstance()->getRoom() . "]\r\n";
|
||||
// Пишем содержимое в файл,
|
||||
// используя флаг FILE_APPEND flag для дописывания содержимого в конец файла
|
||||
// и флаг LOCK_EX для предотвращения записи данного файла кем-нибудь другим в данное время
|
||||
@ -469,7 +469,7 @@ if (isset($_GET['online']) && $_GET['online'] != null) {
|
||||
file_put_contents($file, $line, FILE_APPEND | LOCK_EX);
|
||||
echo "1";
|
||||
} else {
|
||||
$line = ":[" . time() . "]:[{$user['login']}]:[<font color=\"" . (($user['color']) ? $user['color'] : "#000000") . "\">" . ($_GET['text']) . "</font>]:[" . $user->getRoom() . "]\r\n";
|
||||
$line = ":[" . time() . "]:[{$user['login']}]:[<font color=\"" . (($user['color']) ? $user['color'] : "#000000") . "\">" . ($_GET['text']) . "</font>]:[" . User::getInstance()->getRoom() . "]\r\n";
|
||||
file_put_contents($file, $line, FILE_APPEND | LOCK_EX);
|
||||
echo "2";
|
||||
}
|
||||
|
4
chat.php
4
chat.php
@ -6,11 +6,11 @@
|
||||
*/
|
||||
|
||||
use Battles\Chat;
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\Template;
|
||||
|
||||
require_once "config.php";
|
||||
$chat = new Chat(new DBPDO());
|
||||
$chat = new Chat(Db::getInstance());
|
||||
if (!empty($_POST['msg'])) {
|
||||
$chat->addMessage($_POST['msg']);
|
||||
}
|
||||
|
@ -1,4 +1,7 @@
|
||||
<?
|
||||
|
||||
use Battles\User;
|
||||
|
||||
include('config.php');
|
||||
|
||||
function addch($text, $who, $room) {
|
||||
@ -33,12 +36,12 @@ if($_GET['id'] == 1) {
|
||||
} elseif($_GET['id'] == 6) {
|
||||
$user = mysql_fetch_array(mysql_query('SELECT `id`, `login`, `room` FROM `users` WHERE `id` = "'.(int)$_GET['user'].'" LIMIT 1'));
|
||||
if(isset($user['id'])) {
|
||||
addch('<font color=red>Внимание!</font> Ваш бой не может начаться по причине <b>Группа не набрана</b>', $user['login'], $user->getRoom());
|
||||
addch('<font color=red>Внимание!</font> Ваш бой не может начаться по причине <b>Группа не набрана</b>', $user['login'], User::getInstance()->getRoom());
|
||||
}
|
||||
} elseif($_GET['id'] == 7) {
|
||||
$user = mysql_fetch_array(mysql_query('SELECT `id`, `login`, `room` FROM `users` WHERE `id` = "'.(int)$_GET['user'].'" LIMIT 1'));
|
||||
if(isset($user['id'])) {
|
||||
addch('<font color=red>Внимание!</font> Ваш бой начался.', $user['login'], $user->getRoom());
|
||||
addch('<font color=red>Внимание!</font> Ваш бой начался.', $user['login'], User::getInstance()->getRoom());
|
||||
}
|
||||
} else {
|
||||
exit;
|
||||
|
113
city.php
113
city.php
@ -3,193 +3,194 @@
|
||||
* Центральная площадь
|
||||
*/
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once "functions.php";
|
||||
|
||||
if ($user->getZayavka()) {
|
||||
if (User::getInstance()->getZayavka()) {
|
||||
exit;
|
||||
}
|
||||
|
||||
$online = DBPDO::$db->fetchColumn('select count(*) from online where real_time >= ?', time()-60);
|
||||
$online = Db::getInstance()->fetchColumn('select count(*) from online where real_time >= ?', time()-60);
|
||||
$location = explode('/', filter_input(INPUT_SERVER, 'QUERY_STRING'));
|
||||
|
||||
switch ($location[0]) {
|
||||
default:
|
||||
break;
|
||||
case 'cp':
|
||||
Battles\Travel::toRoom(20,$user->getRoom());
|
||||
Battles\Travel::toRoom(20,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'strah':
|
||||
Battles\Travel::toRoom(21,$user->getRoom());
|
||||
Battles\Travel::toRoom(21,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'bps':
|
||||
Battles\Travel::toRoom(26,$user->getRoom());
|
||||
Battles\Travel::toRoom(26,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'ps':
|
||||
Battles\Travel::toRoom(51,$user->getRoom());
|
||||
Battles\Travel::toRoom(51,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'zaliv':
|
||||
Battles\Travel::toRoom(2111,$user->getRoom());
|
||||
Battles\Travel::toRoom(2111,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'zamk':
|
||||
Battles\Travel::toRoom(2601,$user->getRoom());
|
||||
Battles\Travel::toRoom(2601,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'abog':
|
||||
Battles\Travel::toRoom(2655,$user->getRoom());
|
||||
Battles\Travel::toRoom(2655,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'torg':
|
||||
Battles\Travel::toRoom(2702,$user->getRoom());
|
||||
Battles\Travel::toRoom(2702,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'got':
|
||||
if ($user->getRoom() == 20) {
|
||||
if (User::getInstance()->getRoom() == 20) {
|
||||
switch ($location[1]) {
|
||||
default:
|
||||
break;
|
||||
case 'level1':
|
||||
Battles\Travel::toRoom(1,$user->getRoom());
|
||||
Battles\Travel::toRoom(1,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level7':
|
||||
Battles\Travel::toRoom(21,$user->getRoom());
|
||||
Battles\Travel::toRoom(21,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level8':
|
||||
Battles\Travel::toRoom(26,$user->getRoom());
|
||||
Battles\Travel::toRoom(26,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level13':
|
||||
header('location: quest_room.php');
|
||||
break;
|
||||
case 'level222':
|
||||
Battles\Travel::toRoom(2702,$user->getRoom());
|
||||
Battles\Travel::toRoom(2702,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level17':
|
||||
Battles\Travel::toRoom(50,$user->getRoom());
|
||||
Battles\Travel::toRoom(50,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level2':
|
||||
Battles\Travel::toRoom(22,$user->getRoom());
|
||||
Battles\Travel::toRoom(22,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level4':
|
||||
Battles\Travel::toRoom(23,$user->getRoom());
|
||||
Battles\Travel::toRoom(23,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level6':
|
||||
Battles\Travel::toRoom(27,$user->getRoom());
|
||||
Battles\Travel::toRoom(27,User::getInstance()->getRoom());
|
||||
break;
|
||||
}
|
||||
} elseif ($user->getRoom() == 21) {
|
||||
} elseif (User::getInstance()->getRoom() == 21) {
|
||||
switch ($location[1]) {
|
||||
default:
|
||||
break;
|
||||
case 'level4':
|
||||
Battles\Travel::toRoom(20,$user->getRoom());
|
||||
Battles\Travel::toRoom(20,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level3':
|
||||
Battles\Travel::toRoom(2111,$user->getRoom());
|
||||
Battles\Travel::toRoom(2111,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level13':
|
||||
Battles\Travel::toRoom(34,$user->getRoom());
|
||||
Battles\Travel::toRoom(34,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level5':
|
||||
Battles\Travel::toRoom(29,$user->getRoom());
|
||||
Battles\Travel::toRoom(29,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level16':
|
||||
Battles\Travel::toRoom(31,$user->getRoom());
|
||||
Battles\Travel::toRoom(31,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level14':
|
||||
Battles\Travel::toRoom(30,$user->getRoom());
|
||||
Battles\Travel::toRoom(30,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level650':
|
||||
Battles\Travel::toRoom(650,$user->getRoom());
|
||||
Battles\Travel::toRoom(650,User::getInstance()->getRoom());
|
||||
break;
|
||||
}
|
||||
} elseif ($user->getRoom() == 2111) {
|
||||
} elseif (User::getInstance()->getRoom() == 2111) {
|
||||
switch ($location[1]) {
|
||||
default:
|
||||
break;
|
||||
case 'level1':
|
||||
Battles\Travel::toRoom(21,$user->getRoom());
|
||||
Battles\Travel::toRoom(21,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level203':
|
||||
Battles\Travel::toRoom(1055,$user->getRoom());
|
||||
Battles\Travel::toRoom(1055,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level1000':
|
||||
Battles\Travel::toRoom(620,$user->getRoom());
|
||||
Battles\Travel::toRoom(620,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'room666':
|
||||
//Нет на карте
|
||||
//Battles\Travel::toRoom(666,$user->getRoom());
|
||||
//Battles\Travel::toRoom(666,User::getInstance()->getRoom());
|
||||
break;
|
||||
}
|
||||
} elseif ($user->getRoom() == 2601) {
|
||||
} elseif (User::getInstance()->getRoom() == 2601) {
|
||||
switch ($location[1]) {
|
||||
default:
|
||||
break;
|
||||
case 'level4':
|
||||
Battles\Travel::toRoom(26,$user->getRoom());
|
||||
Battles\Travel::toRoom(26,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level55':
|
||||
Battles\Travel::toRoom(2655,$user->getRoom());
|
||||
Battles\Travel::toRoom(2655,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level1':
|
||||
Battles\Travel::toRoom(37,$user->getRoom());
|
||||
Battles\Travel::toRoom(37,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level1051':
|
||||
Battles\Travel::toRoom(1051,$user->getRoom());
|
||||
Battles\Travel::toRoom(1051,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level5':
|
||||
Battles\Travel::toRoom(404,$user->getRoom());
|
||||
Battles\Travel::toRoom(404,User::getInstance()->getRoom());
|
||||
break;
|
||||
}
|
||||
} elseif ($user->getRoom() == 2701) {
|
||||
} elseif (User::getInstance()->getRoom() == 2701) {
|
||||
switch ($location[1]) {
|
||||
default:
|
||||
break;
|
||||
case 'level1':
|
||||
Battles\Travel::toRoom(2111,$user->getRoom());
|
||||
Battles\Travel::toRoom(2111,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level2':
|
||||
Battles\Travel::toRoom(402,$user->getRoom());
|
||||
Battles\Travel::toRoom(402,User::getInstance()->getRoom());
|
||||
break;
|
||||
}
|
||||
} elseif ($user->getRoom() == 2702) {
|
||||
} elseif (User::getInstance()->getRoom() == 2702) {
|
||||
switch ($location[1]) {
|
||||
default:
|
||||
break;
|
||||
case 'level10':
|
||||
Battles\Travel::toRoom(20,$user->getRoom());
|
||||
Battles\Travel::toRoom(20,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level6':
|
||||
Battles\Travel::toRoom(61,$user->getRoom());
|
||||
Battles\Travel::toRoom(61,User::getInstance()->getRoom());
|
||||
break;
|
||||
}
|
||||
} elseif ($user->getRoom() == 2655) {
|
||||
} elseif (User::getInstance()->getRoom() == 2655) {
|
||||
switch ($location[1]) {
|
||||
default:
|
||||
break;
|
||||
case 'level10':
|
||||
Battles\Travel::toRoom(2601,$user->getRoom());
|
||||
Battles\Travel::toRoom(2601,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level2055':
|
||||
Battles\Travel::toRoom(603,$user->getRoom());
|
||||
Battles\Travel::toRoom(603,User::getInstance()->getRoom());
|
||||
break;
|
||||
}
|
||||
} elseif ($user->getRoom() == 26) {
|
||||
} elseif (User::getInstance()->getRoom() == 26) {
|
||||
switch ($location[1]) {
|
||||
default:
|
||||
break;
|
||||
case 'level4':
|
||||
Battles\Travel::toRoom(20,$user->getRoom());
|
||||
Battles\Travel::toRoom(20,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level3':
|
||||
Battles\Travel::toRoom(2601,$user->getRoom());
|
||||
Battles\Travel::toRoom(2601,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level660':
|
||||
Battles\Travel::toRoom(660,$user->getRoom());
|
||||
Battles\Travel::toRoom(660,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level7':
|
||||
Battles\Travel::toRoom(777,$user->getRoom());
|
||||
Battles\Travel::toRoom(777,User::getInstance()->getRoom());
|
||||
break;
|
||||
case 'level56':
|
||||
Battles\Travel::toRoom(401,$user->getRoom());
|
||||
Battles\Travel::toRoom(401,User::getInstance()->getRoom());
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -197,7 +198,7 @@ switch ($location[0]) {
|
||||
|
||||
Template::header('city');
|
||||
echo sprintf('<div style="text-align: right;">Сейчас в игре: %s игроков.></div>', $online);
|
||||
if (in_array($user->getRoom(), [20, 21, 26, 2601, 2655, 2111, 2701, 2702])) {
|
||||
if (in_array(User::getInstance()->getRoom(), [20, 21, 26, 2601, 2655, 2111, 2701, 2702])) {
|
||||
/* Улицы:
|
||||
* 20 Центральная
|
||||
* 21 Страшилкина
|
||||
@ -208,5 +209,5 @@ if (in_array($user->getRoom(), [20, 21, 26, 2601, 2655, 2111, 2701, 2702])) {
|
||||
* 2701 С ещё одним ристалищем?
|
||||
* 2702 Торговая
|
||||
*/
|
||||
Battles\City::showStreet($user->getRoom());
|
||||
Battles\City::showStreet(User::getInstance()->getRoom());
|
||||
}
|
21
clan.php
21
clan.php
@ -8,13 +8,12 @@ use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once 'functions.php';
|
||||
if (!User::$current->getClan()) {
|
||||
if (!User::getInstance()->getClan()) {
|
||||
exit('Ошибка! Вы не состоите в клане!');
|
||||
}
|
||||
|
||||
Clan::$current = new Clan();
|
||||
if (User::$current->getClan() != Clan::$current->getClanShortName()) {
|
||||
exit('Ошибка! Клана ' . User::$current->getClan() . ' не существует!');
|
||||
if (User::getInstance()->getClan() != Clan::getInstance()->getClanShortName()) {
|
||||
exit('Ошибка! Клана ' . User::getInstance()->getClan() . ' не существует!');
|
||||
}
|
||||
|
||||
Template::header('clan');
|
||||
@ -48,23 +47,23 @@ Template::header('clan');
|
||||
<?php if (!empty($_POST['login']) && !empty($_POST['action'])): ?>
|
||||
<span class="error">
|
||||
<?php if ($_POST['action'] == 'add_member'): ?>
|
||||
<?= Clan::$current->addMember($_POST['login']) ?>
|
||||
<?= Clan::getInstance()->addMember($_POST['login']) ?>
|
||||
<?php endif; ?>
|
||||
<?php if ($_POST['action'] == 'remove_member'): ?>
|
||||
<?= Clan::$current->removeMember($_POST['login']) ?>
|
||||
<?= Clan::getInstance()->removeMember($_POST['login']) ?>
|
||||
<?php endif; ?>
|
||||
<?php if ($_POST['action'] == 'change_owner'): ?>
|
||||
<?= Clan::$current->changeOwner($_POST['login']) ?>
|
||||
<?= Clan::getInstance()->changeOwner($_POST['login']) ?>
|
||||
<?php endif; ?>
|
||||
</span>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="column left">
|
||||
<h3><img src="./i/clan/<?= Clan::$current->getClanShortName() ?>.png"
|
||||
alt="<?= Clan::$current->getClanShortName() ?>"><?= Clan::$current->getClanName() ?></h3>
|
||||
<h3><img src="./i/clan/<?= Clan::getInstance()->getClanShortName() ?>.png"
|
||||
alt="<?= Clan::getInstance()->getClanShortName() ?>"><?= Clan::getInstance()->getClanName() ?></h3>
|
||||
|
||||
<?php if (Clan::$current->getClanOwnerId() === User::$current->getId()): ?>
|
||||
<?php if (Clan::getInstance()->getClanOwnerId() === User::getInstance()->getId()): ?>
|
||||
<div>
|
||||
<span id="add_member">
|
||||
<input type="submit" onclick="use('add_member')" value="Принять в клан">
|
||||
@ -93,7 +92,7 @@ Template::header('clan');
|
||||
<th id='c1'>Имя</th>
|
||||
<th id='c2'>Местонахождение</th>
|
||||
</tr>
|
||||
<?php foreach (Clan::$current->getMemberlist() as $member): ?>
|
||||
<?php foreach (Clan::getInstance()->getMemberlist() as $member): ?>
|
||||
<tr>
|
||||
<td>
|
||||
<?php if ($member->clan_owner): ?>
|
||||
|
317
clan_castle.php
317
clan_castle.php
@ -1,317 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Battles\Chat;
|
||||
use Battles\GameLogs;
|
||||
use Battles\Template;
|
||||
|
||||
require_once "functions.php";
|
||||
$owntravma = mysql_fetch_array(mysql_query("SELECT * FROM `effects` WHERE `owner` = " . $user['id'] . " AND (type=13 OR type=12 OR type=14) limit 1;"));
|
||||
$klan = mysql_fetch_array(mysql_query("SELECT * FROM `clans` WHERE `id` = '{$user['klan']}' LIMIT 1;"));
|
||||
$cc_date = mysql_fetch_array(mysql_query("SELECT * FROM `variables` WHERE `var`='cc_time' LIMIT 1;"));
|
||||
$ccd = $cc_date['value'];
|
||||
|
||||
if ($_POST['admin_start']) {
|
||||
$tm = time();
|
||||
mysql_query("UPDATE `variables` SET `value`='{$tm}' WHERE `var`='cc_time';");
|
||||
exit("<script>location.href='clan_castle.php';</script>");
|
||||
}
|
||||
if ($_POST['admin_start1']) {
|
||||
$tm = time() - 900;
|
||||
mysql_query("UPDATE `variables` SET `value`='{$tm}' WHERE `var`='cc_time';");
|
||||
exit("<script>location.href='clan_castle.php';</script>");
|
||||
}
|
||||
|
||||
if ($_POST['add_zay']) {
|
||||
mysql_query("INSERT INTO `clan_castle` VALUES ('{$user['id']}','{$user['klan']}');");
|
||||
exit("<script>location.href='clan_castle.php';</script>");
|
||||
}
|
||||
Template::header('Замок Мэра');
|
||||
?>
|
||||
<script>
|
||||
function refreshPeriodic() {
|
||||
location.href = 'clan_castle.php';
|
||||
timerID = setTimeout("refreshPeriodic()", 30000);
|
||||
}
|
||||
|
||||
timerID = setTimeout("refreshPeriodic()", 30000);
|
||||
</script>
|
||||
|
||||
<TABLE border=0 width=600 cellspacing="0" cellpadding="0" align=left>
|
||||
|
||||
<tr>
|
||||
<td><h3>Замок Мэра</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<FORM action="city.php" method=GET><INPUT TYPE="submit" value="Вернуться в Город" name="bps"></FORM>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Добро пожаловать в Замок доброго и справедливого Мэра!
|
||||
Если Вы заинтерисованы в обладании правами на Замок, либо считаете что обладаете достаточными способностями
|
||||
для исполнения
|
||||
обязанностей Мэра, приглашаем Вас и Ваших единомышлеников поселиться в Замке! <br/> <br/>
|
||||
Внимание! Администрация не несет ответственности за возможные конфликты на основе спора о правах обладания
|
||||
Замком,
|
||||
целость и сохранность Ваших личных вещей, здоровье и жизни посетителей!<br/>
|
||||
<?php
|
||||
$own = mysql_fetch_array(mysql_query("SELECT `value` FROM `variables` WHERE `var` = 'castle_owner'"));
|
||||
if ($own['value'] > 0) {
|
||||
$tmp_k = mysql_fetch_array(mysql_query("SELECT `name` FROM `clans` WHERE `id` = '{$own['value']}'"));
|
||||
}
|
||||
echo '<br />Над Замком развевается флаг ';
|
||||
if ($tmp_k['name']) {
|
||||
echo '<strong>клана <img title="' . $tmp_k['name'] . '" src="i/clan/' . $tmp_k['name'] . '.png">' . $tmp_k['name'] . '</strong><br />';
|
||||
} else {
|
||||
echo '<strong>сил Хаоса</strong><br />';
|
||||
}
|
||||
|
||||
if ($user->getAdmin()) {
|
||||
echo '<FORM action="clan_castle.php" method=POST><INPUT TYPE="submit" value="Админ: запустить" name="admin_start"><br></FORM>';
|
||||
echo '<FORM action="clan_castle.php" method=POST><INPUT TYPE="submit" value="Админ: старт боя" name="admin_start1"><br></FORM>';
|
||||
}
|
||||
if ($ccd >= time()) {
|
||||
echo "Следующая битва: " . (date("j.m", $ccd)) . " в " . (date("H:i", $ccd));
|
||||
} elseif ($ccd < time() && ($ccd + 900) >= time()) {
|
||||
$zays = [];
|
||||
echo "Заявили права на Замок Мэра:";
|
||||
echo '<TABLE border=0 width=100% cellspacing="0" cellpadding="0" align=left>';
|
||||
$all_c = mysql_query("SELECT * FROM `clan_castle`;");
|
||||
while ($a_zay = mysql_fetch_array($all_c)) {
|
||||
$zays[] = $a_zay['clan'];
|
||||
$tmp_k = mysql_fetch_array(mysql_query("SELECT `name` FROM `clans` WHERE `id` = '{$a_zay['clan']}' LIMIT 1;"));
|
||||
echo '<tr><td><strong>Клан <img title="' . $tmp_k['name'] . '" src="i/clan/' . $tmp_k['name'] . '.png">' . $tmp_k['name'] . '</strong></td></tr>';
|
||||
}
|
||||
if (empty($zays)) {
|
||||
echo '<tr><td><strong>Ждем смелых ...</strong></td></tr>';
|
||||
}
|
||||
echo '</TABLE>';
|
||||
echo "<br/>Прием заявок до: <strong>" . (date("H:i", $ccd + 900)) . "</strong>";
|
||||
|
||||
$own = mysql_fetch_array(mysql_query("SELECT `value` FROM `variables` WHERE `var` = 'castle_owner' LIMIT 1;"));
|
||||
|
||||
if ($klan['glava'] == $user['id'] && !in_array($user['klan'], $zays) && $user['klan'] != $own['value']) {
|
||||
echo "<br />Прием заявок от глав кланов:";
|
||||
echo '<tr><td><FORM action="clan_castle.php" method=POST><INPUT TYPE="submit" value="Заявиться" name="add_zay"></FORM></td></tr>';
|
||||
}
|
||||
|
||||
} elseif (($ccd + 900) < time() && ($ccd + 90 + 900) >= time()) {
|
||||
$zays = [];
|
||||
$all_zay = mysql_query("SELECT * FROM `clan_castle`;");
|
||||
while ($a_zay = mysql_fetch_array($all_zay)) {
|
||||
$cur_c = mysql_num_rows(mysql_query("SELECT * FROM `users` WHERE `klan`='{$a_zay['clan']}' AND `room`='45';"));
|
||||
for ($cc = 0; $cc < $cur_c; $cc++) {
|
||||
$zays[] = $a_zay['clan'];
|
||||
}
|
||||
}
|
||||
$own = mysql_fetch_array(mysql_query("SELECT `value` FROM `variables` WHERE `var` = 'castle_owner' LIMIT 1;"));
|
||||
shuffle($zays);
|
||||
$lucky = $zays[array_rand($zays)];
|
||||
mysql_query("UPDATE `variables` SET `value`='{$lucky}' WHERE `var`='castle_att';");
|
||||
$tmp_k = mysql_fetch_array(mysql_query("SELECT `name` FROM `clans` WHERE `id` = '{$lucky}' LIMIT 1;"));
|
||||
|
||||
if ($own['value'] > 0) {
|
||||
$tmp_o = mysql_fetch_array(mysql_query("SELECT `name` FROM `clans` WHERE `id` = '{$own['value']}' LIMIT 1;"));
|
||||
}
|
||||
|
||||
if ($tmp_k) {
|
||||
echo 'Внимание!<img title="' . $tmp_k['name'] . '" src="i/clan/' . $tmp_k['name'] . '.png"><strong>' . $tmp_k['name'] . '</strong> собираются штурмовать замок';
|
||||
}
|
||||
if ($tmp_k && $own['value'] > 0) {
|
||||
echo '<img title="' . $tmp_o['name'] . '" src="i/clan/' . $tmp_o['name'] . '.png"><strong>' . $tmp_o['name'] . '</strong>!';
|
||||
}
|
||||
if ($tmp_k && !$own['value'] > 0) {
|
||||
echo '!';
|
||||
}
|
||||
} elseif (($ccd + 90 + 900) <= time()) {
|
||||
$att = mysql_fetch_array(mysql_query("SELECT `value` FROM `variables` WHERE `var` = 'castle_att' LIMIT 1;"));
|
||||
$own = mysql_fetch_array(mysql_query("SELECT `value` FROM `variables` WHERE `var` = 'castle_owner' LIMIT 1;"));
|
||||
|
||||
$at_t = [];
|
||||
$ow_t = [];
|
||||
|
||||
if ($att['value'] > 0) {
|
||||
$att_r = mysql_query("SELECT `id` FROM `users` WHERE `klan`='{$att['value']}' AND `room`='45';");
|
||||
while ($a = mysql_fetch_array($att_r)) {
|
||||
$at_on = mysql_fetch_array(mysql_query("select `id` from `online` WHERE login_time >= " . (time() - 60) . " AND `id` = '{$a['id']}' LIMIT 1;"));
|
||||
if ($at_on[0]) {
|
||||
$at_t[] = $a['id'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($own['value'] > 0) {
|
||||
$def_r = mysql_query("SELECT `id` FROM `users` WHERE `klan`='{$own['value']}' AND `room`='45';");
|
||||
while ($o = mysql_fetch_array($def_r)) {
|
||||
$df_on = mysql_fetch_array(mysql_query("select `id` from `online` WHERE login_time >= " . (time() - 60) . " AND `id` = '{$o['id']}' LIMIT 1;"));
|
||||
if ($df_on[0]) {
|
||||
$ow_t[] = $o['id'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($at_t)) {
|
||||
echo "Смелых так и не нашлось...<br/>";
|
||||
} elseif (empty($ow_t) && ($own['value'] > 0)) {
|
||||
echo "Хозяева слили замок без боя...<br/>";
|
||||
$cc_own = mysql_fetch_array(mysql_query("SELECT `value` FROM variables WHERE var='castle_owner' LIMIT 1;"));
|
||||
$cc_k = mysql_fetch_array(mysql_query("SELECT `name` FROM `clans` WHERE `id` = '{$cc_own['value']}' LIMIT 1;"));
|
||||
$cc_att = mysql_fetch_array(mysql_query("SELECT `value` FROM variables WHERE var='castle_att' LIMIT 1;"));
|
||||
$cc_a = mysql_fetch_array(mysql_query("SELECT `name` FROM `clans` WHERE `id` = '{$cc_att['value']}' LIMIT 1;"));
|
||||
|
||||
Chat::addSYSMessage('Клан <img title="' . $cc_a['name'] . '" src="i/clan/' . $cc_a['name'] . '.png">' . $cc_a['name'] . ' без боя забрал у <strong>клана <img title="' . $cc_k['name'] . '" src="i/clan/' . $cc_k['name'] . '.gif">' . $cc_k['name'] . '</strong> Замок Мэра');
|
||||
|
||||
|
||||
$c_prev = mysql_fetch_array(mysql_query("SELECT `glava`,`align` FROM `clans` WHERE `id`='{$own['value']}' LIMIT 1;"));
|
||||
mysql_query("UPDATE `users` SET `align`='{$c_prev['align']}',`abil`='' WHERE `id`='{$c_prev['glava']}';");
|
||||
|
||||
mysql_query("UPDATE `variables` SET `value`='{$att['value']}' WHERE `var`='castle_owner';");
|
||||
mysql_query("UPDATE `variables` SET `value`='0' WHERE `var`='castle_att';");
|
||||
mysql_query("UPDATE `variables` SET `value`='{$tm}' WHERE `var`='cc_time';");
|
||||
|
||||
$c_lead = mysql_fetch_array(mysql_query("SELECT `glava` FROM `clans` WHERE `id`='{$att['value']}' LIMIT 1;"));
|
||||
$abil = [];
|
||||
for ($i = 0; $i < 10; $i++) {
|
||||
$abil[$i] = 9;
|
||||
}
|
||||
mysql_query("UPDATE `users` SET `align`='7.97',`abil`='" . serialize($abil) . "' WHERE `id`='{$c_lead['glava']}';");
|
||||
mysql_query("DELETE FROM `clan_castle`");
|
||||
} elseif ($own['value'] == 0) {
|
||||
//побоище против ботов
|
||||
//ставим ботов
|
||||
$bots_raw = ["2897", "2897", "2897", "2897", "2897", "2897", "2897", "2897", "2897", "2897", "4150", "4150", "4156", "4156", "4156", "4156",
|
||||
"2895", "2895", "4158", "4158", "4158", "4158", "4158", "2900"];
|
||||
$bots = [];
|
||||
foreach ($bots_raw as $bot_id) {
|
||||
if ($bot_id > 0) {
|
||||
$b_pers = mysql_fetch_array(mysql_query("SELECT `login`,`maxhp` FROM users WHERE id='{$bot_id}' LIMIT 1;"));
|
||||
$bot_hp = $b_pers['maxhp'];
|
||||
$bot_name = $b_pers['login'];
|
||||
$nb = mysql_fetch_array(mysql_query("SELECT count(`id`) FROM `bots` WHERE `name` LIKE '" . $bot_name . "%';"));
|
||||
mysql_query("INSERT INTO `bots` (`name`,`prototype`,`battle`,`hp`) values ('" . $bot_name . " " . ($nb[0] + 1) . "','" . $bot_id . "','','" . $bot_hp . "');");
|
||||
$bots[] = mysql_insert_id();
|
||||
}
|
||||
}
|
||||
//отаке!
|
||||
$teams = [];
|
||||
foreach ($at_t as $b) {
|
||||
foreach ($bots as $gf) {
|
||||
$teams[$gf][$b] = [0, 0, time()];
|
||||
$teams[$b][$gf] = [0, 0, time()];
|
||||
}
|
||||
}
|
||||
mysql_query("INSERT INTO `battle`
|
||||
(
|
||||
`id`,`coment`,`teams`,`timeout`,`type`,`status`,`t1`,`t2`,`to1`,`to2`,`blood`
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
NULL,'','" . serialize($teams) . "','3','1','0','" . implode(";", $at_t) . "','" . implode(";", $bots) . "','" . time() . "','" . time() . "','0'
|
||||
)");
|
||||
|
||||
$id = mysql_insert_id();
|
||||
// создаем лог
|
||||
$rr = "<b>";
|
||||
|
||||
foreach ($at_t as $k => $v) {
|
||||
if ($k != 0) {
|
||||
$rr .= ", ";
|
||||
$rrc .= ", ";
|
||||
}
|
||||
$rr .= Nick::id($v)->full(1);
|
||||
$rrc .= Nick::id($v)->short();
|
||||
addchp('<font color=red>Внимание!</font> Ваш бой начался!<BR>\'; top.frames[\'main\'].location=\'fbattle.php\'; var z = \' ', '{[]}' . Nick::id($v)->short() . '{[]}');
|
||||
}
|
||||
$rr .= "</b> и <b>";
|
||||
$rrc .= "</b> и <b>";
|
||||
foreach ($bots as $k => $v) {
|
||||
if ($k != 0) {
|
||||
$rr .= ", ";
|
||||
$rrc .= ", ";
|
||||
}
|
||||
$rr .= Nick::id($v)->full(1);
|
||||
$rrc .= Nick::id($v)->short();
|
||||
}
|
||||
$rr .= "</b>";
|
||||
addch("<a href=logs.php?log=" . $id . " target=_blank>Поединок</a> между <B>" . $rrc . "</B> начался. ", $user->getRoom());
|
||||
mysql_query("INSERT INTO `logs` (`id`,`log`) VALUES('{$id}','Часы показывали <span class=date>" . date("Y.m.d H.i") . "</span>, когда " . $rr . " бросили вызов друг другу. <BR>');");
|
||||
|
||||
GameLogs::addBattleLog($id, "Часы показывали <span class=date>" . date("Y.m.d H.i") . "</span>, когда " . $rr . " бросили вызов друг другу. <BR>");
|
||||
$add_time = time();
|
||||
// всех в БОЙ!!!
|
||||
foreach ($at_t as $k => $v) {
|
||||
mysql_query("UPDATE users SET `battle` ={$id},`zayavka`=0 WHERE `id`= {$v}");
|
||||
}
|
||||
foreach ($bots as $k => $v) {
|
||||
mysql_query("UPDATE `bots` SET `battle` ={$id} WHERE `id`= {$v}");
|
||||
}
|
||||
mysql_query("DELETE FROM `clan_castle`");
|
||||
} elseif (!empty($at_t) && !empty($ow_t)) {
|
||||
//побоище
|
||||
|
||||
$teams = [];
|
||||
foreach ($at_t as $b) {
|
||||
foreach ($ow_t as $gf) {
|
||||
$teams[$gf][$b] = [0, 0, time()];
|
||||
$teams[$b][$gf] = [0, 0, time()];
|
||||
}
|
||||
}
|
||||
|
||||
mysql_query("INSERT INTO `battle`
|
||||
(
|
||||
`id`,`coment`,`teams`,`timeout`,`type`,`status`,`t1`,`t2`,`to1`,`to2`,`blood`
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
NULL,'','" . serialize($teams) . "','3','1','0','" . implode(";", $at_t) . "','" . implode(";", $ow_t) . "','" . time() . "','" . time() . "','0'
|
||||
)");
|
||||
|
||||
$id = mysql_insert_id();
|
||||
// создаем лог
|
||||
$rr = "<b>";
|
||||
|
||||
foreach ($at_t as $k => $v) {
|
||||
if ($k != 0) {
|
||||
$rr .= ", ";
|
||||
$rrc .= ", ";
|
||||
}
|
||||
$rr .= Nick::id($v)->full(1);
|
||||
$rrc .= Nick::id($v)->short();
|
||||
addchp('<font color=red>Внимание!</font> Ваш бой начался!<BR>\'; top.frames[\'main\'].location=\'fbattle.php\'; var z = \' ', '{[]}' . Nick::id($v)->short() . '{[]}');
|
||||
}
|
||||
$rr .= "</b> и <b>";
|
||||
$rrc .= "</b> и <b>";
|
||||
foreach ($ow_t as $k => $v) {
|
||||
if ($k != 0) {
|
||||
$rr .= ", ";
|
||||
$rrc .= ", ";
|
||||
}
|
||||
$rr .= Nick::id($v)->full(1);
|
||||
$rrc .= Nick::id($v)->short();
|
||||
addchp('<font color=red>Внимание!</font> Ваш бой начался!<BR>\'; top.frames[\'main\'].location=\'fbattle.php\'; var z = \' ', '{[]}' . Nick::id($v)->short() . '{[]}');
|
||||
}
|
||||
$rr .= "</b>";
|
||||
addch("<a href=logs.php?log=" . $id . " target=_blank>Поединок</a> между <B>" . $rrc . "</B> начался. ", $user->getRoom());
|
||||
mysql_query("INSERT INTO `logs` (`id`,`log`) VALUES('{$id}','Часы показывали <span class=date>" . date("Y.m.d H.i") . "</span>, когда " . $rr . " бросили вызов друг другу. <BR>');");
|
||||
|
||||
GameLogs::addBattleLog($id, "Часы показывали <span class=date>" . date("Y.m.d H.i") . "</span>, когда " . $rr . " бросили вызов друг другу. <BR>");
|
||||
$add_time = time();
|
||||
// всех в БОЙ!!!
|
||||
foreach ($at_t as $k => $v) {
|
||||
mysql_query("UPDATE users SET `battle` ={$id},`zayavka`=0 WHERE `id`= {$v}");
|
||||
}
|
||||
foreach ($ow_t as $k => $v) {
|
||||
mysql_query("UPDATE users SET `battle` ={$id},`zayavka`=0 WHERE `id`= {$v}");
|
||||
}
|
||||
mysql_query("DELETE FROM `clan_castle`");
|
||||
}
|
||||
$tm = time() + 23 * 60 * 60;
|
||||
mysql_query("UPDATE `variables` SET `value`='0' WHERE `var`='castle_att';");
|
||||
mysql_query("UPDATE `variables` SET `value`='{$tm}' WHERE `var`='cc_time';");
|
||||
mysql_query("DELETE FROM `clan_castle`");
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div align=right><img width="260" src="i/castle.jpg"></div>
|
@ -1,28 +1,30 @@
|
||||
<?php
|
||||
|
||||
// Здание регистратуры!
|
||||
use Battles\Bank;
|
||||
use Battles\GameConfigs;
|
||||
use Battles\Rooms;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
use Battles\Database\Db;
|
||||
|
||||
require_once 'functions.php';
|
||||
$userClan = db::c()->query('SELECT short_name, full_name, info FROM clans where owner_id = ?i', $user->getId())->fetch_object();
|
||||
$userClan = Db::getInstance()->ofetch('select * from clans where owner_id = ?', User::getInstance()->getId());
|
||||
$clanFullName = $_POST['clan_full_name'] ?? '';
|
||||
$clanShortName = $_POST['clan_short_name'] ?? '';
|
||||
$clanInfo = $_POST['clan_info'] ?? '';
|
||||
$userBank = new Bank($user->getId());
|
||||
$userBank = new Bank(User::getInstance()->getId());
|
||||
if ($clanFullName && $clanShortName && $clanInfo && !$userClan) {
|
||||
|
||||
$eff = db::c()->query('SELECT 1 FROM users_effects WHERE type = 20 AND owner_id = ?i', $user->getId());
|
||||
$name_check = db::c()->query('SELECT owner_id FROM clans WHERE full_name = "?s" OR short_name = "?s"', $clanFullName, $clanShortName);
|
||||
$eff = Db::getInstance()->execute('select count(*) from users_effects where type = 20 and owner_id = ?', User::getInstance()->getId())->fetchColumn();
|
||||
$name_check = Db::getInstance()->execute('select count(*) from clans where full_name = ? or short_name = ?', [$clanFullName, $clanShortName])->fetchColumn();
|
||||
$errorMessage = [];
|
||||
if (GameConfigs::CLAN['clan_register_lock']) {
|
||||
$errorMessage[10] = 'Регистрация кланов закрыта! <BR>';
|
||||
}
|
||||
if ($user->getAlign()) {
|
||||
if (User::getInstance()->getAlign()) {
|
||||
$errorMessage[0] = 'Вы уже имеете направленность!. <BR>';
|
||||
}
|
||||
if ($user->getClan()) {
|
||||
if (User::getInstance()->getClan()) {
|
||||
$errorMessage[1] = 'Вы уже состоите в клане!. <BR>';
|
||||
}
|
||||
if (GameConfigs::CLAN['clan_register_cost'] >= $userBank->getMoney()) {
|
||||
@ -34,11 +36,11 @@ if ($clanFullName && $clanShortName && $clanInfo && !$userClan) {
|
||||
if (!$name_check) {
|
||||
$errorMessage[4] = 'Клан с такими данными уже существует.<br>';
|
||||
}
|
||||
if (!$errorMessage || $user->getAdmin()) {
|
||||
if (!$errorMessage || User::getInstance()->getAdmin()) {
|
||||
try {
|
||||
db::c()->query('INSERT INTO clans (owner_id, full_name, short_name, info) VALUES (?i,"?s","?s","?s")', $user->getId(), $clanFullName, $clanShortName, $clanInfo);
|
||||
Db::getInstance()->execute('insert into clans (owner_id, full_name, short_name, info) values (?,?,?,?)', [User::getInstance()->getId(), $clanFullName, $clanShortName, $clanInfo]);
|
||||
$userBank->setMoney($userBank->getMoney() - GameConfigs::CLAN['clan_register_cost']);
|
||||
Battles\Bank::setBankMoney($userBank->getMoney(), $user->getId(), 'clanRegister');
|
||||
Battles\Bank::setBankMoney($userBank->getMoney(), User::getInstance()->getId(), 'clanRegister');
|
||||
// Заглушка для отображения данных по только что зарегистрированному клану, когда запрос в базу в начале файла ещё не проходит.
|
||||
$userClan = new stdClass();
|
||||
$userClan->full_name = $clanFullName;
|
||||
@ -61,10 +63,16 @@ if ($userClan): ?>
|
||||
<div>
|
||||
<fieldset style="display: inline;">
|
||||
<legend>Заявка на регистрацию</legend>
|
||||
<input size=30 disabled value="<?= $userClan->full_name ?>">
|
||||
<input size=30 disabled value="<?= $userClan->short_name ?>"><BR>
|
||||
<label>
|
||||
<input size=30 disabled value="<?= $userClan->full_name ?>">
|
||||
</label>
|
||||
<label>
|
||||
<input size=30 disabled value="<?= $userClan->short_name ?>">
|
||||
</label><BR>
|
||||
<BR>
|
||||
<textarea cols=80 rows=10 disabled><?= nl2br($userClan->info) ?></textarea><BR>
|
||||
<label>
|
||||
<textarea cols=80 rows=10 disabled><?= nl2br($userClan->info) ?></textarea>
|
||||
</label><BR>
|
||||
<button disabled>Заявка подана и рассматривается</button>
|
||||
</fieldset>
|
||||
</div>
|
||||
@ -73,12 +81,18 @@ if ($userClan): ?>
|
||||
<form method="post">
|
||||
<fieldset style="display: inline;">
|
||||
<legend>Заявка на регистрацию</legend>
|
||||
<input size=30 name="clan_full_name" placeholder="Название клана" value="<?= $clanFullName ?>">
|
||||
<input size=30 name="clan_short_name" maxlength="5" placeholder="Английская аббревиатура"
|
||||
value="<?= $clanShortName ?>"><BR>
|
||||
<label>
|
||||
<input size=30 name="clan_full_name" placeholder="Название клана" value="<?= $clanFullName ?>">
|
||||
</label>
|
||||
<label>
|
||||
<input size=30 name="clan_short_name" maxlength="5" placeholder="Английская аббревиатура"
|
||||
value="<?= $clanShortName ?>">
|
||||
</label><BR>
|
||||
<BR>
|
||||
<textarea cols=80 rows=10 name="clan_info"
|
||||
placeholder="Информация о клане для энциклопедии"><?= nl2br($clanInfo) ?></textarea><BR>
|
||||
<label>
|
||||
<textarea cols=80 rows=10 name="clan_info"
|
||||
placeholder="Информация о клане для энциклопедии"><?= nl2br($clanInfo) ?></textarea>
|
||||
</label><BR>
|
||||
<input type="submit" value="Подать заявку">
|
||||
</fieldset>
|
||||
</form>
|
||||
|
15
clans.php
15
clans.php
@ -1,22 +1,25 @@
|
||||
<?php
|
||||
/**
|
||||
/** Список кланов и игроков в клане?
|
||||
* Copyright (c) 2018.
|
||||
* Author: Igor Barkov <lopar.4ever@gmail.com>
|
||||
* Project name: Battles-Game
|
||||
*/
|
||||
\Battles\Template::header('Список кланов');
|
||||
|
||||
use Battles\Template;
|
||||
|
||||
Template::header('Список кланов');
|
||||
include_once "config.php";
|
||||
$claninf = urldecode(filter_input(INPUT_SERVER,'QUERY_STRING'));
|
||||
|
||||
if ($claninf AND ($query = db::c()->query('SELECT * FROM `clans` WHERE `name` = "?s"', $claninf)->fetch_assoc())) {
|
||||
if ($claninf && ($query = db::c()->query('SELECT * FROM `clans` WHERE `name` = "?s"', $claninf)->fetch_assoc())) {
|
||||
echo "<h1>{$query['name']}</h1><p>{$query['descr']}</p>";
|
||||
$clanlist = db::c()->query('SELECT `login`,`status` FROM `users` WHERE `klan` = ?i',$query['id']);
|
||||
while ($member = $clanlist->fetch_assoc()) {
|
||||
$clanlist = \Battles\Database\Db::getInstance()->execute('select login from users where clan = ?', $claninf);
|
||||
while ($member = $clanlist->fetch()) {
|
||||
echo "<img src=i/align_",$query['align'],".png> <img src=i/clan/",$query['short'],".png> ",$member['login']," - ",$member['status'],"<br>";
|
||||
}
|
||||
} else {
|
||||
echo "<h1>Список кланов</h1>";
|
||||
$query = db::c()->query('SELECT `align`,`name`,`short` FROM `clans` ORDER BY `name` ASC');
|
||||
$query = db::c()->query('SELECT `align`,`name`,`short` FROM `clans` ORDER BY `name`');
|
||||
while ($clanrow = $query->fetch_assoc()) {
|
||||
$frm = "<img src='i/align_%s.png'> <img src='i/clan/%s.png'> <a href='?%s'>%s</a><br>";
|
||||
echo sprintf($frm,$clanrow['align'],$clanrow['short'],$clanrow['name'],$clanrow['name']);
|
||||
|
@ -8,7 +8,7 @@
|
||||
namespace Battles;
|
||||
|
||||
use Exceptions\GameException;
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Throwable;
|
||||
|
||||
class Bank
|
||||
@ -16,7 +16,6 @@ class Bank
|
||||
public int $user_id = 0;
|
||||
private int $money = 0;
|
||||
private $user;
|
||||
private static DBPDO $db;
|
||||
|
||||
const ERROR_NO_MONEY_IN_WALLET = "Ошибка! Нет денег в кошельке!";
|
||||
const ERROR_NO_BANK_ACCOUNT = "Ошибка! Счёта не существует!";
|
||||
@ -33,9 +32,8 @@ class Bank
|
||||
|
||||
public function __construct(int $user_id)
|
||||
{
|
||||
self::$db = DBPDO::INIT();
|
||||
$bank_row = self::$db->fetch('SELECT user_id, money FROM bank WHERE user_id = ?', $user_id);
|
||||
$this->user = self::$db->fetch('SELECT money FROM users WHERE id = ?', $user_id);
|
||||
$bank_row = Db::getInstance()->fetch('SELECT user_id, money FROM bank WHERE user_id = ?', $user_id);
|
||||
$this->user = Db::getInstance()->fetch('SELECT money FROM users WHERE id = ?', $user_id);
|
||||
foreach ($this as $key => $value) {
|
||||
if (isset($bank_row[$key])) {
|
||||
$this->$key = $bank_row[$key];
|
||||
@ -70,9 +68,9 @@ class Bank
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private function bankLogs(int $receiverId, int $amount, string $operationType, int $senderId = 0): void
|
||||
private function bankLogs(int $receiverId, int $amount, string $operationType, int $senderId = null): void
|
||||
{
|
||||
if (!$senderId) {
|
||||
if (is_null($senderId)) {
|
||||
$senderId = $this->user_id;
|
||||
}
|
||||
$text = self::LOG[$operationType];
|
||||
@ -98,7 +96,7 @@ class Bank
|
||||
*/
|
||||
public function sendMoney(int $receiver, int $amount): int
|
||||
{
|
||||
$receiverWallet = self::$db->fetch('SELECT money FROM bank WHERE user_id = ?', $receiver);
|
||||
$receiverWallet = Db::getInstance()->ofetch('SELECT money FROM bank WHERE user_id = ?', $receiver);
|
||||
if ($amount <= 0) {
|
||||
throw new GameException(self::ERROR_WRONG_AMOUNT);
|
||||
}
|
||||
@ -134,8 +132,8 @@ class Bank
|
||||
if ($amount <= 0) {
|
||||
throw new GameException(self::ERROR_WRONG_AMOUNT);
|
||||
}
|
||||
$wallet = self::$db->fetch('SELECT money FROM users WHERE id = ?', $this->user_id);
|
||||
if ($wallet->money < $amount) {
|
||||
$walletMoney = Db::getInstance()->fetchColumn('SELECT money FROM users WHERE id = ?', $this->user_id);
|
||||
if ($walletMoney < $amount) {
|
||||
throw new GameException(self::ERROR_NO_MONEY_IN_WALLET);
|
||||
}
|
||||
// Забираем деньги из кошелька получателя
|
||||
@ -195,7 +193,7 @@ class Bank
|
||||
public static function setBankMoney(int $amount, int $user_id, string $operationType = ''): void
|
||||
{
|
||||
try {
|
||||
self::$db->execute('UPDATE bank SET money = ? WHERE user_id = ?', [$amount, $user_id]);
|
||||
Db::getInstance()->execute('UPDATE bank SET money = ? WHERE user_id = ?', [$amount, $user_id]);
|
||||
if ($operationType) {
|
||||
GameLogs::addBankLog(0, 0, $amount, $operationType, self::LOG[$operationType]);
|
||||
}
|
||||
@ -215,9 +213,8 @@ class Bank
|
||||
*/
|
||||
public static function setWalletMoney(int $amount, int $user_id): void
|
||||
{
|
||||
$u = new User($user_id);
|
||||
$u->setMoney($amount);
|
||||
$u->saveMoney();
|
||||
User::getInstance($user_id)->setMoney($amount);
|
||||
User::getInstance($user_id)->saveMoney();
|
||||
}
|
||||
|
||||
public function getMoney(): int
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
namespace Battles;
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use DateTime;
|
||||
use Exception;
|
||||
|
||||
class Chat
|
||||
{
|
||||
private DateTime $d;
|
||||
private DBPDO $db;
|
||||
private Db $db;
|
||||
|
||||
public function __construct(DBPDO $db)
|
||||
public function __construct(Db $db)
|
||||
{
|
||||
$this->db = $db;
|
||||
}
|
||||
@ -34,7 +34,7 @@ class Chat
|
||||
or r.id is null
|
||||
or s.id = ?
|
||||
order by chat.id';
|
||||
$chatrows = $this->db->ofetchALL($query, [User::$current->getId(), User::$current->getId()]);
|
||||
$chatrows = $this->db->ofetchALL($query, [User::getInstance()->getId(), User::getInstance()->getId()]);
|
||||
$wrappedMessage = null;
|
||||
foreach ($chatrows as $row) {
|
||||
try {
|
||||
@ -45,7 +45,7 @@ class Chat
|
||||
$m = htmlspecialchars($row->msg);
|
||||
if ($row->type === 'sys' && empty($row->rid)) {
|
||||
$wrappedMessage .= sprintf('<span class="chatsys">%s %s</span><br>', $this->d->format('H:i'), $m);
|
||||
} elseif ($row->rid === User::$current->getId()) {
|
||||
} elseif ($row->rid === User::getInstance()->getId()) {
|
||||
if ($row->type === 'sys') {
|
||||
$wrappedMessage .= sprintf('<span class="chatsys">%s [Система] → %s</span><br>', $this->d->format('H:i'), $m);
|
||||
} elseif ($row->type == 'sms') {
|
||||
@ -64,12 +64,12 @@ class Chat
|
||||
|
||||
public function addMessage(string $msg)
|
||||
{
|
||||
$this->db->execute('insert into chat (user_id, msg) values (?,?)', [User::$current->getId(), $msg]);
|
||||
$this->db->execute('insert into chat (user_id, msg) values (?,?)', [User::getInstance()->getId(), $msg]);
|
||||
}
|
||||
|
||||
public static function addSYSMessage( string $msg, ?int $receiver_id = null)
|
||||
{
|
||||
DBPDO::$db->execute('insert into chat (user_id, msg, receiver_id, type) values (?,?,?,?)', [User::$current->getId(), $msg, $receiver_id, 'sys']);
|
||||
Db::getInstance()->execute('insert into chat (user_id, msg, receiver_id, type) values (?,?,?,?)', [User::getInstance()->getId(), $msg, $receiver_id, 'sys']);
|
||||
}
|
||||
|
||||
}
|
@ -3,19 +3,19 @@
|
||||
|
||||
namespace Battles;
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
|
||||
class Check
|
||||
{
|
||||
private User $user;
|
||||
private DBPDO $db;
|
||||
private Db $db;
|
||||
|
||||
/**
|
||||
* Check constructor.
|
||||
*
|
||||
* @param User $user
|
||||
*/
|
||||
public function __construct(User $user, DBPDO $db)
|
||||
public function __construct(User $user, Db $db)
|
||||
{
|
||||
$this->user = $user;
|
||||
$this->db = $db;
|
||||
|
@ -2,104 +2,105 @@
|
||||
# Date: 23.08.2021 (23:05)
|
||||
namespace Battles;
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
|
||||
class Clan
|
||||
{
|
||||
private DBPDO $db;
|
||||
private User $user;
|
||||
private static ?self $_instance = null;
|
||||
private $clan;
|
||||
public static Clan $current;
|
||||
|
||||
public function __construct()
|
||||
private function __construct()
|
||||
{
|
||||
$this->db = DBPDO::$db;
|
||||
$this->user = User::$current;
|
||||
$this->clan = $this->db->ofetch('select * from clans where owner_id = ?', $this->user->getId());
|
||||
$this->clan = Db::getInstance()->ofetch('select * from clans where owner_id = ?', User::getInstance()->getId());
|
||||
}
|
||||
|
||||
public static function getInstance(): self
|
||||
{
|
||||
if (is_null(self::$_instance)) {
|
||||
self::$_instance = new self();
|
||||
}
|
||||
return self::$_instance;
|
||||
}
|
||||
|
||||
public function addMember(string $login): string
|
||||
{
|
||||
$target = new User($login);
|
||||
$error = null;
|
||||
if (!$this->getProverka($target->getId())) {
|
||||
if (!$this->getProverka(User::getInstance($login)->getId())) {
|
||||
$error .= '<br>Нет проверки!';
|
||||
}
|
||||
if ($target->getClan()) {
|
||||
if (User::getInstance($login)->getClan()) {
|
||||
$error .= '<br>Персонаж уже состоит в клане!';
|
||||
}
|
||||
if ($target->getLevel() < 1) {
|
||||
if (User::getInstance($login)->getLevel() < 1) {
|
||||
$error .= '<br>Персонаж 0 уровня не может быть принят!';
|
||||
}
|
||||
if ($this->user->getMoney() < GameConfigs::CLAN['add_member_cost']) {
|
||||
if (User::getInstance()->getMoney() < GameConfigs::CLAN['add_member_cost']) {
|
||||
$error .= '<br>Недостаточно денег!';
|
||||
}
|
||||
if ($error) {
|
||||
return $error;
|
||||
}
|
||||
$this->user->setMoney($this->user->getMoney() - GameConfigs::CLAN['add_member_cost']);
|
||||
$this->user->saveMoney();
|
||||
$target->setClan($this->user->getClan());
|
||||
User::getInstance()->setMoney(User::getInstance()->getMoney() - GameConfigs::CLAN['add_member_cost']);
|
||||
User::getInstance()->saveMoney();
|
||||
User::getInstance($login)->setClan(User::getInstance()->getClan());
|
||||
return "Персонаж «{$login}» успешно принят в клан.";
|
||||
}
|
||||
|
||||
public function removeMember(string $login): string
|
||||
{
|
||||
$target = new User($login);
|
||||
$error = null;
|
||||
if ($this->user->getMoney() < GameConfigs::CLAN['remove_member_cost']) {
|
||||
if (User::getInstance()->getMoney() < GameConfigs::CLAN['remove_member_cost']) {
|
||||
$error .= '<br>Недостаточно денег!';
|
||||
}
|
||||
if ($target->getId() === $this->user->getId()) {
|
||||
if (User::getInstance($login)->getId() === User::getInstance()->getId()) {
|
||||
$error .= '<br>Себя выгонять нельзя!';
|
||||
}
|
||||
if ($target->getClan() !== $this->user->getClan()) {
|
||||
if (User::getInstance($login)->getClan() !== User::getInstance()->getClan()) {
|
||||
$error .= '<br>Персонаж не состоит в этом клане!';
|
||||
}
|
||||
if ($error) {
|
||||
return $error;
|
||||
}
|
||||
$this->user->setMoney($this->user->getMoney() - GameConfigs::CLAN['remove_member_cost']);
|
||||
$this->user->saveMoney();
|
||||
$target->setClan(null);
|
||||
User::getInstance()->setMoney(User::getInstance()->getMoney() - GameConfigs::CLAN['remove_member_cost']);
|
||||
User::getInstance()->saveMoney();
|
||||
User::getInstance($login)->setClan(null);
|
||||
return "Персонаж «{$login}» покинул клан.";
|
||||
}
|
||||
|
||||
public function changeOwner(string $login): string
|
||||
{
|
||||
$target = new User($login);
|
||||
$error = null;
|
||||
if ($target->getId() === $this->user->getId()) {
|
||||
if (User::getInstance($login)->getId() === User::getInstance()->getId()) {
|
||||
$error .= '<br>Самоудовлетворяетесь? ;)';
|
||||
}
|
||||
if ($target->getClan() !== $this->user->getClan()) {
|
||||
if (User::getInstance($login)->getClan() !== User::getInstance()->getClan()) {
|
||||
$error .= '<br>Персонаж не состоит в этом клане!';
|
||||
}
|
||||
if ($error) {
|
||||
return $error;
|
||||
}
|
||||
$this->db->execute('update clans set owner_id = ? where owner_id = ?', [$target->getId(), $this->user->getId()]);
|
||||
Db::getInstance()->execute('update clans set owner_id = ? where owner_id = ?', [User::getInstance($login)->getId(), User::getInstance()->getId()]);
|
||||
return 'Вы передали управление кланом персонажу «' . $login . '».';
|
||||
}
|
||||
|
||||
public function setClanInfo(string $text): string
|
||||
{
|
||||
$check = $this->db->ofetch('select id from users where clan = (select short_name from clans where owner_id = ?)', $this->user->getId());
|
||||
if ($check->id !== $this->user->getId()) {
|
||||
$checkId = Db::getInstance()->fetchColumn('select id from users where clan = (select short_name from clans where owner_id = ?)', User::getInstance()->getId());
|
||||
if ($checkId !== User::getInstance()->getId()) {
|
||||
return 'Ошибка доступа!';
|
||||
}
|
||||
$this->db->execute('update clans set info = ? where owner_id = ?', [$text, $check->id]);
|
||||
Db::getInstance()->execute('update clans set info = ? where owner_id = ?', [$text, $checkId]);
|
||||
return 'Описание клана изменено!';
|
||||
}
|
||||
|
||||
public function getMemberlist(): array
|
||||
{
|
||||
return $this->db->ofetchAll('select id, (select 1 from clans where short_name = clan and owner_id = id) as clan_owner, room from users where clan = ? order by clan_owner desc, room, login', $this->user->getClan());
|
||||
return Db::getInstance()->fetchAll('select id, (select 1 from clans where short_name = clan and owner_id = id) as clan_owner, room from users where clan = ? order by clan_owner desc, room, login', User::getInstance()->getClan());
|
||||
}
|
||||
|
||||
private function getProverka($user_id)
|
||||
{
|
||||
return $this->db->fetch('select 1 from users_effects where type = 20 and owner_id = ?', $user_id);
|
||||
return Db::getInstance()->fetchColumn('select count(*) from users_effects where type = 20 and owner_id = ?', $user_id);
|
||||
}
|
||||
|
||||
public function getClanOwnerId(): ?int
|
||||
|
@ -1,154 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Battles\Database;
|
||||
use Battles\GameConfigs;
|
||||
use PDO, PDOException;
|
||||
class DBPDO
|
||||
{
|
||||
|
||||
public $pdo;
|
||||
private static $_instance = null;
|
||||
public static DBPDO $db;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->connect();
|
||||
}
|
||||
|
||||
public static function INIT(): DBPDO
|
||||
{
|
||||
if (!self::$_instance) {
|
||||
self::$_instance = new DBPDO();
|
||||
}
|
||||
return self::$_instance;
|
||||
}
|
||||
|
||||
function prep_query($query)
|
||||
{
|
||||
return $this->pdo->prepare($query);
|
||||
}
|
||||
|
||||
|
||||
function connect():bool
|
||||
{
|
||||
if (!$this->pdo) {
|
||||
|
||||
$dsn = 'mysql:dbname=' . GameConfigs::DATABASE_NAME . ';host=' . GameConfigs::DATABASE_HOST . ';port=' . GameConfigs::DATABASE_PORT . ';charset=utf8;';
|
||||
$user = GameConfigs::DATABASE_USER;
|
||||
$password = GameConfigs::DATABASE_PASS;
|
||||
|
||||
try {
|
||||
$this->pdo = new PDO($dsn, $user, $password, array(PDO::ATTR_PERSISTENT => true));
|
||||
return true;
|
||||
} catch (PDOException $e) {
|
||||
die($e->getMessage());
|
||||
}
|
||||
} else {
|
||||
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function table_exists($table_name)
|
||||
{
|
||||
$stmt = $this->prep_query('SHOW TABLES LIKE ?');
|
||||
$stmt->execute(array($table_name));
|
||||
return $stmt->rowCount() > 0;
|
||||
}
|
||||
|
||||
|
||||
function execute($query, $values = null)
|
||||
{
|
||||
if ($values == null) {
|
||||
$values = array();
|
||||
} else if (!is_array($values)) {
|
||||
$values = array($values);
|
||||
}
|
||||
$stmt = $this->prep_query($query);
|
||||
$stmt->execute($values);
|
||||
return $stmt;
|
||||
}
|
||||
|
||||
function fetch($query, $values = null)
|
||||
{
|
||||
if ($values == null) {
|
||||
$values = array();
|
||||
} else if (!is_array($values)) {
|
||||
$values = array($values);
|
||||
}
|
||||
$stmt = $this->execute($query, $values);
|
||||
return $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
}
|
||||
|
||||
function fetchAll($query, $values = null, $key = null)
|
||||
{
|
||||
if ($values == null) {
|
||||
$values = array();
|
||||
} else if (!is_array($values)) {
|
||||
$values = array($values);
|
||||
}
|
||||
$stmt = $this->execute($query, $values);
|
||||
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
// Allows the user to retrieve results using a
|
||||
// column from the results as a key for the array
|
||||
if ($key != null && $results[0][$key]) {
|
||||
$keyed_results = array();
|
||||
foreach ($results as $result) {
|
||||
$keyed_results[$result[$key]] = $result;
|
||||
}
|
||||
$results = $keyed_results;
|
||||
}
|
||||
return $results;
|
||||
}
|
||||
|
||||
function ofetch($query, $values = null)
|
||||
{
|
||||
if ($values == null) {
|
||||
$values = array();
|
||||
} else if (!is_array($values)) {
|
||||
$values = array($values);
|
||||
}
|
||||
$stmt = $this->execute($query, $values);
|
||||
return $stmt->fetch(PDO::FETCH_OBJ);
|
||||
}
|
||||
|
||||
function ofetchAll($query, $values = null, $key = null)
|
||||
{
|
||||
if ($values == null) {
|
||||
$values = array();
|
||||
} else if (!is_array($values)) {
|
||||
$values = array($values);
|
||||
}
|
||||
$stmt = $this->execute($query, $values);
|
||||
$results = $stmt->fetchAll(PDO::FETCH_OBJ);
|
||||
|
||||
// Allows the user to retrieve results using a
|
||||
// column from the results as a key for the array
|
||||
if ($key != null && $results[0][$key]) {
|
||||
$keyed_results = (object) array();
|
||||
foreach ($results as $result) {
|
||||
$keyed_results->$result[$key] = $result;
|
||||
}
|
||||
$results = $keyed_results;
|
||||
}
|
||||
return $results;
|
||||
}
|
||||
|
||||
function lastInsertId()
|
||||
{
|
||||
return $this->pdo->lastInsertId();
|
||||
}
|
||||
|
||||
function fetchColumn($query, $values = null) {
|
||||
if (is_null($values)) {
|
||||
$values = [];
|
||||
} elseif (!is_array($values)) {
|
||||
$values = [$values];
|
||||
}
|
||||
$stmt = $this->execute($query, $values);
|
||||
return $stmt->fetchColumn();
|
||||
}
|
||||
}
|
134
classes/Battles/Database/Db.php
Normal file
134
classes/Battles/Database/Db.php
Normal file
@ -0,0 +1,134 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Battles\Database;
|
||||
|
||||
use Battles\GameConfigs;
|
||||
use PDO, PDOException;
|
||||
|
||||
class Db
|
||||
{
|
||||
|
||||
private PDO $pdo;
|
||||
private static ?self $_instance = null;
|
||||
|
||||
private function __construct()
|
||||
{
|
||||
$this->connect();
|
||||
}
|
||||
|
||||
private function connect(): void
|
||||
{
|
||||
$dsn = 'mysql:dbname=' . GameConfigs::DATABASE_NAME . ';host=' . GameConfigs::DATABASE_HOST . ';port=' . GameConfigs::DATABASE_PORT . ';charset=utf8;';
|
||||
$user = GameConfigs::DATABASE_USER;
|
||||
$password = GameConfigs::DATABASE_PASS;
|
||||
try {
|
||||
$this->pdo = new PDO($dsn, $user, $password, array(PDO::ATTR_PERSISTENT => true));
|
||||
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
|
||||
} catch (PDOException $e) {
|
||||
die($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public static function getInstance(): self
|
||||
{
|
||||
if (is_null(self::$_instance)) {
|
||||
self::$_instance = new self();
|
||||
}
|
||||
return self::$_instance;
|
||||
}
|
||||
|
||||
public function execute($query, $values = null)
|
||||
{
|
||||
if (is_null($values)) {
|
||||
$values = [];
|
||||
} elseif (!is_array($values)) {
|
||||
$values = [$values];
|
||||
}
|
||||
$stmt = $this->pdo->prepare($query);
|
||||
$stmt->execute($values);
|
||||
return $stmt;
|
||||
}
|
||||
|
||||
public function fetch($query, $values = null)
|
||||
{
|
||||
if (is_null($values)) {
|
||||
$values = [];
|
||||
} elseif (!is_array($values)) {
|
||||
$values = [$values];
|
||||
}
|
||||
$stmt = $this->execute($query, $values);
|
||||
return $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
}
|
||||
|
||||
public function fetchAll($query, $values = null, $key = null): array
|
||||
{
|
||||
if (is_null($values)) {
|
||||
$values = [];
|
||||
} elseif (!is_array($values)) {
|
||||
$values = [$values];
|
||||
}
|
||||
$stmt = $this->execute($query, $values);
|
||||
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
// Allows the user to retrieve results using a
|
||||
// column from the results as a key for the array
|
||||
if (!is_null($key) && $results[0][$key]) {
|
||||
$keyed_results = array();
|
||||
foreach ($results as $result) {
|
||||
$keyed_results[$result[$key]] = $result;
|
||||
}
|
||||
$results = $keyed_results;
|
||||
}
|
||||
return $results;
|
||||
}
|
||||
|
||||
public function ofetch($query, $values = null)
|
||||
{
|
||||
if (is_null($values)) {
|
||||
$values = [];
|
||||
} elseif (!is_array($values)) {
|
||||
$values = [$values];
|
||||
}
|
||||
$stmt = $this->execute($query, $values);
|
||||
return $stmt->fetch(PDO::FETCH_OBJ);
|
||||
}
|
||||
|
||||
public function ofetchAll($query, $values = null, $key = null): object
|
||||
{
|
||||
if (is_null($values)) {
|
||||
$values = [];
|
||||
} elseif (!is_array($values)) {
|
||||
$values = [$values];
|
||||
}
|
||||
$stmt = $this->execute($query, $values);
|
||||
$results = $stmt->fetchAll(PDO::FETCH_OBJ);
|
||||
|
||||
// Allows the user to retrieve results using a
|
||||
// column from the results as a key for the array
|
||||
if (!is_null($key) && $results[0][$key]) {
|
||||
$keyed_results = (object)[];
|
||||
foreach ($results as $result) {
|
||||
$keyed_results->$result[$key] = $result;
|
||||
}
|
||||
$results = $keyed_results;
|
||||
}
|
||||
return $results;
|
||||
}
|
||||
|
||||
public function lastInsertId()
|
||||
{
|
||||
return $this->pdo->lastInsertId();
|
||||
}
|
||||
|
||||
public function fetchColumn($query, $values = null)
|
||||
{
|
||||
if (is_null($values)) {
|
||||
$values = [];
|
||||
} elseif (!is_array($values)) {
|
||||
$values = [$values];
|
||||
}
|
||||
$stmt = $this->execute($query, $values);
|
||||
return $stmt->fetchColumn();
|
||||
}
|
||||
}
|
@ -7,7 +7,7 @@
|
||||
|
||||
namespace Battles;
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use stdClass;
|
||||
|
||||
class DressedItems
|
||||
@ -22,13 +22,13 @@ class DressedItems
|
||||
*/
|
||||
public function __construct(int $user_id)
|
||||
{
|
||||
self::$db = DBPDO::INIT();
|
||||
self::$db = Db::getInstance();
|
||||
$this->USERID = $user_id;
|
||||
}
|
||||
|
||||
public static function getDressedItemBySlot($itemSlot, $ownerId)
|
||||
{
|
||||
return self::$db->fetch('SELECT *, COUNT(1) AS count FROM inventory WHERE owner_id = ? AND dressed_slot = ?', [$ownerId, $itemSlot]);
|
||||
return self::$db->ofetch('SELECT *, COUNT(1) AS count FROM inventory WHERE owner_id = ? AND dressed_slot = ?', [$ownerId, $itemSlot]);
|
||||
}
|
||||
|
||||
public function getItemsInSlots(): stdClass
|
||||
|
@ -81,7 +81,7 @@ class GameLogs
|
||||
|
||||
public static function addBattleLog(int $battle_id, string $text)
|
||||
{
|
||||
$db = new SQLite3(__DIR__ . '../../Database/battle.logs.db');
|
||||
$db = new SQLite3(__DIR__ . '../../Database/battle.logs.getInstance');
|
||||
$row = $db->prepare('insert into newbattles (battle_id, text) values (?,?)');
|
||||
$row->bindParam(1, $battle_id, SQLITE3_INTEGER);
|
||||
$row->bindParam(2, $text, SQLITE3_TEXT);
|
||||
|
@ -1,13 +1,12 @@
|
||||
<?php
|
||||
namespace Battles;
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
|
||||
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 = 'Персонаж не соответствует требованиям!';
|
||||
@ -22,7 +21,6 @@ class InventoryItem extends Item
|
||||
parent::__construct($row);
|
||||
$this->owner_id = $row->owner_id;
|
||||
$this->present = $row->present;
|
||||
$this->db = DBPDO::INIT();
|
||||
}
|
||||
|
||||
public function printInfo()
|
||||
@ -37,13 +35,13 @@ class InventoryItem extends Item
|
||||
{
|
||||
if (in_array($this->item_type, range(1, 12))) {
|
||||
echo <<<HTML
|
||||
<a href=/main.php?edit=1&dress={$this->item_id} title='Надеть'>
|
||||
<img src="/i/sh/{$this->image}" class="item-wrap-normal" alt="">
|
||||
<a href=/main.php?edit=1&dress=$this->item_id title='Надеть'>
|
||||
<img src="/i/sh/$this->image" class="item-wrap-normal" alt="">
|
||||
</a>
|
||||
HTML;
|
||||
} else {
|
||||
echo <<<IMG
|
||||
<img src="/i/sh/{$this->image}" class="item-wrap-normal" alt="">
|
||||
<img src="/i/sh/$this->image" class="item-wrap-normal" alt="">
|
||||
IMG;
|
||||
}
|
||||
}
|
||||
@ -79,8 +77,8 @@ IMG;
|
||||
// считаем сколько ОДЕТЫХ предметов в слоте в который мы хотим одеть предмет. 1=просто вещь 1-3=шашни с кольцами
|
||||
// Count добавленный в первый запрос возвращает одну строку в любом случае.
|
||||
// fetch возвращает одну строку в любом случае.
|
||||
$weared = $this->db->ofetchAll('SELECT dressed_slot FROM inventory WHERE dressed_slot != 0 AND item_type = ? AND owner_id = ?', [$this->item_type, $this->owner_id]);
|
||||
$wearedCount = $this->db->ofetch('select count(dressed_slot) as c from inventory where dressed_slot !=0 and item_type = ? and owner_id = ?', [$this->item_type, $this->owner_id]);
|
||||
$weared = Db::getInstance()->ofetchAll('SELECT dressed_slot FROM inventory WHERE dressed_slot != 0 AND item_type = ? AND owner_id = ?', [$this->item_type, $this->owner_id]);
|
||||
$wearedCount = Db::getInstance()->ofetch('select count(dressed_slot) as c from inventory where dressed_slot !=0 and item_type = ? and owner_id = ?', [$this->item_type, $this->owner_id]);
|
||||
// Если в слоте есть предмет(ы), забиваем их массив одетых в слот предметов.
|
||||
if ($wearedCount) {
|
||||
foreach ($weared as $item) {
|
||||
@ -95,11 +93,11 @@ IMG;
|
||||
//работаем с нормальными слотами
|
||||
if ($wearedCount->c == 1) {
|
||||
//если слот занят, снимаем старый предмет и одеваем новый предмет
|
||||
$this->db->execute('UPDATE inventory SET dressed_slot = 0 WHERE dressed_slot = ? AND owner_id = ?', [$itemInSlot[0], $this->owner_id]);
|
||||
$this->db->execute('UPDATE inventory SET dressed_slot = item_type WHERE item_id = ? AND owner_id = ?', [$this->item_id, $this->owner_id]);
|
||||
Db::getInstance()->execute('UPDATE inventory SET dressed_slot = 0 WHERE dressed_slot = ? AND owner_id = ?', [$itemInSlot[0], $this->owner_id]);
|
||||
Db::getInstance()->execute('UPDATE inventory SET dressed_slot = item_type WHERE item_id = ? AND owner_id = ?', [$this->item_id, $this->owner_id]);
|
||||
} elseif (!$wearedCount->c) {
|
||||
//если слот пуст, одеваем новый предмет
|
||||
$this->db->execute('UPDATE inventory SET dressed_slot = item_type WHERE item_id = ? AND owner_id = ?', [$this->item_id, $this->owner_id]);
|
||||
Db::getInstance()->execute('UPDATE inventory SET dressed_slot = item_type WHERE item_id = ? AND owner_id = ?', [$this->item_id, $this->owner_id]);
|
||||
} else {
|
||||
/* проверка на переполнение слотов */
|
||||
$error = self::TOO_MANY_ITEMS_IN_SLOTS;
|
||||
@ -113,11 +111,11 @@ IMG;
|
||||
// Сортируем массив свободных слотов по возрастанию.
|
||||
sort($emptyRingSlots);
|
||||
// Одеваем предмет в первый свободный слот.
|
||||
$this->db->execute('update inventory set dressed_slot = ? where item_id = ?', [$emptyRingSlots[0], $this->item_id]);
|
||||
Db::getInstance()->execute('update inventory set dressed_slot = ? where item_id = ?', [$emptyRingSlots[0], $this->item_id]);
|
||||
} elseif ($wearedCount->c == 3) {
|
||||
// Cнимаем предмет из последнего слота 11 и одеваем новый предмет
|
||||
$this->db->execute('UPDATE inventory SET dressed_slot = 0 WHERE dressed_slot = 11');
|
||||
$this->db->execute('UPDATE inventory SET dressed_slot = 11 WHERE item_id = ?', $this->item_id);
|
||||
Db::getInstance()->execute('UPDATE inventory SET dressed_slot = 0 WHERE dressed_slot = 11');
|
||||
Db::getInstance()->execute('UPDATE inventory SET dressed_slot = 11 WHERE item_id = ?', $this->item_id);
|
||||
} else {
|
||||
/* проверка на переполнение слотов */
|
||||
$error = self::TOO_MANY_ITEMS_IN_SLOTS;
|
||||
@ -132,7 +130,7 @@ IMG;
|
||||
|
||||
public static function destroyItem($itemId)
|
||||
{
|
||||
DBPDO::INIT()->execute('delete from inventory where dressed_slot = 0 and owner_id = ? and item_id = ?', [$_SESSION['uid'], $itemId]);
|
||||
Db::getInstance()->execute('delete from inventory where dressed_slot = 0 and owner_id = ? and item_id = ?', [$_SESSION['uid'], $itemId]);
|
||||
}
|
||||
|
||||
/** Надеюсь, временная заглушка, которая объединяет get_meshok() и другую выдачу одной строкой.
|
||||
@ -141,7 +139,7 @@ IMG;
|
||||
public static function getWeightData(): string
|
||||
{
|
||||
$query = 'select sum(weight) as `all`, strength * 4 as max from inventory left join users u on owner_id = id where owner_id = ?';
|
||||
$weight = DBPDO::$db->ofetch($query, User::$current->getId());
|
||||
$weight = Db::getInstance()->ofetch($query, User::getInstance()->getId());
|
||||
$css = $weight->all > $weight->max ? ' style="color:maroon;"' : '';
|
||||
return "<span$css>$weight->all / $weight->max</span>";
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace Battles;
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
|
||||
class Item
|
||||
{
|
||||
@ -193,6 +193,6 @@ class Item
|
||||
|
||||
public static function getItemById($item_id): Item
|
||||
{
|
||||
return new Item(DBPDO::$db->ofetch('select * from items where id = ?', $item_id));
|
||||
return new Item(Db::getInstance()->ofetch('select * from items where id = ?', $item_id));
|
||||
}
|
||||
}
|
@ -3,7 +3,7 @@
|
||||
// Магия лечения травм
|
||||
namespace Battles\Magic;
|
||||
|
||||
use Battles\UserEffects, Battles\Database\DBPDO, Battles\User;
|
||||
use Battles\UserEffects, Battles\Database\Db, Battles\User;
|
||||
|
||||
class CureInjury extends Magic
|
||||
{
|
||||
@ -18,7 +18,7 @@ class CureInjury extends Magic
|
||||
*/
|
||||
public function __construct(int $target, int $injuryType)
|
||||
{
|
||||
$db = DBPDO::INIT();
|
||||
$db = Db::getInstance();
|
||||
$this->target = $target;
|
||||
if (!$this->isUsable()) {
|
||||
return $this->status;
|
||||
@ -46,13 +46,13 @@ class CureInjury extends Magic
|
||||
*/
|
||||
private function isUsable(): bool
|
||||
{
|
||||
$caster = new User($_SESSION['uid']);
|
||||
if ($this->target == $_SESSION['uid']) {
|
||||
$this->target = $caster;
|
||||
} else {
|
||||
$this->target = new User($this->target);
|
||||
}
|
||||
$this->target = $this->target == $_SESSION['uid'] ? User::getInstance() : User::getInstance($this->target);
|
||||
$this->login = $this->target->getLogin();
|
||||
return ($this->isVisible($caster, $this->target) && $this->isNotDead($caster) && $this->enoughMana($caster) && $this->isNotInBattle($caster));
|
||||
return ($this->isVisible(User::getInstance(), $this->target) && $this->isNotDead(User::getInstance()) && $this->enoughMana(User::getInstance()) && $this->isNotInBattle(User::getInstance()));
|
||||
}
|
||||
|
||||
public static function cast($target, $type): self
|
||||
{
|
||||
return new self($target, $type);
|
||||
}
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
// Магия восстановления здоровья
|
||||
use Battles\Magic\Magic;
|
||||
use Battles\User;
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
|
||||
class Healing extends Magic
|
||||
{
|
||||
@ -30,7 +30,7 @@ class Healing extends Magic
|
||||
if ($healHealthAmount > $this->target->maxHealth) {
|
||||
$healHealthAmount = $this->target->maxHealth;
|
||||
}
|
||||
DBPDO::INIT()->execute('UPDATE users SET health = ? WHERE id = ?', [$healHealthAmount, $this->target->id]);
|
||||
Db::getInstance()->execute('UPDATE users SET health = ? WHERE id = ?', [$healHealthAmount, $this->target->id]);
|
||||
$targetName = $this->target->login;
|
||||
return "Вы восстановили ${healHealthAmount} здоровья персонажу ${targetName}.";
|
||||
}
|
||||
@ -41,12 +41,7 @@ class Healing extends Magic
|
||||
*/
|
||||
private function isUsable(): bool
|
||||
{
|
||||
$caster = new User($_SESSION['uid']);
|
||||
if ($this->target == $_SESSION['uid']) {
|
||||
$this->target = $caster;
|
||||
} else {
|
||||
$this->target = new User($this->target);
|
||||
}
|
||||
return $this->isVisible($caster, $this->target) && $this->isNotDead($caster) && $this->enoughMana($caster) && $this->isSuccess($caster);
|
||||
$this->target = $this->target == $_SESSION['uid'] ? User::getInstance() : User::getInstance($this->target);
|
||||
return $this->isVisible(User::getInstance(), $this->target) && $this->isNotDead(User::getInstance()) && $this->enoughMana(User::getInstance()) && $this->isSuccess(User::getInstance());
|
||||
}
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
namespace Battles\Magic;
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\DressedItems;
|
||||
use Battles\Item;
|
||||
use Battles\User;
|
||||
@ -27,20 +27,19 @@ class Sharpen extends Magic
|
||||
}
|
||||
$item = DressedItems::getDressedItemBySlot(Item::ITEM_TYPE_WEAPON, $_SESSION['uid']);
|
||||
// Проверяем, что в названии предмета нет цифр и плюсов.
|
||||
if (preg_match('/[\W\S]+\+\[?[\d]]?/', $item['name'])) {
|
||||
if (preg_match('/[\W\S]+\+\[?[\d]]?/', $item->name)) {
|
||||
return 'Этот предмет точить нельзя!';
|
||||
}
|
||||
$newMinPhysicalDamage = $item['add_min_physical_damage'] + $sharpenStrength;
|
||||
$newMaxPhysicalDamage = $item['add_max_physical_damage'] + $sharpenStrength;
|
||||
$newItemName = $item['name'] . " [+$sharpenStrength]";
|
||||
$newMinPhysicalDamage = $item->add_min_physical_damage + $sharpenStrength;
|
||||
$newMaxPhysicalDamage = $item->add_max_physical_damage + $sharpenStrength;
|
||||
$newItemName = $item->name . " [+$sharpenStrength]";
|
||||
|
||||
DBPDO::INIT()->execute('UPDATE battles.inventory SET name = ?, add_min_physical_damage = ?, add_max_physical_damage = ? WHERE item_id = ? ', [$newItemName, $newMinPhysicalDamage, $newMaxPhysicalDamage, $item['item_id']]);
|
||||
Db::getInstance()->execute('UPDATE battles.inventory SET name = ?, add_min_physical_damage = ?, add_max_physical_damage = ? WHERE item_id = ? ', [$newItemName, $newMinPhysicalDamage, $newMaxPhysicalDamage, $item->item_id]);
|
||||
return "У вас получилось изготовить предмет $newItemName!";
|
||||
}
|
||||
|
||||
private function isUsable(): bool
|
||||
{
|
||||
$caster = new User($_SESSION['uid']);
|
||||
return $this->isNotInBattle($caster) && $this->isSuccess($caster, $this->magicDifficulty);
|
||||
return $this->isNotInBattle(User::getInstance()) && $this->isSuccess(User::getInstance(), $this->magicDifficulty);
|
||||
}
|
||||
}
|
@ -7,7 +7,7 @@
|
||||
|
||||
namespace Battles\Models;
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
|
||||
class EffectsModel
|
||||
{
|
||||
@ -16,7 +16,7 @@ class EffectsModel
|
||||
|
||||
public function __construct(int $user_id)
|
||||
{
|
||||
$this->DB = DBPDO::INIT()->ofetchAll('SELECT * FROM users_effects WHERE owner_id = ?', $user_id);
|
||||
$this->DB = Db::getInstance()->ofetchAll('SELECT * FROM users_effects WHERE owner_id = ?', $user_id);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -6,7 +6,7 @@
|
||||
*/
|
||||
namespace Battles\Models;
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
|
||||
class PresentsModel
|
||||
{
|
||||
@ -15,7 +15,7 @@ class PresentsModel
|
||||
public function __construct(int $user_id)
|
||||
{
|
||||
if (!$this->DB) {
|
||||
$this->DB = DBPDO::INIT()->execute('SELECT sender_id, image FROM `users_presents` WHERE owner_id = ?', $user_id);
|
||||
$this->DB = Db::getInstance()->execute('SELECT sender_id, image FROM `users_presents` WHERE owner_id = ?', $user_id);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
namespace Battles;
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
|
||||
class Moderation
|
||||
{
|
||||
@ -54,13 +54,13 @@ class Moderation
|
||||
public static function blockUser(int $target)
|
||||
{
|
||||
self::addEffectStatusToUserLog($target, "Блокировка");
|
||||
DBPDO::INIT()->execute('UPDATE battles.users SET block = 1 WHERE id = ?', $target);
|
||||
Db::getInstance()->execute('UPDATE battles.users SET block = 1 WHERE id = ?', $target);
|
||||
}
|
||||
|
||||
public static function unBlockUser(int $target)
|
||||
{
|
||||
self::addEffectStatusToUserLog($target, "Блокировка" . self::STATUS_OFF);
|
||||
DBPDO::INIT()->execute('UPDATE battles.users SET block = 0 WHERE block = 1 AND id = ?', $target);
|
||||
Db::getInstance()->execute('UPDATE battles.users SET block = 0 WHERE block = 1 AND id = ?', $target);
|
||||
}
|
||||
|
||||
public static function addToUserLog(int $target, string $message, int $senderId)
|
||||
@ -70,12 +70,12 @@ class Moderation
|
||||
|
||||
public static function setAlign(int $target, int $align)
|
||||
{
|
||||
DBPDO::INIT()->execute('UPDATE users SET align = ? WHERE id = ?', [$align, $target]);
|
||||
Db::getInstance()->execute('UPDATE users SET align = ? WHERE id = ?', [$align, $target]);
|
||||
}
|
||||
|
||||
public static function addChatSysMsg(string $message)
|
||||
{
|
||||
DBPDO::INIT()->execute('INSERT INTO chat (user_id,msg,type) VALUES (-1,?,?)', [$message, 'sys']);
|
||||
Db::getInstance()->execute('INSERT INTO chat (user_id,msg,type) VALUES (-1,?,?)', [$message, 'sys']);
|
||||
}
|
||||
|
||||
public static function addUserCheck(int $target)
|
||||
|
@ -1,40 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace Battles;
|
||||
|
||||
use Battles\Database\Db;
|
||||
|
||||
/**
|
||||
* Разные способы отображения строки с логином персонажа.
|
||||
*/
|
||||
const INVIS = '<i>невидимка</i>';
|
||||
class Nick extends User
|
||||
class Nick extends UserStats
|
||||
{
|
||||
private function getInvisibilityStatus()
|
||||
private function isInvisible()
|
||||
{
|
||||
return self::$db->fetch('SELECT 1 FROM users_effects WHERE type = 1022 AND owner_id = ?', $this->id);
|
||||
return Db::getInstance()->execute('SELECT count(*) FROM users_effects WHERE type = 1022 AND owner_id = ?', $this->id)->fetchColumn();
|
||||
}
|
||||
|
||||
/**
|
||||
* Отображение иконки склонности.
|
||||
* @return string
|
||||
*/
|
||||
private function getAlignToNickname():?string
|
||||
private function getAlignImage(): ?string
|
||||
{
|
||||
if ($this->align) {
|
||||
return sprintf('<img src="i/align_%s.gif">', $this->align);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
return $this->align ? "<img src='i/align_$this->align.gif' alt='Склонность'>" : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Отображение иконки клана.
|
||||
* @return string
|
||||
*/
|
||||
private function getClanToNickname():?string
|
||||
private function getClanImage(): ?string
|
||||
{
|
||||
if ($this->clan) {
|
||||
return sprintf('<img src="i/clan/%s.png">', $this->clan);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
return $this->clan ? "<img src='i/clan/$this->clan.png' alt='Клан'>" : null;
|
||||
}
|
||||
|
||||
private function getInfolinkImage(): string
|
||||
{
|
||||
return "<a href='inf.php?$this->login' target='_blank'><img src='i/inf.gif' alt='Ссылка на профиль'></a>";
|
||||
}
|
||||
|
||||
/**
|
||||
@ -43,7 +44,7 @@ class Nick extends User
|
||||
*
|
||||
* @return Nick
|
||||
*/
|
||||
public static function id($playerId): Nick
|
||||
public static function id($playerId): self
|
||||
{
|
||||
return new self($playerId);
|
||||
}
|
||||
@ -55,50 +56,27 @@ class Nick extends User
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function full($showInvisibility = 0):string
|
||||
public function full(int $showInvisibility = 0): string
|
||||
{
|
||||
if (!$showInvisibility && $this->getInvisibilityStatus()) {
|
||||
return INVIS;
|
||||
}
|
||||
return $this->getAlignToNickname().$this->getClanToNickname().sprintf('<b>%s</b> [%s] <a href="inf.php?%s" target="_blank"><img src="i/inf.gif" style="width:12px;height:11px"></a>', $this->login, $this->level, $this->login);
|
||||
return !$showInvisibility && $this->isInvisible() ? INVIS : $this->getAlignImage() . $this->getClanImage() . " <b>$this->login</b> [$this->level] " . $this->getInfolinkImage();
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает строку с логином или невидимым статусом.
|
||||
* @param int $showInvisibility отображать логин даже если персонаж невидимка.
|
||||
* Возвращает строку с логином.
|
||||
* Избавиться от этого! Оставлено для совместимости.
|
||||
* @return string
|
||||
*/
|
||||
public function short($showInvisibility = 0):string
|
||||
public function short(): string
|
||||
{
|
||||
if (!$showInvisibility && $this->getInvisibilityStatus()) {
|
||||
return INVIS;
|
||||
} else {
|
||||
return htmlspecialchars($this->login);
|
||||
}
|
||||
return $this->login;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает строку со склонностью, кланом, логином, уровнем, ссылкой на профиль, здоровьем.
|
||||
* @return string
|
||||
*/
|
||||
public function battle():string
|
||||
public function battle(): string
|
||||
{
|
||||
return $this->getAlign().$this->getClan().sprintf('<b>%s</b> [%s] <a href="inf.php?%s" target="_blank"><img src="i/inf.gif" style="width:12px;height:11px"></a> <img src="i/herz.gif" alt="HP"> _hp_/_maxhp_', $this->login, $this->level, $this->login);
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает строку с логином и здоровьем, выделяя строку определённым стилем.
|
||||
* @param $textstyle - Название стиля отображения логина персонажа (main.css) для цветового разделения команд.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function battleShort($textstyle):string
|
||||
{
|
||||
if ($this->getInvisibilityStatus()) {
|
||||
return INVIS;
|
||||
}
|
||||
else {
|
||||
return sprintf('<span style="%s">%s</span> [_hp_/_maxhp_]', $textstyle, $this->login);
|
||||
}
|
||||
return $this->full() . "<img src='i/herz.gif' alt='HP'> [$this->health/$this->maxHealth]";
|
||||
}
|
||||
}
|
21
classes/Battles/Register.php
Normal file
21
classes/Battles/Register.php
Normal file
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace Battles;
|
||||
|
||||
use Battles\Database\Db;
|
||||
|
||||
class Register
|
||||
{
|
||||
public static function addUser(string $login, string $password, string $email, string $birthday): int
|
||||
{
|
||||
if (Db::getInstance()->execute('select count(*) from users where login = ? or email = ?', [$login, $email])->fetchColumn()) {
|
||||
return 0;
|
||||
}
|
||||
Db::getInstance()->execute('insert into users (login,pass,email,borndate,ip,session_id,shadow) values (?,?,?,?,?,?,?)',
|
||||
[$login, $password, $email, $birthday, $_SERVER['REMOTE_ADDR'], session_id(), '0.png']);
|
||||
$userId = Db::getInstance()->lastInsertId();
|
||||
Db::getInstance()->execute('insert into online (user_id, login_time, room, real_time) values (?,?,1,?)', [$userId, time(), time()]);
|
||||
Db::getInstance()->execute('insert into bank (user_id) values ?', $userId);
|
||||
return $userId;
|
||||
}
|
||||
}
|
68
classes/Battles/RememberPassword.php
Normal file
68
classes/Battles/RememberPassword.php
Normal file
@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace Battles;
|
||||
|
||||
use tidy, Battles\Database\Db;
|
||||
|
||||
class RememberPassword
|
||||
{
|
||||
const OK_MAIL_SENT = 'Письмо отправлено!';
|
||||
const OK_PASSWORD_CHANGED = 'Пароль изменён!';
|
||||
const ERROR_MAIL_NOT_SENT = 'Письмо не отправлено!';
|
||||
const ERROR_WRONG_LOGIN = 'Такого пользователя не существует!';
|
||||
const ERROR_TOO_MANY_TRIES = 'Вы уже отправляли себе письмо сегодня!';
|
||||
const ERROR_OLD_HASH = 'Ссылка устарела!';
|
||||
const ERROR_WRONG_HASH = 'Неверная ссылка!';
|
||||
|
||||
private function mailSend(string $to, string $message): bool
|
||||
{
|
||||
$from = "=?UTF-8?B?" . base64_encode('Noreply') . "?= <noreply@" . GAMEDOMAIN . ">";
|
||||
$subject = "=?UTF-8?B?" . base64_encode('Восстановление забытого пароля') . "?=";
|
||||
$headers = [
|
||||
'From' => $from,
|
||||
'MIME-Version' => '1.0',
|
||||
'Content-type' => 'text/html; charset=UTF-8',
|
||||
];
|
||||
|
||||
if (extension_loaded('tidy')) {
|
||||
$cleaner = new tidy();
|
||||
$message = $cleaner->repairString($message, ['show-errors' => 0, 'show-warnings' => false], 'utf8');
|
||||
}
|
||||
return mail($to, $subject, $message, $headers);
|
||||
}
|
||||
|
||||
public function sendRecoveryMail(string $to): string
|
||||
{
|
||||
$check = Db::getInstance()->ofetch('SELECT email FROM users WHERE login = ?', $to);
|
||||
if (!empty(Db::getInstance()->fetchColumn('select email from users where login = ?', $to))) {
|
||||
return self::ERROR_WRONG_LOGIN;
|
||||
}
|
||||
if (!empty(Db::getInstance()->ofetch('SELECT 1 FROM users_recovery WHERE login = ?', $to))) {
|
||||
return self::ERROR_TOO_MANY_TRIES;
|
||||
}
|
||||
|
||||
$hash = uniqid();
|
||||
$tomorrow = date('d-M-Y', strtotime('+1 days'));
|
||||
Db::getInstance()->execute('INSERT INTO users_recovery (login, hash, ip, date) VALUES (?,?,?,?)', [$to, $hash, $tomorrow, $_SERVER['REMOTE_ADDR']]);
|
||||
$message = sprintf('Здравствуйте!<br><br>Кто-то запросил восстановление пароля к вашему персонажу %s <br><br>
|
||||
Для смены пароля пройдите по <a href="//%s/rememberpassword.php?change=%s">данной ссылке</a>.<br><br>
|
||||
Ссылка будет действовать до <em>%s</em>',$to, GAMEDOMAIN, $hash, $tomorrow);
|
||||
return self::mailSend($check->email, $message) ? self::OK_MAIL_SENT : self::ERROR_MAIL_NOT_SENT;
|
||||
}
|
||||
public function isAllowed($hash)
|
||||
{
|
||||
return Db::getInstance()->execute('SELECT count(*) FROM users_recovery WHERE hash = ? AND date < ?', [$hash, date('d-M-Y')])->fetchColumn() ? true : self::ERROR_OLD_HASH;
|
||||
}
|
||||
|
||||
public function setNewPassword(string $newPassword, string $hash):string
|
||||
{
|
||||
$login = Db::getInstance()->execute('select login from users_recovery where hash = ?', $hash)->fetchColumn();
|
||||
if (empty($login)) {
|
||||
return self::ERROR_WRONG_HASH;
|
||||
}
|
||||
$newPassword = password_hash($newPassword, PASSWORD_DEFAULT);
|
||||
Db::getInstance()->execute('UPDATE users SET pass = ? WHERE login = ?', [$newPassword, $login]);
|
||||
Db::getInstance()->execute('DELETE FROM users_recovery WHERE hash = ?', $hash);
|
||||
return self::OK_PASSWORD_CHANGED;
|
||||
}
|
||||
}
|
@ -2,29 +2,34 @@
|
||||
# Date: 29.08.2021 (21:34)
|
||||
namespace Battles;
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
|
||||
class Shop
|
||||
{
|
||||
public const GENERAL_SHOP = 1;
|
||||
public const BARTER_SHOP = 2;
|
||||
public const CATEGORY_SALE_ITEMS = -1;
|
||||
public static Shop $current;
|
||||
public int $categoryType = 0;
|
||||
private int $shopId;
|
||||
|
||||
public function __construct($shop_id) {
|
||||
private function __construct($shop_id)
|
||||
{
|
||||
$this->shopId = $shop_id;
|
||||
}
|
||||
|
||||
public static function id($shopid): self
|
||||
{
|
||||
return new self($shopid);
|
||||
}
|
||||
|
||||
private function showGoods(): string
|
||||
{
|
||||
if ($this->categoryType) {
|
||||
$stmt = DBPDO::$db->ofetchAll('select * from items inner join trade_offers on id = shop_item_id where shop_id = ? and shop_item_quantity !=0 and item_type = ?', [$this->shopId, $this->categoryType]);
|
||||
$stmt2 = DBPDO::$db->ofetchAll('select * from inventory where on_sale != 0 and present is null and item_type = ?', $this->categoryType);
|
||||
$stmt = Db::getInstance()->ofetchAll('select * from items inner join trade_offers on id = shop_item_id where shop_id = ? and shop_item_quantity !=0 and item_type = ?', [$this->shopId, $this->categoryType]);
|
||||
$stmt2 = Db::getInstance()->ofetchAll('select * from inventory where on_sale != 0 and present is null and item_type = ?', $this->categoryType);
|
||||
} else {
|
||||
$stmt = DBPDO::$db->ofetchAll('select * from items inner join trade_offers on id = shop_item_id where shop_id = ? and shop_item_quantity !=0', $this->shopId);
|
||||
$stmt2 = DBPDO::$db->ofetchAll('select * from inventory where on_sale != 0 and present is null');
|
||||
$stmt = Db::getInstance()->ofetchAll('select * from items inner join trade_offers on id = shop_item_id where shop_id = ? and shop_item_quantity !=0', $this->shopId);
|
||||
$stmt2 = Db::getInstance()->ofetchAll('select * from inventory where on_sale != 0 and present is null');
|
||||
}
|
||||
|
||||
$iteminfo = [];
|
||||
@ -39,7 +44,7 @@ class Shop
|
||||
|
||||
private function showUserSellItems(): string
|
||||
{
|
||||
$stmt = DBPDO::$db->ofetchall('select * from inventory where on_sale = 0 and dressed_slot = 0 and durability > 0 and owner_id = ?', User::$current->getId());
|
||||
$stmt = Db::getInstance()->ofetchall('select * from inventory where on_sale = 0 and dressed_slot = 0 and durability > 0 and owner_id = ?', User::getInstance()->getId());
|
||||
|
||||
$iteminfo = [];
|
||||
$operationType = 'sellshop';
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace Battles;
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\Models\PresentsModel;
|
||||
use Exceptions\GameException;
|
||||
|
||||
@ -137,8 +137,8 @@ SQL;
|
||||
|
||||
public static function buyItem($id, User $buyer)
|
||||
{
|
||||
$check = DBPDO::$db->ofetch("select * from trade_offers where offer_id = ?", $id);
|
||||
$item = new Item(DBPDO::$db->fetch('select * from items where id = ?', $check->shop_item_id));
|
||||
$check = Db::getInstance()->ofetch("select * from trade_offers where offer_id = ?", $id);
|
||||
$item = new Item(Db::getInstance()->fetch('select * from items where id = ?', $check->shop_item_id));
|
||||
$price = $item->calculateItemCost();
|
||||
|
||||
if (
|
||||
@ -149,7 +149,7 @@ SQL;
|
||||
return;
|
||||
}
|
||||
|
||||
DBPDO::$db->execute(self::BUY_QUERY, [$buyer->getId(), $check->shop_item_id]);
|
||||
Db::getInstance()->execute(self::BUY_QUERY, [$buyer->getId(), $check->shop_item_id]);
|
||||
$deloText = $buyer->getLogin() . " купил товар «" . $item->name . "» id:(" . $check->shop_item_id . ") в магазине за " . $price . ".";
|
||||
GameLogs::addUserLog($buyer->getId(), $deloText);
|
||||
self::$status = "Предмет " . $item->name . " куплен за " . $price . ".";
|
||||
@ -162,7 +162,7 @@ SQL;
|
||||
}
|
||||
$allowItemRemove = true;
|
||||
foreach (json_decode($json_list) as $item) {
|
||||
$row = DBPDO::$db->ofetch('select sum(1) as s from inventory where name = ? and owner_id = ?', [Item::getItemById($item->item_id)->name, $user_id]);
|
||||
$row = Db::getInstance()->ofetch('select sum(1) as s from inventory where name = ? and owner_id = ?', [Item::getItemById($item->item_id)->name, $user_id]);
|
||||
if ($row->s < $item->quantity) {
|
||||
$allowItemRemove = false;
|
||||
}
|
||||
@ -174,20 +174,20 @@ SQL;
|
||||
foreach (json_decode($json_list) as $item) {
|
||||
$query = 'delete from inventory where name = ? and owner_id = ? limit ' . (int)$item->quantity;
|
||||
// У-у-у, сука! https://phpdelusions.net/pdo#limit
|
||||
DBPDO::$db->execute($query, [Item::getItemById($item->item_id)->name, $user_id]);
|
||||
Db::getInstance()->execute($query, [Item::getItemById($item->item_id)->name, $user_id]);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private static function checkAndPayTheBills(int $price, User $user): bool
|
||||
{
|
||||
if ($user->getMoney() > $price) {
|
||||
$user->setMoney($user->getMoney() - $price);
|
||||
$user->saveMoney();
|
||||
if (User::getInstance()->getMoney() > $price) {
|
||||
User::getInstance()->setMoney(User::getInstance()->getMoney() - $price);
|
||||
User::getInstance()->saveMoney();
|
||||
return true;
|
||||
}
|
||||
try {
|
||||
$bank = new Bank($user->getId());
|
||||
$bank = new Bank(User::getInstance()->getId());
|
||||
$bank->withdrawMoney($price);
|
||||
return true;
|
||||
} catch (GameException $e) {
|
||||
@ -205,24 +205,23 @@ SQL;
|
||||
if ($current_quantity === -1) {
|
||||
return true;
|
||||
}
|
||||
DBPDO::$db->execute("update trade_offers set shop_item_quantity = shop_item_quantity -1 where shop_item_quantity != -1 and shop_item_id = ? ", $item_id);
|
||||
Db::getInstance()->execute("update trade_offers set shop_item_quantity = shop_item_quantity -1 where shop_item_quantity != -1 and shop_item_id = ? ", $item_id);
|
||||
return true;
|
||||
}
|
||||
|
||||
public static function sellItem($id, User $seller, $bankTrade = 0)
|
||||
{
|
||||
$db = new DBPDO();
|
||||
$item = $db->ofetch('select * from inventory where item_id = ?', $id);
|
||||
$item = Db::getInstance()->ofetch('select * from inventory where item_id = ?', $id);
|
||||
$sellingItemName = $item->name;
|
||||
// Продажа за цену от нуля до половины стоимости.
|
||||
$sellingPrice = $item->price > 1 ? mt_rand(0, $item->price / 2) : mt_rand(0, 1);
|
||||
$db->execute('delete from inventory where item_id = ?', $id);
|
||||
Db::getInstance()->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(), 'sellShop');
|
||||
} else {
|
||||
$db->execute('update users set money = money - ? where id = ?', [$sellingPrice, $_SESSION['uid']]);
|
||||
Db::getInstance()->execute('update users set money = money - ? where id = ?', [$sellingPrice, $_SESSION['uid']]);
|
||||
}
|
||||
$deloText = "{$seller->getLogin()} продал товар «{$sellingItemName}» id:($id) в магазине за $sellingPrice кр.";
|
||||
GameLogs::addUserLog($seller->getId(), $deloText);
|
||||
@ -280,12 +279,12 @@ FORM;
|
||||
*/
|
||||
public static function giveNewItem(int $item_id, int $to): array
|
||||
{
|
||||
$check = DBPDO::$db->ofetch('select 1 from items where id = ?', $item_id);
|
||||
$check = Db::getInstance()->ofetch('select 1 from items where id = ?', $item_id);
|
||||
if (!$check) {
|
||||
return [];
|
||||
}
|
||||
DBPDO::$db->execute(self::BUY_QUERY, [$to, $item_id]);
|
||||
$return = DBPDO::$db->ofetch('select image, name from inventory where item_id = ?', DBPDO::$db->lastInsertId());
|
||||
Db::getInstance()->execute(self::BUY_QUERY, [$to, $item_id]);
|
||||
$return = Db::getInstance()->ofetch('select image, name from inventory where item_id = ?', Db::getInstance()->lastInsertId());
|
||||
return [
|
||||
'img' => $return->image,
|
||||
'name' => $return->name,
|
||||
|
@ -2,7 +2,7 @@
|
||||
# Date: 26.10.2020 (16:08)
|
||||
namespace Battles;
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
|
||||
class Travel
|
||||
{
|
||||
@ -55,24 +55,60 @@ class Travel
|
||||
2702 => 'city.php'
|
||||
];
|
||||
|
||||
private static array $fbattleCheckFiles = [
|
||||
'c_haos_in.php',
|
||||
'c_haos.php',
|
||||
'c_park.php',
|
||||
'city.php',
|
||||
'clan_castle.php',
|
||||
'enter_cave.php',
|
||||
'library.php',
|
||||
'atk.php',
|
||||
'podzem_dialog.php',
|
||||
'post.php',
|
||||
'shop.php',
|
||||
'tournament.php',
|
||||
'vxod.php',
|
||||
'bank.php',
|
||||
'canalizaciya,php',
|
||||
'forest.php',
|
||||
'main.php',
|
||||
'repair.php',
|
||||
'towerstamp.php',
|
||||
'hell.php',
|
||||
'ul_clans.php',
|
||||
'labirint.php',
|
||||
'akadem.php',
|
||||
'towerin.php',
|
||||
'user_anketa.php',
|
||||
'zayavka.php',
|
||||
];
|
||||
private static array $towerinCheckFiles = [
|
||||
'main.php',
|
||||
'city.php',
|
||||
'tower.php'
|
||||
];
|
||||
private static array $roomsCheck = [22, 23, 27, 29, 30, 31, 37, 38, 39, 40, 41, 45, 53, 61, 401, 402, 600, 601, 602, 621, 650, 1051, 1052];
|
||||
|
||||
/**
|
||||
* Перемещение по комнатам.
|
||||
* @param int $roomId ID куда идём.
|
||||
*
|
||||
* @param int $roomId ID куда идём.
|
||||
* @param int $roomIdCurrent ID откуда идём.
|
||||
*/
|
||||
public static function toRoom(int $roomId, int $roomIdCurrent): void
|
||||
{
|
||||
$db = DBPDO::INIT();
|
||||
$itemsWeight = $db->fetch('SELECT SUM(weight) - (select strength * 5 from users where id = ?) AS weight_overflow FROM inventory WHERE owner_id = ? AND on_sale = 0', [$_SESSION['uid'], $_SESSION['uid']]);
|
||||
$eff = $db->fetch('SELECT type FROM users_effects WHERE owner_id = ? AND (`type` = 10 OR `type` = 13 OR `type` = 14)', $_SESSION['uid']);
|
||||
UserStats::getInstance()->
|
||||
$itemsWeightOverflow = Db::getInstance()->fetchColumn('SELECT SUM(weight) - (select strength * 4 from users where id = ?) AS weight_overflow FROM inventory WHERE owner_id = ? AND on_sale = 0', [$_SESSION['uid'], $_SESSION['uid']]);
|
||||
$eff = Db::getInstance()->fetchColumn('SELECT type FROM users_effects WHERE owner_id = ? AND (`type` = 10 OR `type` = 13 OR `type` = 14)', $_SESSION['uid']);
|
||||
$errors = [];
|
||||
if ($itemsWeight['weight_overflow'] > 0) {
|
||||
if ($itemsWeightOverflow > 0) {
|
||||
$errors[0] = 'У вас переполнен рюкзак, вы не можете передвигаться...';
|
||||
}
|
||||
if ($eff['type'] == 10) {
|
||||
if ($eff == 10) {
|
||||
$errors[1] = 'Вы парализованы и не можете передвигаться...';
|
||||
}
|
||||
if ($eff['type'] == 13 || $eff['type'] == 14) {
|
||||
if ($eff == 13 || $eff == 14) {
|
||||
$errors[2] = 'У вас тяжелая травма, вы не можете передвигаться...';
|
||||
}
|
||||
if ($errors) {
|
||||
@ -80,7 +116,7 @@ class Travel
|
||||
echo sprintf('<span class="error">%s</span>', $error);
|
||||
}
|
||||
} elseif (in_array($roomId, self::allowedRoomMoves($roomIdCurrent))) {
|
||||
$db->execute('UPDATE users, online SET users.room = ?, online.room = ? WHERE `online`.`user_id` = `users`.`id` AND `online`.`user_id` = ?', [$roomId, $roomId, $_SESSION['uid']]);
|
||||
Db::getInstance()->execute('UPDATE users, online SET users.room = ?, online.room = ? WHERE `online`.`user_id` = `users`.`id` AND `online`.`user_id` = ?', [$roomId, $roomId, $_SESSION['uid']]);
|
||||
header('location: ' . self::$roomFileName[$roomId]);
|
||||
exit;
|
||||
}
|
||||
@ -88,7 +124,9 @@ class Travel
|
||||
|
||||
/**
|
||||
* Проверка можно ли перейти из комнаты в комнату.
|
||||
*
|
||||
* @param int $roomId ID комнаты
|
||||
*
|
||||
* @return array|int[]
|
||||
*/
|
||||
private static function allowedRoomMoves(int $roomId): array
|
||||
@ -141,4 +179,32 @@ class Travel
|
||||
}
|
||||
return $room[$roomId];
|
||||
}
|
||||
|
||||
/** Проверки на соответствие скрипта и комнаты, которые были натыканы по всем файлам.
|
||||
* @param int $inRoom
|
||||
* @param int $inBattle
|
||||
* @param int $inTower
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function roomRedirects(int $inRoom, int $inBattle, int $inTower)
|
||||
{
|
||||
if ($inBattle && in_array(pathinfo(debug_backtrace()[0]['file'])['basename'], self::$fbattleCheckFiles)) {
|
||||
header('location: fbattle.php');
|
||||
exit;
|
||||
}
|
||||
if ($inTower && in_array(pathinfo(debug_backtrace()[0]['file'])['basename'], self::$towerinCheckFiles)) {
|
||||
header('location: towerin.php');
|
||||
exit;
|
||||
}
|
||||
// Если я в одной из этих комнат,
|
||||
// [И] Имя файла который инклюдит файл с проверкой не совпадает с именем файла локации в которой я нахожусь
|
||||
// [И] Номер комнаты который я пытаюсь открыть есть в списке проверяемых
|
||||
if (in_array($inRoom, self::$roomsCheck)
|
||||
&& pathinfo(debug_backtrace()[0]['file'])['basename'] != self::$roomFileName[$inRoom]
|
||||
&& in_array(array_search(pathinfo(debug_backtrace()[0]['file'])['basename'], self::$roomFileName), self::$roomsCheck)) {
|
||||
header('location: main.php');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
@ -2,10 +2,12 @@
|
||||
|
||||
namespace Battles;
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
|
||||
class User
|
||||
{
|
||||
private static ?self $_instance = null;
|
||||
|
||||
protected int $id = 0;
|
||||
protected string $login = '';
|
||||
protected ?string $pass = null;
|
||||
@ -29,26 +31,20 @@ class User
|
||||
protected int $battle = 0;
|
||||
protected int $in_tower = 0; // Скорее башню похороним чем запустим...
|
||||
protected int $zayavka = 0;
|
||||
protected static DBPDO $db;
|
||||
|
||||
public const INFO_CHAR_LIMIT = 1500;
|
||||
/**
|
||||
* @var User Переменная инициализируемая при запуске, хранящая объект текущего пользователя.
|
||||
*/
|
||||
public static User $current;
|
||||
|
||||
/**
|
||||
* @param int|string $user
|
||||
*/
|
||||
public function __construct($user)
|
||||
protected function __construct($user = null)
|
||||
{
|
||||
self::$db = DBPDO::INIT();
|
||||
if (is_null($user)) {
|
||||
$user = $_SESSION['uid'];
|
||||
}
|
||||
$query = 'select * from users where login = ?';
|
||||
if (is_numeric($user)) {
|
||||
$query = 'select * from users where id = ?';
|
||||
$user = (int)$user;
|
||||
}
|
||||
$user_query = self::$db->fetch($query, $user);
|
||||
$user_query = Db::getInstance()->fetch($query, $user);
|
||||
foreach ($this as $key => $value) {
|
||||
if (isset($user_query[$key])) {
|
||||
$this->$key = $user_query[$key];
|
||||
@ -56,6 +52,14 @@ class User
|
||||
}
|
||||
}
|
||||
|
||||
public static function getInstance($user = null): self
|
||||
{
|
||||
if (is_null(self::$_instance)) {
|
||||
self::$_instance = new self($user);
|
||||
}
|
||||
return self::$_instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $userId
|
||||
* @param int $type
|
||||
@ -66,13 +70,13 @@ class User
|
||||
public static function addUserEffect(int $userId, int $type, string $name, int $time, string $json_modifiers_list = null)
|
||||
{
|
||||
$mods = json_decode($json_modifiers_list);
|
||||
self::$db->execute('INSERT INTO users_effects (owner_id, type, name, remaining_time, mod_strength, mod_dexterity, mod_intuition, mod_endurance, mod_intelligence, mod_wisdom) VALUES (?,?,?,?,?,?,?,?,?,?)', [$userId, $type, $name, $time, $mods->str ?? null, $mods->dex ?? null, $mods->int ?? null, $mods->end ?? null, $mods->intel ?? null, $mods->wis ?? null]);
|
||||
Db::getInstance()->execute('INSERT INTO users_effects (owner_id, type, name, remaining_time, mod_strength, mod_dexterity, mod_intuition, mod_endurance, mod_intelligence, mod_wisdom) VALUES (?,?,?,?,?,?,?,?,?,?)', [$userId, $type, $name, $time, $mods->str ?? null, $mods->dex ?? null, $mods->int ?? null, $mods->end ?? null, $mods->intel ?? null, $mods->wis ?? null]);
|
||||
}
|
||||
|
||||
public static function removeUserEffect(int $userId, int $type): bool
|
||||
{
|
||||
if (self::$db->fetch('SELECT 1 FROM users_effects WHERE owner_id = ? AND type = ?', [$userId, $type])) {
|
||||
self::$db->execute('DELETE FROM users_effects WHERE owner_id = ? AND type = ?', [$userId, $type]);
|
||||
if (Db::getInstance()->fetchColumn('SELECT 1 FROM users_effects WHERE owner_id = ? AND type = ?', [$userId, $type])) {
|
||||
Db::getInstance()->execute('DELETE FROM users_effects WHERE owner_id = ? AND type = ?', [$userId, $type]);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -157,12 +161,12 @@ class User
|
||||
|
||||
public function setMoney(int $money)
|
||||
{
|
||||
$this->money = $money < 0 ? 0 : $money;
|
||||
$this->money = max($money, 0);
|
||||
}
|
||||
|
||||
public function saveMoney()
|
||||
{
|
||||
self::$db->execute('update users set money = ? where id = ?', [$this->money, $this->id]);
|
||||
Db::getInstance()->execute('update users set money = ? where id = ?', [$this->money, $this->id]);
|
||||
}
|
||||
|
||||
public function getAdmin(): int
|
||||
@ -229,7 +233,7 @@ class User
|
||||
|
||||
public function setOnline()
|
||||
{
|
||||
self::$db->execute('update online set real_time = ? where user_id = ?', [time(), $this->getId()]);
|
||||
Db::getInstance()->execute('update online set real_time = ? where user_id = ?', [time(), $this->getId()]);
|
||||
}
|
||||
|
||||
public function setInjury(int $type): bool
|
||||
@ -285,6 +289,6 @@ class User
|
||||
$this->admin,
|
||||
$this->id //where
|
||||
];
|
||||
DBPDO::$db->execute($query, $vals);
|
||||
Db::getInstance()->execute($query, $vals);
|
||||
}
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace Battles;
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\Models\EffectsModel;
|
||||
|
||||
class UserInfo extends UserStats
|
||||
@ -10,8 +10,6 @@ class UserInfo extends UserStats
|
||||
use Rooms;
|
||||
|
||||
private int $bankMoney;
|
||||
//Тот, кто смотрит на информацию.
|
||||
private User $watcher;
|
||||
|
||||
public function __construct($user)
|
||||
{
|
||||
@ -172,7 +170,7 @@ HTML;
|
||||
while ($userLogRow = $userLogs->fetchArray(SQLITE3_ASSOC)) {
|
||||
$log .= sprintf('<code>%s</code><br>', date('d.m.Y H:i ', strtotime($userLogRow['date'])) . $userLogRow['text']);
|
||||
}
|
||||
$adminData = $this->watcher->getAdmin() ? $this->showAdminOnlyData() : null;
|
||||
$adminData = User::getInstance()->getAdmin() ? $this->showAdminOnlyData() : null;
|
||||
return <<<INFO
|
||||
<div class="secret-info">
|
||||
E-Mail: $this->email<br>
|
||||
@ -216,7 +214,7 @@ INFO;
|
||||
echo $this->realname ? "Имя: $this->realname" : "";
|
||||
echo $this->info ? "<br>" . nl2br($this->info) : "";
|
||||
echo '</div><!-- u-i-c-l -->';
|
||||
if ($this->watcher->getAdmin() || $this->watcher->getAlign() == 1) {
|
||||
if (User::getInstance()->getAdmin() || User::getInstance()->getAlign() == 1) {
|
||||
echo $this->showPrivateData();
|
||||
}
|
||||
}
|
||||
@ -225,9 +223,9 @@ INFO;
|
||||
{
|
||||
$effects = new EffectsModel($this->id);
|
||||
|
||||
if ($this->block && (!$this->watcher->getAdmin() || !$this->watcher->getAlign() == 1)) {
|
||||
if ($this->block && (!User::getInstance()->getAdmin() || !User::getInstance()->getAlign() == 1)) {
|
||||
echo "<span class='error'>Персонаж $this->login заблокирован!</span>";
|
||||
} elseif ($effects->getHideUserInfoStatus() && (!$this->watcher->getAdmin() || !$this->watcher->getAlign() == 1)) {
|
||||
} elseif ($effects->getHideUserInfoStatus() && (!User::getInstance()->getAdmin() || !User::getInstance()->getAlign() == 1)) {
|
||||
if ($effects->getHideUserInfoStatus() == -1) {
|
||||
$date = 'навсегда';
|
||||
} else {
|
||||
@ -256,7 +254,7 @@ INFO;
|
||||
|
||||
public function showUserEffects(): string
|
||||
{
|
||||
$effs = DBPDO::INIT()->ofetchAll('SELECT * FROM users_effects WHERE owner_id = ?', $this->id);
|
||||
$effs = Db::getInstance()->ofetchAll('SELECT * FROM users_effects WHERE owner_id = ?', $this->id);
|
||||
$img = UserEffects::$effectImage;
|
||||
$r = '';
|
||||
foreach ($effs as $effect) {
|
||||
@ -271,14 +269,4 @@ INFO;
|
||||
}
|
||||
return $r;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $watcher_id
|
||||
*/
|
||||
public function setWatcher(int $watcher_id): void
|
||||
{
|
||||
$this->watcher = new User($watcher_id);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -3,7 +3,7 @@
|
||||
|
||||
namespace Battles;
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Exceptions\GameException;
|
||||
|
||||
class UserStats extends User
|
||||
@ -86,7 +86,7 @@ class UserStats extends User
|
||||
throw new GameException(self::ERROR_STAT_IS_MAXIMUM);
|
||||
} else {
|
||||
$query = "UPDATE users SET {$stat_name} = {$stat_name} + 1, free_stat_points = free_stat_points - 1 WHERE id = ?";
|
||||
self::$db->execute($query, $this->id);
|
||||
Db::getInstance()->execute($query, $this->id);
|
||||
}
|
||||
}
|
||||
|
||||
@ -161,7 +161,7 @@ class UserStats extends User
|
||||
|
||||
public function getFullStats(): object
|
||||
{
|
||||
$stats = self::$db->ofetch("
|
||||
$stats = Db::getInstance()->ofetch("
|
||||
select
|
||||
strength,
|
||||
dexterity,
|
||||
@ -170,7 +170,7 @@ class UserStats extends User
|
||||
intelligence,
|
||||
wisdom
|
||||
from users where id = $this->id");
|
||||
$itemBonuses = self::$db->ofetch("
|
||||
$itemBonuses = Db::getInstance()->ofetch("
|
||||
select
|
||||
sum(add_strength) as item_strength,
|
||||
sum(add_dexterity) as item_dexterity,
|
||||
@ -184,7 +184,7 @@ class UserStats extends User
|
||||
sum(add_min_physical_damage) as item_min_physical_damage,
|
||||
sum(add_max_physical_damage) as item_max_physical_damage
|
||||
from inventory where dressed_slot != 0 and owner_id = $this->id");
|
||||
$effectBonuses = self::$db->ofetch("
|
||||
$effectBonuses = Db::getInstance()->ofetch("
|
||||
select
|
||||
sum(mod_strength) as effect_strength,
|
||||
sum(mod_dexterity) as effect_dexterity,
|
||||
@ -238,6 +238,6 @@ class UserStats extends User
|
||||
$this->level,
|
||||
$this->id //where
|
||||
];
|
||||
DBPDO::$db->execute($query, $vals);
|
||||
Db::getInstance()->execute($query, $vals);
|
||||
}
|
||||
}
|
@ -12,7 +12,7 @@
|
||||
* маркеры - т.н. "заполнители", а сами данные передаются "позже", в качестве последующих аргументов основного метода,
|
||||
* выполняющего SQL-запрос - Mysql::query($sql [, $arg, $...]):
|
||||
*
|
||||
* $db->query('SELECT * FROM `table` WHERE `name` = "?s" AND `age` = ?i', $_POST['name'], $_POST['age']);
|
||||
* $getInstance->query('SELECT * FROM `table` WHERE `name` = "?s" AND `age` = ?i', $_POST['name'], $_POST['age']);
|
||||
*
|
||||
* Аргументы SQL-запроса, прошедшие через систему placeholders данного класса, экранируются специальными функциями
|
||||
* экранирования, в зависимости от типа заполнителей. Т.е. вам теперь нет необходимости заключать переменные в функции
|
||||
@ -45,8 +45,8 @@
|
||||
* Например, попытка передать в качестве аргумента значение 55.5 или '55.5' для заполнителя целочисленного типа ?i
|
||||
* приведет к выбросу исключения:
|
||||
*
|
||||
* $db->setTypeMode(Mysql::MODE_STRICT); // устанавливаем строгий режим работы
|
||||
* $db->query('SELECT ?i', 55.5); // Попытка указать для заполнителя типа int значение типа double в шаблоне запроса SELECT ?i
|
||||
* $getInstance->setTypeMode(Mysql::MODE_STRICT); // устанавливаем строгий режим работы
|
||||
* $getInstance->query('SELECT ?i', 55.5); // Попытка указать для заполнителя типа int значение типа double в шаблоне запроса SELECT ?i
|
||||
*
|
||||
* Это утверждение не относится к числам (целым и с плавающей точкой), заключенным в строки.
|
||||
* С точки зрения библиотеки, строка '123' и значение 123 являются типом int.
|
||||
@ -140,7 +140,7 @@
|
||||
* заполнителей скалярного типа, таких как ?i, ?d и ?s. Это сделано по идеологическим соображениям,
|
||||
* автоподстановка кавычек может стать ограничением для возможностей SQL.
|
||||
* Например, выражение
|
||||
* $db->query('SELECT "Total: ?s"', '200');
|
||||
* $getInstance->query('SELECT "Total: ?s"', '200');
|
||||
* вернёт строку
|
||||
* 'Total: 200'
|
||||
* Если бы кавычки, ограничивающие строковой литерал, ставились бы автоматически,
|
||||
@ -151,20 +151,23 @@
|
||||
* Тем не менее, для перечислений ?as, ?ai, ?ap, ?As, ?Ai и ?Ap ограничивающие кавычки ставятся принудительно, т.к.
|
||||
* перечисления всегда используются в запросах, где наличие кавчек обязательно или не играет роли (а так ли это?):
|
||||
*
|
||||
* $db->query('INSERT INTO `test` SET ?As', array('name' => 'Маша', 'age' => '23', 'adress' => 'Москва'));
|
||||
* $getInstance->query('INSERT INTO `test` SET ?As', array('name' => 'Маша', 'age' => '23', 'adress' => 'Москва'));
|
||||
* -> INSERT INTO test SET `name` = "Маша", `age` = "23", `adress` = "Москва"
|
||||
*
|
||||
* $db->query('SELECT * FROM table WHERE field IN (?as)', array('55', '12', '132'));
|
||||
* $getInstance->query('SELECT * FROM table WHERE field IN (?as)', array('55', '12', '132'));
|
||||
* -> SELECT * FROM table WHERE field IN ("55", "12", "132")
|
||||
*
|
||||
* Также исключения составляют заполнители типа ?f, предназначенные для передачи в запрос имен таблиц и полей.
|
||||
* Аргумент заполнителя ?f всегда обрамляется обратными кавычками (`):
|
||||
*
|
||||
* $db->query('SELECT ?f FROM ?f', 'my_field', 'my_table');
|
||||
* $getInstance->query('SELECT ?f FROM ?f', 'my_field', 'my_table');
|
||||
* -> SELECT `my_field` FROM `my_table`
|
||||
*/
|
||||
namespace Krugozor\Database\Mysql;
|
||||
|
||||
use mysqli;
|
||||
use mysqli_result;
|
||||
|
||||
class Mysql
|
||||
{
|
||||
/**
|
||||
@ -172,7 +175,7 @@ class Mysql
|
||||
* Если тип заполнителя не совпадает с типом аргумента, то будет выброшено исключение.
|
||||
* Пример такой ситуации:
|
||||
*
|
||||
* $db->query('SELECT * FROM `table` WHERE `id` = ?i', '2+мусор');
|
||||
* $getInstance->query('SELECT * FROM `table` WHERE `id` = ?i', '2+мусор');
|
||||
*
|
||||
* - в данной ситуации тип заполнителя ?i - число или числовая строка,
|
||||
* а в качестве аргумента передаётся строка '2+мусор' не являющаяся ни числом, ни числовой строкой.
|
||||
@ -187,7 +190,7 @@ class Mysql
|
||||
* к нужному типу - к типу заполнителя.
|
||||
* Пример такой ситуации:
|
||||
*
|
||||
* $db->query('SELECT * FROM `table` WHERE `id` = ?i', '2+мусор');
|
||||
* $getInstance->query('SELECT * FROM `table` WHERE `id` = ?i', '2+мусор');
|
||||
*
|
||||
* - в данной ситуации тип заполнителя ?i - число или числовая строка,
|
||||
* а в качестве аргумента передаётся строка '2+мусор' не являющаяся ни числом, ни числовой строкой.
|
||||
@ -397,7 +400,7 @@ class Mysql
|
||||
throw new Exception(__METHOD__ . ': ' . $this->mysqli->error . '; SQL: ' . $this->query);
|
||||
}
|
||||
|
||||
if (is_object($result) && $result instanceof \mysqli_result) {
|
||||
if (is_object($result) && $result instanceof mysqli_result) {
|
||||
return new Statement($result);
|
||||
}
|
||||
|
||||
@ -425,7 +428,7 @@ class Mysql
|
||||
* Применяется для случаев, когда SQL-запрос формируется частями.
|
||||
*
|
||||
* Пример:
|
||||
* $db->prepare('WHERE `name` = "?s" OR `id` IN(?ai)', 'Василий', array(1, 2));
|
||||
* $getInstance->prepare('WHERE `name` = "?s" OR `id` IN(?ai)', 'Василий', array(1, 2));
|
||||
* Результат:
|
||||
* WHERE `name` = "Василий" OR `id` IN(1, 2)
|
||||
*
|
||||
@ -548,7 +551,7 @@ class Mysql
|
||||
private function connect()
|
||||
{
|
||||
if (!is_object($this->mysqli) || !$this->mysqli instanceof mysqli) {
|
||||
$this->mysqli = @new \mysqli($this->server, $this->user, $this->password, null, $this->port, $this->socket);
|
||||
$this->mysqli = @new mysqli($this->server, $this->user, $this->password, null, $this->port, $this->socket);
|
||||
|
||||
if ($this->mysqli->connect_error) {
|
||||
throw new Exception(__METHOD__ . ': ' . $this->mysqli->connect_error);
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
use Battles\GameLogs;
|
||||
use Battles\Nick;
|
||||
use Battles\User;
|
||||
|
||||
class Tournament
|
||||
{
|
||||
@ -160,8 +161,8 @@ class Tournament
|
||||
// кидаем в бой
|
||||
mysql_query("UPDATE `users` SET `battle` = {$id} WHERE `id` = " . $user1 . " OR `id` = " . $user2);
|
||||
// создаем лог
|
||||
$rr = "<b>" . Nick::id($user['id'])->full(1) . "</b> и <b>" . Nick::id($jert['id'])->full(1) . "</b>";
|
||||
addch("<a href=logs.php?log=" . $id . " target=_blank>Бой</a> между <B><b>" . Nick::id($user['id'])->short() . "</b> и <b>" . Nick::id($jert['id'])->short() . "</b> начался. ", $user->getRoom());
|
||||
$rr = "<b>" . Nick::id(User::getInstance()->getId())->full(1) . "</b> и <b>" . Nick::id($jert['id'])->full(1) . "</b>";
|
||||
addch("<a href=logs.php?log=" . $id . " target=_blank>Бой</a> между <B><b>" . Nick::id(User::getInstance()->getId())->short() . "</b> и <b>" . Nick::id($jert['id'])->short() . "</b> начался. ", User::getInstance()->getRoom());
|
||||
GameLogs::addBattleLog($id, "Часы показывали <span class=date>" . date("Y.m.d H.i") . "</span>, когда " . $rr . " решили выяснить кто из них сильнее. <i>(турнир)</i><BR>");
|
||||
return $id;
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
use Battles\User;
|
||||
|
||||
class Quests
|
||||
{
|
||||
public $free_x = 28, $data = [], $error = '';
|
||||
@ -569,7 +571,7 @@ TASK;
|
||||
mysql_query('UPDATE `users` SET `money` = "' . $user['money'] . '", `exp` = "' . $user['exp'] . '", `doblest` = "' . $user['doblest'] . '" WHERE `id` = "' . $user['id'] . '" LIMIT 1');
|
||||
$this->error = 'Вы успешно сдали задание!';
|
||||
$text = '<font style="color: Red;">Внимание!</font> За успешно выполненное задание Вы получили : ' . $c;
|
||||
$this->msg($text, '{[]}' . $user['login'] . '{[]}', $user->getRoom());
|
||||
$this->msg($text, '{[]}' . $user['login'] . '{[]}', User::getInstance()->getRoom());
|
||||
} else {
|
||||
$this->error = 'Не все условия задания были выполнены ...';
|
||||
}
|
||||
|
13
config.php
13
config.php
@ -6,7 +6,7 @@
|
||||
* Project name: Battles-Game
|
||||
*/
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\User;
|
||||
|
||||
include_once 'classes/Database/db.php';
|
||||
@ -39,17 +39,6 @@ spl_autoload_register(function ($className) {
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Глобальные переменные. Промежуточное решение для совместимости.
|
||||
*/
|
||||
if (empty(DBPDO::$db)) {
|
||||
DBPDO::$db = new DBPDO();
|
||||
}
|
||||
|
||||
if (empty(User::$current) && $_SESSION['uid']) {
|
||||
User::$current = new User($_SESSION['uid']);
|
||||
}
|
||||
|
||||
// Для нападалок. Сперва комнаты в которых нельзя напасть, потом персонажи на которых нельзя напасть.
|
||||
const UNKILABLE = [
|
||||
'rooms' => [620, 621, 1051, 1052],
|
||||
|
@ -187,11 +187,32 @@ if ($tur_data['endtime'] < time() && $tur_data['id']) {
|
||||
mysql_query("UPDATE `users` SET `sila` = (`sila`-'" . $eff['sila'] . "'), `lovk` = (`lovk`-'" . $eff['lovk'] . "'), `inta` = (`inta`-'" . $eff['inta'] . "'), `maxhp` = (`maxhp`-'" . $eff['hp'] . "') WHERE `id` = '" . $eff['owner'] . "' LIMIT 1");
|
||||
}
|
||||
|
||||
if ($u['id'] != 233 && $u['id'] != 234 && $u['id'] != 235) {
|
||||
settravma($u['id'], 100, 86400, 1);
|
||||
}
|
||||
get_out($u['id']);
|
||||
mysql_query("UPDATE `users` SET `in_tower` = 0, `room` = '31' WHERE `id` = '" . $u['id'] . "' LIMIT 1");
|
||||
$pers = db::c()->query('SELECT * FROM users WHERE id = ?i', $u['id'])->fetch_assoc_array();
|
||||
DressedItems::undressAllItems($pers['id']);
|
||||
db::c()->query('UPDATE inventory SET owner = ?i WHERE owner = ?i', $pers['id'], $pers['id'] + _BOTSEPARATOR_);
|
||||
###
|
||||
$row = db::c()->query('SELECT * FROM `effects` WHERE `owner` = ?i', $pers['id'] + _BOTSEPARATOR_);
|
||||
$travm = [11, 12, 13, 14];
|
||||
while ($efs = $row->fetch_assoc()) {
|
||||
if (in_array($efs['type'], $travm)) {
|
||||
$pers['sila'] -= $efs['sila'];
|
||||
$pers['lovk'] -= $efs['lovk'];
|
||||
$pers['inta'] -= $efs['inta'];
|
||||
$pers['vinos'] -= $efs['vinos'];
|
||||
} else {
|
||||
$pers['sila'] += $efs['sila'];
|
||||
$pers['lovk'] += $efs['lovk'];
|
||||
$pers['inta'] += $efs['inta'];
|
||||
$pers['vinos'] += $efs['vinos'];
|
||||
$pers['maxhp'] += $efs['hp'];
|
||||
}
|
||||
$efs['owner'] = $_SESSION['uid'];
|
||||
mysql_query('UPDATE `effects` SET `owner` = "' . $efs['owner'] . '" WHERE `id` = "' . $efs['id'] . '" LIMIT 1');
|
||||
mysql_query('UPDATE `users` SET `sila` = "' . $pers['sila'] . '", `lovk` = "' . $pers['lovk'] . '", `inta` = "' . $pers['inta'] . '", `vinos` = "' . $pers['vinos'] . '", `maxhp` = "' . $pers['maxhp'] . '" WHERE `id` = "' . $pers['id'] . '" LIMIT 1');
|
||||
|
||||
|
||||
|
||||
mysql_query("UPDATE `users` SET `in_tower` = 0, `room` = '31' WHERE `id` = '" . $u['id'] . "' LIMIT 1");
|
||||
mysql_query("UPDATE `online` SET `room` = '31' WHERE `id` = '" . $u['id'] . "' LIMIT 1");
|
||||
}
|
||||
}
|
||||
|
12
enter.php
12
enter.php
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\GameLogs;
|
||||
use Battles\Template;
|
||||
|
||||
@ -19,7 +19,7 @@ $battle = $_COOKIE['battle'] ?? '';
|
||||
$error = "";
|
||||
|
||||
if ($username && $password) {
|
||||
$user_query = DBPDO::$db->ofetch('SELECT id, login, pass, room, block, session_id FROM users WHERE login = ?', $username);
|
||||
$user_query = Db::getInstance()->ofetch('SELECT id, login, pass, room, block, session_id FROM users WHERE login = ?', $username);
|
||||
|
||||
if (!$user_query->id) {
|
||||
$error = ERROR_NO_SUCH_USER;
|
||||
@ -43,14 +43,14 @@ if ($username && $password) {
|
||||
setcookie("uid", $user_query->id, time() + 43200, "/", GAMEDOMAIN);
|
||||
setcookie("hashcode", md5($user_query->id . $user_query->pass . $username), time() + 43200, "/", GAMEDOMAIN);
|
||||
|
||||
$onl = DBPDO::$db->ofetch('SELECT 1 FROM online WHERE user_id = ?', $user_query->id);
|
||||
$onl = Db::getInstance()->ofetch('SELECT 1 FROM online WHERE user_id = ?', $user_query->id);
|
||||
if ($onl) {
|
||||
DBPDO::$db->execute('UPDATE online SET login_time = ? WHERE user_id = ?', [time(), $user_query->id]);
|
||||
Db::getInstance()->execute('UPDATE online SET login_time = ? WHERE user_id = ?', [time(), $user_query->id]);
|
||||
} else {
|
||||
DBPDO::$db->execute('INSERT INTO online (user_id, login_time, room, real_time) VALUES (?,?,?,?)', [$user_query->id, time(), $user_query->room, time()]);
|
||||
Db::getInstance()->execute('INSERT INTO online (user_id, login_time, room, real_time) VALUES (?,?,?,?)', [$user_query->id, time(), $user_query->room, time()]);
|
||||
}
|
||||
|
||||
DBPDO::$db->execute('UPDATE users SET session_id = ?, enter_game = 1 WHERE id = ?', [session_id(), $user_query->id]);
|
||||
Db::getInstance()->execute('UPDATE users SET session_id = ?, enter_game = 1 WHERE id = ?', [session_id(), $user_query->id]);
|
||||
|
||||
session_start();
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once "functions.php";
|
||||
|
||||
@ -62,8 +63,8 @@ if ($_GET['ext'] == 1) {
|
||||
}
|
||||
|
||||
|
||||
if (in_array($user->getRoom(), CANAL_ENTERS)) {
|
||||
$podzemroom = $user->getRoom() + 1;
|
||||
if (in_array(User::getInstance()->getRoom(), CANAL_ENTERS)) {
|
||||
$podzemroom = User::getInstance()->getRoom() + 1;
|
||||
$cavedata = [620 => ['x1' => 3, 'y1' => 2, 'dir1' => 2]];
|
||||
$podzemdata = [621 => ['name1' => 'Проклятый Рудник', 'name2' => 'Проклятого Рудника']];
|
||||
$warning = $_GET["warning"] ?? '';
|
||||
@ -89,7 +90,7 @@ if (in_array($user->getRoom(), CANAL_ENTERS)) {
|
||||
|
||||
if (($user['align'] == '2.99') && $wait_sec > $new_t) {
|
||||
$wait_sec = 1;
|
||||
mysql_query("UPDATE `visit_podzem` SET `time` = 1 WHERE `login` = '$user[login]' AND `time` > 0 AND `room` = '$user->getRoom()' LIMIT 1");
|
||||
mysql_query("UPDATE `visit_podzem` SET `time` = 1 WHERE `login` = '$user[login]' AND `time` > 0 AND `room` = 'User::getInstance()->getRoom()' LIMIT 1");
|
||||
}
|
||||
|
||||
if ($wait_sec > $new_t && $_GET['donate']) {
|
||||
@ -199,7 +200,7 @@ if (in_array($user->getRoom(), CANAL_ENTERS)) {
|
||||
return $i;
|
||||
}
|
||||
|
||||
$Q = mysql_query("SELECT * FROM `vxod` WHERE `room` = '$user->getRoom()'");
|
||||
$Q = mysql_query("SELECT * FROM `vxod` WHERE `room` = 'User::getInstance()->getRoom()'");
|
||||
while ($DATA = mysql_fetch_array($Q)) {
|
||||
$cr = $DATA['glav_id'];
|
||||
$z_login[$i] = $DATA['login'];
|
||||
@ -275,7 +276,7 @@ if (in_array($user->getRoom(), CANAL_ENTERS)) {
|
||||
exit();
|
||||
}
|
||||
$time = date("H:i");
|
||||
$SQL2 = mysql_query("INSERT INTO `vxod` (`date`, `login`, `glav_id`, `comment`, `pass`, `room`) VALUES('$time', '$login', '$user_id', '" . mysql_real_escape_string($_GET['cmt']) . "', '" . mysql_real_escape_string($_GET['pass']) . "', '$user->getRoom()')");
|
||||
$SQL2 = mysql_query("INSERT INTO `vxod` (`date`, `login`, `glav_id`, `comment`, `pass`, `room`) VALUES('$time', '$login', '$user_id', '" . mysql_real_escape_string($_GET['cmt']) . "', '" . mysql_real_escape_string($_GET['pass']) . "', 'User::getInstance()->getRoom()')");
|
||||
$SQL2 = mysql_query("INSERT INTO `vxodd` (`login`, `glav_id`, `lvl`) VALUES('$login', '$user_id', '$user_lvl')");
|
||||
if ($SQL2) {
|
||||
echo "<script>location.href='main.php?act=none'</script>";
|
||||
@ -305,7 +306,7 @@ if (in_array($user->getRoom(), CANAL_ENTERS)) {
|
||||
}
|
||||
|
||||
$den = mysql_query("SELECT `id` FROM `vxodd` WHERE `glav_id` = '" . $_GET['naw_id'] . "'");
|
||||
if (mysql_num_rows($den) >= (in_array($user->getRoom() + 1, CAVE_ROOMS) ? 5 : 4)) {
|
||||
if (mysql_num_rows($den) >= (in_array(User::getInstance()->getRoom() + 1, CAVE_ROOMS) ? 5 : 4)) {
|
||||
echo "<script>location.href='?warning=5'</script>";
|
||||
exit();
|
||||
}
|
||||
@ -353,7 +354,7 @@ if (in_array($user->getRoom(), CANAL_ENTERS)) {
|
||||
}
|
||||
|
||||
if ($_GET['start']) {
|
||||
if (in_array($user->getRoom() + 1, CAVE_ROOMS)) {
|
||||
if (in_array(User::getInstance()->getRoom() + 1, CAVE_ROOMS)) {
|
||||
$nc = 1;
|
||||
$locs = [];
|
||||
}
|
||||
@ -375,8 +376,8 @@ if (in_array($user->getRoom(), CANAL_ENTERS)) {
|
||||
mysql_query("update `users` SET `money` = (`money-$nana[fee]) WHERE `id` = '$esth[id]' LIMIT 1");
|
||||
$user['money'] += $nana['fee'];
|
||||
$esth['money'] -= $nana['fee'];
|
||||
adddelo($user['id'], "Персонаж $user[login] получил $nana[fee] кр. за поход по локации \"" . $rooms[$user->getRoom() + 1] . "\" от персонажа $esth[login] ($user[money]).", 1);
|
||||
adddelo($esth['id'], "Персонаж $esth[login] заплатил $nana[fee] кр. за поход по локации \"" . $rooms[$user->getRoom() + 1] . "\" персонажу $user[login] ($esth[money]).", 1);
|
||||
adddelo($user['id'], "Персонаж $user[login] получил $nana[fee] кр. за поход по локации \"" . $rooms[User::getInstance()->getRoom() + 1] . "\" от персонажа $esth[login] ($user[money]).", 1);
|
||||
adddelo($esth['id'], "Персонаж $esth[login] заплатил $nana[fee] кр. за поход по локации \"" . $rooms[User::getInstance()->getRoom() + 1] . "\" персонажу $user[login] ($esth[money]).", 1);
|
||||
}
|
||||
if ($esth['level'] > $level) {
|
||||
$level = $esth['level'];
|
||||
@ -389,12 +390,12 @@ if (in_array($user->getRoom(), CANAL_ENTERS)) {
|
||||
$vrem = 30 * 60 + time();
|
||||
|
||||
$cavedata = CAVE_DATA ?? [];
|
||||
mysql_query("INSERT INTO `caveparties` SET `user` = '$esth[id]', `leader` = '$user[id]', `login` = '$esth[login]', `shadow` = '0.png', `x` = '" . $cavedata[$user->getRoom() + 1]['x1'] . "', `y` = '" . $cavedata[$user->getRoom() + 1]['y1'] . "', `dir` = '" . $cavedata[$user->getRoom() + 1]['dir1'] . "', `floor` = 1");
|
||||
mysql_query("UPDATE `users`, `online` SET " . ($nc ? "`users`.`caveleader` = '$user[id]', " : "") . " `users`.`room` = '" . ($user->getRoom() + 1) . "', `online`.`room` = '" . ($user->getRoom() + 1) . "' WHERE `online`.`id` = `users`.`id` AND `online`.`id` = '" . $esth['id'] . "'");
|
||||
mysql_query("INSERT INTO `caveparties` SET `user` = '$esth[id]', `leader` = '$user[id]', `login` = '$esth[login]', `shadow` = '0.png', `x` = '" . $cavedata[User::getInstance()->getRoom() + 1]['x1'] . "', `y` = '" . $cavedata[User::getInstance()->getRoom() + 1]['y1'] . "', `dir` = '" . $cavedata[User::getInstance()->getRoom() + 1]['dir1'] . "', `floor` = 1");
|
||||
mysql_query("UPDATE `users`, `online` SET " . ($nc ? "`users`.`caveleader` = '$user[id]', " : "") . " `users`.`room` = '" . (User::getInstance()->getRoom() + 1) . "', `online`.`room` = '" . (User::getInstance()->getRoom() + 1) . "' WHERE `online`.`id` = `users`.`id` AND `online`.`id` = '" . $esth['id'] . "'");
|
||||
}
|
||||
|
||||
if ($nc) {
|
||||
$r = mysql_query("SELECT * FROM `cavemaps` WHERE `room` = '$user->getRoom()'");
|
||||
$r = mysql_query("SELECT * FROM `cavemaps` WHERE `room` = 'User::getInstance()->getRoom()'");
|
||||
while ($rec = mysql_fetch_assoc($r)) {
|
||||
$map = unserialize($rec['map']);
|
||||
foreach ($map as $k => $v) {
|
||||
|
@ -1,12 +1,12 @@
|
||||
<?php
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\Template;
|
||||
|
||||
require_once 'config.php';
|
||||
$userLoginStatus = DBPDO::$db->ofetch('select enter_game from users where id = ?', $_SESSION['uid']);
|
||||
$userLoginStatus = Db::getInstance()->ofetch('select enter_game from users where id = ?', $_SESSION['uid']);
|
||||
if (!empty($userLoginStatus->enter_game)) {
|
||||
DBPDO::$db->execute('update users set enter_game = 0 where enter_game = 1 and id = ?', $_SESSION['uid']);
|
||||
Db::getInstance()->execute('update users set enter_game = 0 where enter_game = 1 and id = ?', $_SESSION['uid']);
|
||||
}
|
||||
|
||||
Template::header('Окно игры');
|
||||
|
@ -3,9 +3,10 @@
|
||||
use Battles\GameLogs;
|
||||
use Battles\Nick;
|
||||
use Battles\Template;
|
||||
use Battles\User
|
||||
|
||||
require_once "functions.php";
|
||||
if ($user->getRoom() == 51) {
|
||||
if (User::getInstance()->getRoom() == 51) {
|
||||
header('location: city.php');
|
||||
exit;
|
||||
}
|
||||
|
56
forum.php
56
forum.php
@ -1,7 +1,11 @@
|
||||
<?php
|
||||
|
||||
use Battles\Nick;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once 'config.php';
|
||||
$user = \Battles\User::$current;
|
||||
$sleep = db::c()->query('SELECT `id` FROM `effects` WHERE `owner` = ?i AND `time` > ?i AND `type` = 3', $user['id'], time())->fetch_assoc();
|
||||
$sleep = db::c()->query('SELECT `id` FROM `effects` WHERE `owner` = ?i AND `time` > ?i AND `type` = 3', User::getInstance()->getId(), time())->fetch_assoc();
|
||||
$ps = $_GET['page'] ?? 0;
|
||||
$isModerator = false;
|
||||
$isAdmin = false;
|
||||
@ -72,7 +76,7 @@ function close_dangling_tags($html)
|
||||
return $html;
|
||||
}
|
||||
|
||||
if (isset($_POST['add']) && isset($user['id'])) {
|
||||
if (isset($_POST['add']) && User::getInstance()->getId()) {
|
||||
|
||||
$icon = htmlentities($_POST['icon'], ENT_NOQUOTES, 'utf8');
|
||||
$text2 = htmlspecialchars($_POST['title'], ENT_NOQUOTES, 'utf8');
|
||||
@ -86,12 +90,8 @@ if (isset($_POST['add']) && isset($user['id'])) {
|
||||
rtrim($_POST['text']);
|
||||
if (empty($_POST['text']) || empty($_POST['title'])) {
|
||||
$error = "Заголовок или текст не могут быть пустыми!";
|
||||
} elseif (($minmax['min_align'] == 0 && $minmax['max_align'] == 0) || ($user['align'] >= $minmax['min_align'] && $user['align'] <= $minmax['max_align']) || $isAdmin) {
|
||||
if ($user['invis'] == 1) {
|
||||
$userPost = '<b>Невидимка</b>';
|
||||
} else {
|
||||
$userPost = Nick::id($user['id'])->full(1);
|
||||
}
|
||||
} elseif (($minmax['min_align'] == 0 && $minmax['max_align'] == 0) || (User::getInstance()->getAlign() >= $minmax['min_align'] && User::getInstance()->getAlign() <= $minmax['max_align']) || $isAdmin) {
|
||||
$userPost = Nick::id(User::getInstance()->getId())->full();
|
||||
if ($isModerator == false) $text1 = strip_tags($text1, '<b><i><u><code><a><br><img><div>');
|
||||
|
||||
db::c()->query('INSERT INTO `forum` (`type`, `topic`, `text`, `parent`, `author`, `date`, `min_align`, `max_align`, `icon`) VALUES (2,"?s","?s",?i,"?s","?s","?s","?s","?s")', $text2, $text1, $_GET['conf'], $userPost, date('d.m.y H:i:s'), $min_align, $max_align, $icon);
|
||||
@ -105,7 +105,7 @@ if (isset($_POST['add']) && isset($user['id'])) {
|
||||
unset($_POST['add']);
|
||||
}
|
||||
|
||||
if (isset($_POST['add2']) && isset($user['id'])) {
|
||||
if (isset($_POST['add2']) && User::getInstance()->getId()) {
|
||||
$text2 = htmlspecialchars($_POST['title'], ENT_NOQUOTES, 'utf8');
|
||||
$text1 = parse_bb_code(preg_replace("/\n/", "<br />", $_POST['text']));
|
||||
|
||||
@ -120,12 +120,8 @@ if (isset($_POST['add2']) && isset($user['id'])) {
|
||||
$error = "Не надо так делать";
|
||||
}
|
||||
|
||||
if (($minmax['min_align'] == 0 && $minmax['max_align'] == 0) || ($user['align'] >= $minmax['min_align'] && $user['align'] <= $minmax['max_align']) && $minmax['close'] == "0" || $isAdmin) {
|
||||
if ($user['invis'] == 1) {
|
||||
$userPost = '<b>Невидимка</b>';
|
||||
} else {
|
||||
$userPost = Nick::id($user['id'])->full(1);
|
||||
}
|
||||
if (($minmax['min_align'] == 0 && $minmax['max_align'] == 0) || (User::getInstance()->getAlign() >= $minmax['min_align'] && User::getInstance()->getAlign() <= $minmax['max_align']) && $minmax['close'] == "0" || $isAdmin) {
|
||||
$userPost = Nick::id(User::getInstance()->getId())->full();
|
||||
|
||||
if ($isModerator == false) {
|
||||
$text1 = strip_tags($text1, '<b><i><u><code><a><br><img><div>');
|
||||
@ -165,11 +161,7 @@ if (isset($_GET['dt']) && $isModerator == true) {
|
||||
}
|
||||
|
||||
if (isset($_GET['com']) && isset($_GET['cpr']) && $isModerator == true) {
|
||||
if ($user['invis'] == 1) {
|
||||
$addText = "<br /><b>Невидимка</b>: " . $_GET['cpr'];
|
||||
} else {
|
||||
$addText = Nick::id($user['id'])->full(1) . ": " . $_GET['cpr'];
|
||||
}
|
||||
$addText = Nick::id(User::getInstance()->getId())->full() . ": " . $_GET['cpr'];
|
||||
db::c()->query('UPDATE `forum` SET `text` = CONCAT(`text`,"?s") WHERE `id` = ?i', $addText, $_GET['com']);
|
||||
echo "<script>window.location='?topic=" . $_GET['topic'] . "&rnd'</script>";
|
||||
exit();
|
||||
@ -183,7 +175,7 @@ if (isset($_GET['do']) && $isModerator == true) {
|
||||
}
|
||||
|
||||
if ($_GET['do'] == "close") {
|
||||
$closeComment = "Обсуждение закрыл " . ($isAdmin) ? "<b>Администратор</b>" : Nick::id($user['id'])->full(1);
|
||||
$closeComment = "Обсуждение закрыл " . ($isAdmin) ? "<b>Администратор</b>" : Nick::id(User::getInstance()->getId())->full(1);
|
||||
db::c()->query('UPDATE `forum` SET `close` = 1, `closepal` = "?s" WHERE `id` = "?s"', $closeComment, $_GET['topic']);
|
||||
echo "<script>window.location='?topic=" . $_GET['topic'] . "&rnd'</script>";
|
||||
exit();
|
||||
@ -201,7 +193,7 @@ if (isset($_GET['do']) && $isModerator == true) {
|
||||
exit();
|
||||
}
|
||||
}
|
||||
\Battles\Template::header('Форум');
|
||||
Template::header('Форум');
|
||||
?>
|
||||
<link rel="stylesheet" href="css/wysibb/theme/default/wbbtheme.css"/>
|
||||
<script type="text/javascript" language="JavaScript" src='js/forum.js'></script>
|
||||
@ -209,17 +201,17 @@ if (isset($_GET['do']) && $isModerator == true) {
|
||||
<tr valign="top">
|
||||
<td width="200">
|
||||
<br/>
|
||||
<?php if (isset($user['id'])) echo "Игрок : " . Nick::id($user['id'])->full(1) . "<br />"; ?>
|
||||
<?php if (User::getInstance()->getId()) { echo "Игрок : " . Nick::id(User::getInstance()->getId())->full(1) . "<br>"; } ?>
|
||||
<h4>Конференции</h4>
|
||||
<?php
|
||||
if ((isset($_GET['conf']) && is_numeric($_GET['conf'])) || (isset($_GET['konftop']) && is_numeric($_GET['konftop'])) || $Movemess == 1) {
|
||||
$data = db::c()->query('SELECT * FROM `forum` WHERE `parent` = 0 AND `type` = 1 ORDER BY `id` ASC');
|
||||
while ($row = $data->fetch_assoc()) {
|
||||
if (($row['min_align'] == 0 && $row['max_align'] == 0) || ($user['align'] >= $row['min_align'] && $user['align'] <= $row['max_align']) || $isAdmin) {
|
||||
if (($row['min_align'] == 0 && $row['max_align'] == 0) || (User::getInstance()->getAlign() >= $row['min_align'] && User::getInstance()->getAlign() <= $row['max_align']) || $isAdmin) {
|
||||
$min = $row['min_align'] == 0;
|
||||
$max = $row['max_align'] == 0;
|
||||
|
||||
if (!isset($user['id']) || (($user['align'] < $row['min_align']) || ($user['align'] > $row['max_align']) && !$min && !$max)) {
|
||||
if (!User::getInstance()->getId() || ((User::getInstance()->getAlign() < $row['min_align']) || (User::getInstance()->getAlign() > $row['max_align']) && !$min && !$max)) {
|
||||
echo '<nobr><b> 📕';
|
||||
} else {
|
||||
echo '<nobr><b> 📖 ';
|
||||
@ -234,7 +226,7 @@ if (isset($_GET['do']) && $isModerator == true) {
|
||||
<?php
|
||||
if (!isset($_GET['conf'])) {
|
||||
$row = db::c()->query('SELECT * FROM `forum` WHERE `id` = "?s"', $_GET['topic'])->fetch_assoc();
|
||||
if (($row['min_align'] == 0 && $row['max_align'] == 0) || ($user['align'] >= $row['min_align'] && $user['align'] <= $row['max_align']) || $isAdmin) {
|
||||
if (($row['min_align'] == 0 && $row['max_align'] == 0) || (User::getInstance()->getAlign() >= $row['min_align'] && User::getInstance()->getAlign() <= $row['max_align']) || $isAdmin) {
|
||||
$top = $row['parent'];
|
||||
$parentCat = db::c()->query('SELECT * FROM `forum` WHERE `id` = ?i', $top)->fetch_assoc();
|
||||
$icons = $row['icon'];
|
||||
@ -371,9 +363,9 @@ if (isset($_GET['do']) && $isModerator == true) {
|
||||
if ($closed == 1) {
|
||||
echo "<br /><div align=center>" . $closepal . "</div><br /><br />";
|
||||
} else {
|
||||
if (!empty($user['block'])) {
|
||||
if (User::getInstance()->getBlock()) {
|
||||
$error = "Вы заблокированы!";
|
||||
} elseif ($user['level'] < 2) {
|
||||
} elseif (User::getInstance()->getLevel() < 2) {
|
||||
$error = "Персонажам до 2-го уровня запрещено писать на форуме!";
|
||||
} elseif (isset($sleep['id'])) {
|
||||
$error = "Вы молчите!";
|
||||
@ -423,7 +415,7 @@ if (isset($_GET['do']) && $isModerator == true) {
|
||||
}
|
||||
} else {
|
||||
if (is_numeric($_GET['conf']) && $row = db::c()->query('SELECT * FROM `forum` WHERE `id` = ?i', $_GET['conf'])->fetch_assoc()) {
|
||||
if (($row['min_align'] == 0 && $row['max_align'] == 0) || ($user['align'] >= $row['min_align'] && $user['align'] <= $row['max_align']) || $isAdmin) {
|
||||
if (($row['min_align'] == 0 && $row['max_align'] == 0) || (User::getInstance()->getAlign() >= $row['min_align'] && User::getInstance()->getAlign() <= $row['max_align']) || $isAdmin) {
|
||||
$confname = 'Конференция «' . $row['topic'] . '»';
|
||||
$pgs = db::c()->query('SELECT count(`id`) FROM `forum` WHERE `parent` = ?i ORDER BY `fix` DESC, `updated` DESC', $_GET['conf'])->fetch_row();
|
||||
$pgs = $pgs[0] / 20;
|
||||
@ -506,9 +498,9 @@ if (isset($_GET['do']) && $isModerator == true) {
|
||||
|
||||
echo $pages_str . "</p>";
|
||||
|
||||
if (!empty($user['block'])) {
|
||||
if (User::getInstance()->getBlock()) {
|
||||
$error = "Вы заблокированы!";
|
||||
} elseif ($user['level'] < 2) {
|
||||
} elseif (User::getInstance()->getLevel() < 2) {
|
||||
$error = "Персонажам до 2-го уровня запрещено писать на форуме!";
|
||||
} elseif (isset($sleep['id'])) {
|
||||
$error = "Вы молчите!";
|
||||
|
210
functions.php
210
functions.php
@ -5,7 +5,7 @@
|
||||
* Project name: Battles-Game
|
||||
*/
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\DressedItems;
|
||||
use Battles\InventoryItem;
|
||||
use Battles\Travel;
|
||||
@ -17,70 +17,71 @@ require_once 'config.php';
|
||||
if (empty($_SESSION['uid'])) {
|
||||
header("Location: index.php");
|
||||
exit;
|
||||
} elseif (empty($user)) {
|
||||
$user = new User($_SESSION['uid']);
|
||||
}
|
||||
|
||||
if (User::$current->getBlock()) {
|
||||
if (User::getInstance()->getBlock()) {
|
||||
exit('user blocked!');
|
||||
}
|
||||
|
||||
/*
|
||||
* Проверки на соответствие скрипта и комнаты, которые были натыканы по всем файлам.
|
||||
*/
|
||||
$fbattleCheckFiles = [
|
||||
'c_haos_in.php',
|
||||
'c_haos.php',
|
||||
'c_park.php',
|
||||
'city.php',
|
||||
'clan_castle.php',
|
||||
'enter_cave.php',
|
||||
'library.php',
|
||||
'atk.php',
|
||||
'podzem_dialog.php',
|
||||
'post.php',
|
||||
'shop.php',
|
||||
'tournament.php',
|
||||
'vxod.php',
|
||||
'bank.php',
|
||||
'canalizaciya,php',
|
||||
'forest.php',
|
||||
'main.php',
|
||||
'repair.php',
|
||||
'towerstamp.php',
|
||||
'hell.php',
|
||||
'ul_clans.php',
|
||||
'labirint.php',
|
||||
'akadem.php',
|
||||
'towerin.php',
|
||||
'user_anketa.php',
|
||||
'zayavka.php',
|
||||
];
|
||||
//Может просто отовсюду? О_о
|
||||
if (User::$current->getBattle() && in_array(pathinfo(debug_backtrace()[0]['file'])['basename'], $fbattleCheckFiles)) {
|
||||
header('location: fbattle.php');
|
||||
exit;
|
||||
}
|
||||
$towerinCheckFiles = ['main.php', 'city.php', 'tower.php'];
|
||||
if (User::$current->getInTower() && in_array(pathinfo(debug_backtrace()[0]['file'])['basename'], $towerinCheckFiles)) {
|
||||
header('location: towerin.php');
|
||||
exit;
|
||||
}
|
||||
$roomsCheck = [22, 23, 25, 27, 29, 30, 31, 37, 38, 39, 40, 41, 45, 53, 61, 401, 402, 600, 601, 602, 621, 650, 1051, 1052];
|
||||
// Если я в одной из этих комнат,
|
||||
// [И] Имя файла который инклюдит файл с проверкой не совпадает с именем файла локации в которой я нахожусь
|
||||
// [И] Номер комнаты который я пытаюсь открыть есть в списке проверяемых
|
||||
if (in_array(User::$current->getRoom(), $roomsCheck)
|
||||
&& pathinfo(debug_backtrace()[0]['file'])['basename'] != Travel::$roomFileName[User::$current->getRoom()]
|
||||
&& in_array(array_search(pathinfo(debug_backtrace()[0]['file'])['basename'], Travel::$roomFileName), $roomsCheck)) {
|
||||
header('location: main.php');
|
||||
exit;
|
||||
}
|
||||
//Проверки на соответствие скрипта и комнаты, которые были натыканы по всем файлам.
|
||||
Travel::roomRedirects(User::$current->getRoom(), User::$current->getBattle(), User::$current->getInTower());
|
||||
|
||||
///*
|
||||
// * Проверки на соответствие скрипта и комнаты, которые были натыканы по всем файлам.
|
||||
// */
|
||||
//$fbattleCheckFiles = [
|
||||
// 'c_haos_in.php',
|
||||
// 'c_haos.php',
|
||||
// 'c_park.php',
|
||||
// 'city.php',
|
||||
// 'clan_castle.php',
|
||||
// 'enter_cave.php',
|
||||
// 'library.php',
|
||||
// 'atk.php',
|
||||
// 'podzem_dialog.php',
|
||||
// 'post.php',
|
||||
// 'shop.php',
|
||||
// 'tournament.php',
|
||||
// 'vxod.php',
|
||||
// 'bank.php',
|
||||
// 'canalizaciya,php',
|
||||
// 'forest.php',
|
||||
// 'main.php',
|
||||
// 'repair.php',
|
||||
// 'towerstamp.php',
|
||||
// 'hell.php',
|
||||
// 'ul_clans.php',
|
||||
// 'labirint.php',
|
||||
// 'akadem.php',
|
||||
// 'towerin.php',
|
||||
// 'user_anketa.php',
|
||||
// 'zayavka.php',
|
||||
//];
|
||||
////Может просто отовсюду? О_о
|
||||
//if (User::$current->getBattle() && in_array(pathinfo(debug_backtrace()[0]['file'])['basename'], $fbattleCheckFiles)) {
|
||||
// header('location: fbattle.php');
|
||||
// exit;
|
||||
//}
|
||||
//$towerinCheckFiles = ['main.php', 'city.php', 'tower.php'];
|
||||
//if (User::$current->getInTower() && in_array(pathinfo(debug_backtrace()[0]['file'])['basename'], $towerinCheckFiles)) {
|
||||
// header('location: towerin.php');
|
||||
// exit;
|
||||
//}
|
||||
//$roomsCheck = [22, 23, 25, 27, 29, 30, 31, 37, 38, 39, 40, 41, 45, 53, 61, 401, 402, 600, 601, 602, 621, 650, 1051, 1052];
|
||||
//// Если я в одной из этих комнат,
|
||||
//// [И] Имя файла который инклюдит файл с проверкой не совпадает с именем файла локации в которой я нахожусь
|
||||
//// [И] Номер комнаты который я пытаюсь открыть есть в списке проверяемых
|
||||
//if (in_array(User::$current->getRoom(), $roomsCheck)
|
||||
// && pathinfo(debug_backtrace()[0]['file'])['basename'] != Travel::$roomFileName[User::$current->getRoom()]
|
||||
// && in_array(array_search(pathinfo(debug_backtrace()[0]['file'])['basename'], Travel::$roomFileName), $roomsCheck)) {
|
||||
// header('location: main.php');
|
||||
// exit;
|
||||
//}
|
||||
|
||||
if (!empty($_GET['goto']) && !empty($_GET['tStamp']) && !empty($_GET['vcode']) && $_GET['vcode'] == md5(sha1($_GET['goto'] . $_GET['tStamp']))) {
|
||||
$query = 'update users u, online o set u.room = ?, o.room = ? where user_id = id and user_id = ?';
|
||||
DBPDO::$db->execute($query, [$_GET['goto'], $_GET['goto'], User::$current->getId()]);
|
||||
User::$current->setRoom(intval($_GET['goto']));
|
||||
Db::getInstance()->execute($query, [$_GET['goto'], $_GET['goto'], User::getInstance()->getId()]);
|
||||
User::getInstance()->setRoom(intval($_GET['goto']));
|
||||
}
|
||||
|
||||
function createbot($bot, $login = "")
|
||||
@ -109,34 +110,6 @@ $var_map = [
|
||||
'cell_25' => 'Полесье',
|
||||
];
|
||||
|
||||
function get_out($u)
|
||||
{
|
||||
$pers = db::c()->query('SELECT * FROM users WHERE id = ?i', $u)->fetch_assoc_array();
|
||||
DressedItems::undressAllItems($pers['id']);
|
||||
db::c()->query('UPDATE inventory SET owner = ?i WHERE owner = ?i', $pers['id'], $pers['id'] + _BOTSEPARATOR_);
|
||||
###
|
||||
$row = db::c()->query('SELECT * FROM `effects` WHERE `owner` = ?i', $pers['id'] + _BOTSEPARATOR_);
|
||||
$travm = [11, 12, 13, 14];
|
||||
while ($efs = $row->fetch_assoc()) {
|
||||
if (in_array($efs['type'], $travm)) {
|
||||
$pers['sila'] -= $efs['sila'];
|
||||
$pers['lovk'] -= $efs['lovk'];
|
||||
$pers['inta'] -= $efs['inta'];
|
||||
$pers['vinos'] -= $efs['vinos'];
|
||||
} else {
|
||||
$pers['sila'] += $efs['sila'];
|
||||
$pers['lovk'] += $efs['lovk'];
|
||||
$pers['inta'] += $efs['inta'];
|
||||
$pers['vinos'] += $efs['vinos'];
|
||||
$pers['maxhp'] += $efs['hp'];
|
||||
}
|
||||
$efs['owner'] = $_SESSION['uid'];
|
||||
//mysql_query('UPDATE `effects` SET `owner` = "' . $efs['owner'] . '" WHERE `id` = "' . $efs['id'] . '" LIMIT 1');
|
||||
//mysql_query('UPDATE `users` SET `sila` = "' . $pers['sila'] . '", `lovk` = "' . $pers['lovk'] . '", `inta` = "' . $pers['inta'] . '", `vinos` = "' . $pers['vinos'] . '", `maxhp` = "' . $pers['maxhp'] . '" WHERE `id` = "' . $pers['id'] . '" LIMIT 1');
|
||||
}
|
||||
###
|
||||
}
|
||||
|
||||
const _BOTSEPARATOR_ = 10000000;
|
||||
|
||||
function savecavedata($cavedata, $caveleader, $floor)
|
||||
@ -185,19 +158,19 @@ HTML;
|
||||
function echoscroll($slot)
|
||||
{
|
||||
$all_magic = 0;
|
||||
if (User::$current->getBattle()) {
|
||||
if (User::getInstance()->getBattle()) {
|
||||
$script = 'fbattle';
|
||||
$bat = db::c()->query('SELECT `magic` FROM `battle` WHERE `id` = ?i', User::$current->getBattle())->fetch_assoc();
|
||||
$bat = db::c()->query('SELECT `magic` FROM `battle` WHERE `id` = ?i', User::getInstance()->getBattle())->fetch_assoc();
|
||||
$all_magic = unserialize($bat['magic']);
|
||||
} else {
|
||||
$script = 'main';
|
||||
}
|
||||
|
||||
$dress = db::c()->query('SELECT `id`, `magic`, `name`, `img`, `duration`, `maxdur` FROM `inventory` WHERE `id` = ?i', User::$current->$slot)->fetch_assoc();
|
||||
$dress = db::c()->query('SELECT `id`, `magic`, `name`, `img`, `duration`, `maxdur` FROM `inventory` WHERE `id` = ?i', User::getInstance()->$slot)->fetch_assoc();
|
||||
$need_charge = db::c()->query('SELECT `needcharge` FROM `magic` WHERE `id` = ?i', $dress['magic'])->fetch_assoc();
|
||||
|
||||
if ((User::$current->$slot > 0) && ($all_magic[User::$current->getId()] < 1 || empty($need_charge['needcharge']))) {
|
||||
$row['id'] = User::$current->$slot;
|
||||
if ((User::getInstance()->$slot > 0) && ($all_magic[User::getInstance()->getId()] < 1 || empty($need_charge['needcharge']))) {
|
||||
$row['id'] = User::getInstance()->$slot;
|
||||
if ($dress['magic']) {
|
||||
$magic = db::c()->query('SELECT targeted FROM `magic` WHERE `id` = ?i', $dress['magic'])->fetch_assoc();
|
||||
echo "<a onclick=\"";
|
||||
@ -214,7 +187,7 @@ function echoscroll($slot)
|
||||
echo <<<ACTIVE_SCROLL
|
||||
<img class='tooltip' src="i/sh/{$dress['img']}" width='40' title="<b>{$dress['name']}</b><br> Прочность {$dress['duration']} / {$dress['maxdur']} " height='25' alt="Свиток"></a>
|
||||
ACTIVE_SCROLL;
|
||||
} elseif ((User::$current->$slot > 0) && ($all_magic[User::$current->getId()] >= 1) && $need_charge['needcharge'] > 0) {
|
||||
} elseif ((User::getInstance()->$slot > 0) && ($all_magic[User::getInstance()->getId()] >= 1) && $need_charge['needcharge'] > 0) {
|
||||
echo <<<INACTIVE_SCROLL
|
||||
<img src="i/sh/magicclock.gif" width="40" height="25" title='Произведите размен ударами и магия снова станет доступна' alt="Свиток">
|
||||
INACTIVE_SCROLL;
|
||||
@ -367,8 +340,9 @@ function ref_drop()
|
||||
// использовать магию
|
||||
function usemagic($id, $target)
|
||||
{
|
||||
$row = db::c()->query('SELECT * FROM `inventory` WHERE `owner` = ?i AND id = ?i', User::$current->getId(), $id)->fetch_assoc_array();
|
||||
$bat = db::c()->query('SELECT * FROM `battle` WHERE `id` = ?i', User::$current->getBattle())->fetch_assoc_array();
|
||||
$user = Db::getInstance()->fetch('select * from users where id = ?', $_SESSION['uid']);
|
||||
$row = db::c()->query('SELECT * FROM `inventory` WHERE `owner` = ?i AND id = ?i', User::getInstance()->getId(), $id)->fetch_assoc_array();
|
||||
$bat = db::c()->query('SELECT * FROM `battle` WHERE `id` = ?i', User::getInstance()->getBattle())->fetch_assoc_array();
|
||||
$all_magic = unserialize($bat['magic']);
|
||||
$charge = 0;
|
||||
$magic = db::c()->query('SELECT * FROM `magic` WHERE `id` = ?i', $row['magic'])->fetch_assoc_array();
|
||||
@ -382,7 +356,7 @@ function usemagic($id, $target)
|
||||
$charge = $incmagic['needcharge'];
|
||||
}
|
||||
//Переделать под новую базу
|
||||
if (($all_magic[User::$current->getId()] < 1 || $charge == 0) &&
|
||||
if (($all_magic[User::getInstance()->getId()] < 1 || $charge == 0) &&
|
||||
($user['sila'] >= $row['nsila'] &&
|
||||
$user['lovk'] >= $row['nlovk'] &&
|
||||
$user['inta'] >= $row['ninta'] &&
|
||||
@ -430,22 +404,22 @@ function usemagic($id, $target)
|
||||
} else {
|
||||
$query = 'update inventory set durability = durability + ? where item_id = ?';
|
||||
}
|
||||
DBPDO::$db->execute($query, [$bat, $row['id']]);
|
||||
Db::getInstance()->execute($query, [$bat, $row['id']]);
|
||||
}
|
||||
if (!$charge) {
|
||||
$charge = 0;
|
||||
}
|
||||
//ограничение по кол-ву за ход
|
||||
if (User::$current->getBattle()) {
|
||||
$bat = DBPDO::$db->fetch('select * from battle where battle_id = ?', User::$current->getBattle());
|
||||
if (User::getInstance()->getBattle()) {
|
||||
$batMagic = Db::getInstance()->fetchColumn('select magic from battle where battle_id = ?', User::getInstance()->getBattle());
|
||||
}
|
||||
if ($bat['magic'] == '') {
|
||||
if (empty($batMagic)) {
|
||||
$all_magic = [];
|
||||
} else {
|
||||
$all_magic = unserialize($bat['magic']);
|
||||
$all_magic = unserialize($batMagic);
|
||||
}
|
||||
$all_magic[User::$current->getId()] += $charge;
|
||||
DBPDO::$db->execute('update battle set magic = ? where battle_id = ?', [serialize($all_magic), User::$current->getBattle()]);
|
||||
$all_magic[User::getInstance()->getId()] += $charge;
|
||||
Db::getInstance()->execute('update battle set magic = ? where battle_id = ?', [serialize($all_magic), User::getInstance()->getBattle()]);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
@ -462,11 +436,11 @@ function usemagic($id, $target)
|
||||
function addch($text, $room = 0)
|
||||
{
|
||||
if ($room == 0) {
|
||||
$room = User::$current->getRoom();
|
||||
$room = User::getInstance()->getRoom();
|
||||
}
|
||||
if ($fp = @fopen("tmp/chat.txt", "a")) { //открытие
|
||||
flock($fp, LOCK_EX); //БЛОКИРОВКА ФАЙЛА
|
||||
fputs($fp, ":[" . time() . "]:[!sys!!]:[" . ($text) . "]:[" . $room . "]\r\n"); //работа с файлом
|
||||
fwrite($fp, ":[" . time() . "]:[!sys!!]:[" . ($text) . "]:[" . $room . "]\r\n"); //работа с файлом
|
||||
fflush($fp); //ОЧИЩЕНИЕ ФАЙЛОВОГО БУФЕРА И ЗАПИСЬ В ФАЙЛ
|
||||
flock($fp, LOCK_UN); //СНЯТИЕ БЛОКИРОВКИ
|
||||
fclose($fp); //закрытие
|
||||
@ -477,11 +451,11 @@ function addch($text, $room = 0)
|
||||
function addchp($text, $who, $room = 0)
|
||||
{
|
||||
if ($room == 0) {
|
||||
$room = User::$current->getRoom();
|
||||
$room = User::getInstance()->getRoom();
|
||||
}
|
||||
$fp = fopen("tmp/chat.txt", "a"); //открытие
|
||||
flock($fp, LOCK_EX); //БЛОКИРОВКА ФАЙЛА
|
||||
fputs($fp, ":[" . time() . "]:[{$who}]:[" . ($text) . "]:[" . $room . "]\r\n"); //работа с файлом
|
||||
fwrite($fp, ":[" . time() . "]:[{$who}]:[" . ($text) . "]:[" . $room . "]\r\n"); //работа с файлом
|
||||
fflush($fp); //ОЧИЩЕНИЕ ФАЙЛОВОГО БУФЕРА И ЗАПИСЬ В ФАЙЛ
|
||||
flock($fp, LOCK_UN); //СНЯТИЕ БЛОКИРОВКИ
|
||||
fclose($fp); //закрытие
|
||||
@ -500,8 +474,8 @@ function err($t)
|
||||
*/
|
||||
function telegraph(int $userId, string $text)
|
||||
{
|
||||
if (DBPDO::$db->ofetch('SELECT 1 FROM users WHERE id = ?', $userId)) {
|
||||
DBPDO::$db->execute('INSERT INTO chat (user_id,receiver_id,msg,type) VALUES (-1,?,?,?)', [$userId, $text, 'sms']);
|
||||
if (Db::getInstance()->ofetch('SELECT 1 FROM users WHERE id = ?', $userId)) {
|
||||
Db::getInstance()->execute('INSERT INTO chat (user_id,receiver_id,msg,type) VALUES (-1,?,?,?)', [$userId, $text, 'sms']);
|
||||
}
|
||||
}
|
||||
|
||||
@ -542,33 +516,31 @@ function SolveExp($at_id, $def_id, $damage): float
|
||||
$bot_def = false;
|
||||
|
||||
if ($at_id > _BOTSEPARATOR_) {
|
||||
$bots = DBPDO::$db->fetch('select * from bots where bot_id = ?', $at_id);
|
||||
$at_id = $bots['prototype'];
|
||||
$at_id = Db::getInstance()->fetchColumn('select prototype from bots where bot_id = ?', $at_id);
|
||||
$bot_active = true;
|
||||
}
|
||||
|
||||
$query = 'select greatest(1, sum(price)) as allprice from users left join inventory on users.id = inventory.owner_id where id = ?';
|
||||
$at = DBPDO::$db->fetch($query, $at_id);
|
||||
$def = DBPDO::$db->fetch($query, $def_id);
|
||||
$atAllPrice = Db::getInstance()->fetchColumn($query, $at_id);
|
||||
$defAllPrice = Db::getInstance()->fetchColumn($query, $def_id);
|
||||
|
||||
$atInfo = new UserStats($at_id);
|
||||
$defInfo = new UserStats($def_id);
|
||||
|
||||
$table_name = $at_id > _BOTSEPARATOR_ ? 'bots' : 'users';
|
||||
$bt = DBPDO::$db->fetch('select blood, type, t1, t2 from battle where battle_id = (select battle from ? where id = ?)', [$table_name, $at_id]);
|
||||
$bt = Db::getInstance()->ofetch('select blood, type, t1, t2 from battle where battle_id = (select battle from ? where id = ?)', [$table_name, $at_id]);
|
||||
|
||||
if ($def_id > _BOTSEPARATOR_) {
|
||||
$bots = DBPDO::$db->fetch('select * from bots where bot_id = ?', $def_id);
|
||||
$def_id = $bots['prototype'];
|
||||
$def_id = Db::getInstance()->fetchColumn('select prototype from bots where bot_id = ?', $def_id);
|
||||
$bot_def = true;
|
||||
}
|
||||
|
||||
if ($bt['blood']) {
|
||||
if ($bt->blood) {
|
||||
$expmf = $mods['bloodb'];
|
||||
}
|
||||
|
||||
$filebtl = '/tmp/' . $at_id . '.btl';
|
||||
if ($bt['type'] == 1 && file_exists($filebtl)) {
|
||||
if ($bt->type == 1 && file_exists($filebtl)) {
|
||||
$btfl = fopen($filebtl, 'r');
|
||||
$contents = fread($btfl, filesize($filebtl));
|
||||
fclose($btfl);
|
||||
@ -614,7 +586,7 @@ function SolveExp($at_id, $def_id, $damage): float
|
||||
"25" => 919
|
||||
];
|
||||
|
||||
$mfit = ($at['allprice'] / ($standart[$atInfo->getLevel()] / 3));
|
||||
$mfit = ($atAllPrice / ($standart[$atInfo->getLevel()] / 3));
|
||||
if ($mfit < 0.8) {
|
||||
$mfit = 0.8;
|
||||
}
|
||||
@ -622,7 +594,7 @@ function SolveExp($at_id, $def_id, $damage): float
|
||||
$mfit = 1.5;
|
||||
}
|
||||
|
||||
$pls = count(explode(";", $bt['t1'])) + count(explode(";", $bt['t2']));
|
||||
$pls = count(explode(";", $bt->t1)) + count(explode(";", $bt->t2));
|
||||
if ($pls > 2) {
|
||||
$mfbot = $bot_active ? 0.3 : 1;
|
||||
$mfbot2 = $bot_def ? 0.7 : 1;
|
||||
@ -634,5 +606,5 @@ function SolveExp($at_id, $def_id, $damage): float
|
||||
$expmf = 1;
|
||||
}
|
||||
|
||||
return round((($baseexp[$defInfo->getLevel()]) * ($def['allprice'] / (($at['allprice'] + $def['allprice']) / 2)) * ($damage / $defInfo->getMaxHealth()) * $expmf * $mfit * $mfbot * $mfbot2) / 3);
|
||||
return round((($baseexp[$defInfo->getLevel()]) * ($defAllPrice / (($atAllPrice + $defAllPrice) / 2)) * ($damage / $defInfo->getMaxHealth()) * $expmf * $mfit * $mfbot * $mfbot2) / 3);
|
||||
}
|
74
gotzamok.php
74
gotzamok.php
@ -1,5 +1,9 @@
|
||||
<?php
|
||||
/* Разрушенный замок на замковой улице. */
|
||||
|
||||
use Battles\Template;
|
||||
use Battles\User, Battles\Database\Db;
|
||||
|
||||
const CASTLE_MAX_LEVEL = 10;
|
||||
require_once 'functions.php';
|
||||
$castleOwners = db::c()->query('SELECT * FROM `clans` WHERE `short` = (SELECT * FROM `variables` WHERE `var` = "?s")', 'gotzamok');
|
||||
@ -7,38 +11,36 @@ $castleOwners = db::c()->query('SELECT * FROM `clans` WHERE `short` = (SELECT *
|
||||
if ($castleOwners['id'] == $user['klan']) {
|
||||
// если мой клан
|
||||
if ($_GET['goto'] == 'arsenal') {
|
||||
$user->setRoom(38);
|
||||
User::getInstance()->setRoom(38);
|
||||
}
|
||||
if ($_GET['goto'] == 'home') {
|
||||
$user->setRoom(37);
|
||||
User::getInstance()->setRoom(37);
|
||||
}
|
||||
if ($_GET['goto'] == 'dvor') {
|
||||
$user->setRoom(39);
|
||||
User::getInstance()->setRoom(39);
|
||||
}
|
||||
if ($_GET['goto'] == 'master') {
|
||||
$user->setRoom(40);
|
||||
User::getInstance()->setRoom(40);
|
||||
}
|
||||
if ($_GET['goto'] == 'rest') {
|
||||
$user->setRoom(41);
|
||||
User::getInstance()->setRoom(41);
|
||||
}
|
||||
if (in_array($_GET['goto'], ['arsenal', 'home', 'dvor', 'master', 'rest'])) {
|
||||
db::c()->query('UPDATE `users`,`online` SET `users`.`room` = ?i,`online`.`room` = ?i WHERE `online`.`id` = `users`.`id` AND `online`.`id` = ?i', $user->getRoom(), $user->getRoom(), $user->getId());
|
||||
db::c()->query('UPDATE `users`,`online` SET `users`.`room` = ?i,`online`.`room` = ?i WHERE `online`.`id` = `users`.`id` AND `online`.`id` = ?i', User::getInstance()->getRoom(), User::getInstance()->getRoom(), User::getInstance()->getId());
|
||||
header('location: gotzamok.php');
|
||||
} else {
|
||||
$status = 'В этом замке нет такого места!';
|
||||
}
|
||||
}
|
||||
|
||||
switch ($user->getRoom()) {
|
||||
case '37' :
|
||||
$backgroundImage = '689_small_550.jpg';
|
||||
break;
|
||||
case '41' :
|
||||
$backgroundImage = 'ko.jpg';
|
||||
break;
|
||||
$i = User::getInstance()->getRoom();
|
||||
if ($i == '37') {
|
||||
$backgroundImage = '689_small_550.jpg';
|
||||
} elseif ($i == '41') {
|
||||
$backgroundImage = 'ko.jpg';
|
||||
}
|
||||
|
||||
if ($user->getRoom() == 38) {
|
||||
if (User::getInstance()->getRoom() == 38) {
|
||||
$glava = db::c()->query('SELECT owner_id FROM `clans` WHERE `short` = "?s"', $user['klan'])->fetch_assoc();
|
||||
// возврат шмотки
|
||||
if ($_GET['back']) {
|
||||
@ -62,28 +64,36 @@ if ($user->getRoom() == 38) {
|
||||
}
|
||||
}
|
||||
|
||||
if ($user->getRoom() == 40) {
|
||||
if (User::getInstance()->getRoom() == 40) {
|
||||
$at = db::c()->query('SELECT * FROM `variables` WHERE `var` = "?s"', 'gotzam_att')->fetch_assoc();
|
||||
$def = db::c()->query('SELECT * FROM `variables` WHERE `var` = "?s"', 'gotzam_def')->fetch_assoc();
|
||||
|
||||
if ($_GET['up'] == 'at') {
|
||||
if ($at[1] >= CASTLE_MAX_LEVEL) $status = 'Укрепление достигло максимального уровня!';
|
||||
if ($at[1] >= CASTLE_MAX_LEVEL) {
|
||||
$status = 'Укрепление достигло максимального уровня!';
|
||||
}
|
||||
elseif ((pow(52, $at[1] + 1)) <= $user['money']) {
|
||||
db::c()->query('UPDATE `users` SET `money` = `money` - ?i WHERE `id` = ?i', pow(52, $at[1] + 1), $_SESSION['uid']);
|
||||
db::c()->query('UPDATE `variables` SET `value` = `value` + 1 WHERE `var` = "?s"', 'gotzam_att');
|
||||
$at += 1;
|
||||
} else $status = 'Не хватает денег!';
|
||||
} else {
|
||||
$status = 'Не хватает денег!';
|
||||
}
|
||||
}
|
||||
if ($_GET['up'] == 'def') {
|
||||
if ($def[1] >= CASTLE_MAX_LEVEL) $status = 'Укрепление достигло максимального уровня!';
|
||||
if ($def[1] >= CASTLE_MAX_LEVEL) {
|
||||
$status = 'Укрепление достигло максимального уровня!';
|
||||
}
|
||||
elseif ((pow(32, $def[1] + 1)) <= $user['money']) {
|
||||
db::c()->query('UPDATE `users` SET `money` = `money` - ?i WHERE `id` = ?i', pow(52, $def[1] + 1), $_SESSION['uid']);
|
||||
db::c()->query('UPDATE `variables` SET `value` = `value` + 1 WHERE `var` = "?s"', 'gotzam_def');
|
||||
$def += 1;
|
||||
} else $status = 'Не хватает денег!';
|
||||
} else {
|
||||
$status = 'Не хватает денег!';
|
||||
}
|
||||
}
|
||||
}
|
||||
\Battles\Template::header('Клановый замок');
|
||||
Template::header('Клановый замок');
|
||||
?>
|
||||
<script src="js/main.js"></script>
|
||||
<style>
|
||||
@ -96,7 +106,9 @@ if ($user->getRoom() == 40) {
|
||||
<div style="text-align: right;">
|
||||
<button onClick="hrefToFrame('city.php?bps')">Вернуться</button>
|
||||
</div>
|
||||
<div><?php if (!empty($status)) err($status); ?></div>
|
||||
<div><?php if (!empty($status)) {
|
||||
err($status);
|
||||
} ?></div>
|
||||
|
||||
<?php
|
||||
if ($castleOwners['id'] == $user['klan']) { ?>
|
||||
@ -106,32 +118,32 @@ if ($castleOwners['id'] == $user['klan']) { ?>
|
||||
<TD valign=top style="width:250px;">
|
||||
<INPUT TYPE=button style="width:200px;" value="Перейти в приемную"
|
||||
onClick="hrefToFrame('gotzamok.php?goto=home')">
|
||||
<? if ($user->getRoom() == 37): ?>
|
||||
<? if (User::getInstance()->getRoom() == 37): ?>
|
||||
<img src='i/flag.gif'>
|
||||
<?php endif; ?><BR>
|
||||
<INPUT TYPE=button style="width:200px;" value="Перейти в арсенал"
|
||||
onClick="hrefToFrame('gotzamok.php?goto=arsenal')">
|
||||
<? if ($user->getRoom() == 38): ?>
|
||||
<? if (User::getInstance()->getRoom() == 38): ?>
|
||||
<img src='i/flag.gif'>
|
||||
<?php endif; ?><BR>
|
||||
<INPUT TYPE=button style="width:200px;" value="Перейти во внутренний двор"
|
||||
onClick="hrefToFrame('gotzamok.php?goto=dvor')">
|
||||
<? if ($user->getRoom() == 39): ?>
|
||||
<? if (User::getInstance()->getRoom() == 39): ?>
|
||||
<img src='i/flag.gif'>
|
||||
<?php endif; ?><BR>
|
||||
<INPUT TYPE=button style="width:200px;" value="Перейти в мастерские"
|
||||
onClick="hrefToFrame('gotzamok.php?goto=master')">
|
||||
<? if ($user->getRoom() == 40): ?>
|
||||
<? if (User::getInstance()->getRoom() == 40): ?>
|
||||
<img src='i/flag.gif'>
|
||||
<?php endif; ?><BR>
|
||||
<INPUT TYPE=button style="width:200px;" value="Перейти в опочивальни"
|
||||
onClick="hrefToFrame('gotzamok.php?goto=rest')">
|
||||
<? if ($user->getRoom() == 41): ?>
|
||||
<? if (User::getInstance()->getRoom() == 41): ?>
|
||||
<img src='i/flag.gif'>
|
||||
<?php endif; ?><BR>
|
||||
</td>
|
||||
<td valign=top>
|
||||
<?php if ($user->getRoom() == 38): ?>
|
||||
<?php if (User::getInstance()->getRoom() == 38): ?>
|
||||
<h4>Арсенал</h4>
|
||||
<button onClick="hrefToFrame('gotzamok.php?do=zdat')">Сдать в арсенал</button>
|
||||
<div style="background: silver; border: 1px solid dimgray;">
|
||||
@ -174,7 +186,7 @@ if ($castleOwners['id'] == $user['klan']) { ?>
|
||||
<?php
|
||||
endif;
|
||||
endif;
|
||||
if ($user->getRoom() == 40): ?>
|
||||
if (User::getInstance()->getRoom() == 40): ?>
|
||||
<h4>Мастерские</h4>
|
||||
<div style="background: silver; border: 1px solid dimgray;">
|
||||
Здесь вы можете улучшить оборонные способности вашего замка.
|
||||
@ -191,7 +203,7 @@ if ($castleOwners['id'] == $user['klan']) { ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;
|
||||
if ($user->getRoom() == 41): ?>
|
||||
if (User::getInstance()->getRoom() == 41): ?>
|
||||
<h4>Комнаты отдыха</h4>
|
||||
<div style="background: silver; border: 1px solid dimgray;">
|
||||
Посиди в тишине, внутри стен. Тут нет врагов. Тут спокойно.
|
||||
@ -200,4 +212,6 @@ if ($castleOwners['id'] == $user['klan']) { ?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<? } else $status = 'Ворота замка закрыты, привратник отказывается даже разговаривать с тобой...'; ?>
|
||||
<? } else {
|
||||
$status = 'Ворота замка закрыты, привратник отказывается даже разговаривать с тобой...';
|
||||
} ?>
|
@ -1,7 +1,9 @@
|
||||
<?php
|
||||
|
||||
use Battles\Nick;
|
||||
use Battles\ShopItem;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once 'functions.php';
|
||||
|
||||
@ -9,20 +11,7 @@ $error = '';
|
||||
|
||||
function login($uid)
|
||||
{
|
||||
$user = mysql_fetch_array(mysql_query('SELECT `id`, `login`, `align`, `level`, `klan` FROM `users` WHERE `id` = "' . mysql_real_escape_string($uid) . '" LIMIT 1'));
|
||||
if (isset($user['id'])) {
|
||||
$align_img = '<img src="i/align_' . ($user['align'] ? $user['align'] : 0) . '.gif" /> ';
|
||||
if ($user['klan'] != '') {
|
||||
$clan = mysql_fetch_array(mysql_query('SELECT `id`, `name` FROM `clans` WHERE `id` = "' . $user['klan'] . '" LIMIT 1'));
|
||||
$clan_img = '<img title="' . $clan['name'] . '" src="i/clan/' . $clan['name'] . '.png" /> ';
|
||||
} else {
|
||||
$clan_img = '';
|
||||
}
|
||||
$r = $align_img . $clan_img . ' <b>' . $user['login'] . ' [' . $user['level'] . ']</b><a href="/inf.php?' . $user['id'] . '" target="_blank"><img src="/i/inf.gif" /></a>';
|
||||
} else {
|
||||
$r = 'Место свободно';
|
||||
}
|
||||
return $r;
|
||||
return User::getInstance($uid)->getId() ? Nick::id(User::getInstance()->getId())->full() : 'Место свободно';
|
||||
}
|
||||
|
||||
|
||||
|
53
hostel.php
53
hostel.php
@ -4,8 +4,7 @@ use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once 'config.php';
|
||||
$user = User::$current;
|
||||
$hostel = mysql_fetch_array(mysql_query('SELECT `id`, `uid`, `type`, `time` FROM `hostel` WHERE `uid` = "' . $user['id'] . '" LIMIT 1'));
|
||||
$hostel = mysql_fetch_array(mysql_query('SELECT `id`, `uid`, `type`, `time` FROM `hostel` WHERE `uid` = "' . User::getInstance()->getId() . '" LIMIT 1'));
|
||||
$error = '';
|
||||
$rs = '';
|
||||
$base = [1 => ['type' => 'Сумка'], 2 => ['type' => 'Сундук'], 3 => ['type' => 'Комната'], 4 => ['type' => 'Амбар']];
|
||||
@ -52,7 +51,7 @@ function select_arenda($u, $type, $redirect = false)
|
||||
|
||||
if ($_GET['exit'] == 1) {
|
||||
if ($user['sleep'] == 0) {
|
||||
mysql_query('UPDATE `users`,`online` SET `users`.`room` = 26, `online`.`room` = 26 WHERE `users`.`id` = "' . $user['id'] . '" AND `online`.`id` = "' . $user['id'] . '"');
|
||||
mysql_query('UPDATE `users`,`online` SET `users`.`room` = 26, `online`.`room` = 26 WHERE `users`.`id` = "' . User::getInstance()->getId() . '" AND `online`.`id` = "' . User::getInstance()->getId() . '"');
|
||||
header('Location: city.php');
|
||||
} else {
|
||||
$error = 'Вы спите ...';
|
||||
@ -62,7 +61,7 @@ if ($_GET['exit'] == 1) {
|
||||
if ($_GET['to_room'] == 1) {
|
||||
if (isset($hostel['id'])) {
|
||||
if ($hostel['time'] > time()) {
|
||||
mysql_query('UPDATE `users`,`online` SET `users`.`room` = 661, `online`.`room` = 661 WHERE `users`.`id` = "' . $user['id'] . '" AND `online`.`id` = "' . $user['id'] . '"');
|
||||
mysql_query('UPDATE `users`,`online` SET `users`.`room` = 661, `online`.`room` = 661 WHERE `users`.`id` = "' . User::getInstance()->getId() . '" AND `online`.`id` = "' . User::getInstance()->getId() . '"');
|
||||
header('Location: hostel_room.php');
|
||||
} else {
|
||||
$error = 'У Вас просрочена аренда. Оплатите что-бы продолжить пользоваться нашими услугами ...';
|
||||
@ -74,12 +73,12 @@ if ($_GET['to_room'] == 1) {
|
||||
|
||||
if ($_GET['pays'] && (int)$_GET['pays'] >= 1 && (int)$_GET['pays'] <= 4) {
|
||||
if (isset($hostel['id'])) {
|
||||
if ($user['money'] >= $cost[$hostel['type']][(int)$_GET['pays']]) {
|
||||
if (User::getInstance()->getMoney() >= $cost[$hostel['type']][(int)$_GET['pays']]) {
|
||||
$time = $hostel['time'] + 60 * 60 * 24 * $times[(int)$_GET['pays']];
|
||||
$user['money'] -= $cost[$hostel['type']][(int)$_GET['pays']];
|
||||
User::getInstance()->setMoney(User::getInstance()->getMoney() -= $cost[$hostel['type']][(int)$_GET['pays']]);
|
||||
$hostel['time'] = $time;
|
||||
mysql_query('UPDATE `users` SET `money` = "' . $user['money'] . '" WHERE `id` = "' . $user['id'] . '" LIMIT 1');
|
||||
mysql_query('UPDATE `hostel` SET `time` = "' . $time . '" WHERE `uid` = "' . $user['id'] . '" AND `id` = "' . $hostel['id'] . '" LIMIT 1');
|
||||
mysql_query('UPDATE `users` SET `money` = "' . User::getInstance()->getMoney() . '" WHERE `id` = "' . User::getInstance()->getId() . '" LIMIT 1');
|
||||
mysql_query('UPDATE `hostel` SET `time` = "' . $time . '" WHERE `uid` = "' . User::getInstance()->getId() . '" AND `id` = "' . $hostel['id'] . '" LIMIT 1');
|
||||
$error = 'Всё прошло успешно ...';
|
||||
} else {
|
||||
$error = 'Недостаточно денег ...';
|
||||
@ -93,14 +92,14 @@ if (isset($_POST['select']) && isset($_POST['tariff'])) {
|
||||
if ($_POST['tariff'] == 0) {
|
||||
$error = 'Выберите тариф ...';
|
||||
} else {
|
||||
$error = select_arenda($user, (int)$_POST['tariff']);
|
||||
$error = select_arenda(User::getInstance(), (int)$_POST['tariff']);
|
||||
}
|
||||
}
|
||||
|
||||
if ($_GET['del'] == 1) {
|
||||
if (isset($hostel['id']) && $hostel['time'] > time()) {
|
||||
mysql_query('DELETE FROM `hostel` WHERE `uid` = "' . $user['id'] . '" AND `id` = "' . $hostel['id'] . '" LIMIT 1');
|
||||
remove_hostel_items($user['id']);
|
||||
mysql_query('DELETE FROM `hostel` WHERE `uid` = "' . User::getInstance()->getId() . '" AND `id` = "' . $hostel['id'] . '" LIMIT 1');
|
||||
remove_hostel_items(User::getInstance()->getId());
|
||||
$error = 'Вы успешно отказались от аренды ...';
|
||||
unset($hostel);
|
||||
} elseif (isset($hostel['id']) && $hostel['time'] < time()) {
|
||||
@ -110,9 +109,9 @@ if ($_GET['del'] == 1) {
|
||||
|
||||
if (isset($_POST['deselect']) && isset($_POST['retariff'])) {
|
||||
if (isset($hostel['id']) && $hostel['time'] > time()) {
|
||||
mysql_query('DELETE FROM `hostel` WHERE `uid` = "' . $user['id'] . '" AND `id` = "' . $hostel['id'] . '" LIMIT 1');
|
||||
remove_hostel_items($user['id']);
|
||||
select_arenda($user, (int)$_POST['retariff'], true);
|
||||
mysql_query('DELETE FROM `hostel` WHERE `uid` = "' . User::getInstance()->getId() . '" AND `id` = "' . $hostel['id'] . '" LIMIT 1');
|
||||
remove_hostel_items(User::getInstance()->getId());
|
||||
select_arenda(User::getInstance(), (int)$_POST['retariff'], true);
|
||||
} elseif (isset($hostel['id']) && $hostel['time'] < time()) {
|
||||
$error = 'Нельзя сменить услугу если имеется задолежнность ...';
|
||||
}
|
||||
@ -120,21 +119,13 @@ if (isset($_POST['deselect']) && isset($_POST['retariff'])) {
|
||||
|
||||
if ($_GET['sleep'] && $user['sleep'] == 0) {
|
||||
if ($user['sleep_time'] <= time()) {
|
||||
if ($user['vip'] == 1) {
|
||||
$sl = 8;
|
||||
} elseif ($user['vip'] == 2) {
|
||||
$sl = 12;
|
||||
} elseif ($user['vip'] == 3) {
|
||||
$sl = 18;
|
||||
} else {
|
||||
$sl = 2;
|
||||
}
|
||||
mysql_query('UPDATE `users` SET `sleep` = "' . (time() + 60 * 60 * $sl) . '", `sleep_time` = "' . (time() + 60 * 60 * 8) . '" WHERE `id` = "' . $user['id'] . '" LIMIT 1');
|
||||
mysql_query('INSERT INTO `effects` (`type`, `name`, `time`, `owner`) VALUES ("8", "Сон", "' . (time() + 60 * 60 * $sl) . '", "' . $user['id'] . '")');
|
||||
$ef = mysql_query('SELECT `id`, `time`, `type` FROM `effects` WHERE `owner` = "' . $user['id'] . '" AND `type` != 11 AND `type` != 12 AND `type` != 13 AND `type` != 14 AND `type` != 5 AND `type` != 4 AND `type` != 2 AND `type` != 3 AND `type` != 8');
|
||||
$sl = 2;
|
||||
mysql_query('UPDATE `users` SET `sleep` = "' . (time() + 60 * 60 * $sl) . '", `sleep_time` = "' . (time() + 60 * 60 * 8) . '" WHERE `id` = "' . User::getInstance()->getId() . '" LIMIT 1');
|
||||
mysql_query('INSERT INTO `effects` (`type`, `name`, `time`, `owner`) VALUES ("8", "Сон", "' . (time() + 60 * 60 * $sl) . '", "' . User::getInstance()->getId() . '")');
|
||||
$ef = mysql_query('SELECT `id`, `time`, `type` FROM `effects` WHERE `owner` = "' . User::getInstance()->getId() . '" AND `type` != 11 AND `type` != 12 AND `type` != 13 AND `type` != 14 AND `type` != 5 AND `type` != 4 AND `type` != 2 AND `type` != 3 AND `type` != 8');
|
||||
while ($pl = mysql_fetch_array($ef)) {
|
||||
$tm = $pl['time'] - time();
|
||||
mysql_query('UPDATE `effects` SET `sleep` = "' . $tm . '" WHERE `id` = "' . $pl['id'] . '" AND `owner` = "' . $user['id'] . '"');
|
||||
mysql_query('UPDATE `effects` SET `sleep` = "' . $tm . '" WHERE `id` = "' . $pl['id'] . '" AND `owner` = "' . User::getInstance()->getId() . '"');
|
||||
}
|
||||
header('Location: hostel.php');
|
||||
} else {
|
||||
@ -143,12 +134,12 @@ if ($_GET['sleep'] && $user['sleep'] == 0) {
|
||||
}
|
||||
|
||||
if ($_GET['unsleep'] && $user['sleep'] > 0) {
|
||||
mysql_query('UPDATE `users` SET `sleep` = "0" WHERE `id` = "' . $user['id'] . '" LIMIT 1');
|
||||
mysql_query('DELETE FROM `effects` WHERE `owner` = "' . $user['id'] . '" AND `type` = "8" LIMIT 1');
|
||||
$ef = mysql_query('SELECT `id`, `time`, `sleep` FROM `effects` WHERE `owner` = "' . $user['id'] . '" AND `sleep` != 0');
|
||||
mysql_query('UPDATE `users` SET `sleep` = "0" WHERE `id` = "' . User::getInstance()->getId() . '" LIMIT 1');
|
||||
mysql_query('DELETE FROM `effects` WHERE `owner` = "' . User::getInstance()->getId() . '" AND `type` = "8" LIMIT 1');
|
||||
$ef = mysql_query('SELECT `id`, `time`, `sleep` FROM `effects` WHERE `owner` = "' . User::getInstance()->getId() . '" AND `sleep` != 0');
|
||||
while ($pl = mysql_fetch_array($ef)) {
|
||||
$tm = time() + $pl['sleep'];
|
||||
mysql_query('UPDATE `effects` SET `time` = "' . $tm . '", `sleep` = "0" WHERE `id` = "' . $pl['id'] . '" AND `owner` = "' . $user['id'] . '"');
|
||||
mysql_query('UPDATE `effects` SET `time` = "' . $tm . '", `sleep` = "0" WHERE `id` = "' . $pl['id'] . '" AND `owner` = "' . User::getInstance()->getId() . '"');
|
||||
}
|
||||
header('Location: hostel.php');
|
||||
}
|
||||
|
@ -1,18 +1,21 @@
|
||||
<?php
|
||||
|
||||
use Battles\User, Battles\Database\Db;
|
||||
|
||||
require_once "functions.php";
|
||||
$hostel = \Battles\Database\DBPDO::$db->fetch('select * from hostel where uid = ?', \Battles\User::$current->getId());
|
||||
$hostel = Db::getInstance()->execute('select id, time, type from hostel where uid = ?', User::getInstance()->getId());
|
||||
$base = [1 => [8, 16, 24, 32], 2 => [15, 30, 45, 60], 3 => [25, 50, 75, 100], 4 => [40, 80, 120, 160]];
|
||||
|
||||
if (isset($_POST['act']) && $_POST['act'] == 'pay' && isset($user['id']) && isset($hostel['id'])) {
|
||||
if (isset($_POST['act']) && $_POST['act'] == 'pay' && isset($user['id']) && !empty($hostel->fetchColumn())) {
|
||||
echo '<fieldset class="hostelClientState">';
|
||||
echo '<legend>Предварительная оплата</legend>';
|
||||
echo '<div style="text-align: center;"><p class="NORMAL" style="margin: 5px 0">';
|
||||
echo 'Аренда оплачена по: <b>' . date('h:i d.m.y', $hostel['time']) . '</b> <small>(' . timeOut($hostel['time'] - time()) . ')</small></p></div>';
|
||||
echo 'Аренда оплачена по: <b>' . date('h:i d.m.y', $hostel->fetchColumn(1)) . '</b> <small>(' . timeOut($hostel->fetchColumn(1) - time()) . ')</small></p></div>';
|
||||
|
||||
echo '<table align="center" class="periods"><caption style="text-align: left;">Выберите срок предоплаты.</caption>
|
||||
<tbody>
|
||||
<tr class="caption"><th>Сутки</th><td title="7 дн.">7</td><td title="14 дн.">14</td><td title="21 дн.">21</td><td title="28 дн.">28</td></tr>
|
||||
<tr class="value"><th>Сумма</th><td title="7 дн."><a href="?pays=1">' . $base[$hostel['type']][0] . '</a></td><td title="14 дн."><a href="?pays=2">' . $base[$hostel['type']][1] . '</a></td><td title="21 дн."><a href="?pays=3">' . $base[$hostel['type']][2] . '</a></td><td title="28 дн."><a href="?pays=4">' . $base[$hostel['type']][3] . '</a></td></tr>
|
||||
<tr class="value"><th>Сумма</th><td title="7 дн."><a href="?pays=1">' . $base[$hostel->fetchColumn(2)][0] . '</a></td><td title="14 дн."><a href="?pays=2">' . $base[$hostel->fetchColumn(2)][1] . '</a></td><td title="21 дн."><a href="?pays=3">' . $base[$hostel->fetchColumn(2)][2] . '</a></td><td title="28 дн."><a href="?pays=4">' . $base[$hostel->fetchColumn(2)][3] . '</a></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div style="color: red; font-size: 9px; padding-top: 3px;"><b>Внимание!</b> При расторжении договора или смене тарифа, внесенная плата не возвращается</div></fieldset></div>';
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\InventoryItem;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
@ -17,8 +17,8 @@ $vips = [1 => 0.15, 2 => 0.30, 3 => 0.45];
|
||||
|
||||
function get_meshok(): object
|
||||
{
|
||||
$allweight = DBPDO::$db->ofetch('select sum(weight) as items_weight_sum from inventory where on_sale = 0 and owner_id = ?', User::$current->getId());
|
||||
$stat = new UserInfo(User::$current->getId());
|
||||
$allweight = Db::getInstance()->ofetch('select sum(weight) as items_weight_sum from inventory where on_sale = 0 and owner_id = ?', User::getInstance()->getId());
|
||||
$stat = new UserInfo(User::getInstance()->getId());
|
||||
return (object)[
|
||||
'currentweight' => $allweight->items_weight_sum,
|
||||
'maxweight' => $stat->getMaxWeight() + $allweight->items_weight_sum,
|
||||
|
1
inf.php
1
inf.php
@ -8,7 +8,6 @@ include_once 'config.php';
|
||||
$userInfo = new UserInfo(urldecode($_SERVER['QUERY_STRING']));
|
||||
$presentsModel = new PresentsModel($userInfo->getId());
|
||||
$presentsList = $presentsModel->getAllPresents();
|
||||
$userInfo->setWatcher($_SESSION['uid']);
|
||||
Template::header('Информация о ' . $userInfo->getLogin());
|
||||
if (!$userInfo->getId()) {
|
||||
echo sprintf('Ошибка: персонаж <em>%s</em> не найден...<p><a style="color: #99f;" href="javascript:window.history.go(-1);">←назад</a></p>', urldecode($_SERVER['QUERY_STRING']));
|
||||
|
38
js/chat.js
38
js/chat.js
@ -94,51 +94,51 @@ var chat = {
|
||||
},
|
||||
lookSmiles:function()
|
||||
{
|
||||
if($('#chbtn8').attr('class')=='db cp chatBtn8_1')
|
||||
if($('#chbtn8').attr('class')=='getInstance cp chatBtn8_1')
|
||||
{
|
||||
$('#ttSmiles').css('display','');
|
||||
$('#chbtn8').attr('class','db cp chatBtn8_2');
|
||||
$('#chbtn8').attr('class','getInstance cp chatBtn8_2');
|
||||
}else{
|
||||
$('#ttSmiles').css('display','none');
|
||||
$('#chbtn8').attr('class','db cp chatBtn8_1');
|
||||
$('#chbtn8').attr('class','getInstance cp chatBtn8_1');
|
||||
}
|
||||
},
|
||||
filterMsg:function()
|
||||
{
|
||||
if($('#chbtn1').attr('class')=='db cp chatBtn1_1')
|
||||
if($('#chbtn1').attr('class')=='getInstance cp chatBtn1_1')
|
||||
{
|
||||
$('#chbtn1').attr('class','db cp chatBtn1_2'); this.filter = 1;
|
||||
$('#chbtn1').attr('class','getInstance cp chatBtn1_2'); this.filter = 1;
|
||||
}else{
|
||||
$('#chbtn1').attr('class','db cp chatBtn1_1'); this.filter = 0;
|
||||
$('#chbtn1').attr('class','getInstance cp chatBtn1_1'); this.filter = 0;
|
||||
}
|
||||
},
|
||||
systemMsg:function()
|
||||
{
|
||||
if($('#chbtn4').attr('class')=='db cp chatBtn4_1')
|
||||
if($('#chbtn4').attr('class')=='getInstance cp chatBtn4_1')
|
||||
{
|
||||
$('#chbtn4').attr('class','db cp chatBtn4_2'); this.citySys = 1; $.cookie('citySys',1);
|
||||
$('#chbtn4').attr('class','getInstance cp chatBtn4_2'); this.citySys = 1; $.cookie('citySys',1);
|
||||
}else{
|
||||
$('#chbtn4').attr('class','db cp chatBtn4_1'); this.citySys = 0; $.cookie('citySys',0);
|
||||
$('#chbtn4').attr('class','getInstance cp chatBtn4_1'); this.citySys = 0; $.cookie('citySys',0);
|
||||
}
|
||||
},
|
||||
soundChat:function()
|
||||
{
|
||||
if($('#chbtn7').attr('class')=='db cp chatBtn7_1')
|
||||
if($('#chbtn7').attr('class')=='getInstance cp chatBtn7_1')
|
||||
{
|
||||
$('#chbtn7').attr('class','db cp chatBtn7_2'); this.sound = 1;
|
||||
}else if($('#chbtn7').attr('class')=='db cp chatBtn7_2'){
|
||||
$('#chbtn7').attr('class','db cp chatBtn7_3'); this.sound = 2;
|
||||
$('#chbtn7').attr('class','getInstance cp chatBtn7_2'); this.sound = 1;
|
||||
}else if($('#chbtn7').attr('class')=='getInstance cp chatBtn7_2'){
|
||||
$('#chbtn7').attr('class','getInstance cp chatBtn7_3'); this.sound = 2;
|
||||
}else{
|
||||
$('#chbtn7').attr('class','db cp chatBtn7_1'); this.sound = 0;
|
||||
$('#chbtn7').attr('class','getInstance cp chatBtn7_1'); this.sound = 0;
|
||||
}
|
||||
},
|
||||
translitChat:function()
|
||||
{
|
||||
if($('#chbtn6').attr('class')=='db cp chatBtn6_1')
|
||||
if($('#chbtn6').attr('class')=='getInstance cp chatBtn6_1')
|
||||
{
|
||||
$('#chbtn6').attr('class','db cp chatBtn6_2'); this.translit = 1;
|
||||
$('#chbtn6').attr('class','getInstance cp chatBtn6_2'); this.translit = 1;
|
||||
}else{
|
||||
$('#chbtn6').attr('class','db cp chatBtn6_1'); this.translit = 0;
|
||||
$('#chbtn6').attr('class','getInstance cp chatBtn6_1'); this.translit = 0;
|
||||
}
|
||||
},subValSend:'',
|
||||
subSend:function()
|
||||
@ -409,7 +409,7 @@ var chat = {
|
||||
if(top.cb_date[top.cb_select] == 4 || top.cb_date[top.cb_select] == 5) {
|
||||
$('#canal'+top.cb_date[top.cb_select]).html('');
|
||||
$('#textmsg').focus();
|
||||
};
|
||||
}
|
||||
}
|
||||
}else{
|
||||
$('#textmsg').val('');
|
||||
@ -692,7 +692,7 @@ var chat = {
|
||||
},
|
||||
convert2:function(txt)
|
||||
{
|
||||
var trn = new Array();
|
||||
var trn = [];
|
||||
trn = txt.split(' ');
|
||||
for(var i=0;i<trn.length;i++) {
|
||||
if(trn[i].indexOf("//") < 0 && trn[i].indexOf('@') < 0 && trn[i].indexOf("www.") < 0 && !(trn[i].charAt(0)==":" && trn[i].charAt(trn[i].length-1)==":")) {
|
||||
|
47
lab.php
47
lab.php
@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
use Battles\Template;
|
||||
|
||||
require_once "functions.php";
|
||||
if ($user['lab'] == 0) {
|
||||
header("Location: index.php");
|
||||
@ -17,7 +20,7 @@ $u_res = mysql_fetch_array(mysql_query("select * from `lab_user` where `id_user`
|
||||
</script>
|
||||
|
||||
<?php
|
||||
$room = mysql_fetch_array(mysql_query("SELECT * FROM `lab_rooms` WHERE `id` = '" . mysql_real_escape_string($user->getRoom()) . "';"));
|
||||
$room = mysql_fetch_array(mysql_query("SELECT * FROM `lab_rooms` WHERE `id` = '" . mysql_real_escape_string(User::getInstance()->getRoom()) . "';"));
|
||||
|
||||
if ($_GET['healall'] == 1) {
|
||||
$cost = $_GET['cost'];
|
||||
@ -123,7 +126,7 @@ if ($_GET['mobkill'] == 1) {
|
||||
}
|
||||
$rand_hp1 = rand(1, 10);
|
||||
$rand_hp = $rand_hp1 * $user['level'];
|
||||
$bot = mysql_fetch_array(mysql_query("select * from `lab_bots` where `id_bot`='" . $id . "' AND `id_user`='" . $user['id'] . "' AND `id_room`='" . $user->getRoom() . "' LIMIT 1"));
|
||||
$bot = mysql_fetch_array(mysql_query("select * from `lab_bots` where `id_bot`='" . $id . "' AND `id_user`='" . $user['id'] . "' AND `id_room`='" . User::getInstance()->getRoom() . "' LIMIT 1"));
|
||||
$hels = $bot['bot_hp'] - $rand_hp;
|
||||
if ($hels < 0) {
|
||||
echo "<b>Вы убили моба!</b><br>";
|
||||
@ -134,11 +137,11 @@ if ($_GET['mobkill'] == 1) {
|
||||
echo "Вы получили 1 записку!<br>";
|
||||
Mysql_query("update `lab_user` set `zad" . $u_res['zadanie'] . "_kol`=`zad" . $u_res['zadanie'] . "_kol`+'1' where `id_user`='" . $user['id'] . "'");
|
||||
}
|
||||
mysql_query("delete from `lab_bots` where `id_bot`='" . $id . "' AND `id_user`='" . $user['id'] . "' AND `id_room`='" . $user->getRoom() . "' LIMIT 1");
|
||||
mysql_query("delete from `lab_bots` where `id_bot`='" . $id . "' AND `id_user`='" . $user['id'] . "' AND `id_room`='" . User::getInstance()->getRoom() . "' LIMIT 1");
|
||||
//если просто убивалка
|
||||
} else {
|
||||
Mysql_query("update `lab_user` set `zad" . $u_res['zadanie'] . "_kol`=`zad" . $u_res['zadanie'] . "_kol`+'1' where `id_user`='" . $user['id'] . "'");
|
||||
mysql_query("delete from `lab_bots` where `id_bot`='" . $id . "' AND `id_user`='" . $user['id'] . "' AND `id_room`='" . $user->getRoom() . "' LIMIT 1");
|
||||
mysql_query("delete from `lab_bots` where `id_bot`='" . $id . "' AND `id_user`='" . $user['id'] . "' AND `id_room`='" . User::getInstance()->getRoom() . "' LIMIT 1");
|
||||
}
|
||||
} else {
|
||||
echo "Вы отняли у моба -<b>" . $rand_hp . "</b> HP!<br>";
|
||||
@ -176,7 +179,7 @@ if ($_GET['exit'] && $room['exit'] == 1) {
|
||||
|
||||
if ($_GET['get']) {
|
||||
$data = mysql_fetch_array(mysql_query("SELECT * FROM `lab_inv` WHERE `id` = '" . mysql_real_escape_string($_GET['get']) . "' AND `id_user`='" . $user['id'] . "';"));
|
||||
if ($data['id_room'] == $user->getRoom()) {
|
||||
if ($data['id_room'] == User::getInstance()->getRoom()) {
|
||||
|
||||
switch ($data['type']) {
|
||||
case 1:
|
||||
@ -240,13 +243,13 @@ if ($_GET['get']) {
|
||||
if ($_GET['drop']) {
|
||||
$data = mysql_fetch_array(mysql_query("SELECT * FROM `lab_tmp` WHERE `id` = '" . mysql_real_escape_string($_GET['drop']) . "' AND `id_user`='" . $user['id'] . "';"));
|
||||
mysql_query("DELETE FROM `lab_tmp` WHERE `id` = '" . mysql_real_escape_string($data['id']) . "' AND `id_user`='" . $user['id'] . "' LIMIT 1;");
|
||||
mysql_query("INSERT INTO `lab_inv` (`id_room`,`type`,`value`,`id_user`) values ('" . mysql_real_escape_string($user->getRoom()) . "','" . mysql_real_escape_string($data['type']) . "','" . mysql_real_escape_string($data['value']) . "','" . mysql_real_escape_string($user['id']) . "');");
|
||||
mysql_query("INSERT INTO `lab_inv` (`id_room`,`type`,`value`,`id_user`) values ('" . mysql_real_escape_string(User::getInstance()->getRoom()) . "','" . mysql_real_escape_string($data['type']) . "','" . mysql_real_escape_string($data['value']) . "','" . mysql_real_escape_string($user['id']) . "');");
|
||||
unset($data);
|
||||
}
|
||||
|
||||
if ($_GET['nal1']) {
|
||||
$data = mysql_fetch_array(mysql_query("SELECT * FROM `lab_bots` WHERE `id` = '" . mysql_real_escape_string($_GET['nal1']) . "' AND `id_user`='" . $user['id'] . "';"));
|
||||
if ($data['id_room'] == $user->getRoom()) {
|
||||
if ($data['id_room'] == User::getInstance()->getRoom()) {
|
||||
$sum = mysql_fetch_array(mysql_query("SELECT SUM(`value`) FROM `lab_tmp` WHERE `id_user` = '" . mysql_real_escape_string($user['id']) . "' AND `type`='1';"));
|
||||
mysql_query("DELETE FROM `lab_tmp` WHERE `id_user` = '" . mysql_real_escape_string($user['id']) . "' AND `type`='1';");
|
||||
mysql_query("UPDATE `users` SET `money` = `money`+'" . mysql_real_escape_string($sum[0]) . "' WHERE `id` = '" . mysql_real_escape_string($user['id']) . "';");
|
||||
@ -258,7 +261,7 @@ if ($_GET['nal1']) {
|
||||
|
||||
if ($_GET['nal2']) {
|
||||
$data = mysql_fetch_array(mysql_query("SELECT * FROM `lab_bots` WHERE `id` = '" . mysql_real_escape_string($_GET['nal2']) . "' AND `id_user`='" . $user['id'] . "';"));
|
||||
if ($data['id_room'] == $user->getRoom()) {
|
||||
if ($data['id_room'] == User::getInstance()->getRoom()) {
|
||||
$sum = mysql_fetch_array(mysql_query("SELECT SUM(`value`) FROM `lab_tmp` WHERE `id_user` = '" . mysql_real_escape_string($user['id']) . "' AND `type`='3';"));
|
||||
mysql_query("DELETE FROM `lab_tmp` WHERE `id_user` = '" . mysql_real_escape_string($user['id']) . "' AND `type`='3';");
|
||||
mysql_query("UPDATE `users` SET `doblest` = `doblest`+'" . mysql_real_escape_string($sum[0]) . "' WHERE `id` = '" . mysql_real_escape_string($user['id']) . "';");
|
||||
@ -270,7 +273,7 @@ if ($_GET['nal2']) {
|
||||
|
||||
if ($_GET['nal3']) {
|
||||
$data = mysql_fetch_array(mysql_query("SELECT * FROM `lab_bots` WHERE `id` = '" . mysql_real_escape_string($_GET['nal3']) . "' AND `id_user`='" . $user['id'] . "';"));
|
||||
if ($data['id_room'] == $user->getRoom()) {
|
||||
if ($data['id_room'] == User::getInstance()->getRoom()) {
|
||||
$sum = mysql_fetch_array(mysql_query("SELECT SUM(`value`) FROM `lab_tmp` WHERE `id_user` = '" . mysql_real_escape_string($user['id']) . "' AND `type`='8';"));
|
||||
mysql_query("DELETE FROM `lab_tmp` WHERE `id_user` = '" . mysql_real_escape_string($user['id']) . "' AND `type`='8';");
|
||||
mysql_query("UPDATE `bank` SET `ekr` = `ekr`+'" . mysql_real_escape_string($sum[0]) . "' WHERE `id` = '" . mysql_real_escape_string($user['id']) . "';");
|
||||
@ -282,7 +285,7 @@ if ($_GET['nal3']) {
|
||||
|
||||
if ($_GET['nal4']) {
|
||||
$data = mysql_fetch_array(mysql_query("SELECT * FROM `lab_bots` WHERE `id` = '" . mysql_real_escape_string($_GET['nal4']) . "' AND `id_user`='" . $user['id'] . "';"));
|
||||
if ($data['id_room'] == $user->getRoom()) {
|
||||
if ($data['id_room'] == User::getInstance()->getRoom()) {
|
||||
$sum = mysql_fetch_array(mysql_query("SELECT SUM(`value`) FROM `lab_tmp` WHERE `id_user` = '" . mysql_real_escape_string($user['id']) . "' AND `type`='9';"));
|
||||
mysql_query("DELETE FROM `lab_tmp` WHERE `id_user` = '" . mysql_real_escape_string($user['id']) . "' AND `type`='9';");
|
||||
mysql_query("UPDATE `users` SET `exp` = `exp`+'" . mysql_real_escape_string($sum[0]) . "' WHERE `id` = '" . mysql_real_escape_string($user['id']) . "';");
|
||||
@ -298,28 +301,28 @@ if ($_GET['go']) {
|
||||
switch ($_GET['go']) {
|
||||
case "p1":
|
||||
mysql_query("UPDATE `users` SET `room` = '" . mysql_real_escape_string($room['p1']) . "', `fullhptime` = " . time() . " WHERE `id` = '" . mysql_real_escape_string($user['id']) . "';");
|
||||
$user->setRoom($room['p1']);
|
||||
User::getInstance()->setRoom($room['p1']);
|
||||
$_SESSION['time'] = time();
|
||||
break;
|
||||
case "p2":
|
||||
mysql_query("UPDATE `users` SET `room` = '" . mysql_real_escape_string($room['p2']) . "', `fullhptime` = " . time() . " WHERE `id` = '" . mysql_real_escape_string($user['id']) . "';");
|
||||
$user->setRoom($room['p2']);
|
||||
User::getInstance()->setRoom($room['p2']);
|
||||
$_SESSION['time'] = time();
|
||||
break;
|
||||
case "p3":
|
||||
mysql_query("UPDATE `users` SET `room` = '" . mysql_real_escape_string($room['p3']) . "', `fullhptime` = " . time() . " WHERE `id` = '" . mysql_real_escape_string($user['id']) . "';");
|
||||
$user->setRoom($room['p3']);
|
||||
User::getInstance()->setRoom($room['p3']);
|
||||
$_SESSION['time'] = time();
|
||||
break;
|
||||
case "p4":
|
||||
mysql_query("UPDATE `users` SET `room` = '" . mysql_real_escape_string($room['p4']) . "', `fullhptime` = " . time() . " WHERE `id` = '" . mysql_real_escape_string($user['id']) . "';");
|
||||
$user->setRoom($room['p4']);
|
||||
User::getInstance()->setRoom($room['p4']);
|
||||
$_SESSION['time'] = time();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$room = mysql_fetch_array(mysql_query("SELECT * FROM `lab_rooms` WHERE `id` = '" . mysql_real_escape_string($user->getRoom()) . "';"));
|
||||
$room = mysql_fetch_array(mysql_query("SELECT * FROM `lab_rooms` WHERE `id` = '" . mysql_real_escape_string(User::getInstance()->getRoom()) . "';"));
|
||||
|
||||
if ($user['hp'] <= 0) {
|
||||
mysql_query("DELETE FROM `lab_trap` WHERE `id_user` = '" . $user['id'] . "'");
|
||||
@ -334,12 +337,12 @@ if ($user['hp'] <= 0) {
|
||||
}
|
||||
|
||||
|
||||
$data = mysql_query("SELECT * FROM `lab_inv` WHERE `id_room` = '" . mysql_real_escape_string($user->getRoom()) . "' AND `id_user`='" . $user['id'] . "';");
|
||||
$data = mysql_query("SELECT * FROM `lab_inv` WHERE `id_room` = '" . mysql_real_escape_string(User::getInstance()->getRoom()) . "' AND `id_user`='" . $user['id'] . "';");
|
||||
$data2 = mysql_query("SELECT * FROM `lab_tmp` WHERE `id_user` = '" . mysql_real_escape_string($user['id']) . "';");
|
||||
$data3 = mysql_query("SELECT * FROM `users` WHERE `lab` = 1 AND `room` = '" . mysql_real_escape_string($room['id']) . "';");
|
||||
$data4 = mysql_query("SELECT * FROM `lab_bots` WHERE `id_room` = '" . mysql_real_escape_string($room['id']) . "' AND `id_user`='" . $user['id'] . "';");
|
||||
|
||||
$roow = mysql_fetch_array(mysql_query("SELECT * FROM `lab_trap` WHERE `id_room` = '" . mysql_real_escape_string($user->getRoom()) . "' AND `id_user`='" . $user['id'] . "';"));
|
||||
$roow = mysql_fetch_array(mysql_query("SELECT * FROM `lab_trap` WHERE `id_room` = '" . mysql_real_escape_string(User::getInstance()->getRoom()) . "' AND `id_user`='" . $user['id'] . "';"));
|
||||
|
||||
if ($roow[0]) {
|
||||
$msg .= 'В комнате была установлена ловушка...<br>';
|
||||
@ -366,19 +369,19 @@ if ((time() - $_SESSION['time']) > 3) {
|
||||
} else {
|
||||
$tt = (time() - $_SESSION['time']);
|
||||
}
|
||||
\Battles\Template::header('lab');
|
||||
Template::header('lab');
|
||||
|
||||
echo Nick::id($user)->battle();
|
||||
echo " <a href=\"#\" onclick=\"javascript:if (confirm('Желаете выбраться из квестового лабиринта? Теряете все, что здесь нашли.')){ location.href='lab.php?eexit=1';}\">Выйти?</a>";
|
||||
echo " <a href=\\";
|
||||
echo "<table border=0 width=100%><tr><td colspan=4><font color=red>" . $msg;
|
||||
echo "</font>";
|
||||
if ($room['exit'] == 1) {
|
||||
echo "<font color=green><b>В комнате есть выход.</b></font> •<a href='?exit=1'>ВЫЙТИ!</a>•<br>";
|
||||
}
|
||||
|
||||
echo " <a href=\"#\" onclick=\"javascript:if (confirm('Использовать свиток возрата?')){ location.href='lab.php?svitexit=1';}\">Свиток возрата: <b>" . $u_res['exit_teleport'] . "</b></a> | <a href=\"#\" onclick=\"javascript:if (confirm('Использовать свиток оздоровления?')){ location.href='lab.php?svitheal=1';}\">Свиток оздоровления: <b>" . $u_res['svitok_heal'] . "</b></a><br>";
|
||||
echo " <a href=\\" . $u_res['exit_teleport'] . "</b></a> | <a href=\\" . $u_res['svitok_heal'] . "</b></a><br>";
|
||||
|
||||
echo " <b>+</b> Бот-атаки: <b>" . $u_res['svitok_kill'] . "</b> <small><a href=\"#\" onclick=\"javascript:if (confirm('Купить 1 Бот-атаку за 0.15 кредит?')){ location.href='lab.php?buykill=1';}\">[купить]</a></small>";
|
||||
echo " <b>+</b> Бот-атаки: <b>" . $u_res['svitok_kill'] . "</b> <small><a href=\\";
|
||||
echo "<p>";
|
||||
|
||||
$log = mysql_query("select * from `lab_heal_log` order by `id` desc LIMIT 1");
|
||||
@ -389,7 +392,7 @@ for ($i = 0; $i < mysql_num_rows($log); $i++) {
|
||||
|
||||
}
|
||||
|
||||
echo "" . $room['name'] . " (" . $user->getRoom() . ")</tr>";
|
||||
echo "" . $room['name'] . " (" . User::getInstance()->getRoom() . ")</tr>";
|
||||
echo "<tr><td><td><button style='width:50px; height:50px;' class='INPUT' disabled id=b1 onclick='location.href=\"lab.php?go=p1\";'>СЕВЕР</button><td><td rowspan=3 style='height:100px;'> <td rowspan=4 width=30% valign=top style='height:100px;'>";
|
||||
$u_lab = mysql_query("select `login` from `users` where `lab`='1' and `bot`!='1'");
|
||||
$u_lab_kol = mysql_num_rows($u_lab);
|
||||
|
47
lab2.php
47
lab2.php
@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
use Battles\Template;
|
||||
|
||||
require_once "functions.php";
|
||||
if ($user['lab'] == 0) {
|
||||
header("Location: index.php");
|
||||
@ -15,7 +18,7 @@ $u_res = mysql_fetch_array(mysql_query("select * from `lab_user` where `id_user`
|
||||
setTimeout("document.all['b1'].disabled=false;document.all['b2'].disabled=false;document.all['b3'].disabled=false;document.all['b4'].disabled=false;", <?=(3 - $tt)?>000);
|
||||
</script>
|
||||
<?php
|
||||
$room = mysql_fetch_array(mysql_query("SELECT * FROM `lab_rooms` WHERE `id` = '" . mysql_real_escape_string($user->getRoom()) . "';"));
|
||||
$room = mysql_fetch_array(mysql_query("SELECT * FROM `lab_rooms` WHERE `id` = '" . mysql_real_escape_string(User::getInstance()->getRoom()) . "';"));
|
||||
|
||||
if ($_GET['healall'] == 1) {
|
||||
$cost = $_GET['cost'];
|
||||
@ -121,7 +124,7 @@ if ($_GET['mobkill'] == 1) {
|
||||
}
|
||||
$rand_hp1 = rand(1, 10);
|
||||
$rand_hp = $rand_hp1 * $user['level'];
|
||||
$bot = mysql_fetch_array(mysql_query("select * from `lab_bots` where `id_bot`='" . $id . "' AND `id_user`='" . $user['id'] . "' AND `id_room`='" . $user->getRoom() . "' LIMIT 1"));
|
||||
$bot = mysql_fetch_array(mysql_query("select * from `lab_bots` where `id_bot`='" . $id . "' AND `id_user`='" . $user['id'] . "' AND `id_room`='" . User::getInstance()->getRoom() . "' LIMIT 1"));
|
||||
$hels = $bot['bot_hp'] - $rand_hp;
|
||||
if ($hels < 0) {
|
||||
echo "<b>Вы убили моба!</b><br>";
|
||||
@ -132,11 +135,11 @@ if ($_GET['mobkill'] == 1) {
|
||||
echo "Вы получили 1 записку!<br>";
|
||||
Mysql_query("update `lab_user` set `zad" . $u_res['zadanie'] . "_kol`=`zad" . $u_res['zadanie'] . "_kol`+'1' where `id_user`='" . $user['id'] . "'");
|
||||
}
|
||||
mysql_query("delete from `lab_bots` where `id_bot`='" . $id . "' AND `id_user`='" . $user['id'] . "' AND `id_room`='" . $user->getRoom() . "' LIMIT 1");
|
||||
mysql_query("delete from `lab_bots` where `id_bot`='" . $id . "' AND `id_user`='" . $user['id'] . "' AND `id_room`='" . User::getInstance()->getRoom() . "' LIMIT 1");
|
||||
//если просто убивалка
|
||||
} else {
|
||||
Mysql_query("update `lab_user` set `zad" . $u_res['zadanie'] . "_kol`=`zad" . $u_res['zadanie'] . "_kol`+'1' where `id_user`='" . $user['id'] . "'");
|
||||
mysql_query("delete from `lab_bots` where `id_bot`='" . $id . "' AND `id_user`='" . $user['id'] . "' AND `id_room`='" . $user->getRoom() . "' LIMIT 1");
|
||||
mysql_query("delete from `lab_bots` where `id_bot`='" . $id . "' AND `id_user`='" . $user['id'] . "' AND `id_room`='" . User::getInstance()->getRoom() . "' LIMIT 1");
|
||||
}
|
||||
} else {
|
||||
echo "Вы отняли у моба -<b>" . $rand_hp . "</b> HP!<br>";
|
||||
@ -174,7 +177,7 @@ if ($_GET['exit'] && $room['exit'] == 1) {
|
||||
|
||||
if ($_GET['get']) {
|
||||
$data = mysql_fetch_array(mysql_query("SELECT * FROM `lab_inv` WHERE `id` = '" . mysql_real_escape_string($_GET['get']) . "' AND `id_user`='" . $user['id'] . "';"));
|
||||
if ($data['id_room'] == $user->getRoom()) {
|
||||
if ($data['id_room'] == User::getInstance()->getRoom()) {
|
||||
|
||||
switch ($data['type']) {
|
||||
case 1:
|
||||
@ -238,13 +241,13 @@ if ($_GET['get']) {
|
||||
if ($_GET['drop']) {
|
||||
$data = mysql_fetch_array(mysql_query("SELECT * FROM `lab_tmp` WHERE `id` = '" . mysql_real_escape_string($_GET['drop']) . "' AND `id_user`='" . $user['id'] . "';"));
|
||||
mysql_query("DELETE FROM `lab_tmp` WHERE `id` = '" . mysql_real_escape_string($data['id']) . "' AND `id_user`='" . $user['id'] . "' LIMIT 1;");
|
||||
mysql_query("INSERT INTO `lab_inv` (`id_room`,`type`,`value`,`id_user`) values ('" . mysql_real_escape_string($user->getRoom()) . "','" . mysql_real_escape_string($data['type']) . "','" . mysql_real_escape_string($data['value']) . "','" . mysql_real_escape_string($user['id']) . "');");
|
||||
mysql_query("INSERT INTO `lab_inv` (`id_room`,`type`,`value`,`id_user`) values ('" . mysql_real_escape_string(User::getInstance()->getRoom()) . "','" . mysql_real_escape_string($data['type']) . "','" . mysql_real_escape_string($data['value']) . "','" . mysql_real_escape_string($user['id']) . "');");
|
||||
unset($data);
|
||||
}
|
||||
|
||||
if ($_GET['nal1']) {
|
||||
$data = mysql_fetch_array(mysql_query("SELECT * FROM `lab_bots` WHERE `id` = '" . mysql_real_escape_string($_GET['nal1']) . "' AND `id_user`='" . $user['id'] . "';"));
|
||||
if ($data['id_room'] == $user->getRoom()) {
|
||||
if ($data['id_room'] == User::getInstance()->getRoom()) {
|
||||
$sum = mysql_fetch_array(mysql_query("SELECT SUM(`value`) FROM `lab_tmp` WHERE `id_user` = '" . mysql_real_escape_string($user['id']) . "' AND `type`='1';"));
|
||||
mysql_query("DELETE FROM `lab_tmp` WHERE `id_user` = '" . mysql_real_escape_string($user['id']) . "' AND `type`='1';");
|
||||
mysql_query("UPDATE `users` SET `money` = `money`+'" . mysql_real_escape_string($sum[0]) . "' WHERE `id` = '" . mysql_real_escape_string($user['id']) . "';");
|
||||
@ -256,7 +259,7 @@ if ($_GET['nal1']) {
|
||||
|
||||
if ($_GET['nal2']) {
|
||||
$data = mysql_fetch_array(mysql_query("SELECT * FROM `lab_bots` WHERE `id` = '" . mysql_real_escape_string($_GET['nal2']) . "' AND `id_user`='" . $user['id'] . "';"));
|
||||
if ($data['id_room'] == $user->getRoom()) {
|
||||
if ($data['id_room'] == User::getInstance()->getRoom()) {
|
||||
$sum = mysql_fetch_array(mysql_query("SELECT SUM(`value`) FROM `lab_tmp` WHERE `id_user` = '" . mysql_real_escape_string($user['id']) . "' AND `type`='3';"));
|
||||
mysql_query("DELETE FROM `lab_tmp` WHERE `id_user` = '" . mysql_real_escape_string($user['id']) . "' AND `type`='3';");
|
||||
mysql_query("UPDATE `users` SET `patriotizm` = `patriotizm`+'" . mysql_real_escape_string($sum[0]) . "' WHERE `id` = '" . mysql_real_escape_string($user['id']) . "';");
|
||||
@ -268,7 +271,7 @@ if ($_GET['nal2']) {
|
||||
|
||||
if ($_GET['nal3']) {
|
||||
$data = mysql_fetch_array(mysql_query("SELECT * FROM `lab_bots` WHERE `id` = '" . mysql_real_escape_string($_GET['nal3']) . "' AND `id_user`='" . $user['id'] . "';"));
|
||||
if ($data['id_room'] == $user->getRoom()) {
|
||||
if ($data['id_room'] == User::getInstance()->getRoom()) {
|
||||
$sum = mysql_fetch_array(mysql_query("SELECT SUM(`value`) FROM `lab_tmp` WHERE `id_user` = '" . mysql_real_escape_string($user['id']) . "' AND `type`='8';"));
|
||||
mysql_query("DELETE FROM `lab_tmp` WHERE `id_user` = '" . mysql_real_escape_string($user['id']) . "' AND `type`='8';");
|
||||
mysql_query("UPDATE `bank` SET `ekr` = `ekr`+'" . mysql_real_escape_string($sum[0]) . "' WHERE `id` = '" . mysql_real_escape_string($user['id']) . "';");
|
||||
@ -280,7 +283,7 @@ if ($_GET['nal3']) {
|
||||
|
||||
if ($_GET['nal4']) {
|
||||
$data = mysql_fetch_array(mysql_query("SELECT * FROM `lab_bots` WHERE `id` = '" . mysql_real_escape_string($_GET['nal4']) . "' AND `id_user`='" . $user['id'] . "';"));
|
||||
if ($data['id_room'] == $user->getRoom()) {
|
||||
if ($data['id_room'] == User::getInstance()->getRoom()) {
|
||||
$sum = mysql_fetch_array(mysql_query("SELECT SUM(`value`) FROM `lab_tmp` WHERE `id_user` = '" . mysql_real_escape_string($user['id']) . "' AND `type`='9';"));
|
||||
mysql_query("DELETE FROM `lab_tmp` WHERE `id_user` = '" . mysql_real_escape_string($user['id']) . "' AND `type`='9';");
|
||||
mysql_query("UPDATE `users` SET `exp` = `exp`+'" . mysql_real_escape_string($sum[0]) . "' WHERE `id` = '" . mysql_real_escape_string($user['id']) . "';");
|
||||
@ -296,28 +299,28 @@ if ($_GET['go']) {
|
||||
switch ($_GET['go']) {
|
||||
case "p1":
|
||||
mysql_query("UPDATE `users` SET `room` = '" . mysql_real_escape_string($room['p1']) . "', `fullhptime` = " . time() . " WHERE `id` = '" . mysql_real_escape_string($user['id']) . "';");
|
||||
$user->setRoom($room['p1']);
|
||||
User::getInstance()->setRoom($room['p1']);
|
||||
$_SESSION['time'] = time();
|
||||
break;
|
||||
case "p2":
|
||||
mysql_query("UPDATE `users` SET `room` = '" . mysql_real_escape_string($room['p2']) . "', `fullhptime` = " . time() . " WHERE `id` = '" . mysql_real_escape_string($user['id']) . "';");
|
||||
$user->setRoom($room['p2']);
|
||||
User::getInstance()->setRoom($room['p2']);
|
||||
$_SESSION['time'] = time();
|
||||
break;
|
||||
case "p3":
|
||||
mysql_query("UPDATE `users` SET `room` = '" . mysql_real_escape_string($room['p3']) . "', `fullhptime` = " . time() . " WHERE `id` = '" . mysql_real_escape_string($user['id']) . "';");
|
||||
$user->setRoom($room['p3']);
|
||||
User::getInstance()->setRoom($room['p3']);
|
||||
$_SESSION['time'] = time();
|
||||
break;
|
||||
case "p4":
|
||||
mysql_query("UPDATE `users` SET `room` = '" . mysql_real_escape_string($room['p4']) . "', `fullhptime` = " . time() . " WHERE `id` = '" . mysql_real_escape_string($user['id']) . "';");
|
||||
$user->setRoom($room['p4']);
|
||||
User::getInstance()->setRoom($room['p4']);
|
||||
$_SESSION['time'] = time();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$room = mysql_fetch_array(mysql_query("SELECT * FROM `lab_rooms` WHERE `id` = '" . mysql_real_escape_string($user->getRoom()) . "';"));
|
||||
$room = mysql_fetch_array(mysql_query("SELECT * FROM `lab_rooms` WHERE `id` = '" . mysql_real_escape_string(User::getInstance()->getRoom()) . "';"));
|
||||
|
||||
if ($user['hp'] <= 0) {
|
||||
mysql_query("DELETE FROM `lab_trap` WHERE `id_user` = '" . $user['id'] . "'");
|
||||
@ -332,12 +335,12 @@ if ($user['hp'] <= 0) {
|
||||
}
|
||||
|
||||
|
||||
$data = mysql_query("SELECT * FROM `lab_inv` WHERE `id_room` = '" . mysql_real_escape_string($user->getRoom()) . "' AND `id_user`='" . $user['id'] . "';");
|
||||
$data = mysql_query("SELECT * FROM `lab_inv` WHERE `id_room` = '" . mysql_real_escape_string(User::getInstance()->getRoom()) . "' AND `id_user`='" . $user['id'] . "';");
|
||||
$data2 = mysql_query("SELECT * FROM `lab_tmp` WHERE `id_user` = '" . mysql_real_escape_string($user['id']) . "';");
|
||||
$data3 = mysql_query("SELECT * FROM `users` WHERE `lab` = 1 AND `room` = '" . mysql_real_escape_string($room['id']) . "';");
|
||||
$data4 = mysql_query("SELECT * FROM `lab_bots` WHERE `id_room` = '" . mysql_real_escape_string($room['id']) . "' AND `id_user`='" . $user['id'] . "';");
|
||||
|
||||
$roow = mysql_fetch_array(mysql_query("SELECT * FROM `lab_trap` WHERE `id_room` = '" . mysql_real_escape_string($user->getRoom()) . "' AND `id_user`='" . $user['id'] . "';"));
|
||||
$roow = mysql_fetch_array(mysql_query("SELECT * FROM `lab_trap` WHERE `id_room` = '" . mysql_real_escape_string(User::getInstance()->getRoom()) . "' AND `id_user`='" . $user['id'] . "';"));
|
||||
|
||||
if ($roow[0]) {
|
||||
$msg .= 'В комнате была установлена ловушка...<br>';
|
||||
@ -364,19 +367,19 @@ if ((time() - $_SESSION['time']) > 3) {
|
||||
} else {
|
||||
$tt = (time() - $_SESSION['time']);
|
||||
}
|
||||
\Battles\Template::header('lab2');
|
||||
Template::header('lab2');
|
||||
|
||||
echo Nick::id($user)->battle();
|
||||
echo " <a href=\"#\" onclick=\"javascript:if (confirm('Желаете выбраться из лабиринта? Теряете все что здесь нашли.')){ location.href='lab.php?eexit=1';}\">Выйти?</a>";
|
||||
echo " <a href=\\";
|
||||
echo "<table border=0 width=100%><tr><td colspan=4><font color=red>" . $msg;
|
||||
echo "</font>";
|
||||
if ($room['exit'] == 1) {
|
||||
echo "<font color=green><b>В комнате есть выход.</b></font> •<a href='?exit=1'>ВЫЙТИ!</a>•<br>";
|
||||
}
|
||||
|
||||
echo " <a href=\"#\" onclick=\"javascript:if (confirm('Использовать свиток возрата?')){ location.href='lab.php?svitexit=1';}\">Св. возрата: <b>" . $u_res['exit_teleport'] . "</b></a> | <a href=\"#\" onclick=\"javascript:if (confirm('Использовать свиток оздоровления?')){ location.href='lab.php?svitheal=1';}\">Св. оздоровления: <b>" . $u_res['svitok_heal'] . "</b></a><br>";
|
||||
echo " <a href=\\" . $u_res['exit_teleport'] . "</b></a> | <a href=\\" . $u_res['svitok_heal'] . "</b></a><br>";
|
||||
echo "Игровые атаки: <b>" . $u_res['svitok_kill_user'] . "</b>";
|
||||
echo " <b>+</b> Бот-атаки: <b>" . $u_res['svitok_kill'] . "</b> <small><a href=\"#\" onclick=\"javascript:if (confirm('Купить 1 Бот-атаку за 0.15 кредит?')){ location.href='lab.php?buykill=1';}\">[купить]</a></small>";
|
||||
echo " <b>+</b> Бот-атаки: <b>" . $u_res['svitok_kill'] . "</b> <small><a href=\\";
|
||||
echo "<p>";
|
||||
|
||||
$log = mysql_query("select * from `lab_heal_log` order by `id` desc LIMIT 1");
|
||||
@ -387,7 +390,7 @@ for ($i = 0; $i < mysql_num_rows($log); $i++) {
|
||||
|
||||
}
|
||||
|
||||
echo "" . $room['name'] . " (" . $user->getRoom() . ")</tr>";
|
||||
echo "" . $room['name'] . " (" . User::getInstance()->getRoom() . ")</tr>";
|
||||
echo "<tr><td><td><button style='width:50px; height:50px;' class='INPUT' disabled id=b1 onclick='location.href=\"lab.php?go=p1\";'>СЕВЕР</button><td><td rowspan=3 style='height:100px;'> <td rowspan=4 width=30% valign=top style='height:100px;'>";
|
||||
$u_lab = mysql_query("select `login` from `users` where `lab`='1' and `bot`!='1'");
|
||||
$u_lab_kol = mysql_num_rows($u_lab);
|
||||
|
@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once "functions.php";
|
||||
$errkom = '';
|
||||
@ -306,7 +307,7 @@ Template::header('Вход в Лабиринты');
|
||||
</div>
|
||||
<?
|
||||
if (isset($_GET['del_com'])) {
|
||||
if ($user->getAdmin()) {
|
||||
if (User::getInstance()->getAdmin()) {
|
||||
mysql_query('UPDATE `laba_zv` SET `com` = "" WHERE `id` = "' . (int)$_GET['del_com'] . '" LIMIT 1');
|
||||
$re = 'Комментарий удалён';
|
||||
} else {
|
||||
@ -398,7 +399,7 @@ while ($pl = mysql_fetch_array($sp)) {
|
||||
}
|
||||
$userszv = ltrim($userszv, ', ');
|
||||
if ($pl['com'] != '') {
|
||||
if ($user->getAdmin()) {
|
||||
if (User::getInstance()->getAdmin()) {
|
||||
$del = ' <a href=\'lab_enter.php?del_com=' . $pl['id'] . '\'>Удалить комментарий</a>';
|
||||
} else {
|
||||
$del = '';
|
||||
|
64
main.php
64
main.php
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\DressedItems;
|
||||
use Battles\GameLogs;
|
||||
use Battles\InventoryItem;
|
||||
@ -18,7 +18,7 @@ if ($get == 'exit') {
|
||||
}
|
||||
require_once 'functions.php';
|
||||
|
||||
User::$current->setOnline();
|
||||
User::getInstance()->setOnline();
|
||||
|
||||
$req = (object)[];
|
||||
$keys = ['ups', 'drop', 'dress', 'destruct', 'use', 'undress', 'edit', 'goto', 'obraz', 'setshadow'];
|
||||
@ -29,7 +29,7 @@ foreach ($keys as $key) {
|
||||
if ($req->edit) {
|
||||
if ($req->ups) {
|
||||
try {
|
||||
$up = new UserInfo(User::$current->getId());
|
||||
$up = new UserInfo(User::getInstance()->getId());
|
||||
$up->addOnePointToStat($req->ups);
|
||||
unset($up);
|
||||
} catch (GameException $e) {
|
||||
@ -37,22 +37,22 @@ if ($req->edit) {
|
||||
}
|
||||
}
|
||||
if ($req->drop) {
|
||||
$items = new DressedItems(User::$current->getId());
|
||||
$items = new DressedItems(User::getInstance()->getId());
|
||||
$items->undressItem($req->drop);
|
||||
unset($items);
|
||||
}
|
||||
//Пока что одеваем предмет отсюда.
|
||||
if ($req->dress) {
|
||||
$dressing = new InventoryItem(DBPDO::$db->ofetch('select * from inventory where item_id = ? ', $req->dress));
|
||||
$dressing = new InventoryItem(Db::getInstance()->ofetch('select * from inventory where item_id = ? ', $req->dress));
|
||||
$dressing->dressItem();
|
||||
unset($dressing);
|
||||
}
|
||||
if ($req->destruct) {
|
||||
$q = DBPDO::$db->ofetch('select name,dressed_slot from inventory where owner_id = ? and item_id = ?', [User::$current->getId(), $req->destruct]);
|
||||
$q = Db::getInstance()->ofetch('select name,dressed_slot from inventory where owner_id = ? and item_id = ?', [User::getInstance()->getId(), $req->destruct]);
|
||||
if ($q) {
|
||||
if (empty($q->dressed_slot)) {
|
||||
InventoryItem::destroyItem($req->destruct);
|
||||
GameLogs::addUserLog(User::$current->getId(), User::$current->getLogin() . ' выбросил предмет ' . $q->name . ' id:(cap' . $req->destruct . ')');
|
||||
GameLogs::addUserLog(User::getInstance()->getId(), User::getInstance()->getLogin() . ' выбросил предмет ' . $q->name . ' id:(cap' . $req->destruct . ')');
|
||||
err('Предмет ' . $q->name . ' выброшен.');
|
||||
} else {
|
||||
err('Ошибка: нельзя выбросить одетый предмет!');
|
||||
@ -65,23 +65,23 @@ if ($req->edit) {
|
||||
usemagic($req->use, $req->useTarget);
|
||||
}
|
||||
if ($req->undress) {
|
||||
DressedItems::undressAllItems(User::$current->getId());
|
||||
DressedItems::undressAllItems(User::getInstance()->getId());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Подготавливаем отображение инфы и предметов.
|
||||
$userInfo = new UserInfo(User::$current->getId());
|
||||
$userStats = new UserStats(User::$current->getId());
|
||||
$userInfo = new UserInfo(User::getInstance()->getId());
|
||||
$userStats = new UserStats(User::getInstance()->getId());
|
||||
$stat = $userStats->getFullStats();
|
||||
$data = DBPDO::$db->ofetchAll('SELECT * FROM inventory WHERE owner_id = ? AND dressed_slot = 0 AND on_sale = 0', User::$current->getId());
|
||||
$data = Db::getInstance()->ofetchAll('SELECT * FROM inventory WHERE owner_id = ? AND dressed_slot = 0 AND on_sale = 0', User::getInstance()->getId());
|
||||
$iteminfo = [];
|
||||
foreach ($data as $row) {
|
||||
$iteminfo = new InventoryItem($row);
|
||||
}
|
||||
|
||||
//Обработчики нажатий на кнопки.
|
||||
if ($req->battlefield ?? 0 && User::$current->getRoom() == 1) {
|
||||
if ($req->battlefield ?? 0 && User::getInstance()->getRoom() == 1) {
|
||||
header('Location: zayavka.php');
|
||||
exit();
|
||||
}
|
||||
@ -89,11 +89,11 @@ if ($req->module_quest ?? 0) {
|
||||
header('Location: module_quest.php');
|
||||
exit();
|
||||
}
|
||||
if ($req->move_inside ?? 0 && User::$current->getRoom() == 20) {
|
||||
if ($req->move_inside ?? 0 && User::getInstance()->getRoom() == 20) {
|
||||
header('Location: main.php?goto=arena');
|
||||
exit();
|
||||
}
|
||||
if ($req->move_outside ?? 0 && User::$current->getRoom() == 1) {
|
||||
if ($req->move_outside ?? 0 && User::getInstance()->getRoom() == 1) {
|
||||
header('Location: main.php?goto=plo');
|
||||
exit();
|
||||
}
|
||||
@ -104,12 +104,12 @@ if ($req->main_page ?? 0) {
|
||||
|
||||
if (!$req->edit) {
|
||||
/* === проверяем соответствие комнаты и скрипта === */
|
||||
if (in_array(User::$current->getRoom(), [20, 21, 26, 48, 51, 52, 651, 2655, 2601, 2701, 2702, 2111])) {
|
||||
if (in_array(User::getInstance()->getRoom(), [20, 21, 26, 48, 51, 52, 651, 2655, 2601, 2701, 2702, 2111])) {
|
||||
header('Location: city.php');
|
||||
exit();
|
||||
}
|
||||
if (in_array(User::$current->getRoom(), [22, 23, 25, 27, 29, 30, 31, 34, 45, 53, 61, 402, 403, 600, 601, 602, 603, 620, 621, 650, 660, 661, 662, 666, 760, 1051, 1052, 1055])) {
|
||||
header('location: ' . Travel::$roomFileName[User::$current->getRoom()]);
|
||||
if (in_array(User::getInstance()->getRoom(), [22, 23, 25, 27, 29, 30, 31, 34, 45, 53, 61, 402, 403, 600, 601, 602, 603, 620, 621, 650, 660, 661, 662, 666, 760, 1051, 1052, 1055])) {
|
||||
header('location: ' . Travel::$roomFileName[User::getInstance()->getRoom()]);
|
||||
exit();
|
||||
}
|
||||
}
|
||||
@ -129,9 +129,9 @@ function del_efs($id, $type)
|
||||
// Входим и выходим если можем.
|
||||
if ($req->goto) {
|
||||
$imove = true;
|
||||
$d = db::c()->query('SELECT SUM(weight) AS sum_weight FROM inventory WHERE owner_id = ?i AND on_sale = 0', User::$current->getId())->fetch_assoc();
|
||||
$eff = db::c()->query('SELECT 1 FROM `users_effects` WHERE `owner_id` = ?i AND (`type` = 14 OR `type` = 13)', User::$current->getId());
|
||||
//(масса: <?= $getItemsBonuses->getItemsWeight() . '/' . User::$current->strength * 4
|
||||
$d = db::c()->query('SELECT SUM(weight) AS sum_weight FROM inventory WHERE owner_id = ?i AND on_sale = 0', User::getInstance()->getId())->fetch_assoc();
|
||||
$eff = db::c()->query('SELECT 1 FROM `users_effects` WHERE `owner_id` = ?i AND (`type` = 14 OR `type` = 13)', User::getInstance()->getId());
|
||||
//(масса: <?= $getItemsBonuses->getItemsWeight() . '/' . User::getInstance()->strength * 4
|
||||
|
||||
if ($d['sum_weight'] > $userStats->getMaxWeight()) {
|
||||
err('У вас переполнен рюкзак, вы не можете передвигаться...');
|
||||
@ -141,15 +141,15 @@ if ($req->goto) {
|
||||
err('У вас тяжелая травма, вы не можете передвигатся...');
|
||||
$imove = false;
|
||||
}
|
||||
if ($req->goto == 'plo' && !User::$current->getZayavka() && $imove && User::$current->getRoom() != 20) {
|
||||
db::c()->query('UPDATE users, online SET users.room = 20, online.room = 20 WHERE online.user_id = users.id AND online.user_id = ?i', User::$current->getId());
|
||||
if ($req->goto == 'plo' && !User::getInstance()->getZayavka() && $imove && User::getInstance()->getRoom() != 20) {
|
||||
db::c()->query('UPDATE users, online SET users.room = 20, online.room = 20 WHERE online.user_id = users.id AND online.user_id = ?i', User::getInstance()->getId());
|
||||
header('Location: city.php');
|
||||
exit("<i>Топ-топ-топ...</i>");
|
||||
} else {
|
||||
err('Подали заявку на бой и убегаете из клуба? Нехорошо...');
|
||||
}
|
||||
if ($req->goto == 'arena' && User::$current->getRoom() == 20 && $imove) {
|
||||
db::c()->query('UPDATE users, online SET users.room = 1, online.room = 1 WHERE online.user_id = users.id AND online.user_id = ?i', User::$current->getId());
|
||||
if ($req->goto == 'arena' && User::getInstance()->getRoom() == 20 && $imove) {
|
||||
db::c()->query('UPDATE users, online SET users.room = 1, online.room = 1 WHERE online.user_id = users.id AND online.user_id = ?i', User::getInstance()->getId());
|
||||
header('Location: main.php');
|
||||
exit("<i>Топ-топ-топ...</i>");
|
||||
}
|
||||
@ -160,8 +160,8 @@ if ($req->use) {
|
||||
}
|
||||
|
||||
if ($req->obraz) {
|
||||
User::$current->setShadow($req->obraz);
|
||||
User::$current->saveUser();
|
||||
User::getInstance()->setShadow($req->obraz);
|
||||
User::getInstance()->saveUser();
|
||||
}
|
||||
|
||||
if ($req->setshadow) {
|
||||
@ -272,12 +272,12 @@ Template::header('Игра');
|
||||
</td>
|
||||
<td style="vertical-align: top; width: 250px"> <!-- Второй столбец -->
|
||||
<div>
|
||||
<br>Уровень: <strong><?= User::$current->getLevel() ?></strong>
|
||||
<br>Опыт: <strong><?= User::$current->getExperience() ?></strong>
|
||||
<br>Уровень: <strong><?= User::getInstance()->getLevel() ?></strong>
|
||||
<br>Опыт: <strong><?= User::getInstance()->getExperience() ?></strong>
|
||||
<br>Побед: <strong>??</strong>
|
||||
<br>Поражений: <strong>??</strong>
|
||||
<br>Ничьих: <strong>??</strong>
|
||||
<br>Деньги: <strong><?= User::$current->getMoney() ?></strong> кр.
|
||||
<br>Деньги: <strong><?= User::getInstance()->getMoney() ?></strong> кр.
|
||||
<HR>
|
||||
</div>
|
||||
<!--Параметры-->
|
||||
@ -329,14 +329,14 @@ Template::header('Игра');
|
||||
<td style="vertical-align: top;">
|
||||
<div class="button-container"> <!--Меню-кнопки-->
|
||||
<FORM METHOD=POST ACTION="?edit=1" name=f1>
|
||||
<?php if (User::$current->getShadow() == '0.gif' || User::$current->getAdmin() == 1): ?>
|
||||
<?php if (User::getInstance()->getShadow() == '0.gif' || User::getInstance()->getAdmin() == 1): ?>
|
||||
<INPUT class="button primary icon user" TYPE="submit" name="setshadow" value="Образы"
|
||||
title="Образы">
|
||||
<?php endif; ?>
|
||||
<div class="button-group">
|
||||
<?php if (User::$current->getRoom() == 20): ?>
|
||||
<?php if (User::getInstance()->getRoom() == 20): ?>
|
||||
<input class="button icon move" type="submit" name="move_inside" value="Войти внутрь">
|
||||
<?php elseif (User::$current->getRoom() == 1): ?>
|
||||
<?php elseif (User::getInstance()->getRoom() == 1): ?>
|
||||
<input class="button primary" type="submit" name="battlefield" value="Поединки">
|
||||
<input class="button icon move" type="submit" name="move_outside" value="Выйти на улицу">
|
||||
<?php endif; ?>
|
||||
|
@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once 'functions.php';
|
||||
require_once 'classes/quests_class.php';
|
||||
@ -24,11 +25,11 @@ Template::header('module_quest');
|
||||
?>
|
||||
<link rel="stylesheet" href="css/hostel.css"/>
|
||||
<?php
|
||||
$sp = db::c()->query('SELECT `vars` FROM `actions` WHERE `vars` LIKE "?S" AND `vals` = "?s" AND `uid` = ?i LIMIT 100', "%start_quest%", "go", $user->getId());
|
||||
$sp = db::c()->query('SELECT `vars` FROM `actions` WHERE `vars` LIKE "?S" AND `vals` = "?s" AND `uid` = ?i LIMIT 100', "%start_quest%", "go", User::getInstance()->getId());
|
||||
while ($pl = $sp->fetch_assoc()) {
|
||||
$questId = str_replace('start_quest', '', $pl['vars']);
|
||||
$pq = db::c()->query('SELECT `id`,`name`,`info` FROM `quests` WHERE `id` = ?i', $questId)->fetch_assoc();
|
||||
$qsee .= sprintf('<a href="?end_qst_now=%s"><img src="/i/clear.gif" title="Отказаться от задания"></a> <b>%s</b><span style="float: right;"><a href="?end_qst=%s">Выполнить</a></span><div style="padding-left: 15px; padding-bottom: 5px; border-bottom: 1px solid grey;"><small>%s<br>$s</small></div><br>', $pq['id'], $pq['name'], $pq['id'], $pq['info'], $q->info($pq, $user->getId()));
|
||||
$qsee .= sprintf('<a href="?end_qst_now=%s"><img src="/i/clear.gif" title="Отказаться от задания"></a> <b>%s</b><span style="float: right;"><a href="?end_qst=%s">Выполнить</a></span><div style="padding-left: 15px; padding-bottom: 5px; border-bottom: 1px solid grey;"><small>%s<br>$s</small></div><br>', $pq['id'], $pq['name'], $pq['id'], $pq['info'], $q->info($pq, User::getInstance()->getId()));
|
||||
$qx++;
|
||||
}
|
||||
|
||||
|
@ -1,14 +1,13 @@
|
||||
<?php
|
||||
// Что ты такое?
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\User;
|
||||
|
||||
require_once "../config.php";
|
||||
$user = User::$current;
|
||||
if (!User::$current->getAdmin()) {
|
||||
if (!User::getInstance()->getAdmin()) {
|
||||
exit('Access denied!');
|
||||
}
|
||||
$nec = DBPDO::$db->fetchAll('select * from podzem2');
|
||||
$nec = Db::getInstance()->fetchAll('select * from podzem2');
|
||||
|
||||
?>
|
||||
<style>
|
||||
@ -50,7 +49,7 @@ $nec = DBPDO::$db->fetchAll('select * from podzem2');
|
||||
<input name="new" type="submit" value="Создать новую">
|
||||
<?php
|
||||
if (!empty($_GET['news'] && !empty($_GET['name']))) {
|
||||
$SQL2 = DBPDO::$db->execute('insert into podzem2 (name) value ?', $_GET['name']);
|
||||
$SQL2 = Db::getInstance()->execute('insert into podzem2 (name) value ?', $_GET['name']);
|
||||
exit("<script>location.href='edit.php'</script>");
|
||||
} ?>
|
||||
<?php else: ?>
|
||||
|
@ -1,18 +1,18 @@
|
||||
<?php
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\User;
|
||||
|
||||
include "../config.php";
|
||||
if (User::$current->getBattle()) {
|
||||
if (User::getInstance()->getBattle()) {
|
||||
header('location: fbattle.php');
|
||||
exit();
|
||||
}
|
||||
if (!User::$current->getAdmin()) {
|
||||
if (!User::getInstance()->getAdmin()) {
|
||||
exit('Access denied!');
|
||||
}
|
||||
if (!empty($_GET['name'])) {
|
||||
$s = DBPDO::$db->fetchAll('select * from podzem2 where name = ?', $_GET['name']);
|
||||
$s = Db::getInstance()->fetchAll('select * from podzem2 where name = ?', $_GET['name']);
|
||||
}
|
||||
?>
|
||||
<table width="100%" border="1" cellspacing="0" cellpadding="0">
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\Item;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
@ -15,12 +15,12 @@ const QUEST_ITEM_NAME = [
|
||||
'z' => 'Жетон',
|
||||
'k' => 'Ключиик',
|
||||
];
|
||||
$fd = DBPDO::$db->fetch('select location, name, glava from labirint where user_id = ?', User::$current->getId());
|
||||
$vb = DBPDO::$db->fetch('select n18 from podzem3 where glava = ? and name = ?', [$fd['glava'], 'Канализация 1 этаж']);
|
||||
if ($fd['location'] != '28' || $fd['name'] != 'Канализация 1 этаж' || $vb['n18'] != '8') {
|
||||
$fd = Db::getInstance()->execute('select location, name, glava from labirint where user_id = ?', User::getInstance()->getId())->fetch();
|
||||
$vb = Db::getInstance()->fetchColumn('select n18 from podzem3 where glava = ? and name = ?', [$fd['glava'], 'Канализация 1 этаж']);
|
||||
if ($fd['location'] != '28' || $fd['name'] != 'Канализация 1 этаж' || $vb != '8') {
|
||||
return;
|
||||
}
|
||||
$userInfo = new UserInfo(User::$current->getId());
|
||||
$userInfo = new UserInfo(User::getInstance()->getId());
|
||||
Template::header('Подземелье Луки');
|
||||
?>
|
||||
<div id=hint3 class=ahint></div>
|
||||
@ -34,7 +34,7 @@ Template::header('Подземелье Луки');
|
||||
<TD>
|
||||
<i>
|
||||
<?php
|
||||
$gag = DBPDO::$db->fetchAll('select * from qwest where login = ?', User::$current->getLogin());
|
||||
$gag = Db::getInstance()->fetchAll('select * from qwest where login = ?', User::getInstance()->getLogin());
|
||||
foreach ($gag as $qw) {
|
||||
$name_qwest = $qw['name_items'];
|
||||
if ($name_qwest === QUEST_ITEM_NAME['k']) {
|
||||
@ -43,9 +43,9 @@ Template::header('Подземелье Луки');
|
||||
}
|
||||
}
|
||||
|
||||
$qwus = DBPDO::$db->fetch('select * from qwest where login = ? and name_qwest = ?', [User::$current->getLogin(), $name_qw]);
|
||||
$qwus = Db::getInstance()->fetch('select * from qwest where login = ? and name_qwest = ?', [User::getInstance()->getLogin(), $name_qw]);
|
||||
$qwest_status = $qwus["status"];
|
||||
$qwesta = DBPDO::$db->fetch('select * from inventory where item_type = 200 and name = ? and owner_id = ?', [QUEST_ITEM_NAME['k'], User::$current->getId()]);
|
||||
$qwesta = Db::getInstance()->fetch('select * from inventory where item_type = 200 and name = ? and owner_id = ?', [QUEST_ITEM_NAME['k'], User::getInstance()->getId()]);
|
||||
if ($qwesta) {
|
||||
$ok_qwest = "1";
|
||||
}
|
||||
@ -74,11 +74,11 @@ Template::header('Подземелье Луки');
|
||||
$item_name = 'Гайка ловкости';
|
||||
}
|
||||
if ($ok_qwest == 1 && ($_GET['d'] == 1.3 || $_GET['d'] == 1.4)) {
|
||||
DBPDO::$db->execute($query, [User::$current->getId(), $item_name, 3, 30, Item::ITEM_TYPE_AMULET, 20]);
|
||||
Db::getInstance()->execute($query, [User::getInstance()->getId(), $item_name, 3, 30, Item::ITEM_TYPE_AMULET, 20]);
|
||||
$query = 'delete from inventory where owner_id = ? and item_type = 200 and name = ?';
|
||||
DBPDO::$db->execute($query, [User::$current->getId(), QUEST_ITEM_NAME['k']]);
|
||||
Db::getInstance()->execute($query, [User::getInstance()->getId(), QUEST_ITEM_NAME['k']]);
|
||||
$query = 'update qwest set status = ? where name_qwest = ? and login = ?';
|
||||
DBPDO::$db->execute($query, ['ok', 'kluchiik', User::$current->getLogin()]);
|
||||
Db::getInstance()->execute($query, ['ok', 'kluchiik', User::getInstance()->getLogin()]);
|
||||
echo sprintf('<span style="font-size: 11px; color: #f00">Вы получили предмет %s.</span><br><br>Лука говорит спасибо...', $item_name);
|
||||
}
|
||||
}
|
||||
@ -93,7 +93,7 @@ Template::header('Подземелье Луки');
|
||||
|
||||
if ($_GET['d'] == '3') {
|
||||
$query = 'select item_id, durability, name from inventory where item_type = 200 and name in (?,?,?) and owner_id = ?';
|
||||
$a = DBPDO::$db->fetchAll($query, [QUEST_ITEM_NAME['g'], QUEST_ITEM_NAME['v'], QUEST_ITEM_NAME['b'], User::$current->getId()]);
|
||||
$a = Db::getInstance()->fetchAll($query, [QUEST_ITEM_NAME['g'], QUEST_ITEM_NAME['v'], QUEST_ITEM_NAME['b'], User::getInstance()->getId()]);
|
||||
unset($query);
|
||||
|
||||
foreach ($a as $row) {
|
||||
@ -111,7 +111,7 @@ Template::header('Подземелье Луки');
|
||||
}
|
||||
}
|
||||
|
||||
if (in_array(User::$current->getLevel(), [4, 5, 6])) {
|
||||
if (in_array(User::getInstance()->getLevel(), [4, 5, 6])) {
|
||||
$lim = 3;
|
||||
$max = 60;
|
||||
|
||||
@ -121,7 +121,7 @@ Template::header('Подземелье Луки');
|
||||
$vsego_b = $total_mass_b;
|
||||
$ziton_b = $total_mass_b;
|
||||
|
||||
} elseif (in_array(User::$current->getLevel(), [7, 8])) {
|
||||
} elseif (in_array(User::getInstance()->getLevel(), [7, 8])) {
|
||||
$lim = 9;
|
||||
$max = 200;
|
||||
|
||||
@ -153,21 +153,21 @@ Template::header('Подземелье Луки');
|
||||
$ostalos_b = intval($total_mass_b - $vsego_b);
|
||||
|
||||
if ($ostalos == 0) {
|
||||
DBPDO::$db->execute($query1, [QUEST_ITEM_NAME['g'], User::$current->getId()]);
|
||||
Db::getInstance()->execute($query1, [QUEST_ITEM_NAME['g'], User::getInstance()->getId()]);
|
||||
} else {
|
||||
DBPDO::$db->execute($query2, [$ostalos, $ostalos * 0.1, $alls_id]);
|
||||
Db::getInstance()->execute($query2, [$ostalos, $ostalos * 0.1, $alls_id]);
|
||||
}
|
||||
|
||||
if ($ostalos_v == 0) {
|
||||
DBPDO::$db->execute($query1, [QUEST_ITEM_NAME['v'], User::$current->getId()]);
|
||||
Db::getInstance()->execute($query1, [QUEST_ITEM_NAME['v'], User::getInstance()->getId()]);
|
||||
} else {
|
||||
DBPDO::$db->execute($query2, [$ostalos_v, $ostalos_v * 0.2, $vls_id]);
|
||||
Db::getInstance()->execute($query2, [$ostalos_v, $ostalos_v * 0.2, $vls_id]);
|
||||
}
|
||||
|
||||
if ($ostalos_b == 0) {
|
||||
DBPDO::$db->execute($query1, [QUEST_ITEM_NAME['b'], User::$current->getId()]);
|
||||
Db::getInstance()->execute($query1, [QUEST_ITEM_NAME['b'], User::getInstance()->getId()]);
|
||||
} else {
|
||||
DBPDO::$db->execute($query2, [$ostalos_b, $ostalos_b * 0.1, $bls_id]);
|
||||
Db::getInstance()->execute($query2, [$ostalos_b, $ostalos_b * 0.1, $bls_id]);
|
||||
}
|
||||
|
||||
unset($query1, $query2);
|
||||
@ -179,11 +179,11 @@ Template::header('Подземелье Луки');
|
||||
$all_zitons = $ziton + $ziton_v + $ziton_b;
|
||||
|
||||
if (!empty($all_zitons)) {
|
||||
$check = DBPDO::$db->fetch($query1, [User::$current->getId(), QUEST_ITEM_NAME['z']]);
|
||||
$check = Db::getInstance()->fetch($query1, [User::getInstance()->getId(), QUEST_ITEM_NAME['z']]);
|
||||
if ($check['durability'] > 0) {
|
||||
DBPDO::$db->execute($query2, [$all_zitons, $all_zitons * 0.1, 'Лука', User::$current->getId(), QUEST_ITEM_NAME['z']]);
|
||||
Db::getInstance()->execute($query2, [$all_zitons, $all_zitons * 0.1, 'Лука', User::getInstance()->getId(), QUEST_ITEM_NAME['z']]);
|
||||
} else {
|
||||
DBPDO::$db->execute($query3, [QUEST_ITEM_NAME['z'], $all_zitons, User::$current->getId(), 200, $all_zitons * 0.1 . 'Лука']);
|
||||
Db::getInstance()->execute($query3, [QUEST_ITEM_NAME['z'], $all_zitons, User::getInstance()->getId(), 200, $all_zitons * 0.1 . 'Лука']);
|
||||
}
|
||||
unset($query1, $query2, $query3);
|
||||
} else {
|
||||
@ -213,7 +213,7 @@ Template::header('Подземелье Луки');
|
||||
}
|
||||
if ($_GET['d'] == '7') {
|
||||
if ($qwest != '1') {
|
||||
$T1 = DBPDO::$db->execute('insert into qwest (user_id,login,name_qwest,name_items,id_items,dlja,zadanie,kw,status) values (?,?,?,?,?,?,?,?,?)', [User::$current->getId(), User::$current->getLogin(), 'kluchiik', QUEST_ITEM_NAME['k'], '', 'Лука', 'Найти ключиик', 0, 'no']);
|
||||
$T1 = Db::getInstance()->execute('insert into qwest (user_id,login,name_qwest,name_items,id_items,dlja,zadanie,kw,status) values (?,?,?,?,?,?,?,?,?)', [User::getInstance()->getId(), User::getInstance()->getLogin(), 'kluchiik', QUEST_ITEM_NAME['k'], '', 'Лука', 'Найти ключиик', 0, 'no']);
|
||||
echo sprintf('<span style="font-size:11px; color:red;">Вы приняли задание.(Найти %s).</span><br><br>Хорошо... Лука будет ждать...', QUEST_ITEM_NAME['k']);
|
||||
} else {
|
||||
echo sprintf('<span style="font-size:11px; color:red;">Вы уже приняли задание.(Найти %s).</span><br><br>Ну что? Лука ждёт...', QUEST_ITEM_NAME['k']);
|
||||
@ -289,7 +289,7 @@ Template::header('Подземелье Луки');
|
||||
</TD>
|
||||
<TD>
|
||||
<?php
|
||||
$buser = DBPDO::$db->fetch('select * from users where login = ?', 'Лука');
|
||||
$buser = Db::getInstance()->fetch('select * from users where login = ?', 'Лука');
|
||||
//Этот класс не умеет работать с ботами! Этот вызов - заглушка!
|
||||
$botInfo = new UserInfo('Лука');
|
||||
$botInfo->showUserDoll();
|
||||
|
21
post.php
21
post.php
@ -5,6 +5,7 @@ use Battles\GameLogs;
|
||||
use Battles\InventoryItem;
|
||||
use Battles\Nick;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
|
||||
require_once 'functions.php';
|
||||
@ -27,11 +28,11 @@ if ($_SESSION['receiverName']) {
|
||||
$sendItemId = $_POST['item_id'] ?? 0;
|
||||
$telegraphText = $_POST['message'] ?? 0;
|
||||
|
||||
if ($submit == 'sendMessage' && $telegraphText && $user->getMoney()) {
|
||||
if ($submit == 'sendMessage' && $telegraphText && User::getInstance()->getMoney()) {
|
||||
|
||||
if ($telegraphText) {
|
||||
$user->setMoney($user->getMoney() - 1);
|
||||
Bank::setWalletMoney($user->getMoney(), $user->getId());
|
||||
User::getInstance()->setMoney(User::getInstance()->getMoney() - 1);
|
||||
Bank::setWalletMoney(User::getInstance()->getMoney(), User::getInstance()->getId());
|
||||
db::c()->query('INSERT INTO `telegraph` (`receiver`,`text`) VALUES (?i,"?s")', $receiverId, $telegraphText);
|
||||
$statusMessage = 'Сообщение отправлено.';
|
||||
} else {
|
||||
@ -39,16 +40,16 @@ if ($_SESSION['receiverName']) {
|
||||
}
|
||||
}
|
||||
|
||||
if ($submit == 'sendItem' && $sendItemId && $user->getMoney()) {
|
||||
$res = db::c()->query('SELECT name FROM inventory WHERE owner_id = ?i AND item_id = ?i AND dressed_slot = 0 AND on_sale = 0', $user->getId(), $sendItemId)->fetch_assoc();
|
||||
if ($submit == 'sendItem' && $sendItemId && User::getInstance()->getMoney()) {
|
||||
$res = db::c()->query('SELECT name FROM inventory WHERE owner_id = ?i AND item_id = ?i AND dressed_slot = 0 AND on_sale = 0', User::getInstance()->getId(), $sendItemId)->fetch_assoc();
|
||||
if (!$res) {
|
||||
$statusMessage = "Предмет не найден в рюкзаке.";
|
||||
} else {
|
||||
$user->setMoney($user->getMoney() - 1);
|
||||
Bank::setWalletMoney($user->getMoney(), $user->getId());
|
||||
User::getInstance()->setMoney(User::getInstance()->getMoney() - 1);
|
||||
Bank::setWalletMoney(User::getInstance()->getMoney(), User::getInstance()->getId());
|
||||
db::c()->query('UPDATE `inventory` SET owner_id = ?i WHERE item_id= ?i AND owner_id = ?i', $receiverId, $sendItemId, $_SESSION['uid']);
|
||||
$statusMessage = 'Предмет "' . $res['name'] . '" передан персонажу ' . Nick::id($receiverId)->short(1);
|
||||
$receiverLogMessage = 'Получен предмет "' . $res['name'] . '" от персонажа ' . Nick::id($_SESSION['uid'])->short(1);
|
||||
$statusMessage = 'Предмет "' . $res['name'] . '" передан персонажу ' . User::getInstance($receiverId)->getLogin();
|
||||
$receiverLogMessage = 'Получен предмет "' . $res['name'] . '" от персонажа ' . User::getInstance()->getLogin();
|
||||
db::c()->query('INSERT INTO `telegraph` (`receiver`,`text`) VALUES (?i,"?s")', $receiverId, 'Почтовый перевод: ' . $res['name'] . ' от персонажа ' . $user['login'] . '.');
|
||||
// Пишем в лог отправителю.
|
||||
GameLogs::addUserLog($_SESSION['uid'], $statusMessage, 'почта');
|
||||
@ -57,7 +58,7 @@ if ($_SESSION['receiverName']) {
|
||||
}
|
||||
}
|
||||
|
||||
$queryItems = db::c()->query('SELECT * FROM inventory WHERE dressed_slot = 0 AND on_sale = 0 AND owner_id = ?i', $user->getId());
|
||||
$queryItems = db::c()->query('SELECT * FROM inventory WHERE dressed_slot = 0 AND on_sale = 0 AND owner_id = ?i', User::getInstance()->getId());
|
||||
while ($row = $queryItems->fetch_assoc()) {
|
||||
$iteminfo[] = new InventoryItem($row);
|
||||
}
|
||||
|
20
presents.php
20
presents.php
@ -13,6 +13,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
use Battles\Bank;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
@ -23,7 +24,6 @@ if ($_SESSION['uid'] != 2) {
|
||||
}
|
||||
require_once 'config.php';
|
||||
|
||||
$user = new User($_SESSION['uid']);
|
||||
$status = '';
|
||||
$dirname = "i/presents/";
|
||||
$images = glob($dirname . "*.png");
|
||||
@ -47,21 +47,21 @@ if (!empty($_POST['sendAction'])) {
|
||||
$_POST['days'] = 1;
|
||||
}
|
||||
$cost = $_POST['days'] * 5;
|
||||
if ($user->getMoney() < $cost) {
|
||||
if (User::getInstance()->getMoney() < $cost) {
|
||||
$status = "Не хватает кредитов на оплату подарка!";
|
||||
return;
|
||||
}
|
||||
|
||||
if ($_POST['sender'] == 1) {
|
||||
$sender = "Анонимный подарок";
|
||||
} elseif ($_POST['sender'] == 2 && $user->getClan()) {
|
||||
$sender = "Подарок от клана {$user->getClan()}";
|
||||
} elseif ($_POST['sender'] == 2 && User::getInstance()->getClan()) {
|
||||
$sender = "Подарок от клана " . User::getInstance()->getClan();
|
||||
} else {
|
||||
$sender = "Подарок от {$user->getLogin()}";
|
||||
$sender = "Подарок от " . User::getInstance()->getLogin();
|
||||
}
|
||||
|
||||
$user->setMoney($user->getMoney() - $cost);
|
||||
Bank::setWalletMoney($user->getMoney(), $user->getId());
|
||||
User::getInstance()->setMoney(User::getInstance()->getMoney() - $cost);
|
||||
Bank::setWalletMoney(User::getInstance()->getMoney(), User::getInstance()->getId());
|
||||
db::c()->query('INSERT INTO users_presents (owner, img, text, sender, expiration_date) VALUES (?i,"?s","?s","?s",DATE_ADD(CURDATE(),INTERVAL ?i DAY))', $receiver['id'], $_POST['present'], $_POST['text'], $sender, $_POST['days']);
|
||||
|
||||
$telegraphText = "Вам пришёл подарок от {$sender}!";
|
||||
@ -105,10 +105,10 @@ Template::header('Дарильня');
|
||||
rows=6 cols=80
|
||||
placeholder="Текст сопроводительной записки (в информации о персонаже не отображается). Заполнять не обязательно."></textarea><br>
|
||||
<br>Выберите, от чьего имени подарок:<br>
|
||||
<label><input type=radio name=sender value=0 checked> <?= $user->getLogin() ?></label><br>
|
||||
<label><input type=radio name=sender value=0 checked> <?= User::getInstance()->getLogin() ?></label><br>
|
||||
<label><input type=radio name=sender value=1> анонимно</label><br>
|
||||
<?php if (!empty($user['ClanName'])): ?>
|
||||
<label><input type=radio name=sender value=2> от имени клана <b><?= $user->getClan() ?></b></label><br>
|
||||
<?php if (!empty(User::getInstance()->getClan())): ?>
|
||||
<label><input type=radio name=sender value=2> от имени клана <b><?= User::getInstance()->getClan() ?></b></label><br>
|
||||
<?php endif; ?>
|
||||
<br>Долговечность подарка (5кр в день):<br>
|
||||
<input name="days" placeholder="Количество дней"><br>
|
||||
|
@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once 'functions.php';
|
||||
include('classes/quests_class.php');
|
||||
@ -56,7 +57,7 @@ if (!empty($q->error)) {
|
||||
Template::header('Памятник');
|
||||
?>
|
||||
<div style="float: right;">
|
||||
<?php if (($user->getLevel() < 5 || $user->getAdmin()) && $user->getHealth() < $user->getMaxHealth()): ?>
|
||||
<?php if ((User::getInstance()->getLevel() < 5 || User::getInstance()->getAdmin()) && User::getInstance()->getHealth() < User::getInstance()->getMaxHealth()): ?>
|
||||
<button onclick="location.href='?hps'">Восстановить здоровье</button>
|
||||
<? endif ?>
|
||||
<button onclick="location.href='?'">Обновить</button>
|
||||
|
28
register.php
28
register.php
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
use Battles\Template, Battles\Database\DBPDO;
|
||||
use Battles\Template, Battles\Register;
|
||||
|
||||
require_once "config.php";
|
||||
|
||||
@ -15,27 +15,11 @@ if ($_COOKIE[GAMEDOMAIN] ?? null) {
|
||||
$law2 = filter_input(INPUT_POST, 'law2', FILTER_VALIDATE_BOOLEAN);
|
||||
|
||||
if ($login && $password && $email && $birthday && $law && $law2) {
|
||||
$newUser = new class {
|
||||
public static function addUser(string $login, string $password, string $email, string $birthday): bool
|
||||
{
|
||||
$db = new DBPDO();
|
||||
if ($db->ofetch('SELECT 1 FROM users WHERE login = ? OR email = ?', [$login, $email])) {
|
||||
return false;
|
||||
}
|
||||
$db->execute('INSERT INTO users (login,pass,email,borndate,ip,session_id,shadow)
|
||||
VALUES (?,?,?,?,?,?,?)', [$login, $password, $email, $birthday, $_SERVER['REMOTE_ADDR'], session_id(), '0.png']);
|
||||
$userId = $db->lastInsertId();
|
||||
$db->execute('INSERT INTO online (user_id, login_time, room, real_time) VALUES (?,?,1,?)', [$userId, time(), time()]);
|
||||
$db->execute('INSERT INTO bank (user_id) VALUES ?', $userId);
|
||||
setcookie(GAMEDOMAIN, $userId, time() + 3600);
|
||||
setcookie("battle", time());
|
||||
$_SESSION['uid'] = $userId;
|
||||
$_SESSION['sid'] = session_id();
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
$newUser::addUser($login, $password, $email, $birthday);
|
||||
$uid = Register::addUser($login, $password, $email, $birthday);
|
||||
setcookie(GAMEDOMAIN, $uid, time() + 3600);
|
||||
setcookie("battle", time());
|
||||
$_SESSION['uid'] = $uid;
|
||||
$_SESSION['sid'] = session_id();
|
||||
header('Location: fight.php');
|
||||
exit;
|
||||
}
|
||||
|
@ -1,79 +1,14 @@
|
||||
<?php
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Template;
|
||||
use Battles\Template, Battles\RememberPassword;
|
||||
|
||||
require_once("config.php");
|
||||
const OK_MAIL_SENT = 'Письмо отправлено!';
|
||||
const OK_PASSWORD_CHANGED = 'Пароль изменён!';
|
||||
const ERROR_MAIL_NOT_SENT = 'Письмо не отправлено!';
|
||||
const ERROR_WRONG_LOGIN = 'Такого пользователя не существует!';
|
||||
const ERROR_TOO_MANY_TRIES = 'Вы уже отправляли себе письмо сегодня!';
|
||||
const ERROR_OLD_HASH = 'Ссылка устарела!';
|
||||
const ERROR_WRONG_HASH = 'Неверная ссылка!';
|
||||
$login = filter_input(INPUT_POST, 'loginid', FILTER_SANITIZE_SPECIAL_CHARS);
|
||||
$password = isset($_POST['psw']) ? password_hash($_POST['psw'], PASSWORD_DEFAULT) : null;
|
||||
$_GET['change'] = $_GET['change'] ?? null;
|
||||
$newPassword = $_POST['newpasswd'] ?? 0;
|
||||
$hashCheck = $_POST['hashcheck'] ?? 0;
|
||||
|
||||
$operation = new class {
|
||||
private function mailSend(string $to, string $message): bool
|
||||
{
|
||||
$from = "=?UTF-8?B?" . base64_encode('Noreply') . "?= <noreply@" . GAMEDOMAIN . ">";
|
||||
$subject = "=?UTF-8?B?" . base64_encode('Восстановление забытого пароля') . "?=";
|
||||
$headers = [
|
||||
'From' => $from,
|
||||
'MIME-Version' => '1.0',
|
||||
'Content-type' => 'text/html; charset=UTF-8',
|
||||
];
|
||||
|
||||
if (extension_loaded('tidy')) {
|
||||
$cleaner = new tidy();
|
||||
$message = $cleaner->repairString($message, ['show-errors' => 0, 'show-warnings' => false], 'utf8');
|
||||
}
|
||||
return mail($to, $subject, $message, $headers);
|
||||
}
|
||||
|
||||
public function sendRecoveryMail(string $to): string
|
||||
{
|
||||
$db = new DBPDO();
|
||||
$check = $db->ofetch('SELECT email FROM users WHERE login = ?', $to);
|
||||
if (!$check) {
|
||||
return ERROR_WRONG_LOGIN;
|
||||
}
|
||||
if ($db->ofetch('SELECT 1 FROM users_recovery WHERE login = ?', $to)) {
|
||||
return ERROR_TOO_MANY_TRIES;
|
||||
}
|
||||
$hash = bin2hex(random_bytes(8));
|
||||
$db->execute('INSERT INTO users_recovery (login, hash, ip, date) VALUES (?,?,?,?)', [$to, $hash, date('Y-m-d', strtotime('+1days')), $_SERVER['REMOTE_ADDR']]);
|
||||
$message = "Здравствуйте!<br><br>
|
||||
Кто-то запросил восстановление пароля к вашему персонажу " . $to . ".<br><br>
|
||||
Для смены пароля пройдите по
|
||||
<a href='" . GAMEDOMAIN . "/rememberpassword.php?change=" . $hash . "'> данной ссылке</a>.<br><br>
|
||||
Ссылка будет действовать до <em>" . date('d-M-Y', strtotime(date('Y-m-d', strtotime('+1days')))) . "</em>.
|
||||
";
|
||||
return self::mailSend($check->email, $message) ? OK_MAIL_SENT : ERROR_MAIL_NOT_SENT;
|
||||
}
|
||||
|
||||
public function isAllowed($hash)
|
||||
{
|
||||
return DBPDO::INIT()->fetch('SELECT 1 FROM users_recovery WHERE hash = ? AND date < ?', [$hash, date('Y-m-d')]) ? true : ERROR_OLD_HASH;
|
||||
}
|
||||
|
||||
public function setNewPassword(string $newPassword, string $hash):string
|
||||
{
|
||||
$db = new DBPDO();
|
||||
$row = $db->ofetch('SELECT login FROM users_recovery WHERE hash = ?', $hash);
|
||||
if (!$row) {
|
||||
return ERROR_WRONG_HASH;
|
||||
}
|
||||
$newPassword = password_hash($newPassword, PASSWORD_DEFAULT);
|
||||
$db->execute('UPDATE users SET pass = ? WHERE login = ?', [$newPassword, $row->login]);
|
||||
$db->execute('DELETE FROM users_recovery WHERE hash = ?', $hash);
|
||||
return OK_PASSWORD_CHANGED;
|
||||
}
|
||||
};
|
||||
$operation = new RememberPassword();
|
||||
|
||||
if ($login) {
|
||||
$statusMessage = $operation->sendRecoveryMail($login);
|
||||
|
35
repair.php
35
repair.php
@ -1,10 +1,11 @@
|
||||
<?php
|
||||
|
||||
use Battles\Bank;
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\GameLogs;
|
||||
use Battles\InventoryItem;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once("functions.php");
|
||||
const GRAV_LIMIT = 32;
|
||||
@ -26,11 +27,11 @@ $gravirovka_query = null;
|
||||
|
||||
// Гравировка 30 кред. Максимум 32 символа.
|
||||
if ($gravirovkaText && $itemId) {
|
||||
if ($user->getMoney() >= GRAV_COST) {
|
||||
if (User::getInstance()->getMoney() >= GRAV_COST) {
|
||||
if (iconv_strlen($gravirovkaText) <= GRAV_LIMIT) {
|
||||
DBPDO::$db->execute('UPDATE inventory SET text = ? WHERE dressed_slot = 0 AND on_sale = 0 AND owner_id = ? AND id = ?', [$gravirovkaText, $user->getId(), $itemId]);
|
||||
$user->setMoney($user->getMoney() - GRAV_COST);
|
||||
Bank::setWalletMoney($user->getMoney(), $user->getId());
|
||||
Db::getInstance()->execute('UPDATE inventory SET text = ? WHERE dressed_slot = 0 AND on_sale = 0 AND owner_id = ? AND id = ?', [$gravirovkaText, User::getInstance()->getId(), $itemId]);
|
||||
User::getInstance()->setMoney(User::getInstance()->getMoney() - GRAV_COST);
|
||||
Bank::setWalletMoney(User::getInstance()->getMoney(), User::getInstance()->getId());
|
||||
$status = REPAIR_STATUS['OK_GRAV_ADDED'];
|
||||
} else {
|
||||
$status = REPAIR_STATUS['ERROR_SIZE_LIMIT'];
|
||||
@ -41,10 +42,10 @@ if ($gravirovkaText && $itemId) {
|
||||
}
|
||||
// Снять гравировку.
|
||||
if ($gravirovkaRemove) {
|
||||
if ($user->getMoney() >= GRAV_COST) {
|
||||
DBPDO::$db->execute('UPDATE inventory SET text = null WHERE dressed_slot = 0 AND on_sale = 0 AND owner_id = ? AND id = ?', [$user->getId(), $itemId]);
|
||||
$user->setMoney($user->getMoney() - GRAV_COST);
|
||||
Bank::setWalletMoney($user->getMoney(), $user->getId());
|
||||
if (User::getInstance()->getMoney() >= GRAV_COST) {
|
||||
Db::getInstance()->execute('UPDATE inventory SET text = null WHERE dressed_slot = 0 AND on_sale = 0 AND owner_id = ? AND id = ?', [User::getInstance()->getId(), $itemId]);
|
||||
User::getInstance()->setMoney(User::getInstance()->getMoney() - GRAV_COST);
|
||||
Bank::setWalletMoney(User::getInstance()->getMoney(), User::getInstance()->getId());
|
||||
$status = REPAIR_STATUS['OK_GRAV_REMOVED'];
|
||||
} else {
|
||||
$status = REPAIR_STATUS['ERROR_NO_MONEY'];
|
||||
@ -53,22 +54,22 @@ if ($gravirovkaRemove) {
|
||||
// Ремонт 0,5 кред за единицу.
|
||||
// Пока что лимит ремонта поставлен на 25. Дальше можно обыграть.
|
||||
if ($action == 'repair' && $itemId) {
|
||||
$q = DBPDO::$db->ofetch('SELECT name, durability FROM inventory WHERE item_id = ?', $itemId);
|
||||
if ($user->getMoney() > ceil($q->duration / 2)) {
|
||||
DBPDO::$db->execute('UPDATE inventory SET duration = 25 WHERE dressed_slot = 0 AND on_sale = 0 AND owner_id = ? AND id = ?', [$user->getId(), $itemId]);
|
||||
$user->setMoney($user->getMoney() - ceil($q->duration / 2));
|
||||
Bank::setWalletMoney($user->getMoney(), $user->getId());
|
||||
GameLogs::addUserLog($user->getId(), 'Отремонтирован предмет «' . $q->name . '» id:(' . $itemId . ') за ' . ceil($q->duration / 2) . ' кр.');
|
||||
$q = Db::getInstance()->ofetch('SELECT name, durability FROM inventory WHERE item_id = ?', $itemId);
|
||||
if (User::getInstance()->getMoney() > ceil($q->duration / 2)) {
|
||||
Db::getInstance()->execute('UPDATE inventory SET duration = 25 WHERE dressed_slot = 0 AND on_sale = 0 AND owner_id = ? AND id = ?', [User::getInstance()->getId(), $itemId]);
|
||||
User::getInstance()->setMoney(User::getInstance()->getMoney() - ceil($q->duration / 2));
|
||||
Bank::setWalletMoney(User::getInstance()->getMoney(), User::getInstance()->getId());
|
||||
GameLogs::addUserLog(User::getInstance()->getId(), 'Отремонтирован предмет «' . $q->name . '» id:(' . $itemId . ') за ' . ceil($q->duration / 2) . ' кр.');
|
||||
$status = REPAIR_STATUS['OK_REPAIRED'];
|
||||
} else {
|
||||
$status = REPAIR_STATUS['ERROR_NO_MONEY'];
|
||||
}
|
||||
}
|
||||
if ($goto == 'remont') {
|
||||
$remont_query = DBPDO::$db->ofetchAll('SELECT item_id, name, image, durability FROM inventory WHERE item_type < 12 AND dressed_slot = 0 AND on_sale = 0 AND durability < 25 AND owner_id = ? ORDER BY name', $user->getId());
|
||||
$remont_query = Db::getInstance()->ofetchAll('SELECT item_id, name, image, durability FROM inventory WHERE item_type < 12 AND dressed_slot = 0 AND on_sale = 0 AND durability < 25 AND owner_id = ? ORDER BY name', User::getInstance()->getId());
|
||||
}
|
||||
if ($goto == 'gravirovka') {
|
||||
$gravirovka_query = DBPDO::$db->ofetchAll('SELECT item_id, name, image, text FROM inventory WHERE owner_id = ? AND dressed_slot = 0 AND item_type = 3 AND name NOT LIKE "%Букет%" AND on_sale = 0 OR text IS NOT NULL AND owner_id = ? AND dressed_slot = 0 AND on_sale = 0 ORDER BY name', [$user->getId(), $user->getId()]);
|
||||
$gravirovka_query = Db::getInstance()->ofetchAll('SELECT item_id, name, image, text FROM inventory WHERE owner_id = ? AND dressed_slot = 0 AND item_type = 3 AND name NOT LIKE "%Букет%" AND on_sale = 0 OR text IS NOT NULL AND owner_id = ? AND dressed_slot = 0 AND on_sale = 0 ORDER BY name', [User::getInstance()->getId(), User::getInstance()->getId()]);
|
||||
}
|
||||
Template::header('Кузня');
|
||||
?>
|
||||
|
20
shop.php
20
shop.php
@ -8,25 +8,25 @@ use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once 'functions.php';
|
||||
Shop::$current = new Shop(Shop::GENERAL_SHOP);
|
||||
|
||||
if (!empty($_GET['otdel'])) {
|
||||
if ($_GET['otdel'] === 'sale') {
|
||||
Shop::$current->categoryType = Shop::CATEGORY_SALE_ITEMS;
|
||||
Shop::id(Shop::GENERAL_SHOP)->categoryType = Shop::CATEGORY_SALE_ITEMS;
|
||||
}
|
||||
elseif ($_GET['otdel'] === 'market') {
|
||||
Shop::$current->categoryType = Shop::BARTER_SHOP;
|
||||
Shop::id(Shop::GENERAL_SHOP)->categoryType = Shop::BARTER_SHOP;
|
||||
}
|
||||
else {
|
||||
Shop::$current->categoryType = $_GET['otdel'];
|
||||
Shop::id(Shop::GENERAL_SHOP)->categoryType = $_GET['otdel'];
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($_POST['sellshop'])) {
|
||||
ShopItem::sellItem($_POST['itemId'], User::$current, 1);
|
||||
ShopItem::sellItem($_POST['itemId'], User::getInstance(), 1);
|
||||
}
|
||||
|
||||
if (!empty($_POST['buyshop'])) {
|
||||
ShopItem::buyItem($_POST['itemId'], User::$current);
|
||||
ShopItem::buyItem($_POST['itemId'], User::getInstance());
|
||||
}
|
||||
|
||||
if (!empty($_POST['buymarket'])) {
|
||||
@ -42,20 +42,20 @@ Template::header('Магазин');
|
||||
<div class="status"><?= ShopItem::$status ?></div>
|
||||
<div class="row shop">
|
||||
<div class="left column">
|
||||
<h3><?= Shop::$current->getCategoryName() ?></h3>
|
||||
<h3><?= Shop::id(Shop::GENERAL_SHOP)->getCategoryName() ?></h3>
|
||||
<div>
|
||||
<?php if (Shop::$current->categoryType === -1): ?>
|
||||
<?php if (Shop::id(Shop::GENERAL_SHOP)->categoryType === -1): ?>
|
||||
Вы можете продать ваши предметы за сущие копейки.
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<!--Магазин-->
|
||||
<?= Shop::$current->getItemsList() ?>
|
||||
<?= Shop::id(Shop::GENERAL_SHOP)->getItemsList() ?>
|
||||
</div>
|
||||
<div class="right column">
|
||||
<div>
|
||||
<strong>
|
||||
Масса всех вещей: <?= InventoryItem::getWeightData() ?> <br>
|
||||
Деньги: <?= User::$current->getMoney() ?>.
|
||||
Деньги: <?= User::getInstance()->getMoney() ?>.
|
||||
</strong>
|
||||
</div>
|
||||
<hr>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
@ -33,7 +33,7 @@ if (!empty($_POST)) {
|
||||
}
|
||||
}
|
||||
|
||||
$dateD = DBPDO::$db->fetch('select datetime from turnament where old = 0 limit 1');
|
||||
$dateD = Db::getInstance()->fetch('select datetime from turnament where old = 0 limit 1');
|
||||
|
||||
if (mktime() >= ($dateD['dt'] + 10)) {
|
||||
$Tournament->UpdateTournir();
|
||||
@ -46,7 +46,7 @@ if (mktime() >= ($dateD['dt'] + 10)) {
|
||||
$Tournament->ShowTournirFinaliats();
|
||||
?>
|
||||
<form method="post">
|
||||
<?php if (User::$current->getAdmin()) { ?>
|
||||
<?php if (User::getInstance()->getAdmin()) { ?>
|
||||
<div>
|
||||
<input type="submit" name="newtournament" value="Добавить новый турнир">
|
||||
<input type="submit" name="preptournament" value="Приготовить турнир и запустить">
|
||||
|
31
towerin.php
31
towerin.php
@ -8,7 +8,8 @@ use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once "functions.php";
|
||||
if (User::$current->getInTower() != 1) {
|
||||
$user = User::getInstance();
|
||||
if (User::getInstance()->getInTower() != 1) {
|
||||
header('Location: main.php');
|
||||
exit;
|
||||
}
|
||||
@ -77,6 +78,34 @@ $rhar = [
|
||||
"560" => [20, 0, 0, 0, 559],
|
||||
];
|
||||
|
||||
function get_out($u)
|
||||
{
|
||||
$pers = db::c()->query('SELECT * FROM users WHERE id = ?i', $u)->fetch_assoc_array();
|
||||
DressedItems::undressAllItems($pers['id']);
|
||||
db::c()->query('UPDATE inventory SET owner = ?i WHERE owner = ?i', $pers['id'], $pers['id'] + _BOTSEPARATOR_);
|
||||
###
|
||||
$row = db::c()->query('SELECT * FROM `effects` WHERE `owner` = ?i', $pers['id'] + _BOTSEPARATOR_);
|
||||
$travm = [11, 12, 13, 14];
|
||||
while ($efs = $row->fetch_assoc()) {
|
||||
if (in_array($efs['type'], $travm)) {
|
||||
$pers['sila'] -= $efs['sila'];
|
||||
$pers['lovk'] -= $efs['lovk'];
|
||||
$pers['inta'] -= $efs['inta'];
|
||||
$pers['vinos'] -= $efs['vinos'];
|
||||
} else {
|
||||
$pers['sila'] += $efs['sila'];
|
||||
$pers['lovk'] += $efs['lovk'];
|
||||
$pers['inta'] += $efs['inta'];
|
||||
$pers['vinos'] += $efs['vinos'];
|
||||
$pers['maxhp'] += $efs['hp'];
|
||||
}
|
||||
$efs['owner'] = $_SESSION['uid'];
|
||||
//mysql_query('UPDATE `effects` SET `owner` = "' . $efs['owner'] . '" WHERE `id` = "' . $efs['id'] . '" LIMIT 1');
|
||||
//mysql_query('UPDATE `users` SET `sila` = "' . $pers['sila'] . '", `lovk` = "' . $pers['lovk'] . '", `inta` = "' . $pers['inta'] . '", `vinos` = "' . $pers['vinos'] . '", `maxhp` = "' . $pers['maxhp'] . '" WHERE `id` = "' . $pers['id'] . '" LIMIT 1');
|
||||
}
|
||||
###
|
||||
}
|
||||
|
||||
mysql_query("LOCK TABLES `bots` WRITE, `deztow_stavka` WRITE, `users` WRITE, `deztow_items` WRITE, `inventory` WRITE, `battle` WRITE, `logs` WRITE, `deztow_turnir` WRITE, `effects` WRITE,`shop` WRITE, `online` WRITE, `deztow_gamers_inv` WRITE, `deztow_realchars` WRITE, `deztow_eff` WRITE, `variables` WRITE");
|
||||
|
||||
$ls = mysql_num_rows(mysql_query("SELECT `id` FROM `users` WHERE `bot` = 1 and `in_tower` = 1"));
|
||||
|
@ -1,13 +1,18 @@
|
||||
<?php
|
||||
|
||||
use Battles\DressedItems;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once "functions.php";
|
||||
$effect = mysql_fetch_array(mysql_query("SELECT * FROM `effects` WHERE `owner` = '{$user['id']}' LIMIT 1"));
|
||||
if ($user->getRoom() != 31) {
|
||||
if (User::getInstance()->getRoom() != 31) {
|
||||
exit('Для распределения статов необходимо находиться в прихожей "Башни смерти"');
|
||||
}
|
||||
if (isset($effect['id'])) {
|
||||
exit('Для распределения статов на Вас не дожно быть никаких эффектов');
|
||||
}
|
||||
\Battles\DressedItems::undressAllItems($user['id']);
|
||||
DressedItems::undressAllItems($user['id']);
|
||||
|
||||
if ((int)$_GET['delsn'] > 0) {
|
||||
mysql_query("DELETE FROM `deztow_charstams` WHERE `id` = '" . (int)$_GET['delsn'] . "' AND `name` = '" . $_GET['ddname'] . "' AND `owner` = '" . (int)$user['id'] . "' LIMIT 1");
|
||||
@ -40,7 +45,7 @@ if ($_GET['setdef']) {
|
||||
echo "<font color=red><b>Сохранено.</b></font>" . mysql_error();
|
||||
}
|
||||
|
||||
\Battles\Template::header('towerstamp');
|
||||
Template::header('towerstamp');
|
||||
?>
|
||||
<h3>Профили характеристик</h3>
|
||||
Статы не позволяют сходить в БС? Раскиньте ваши статы так, как вы хотите, и участвуйте в турнире! Выбранный по умолчанию профиль, загрузится сам. Вы можете создавать неограниченное число профилей, и менять их за секунды до турнира!
|
||||
|
@ -1,15 +1,15 @@
|
||||
<?php
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once "config.php";
|
||||
if (!empty($_GET['id']) && User::$current->getAdmin()) {
|
||||
if (!empty($_GET['id']) && User::getInstance()->getAdmin()) {
|
||||
echo "Пробуем перейти на выбранную замковую улицу...";
|
||||
$_SESSION["klan"] = $_GET['klan'];
|
||||
$a = $_GET['klan'];
|
||||
DBPDO::$db->execute('update users, online set users.room = 651, online.room = 651 where user_id = id and user_id = ?', User::$current->getId());
|
||||
Db::getInstance()->execute('update users, online set users.room = 651, online.room = 651 where user_id = id and user_id = ?', User::getInstance()->getId());
|
||||
header("location: city.php");
|
||||
exit;
|
||||
}
|
||||
@ -19,7 +19,7 @@ Template::header('Клановый перекрёсток');
|
||||
<h1>Переход к клановым улицам</h1>
|
||||
На данный момент свои замки имеют такие кланы:
|
||||
<?php
|
||||
$rows = DBPDO::$db->fetchAll('select short_name, full_name, owner_id from clans where zamok = 2');
|
||||
$rows = Db::getInstance()->fetchAll('select short_name, full_name, owner_id from clans where zamok = 2');
|
||||
foreach ($rows as $row) {
|
||||
$frm = "<img src='i/clan/%s.png'> %s<br><form><input name='klan' type='hidden' value='%s'><input type='submit' value='Вход'></form>";
|
||||
echo sprintf($frm, $row['short_name'], $row['full_name'], $row['owner_id']);
|
||||
|
@ -6,59 +6,59 @@
|
||||
* One file to rule 'em all!
|
||||
*/
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Database\Db;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once 'functions.php';
|
||||
if (!empty($_GET['teleport']) && $user->getAdmin() == 1) {
|
||||
DBPDO::$db->execute('update users, online set users.room = 20, online.room = 20 where user_id = id and user_id = ?', User::$current->getId());
|
||||
if (!empty($_GET['teleport']) && User::getInstance()->getAdmin() == 1) {
|
||||
Db::getInstance()->execute('update users, online set users.room = 20, online.room = 20 where user_id = id and user_id = ?', User::getInstance()->getId());
|
||||
}
|
||||
|
||||
# ORDEN PHP
|
||||
$_POST['use'] ??= null;
|
||||
if ($user->getAdmin()) {
|
||||
$abil = DBPDO::$db->fetch('SELECT 1 FROM users WHERE id = ?i', $user->getId());
|
||||
if (User::getInstance()->getAdmin()) {
|
||||
$abil = Db::getInstance()->execute('SELECT 1 FROM users WHERE id = ?i', User::getInstance()->getId())->fetchColumn();
|
||||
//$abil = unserialize($abil['abil']);
|
||||
switch ($_POST['use']) {
|
||||
case "healing":
|
||||
include("./magic/Healing.php");
|
||||
break;
|
||||
case "ct1":
|
||||
if ($abil[0] > 0 && $user->getAlign() == 6) {
|
||||
if ($abil[0] > 0 && User::getInstance()->getAlign() == 6) {
|
||||
//Заменён на CureInjury.php class. Придумать вызов.
|
||||
//include("./magic/ct1.php");
|
||||
if ($outok == 1) {
|
||||
$abil[0] -= 1;
|
||||
db::c()->query('UPDATE users SET abil = "?s" WHERE id = ?i', serialize($abil), $user->getId());
|
||||
db::c()->query('UPDATE users SET abil = "?s" WHERE id = ?i', serialize($abil), User::getInstance()->getId());
|
||||
}
|
||||
} elseif ($user->getAlign() != 6) {
|
||||
} elseif (User::getInstance()->getAlign() != 6) {
|
||||
//Заменён на CureInjury.php class. Придумать вызов.
|
||||
//include("./magic/ct1.php");
|
||||
}
|
||||
break;
|
||||
case "ct2":
|
||||
if ($abil[1] > 0 && $user->getAlign() == 6) {
|
||||
if ($abil[1] > 0 && User::getInstance()->getAlign() == 6) {
|
||||
//Заменён на CureInjury.php class. Придумать вызов.
|
||||
//include("./magic/ct2.php");
|
||||
if ($outok == 1) {
|
||||
$abil[1] -= 1;
|
||||
db::c()->query('UPDATE users SET abil = "?s" WHERE id = ?i', serialize($abil), $user->getId());
|
||||
db::c()->query('UPDATE users SET abil = "?s" WHERE id = ?i', serialize($abil), User::getInstance()->getId());
|
||||
}
|
||||
} elseif ($user->getAlign() != 6) {
|
||||
} elseif (User::getInstance()->getAlign() != 6) {
|
||||
//Заменён на CureInjury.php class. Придумать вызов.
|
||||
//include("./magic/ct2.php");
|
||||
}
|
||||
break;
|
||||
case "ct3":
|
||||
if ($abil[2] > 0 && $user->getAlign() == 6) {
|
||||
if ($abil[2] > 0 && User::getInstance()->getAlign() == 6) {
|
||||
//Заменён на CureInjury.php class. Придумать вызов.
|
||||
//include("./magic/ct3.php");
|
||||
if ($outok == 1) {
|
||||
$abil[2] -= 1;
|
||||
db::c()->query('UPDATE users SET abil = "?s" WHERE id = ?i', serialize($abil), $user->getId());
|
||||
db::c()->query('UPDATE users SET abil = "?s" WHERE id = ?i', serialize($abil), User::getInstance()->getId());
|
||||
}
|
||||
} elseif ($user->getAlign() != 6) {
|
||||
} elseif (User::getInstance()->getAlign() != 6) {
|
||||
//Заменён на CureInjury.php class. Придумать вызов.
|
||||
//include("./magic/ct3.php");
|
||||
}
|
||||
@ -82,11 +82,11 @@ if ($user->getAdmin()) {
|
||||
break;
|
||||
|
||||
case "attackk_close":
|
||||
if ($abil[1] > 0 && $user->getAlign() == 2) {
|
||||
if ($abil[1] > 0 && User::getInstance()->getAlign() == 2) {
|
||||
include("./magic/attackk_close.php");
|
||||
if ($outok == 1) {
|
||||
$abil[1] -= 1;
|
||||
db::c()->query('UPDATE users SET abil = "?s" WHERE id = ?i', serialize($abil), $user->getId());
|
||||
db::c()->query('UPDATE users SET abil = "?s" WHERE id = ?i', serialize($abil), User::getInstance()->getId());
|
||||
header("Location:fbattle.php");
|
||||
exit();
|
||||
}
|
||||
@ -98,11 +98,11 @@ if ($user->getAdmin()) {
|
||||
break;
|
||||
|
||||
case "attackk_open":
|
||||
if ($abil[1] > 0 && $user->getAlign() == 2) {
|
||||
if ($abil[1] > 0 && User::getInstance()->getAlign() == 2) {
|
||||
include("./magic/attackk_open.php");
|
||||
if ($outok == 1) {
|
||||
$abil[2] -= 1;
|
||||
db::c()->query('UPDATE users SET abil = "?s" WHERE id = ?i', serialize($abil), $user->getId());
|
||||
db::c()->query('UPDATE users SET abil = "?s" WHERE id = ?i', serialize($abil), User::getInstance()->getId());
|
||||
header("Location:fbattle.php");
|
||||
exit();
|
||||
}
|
||||
@ -175,9 +175,9 @@ function show_byu($type)
|
||||
34 => 'mirror',
|
||||
35 => 'antimirror',
|
||||
];
|
||||
if ($user->getClan()) {
|
||||
$clan = db::c()->query('SELECT owner_id FROM clans WHERE short_name = "?s"', $user->getClan())->fetch_assoc();
|
||||
if ($clan['owner_id'] == $user->getId()) {
|
||||
if (User::getInstance()->getClan()) {
|
||||
$clan = db::c()->query('SELECT owner_id FROM clans WHERE short_name = "?s"', User::getInstance()->getClan())->fetch_assoc();
|
||||
if ($clan['owner_id'] == User::getInstance()->getId()) {
|
||||
$r = '<div style="text-align: center;"><a href="javascript:void(0);" class="byu_klan" id="' . $type . '">купить 1 шт.</a></div>';
|
||||
} else {
|
||||
$r = '<div style="text-align: center;"><a href="javascript:void(0);">Вы не глава</a></div>';
|
||||
@ -216,7 +216,7 @@ echo <<<RELICTS
|
||||
<button disabled>clone</button>
|
||||
<button disabled>unclone</button>
|
||||
RELICTS;
|
||||
if ($user->getAdmin()) {
|
||||
if (User::getInstance()->getAdmin()) {
|
||||
echo <<<A
|
||||
<button onclick="location.href='?teleport=1'">Телепорт на ЦП</button>
|
||||
A;
|
||||
@ -229,7 +229,7 @@ A;
|
||||
<div style="text-align: center;" id=hint3></div>
|
||||
<div>
|
||||
<?php
|
||||
if ($user->getAlign() == 2 || $user->getAdmin()) // Нейтралы
|
||||
if (User::getInstance()->getAlign() == 2 || User::getInstance()->getAdmin()) // Нейтралы
|
||||
{
|
||||
|
||||
$abil = db::c()->query('SELECT 1 FROM `users` WHERE `id`= ?i', $_SESSION['uid'])->fetch_assoc();
|
||||
@ -245,7 +245,7 @@ A;
|
||||
echo("<img src='i/magic/attackk_open.gif' title='Кулачное закрытое нападение'> Кулачное закрытое нападение - " . $abil[2] . "<br />");
|
||||
}
|
||||
|
||||
if ($user->getAlign() == 6 || $user->getAdmin()) // Свет
|
||||
if (User::getInstance()->getAlign() == 6 || User::getInstance()->getAdmin()) // Свет
|
||||
{
|
||||
|
||||
$abil = db::c()->query('SELECT 1 FROM `users` WHERE `id`= ?i', $_SESSION['uid'])->fetch_assoc();
|
||||
@ -449,7 +449,7 @@ A;
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'fancy/buy.php',
|
||||
data: "type=" + type + "&user=" + <?= $user->getId() ?> + "",
|
||||
data: "type=" + type + "&user=" + <?= User::getInstance()->getId() ?> + "",
|
||||
success: function (data) {
|
||||
if (data === 'success') {
|
||||
$(".child").html('<b style="color: Red;">' + types_user[type - 1] + ' успешно куплено</b>');
|
||||
@ -469,7 +469,7 @@ A;
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'fancy/buy_klan.php',
|
||||
data: "type=" + type + "&user=" + <?= $user->getId() ?> + "",
|
||||
data: "type=" + type + "&user=" + <?= User::getInstance()->getId() ?> + "",
|
||||
success: function (data) {
|
||||
if (data === 'success') {
|
||||
$(".child").html('<b style="color: Red;">' + types_klan[type - 21] + ' успешно куплено</b>');
|
||||
|
@ -17,18 +17,18 @@ if ($name || $hobbie) {
|
||||
err('Максимальная длинна поля Хобби: ' . User::INFO_CHAR_LIMIT . ' символов!');
|
||||
} else {
|
||||
if ($name) {
|
||||
$user->setRealname($name);
|
||||
User::getInstance()->setRealname($name);
|
||||
}
|
||||
if ($hobbie) {
|
||||
$user->setInfo($hobbie);
|
||||
User::getInstance()->setInfo($hobbie);
|
||||
}
|
||||
$user->saveUser();
|
||||
User::getInstance()->saveUser();
|
||||
}
|
||||
}
|
||||
if ($oldpsw && $newpsw) {
|
||||
if (password_verify($oldpsw, $user->getPass())) {
|
||||
$user->setPass(password_hash($newpsw, PASSWORD_DEFAULT));
|
||||
$user->saveUser();
|
||||
if (password_verify($oldpsw, User::getInstance()->getPass())) {
|
||||
User::getInstance()->setPass(password_hash($newpsw, PASSWORD_DEFAULT));
|
||||
User::getInstance()->saveUser();
|
||||
} else {
|
||||
err('Неверный текущий пароль!');
|
||||
}
|
||||
@ -36,13 +36,13 @@ if ($oldpsw && $newpsw) {
|
||||
Template::header('Анкета');
|
||||
?>
|
||||
<a href="main.php">← на главную</a>
|
||||
<h1>Анкета персонажа <?= $user->getLogin() ?></h1>
|
||||
<h1>Анкета персонажа <?= User::getInstance()->getLogin() ?></h1>
|
||||
<form method="post">
|
||||
<label>
|
||||
<input name="name" placeholder="Реальное имя" value="<?= $user->getRealname() ?>">
|
||||
<input name="name" placeholder="Реальное имя" value="<?= User::getInstance()->getRealname() ?>">
|
||||
Реальное имя
|
||||
</label><br>
|
||||
<textarea name="hobbie" placeholder="Хобби"><?= $user->getInfo() ?></textarea><br>
|
||||
<textarea name="hobbie" placeholder="Хобби"><?= User::getInstance()->getInfo() ?></textarea><br>
|
||||
<input name="submit" type="submit">
|
||||
</form>
|
||||
<h1>Безопасность</h1>
|
||||
|
5
vxod.php
5
vxod.php
@ -1,14 +1,15 @@
|
||||
<?php
|
||||
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once "functions.php";
|
||||
if ($user->getLevel() < 4 && $user->getLevel() > 10) {
|
||||
if (User::getInstance()->getLevel() < 4 && User::getInstance()->getLevel() > 10) {
|
||||
header('location: main.php?act=none');
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($user->getRoom() == 403) {
|
||||
if (User::getInstance()->getRoom() == 403) {
|
||||
header('Location: canalizaciya.php');
|
||||
exit;
|
||||
}
|
||||
|
@ -5,8 +5,10 @@ use Battles\DressedItems;
|
||||
use Battles\GameLogs;
|
||||
use Battles\Nick;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
require_once "functions.php";
|
||||
$user = User::getInstance();
|
||||
try {
|
||||
db::c()->query('LOCK TABLES `bots` WRITE, `battle` WRITE, `logs` WRITE, `users` WRITE, `inventory` WRITE, `zayavka` WRITE, `effects` WRITE, `online` WRITE, `clans` WRITE');
|
||||
} catch (Exception $e) {
|
||||
|
Loading…
Reference in New Issue
Block a user