game/_incl_data/class/Chat.php

141 lines
16 KiB
PHP
Raw Normal View History

<?php
2022-12-19 20:16:24 +00:00
/** Types
* 1. all
* 2. to
* 5. system to?
* 6. system to
* 11. ???
*/
2022-12-30 19:03:37 +00:00
use Core\Db;
2022-12-19 20:16:24 +00:00
class Chat
{
private array $smilesWorld = ['laugh' => [0 => 'смеется', 1 => 'посмеялся над [*%l*]'], 'fingal' => [0 => 'трет фингал', 1 => 'щупает фингал у [*%l*]'], 'eek' => [0 => 'ошарашен', 1 => 'ошарашен действиями [*%l*]'], 'smoke' => [0 => 'закуривает', 1 => 'предлагает [*%l*] пойти покурить'], 'hi' => [0 => 'приветствует всех вокруг', 1 => 'приветствует [*%l*]'], 'bye' => [0 => 'прощается со всеми и уходит', 1 => 'прощается с [*%l*]'], 'king' => [0 => 'коронует себя :-)', 1 => 'объявляет [*%l*] своим королем!'], 'king2' => [0 => 'коронует себя :-)', 1 => 'объявляет [*%l*] своей королевой!'], 'boks2' => [0 => 'вызывает всех на поединок', 1 => 'предлагает [*%l*] дружеский матч'], 'boks' => [0 => 'обещает побить любого, кто примет вызов!', 1 => 'намекает [*%l*] на поединок'], 'gent' => [0 => 'предлагает считать себя благородным сэром', 1 => 'считает [*%l*] джельтельменом'], 'lady' => [0 => 'предлагает считать себя благородной леди', 1 => 'считает, что [*%l*] настоящая Леди'], 'tongue' => [0 => 'показывает окружающим язык', 1 => 'показывает язык [*%l*]'], 'smil' => [0 => 'болтает без умолку', 1 => 'считает, что [*%l*] говорит откровенную ерунду!'], 'ponder' => [0 => 'кое-что усиленно обдумывает', 1 => 'обещает обмозговать предложение [*%l*]'], 'bow' => [0 => 'сохраняя достоинство, кивает окружающим', 1 => 'сохраняя достоинство кивает [*%l*]'], 'angel' => [0 => 'считает себя Ангелом', 1 => 'считает [*%l*] своим Ангелом'], 'angel2' => [0 => 'грезит об Ангелах', 1 => 'думает что [*%l*] Ангел'], 'hello' => [0 => 'желает здравствовать окружающим', 1 => 'желает здравствовать [*%l*]'], 'dont' => [0 => 'рекомендует окружающим не делать этого', 1 => 'рекомендует [*%l*] не делать этого'], 'idea' => [0 => 'озарен свежей идеей!', 1 => 'предлагает [*%l*] обсудить пару идей'], 'mol' => [0 => 'преклоняется перед окружающими', 1 => 'преклоняется перед [*%l*]'], 'super' => [0 => 'считает, что мир хорош, все дамы - Леди, а Солнце - шар дающий свет!', 1 => 'фанатеет от [*%l*]'], 'beer' => [0 => 'вспоминает про припрятаный в заначке эликсир...', 1 => 'готов поделиться с [*%l*] припрятанным эликсиром!'], 'drink' => [0 => 'считает, что пора пить различные эликсиры', 1 => 'предлагает [*%l*] пойти пропустить по стаканчику эликсира'], 'baby' => [0 => 'изображает малыша', 1 => ' считает, что [*%l*] еще мал и неопытен для обоснованной критики'], 'tongue2' => [0 => ' показывает всяким врединам язык', 1 => 'показывает [*%l*] язык, проявляя недовольство'], 'sword' => [0 => 'готов сразиться в честном поединке', 1 => 'вызывает [*%l*] на честный поединок!'], 'agree' => [0 => 'пожимает руку собеседникам', 1 => 'пожимает руку [*%l*]'], 'loveya' => [0 => 'преисполнен чувства любви', 1 => 'преисполнен чувст
public function expworld($txt, $vl): string
{
$words = explode(' ', $txt);
$i = -1;
while ($i < count($words)) {
$i++;
if (isset($words[$i]) && strlen($words[$i]) > $vl) {
$words[$i] = substr($words[$i], 0, $vl) . ' ' . substr($words[$i], $vl);
$i = 0;
$txt = implode(' ', $words);
$words = explode(' ', $txt);
}
}
return implode(' ', $words);
}
public function str_count($str, $col)
{
if (strlen($str) > $col) {
$str = substr($str, 0, $col);
}
return ($str);
}
public function smileText($text, $tol, $room, $city)
{
$retxt = '';
$j = 0;
$txt = str_replace('/', '&frasl;', $text) . ' ';
if (preg_match("/&frasl;(.*?) /", $txt, $retxt) && isset($this->smilesWorld[$retxt[1]])) {
if ($tol == '') {
$tol = str_replace('&frasl;' . $retxt[1] . ' ', '', $txt);
$tol = trim($tol, ' ');
}
if ($tol == '') {
$txt = $this->smilesWorld[$retxt[1]][0];
} else {
$mbl = mysql_fetch_array(mysql_query('SELECT `online`,`id`,`login`,`room`,`city` FROM `users` WHERE `room`="' . $room . '" AND `online` > ' . (time() - 520) . ' AND `city` = "' . $city . '" AND `login`="' . mysql_real_escape_string($tol) . '" LIMIT 1'));
if (isset($mbl['id'])) {
$txt = '' . $this->smilesWorld[$retxt[1]][1];
$txt = str_replace('[*%l*]', '[login:' . $tol . ']', $txt);
} else {
$txt = 'USER IS FALSE';
}
}
$j = 1;
}
if ($j == 1) {
$text = $txt;
} else {
$text = false;
}
return $text;
}
2022-12-19 20:16:24 +00:00
public function sendsys($text, $to = '', $color = '#933')
{
if (!$text) {
return;
}
Db::sql('insert into chat (new, text, time, type, color, `to`) values (1,?,unix_timestamp(),6,?,?)', [
trim($text), $color, $to
]);
}
2023-01-28 02:24:37 +00:00
public function debug($text, $isLegacyErrorMessage = false)
2022-12-19 20:16:24 +00:00
{
2023-01-28 02:24:37 +00:00
if ($isLegacyErrorMessage) {
$text = 'core' . date('#d.m.Y %H:i:s:') . "<b>$text</b>";
}
2022-12-19 20:16:24 +00:00
Db::sql('insert into chat (new, text, time, type, color, `to`, login) values (1,?,unix_timestamp(),3,?,?,?)', [
trim($text), 'crimson', 'Merlin', 'debugger'
]);
}
2023-01-28 02:24:37 +00:00
public function sendMsg(ChatMessage $chatMessage): void
{
2023-01-28 02:24:37 +00:00
$q = 'insert into chat(
new,
sound,
color,
city,
room,
login,
`to`,
text,
time,
type,
spam,
invis,
da,
`delete`,
molch,
typeTime,
dn,
frv
) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)';
2023-01-28 02:24:37 +00:00
$args = [
1,
2023-01-28 02:24:37 +00:00
$chatMessage->getSound(),
$chatMessage->getColor(),
$chatMessage->getCity(),
$chatMessage->getRoom(),
$chatMessage->getLogin(),
$chatMessage->getTo(),
$chatMessage->getText(),
$chatMessage->getTime(),
$chatMessage->getType(),
$chatMessage->getSpam(),
$chatMessage->getInvis(),
$chatMessage->getDa(),
$chatMessage->getDelete(),
$chatMessage->getMolch(),
$chatMessage->getTypeTime(),
$chatMessage->getDn(),
$chatMessage->getFireworks(),
];
Db::sql($q, $args);
}
}