Куча мелочей, в том числе по #42.
This commit is contained in:
parent
cbbbb8a3c6
commit
1f38e6bd61
@ -8,23 +8,24 @@ session_start();
|
||||
require_once '../functions.php';
|
||||
|
||||
use Battles\Bank;
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\GameConfigs;
|
||||
use Battles\Moderation;
|
||||
use Battles\Nick;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
if (!$user->getAdmin()) {
|
||||
if (!User::$current->getAdmin()) {
|
||||
header("HTTP/1.0 404 Not Found");
|
||||
exit;
|
||||
}
|
||||
if (isset($_GET['sleep'])) {
|
||||
Moderation::muteChat($user->getId(), strtotime('15min'));
|
||||
Moderation::muteChat(User::$current->getId(), strtotime('15min'));
|
||||
}
|
||||
|
||||
if (isset($_POST['ldnick']) && isset($_POST['ldtext'])) {
|
||||
$u = new User($_POST['ldnick']);
|
||||
Moderation::addToUserLog($u->getId(), $_POST['ldtext'], $user->getId());
|
||||
Moderation::addToUserLog($u->getId(), $_POST['ldtext'], User::$current->getId());
|
||||
unset($u);
|
||||
}
|
||||
|
||||
@ -34,7 +35,7 @@ if (isset($_POST['syschatmsg'])) {
|
||||
|
||||
//clans to reg
|
||||
$unregisteredClans = new class {
|
||||
public $db;
|
||||
public DBPDO $db;
|
||||
|
||||
public function getList()
|
||||
{
|
||||
@ -75,7 +76,7 @@ UNREGCLANLIST;
|
||||
$bank::setBankMoney($bank->getMoney() + GameConfigs::CLAN['clan_register_cost'], $id);
|
||||
}
|
||||
};
|
||||
$unregisteredClans->db = $db;
|
||||
$unregisteredClans->db = DBPDO::$db;
|
||||
$unregisteredClans->getList();
|
||||
|
||||
if (isset($_GET['regclan'])) {
|
||||
@ -91,19 +92,15 @@ if (isset($_GET['remclan'])) {
|
||||
|
||||
# Телеграф.
|
||||
if (!empty($_POST['receiver']) && !empty($_POST['tgmsg'])) {
|
||||
$receiver = $db->ofetch('SELECT id FROM users WHERE login= ?', $_POST['receiver']);
|
||||
$receiver = DBPDO::$db->ofetch('SELECT id FROM users WHERE login= ?', $_POST['receiver']);
|
||||
telegraph($receiver->id, $_POST['tgmsg']);
|
||||
echo "Успешно.";
|
||||
}
|
||||
# Показывает невидимок.
|
||||
$row = $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');
|
||||
$i = 0;
|
||||
$invisList = '';
|
||||
while ($i < count($row)) {
|
||||
$invisList .= '<b>[id] = ' . $row[$i]->id . ', ' . $row[$i]->login . ' </b><br>';
|
||||
$i++;
|
||||
$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');
|
||||
foreach ($row as $r) {
|
||||
$invisList .= '<b>[id] = ' .$r->id. ', ' .$r->login. '</b><br>';
|
||||
}
|
||||
unset($i);
|
||||
|
||||
|
||||
Template::header('ᐰdminка');
|
||||
|
1
bank.php
1
bank.php
@ -6,7 +6,6 @@ use Battles\Rooms;
|
||||
use Battles\Template;
|
||||
use Exceptions\GameException;
|
||||
|
||||
ob_start("ob_gzhandler");
|
||||
session_start();
|
||||
require_once "functions.php";
|
||||
const SUCCESS = "Успешная операция!";
|
||||
|
12
clan.php
12
clan.php
@ -5,17 +5,17 @@ use Battles\GameConfigs;
|
||||
use Battles\Nick;
|
||||
use Battles\Rooms;
|
||||
use Battles\Template;
|
||||
use Battles\User;
|
||||
|
||||
session_start();
|
||||
require_once 'functions.php';
|
||||
|
||||
if (!$user->getClan()) {
|
||||
if (!User::$current->getClan()) {
|
||||
exit('Ошибка! Вы не состоите в клане!');
|
||||
}
|
||||
|
||||
Clan::$current = new Clan($user, $db);
|
||||
if ($user->getClan() != Clan::$current->getClanShortName()) {
|
||||
exit('Ошибка! Клана ' . $user->getClan() . ' не существует!');
|
||||
Clan::$current = new Clan();
|
||||
if (User::$current->getClan() != Clan::$current->getClanShortName()) {
|
||||
exit('Ошибка! Клана ' . User::$current->getClan() . ' не существует!');
|
||||
}
|
||||
|
||||
Template::header('clan');
|
||||
@ -65,7 +65,7 @@ Template::header('clan');
|
||||
<h3><img src="./i/clan/<?= Clan::$current->getClanShortName() ?>.png"
|
||||
alt="<?= Clan::$current->getClanShortName() ?>"><?= Clan::$current->getClanName() ?></h3>
|
||||
|
||||
<?php if (Clan::$current->getClanOwnerId() === $user->getId()): ?>
|
||||
<?php if (Clan::$current->getClanOwnerId() === User::$current->getId()): ?>
|
||||
<div>
|
||||
<span id="add_member">
|
||||
<input type="submit" onclick="use('add_member')" value="Принять в клан">
|
||||
|
@ -17,7 +17,7 @@ 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);
|
||||
$errorMessage = [];
|
||||
if (GameConfigs::CLAN_REGISTER_LOCK) {
|
||||
if (GameConfigs::CLAN['clan_register_lock']) {
|
||||
$errorMessage[10] = 'Регистрация кланов закрыта! <BR>';
|
||||
}
|
||||
if ($user->getAlign()) {
|
||||
@ -26,7 +26,7 @@ if ($clanFullName && $clanShortName && $clanInfo && !$userClan) {
|
||||
if ($user->getClan()) {
|
||||
$errorMessage[1] = 'Вы уже состоите в клане!. <BR>';
|
||||
}
|
||||
if (GameConfigs::CLAN_REGISTER_COST >= $userBank->getMoney()) {
|
||||
if (GameConfigs::CLAN['clan_register_cost'] >= $userBank->getMoney()) {
|
||||
$errorMessage[2] = 'Не хватает денег на регистрацию клана. <BR>';
|
||||
}
|
||||
if (!$eff) {
|
||||
@ -38,7 +38,7 @@ if ($clanFullName && $clanShortName && $clanInfo && !$userClan) {
|
||||
if (!$errorMessage || $user->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);
|
||||
$userBank->setMoney($userBank->getMoney() - GameConfigs::CLAN_REGISTER_COST);
|
||||
$userBank->setMoney($userBank->getMoney() - GameConfigs::CLAN['clan_register_cost']);
|
||||
Battles\Bank::setBankMoney($userBank->getMoney(), $user->getId(), 'clanRegister');
|
||||
// Заглушка для отображения данных по только что зарегистрированному клану, когда запрос в базу в начале файла ещё не проходит.
|
||||
$userClan = new stdClass();
|
||||
|
@ -28,6 +28,7 @@ class Bank
|
||||
'depositMoney' => 'Пополнение счёта.',
|
||||
'withdrawMoney' => 'Снятие денег со счёта.',
|
||||
'clanRegister' => 'Оплата стоимости регистрации клана.',
|
||||
'sellShop' => 'Продажа товара в магазине.'
|
||||
];
|
||||
|
||||
public function __construct(int $user_id)
|
||||
@ -214,12 +215,9 @@ class Bank
|
||||
*/
|
||||
public static function setWalletMoney(int $amount, int $user_id): void
|
||||
{
|
||||
try {
|
||||
self::$db->execute('UPDATE users SET money = ? WHERE id = ?', [$amount, $user_id]);
|
||||
} catch (Throwable $e) {
|
||||
echo "Не отработал запрос в БД в файле {$e->getFile()}({$e->getLine()})";
|
||||
}
|
||||
|
||||
$u = new User($user_id);
|
||||
$u->setMoney($amount);
|
||||
$u->saveMoney();
|
||||
}
|
||||
|
||||
public function getMoney(): int
|
||||
|
28
classes/Battles/Check.php
Normal file
28
classes/Battles/Check.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
# Date: 15.03.2021 (21:53)
|
||||
|
||||
namespace Battles;
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
|
||||
class Check
|
||||
{
|
||||
private User $user;
|
||||
private DBPDO $db;
|
||||
|
||||
/**
|
||||
* Check constructor.
|
||||
*
|
||||
* @param User $user
|
||||
*/
|
||||
public function __construct(User $user, DBPDO $db)
|
||||
{
|
||||
$this->user = $user;
|
||||
$this->db = $db;
|
||||
}
|
||||
|
||||
public function Effects()
|
||||
{
|
||||
return $this->db->execute('delete from users_effects where remaining_time <= ?', strtotime('now'));
|
||||
}
|
||||
}
|
@ -11,24 +11,24 @@ class Clan
|
||||
private $clan;
|
||||
public static Clan $current;
|
||||
|
||||
public function __construct(User $user, DBPDO $db)
|
||||
public function __construct()
|
||||
{
|
||||
$this->db = $db;
|
||||
$this->user = $user;
|
||||
$this->db = DBPDO::$db;
|
||||
$this->user = User::$current;
|
||||
$this->clan = $this->db->ofetch('select * from clans where owner_id = ?', $this->user->getId());
|
||||
}
|
||||
|
||||
public function addMember(string $login): string
|
||||
{
|
||||
$target = new User($login);
|
||||
$error = null;
|
||||
$check = $this->db->ofetch('select id, level, clan from users where login = ?', $login);
|
||||
if (!$this->getProverka($check->id)) {
|
||||
if (!$this->getProverka($target->getId())) {
|
||||
$error .= '<br>Нет проверки!';
|
||||
}
|
||||
if ($check->clan) {
|
||||
if ($target->getClan()) {
|
||||
$error .= '<br>Персонаж уже состоит в клане!';
|
||||
}
|
||||
if ($check->level < 1) {
|
||||
if ($target->getLevel() < 1) {
|
||||
$error .= '<br>Персонаж 0 уровня не может быть принят!';
|
||||
}
|
||||
if ($this->user->getMoney() < GameConfigs::CLAN['add_member_cost']) {
|
||||
@ -39,21 +39,21 @@ class Clan
|
||||
}
|
||||
$this->user->setMoney($this->user->getMoney() - GameConfigs::CLAN['add_member_cost']);
|
||||
$this->user->saveMoney();
|
||||
$this->db->execute('update users set clan = ? where id = ?', [$this->user->getClan(), $check->id]);
|
||||
$target->setClan($this->user->getClan());
|
||||
return "Персонаж «{$login}» успешно принят в клан.";
|
||||
}
|
||||
|
||||
public function removeMember(string $login): string
|
||||
{
|
||||
$target = new User($login);
|
||||
$error = null;
|
||||
$check = $this->db->ofetch('select id, clan from users where login = ?', $login);
|
||||
if ($this->user->getMoney() < GameConfigs::CLAN['remove_member_cost']) {
|
||||
$error .= '<br>Недостаточно денег!';
|
||||
}
|
||||
if ($check->id === $this->user->getId()) {
|
||||
if ($target->getId() === $this->user->getId()) {
|
||||
$error .= '<br>Себя выгонять нельзя!';
|
||||
}
|
||||
if ($check->clan !== $this->user->getClan()) {
|
||||
if ($target->getClan() !== $this->user->getClan()) {
|
||||
$error .= '<br>Персонаж не состоит в этом клане!';
|
||||
}
|
||||
if ($error) {
|
||||
@ -61,28 +61,28 @@ class Clan
|
||||
}
|
||||
$this->user->setMoney($this->user->getMoney() - GameConfigs::CLAN['remove_member_cost']);
|
||||
$this->user->saveMoney();
|
||||
$this->db->execute('update users set clan = null where id = ?', $check->id);
|
||||
$target->setClan(null);
|
||||
return "Персонаж «{$login}» покинул клан.";
|
||||
}
|
||||
|
||||
public function changeOwner(string $login): string
|
||||
{
|
||||
$target = new User($login);
|
||||
$error = null;
|
||||
$check = $this->db->ofetch('select id, clan from users where login = ?', $login);
|
||||
if ($check->id === $this->user->getId()) {
|
||||
if ($target->getId() === $this->user->getId()) {
|
||||
$error .= '<br>Самоудовлетворяетесь? ;)';
|
||||
}
|
||||
if ($check->clan !== $this->user->getClan()) {
|
||||
if ($target->getClan() !== $this->user->getClan()) {
|
||||
$error .= '<br>Персонаж не состоит в этом клане!';
|
||||
}
|
||||
if ($error) {
|
||||
return $error;
|
||||
}
|
||||
$this->db->execute('update clans set owner_id = ? where owner_id = ?', [$check->id, $this->user->getId()]);
|
||||
$this->db->execute('update clans set owner_id = ? where owner_id = ?', [$target->getId(), $this->user->getId()]);
|
||||
return 'Вы передали управление кланом персонажу «' . $login . '».';
|
||||
}
|
||||
|
||||
public function setClanInfo(string $text)
|
||||
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()) {
|
||||
@ -94,8 +94,7 @@ class Clan
|
||||
|
||||
public function getMemberlist(): array
|
||||
{
|
||||
$query = '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';
|
||||
return $this->db->ofetchAll($query, $this->user->getClan());
|
||||
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());
|
||||
}
|
||||
|
||||
private function getProverka($user_id)
|
||||
|
@ -9,6 +9,7 @@ class DBPDO
|
||||
|
||||
public $pdo;
|
||||
private static $_instance = null;
|
||||
public static DBPDO $db;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
|
@ -10,7 +10,7 @@ use Battles\User;
|
||||
|
||||
class Sharpen extends Magic
|
||||
{
|
||||
private $magicDifficulty;
|
||||
private int $magicDifficulty;
|
||||
|
||||
/**
|
||||
* Sharpen constructor.
|
||||
|
@ -15,72 +15,72 @@ class Moderation
|
||||
GameLogs::addUserLog($userId, $message, "moderation");
|
||||
}
|
||||
|
||||
public static function muteChat(int $target, int $time): bool
|
||||
public static function muteChat(int $target, int $time)
|
||||
{
|
||||
self::addEffectStatusToUserLog($target, UserEffects::$effectName[2]);
|
||||
return User::setUserEffect($target, 2, UserEffects::$effectName[2], $time);
|
||||
User::addUserEffect($target, 2, UserEffects::$effectName[2], $time);
|
||||
}
|
||||
|
||||
public static function unmuteChat(int $target): bool
|
||||
public static function unmuteChat(int $target)
|
||||
{
|
||||
self::addEffectStatusToUserLog($target, UserEffects::$effectName[2] . self::STATUS_OFF);
|
||||
return User::removeUserEffect($target, 2);
|
||||
User::removeUserEffect($target, 2);
|
||||
}
|
||||
|
||||
public static function muteForum(int $target, int $time): bool
|
||||
public static function muteForum(int $target, int $time)
|
||||
{
|
||||
self::addEffectStatusToUserLog($target, UserEffects::$effectName[3]);
|
||||
return User::setUserEffect($target, 3, UserEffects::$effectName[3], $time);
|
||||
User::addUserEffect($target, 3, UserEffects::$effectName[3], $time);
|
||||
}
|
||||
|
||||
public static function unmuteForum(int $target): bool
|
||||
public static function unmuteForum(int $target)
|
||||
{
|
||||
self::addEffectStatusToUserLog($target, UserEffects::$effectName[3] . self::STATUS_OFF);
|
||||
return User::removeUserEffect($target, 3);
|
||||
User::removeUserEffect($target, 3);
|
||||
}
|
||||
|
||||
public static function hideUserInfo(int $target, int $time): bool
|
||||
public static function hideUserInfo(int $target, int $time)
|
||||
{
|
||||
self::addEffectStatusToUserLog($target, UserEffects::$effectName[5]);
|
||||
return User::setUserEffect($target, 5, UserEffects::$effectName[5], $time);
|
||||
User::addUserEffect($target, 5, UserEffects::$effectName[5], $time);
|
||||
}
|
||||
|
||||
public static function unHideUserInfo(int $target): bool
|
||||
public static function unHideUserInfo(int $target)
|
||||
{
|
||||
self::addEffectStatusToUserLog($target, UserEffects::$effectName[5] . self::STATUS_OFF);
|
||||
return User::removeUserEffect($target, 5);
|
||||
User::removeUserEffect($target, 5);
|
||||
}
|
||||
|
||||
public static function blockUser(int $target): void
|
||||
public static function blockUser(int $target)
|
||||
{
|
||||
self::addEffectStatusToUserLog($target, "Блокировка");
|
||||
DBPDO::INIT()->execute('UPDATE battles.users SET block = 1 WHERE id = ?', $target);
|
||||
}
|
||||
|
||||
public static function unBlockUser(int $target): void
|
||||
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);
|
||||
}
|
||||
|
||||
public static function addToUserLog(int $target, string $message, int $senderId): void
|
||||
public static function addToUserLog(int $target, string $message, int $senderId)
|
||||
{
|
||||
GameLogs::addUserLog($target, $message, "moderation", $senderId);
|
||||
}
|
||||
|
||||
public static function setAlign(int $target, int $align): void
|
||||
public static function setAlign(int $target, int $align)
|
||||
{
|
||||
DBPDO::INIT()->execute('UPDATE users SET align = ? WHERE id = ?', [$align, $target]);
|
||||
}
|
||||
|
||||
public static function addChatSysMsg(string $message): void
|
||||
public static function addChatSysMsg(string $message)
|
||||
{
|
||||
DBPDO::INIT()->execute('INSERT INTO chat (user_id,msg,type) VALUES (-1,?,?)', [$message, 'sys']);
|
||||
}
|
||||
|
||||
public static function addUserCheck(int $target): bool
|
||||
public static function addUserCheck(int $target)
|
||||
{
|
||||
self::addEffectStatusToUserLog($target, UserEffects::$effectName[20]);
|
||||
return User::setUserEffect($target, 20, UserEffects::$effectName[20], strtotime('3days'));
|
||||
User::addUserEffect($target, 20, UserEffects::$effectName[20], strtotime('3days'));
|
||||
}
|
||||
}
|
@ -91,6 +91,7 @@ SQL;
|
||||
echo "<img src='/i/sh/$this->image' class='item-wrap-normal' alt=''>";
|
||||
}
|
||||
|
||||
//todo наличка после покупки отображается с задержкой.
|
||||
public static function buyItem($id, User $buyer): string
|
||||
{
|
||||
$db = new DBPDO();
|
||||
|
@ -6,38 +6,49 @@ use Battles\Database\DBPDO;
|
||||
|
||||
class User
|
||||
{
|
||||
protected $id = 0;
|
||||
protected $login = '<em>Некто</em>';
|
||||
protected $pass;
|
||||
protected $email = '<em>неизвестно</em>';
|
||||
protected $realname;
|
||||
protected $borndate;
|
||||
protected $info;
|
||||
protected $level;
|
||||
protected $align;
|
||||
protected $clan;
|
||||
protected $money;
|
||||
protected $ip = 0;
|
||||
protected int $id = 0;
|
||||
protected string $login = '';
|
||||
protected ?string $pass = null;
|
||||
protected ?string $email = null;
|
||||
protected ?string $realname = null;
|
||||
protected ?string $borndate = null;
|
||||
protected ?string $info = null;
|
||||
protected int $level = 0;
|
||||
protected ?int $align = null;
|
||||
protected ?string $clan = null;
|
||||
protected ?int $money = null;
|
||||
protected ?string $ip = null;
|
||||
|
||||
protected $admin = 0;
|
||||
protected $enter_game;
|
||||
protected $room;
|
||||
protected $block;
|
||||
protected $shadow;
|
||||
protected ?int $admin = null;
|
||||
protected int $room = 0;
|
||||
protected int $block = 0;
|
||||
protected string $shadow = '';
|
||||
|
||||
// Пока несуществующие, для совместимости.
|
||||
protected $experience = 200;
|
||||
protected $battle = 0;
|
||||
protected $in_tower = 0; // Скорее башню похороним чем запустим...
|
||||
protected $zayavka = 0;
|
||||
protected static $db;
|
||||
protected int $experience = 0;
|
||||
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)
|
||||
{
|
||||
self::$db = DBPDO::INIT();
|
||||
$user_query = self::$db->fetch('SELECT * FROM users WHERE id = ? OR login = ?', [$user, $user]);
|
||||
$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);
|
||||
foreach ($this as $key => $value) {
|
||||
if (isset($user_query[$key])) {
|
||||
$this->$key = $user_query[$key];
|
||||
@ -51,12 +62,11 @@ class User
|
||||
* @param string $name
|
||||
* @param int $time
|
||||
* @param string|null $json_modifiers_list (str, dex, int, end, intel, wis).
|
||||
* @return bool
|
||||
*/
|
||||
public static function setUserEffect(int $userId, int $type, string $name, int $time, string $json_modifiers_list = null): bool
|
||||
public static function addUserEffect(int $userId, int $type, string $name, int $time, string $json_modifiers_list = null)
|
||||
{
|
||||
$mods = json_decode($json_modifiers_list);
|
||||
return 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]);
|
||||
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]);
|
||||
}
|
||||
|
||||
public static function removeUserEffect(int $userId, int $type): bool
|
||||
@ -67,34 +77,17 @@ class User
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getId(): int
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getLogin(): string
|
||||
{
|
||||
return $this->login;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $login
|
||||
*/
|
||||
public function setLogin(string $login): void
|
||||
{
|
||||
$this->login = $login;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getPass()
|
||||
public function getPass(): string
|
||||
{
|
||||
return $this->pass;
|
||||
}
|
||||
@ -112,26 +105,7 @@ class User
|
||||
self::$db->execute('UPDATE users SET pass = ? WHERE id = ?', [$this->pass, $this->id]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getEmail(): string
|
||||
{
|
||||
return $this->email;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $email
|
||||
*/
|
||||
public function setEmail(string $email): void
|
||||
{
|
||||
$this->email = $email;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getRealname()
|
||||
public function getRealname(): string
|
||||
{
|
||||
return $this->realname;
|
||||
}
|
||||
@ -144,26 +118,7 @@ class User
|
||||
$this->realname = $realname;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getBorndate()
|
||||
{
|
||||
return $this->borndate;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $borndate
|
||||
*/
|
||||
public function setBorndate($borndate): void
|
||||
{
|
||||
$this->borndate = $borndate;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getInfo()
|
||||
public function getInfo(): string
|
||||
{
|
||||
return $this->info;
|
||||
}
|
||||
@ -171,71 +126,46 @@ class User
|
||||
/**
|
||||
* @param mixed $info
|
||||
*/
|
||||
public function setInfo($info): void
|
||||
public function setInfo($info)
|
||||
{
|
||||
$this->info = $info;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getLevel(): int
|
||||
{
|
||||
return $this->level;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $level
|
||||
*/
|
||||
public function setLevel(int $level): void
|
||||
{
|
||||
$this->level = $level;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getAlign(): int
|
||||
{
|
||||
return $this->align;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $align
|
||||
*/
|
||||
public function setAlign(int $align): void
|
||||
{
|
||||
$this->align = $align;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getClan(): string
|
||||
public function getClan(): ?string
|
||||
{
|
||||
return $this->clan;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $clan
|
||||
* @param string|null $short_name Короткое название клана. Передать null для очистки.
|
||||
*/
|
||||
public function setClan(string $clan): void
|
||||
public function setClan(?string $short_name)
|
||||
{
|
||||
$this->clan = $clan;
|
||||
if (is_null($short_name)) {
|
||||
$this->clan = null;
|
||||
self::$db->execute('update users set clan = null where id = ?', $this->id);
|
||||
} else {
|
||||
$this->clan = $short_name;
|
||||
self::$db->execute('update users set clan = ? where id = ?', [$short_name, $this->id]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getMoney(): int
|
||||
{
|
||||
return $this->money;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $money
|
||||
*/
|
||||
public function setMoney(int $money): void
|
||||
public function setMoney(int $money)
|
||||
{
|
||||
$this->money = $money < 0 ? 0 : $money;
|
||||
}
|
||||
@ -245,52 +175,12 @@ class User
|
||||
self::$db->execute('update users set money = ? where id = ?', [$this->money, $this->id]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getIp()
|
||||
{
|
||||
return $this->ip;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $ip
|
||||
*/
|
||||
public function setIp($ip): void
|
||||
{
|
||||
$this->ip = $ip;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getAdmin(): int
|
||||
{
|
||||
return $this->admin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getEnterGame()
|
||||
{
|
||||
return $this->enter_game;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $enter_game
|
||||
*/
|
||||
public function setEnterGame($enter_game): void
|
||||
{
|
||||
$this->enter_game = $enter_game;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getRoom()
|
||||
public function getRoom(): int
|
||||
{
|
||||
return $this->room;
|
||||
}
|
||||
@ -298,31 +188,17 @@ class User
|
||||
/**
|
||||
* @param mixed $room
|
||||
*/
|
||||
public function setRoom($room): void
|
||||
public function setRoom($room)
|
||||
{
|
||||
$this->room = $room;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getBlock()
|
||||
public function getBlock(): int
|
||||
{
|
||||
return $this->block;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $block
|
||||
*/
|
||||
public function setBlock($block): void
|
||||
{
|
||||
$this->block = $block;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getShadow()
|
||||
public function getShadow(): string
|
||||
{
|
||||
return $this->shadow;
|
||||
}
|
||||
@ -346,70 +222,26 @@ class User
|
||||
self::$db->execute('UPDATE users SET shadow = ? WHERE id = ?', [$this->shadow, $this->id]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getExperience(): int
|
||||
{
|
||||
return $this->experience;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $experience
|
||||
*/
|
||||
public function setExperience(int $experience): void
|
||||
{
|
||||
$this->experience = $experience;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getBattle(): int
|
||||
{
|
||||
return $this->battle;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $battle
|
||||
*/
|
||||
public function setBattle(int $battle): void
|
||||
{
|
||||
$this->battle = $battle;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getInTower(): int
|
||||
{
|
||||
return $this->in_tower;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $in_tower
|
||||
*/
|
||||
public function setInTower(int $in_tower): void
|
||||
{
|
||||
$this->in_tower = $in_tower;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getZayavka(): int
|
||||
{
|
||||
return $this->zayavka;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $zayavka
|
||||
*/
|
||||
public function setZayavka(int $zayavka): void
|
||||
{
|
||||
$this->zayavka = $zayavka;
|
||||
}
|
||||
|
||||
public function saveAnketa()
|
||||
{
|
||||
self::$db->execute('UPDATE users SET realname = ?, info = ? WHERE id = ?', [$this->realname, $this->info, $this->id]);
|
||||
@ -434,20 +266,20 @@ class User
|
||||
case 11:
|
||||
shuffle($names1);
|
||||
$name = UserEffects::$effectName[$type] . ': ' . $names1(0);
|
||||
self::setUserEffect($this->id, $type, $name, strtotime('30min'), json_encode([$param_names(0) => -1]));
|
||||
self::addUserEffect($this->id, $type, $name, strtotime('30min'), json_encode([$param_names(0) => -1]));
|
||||
break;
|
||||
case 12:
|
||||
shuffle($names2);
|
||||
$name = UserEffects::$effectName[$type] . ': ' . $names2(0);
|
||||
self::setUserEffect($this->id, $type, $name, strtotime('3hours'), json_encode([$param_names(0) => mt_rand(-3,-1), $param_names(1) => mt_rand(-3,-1)]));
|
||||
self::addUserEffect($this->id, $type, $name, strtotime('3hours'), json_encode([$param_names(0) => mt_rand(-3, -1), $param_names(1) => mt_rand(-3, -1)]));
|
||||
break;
|
||||
case 13:
|
||||
shuffle($names3);
|
||||
$name = UserEffects::$effectName[$type] . ': ' . $names3(0);
|
||||
self::setUserEffect($this->id, $type, $name, strtotime('12hours'), json_encode([$param_names(0) => mt_rand(-5,-1), $param_names(1) => mt_rand(-5,-1), $param_names(2) => mt_rand(-5,-1)]));
|
||||
self::addUserEffect($this->id, $type, $name, strtotime('12hours'), json_encode([$param_names(0) => mt_rand(-5, -1), $param_names(1) => mt_rand(-5, -1), $param_names(2) => mt_rand(-5, -1)]));
|
||||
break;
|
||||
default: //type 14
|
||||
self::setUserEffect($this->id, $type, UserEffects::$effectName[$type], strtotime('1day'), json_encode([$param_names(0) => -10]));
|
||||
self::addUserEffect($this->id, $type, UserEffects::$effectName[$type], strtotime('1day'), json_encode([$param_names(0) => -10]));
|
||||
break;
|
||||
}
|
||||
|
||||
|
Binary file not shown.
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
ob_start("ob_gzhandler");
|
||||
session_start();
|
||||
if (isset($_POST['end'])) {
|
||||
header("Location: main.php");
|
||||
@ -162,7 +161,6 @@ $fbattle = new fbattle($user['battle']);
|
||||
$dressed = db::c()->query('SELECT `id` FROM `inventory` WHERE `id` = ?i AND `dressed` = 1', $_GET['use'])->fetch_row();
|
||||
if ((int)$dressed[0] > 0) {
|
||||
$my_class = $fbattle->my_class;
|
||||
ob_start();
|
||||
usemagic($_GET['use'], "" . $_POST['target']);
|
||||
$bb = explode("<!--", ob_get_clean());
|
||||
$bb = str_replace('"', """, (strip_tags($bb[0])));
|
||||
|
@ -12,18 +12,18 @@ use Battles\Travel;
|
||||
use Battles\User;
|
||||
|
||||
require_once 'config.php';
|
||||
DBPDO::$db = new DBPDO();
|
||||
if (empty($_SESSION['uid'])) {
|
||||
header("Location: index.php");
|
||||
exit;
|
||||
} else {
|
||||
$user = new User($_SESSION['uid']);
|
||||
User::$current = new User($_SESSION['uid']);
|
||||
}
|
||||
if ($user->getId() && $user->getBlock()) {
|
||||
if (User::$current->getId() && User::$current->getBlock()) {
|
||||
exit('user blocked!');
|
||||
}
|
||||
|
||||
$db = new DBPDO();
|
||||
|
||||
/*
|
||||
* Проверки на соответствие скрипта и комнаты, которые были натыканы по всем файлам.
|
||||
*/
|
||||
@ -57,12 +57,12 @@ $fbattleCheckFiles = [
|
||||
'zayavka.php',
|
||||
];
|
||||
//Может просто отовсюду? О_о
|
||||
if ($user->getBattle() && in_array(pathinfo(debug_backtrace()[0]['file'])['basename'], $fbattleCheckFiles)) {
|
||||
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->getInTower() && in_array(pathinfo(debug_backtrace()[0]['file'])['basename'], $towerinCheckFiles)) {
|
||||
if (User::$current->getInTower() && in_array(pathinfo(debug_backtrace()[0]['file'])['basename'], $towerinCheckFiles)) {
|
||||
header('location: towerin.php');
|
||||
exit;
|
||||
}
|
||||
@ -70,8 +70,8 @@ $roomsCheck = [22, 23, 25, 27, 29, 30, 31, 37, 38, 39, 40, 41, 45, 53, 61, 401,
|
||||
// Если я в одной из этих комнат,
|
||||
// [И] Имя файла который инклюдит файл с проверкой не совпадает с именем файла локации в которой я нахожусь
|
||||
// [И] Номер комнаты который я пытаюсь открыть есть в списке проверяемых
|
||||
if (in_array($user->getRoom(), $roomsCheck)
|
||||
&& pathinfo(debug_backtrace()[0]['file'])['basename'] != Travel::$roomFileName[$user->getRoom()]
|
||||
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;
|
||||
@ -80,7 +80,7 @@ if (in_array($user->getRoom(), $roomsCheck)
|
||||
$ip = filter_input(INPUT_SERVER, 'REMOTE_ADDR', FILTER_VALIDATE_IP);
|
||||
if (isset($_GET['goto']) && isset($_GET['tStamp']) && isset($_GET['vcode']) && $_GET['vcode'] == md5(sha1($_GET['goto'] . $_GET['tStamp']))) {
|
||||
db::c()->query('UPDATE `users`,`online` SET `users`.`room` = ?i, `online`.`room` = ?i WHERE `online`.`id` = `users`.`id` AND `online`.`id` = ?i', $_GET['goto'], $_GET['goto'], $_SESSION['uid']);
|
||||
$user->setRoom(intval($_GET['goto']));
|
||||
User::$current->setRoom(intval($_GET['goto']));
|
||||
}
|
||||
|
||||
function createbot($bot, $login = "")
|
||||
@ -139,11 +139,10 @@ function get_out($u)
|
||||
|
||||
function takeshopitem($item, $table = "shop", $present = '', $onlyonetrip = '', $fields = 0, $uid = 0, $koll = 1, $podzem = 0)
|
||||
{
|
||||
global $user;
|
||||
$flds = [];
|
||||
$goden = '';
|
||||
if (!$uid) {
|
||||
$uid = $user->getId();
|
||||
$uid = User::$current->getId();
|
||||
}
|
||||
|
||||
$r = db::c()->query('SHOW FIELDS FROM ?f', $table);
|
||||
@ -290,21 +289,20 @@ HTML;
|
||||
*/
|
||||
function echoscroll($slot)
|
||||
{
|
||||
global $user;
|
||||
$all_magic = 0;
|
||||
if ($user->getBattle()) {
|
||||
if (User::$current->getBattle()) {
|
||||
$script = 'fbattle';
|
||||
$bat = db::c()->query('SELECT `magic` FROM `battle` WHERE `id` = ?i', $user->getBattle())->fetch_assoc();
|
||||
$bat = db::c()->query('SELECT `magic` FROM `battle` WHERE `id` = ?i', User::$current->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->$slot)->fetch_assoc();
|
||||
$dress = db::c()->query('SELECT `id`, `magic`, `name`, `img`, `duration`, `maxdur` FROM `inventory` WHERE `id` = ?i', User::$current->$slot)->fetch_assoc();
|
||||
$need_charge = db::c()->query('SELECT `needcharge` FROM `magic` WHERE `id` = ?i', $dress['magic'])->fetch_assoc();
|
||||
|
||||
if (($user->$slot > 0) && ($all_magic[$user->getId()] < 1 || empty($need_charge['needcharge']))) {
|
||||
$row['id'] = $user->$slot;
|
||||
if ((User::$current->$slot > 0) && ($all_magic[User::$current->getId()] < 1 || empty($need_charge['needcharge']))) {
|
||||
$row['id'] = User::$current->$slot;
|
||||
if ($dress['magic']) {
|
||||
$magic = db::c()->query('SELECT targeted FROM `magic` WHERE `id` = ?i', $dress['magic'])->fetch_assoc();
|
||||
echo "<a onclick=\"";
|
||||
@ -321,7 +319,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->$slot > 0) && ($all_magic[$user->getId()] >= 1) && $need_charge['needcharge'] > 0) {
|
||||
} elseif ((User::$current->$slot > 0) && ($all_magic[User::$current->getId()] >= 1) && $need_charge['needcharge'] > 0) {
|
||||
echo <<<INACTIVE_SCROLL
|
||||
<img src="i/sh/magicclock.gif" width="40" height="25" title='Произведите размен ударами и магия снова станет доступна' alt="Свиток">
|
||||
INACTIVE_SCROLL;
|
||||
@ -474,9 +472,8 @@ function ref_drop()
|
||||
// использовать магию
|
||||
function usemagic($id, $target)
|
||||
{
|
||||
global $user;
|
||||
$row = db::c()->query('SELECT * FROM `inventory` WHERE `owner` = ?i AND id = ?i', $user->getId(), $id)->fetch_assoc_array();
|
||||
$bat = db::c()->query('SELECT * FROM `battle` WHERE `id` = ?i', $user->getBattle())->fetch_assoc_array();
|
||||
$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();
|
||||
$all_magic = unserialize($bat['magic']);
|
||||
$charge = 0;
|
||||
$magic = db::c()->query('SELECT * FROM `magic` WHERE `id` = ?i', $row['magic'])->fetch_assoc_array();
|
||||
@ -490,7 +487,7 @@ function usemagic($id, $target)
|
||||
$charge = $incmagic['needcharge'];
|
||||
}
|
||||
//Переделать под новую базу
|
||||
if (($all_magic[$user->getId()] < 1 || $charge == 0) &&
|
||||
if (($all_magic[User::$current->getId()] < 1 || $charge == 0) &&
|
||||
($user['sila'] >= $row['nsila'] &&
|
||||
$user['lovk'] >= $row['nlovk'] &&
|
||||
$user['inta'] >= $row['ninta'] &&
|
||||
@ -543,16 +540,16 @@ function usemagic($id, $target)
|
||||
$charge = 0;
|
||||
}
|
||||
//ограничение по кол-ву за ход
|
||||
if ($user->getBattle()) {
|
||||
$bat = db::c()->query('SELECT * FROM `battle` WHERE `id` = ?i', $user->getBattle())->fetch_assoc_array();
|
||||
if (User::$current->getBattle()) {
|
||||
$bat = db::c()->query('SELECT * FROM `battle` WHERE `id` = ?i', User::$current->getBattle())->fetch_assoc_array();
|
||||
}
|
||||
if ($bat['magic'] == '') {
|
||||
$all_magic = [];
|
||||
} else {
|
||||
$all_magic = unserialize($bat['magic']);
|
||||
}
|
||||
$all_magic[$user->getId()] += $charge;
|
||||
db::c()->query('UPDATE `battle` SET `magic`= "?s" WHERE id = ?i', serialize($all_magic), $user->getBattle());
|
||||
$all_magic[User::$current->getId()] += $charge;
|
||||
db::c()->query('UPDATE `battle` SET `magic`= "?s" WHERE id = ?i', serialize($all_magic), User::$current->getBattle());
|
||||
}
|
||||
}
|
||||
return false;
|
||||
@ -560,9 +557,8 @@ function usemagic($id, $target)
|
||||
|
||||
function addch($text, $room = 0)
|
||||
{
|
||||
global $user;
|
||||
if ($room == 0) {
|
||||
$room = $user->getRoom();
|
||||
$room = User::$current->getRoom();
|
||||
}
|
||||
if ($fp = @fopen("tmp/chat.txt", "a")) { //открытие
|
||||
flock($fp, LOCK_EX); //БЛОКИРОВКА ФАЙЛА
|
||||
@ -576,9 +572,8 @@ function addch($text, $room = 0)
|
||||
|
||||
function addchp($text, $who, $room = 0)
|
||||
{
|
||||
global $user;
|
||||
if ($room == 0) {
|
||||
$room = $user->getRoom();
|
||||
$room = User::$current->getRoom();
|
||||
}
|
||||
$fp = fopen("tmp/chat.txt", "a"); //открытие
|
||||
flock($fp, LOCK_EX); //БЛОКИРОВКА ФАЙЛА
|
||||
@ -615,18 +610,15 @@ function err($t)
|
||||
*/
|
||||
function telegraph(int $userId, string $text)
|
||||
{
|
||||
$db = DBPDO::INIT();
|
||||
if ($db->ofetch('SELECT 1 FROM users WHERE id = ?', $userId)) {
|
||||
$db->execute('INSERT INTO chat (user_id,receiver_id,msg,type) VALUES (-1,?,?,?)', [$userId, $text, 'sms']);
|
||||
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']);
|
||||
}
|
||||
unset($db);
|
||||
}
|
||||
|
||||
function get_meshok()
|
||||
{
|
||||
global $user;
|
||||
$itemsWeight = db::c()->query('SELECT SUM(weight) AS all_weight FROM `inventory` WHERE owner_id = ?i AND on_sale = 0', $_SESSION['uid'])->fetch_assoc();
|
||||
return ($user->getStrength() * 4 + $itemsWeight['all_weight']);
|
||||
return (User::$current->getStrength() * 4 + $itemsWeight['all_weight']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2,7 +2,6 @@
|
||||
|
||||
use Battles\Template;
|
||||
|
||||
ob_start("ob_gzhandler");
|
||||
session_start();
|
||||
require_once "functions.php";
|
||||
$errkom = '';
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
ob_start("ob_gzhandler");
|
||||
session_start();
|
||||
require_once "functions.php";
|
||||
|
||||
|
67
main.php
67
main.php
@ -1,4 +1,6 @@
|
||||
<?php
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\DressedItems;
|
||||
use Battles\GameLogs;
|
||||
use Battles\InventoryItem;
|
||||
@ -6,8 +8,8 @@ use Battles\Template;
|
||||
use Battles\Travel;
|
||||
use Battles\UserInfo;
|
||||
use Battles\UserStats;
|
||||
use Battles\User;
|
||||
|
||||
ob_start("ob_gzhandler");
|
||||
session_start();
|
||||
$get = filter_input(INPUT_SERVER, 'QUERY_STRING');
|
||||
if ($get == 'exit') {
|
||||
@ -16,7 +18,7 @@ if ($get == 'exit') {
|
||||
}
|
||||
require_once 'functions.php';
|
||||
|
||||
$user->setOnline();
|
||||
User::$current->setOnline();
|
||||
|
||||
// Инициализируем входящие GET\POST переменные.
|
||||
$goto = $_GET['goto'] ?? null;
|
||||
@ -40,7 +42,7 @@ if ($edit) {
|
||||
$destruct = $_GET['destruct'] ?? null;
|
||||
|
||||
if ($ups) {
|
||||
$user->addOnePointToStat($ups);
|
||||
User::$current->addOnePointToStat($ups);
|
||||
}
|
||||
if ($drop) {
|
||||
$items = new DressedItems($_SESSION['uid']);
|
||||
@ -49,16 +51,16 @@ if ($edit) {
|
||||
}
|
||||
//Пока что одеваем предмет отсюда.
|
||||
if ($dress) {
|
||||
$dressing = new InventoryItem($db->ofetch('select * from inventory where item_id = ? ', $dress));
|
||||
$dressing = new InventoryItem(DBPDO::$db->ofetch('select * from inventory where item_id = ? ', $dress));
|
||||
$dressing->dressItem();
|
||||
unset($dressing);
|
||||
}
|
||||
if ($destruct) {
|
||||
$q = $db->ofetch('select name,dressed_slot from inventory where owner_id = ? and item_id = ?', [$user->getId(), $destruct]);
|
||||
$q = DBPDO::$db->ofetch('select name,dressed_slot from inventory where owner_id = ? and item_id = ?', [User::$current->getId(), $destruct]);
|
||||
if ($q) {
|
||||
if (empty($q->dressed_slot)) {
|
||||
InventoryItem::destroyItem($destruct);
|
||||
GameLogs::addUserLog($user->getId(), $user->getLogin() . ' выбросил предмет ' . $q->name . ' id:(cap' . $destruct . ')');
|
||||
GameLogs::addUserLog(User::$current->getId(), User::$current->getLogin() . ' выбросил предмет ' . $q->name . ' id:(cap' . $destruct . ')');
|
||||
err('Предмет ' . $q->name . ' выброшен.');
|
||||
} else {
|
||||
err('Ошибка: нельзя выбросить одетый предмет!');
|
||||
@ -77,16 +79,16 @@ if ($edit) {
|
||||
|
||||
|
||||
// Подготавливаем отображение инфы и предметов.
|
||||
$userInfo = new UserInfo($user->getId());
|
||||
$userStats = new UserStats($user->getId());
|
||||
$data = $db->ofetchAll('SELECT * FROM inventory WHERE owner_id = ? AND dressed_slot = 0 AND on_sale = 0', $user->getId());
|
||||
$userInfo = new UserInfo(User::$current->getId());
|
||||
$userStats = new UserStats(User::$current->getId());
|
||||
$data = DBPDO::$db->ofetchAll('SELECT * FROM inventory WHERE owner_id = ? AND dressed_slot = 0 AND on_sale = 0', User::$current->getId());
|
||||
$iteminfo = [];
|
||||
foreach ($data as $row) {
|
||||
$iteminfo = new InventoryItem($row);
|
||||
}
|
||||
|
||||
//Обработчики нажатий на кнопки.
|
||||
if ($_POST['battlefield'] ?? 0 && $user->getRoom() == 1) {
|
||||
if ($_POST['battlefield'] ?? 0 && User::$current->getRoom() == 1) {
|
||||
header('Location: zayavka.php');
|
||||
exit();
|
||||
}
|
||||
@ -94,11 +96,11 @@ if ($_POST['module_quest'] ?? 0) {
|
||||
header('Location: module_quest.php');
|
||||
exit();
|
||||
}
|
||||
if ($_POST['move_inside'] ?? 0 && $user->getRoom() == 20) {
|
||||
if ($_POST['move_inside'] ?? 0 && User::$current->getRoom() == 20) {
|
||||
header('Location: main.php?goto=arena');
|
||||
exit();
|
||||
}
|
||||
if ($_POST['move_outside'] ?? 0 && $user->getRoom() == 1) {
|
||||
if ($_POST['move_outside'] ?? 0 && User::$current->getRoom() == 1) {
|
||||
header('Location: main.php?goto=plo');
|
||||
exit();
|
||||
}
|
||||
@ -109,12 +111,12 @@ if ($_POST['main_page'] ?? 0) {
|
||||
|
||||
if ($edit === null) {
|
||||
/* === проверяем соответствие комнаты и скрипта === */
|
||||
if (in_array($user->getRoom(), [20, 21, 26, 48, 51, 52, 651, 2655, 2601, 2701, 2702, 2111])) {
|
||||
if (in_array(User::$current->getRoom(), [20, 21, 26, 48, 51, 52, 651, 2655, 2601, 2701, 2702, 2111])) {
|
||||
header('Location: city.php');
|
||||
exit();
|
||||
}
|
||||
if (in_array($user->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->getRoom()]);
|
||||
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()]);
|
||||
exit();
|
||||
}
|
||||
}
|
||||
@ -134,9 +136,9 @@ function del_efs($id, $type)
|
||||
// Входим и выходим если можем.
|
||||
if ($goto) {
|
||||
$imove = true;
|
||||
$d = db::c()->query('SELECT SUM(weight) AS sum_weight FROM inventory WHERE owner_id = ?i AND on_sale = 0', $user->getId())->fetch_assoc();
|
||||
$eff = db::c()->query('SELECT 1 FROM `users_effects` WHERE `owner_id` = ?i AND (`type` = 14 OR `type` = 13)', $user->getId());
|
||||
//(масса: <?= $getItemsBonuses->getItemsWeight() . '/' . $user->strength * 4
|
||||
$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
|
||||
|
||||
if ($d['sum_weight'] > $userStats->getStrength() * 4 && $goto) {
|
||||
err('У вас переполнен рюкзак, вы не можете передвигаться...');
|
||||
@ -146,15 +148,15 @@ if ($goto) {
|
||||
err('У вас тяжелая травма, вы не можете передвигатся...');
|
||||
$imove = false;
|
||||
}
|
||||
if ($goto == 'plo' && !$user->getZayavka() && $imove && $user->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->getId());
|
||||
if ($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());
|
||||
header('Location: city.php');
|
||||
exit("<i>Топ-топ-топ...</i>");
|
||||
} else {
|
||||
err('Подали заявку на бой и убегаете из клуба? Нехорошо...');
|
||||
}
|
||||
if ($goto == 'arena' && $user->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->getId());
|
||||
if ($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());
|
||||
header('Location: main.php');
|
||||
exit("<i>Топ-топ-топ...</i>");
|
||||
}
|
||||
@ -165,8 +167,8 @@ if (isset($_GET['use'])) {
|
||||
}
|
||||
|
||||
if ($obraz) {
|
||||
$user->setShadow($obraz);
|
||||
$user->saveShadow();
|
||||
User::$current->setShadow($obraz);
|
||||
User::$current->saveShadow();
|
||||
}
|
||||
|
||||
if ($setShadow) {
|
||||
@ -277,12 +279,12 @@ Template::header('Игра');
|
||||
</td>
|
||||
<td style="vertical-align: top; width: 250px"> <!-- Второй столбец -->
|
||||
<div>
|
||||
<br>Уровень: <strong><?= $user->getLevel() ?></strong>
|
||||
<br>Опыт: <strong><?= $user->getExperience() ?></strong>
|
||||
<br>Уровень: <strong><?= User::$current->getLevel() ?></strong>
|
||||
<br>Опыт: <strong><?= User::$current->getExperience() ?></strong>
|
||||
<br>Побед: <strong>??</strong>
|
||||
<br>Поражений: <strong>??</strong>
|
||||
<br>Ничьих: <strong>??</strong>
|
||||
<br>Деньги: <strong><?= $user->getMoney() ?></strong> кр.
|
||||
<br>Деньги: <strong><?= User::$current->getMoney() ?></strong> кр.
|
||||
<HR>
|
||||
</div>
|
||||
<!--Параметры-->
|
||||
@ -305,8 +307,9 @@ Template::header('Игра');
|
||||
увеличений: <?= $userStats->getFreeStatPoints() ?></small><br>
|
||||
<?php endif; ?>
|
||||
<br>
|
||||
Здоровье: <?= $userStats->getHealth() ?><br>
|
||||
Пыль: <?= $userStats->getMana() ?><br>
|
||||
<!-- #18 Разобраться в прогрессбарах -->
|
||||
Здоровье: <progress max="<?= $userStats->getMaxHealth() ?>" value="<?= $userStats->getHealth() ?>"><?= $userStats->getHealth() ?></progress><br>
|
||||
Пыль: <progress max="<?= $userStats->getMaxMana() ?>" value="<?= $userStats->getMana() ?>"><?= $userStats->getMana() ?></progress><br>
|
||||
Уворот: <?= $userStats->getFullStats()->evasion ?><br>
|
||||
Точность: <?= $userStats->getFullStats()->accuracy ?><br>
|
||||
Шанс крита: <?= $userStats->getFullStats()->criticals ?><br>
|
||||
@ -327,14 +330,14 @@ Template::header('Игра');
|
||||
<td style="vertical-align: top;">
|
||||
<div class="button-container"> <!--Меню-кнопки-->
|
||||
<FORM METHOD=POST ACTION="?edit=1" name=f1>
|
||||
<?php if ($user->getShadow() == '0.gif' || $user->getAdmin() == 1): ?>
|
||||
<?php if (User::$current->getShadow() == '0.gif' || User::$current->getAdmin() == 1): ?>
|
||||
<INPUT class="button primary icon user" TYPE="submit" name="setshadow" value="Образы"
|
||||
title="Образы">
|
||||
<?php endif; ?>
|
||||
<div class="button-group">
|
||||
<?php if ($user->getRoom() == 20): ?>
|
||||
<?php if (User::$current->getRoom() == 20): ?>
|
||||
<input class="button icon move" type="submit" name="move_inside" value="Войти внутрь">
|
||||
<?php elseif ($user->getRoom() == 1): ?>
|
||||
<?php elseif (User::$current->getRoom() == 1): ?>
|
||||
<input class="button primary" type="submit" name="battlefield" value="Поединки">
|
||||
<input class="button icon move" type="submit" name="move_outside" value="Выйти на улицу">
|
||||
<?php endif; ?>
|
||||
|
12
repair.php
12
repair.php
@ -27,7 +27,7 @@ $gravirovka_query = null;
|
||||
if ($gravirovkaText && $itemId) {
|
||||
if ($user->getMoney() >= GRAV_COST) {
|
||||
if (iconv_strlen($gravirovkaText) <= GRAV_LIMIT) {
|
||||
$db->execute('UPDATE inventory SET text = ? WHERE dressed_slot = 0 AND on_sale = 0 AND owner_id = ? AND id = ?', [$gravirovkaText, $user->getId(), $itemId]);
|
||||
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());
|
||||
$status = REPAIR_STATUS['OK_GRAV_ADDED'];
|
||||
@ -41,7 +41,7 @@ if ($gravirovkaText && $itemId) {
|
||||
// Снять гравировку.
|
||||
if ($gravirovkaRemove) {
|
||||
if ($user->getMoney() >= GRAV_COST) {
|
||||
$db->execute('UPDATE inventory SET text = null WHERE dressed_slot = 0 AND on_sale = 0 AND owner_id = ? AND id = ?', [$user->getId(), $itemId]);
|
||||
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());
|
||||
$status = REPAIR_STATUS['OK_GRAV_REMOVED'];
|
||||
@ -52,9 +52,9 @@ if ($gravirovkaRemove) {
|
||||
// Ремонт 0,5 кред за единицу.
|
||||
// Пока что лимит ремонта поставлен на 25. Дальше можно обыграть.
|
||||
if ($action == 'repair' && $itemId) {
|
||||
$q = $db->ofetch('SELECT name, durability FROM inventory WHERE item_id = ?', $itemId);
|
||||
$q = DBPDO::$db->ofetch('SELECT name, durability FROM inventory WHERE item_id = ?', $itemId);
|
||||
if ($user->getMoney() > ceil($q->duration / 2)) {
|
||||
$db->execute('UPDATE inventory SET duration = 25 WHERE dressed_slot = 0 AND on_sale = 0 AND owner_id = ? AND id = ?', [$user->getId(), $itemId]);
|
||||
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) . ' кр.');
|
||||
@ -64,10 +64,10 @@ if ($action == 'repair' && $itemId) {
|
||||
}
|
||||
}
|
||||
if ($goto == 'remont') {
|
||||
$remont_query = $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 = 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());
|
||||
}
|
||||
if ($goto == 'gravirovka') {
|
||||
$gravirovka_query = $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 = 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()]);
|
||||
}
|
||||
Template::header('Кузня');
|
||||
?>
|
||||
|
6
shop.php
6
shop.php
@ -1,11 +1,11 @@
|
||||
<?php
|
||||
|
||||
use Battles\Bank;
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\Item;
|
||||
use Battles\ShopItem;
|
||||
use Battles\Template;
|
||||
|
||||
ob_start();
|
||||
session_start();
|
||||
require_once 'functions.php';
|
||||
$saleItems = false;
|
||||
@ -71,12 +71,12 @@ switch ($shopCategoryTypeNumber) {
|
||||
// MUST BE ARRAY!
|
||||
$iteminfo = [];
|
||||
if (!$saleItems) {
|
||||
$shopItems = $db->ofetchAll("select * from items inner join trade_offers on id = shop_item_id where shop_id = 1 and shop_item_quantity !=0");
|
||||
$shopItems = DBPDO::$db->ofetchAll("select * from items inner join trade_offers on id = shop_item_id where shop_id = 1 and shop_item_quantity !=0");
|
||||
foreach ($shopItems as $shopItemObject) {
|
||||
$iteminfo[] = new ShopItem($shopItemObject, 'buyshop');
|
||||
}
|
||||
} else {
|
||||
$inventoryItems = $db->ofetchall("select * from inventory where on_sale = 0 and dressed_slot = 0 and durability > 0 and owner_id = ?", $user->getId());
|
||||
$inventoryItems = DBPDO::$db->ofetchall("select * from inventory where on_sale = 0 and dressed_slot = 0 and durability > 0 and owner_id = ?", $user->getId());
|
||||
foreach ($inventoryItems as $inventoryItemObject) {
|
||||
$iteminfo[] = new ShopItem($inventoryItemObject, 'sellshop');
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
ob_start("ob_gzhandler");
|
||||
session_start();
|
||||
require_once "functions.php";
|
||||
if ($user['in_tower'] != 1) {
|
||||
|
Loading…
Reference in New Issue
Block a user