game/_incl_data/class/BotLogic.php

1089 lines
51 KiB
PHP
Raw Normal View History

<?php
2023-11-06 00:40:12 +00:00
use Core\Db;
use User\ItemsModel;
class BotLogic
{
2023-11-06 00:40:12 +00:00
public static array $bot = [];
public static array $st = [];
private static array $btl = [];
private static array $enemy = [];
private static array $pr = [];
2023-11-06 00:40:12 +00:00
public static function inuser_go_btl($id, $txt = '')
{
if (isset($id['id'])) {
$ctx = stream_context_create(['https' => ['timeout' => 30]]);
$val = file_get_contents('/jx/battle/refresh_bot.php?uid=' . $id['id'] . '&cron_core=' . md5($id['id'] . '_brfCOreW@!_' . $id['pass']) . '&pass=' . $id['pass'] . '&' . $txt, false, $ctx);
echo '[' . $val . ']<hr>';
2023-11-06 00:40:12 +00:00
}
}
2023-11-06 00:40:12 +00:00
private static function useBattlePriems(): void
{
2023-01-10 16:29:32 +00:00
//используем приемы в бою
2023-11-06 00:40:12 +00:00
if (self::$st['hpNow'] <= 0 || self::$bot['battle'] <= 0) {
return;
}
$pr = explode('|', self::$bot['priems']);
$rz = explode('|', self::$bot['priems_z']);
$i = 0;
while ($i < count($pr)) {
if ($pr[$i] > 0) {
self::$pr[$pr[$i]] = $rz[$i];
}
2023-11-06 00:40:12 +00:00
$i++;
}
$i = 0;
while ($i < count($pr)) {
if ($rz[$i] < 1 && $pr[$i] > 0) {
//Можно использовать прием, подключаем логику
BotPriemLogic::start($i, $pr[$i]);
}
2023-11-06 00:40:12 +00:00
$i++;
}
2023-11-06 00:40:12 +00:00
self::$pr = [];
}
2023-11-06 00:40:12 +00:00
/** Удаление данных бота из БД.
* @return void
*/
private static function clearBot(): void
{
2023-01-10 16:29:32 +00:00
//Удаляем сообщения в чате
2023-11-06 00:40:12 +00:00
Db::sql('delete from chat where `to` = ?', [self::$bot['login']]);
2023-01-10 16:29:32 +00:00
//Удаляем шмотки и эффекты
2023-11-06 00:40:12 +00:00
Db::sql('delete from items_users where uid = ?', [self::$bot['login']]);
Db::sql('delete from eff_users where uid = ?', [self::$bot['login']]);
2023-01-10 16:29:32 +00:00
//Удаляем статы и поле в юзерс
2023-11-06 00:40:12 +00:00
Db::sql('delete from users where id = ?', [self::$bot['login']]);
Db::sql('delete from stats where id = ?', [self::$bot['login']]);
Db::sql('delete from online where uid = ?', [self::$bot['login']]);
Db::sql('delete from actions where uid = ?', [self::$bot['login']]);
}
2023-01-10 16:29:32 +00:00
//Действия бота вне боя
static function actions()
{
global $u;
if (self::$bot['battle'] == 0 && self::$bot['zv'] == 0 && self::$bot['pass'] == 'saintlucia') {
2023-01-10 16:29:32 +00:00
//Можно: сменить фулл, перейти в другую комнату, входить наймом, делать бафы
2023-01-10 16:29:32 +00:00
//Переходим в другую комнату
if (true == false && self::$bot['a1'] != 0 && self::$bot['a1'] != self::$bot['room']) {
self::_loc(self::$bot['a1']);
} else {
self::update('a1', 0);
//CAPITAL
2023-11-06 00:40:12 +00:00
if (!in_array(self::$bot['room'], [0, 2, 4, 5, 7, 377])) {
if (self::$bot['exp'] > 400000 && self::$bot['level'] == 8) {
self::$bot['exp'] = 400000;
mysql_query('UPDATE `stats` SET `exp` = "400000" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
} elseif (self::$bot['exp'] > 3500000 && self::$bot['level'] == 9) {
self::$bot['exp'] = 3500000;
mysql_query('UPDATE `stats` SET `exp` = "3500000" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
}
2023-01-10 16:29:32 +00:00
//Действие в комнате
//Магазин
//Покупаем кристалл вечности
if (self::$bot['room'] == 10 && self::$bot['level'] == 5 && self::$bot['exp'] >= 12499) {
$cr = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `item_id` = "1204" AND `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" LIMIT 1'));
if (!isset($cr['id'])) {
2023-01-10 16:29:32 +00:00
//Покупаем кристалл
2023-11-06 00:40:12 +00:00
ItemsModel::addItem(1204, self::$bot['id']);
}
}
2023-01-10 16:29:32 +00:00
//Переходим в комнату для сражений
self::_loc(self::_loc_zv());
}
}
2023-01-10 16:29:32 +00:00
//Если бот уже набрал опыт для перехода на 6-ой
if (self::$bot['level'] == 5 && self::$bot['exp'] >= 12499) {
$cr = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `item_id` = "1204" AND `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" LIMIT 1'));
if (!isset($cr['id'])) {
self::update('a1', 10);
}
}
2023-01-10 16:29:32 +00:00
//Похоже что боту пора сменить комплект ))
if (self::$bot['clss'] == 0) {
2023-01-10 16:29:32 +00:00
//Выбираем новый класс и шмотки :)
2023-01-10 16:29:32 +00:00
//Меняем класс
self::$bot['clss'] = rand(1, 4);
$x = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `a_bot_tree` WHERE `level` = "' . (self::$bot['level']) . '" '));
if ($x[0] > 0) {
if ($x[0] > 1) {
$x = rand(1, $x[0]);
2023-01-10 16:29:32 +00:00
//выбираем 1 из нескольких
$da = ['ASC', 'DESC', 'DESC', 'ASC'];
$da = $da[rand(0, 5)];
$com = mysql_fetch_array(mysql_query('SELECT * FROM `a_bot_tree` WHERE `level` = "' . (self::$bot['level']) . '" ORDER BY `id` ' . $da . ' LIMIT ' . ($x - 1) . ',1'));
} else {
$com = mysql_fetch_array(mysql_query('SELECT * FROM `a_bot_tree` WHERE `level` = "' . (self::$bot['level']) . '" LIMIT 1'));
}
if (!isset($com['id'])) {
$com = mysql_fetch_array(mysql_query('SELECT * FROM `a_bot_tree` WHERE `level` < "' . (self::$bot['level']) . '" ORDER BY `id` DESC LIMIT 1'));
}
if (isset($com['id'])) {
mysql_query('UPDATE `users` SET `clss` = "' . self::$bot['clss'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
2023-01-10 16:29:32 +00:00
/* Забираем старые шмотки и эффекты */
mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `gift` = "" AND `item_id` != "1204" AND `uid` = "' . self::$bot['id'] . '" AND `delete` = "0"');
mysql_query('UPDATE `items_users` SET `iznosNOW` = "0" WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0"');
mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0"');
2023-01-10 16:29:32 +00:00
/* Обновляем статы и приемы */
if ($com['pr'] == '') {
$i = 1;
while ($i <= 18) {
$com['pr'] .= $com['p' . $i] . '|';
$i++;
}
$com['pr'] .= '0';
}
mysql_query('UPDATE `stats` SET `stats` = "' . $com['stats'] . '",`priems` = "' . $com['pr'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
$i = 1;
while ($i <= 20) {
if ($com['e' . $i] > 0) {
2023-01-10 16:29:32 +00:00
//Выдаем и надеваем предмет
2023-04-15 23:54:34 +00:00
//$it = \User\ItemsModel::addItem($com['e'.$i],self::$bot['id']);
$eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $com['e' . $i] . '" LIMIT 1'));
2023-11-06 00:40:12 +00:00
mysql_query(
'INSERT INTO `eff_users` (`overType`,`id_eff`,`uid`,`name`,`timeUse`,`data`,`no_Ace`) VALUES ("' . $eff['oneType'] . '","' . $eff['id2'] . '","' . self::$bot['id'] . '","' . $eff['mname'] . '","' . (time(
) + 9640000) . '","' . $eff['mdata'] . '","' . $eff['noAce'] . '")'
);
}
$i++;
}
$i = 1;
while ($i <= 20) {
if ($com['w' . $i] > 0) {
2023-01-10 16:29:32 +00:00
//Выдаем и надеваем предмет
2023-11-06 00:40:12 +00:00
$it = ItemsModel::addItem($com['w' . $i], self::$bot['id']);
$eff1 = mysql_fetch_array(mysql_query('SELECT * FROM `items_shop` WHERE `item_id` = "' . $com['w' . $i] . '" LIMIT 1'));
if ($it > 0) {
2023-11-06 00:40:12 +00:00
mysql_query(
'UPDATE `items_users` SET `inOdet` = "' . $i . '",`delete` = "0", `1price` = "' . $eff1['price_1'] . '" WHERE `uid` = "' . self::$bot['id'] . '" AND `id` = "' . $it . '" LIMIT 1'
);
}
}
$i++;
}
}
}
}
2023-01-10 16:29:32 +00:00
//если бот уже 1-ый уровень, а сидит в новичках :) кидаем его в залы
if (self::$bot['city'] == 'capitalcity' && self::$bot['level'] < 2 && self::$bot['room'] == 0 && self::$bot['a1'] == 0) {
self::_loc(self::_loc_zv());
}
}
}
2023-11-06 00:40:12 +00:00
private static bool $botInit = false;
2023-01-10 16:29:32 +00:00
//Включаем логику бота
2023-11-06 00:40:12 +00:00
static function start($id): bool
{
2023-11-06 00:40:12 +00:00
if (!self::$botInit) {
return self::$botInit;
}
2023-11-06 00:40:12 +00:00
global $u;
self::$bot = $u::getInfo($id);
2023-11-06 00:40:12 +00:00
if (!isset(self::$bot['id'])) {
return self::$botInit;
}
2023-11-06 00:40:12 +00:00
self::$botInit = true;
2023-11-06 00:40:12 +00:00
self::$st = $u->getStats(self::$bot, 0);
2023-11-06 00:40:12 +00:00
//Заходим ботом в онлайн
self::_online();
2023-11-06 00:40:12 +00:00
if (self::$bot['battle'] > 0) {
2023-11-06 00:40:12 +00:00
//Действия бота в поединке
self::$btl = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "' . mysql_real_escape_string(self::$bot['battle']) . '" AND `team_win` = "-1" LIMIT 1'));
if (isset(self::$btl['id'])) {
2023-11-06 00:40:12 +00:00
$go_bot = false;
$go_txt = '';
2023-11-06 00:40:12 +00:00
$a1 = mysql_fetch_array(
mysql_query(
'SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE `battle` = "' . self::$btl['id'] . '" AND `uid1` = "' . self::$bot['id'] . '" ORDER BY `time` ASC LIMIT 1'
)
);
2023-11-06 00:40:12 +00:00
//Проверяем возможность использования приемов и делаем список что использовать
//используем приемы
self::useBattlePriems();
2023-11-06 00:40:12 +00:00
//Бот сделал удар, но никто не ответил, проверяем таймаут и если что заходим
if (isset($a1['id']) && $a1['time'] + self::$btl['timeout'] < time()) {
$go_bot = true;
}
2023-11-06 00:40:12 +00:00
//ТУТ test
$a2 = mysql_fetch_array(
mysql_query(
'SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE `battle` = "' . self::$btl['id'] . '" AND `uid2` = "' . self::$bot['id'] . '" ORDER BY `time` ASC LIMIT 1'
)
);
if (isset($a2['uid1'])) {
mysql_query('UPDATE `stats` SET `enemy` = "' . $a2['uid1'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
}
$a3 = mysql_fetch_array(
mysql_query(
'SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE `battle` = "' . self::$btl['id'] . '" AND `uid2` = "' . self::$bot['id'] . '" ORDER BY `time` ASC LIMIT 1'
)
);
if (isset($a3['uid2'])) {
mysql_query('UPDATE `stats` SET `enemy` = "' . $a3['uid2'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
}
//Размен с противником
2023-11-06 00:40:12 +00:00
self::$enemy = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . self::$bot['enemy'] . '" LIMIT 1'));
2023-11-06 00:40:12 +00:00
} else {
2023-11-06 00:40:12 +00:00
//Заходим на персонажа
self::inuser_go_btl(self::$bot);
//Поединок уже завершился, выкидываем из боя
self::$bot['battle'] = 0;
mysql_query('UPDATE `users` SET `battle` = "' . self::$bot['battle'] . '" WHERE `id` = "' . mysql_real_escape_string(self::$bot['id']) . '" LIMIT 1 ');
}
2023-11-06 00:40:12 +00:00
} else {
2023-11-06 00:40:12 +00:00
//Действия бота вне поединка
if (self::$bot['timeMain'] < time()) {
2023-11-06 00:40:12 +00:00
mysql_query('UPDATE `chat` SET `time` = "' . time() . '" WHERE `to` = "' . self::$bot['login'] . '" AND `time` = "-1"');
2023-11-06 00:40:12 +00:00
//Действие возможно произвести
if (self::$bot['ipreg'] == 1 || self::$bot['ipreg'] == 2 || self::$bot['ipreg'] == 4) {
//Принимаем только хаоты
self::$bot['ipreg'] = 3;
}
if (self::$bot['ipreg'] == 5) {
//Подаем только хаоты
self::$bot['ipreg'] = 7;
}
//
if (self::$bot['ipreg'] == 0 || !in_array(self::$bot['room'], [0, 2, 4, 5, 7, 377])) {
2023-11-06 00:40:12 +00:00
//Обновляем эффекты
$com = mysql_fetch_array(mysql_query('SELECT * FROM `a_bot_tree` WHERE `level` = "' . (self::$bot['level']) . '" LIMIT 1'));
if (isset($com['id'])) {
$eft = mysql_fetch_array(mysql_query('SELECT `id` FROM `eff_users` WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" LIMIT 1'));
if (!isset($eft['id'])) {
mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0"');
$i = 1;
while ($i <= 20) {
if ($com['e' . $i] > 0) {
//Выдаем и надеваем предмет
//$it = \User\ItemsModel::addItem($com['e'.$i],self::$bot['id']);
$eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $com['e' . $i] . '" LIMIT 1'));
mysql_query(
'INSERT INTO `eff_users` (`overType`,`id_eff`,`uid`,`name`,`timeUse`,`data`,`no_Ace`) VALUES ("' . $eff['oneType'] . '","' . $eff['id2'] . '","' . self::$bot['id'] . '","' . $eff['mname'] . '","' . (time(
) + 86400 * 7) . '","' . $eff['mdata'] . '","' . $eff['noAce'] . '")'
);
}
$i++;
}
}
}
2023-11-06 00:40:12 +00:00
if (self::$bot['level'] >= 13 && self::$bot['clan'] == 0 && self::$bot['align'] == 0) {
//обнуляем бота
self::clearBot();
}
2023-11-06 00:40:12 +00:00
//Только-что из поединка, хиляется
if (!in_array(self::$bot['room'], [0, 2, 4, 5, 7, 377])) {
2023-11-06 00:40:12 +00:00
//В какой-то локации, видимо что-то делаем
2023-11-06 00:40:12 +00:00
} elseif (self::$st['hpNow'] >= self::$st['hpAll']) {
echo 1;
//Приступаем к активной деятельности :)
mysql_query(
'UPDATE `stats` SET `zv`= "0",`team`= "0",`hpNow` = "' . self::$st['hpNow'] . '",`mpNow` = "' . self::$st['mpNow'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'
);
mysql_query('UPDATE `users` SET `ipreg` = "' . self::new_action() . '",`mod_zvanie` = "Стажер" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
2023-11-06 00:40:12 +00:00
} else {
2023-11-06 00:40:12 +00:00
if (self::$bot['mod_zvanie'] == 'Стажер100500') {
//Надеваем комплект + обновляем эффекты
mysql_query(
'UPDATE `eff_users` SET `timeUse` = "' . (time() + 7200) . '" WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" AND `v1` != "priem" LIMIT 12'
);
mysql_query('UPDATE `items_users` SET `inOdet` = "0" WHERE `uid` = "' . self::$bot['id'] . '" AND `inOdet` > 0 AND `delete` = "0"');
$sp = mysql_query(
'SELECT `u`.`id`,`st`.`inslot`,`st`.`2too` FROM `items_users` AS `u` LEFT JOIN `items_main` AS `st` ON `st`.`id` = `u`.`item_id` WHERE `u`.`inOdet` = 0 AND `st`.`inslot` > 0 AND `st`.`inSlot` <= 20'
);
$in = [];
while ($pl = mysql_fetch_array($sp)) {
$od = $pl['inslot'];
if ($od == 10 && $in[10] > 0) {
if ($in[11] > 0) {
if ($in[12] == 0) {
$od = 12;
}
2023-11-06 00:40:12 +00:00
} else {
$od = 11;
}
}
2023-11-06 00:40:12 +00:00
if ($od == 3 && $in[3] > 0 && $pl['2too'] > 0) {
if ($in[14] > 0) {
mysql_query('UPDATE `items_users` SET `inOdet` = "0" WHERE `uid` = "' . self::$bot['id'] . '" AND `inOdet` = "14" AND `delete` = "0" LIMIT 1');
$in[14] = 0;
}
$od = 14;
}
2023-11-06 00:40:12 +00:00
if ($in[$od] == 0) {
$in[$od] = $pl['id'];
mysql_query('UPDATE `items_users` SET `inOdet` = "' . $od . '" WHERE `id` = "' . $pl['id'] . '" AND `uid` = "' . self::$bot['id'] . '" LIMIT 1');
}
2023-11-06 00:40:12 +00:00
}
mysql_query('UPDATE `items_users` SET `mod_zvanie` = "Cтaжер" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
}
2023-11-06 00:40:12 +00:00
//Хиляемся дальше
if (self::$bot['regHP'] == 0 || self::$bot['regMP'] == 0) {
mysql_query(
'UPDATE `stats` SET `regHP` = "' . time() . '", `regMP` = "' . time(
) . '",`hpNow` = "' . self::$st['hpNow'] . '",`mpNow` = "' . self::$st['mpNow'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1'
);
}
2023-11-06 00:40:12 +00:00
$reg = $u->regen(self::$bot['id'], self::$st, 0);
}
2023-11-06 00:40:12 +00:00
self::actions();
2023-11-06 00:40:12 +00:00
self::update('timeMain', self::rnd());
2023-11-06 00:40:12 +00:00
} elseif (self::$bot['ipreg'] == 1) {
2023-11-06 00:40:12 +00:00
//Принять заявку на бой (физ.)
if (self::$bot['zv'] == 0) {
2023-11-06 00:40:12 +00:00
//Выделяем подходящую заявку в физ. поединке
$rz = 2;
$zv = 0;
$nozv = 0;
2023-11-06 00:40:12 +00:00
if (self::$bot['level'] == 0) {
$rz = 1;
}
2023-01-28 02:24:37 +00:00
2023-11-06 00:40:12 +00:00
$zv = mysql_fetch_array(
mysql_query(
'SELECT * FROM `zayvki` WHERE `city` = "' . self::$bot['city'] . '" AND `otk` < "' . rand(2, 6) . '" AND `time` < "' . (time() - rand(
15, 25
)) . '" AND `bcs` < "' . time() . '" AND `start` = "0" AND `razdel` = "' . $rz . '" AND `cancel` = "0" AND `time` > "' . (time(
) - 1111) . '" AND `money3` = 0 ORDER BY `time` DESC LIMIT 1'
)
);
if (isset($zv['id'])) {
$uz1 = mysql_fetch_array(
mysql_query(
'SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zv['id'] . '" AND `st`.`team`="1" LIMIT 1'
)
);
$uz2 = mysql_fetch_array(
mysql_query(
'SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zv['id'] . '" AND `st`.`team`="2" LIMIT 1'
)
);
if (isset($uz1['id']) && !isset($uz2['id'])) {
$uz1st = $u->getStats($uz1, 0);
if ($uz1st['reting'] <= floor(self::$st['reting'] * 1.27)) {
//Принимаем заявку
$sa = '';
if (self::$bot['sex'] == 2) {
$sa = 'а';
}
2023-11-06 00:40:12 +00:00
$text = ' [login:' . self::$bot['login'] . '] принял' . $sa . ' вашу заявку на бой.[reflesh_main_zv_priem:' . self::$bot['id'] . ']';
$chatMessageDto = new ChatMessage();
$chatMessageDto->setCity($uz1['city']);
$chatMessageDto->setTo($uz1['login']);
$chatMessageDto->setText($text);
$chatMessageDto->setType(6);
$chat = new Chat();
$chat->sendMsg($chatMessageDto);
2023-11-06 00:40:12 +00:00
mysql_query('UPDATE `stats` SET `zv` = "' . $zv['id'] . '",`team` = "2" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
mysql_query('UPDATE `users` SET `ipreg` = "8",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
} else {
$nozv = 1;
}
2023-11-06 00:40:12 +00:00
unset ($uz1st);
2023-11-06 00:40:12 +00:00
} else {
$nozv = 1;
}
2023-11-06 00:40:12 +00:00
} else {
$nozv = 1;
}
2023-11-06 00:40:12 +00:00
if ($nozv == 1 && self::$bot['timeMain'] < time() - rand(1, 3) * 60) {
mysql_query('UPDATE `users` SET `ipreg` = "0",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
}
2023-11-06 00:40:12 +00:00
unset($rz);
}
2023-11-06 00:40:12 +00:00
} elseif (self::$bot['ipreg'] == 2) {
2023-11-06 00:40:12 +00:00
//Принять заявку на бой (груп.)
self::bot_group_haot_zv(6);
} elseif (self::$bot['ipreg'] == 3) {
2023-11-06 00:40:12 +00:00
//Принять заявку на бой (хаот.)
self::bot_group_haot_zv(7);
} elseif (self::$bot['ipreg'] == 4) {
2023-11-06 00:40:12 +00:00
//Принять заявку на бой (турнир.)
self::e('' . self::$bot['login'] . ', я хочу принять турнир...');
} elseif (self::$bot['ipreg'] == 5) {
2023-11-06 00:40:12 +00:00
//Подать заявку (физ.)
if (self::$bot['zv'] == 0) {
2023-11-06 00:40:12 +00:00
$rz = 2;
if (self::$bot['level'] == 0) {
$rz = 1;
}
2023-11-06 00:40:12 +00:00
$ins = mysql_query(
'INSERT INTO `zayvki` (`bot1`,`bot2`,`time`,`city`,`creator`,`type`,`time_start`,`timeout`,`min_lvl_1`,`min_lvl_2`,`max_lvl_1`,`max_lvl_2`,`tm1max`,`tm2max`,`travmaChance`,`invise`,`razdel`,`comment`,`money`,`withUser`,`tm1`,`tm2`) VALUES (
"0",
"0",
"' . time() . '",
"' . self::$bot['city'] . '",
"' . self::$bot['id'] . '",
"0",
"0",
"300",
"0",
"21",
"0",
"21",
"1",
"1",
"0",
"0",
"' . $rz . '",
"",
"",
"","' . (0 + self::$bot['reting']) . '","0")'
);
$zid = mysql_insert_id();
mysql_query('UPDATE `stats` SET `zv` = "' . $zid . '", `team` = "1" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
mysql_query('UPDATE `users` SET `ipreg` = "8",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
}
2023-11-06 00:40:12 +00:00
} elseif (self::$bot['ipreg'] == 6 || self::$bot['ipreg'] == 7) {
2023-11-06 00:40:12 +00:00
self::bot_group_haot_zv(self::$bot['ipreg']);
2023-11-06 00:40:12 +00:00
if (self::$bot['zv'] == 0) {
2023-11-06 00:40:12 +00:00
$rz = 5;
2023-11-06 00:40:12 +00:00
$zv_c = [
2023-11-06 00:40:12 +00:00
'time_start' => (60 * 5), 'tm1' => rand(2, 6), 'tm2' => rand(2, 6), 'l1min' => 0, 'l1max' => 21, 'l2min' => 0, 'l2max' => 21, 'timeout' => (60 * rand(1, 3)),
2023-11-06 00:40:12 +00:00
];
2023-11-06 00:40:12 +00:00
if (self::$bot['ipreg'] == 7) {
$zv_c['tm1'] = 99;
}
2023-11-06 00:40:12 +00:00
$zv_c['tm2'] = $zv_c['tm1'];
$zv_c['l1min'] = self::$bot['level'];
$zv_c['l1max'] = self::$bot['level'];
2023-11-06 00:40:12 +00:00
if ($zv_c['l1min'] < 2) {
$zv_c['l1min'] = 2;
}
if ($zv_c['l1max'] > 21) {
$zv_c['l1max'] = 21;
}
2023-11-06 00:40:12 +00:00
$zv_c['l2min'] = $zv_c['l1min'];
$zv_c['l2max'] = $zv_c['l1max'];
2023-11-06 00:40:12 +00:00
}
2023-11-06 00:40:12 +00:00
} elseif (self::$bot['ipreg'] == 8) {
2023-11-06 00:40:12 +00:00
//Ожидание начала поединка
if (self::$bot['zv'] == 0) {
2023-11-06 00:40:12 +00:00
//Поединок не удалось начать
mysql_query('UPDATE `users` SET `ipreg` = "0",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
} else {
$zv = mysql_fetch_array(mysql_query('SELECT * FROM `zayvki` WHERE `id` = "' . self::$bot['zv'] . '" AND `cancel` = "0" AND `start` = "0" LIMIT 1'));
2023-11-06 00:40:12 +00:00
if (!isset($zv['id'])) {
2023-11-06 00:40:12 +00:00
//Обнуляем действия
mysql_query('UPDATE `users` SET `ipreg` = "0",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
2023-11-06 00:40:12 +00:00
} elseif ($zv['razdel'] == 4 || $zv['razdel'] == 5) {
2023-11-06 00:40:12 +00:00
//хаот или группа
if ($zv['time_start'] + $zv['time'] <= time()) {
file_get_contents(
'/main_bot.php?zayvka=1&r=4&uid=' . self::$bot['id'] .
'&cron_core=' . md5(self::$bot['id'] . '_brfCOreW@!_' . self::$bot['pass']) . '&pass=' . self::$bot['pass'] . '&',
false,
stream_context_create(['https' => ['timeout' => 1]])
);
}
2023-11-06 00:40:12 +00:00
} else {
//физ
if ($zv['creator'] == self::$bot['id']) {
$uz2 = mysql_fetch_array(
mysql_query(
'SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zv['id'] . '" AND `st`.`team`="2" LIMIT 1'
)
);
if (isset($uz2['id'])) {
//Заявку кто-то принял, реагируем! :)
$pr = -1;
$uz2st = $u->getStats($uz2, 0);
//btl-cof
if ($uz2st['reting'] > floor(self::$st['reting'] * 1.27)) {
//Отказываем, в 95% случаев, противник слишком силен
if (rand(0, 100) > 95) {
//отправляем бота на избиение :D
$pr = 1;
} else {
2023-11-06 00:40:12 +00:00
//отказ
$pr = 0;
}
2023-11-06 00:40:12 +00:00
} else {
$pr = 1;
}
2023-11-06 00:40:12 +00:00
//Можно принять заявку
//$pr = 0;
if ($pr == 1) {
//Прием заявки
//создаем поединок с ботом
$expB = 0;
$btl = ['players' => '', 'timeout' => $zv['timeout'], 'type' => $zv['type'], 'invis' => $zv['invis'], 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0];
$ins = mysql_query(
'INSERT INTO `battle` (`time_over`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`,`team_win`) VALUES (
"0",
"' . self::$bot['city'] . '",
"' . time() . '",
"' . $btl['players'] . '",
"' . $btl['timeout'] . '",
"' . $btl['type'] . '",
"' . $btl['invis'] . '",
"' . $btl['noinc'] . '",
"' . $btl['travmChance'] . '",
"' . $btl['typeBattle'] . '",
"' . $btl['addExp'] . '",
"' . $btl['money'] . '",
"-1")'
);
if ($ins) {
$btl_id = mysql_insert_id();
//обновляем данные о поединке
mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $uz2['id'] . '" LIMIT 1');
mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '",`ipreg` = "0" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
mysql_query('UPDATE `stats` SET `zv` = "0",`team`="1" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
mysql_query('UPDATE `stats` SET `zv` = "0",`team`="2" WHERE `id` = "' . $uz2['id'] . '" LIMIT 1');
//Если бой кулачный, то снимаем вещи
if ($btl['type'] == 1) {
mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . self::$bot['id'] . '" AND `inOdet`!=0');
mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . $uz2['id'] . '" AND `inOdet`!=0');
}
2023-11-06 00:40:12 +00:00
mysql_query('UPDATE `zayvki` SET `start` = "' . time() . '",`btl_id` = "' . $btl_id . '" WHERE `id` = "' . $zv['id'] . '" LIMIT 1');
2023-11-06 00:40:12 +00:00
//обновляем заявку, что бой начался
self::$bot['battle'] = $btl_id;
2023-11-06 00:40:12 +00:00
//Отправляем сообщение в чат всем бойцам
$chatDto = new ChatMessage();
$chatDto->setCity($u->info['city']);
$chatDto->setRoom($u->info['room']);
$chatDto->setTo($uz2['login']);
$chatDto->setType(11);
$chatDto->setSound(117);
(new Chat())->sendMsg($chatDto);
}
2023-11-06 00:40:12 +00:00
} elseif ($pr == 0) {
2023-11-06 00:40:12 +00:00
//Отказ
$sa = '';
if (self::$bot['sex'] == 2) {
2023-01-10 16:29:32 +00:00
$sa = 'а';
}
2023-11-06 00:40:12 +00:00
$text = ' [login:' . self::$bot['login'] . '] отказал' . $sa . ' вам в поединке.';
2023-01-28 02:24:37 +00:00
$chatDto = new ChatMessage();
2023-11-06 00:40:12 +00:00
$chatDto->setCity($uz2['city']);
$chatDto->setTo($uz2['login']);
2023-01-28 02:24:37 +00:00
$chatDto->setText($text);
$chatDto->setType(6);
(new Chat())->sendMsg($chatDto);
2023-11-06 00:40:12 +00:00
mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "1" WHERE `id` = "' . $uz2['id'] . '" LIMIT 1');
mysql_query('UPDATE `zayvki` SET `otk` = ( `otk` + 1 ),`bcs` = "' . (time() + rand(30, rand(60, 180))) . '" WHERE `id` = "' . $zv['id'] . '" LIMIT 1');
}
} else {
//Заявку никто не принял, возможно стоит отменить заявку вообще!
if (self::$bot['timeMain'] < time() - 30 - rand((7 / $zv['otk']), (3 * 49 / $zv['otk']))) {
mysql_query('UPDATE `stats` SET `zv` = "0" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
mysql_query('UPDATE `users` SET `ipreg` = "0",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
mysql_query('UPDATE `zayvki` SET `cancel` = "' . time() . '" WHERE `id` = "' . $zv['id'] . '" LIMIT 1');
}
}
}
}
2023-11-06 00:40:12 +00:00
//Бот уже слишком долго ждет ответа игрока, отказываемся от заявки
if (self::$bot['timeMain'] < time() - rand((30 / $zv['otk']), (135 / $zv['otk'])) && $zv['creator'] != self::$bot['id'] && ($zv['razdel'] == 1 || $zv['razdel'] == 2)) {
2023-11-06 00:40:12 +00:00
$uz1 = mysql_fetch_array(
mysql_query(
'SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zv['id'] . '" AND `st`.`team`="1" LIMIT 1'
)
);
if (isset($uz1['id'])) {
2023-11-06 00:40:12 +00:00
$sa = '';
if (self::$bot['sex'] == 2) {
$sa = 'а';
}
2023-11-06 00:40:12 +00:00
$text = ' [login:' . self::$bot['login'] . '] отозвал' . $sa . ' свой запрос на бой.';
$chatDto = new ChatMessage();
$chatDto->setCity($uz1['city']);
$chatDto->setTo($uz1['login']);
$chatDto->setText($text);
$chatDto->setType(6);
(new Chat())->sendMsg($chatDto);
}
2023-11-06 00:40:12 +00:00
mysql_query('UPDATE `zayvki` SET `otk` = ( `otk` + 1 ),`bcs` = "' . (time() + rand(30, rand(60, 180))) . '" WHERE `id` = "' . $zv['id'] . '" LIMIT 1');
mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "1" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
mysql_query('UPDATE `users` SET `ipreg` = "1",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
}
}
} else {
self::update('ipreg', 0);
}
}
2023-11-06 00:40:12 +00:00
}
2023-11-06 00:40:12 +00:00
return true;
}
static function team_zv_cf($zv, $tm)
{
$r = mysql_fetch_array(mysql_query('SELECT SUM(`btl_cof`) FROM `stats` WHERE `zv` = "' . $zv['id'] . '" AND `team` = "' . $tm . '" LIMIT 1'));
return $r[0];
}
static function new_action()
{
$r = rand(1, 7);
if (self::$bot['level'] < 2) {
if ($r == 2 || $r == 3 || $r == 6 || $r == 7 || $r == 8) {
if (rand(0, 1) == 1) {
2023-01-10 16:29:32 +00:00
$r = 1; //принимаем физ
} elseif (rand(0, 1) == 0) {
2023-01-10 16:29:32 +00:00
$r = 4; //принимаем турнир
} else {
2023-01-10 16:29:32 +00:00
$r = 5; //подаем физ
}
}
} elseif (self::$bot['level'] == 0) {
if (rand(0, 1) == 1) {
2023-01-10 16:29:32 +00:00
$r = 1; //принимаем физ
} else {
2023-01-10 16:29:32 +00:00
$r = 5; //подаем физ
}
}
if ($r == 4) {
$r = 1;
}
return $r;
}
/*/
2023-01-10 16:29:32 +00:00
Базовые функции обучения бота
/*/
2023-01-10 16:29:32 +00:00
//Бот ищет заявку в группы или хаот для своего уровня и подходящую ему
static function bot_group_haot_zv($id)
{
$rz = 5;
2023-11-06 00:40:12 +00:00
$sp = mysql_query(
'SELECT * FROM `zayvki` WHERE `razdel` = "' . $rz . '" AND `cancel` = "0" AND `start` = "0" AND `invise` = "0" AND `money3` = 0 AND (
( `min_lvl_1` <= ' . self::$bot['level'] . ' AND `max_lvl_1` >= ' . self::$bot['level'] . ' ) OR ( `min_lvl_2` <= ' . self::$bot['level'] . ' AND `max_lvl_2` >= ' . self::$bot['level'] . ' )
2023-11-06 00:40:12 +00:00
)'
);
$pr = 0;
while ($pl = mysql_fetch_array($sp)) {
if ($pr == 0) {
$go = 1;
$tm = [0, 0, 0];
if ($rz == 4) {
$tm1c = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $pl['id'] . '" AND `team` = "1" LIMIT 1'));
$tm2c = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $pl['id'] . '" AND `team` = "2" LIMIT 1'));
if ($tm1c[0] < $pl['tm1max'] && $pl['min_lvl_1'] <= self::$bot['level'] && $pl['max_lvl_1'] >= self::$bot['level']) {
$tm[1] = 1;
}
if ($tm2c[0] < $pl['tm2max'] && $pl['min_lvl_1'] <= self::$bot['level'] && $pl['max_lvl_1'] >= self::$bot['level']) {
$tm[2] = 1;
}
$atm = 1;
$tmr = 0;
if ($tm[1] == 1 && $tm[2] == 0) {
$tmr = 1;
} elseif ($tm[1] == 0 && $tm[2] == 1) {
$tmr = 2;
} else {
$tmr = rand(1, 2);
}
if ($tmr > 0) {
if ($tmr == 1) {
$atm = 2;
}
2023-01-10 16:29:32 +00:00
//Логика приема заявки
2023-11-06 00:40:12 +00:00
if ((self::team_zv_cf($pl, $atm) > (self::team_zv_cf(
$pl, $tmr
) + self::$st['reting']) * 1.67 || ($zv['tm2max'] < $zv['tm1max'] / 2) || ($zv['tm1max'] < $zv['tm2max'] / 2)) && rand(0, 100) < 90) {
$go = 0;
}
}
} elseif ($rz == 5) {
if ($pl['min_lvl_1'] == self::$bot['level'] && $pl['max_lvl_1'] == self::$bot['level']) {
$tm[1] = 1;
}
$col_p = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $pl['id'] . '"'));
$cols = $col_p[0];
if ($cols >= $pl['maxplayers']) {
$go = 0;
}
}
if ($go == 1 && ($tm[1] != 0 || $tm[2] != 0)) {
if ($tm[1] == 1 && $tm[2] == 0) {
$tm = 1;
} elseif ($tm[1] == 0 && $tm[2] == 1) {
$tm = 2;
} else {
$tm = rand(1, 2);
}
if ($rz == 5) {
$tm = 1;
}
if ($rz == 5) {
$tm = rand(1, 2);
if ($pl['invise'] == 0) {
$nxtID = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $pl['id'] . '"'));
$nxtID = $nxtID[0];
self::$bot['login2'] = '';
} else {
self::$bot['login2'] = '';
}
$blnc = 100 * self::$bot['level'] + self::$st['reting'];
$pl['tm' . $tm] += $blnc;
mysql_query('UPDATE `zayvki` SET `tm1` = "' . $pl['tm1'] . '", `tm2` = "' . $pl['tm2'] . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1');
}
if ($tm > 0 || $rz == 5) {
2023-01-10 16:29:32 +00:00
//Принимаем участие в заявке
mysql_query('UPDATE `stats` SET `zv` = "' . $pl['id'] . '",`team` = "' . $tm . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
mysql_query('UPDATE `users` SET `login2` = "' . self::$bot['login2'] . '",`ipreg` = "8" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
self::$bot['zv'] = $pl['id'];
$pr = $pl['id'];
}
} //if
} // while
}
}
2023-01-10 16:29:32 +00:00
//Добавляем нового бота
static function createNewBot($login, $sex)
{
if ($sex != 1) {
$sex = 0;
} else {
$se = 1;
}
$r = ['name' => '_', 'chatColor' => 'Black'];
2023-11-06 00:40:12 +00:00
$ins = mysql_query(
"INSERT INTO `users` (`fnq`,`host_reg`,`room`,`login`,`pass`,`ipreg`,`ip`,`city`,`cityreg`,`name`,`sex`,`chatColor`,`timereg`) VALUES (
'0',
'real_bot_user',
'0',
'" . mysql_real_escape_string($login) . "',
2023-01-10 16:29:32 +00:00
'" . md5('regnxt#$%^а0.' . time()) . "',
'127.0.0.1',
'127.0.0.1',
'capitalcity',
'capitalcity',
'" . $r['name'] . "',
'" . mysql_real_escape_string($sex) . "',
'" . $r['chatColor'] . "',
2023-11-06 00:40:12 +00:00
'" . time() . "')"
);
if ($ins) {
$uid = mysql_insert_id();
mysql_query("INSERT INTO `online` (`uid`,`timeStart`) VALUES ('" . $uid . "','" . time() . "')");
mysql_query("INSERT INTO `stats` (`id`,`stats`) VALUES ('" . $uid . "','s1=3|s2=3|s3=3|s4=3|rinv=40|m9=5|m6=10')");
mysql_query("UPDATE `users` SET `online`='" . time() . "' WHERE `uid` = '" . $uid . "' LIMIT 1");
}
}
2023-01-10 16:29:32 +00:00
//Бот находится в онлайне
2023-11-06 00:40:12 +00:00
static function _online(): void
{
2023-11-06 00:40:12 +00:00
if (self::$bot['online'] >= time() - 60) {
return;
}
2023-11-06 00:40:12 +00:00
//уровень/апп
if (self::$bot['battle'] == 0 && self::$bot['zv'] == 0) {
self::levelUp();
}
self::update('online', time());
}
2023-01-10 16:29:32 +00:00
//Бот меняет локацию
static function _loc_A($a, $b)
{
return $b;
}
static function _loc_zv()
{
if (rand(0, 100) < 5) {
$r = 1;
} else {
$r = rand(1, 4);
}
2023-01-10 16:29:32 +00:00
//будуар
if ($r == 4 && self::$bot['sex'] != 1) {
$r = rand(1, 3);
}
if (self::$bot['city'] == 'capitalcity') {
if ($r == 4) {
2023-01-10 16:29:32 +00:00
//будуар
$r = 7;
} elseif ($r == 3) {
2023-01-10 16:29:32 +00:00
//ЗВ 3
$r = 5;
} elseif ($r == 2) {
2023-01-10 16:29:32 +00:00
//ЗВ 2
$r = 2;
} else {
2023-01-10 16:29:32 +00:00
//ЗВ 1
$r = 4;
}
if (self::$bot['level'] == 0) {
2023-01-10 16:29:32 +00:00
//Новички
$r = 0;
}
}
return $r;
}
static function _loc($id)
{
if ($id == self::$bot['room']) {
2023-01-10 16:29:32 +00:00
//ничего, уже пришли
self::update('a1', 0);
} else {
2023-01-10 16:29:32 +00:00
//Прокладываем маршрут из текущей комнаты
$rid_next = self::_loc_A(self::$bot['room'], $id);
if ($rid_next > 0) {
2023-01-10 16:29:32 +00:00
//Идем туда
//$rid_next = 377;
mysql_query('UPDATE `users` SET `room` = "' . $rid_next . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
return true;
} else {
2023-01-10 16:29:32 +00:00
//Невозможно дойти туда
return false;
}
}
}
2023-11-06 00:40:12 +00:00
/** Бот получил уровень, либо ап
* @return void
*/
private static function levelUp(): void
{
2023-11-06 00:40:12 +00:00
$lvl = Db::getRow('select exp, upLevel from levels where upLevel = ?', [self::$bot['upLevel'] + 1]);
if (isset($lvl['upLevel'])) {
2023-11-06 00:40:12 +00:00
if (
self::$bot['level'] <= 5 &&
self::$bot['exp'] >= 12499 &&
Db::getValue('select count(id) from items_users where item_id = 1204 and uid = ?', [self::$bot['id']]) === 0
) {
ItemsModel::addItem(1204, self::$bot['id']);
self::$bot['exp'] = 12500;
}
if ($lvl['exp'] <= self::$bot['exp']) {
2023-11-06 00:40:12 +00:00
file_get_contents(
'/main_bot.php?uid=' . self::$bot['id'] . '&cron_core=' . md5(self::$bot['id'] . '_brfCOreW@!_' . self::$bot['pass']) . '&pass=' . self::$bot['pass'] . '&',
false,
stream_context_create(['https' => ['timeout' => 1]])
);
Db::sql('update users set clss = 0 where id = ?', [self::$bot['id']]);
}
} else {
self::e(self::$bot['login']);
}
}
2023-01-10 16:29:32 +00:00
//Вспомогательные функции
2023-11-06 00:40:12 +00:00
static function e($t): void
{
2023-01-28 02:24:37 +00:00
(new Chat())->debug($t, true);
}
static function rnd()
{
return time() + rand(3, 14) + rand(0, 14) + rand(7, 21);
}
2023-11-06 00:40:12 +00:00
private static function update($n, $v, $t = 'users'): void
{
2023-11-06 00:40:12 +00:00
Db::sql("update users set $n = ? where id = ?", [$v, self::$bot['id']]);
self::$bot[$n] = $v;
}
}