Часть логов теперь пишется в SQLITE, а не в текстовые файлы (#33). Проинициализирован класс Nick в свитках.
This commit is contained in:
@@ -43,10 +43,12 @@ class Chat
|
||||
echo 'Chat Datetime Whoops!';
|
||||
}
|
||||
$m = htmlspecialchars($row->msg);
|
||||
if ($row->type === 'sys') {
|
||||
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()) {
|
||||
if ($row->type == 'sms') {
|
||||
} elseif ($row->rid === User::$current->getId()) {
|
||||
if ($row->type === 'sys') {
|
||||
$wrappedMessage .= sprintf('<span class="chatsys">%s [Система] → %s</span><br>', $this->d->format('H:i'), $m);
|
||||
} elseif ($row->type == 'sms') {
|
||||
$wrappedMessage .= sprintf('<span class="chatsms">%s Телеграмма от [%s]: %s</span><br>', $this->d->format('d.m.Y H:i'), $row->sender, $m);
|
||||
} elseif ($row->type == 'private') {
|
||||
$wrappedMessage .= sprintf('<span class="chatprivate">%s [%s] → [%s]: %s</span><br>', $this->d->format('H:i'), $row->sender, $row->receiver, $m);
|
||||
@@ -60,9 +62,14 @@ class Chat
|
||||
return $wrappedMessage;
|
||||
}
|
||||
|
||||
public function addMessage($msg)
|
||||
public function addMessage(string $msg)
|
||||
{
|
||||
$this->db->execute('insert into chat (user_id, msg) values (?,?)', [User::$current->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']);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -57,7 +57,7 @@ class GameLogs
|
||||
public static function getUserLogs($userId = null, $type = null): SQLite3Result
|
||||
{
|
||||
$db = new SQLite3(GameConfigs::DB_SQLITE);
|
||||
|
||||
$row = false;
|
||||
if ($userId && $type) {
|
||||
$query = "SELECT * FROM users_logs WHERE user_id = ? AND type = ?";
|
||||
$row = $db->prepare($query);
|
||||
@@ -78,4 +78,14 @@ class GameLogs
|
||||
|
||||
return $row->execute();
|
||||
}
|
||||
|
||||
public static function addBattleLog(int $battle_id, string $text)
|
||||
{
|
||||
$db = new SQLite3(__DIR__ . '../../Database/battle.logs.db');
|
||||
$row = $db->prepare('insert into newbattles (battle_id, text) values (?,?)');
|
||||
$row->bindParam(1, $battle_id, SQLITE3_INTEGER);
|
||||
$row->bindParam(2, $text, SQLITE3_TEXT);
|
||||
$row->execute();
|
||||
$row->close();
|
||||
}
|
||||
}
|
||||
+24
-22
@@ -100,11 +100,6 @@ class User
|
||||
$this->pass = $pass;
|
||||
}
|
||||
|
||||
public function savePass()
|
||||
{
|
||||
self::$db->execute('UPDATE users SET pass = ? WHERE id = ?', [$this->pass, $this->id]);
|
||||
}
|
||||
|
||||
public function getRealname(): string
|
||||
{
|
||||
return $this->realname;
|
||||
@@ -151,13 +146,8 @@ class User
|
||||
*/
|
||||
public function setClan(?string $short_name)
|
||||
{
|
||||
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]);
|
||||
}
|
||||
$this->clan = is_null($short_name) ? null : $short_name;
|
||||
$this->saveUser();
|
||||
}
|
||||
|
||||
public function getMoney(): int
|
||||
@@ -217,11 +207,6 @@ class User
|
||||
}
|
||||
}
|
||||
|
||||
public function saveShadow()
|
||||
{
|
||||
self::$db->execute('UPDATE users SET shadow = ? WHERE id = ?', [$this->shadow, $this->id]);
|
||||
}
|
||||
|
||||
public function getExperience(): int
|
||||
{
|
||||
return $this->experience;
|
||||
@@ -242,11 +227,6 @@ class User
|
||||
return $this->zayavka;
|
||||
}
|
||||
|
||||
public function saveAnketa()
|
||||
{
|
||||
self::$db->execute('UPDATE users SET realname = ?, info = ? WHERE id = ?', [$this->realname, $this->info, $this->id]);
|
||||
}
|
||||
|
||||
public function setOnline()
|
||||
{
|
||||
self::$db->execute('update online set real_time = ? where user_id = ?', [time(), $this->getId()]);
|
||||
@@ -285,4 +265,26 @@ class User
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/** Сохраняет в базу актуальные логин, пароль, email, имя, дату рождения, текст инфы, склонность, клан, образ, права админа.
|
||||
*
|
||||
*/
|
||||
public function saveUser()
|
||||
{
|
||||
$query = 'update users set login = ?, pass = ?, email = ?, realname = ?, borndate = ?, info = ?, align = ?, clan = ?, shadow = ?, admin = ? where id = ?';
|
||||
$vals = [
|
||||
$this->login, //set
|
||||
$this->pass,
|
||||
$this->email,
|
||||
$this->realname,
|
||||
$this->borndate,
|
||||
$this->info,
|
||||
$this->align,
|
||||
$this->clan,
|
||||
$this->shadow,
|
||||
$this->admin,
|
||||
$this->id //where
|
||||
];
|
||||
DBPDO::$db->execute($query, $vals);
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
namespace Battles;
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use Exceptions\GameException;
|
||||
|
||||
class UserStats extends User
|
||||
@@ -22,16 +23,16 @@ class UserStats extends User
|
||||
|
||||
//// Неизменяемые для игрока(!) переменные.
|
||||
// Удар кулаком всегда 1-2.
|
||||
protected $minDamage = 1;
|
||||
protected $maxDamage = 2;
|
||||
protected int $minDamage = 1;
|
||||
protected int $maxDamage = 2;
|
||||
// Природная броня всегда 0.
|
||||
// Зачем их три, если во всех формулах она одна?
|
||||
protected $headArmor = 0;
|
||||
protected $chestArmor = 0;
|
||||
protected $legArmor = 0;
|
||||
protected int $headArmor = 0;
|
||||
protected int $chestArmor = 0;
|
||||
protected int $legArmor = 0;
|
||||
// Динамически рассчитываемые
|
||||
protected $maxHealth;
|
||||
protected $maxMana;
|
||||
protected int $maxHealth;
|
||||
protected int $maxMana;
|
||||
|
||||
/**
|
||||
* UserStats constructor.
|
||||
@@ -48,7 +49,7 @@ class UserStats extends User
|
||||
/**
|
||||
* Отдаёт информацию о базовом(!) стате.
|
||||
*
|
||||
* @param $stat_name - имя стата. Может принимать значения 'strength', 'dexterity', 'intuition',
|
||||
* @param $stat_name - имя стата. Может принимать значения 'strength', 'dexterity', 'intuition',
|
||||
* 'endurance', 'intelligence', 'wisdom'.
|
||||
* @param int $isMainWindow - переключатель "главного окна". Если включить, дополнительно будет показывать ссылку
|
||||
* на повышение стата на 1, при условии наличия свободных очков статов.
|
||||
@@ -220,4 +221,36 @@ class UserStats extends User
|
||||
return self::$db->ofetch($query);
|
||||
}
|
||||
|
||||
public function levelUp(): string
|
||||
{
|
||||
$this->level += 1;
|
||||
$this->free_stat_points += 2;
|
||||
$this->saveStats();
|
||||
Chat::addSYSMessage('Внимание, вы получили ' . $this->level . 'уровень. Доступны очки распределения параметров.');
|
||||
return 'Персонаж перешёл на ' . $this->level . 'уровень.';
|
||||
}
|
||||
|
||||
/** Сохраняет в базу актуальные статы, здоровье, ману, свободные очки статов и уровень.
|
||||
*
|
||||
*/
|
||||
private function saveStats()
|
||||
{
|
||||
$query = 'update users set strength = ?, dexterity = ?, intuition = ?, endurance = ?,
|
||||
intelligence = ?, wisdom = ?, health = ?, mana = ?, free_stat_points = ?,
|
||||
level = ? where id = ?';
|
||||
$vals = [
|
||||
$this->strength, //set
|
||||
$this->dexterity,
|
||||
$this->intuition,
|
||||
$this->endurance,
|
||||
$this->intelligence,
|
||||
$this->wisdom,
|
||||
$this->health,
|
||||
$this->mana,
|
||||
$this->free_stat_points,
|
||||
$this->level,
|
||||
$this->id //where
|
||||
];
|
||||
DBPDO::$db->execute($query, $vals);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,8 @@
|
||||
<?php
|
||||
|
||||
use Battles\GameLogs;
|
||||
use Battles\Nick;
|
||||
|
||||
class Tournament
|
||||
{
|
||||
public $MaxUserLevel = 9;
|
||||
@@ -159,7 +162,7 @@ class Tournament
|
||||
// создаем лог
|
||||
$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());
|
||||
addlog($id, "Часы показывали <span class=date>" . date("Y.m.d H.i") . "</span>, когда " . $rr . " решили выяснить кто из них сильнее. <i>(турнир)</i><BR>");
|
||||
GameLogs::addBattleLog($id, "Часы показывали <span class=date>" . date("Y.m.d H.i") . "</span>, когда " . $rr . " решили выяснить кто из них сильнее. <i>(турнир)</i><BR>");
|
||||
return $id;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user