2022-08-25 11:23:36 +00:00
< ? php
class BotLogic
{
public static $bot = [];
public static $st = [];
private static $btl = [];
private static $enemy = [];
private static $pr = false ;
static function inuser_go_btl ( $id , $txt = '' )
{
if ( isset ( $id [ 'id' ])) {
$ctx = stream_context_create ([ 'https' => [ 'timeout' => 30 ]]);
$val = file_get_contents ( 'https://new-combats.com/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>' ;
unset ( $val );
}
}
static function battle_priems ()
{
2023-01-10 16:29:32 +00:00
//используем приемы в бою
2022-08-25 11:23:36 +00:00
if ( self :: $st [ 'hpNow' ] > 0 && self :: $bot [ 'battle' ] > 0 ) {
$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 ];
}
$i ++ ;
}
$i = 0 ;
while ( $i < count ( $pr )) {
if ( $rz [ $i ] < 1 && $pr [ $i ] > 0 ) {
2023-01-10 16:29:32 +00:00
//Можно использовать прием, подключаем логику
2022-08-25 11:23:36 +00:00
BotPriemLogic :: start ( $i , $pr [ $i ]);
}
$i ++ ;
}
self :: $pr = false ;
}
}
static function clear_bot ()
{
2023-01-10 16:29:32 +00:00
//Очистка бота, обнуляем е г о до [0], удаляем эффекты, предметы и т.д, а текущему ставим логин delete
2022-08-25 11:23:36 +00:00
2023-01-10 16:29:32 +00:00
//Удаляем сообщения в чате
2022-08-25 11:23:36 +00:00
mysql_query ( 'DELETE FROM `chat` WHERE `to` = "' . self :: $bot [ 'login' ] . '"' );
2023-01-10 16:29:32 +00:00
//Удаляем шмотки и эффекты
2022-08-25 11:23:36 +00:00
mysql_query ( 'DELETE FROM `items_users` WHERE `uid` = "' . self :: $bot [ 'id' ] . '"' );
mysql_query ( 'DELETE FROM `eff_users` WHERE `uid` = "' . self :: $bot [ 'id' ] . '"' );
2023-01-10 16:29:32 +00:00
//Удаляем статы и поле в юзерс
2022-08-25 11:23:36 +00:00
mysql_query ( 'DELETE FROM `users` WHERE `id` = "' . self :: $bot [ 'id' ] . '" LIMIT 1' );
mysql_query ( 'DELETE FROM `stats` WHERE `id` = "' . self :: $bot [ 'id' ] . '" LIMIT 1' );
mysql_query ( 'DELETE FROM `online` WHERE `uid` = "' . self :: $bot [ 'id' ] . '" LIMIT 1' );
mysql_query ( 'DELETE FROM `actions` WHERE `uid` = "' . self :: $bot [ 'id' ] . '" LIMIT 1' );
}
static function inuser_go_main ( $id , $txt = '' )
{
if ( isset ( $id [ 'id' ])) {
$ctx = stream_context_create ([ 'https' => [ 'timeout' => 1 ]]);
file_get_contents ( 'https://new-combats.com/main_bot.php?uid=' . $id [ 'id' ] . '&cron_core=' . md5 ( $id [ 'id' ] . '_brfCOreW@!_' . $id [ 'pass' ]) . '&pass=' . $id [ 'pass' ] . '&' . $txt , false , $ctx );
}
}
static function inuser_go_zv ( $id , $txt = '' )
{
if ( isset ( $id [ 'id' ])) {
$ctx = stream_context_create ([ 'https' => [ 'timeout' => 1 ]]);
file_get_contents ( 'https://new-combats.com/main_bot.php?zayvka=1&r=4&uid=' . $id [ 'id' ] . '&cron_core=' . md5 ( $id [ 'id' ] . '_brfCOreW@!_' . $id [ 'pass' ]) . '&pass=' . $id [ 'pass' ] . '&' . $txt , false , $ctx );
}
}
2023-01-10 16:29:32 +00:00
//ПРоверка на файтрум
2022-08-25 11:23:36 +00:00
static function test_fr ( $id , $city = 'capitalcity' )
{
return $city != 'capitalcity' || $id == 0 || $id == 2 || $id == 4 || $id == 5 || $id == 7 || $id == 377 ;
}
2023-01-10 16:29:32 +00:00
//Действия бота вне боя
2022-08-25 11:23:36 +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
//Можно: сменить фулл, перейти в другую комнату, входить наймом, делать бафы
2022-08-25 11:23:36 +00:00
2023-01-10 16:29:32 +00:00
//Переходим в другую комнату
2022-08-25 11:23:36 +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
if ( self :: $bot [ 'city' ] == 'capitalcity' && ! self :: test_fr ( self :: $bot [ 'room' ])) {
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
//Действие в комнате
//Магазин
//Покупаем кристалл вечности
2022-08-25 11:23:36 +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
//Покупаем кристалл
2022-08-25 11:23:36 +00:00
$u -> addItem ( 1204 , self :: $bot [ 'id' ]);
}
}
2023-01-10 16:29:32 +00:00
//Переходим в комнату для сражений
2022-08-25 11:23:36 +00:00
self :: _loc ( self :: _loc_zv ());
}
}
2023-01-10 16:29:32 +00:00
//Если бот уже набрал опыт для перехода на 6-ой
2022-08-25 11:23:36 +00:00
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
//Похоже что боту пора сменить комплект ))
2022-08-25 11:23:36 +00:00
if ( self :: $bot [ 'clss' ] == 0 ) {
2023-01-10 16:29:32 +00:00
//Выбираем новый класс и шмотки :)
2022-08-25 11:23:36 +00:00
2023-01-10 16:29:32 +00:00
//Меняем класс
2022-08-25 11:23:36 +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 из нескольких
2022-08-25 11:23:36 +00:00
$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
/* Забираем старые шмотки и эффекты */
2022-08-25 11:23:36 +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
/* Обновляем статы и приемы */
2022-08-25 11:23:36 +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
//Выдаем и надеваем предмет
2022-08-25 11:23:36 +00:00
//$it = $u->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 () + 9640000 ) . '","' . $eff [ 'mdata' ] . '","' . $eff [ 'noAce' ] . '")' );
}
$i ++ ;
}
$i = 1 ;
while ( $i <= 20 ) {
if ( $com [ 'w' . $i ] > 0 ) {
2023-01-10 16:29:32 +00:00
//Выдаем и надеваем предмет
2022-08-25 11:23:36 +00:00
$it = $u -> 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 ) {
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-ый уровень, а сидит в новичках :) кидаем е г о в залы
2022-08-25 11:23:36 +00:00
if ( self :: $bot [ 'city' ] == 'capitalcity' && self :: $bot [ 'level' ] < 2 && self :: $bot [ 'room' ] == 0 && self :: $bot [ 'a1' ] == 0 ) {
self :: _loc ( self :: _loc_zv ());
}
}
}
public $bot_last_action = [];
2023-01-10 16:29:32 +00:00
//Включаем логику бота
2022-08-25 11:23:36 +00:00
static function start ( $id )
{
if ( ! isset ( $bot_last_action [ $id ])) {
global $u ;
$bot_last_action [ $id ] ++ ;
self :: $bot = mysql_fetch_array ( mysql_query ( 'SELECT `u`.*,`st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON `st`.`id` = `u`.`id` WHERE `u`.`id` = "' . mysql_real_escape_string ( $id ) . '" AND `u`.`banned` = "0" LIMIT 1' ));
if ( isset ( self :: $bot [ 'id' ])) {
self :: $st = $u -> getStats ( self :: $bot , 0 );
2023-01-10 16:29:32 +00:00
//Заходим ботом в онлайн
2022-08-25 11:23:36 +00:00
self :: _online ();
if ( self :: $bot [ 'battle' ] > 0 ) {
2023-01-10 16:29:32 +00:00
//Действия бота в поединке
2022-08-25 11:23:36 +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' ])) {
$go_bot = false ;
$go_txt = '' ;
$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-01-10 16:29:32 +00:00
//Проверяем возможность использования приемов и делаем список что использовать
//используем приемы
2022-08-25 11:23:36 +00:00
self :: battle_priems ();
2023-01-10 16:29:32 +00:00
//Бот сделал удар, но никто не ответил, проверяем таймаут и если что заходим
2022-08-25 11:23:36 +00:00
if ( isset ( $a1 [ 'id' ]) && $a1 [ 'time' ] + self :: $btl [ 'timeout' ] < time ()) {
$go_bot = true ;
}
2023-01-10 16:29:32 +00:00
//Т У Т test
2022-08-25 11:23:36 +00:00
$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-01-10 16:29:32 +00:00
//Размен с противником
2022-08-25 11:23:36 +00:00
self :: $enemy = mysql_fetch_array ( mysql_query ( 'SELECT * FROM `stats` WHERE `id` = "' . self :: $bot [ 'enemy' ] . '" LIMIT 1' ));
} else {
2023-01-10 16:29:32 +00:00
//Заходим на персонажа
2022-08-25 11:23:36 +00:00
self :: inuser_go_btl ( self :: $bot );
2023-01-10 16:29:32 +00:00
//Поединок уже завершился, выкидываем из боя
2022-08-25 11:23:36 +00:00
self :: $bot [ 'battle' ] = 0 ;
mysql_query ( 'UPDATE `users` SET `battle` = "' . self :: $bot [ 'battle' ] . '" WHERE `id` = "' . mysql_real_escape_string ( self :: $bot [ 'id' ]) . '" LIMIT 1 ' );
}
} else {
2023-01-10 16:29:32 +00:00
//Действия бота вне поединка
2022-08-25 11:23:36 +00:00
if ( self :: $bot [ 'timeMain' ] < time ()) {
mysql_query ( 'UPDATE `chat` SET `time` = "' . time () . '" WHERE `to` = "' . self :: $bot [ 'login' ] . '" AND `time` = "-1"' );
2023-01-10 16:29:32 +00:00
//Действие возможно произвести
2022-08-25 11:23:36 +00:00
if ( self :: $bot [ 'ipreg' ] == 1 || self :: $bot [ 'ipreg' ] == 2 || self :: $bot [ 'ipreg' ] == 4 ) {
2023-01-10 16:29:32 +00:00
//Принимаем только хаоты
2022-08-25 11:23:36 +00:00
self :: $bot [ 'ipreg' ] = 3 ;
}
if ( self :: $bot [ 'ipreg' ] == 5 ) {
2023-01-10 16:29:32 +00:00
//Подаем только хаоты
2022-08-25 11:23:36 +00:00
self :: $bot [ 'ipreg' ] = 7 ;
}
//
if ( self :: $bot [ 'ipreg' ] == 0 || ! self :: test_fr ( self :: $bot [ 'room' ])) {
2023-01-10 16:29:32 +00:00
//Обновляем эффекты
2022-08-25 11:23:36 +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 ) {
2023-01-10 16:29:32 +00:00
//Выдаем и надеваем предмет
2022-08-25 11:23:36 +00:00
//$it = $u->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 ++ ;
}
}
}
if ( self :: $bot [ 'level' ] >= 13 && self :: $bot [ 'clan' ] == 0 && self :: $bot [ 'align' ] == 0 ) {
2023-01-10 16:29:32 +00:00
//обнуляем бота
2022-08-25 11:23:36 +00:00
self :: clear_bot ();
}
2023-01-10 16:29:32 +00:00
//Только-что из поединка, хиляется
2022-08-25 11:23:36 +00:00
if ( ! self :: test_fr ( self :: $bot [ 'room' ])) {
2023-01-10 16:29:32 +00:00
//В какой-то локации, видимо что-то делаем
2022-08-25 11:23:36 +00:00
} elseif ( self :: $st [ 'hpNow' ] >= self :: $st [ 'hpAll' ]) {
echo 1 ;
2023-01-10 16:29:32 +00:00
//Приступаем к активной деятельности :)
2022-08-25 11:23:36 +00:00
mysql_query ( 'UPDATE `stats` SET `zv`= "0",`team`= "0",`hpNow` = "' . self :: $st [ 'hpNow' ] . '",`mpNow` = "' . self :: $st [ 'mpNow' ] . '" WHERE `id` = "' . self :: $bot [ 'id' ] . '" LIMIT 1' );
2023-01-10 16:29:32 +00:00
mysql_query ( 'UPDATE `users` SET `ipreg` = "' . self :: new_action () . '",`mod_zvanie` = "Стажер" WHERE `id` = "' . self :: $bot [ 'id' ] . '" LIMIT 1' );
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
if ( self :: $bot [ 'mod_zvanie' ] == 'С та же р 100500' ) {
//Надеваем комплект + обновляем эффекты
2022-08-25 11:23:36 +00:00
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 ;
}
} else {
$od = 11 ;
}
}
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 ;
}
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-01-10 16:29:32 +00:00
mysql_query ( 'UPDATE `items_users` SET `mod_zvanie` = "Cтaже р " WHERE `id` = "' . self :: $bot [ 'id' ] . '" LIMIT 1' );
2022-08-25 11:23:36 +00:00
}
2023-01-10 16:29:32 +00:00
//Хиляемся дальше
2022-08-25 11:23:36 +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' );
}
$reg = $u -> regen ( self :: $bot [ 'id' ], self :: $st , 0 );
}
self :: actions ();
self :: update ( 'timeMain' , self :: rnd ());
} elseif ( self :: $bot [ 'ipreg' ] == 1 ) {
2023-01-10 16:29:32 +00:00
//Принять заявку на бой (физ.)
2022-08-25 11:23:36 +00:00
if ( self :: $bot [ 'zv' ] == 0 ) {
2023-01-10 16:29:32 +00:00
//Выделяем подходящую заявку в физ. поединке
2022-08-25 11:23:36 +00:00
$rz = 2 ;
$zv = 0 ;
$nozv = 0 ;
if ( self :: $bot [ 'level' ] == 0 ) {
$rz = 1 ;
}
$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 )) {
2023-01-10 16:29:32 +00:00
//Принимаем заявку
2022-08-25 11:23:36 +00:00
$sa = '' ;
if ( self :: $bot [ 'sex' ] == 2 ) {
2023-01-10 16:29:32 +00:00
$sa = 'а ' ;
2022-08-25 11:23:36 +00:00
}
2023-01-10 16:29:32 +00:00
$text = ' [login:' . self :: $bot [ 'login' ] . '] принял' . $sa . ' вашу заявку на бой.[reflesh_main_zv_priem:' . self :: $bot [ 'id' ] . ']' ;
2023-01-28 02:24:37 +00:00
$chatMessageDto = new ChatMessage ();
$chatMessageDto -> setCity ( $uz1 [ 'city' ]);
$chatMessageDto -> setTo ( $uz1 [ 'login' ]);
$chatMessageDto -> setText ( $text );
$chatMessageDto -> setType ( 6 );
$chat = new Chat ();
$chat -> sendMsg ( $chatMessageDto );
2022-08-25 11:23:36 +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 ;
}
unset ( $uz1st );
} else {
$nozv = 1 ;
}
} else {
$nozv = 1 ;
}
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' );
}
unset ( $rz );
}
} elseif ( self :: $bot [ 'ipreg' ] == 2 ) {
2023-01-10 16:29:32 +00:00
//Принять заявку на бой (груп.)
2022-08-25 11:23:36 +00:00
self :: bot_group_haot_zv ( 6 );
} elseif ( self :: $bot [ 'ipreg' ] == 3 ) {
2023-01-10 16:29:32 +00:00
//Принять заявку на бой (хаот.)
2022-08-25 11:23:36 +00:00
self :: bot_group_haot_zv ( 7 );
} elseif ( self :: $bot [ 'ipreg' ] == 4 ) {
2023-01-10 16:29:32 +00:00
//Принять заявку на бой (турнир.)
self :: e ( '' . self :: $bot [ 'login' ] . ', я хочу принять турнир...' );
2022-08-25 11:23:36 +00:00
} elseif ( self :: $bot [ 'ipreg' ] == 5 ) {
2023-01-10 16:29:32 +00:00
//Подать заявку (физ.)
2022-08-25 11:23:36 +00:00
if ( self :: $bot [ 'zv' ] == 0 ) {
$rz = 2 ;
if ( self :: $bot [ 'level' ] == 0 ) {
$rz = 1 ;
}
$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' );
}
} elseif ( self :: $bot [ 'ipreg' ] == 6 || self :: $bot [ 'ipreg' ] == 7 ) {
self :: bot_group_haot_zv ( self :: $bot [ 'ipreg' ]);
if ( self :: $bot [ 'zv' ] == 0 ) {
$rz = 5 ;
$zv_c = [
'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 )),
];
if ( self :: $bot [ 'ipreg' ] == 7 ) {
$zv_c [ 'tm1' ] = 99 ;
}
$zv_c [ 'tm2' ] = $zv_c [ 'tm1' ];
$zv_c [ 'l1min' ] = self :: $bot [ 'level' ];
$zv_c [ 'l1max' ] = self :: $bot [ 'level' ];
if ( $zv_c [ 'l1min' ] < 2 ) {
$zv_c [ 'l1min' ] = 2 ;
}
if ( $zv_c [ 'l1max' ] > 21 ) {
$zv_c [ 'l1max' ] = 21 ;
}
$zv_c [ 'l2min' ] = $zv_c [ 'l1min' ];
$zv_c [ 'l2max' ] = $zv_c [ 'l1max' ];
}
} elseif ( self :: $bot [ 'ipreg' ] == 8 ) {
2023-01-10 16:29:32 +00:00
//Ожидание начала поединка
2022-08-25 11:23:36 +00:00
if ( self :: $bot [ 'zv' ] == 0 ) {
2023-01-10 16:29:32 +00:00
//Поединок не удалось начать
2022-08-25 11:23:36 +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' ));
if ( ! isset ( $zv [ 'id' ])) {
2023-01-10 16:29:32 +00:00
//Обнуляем действия
2022-08-25 11:23:36 +00:00
mysql_query ( 'UPDATE `users` SET `ipreg` = "0",`timeMain` = "' . self :: rnd () . '" WHERE `id` = "' . self :: $bot [ 'id' ] . '" LIMIT 1' );
} elseif ( $zv [ 'razdel' ] == 4 || $zv [ 'razdel' ] == 5 ) {
2023-01-10 16:29:32 +00:00
//хаот или группа
2022-08-25 11:23:36 +00:00
if ( $zv [ 'time_start' ] + $zv [ 'time' ] <= time ()) {
self :: inuser_go_zv ( self :: $bot );
}
} else {
2023-01-10 16:29:32 +00:00
//физ
2022-08-25 11:23:36 +00:00
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' ])) {
2023-01-10 16:29:32 +00:00
//Заявку кто-то принял, реагируем! :)
2022-08-25 11:23:36 +00:00
$pr = - 1 ;
$uz2st = $u -> getStats ( $uz2 , 0 );
//btl-cof
if ( $uz2st [ 'reting' ] > floor ( self :: $st [ 'reting' ] * 1.27 )) {
2023-01-10 16:29:32 +00:00
//Отказываем, в 95% случаев, противник слишком силен
2022-08-25 11:23:36 +00:00
if ( rand ( 0 , 100 ) > 95 ) {
2023-01-10 16:29:32 +00:00
//отправляем бота на избиение :D
2022-08-25 11:23:36 +00:00
$pr = 1 ;
} else {
2023-01-10 16:29:32 +00:00
//отказ
2022-08-25 11:23:36 +00:00
$pr = 0 ;
}
} else {
$pr = 1 ;
}
2023-01-10 16:29:32 +00:00
//Можно принять заявку
2022-08-25 11:23:36 +00:00
//$pr = 0;
if ( $pr == 1 ) {
2023-01-10 16:29:32 +00:00
//Прием заявки
//создаем поединок с ботом
2022-08-25 11:23:36 +00:00
$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 ();
2023-01-10 16:29:32 +00:00
//обновляем данные о поединке
2022-08-25 11:23:36 +00:00
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' );
2023-01-10 16:29:32 +00:00
//Если бой кулачный, то снимаем вещи
2022-08-25 11:23:36 +00:00
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' );
}
mysql_query ( 'UPDATE `zayvki` SET `start` = "' . time () . '",`btl_id` = "' . $btl_id . '" WHERE `id` = "' . $zv [ 'id' ] . '" LIMIT 1' );
2023-01-10 16:29:32 +00:00
//обновляем заявку, что бой начался
2022-08-25 11:23:36 +00:00
self :: $bot [ 'battle' ] = $btl_id ;
2023-01-10 16:29:32 +00:00
//Отправляем сообщение в чат всем бойцам
2023-01-28 02:24:37 +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 );
2022-08-25 11:23:36 +00:00
}
} elseif ( $pr == 0 ) {
2023-01-10 16:29:32 +00:00
//Отказ
2022-08-25 11:23:36 +00:00
$sa = '' ;
if ( self :: $bot [ 'sex' ] == 2 ) {
2023-01-10 16:29:32 +00:00
$sa = 'а ' ;
2022-08-25 11:23:36 +00:00
}
2023-01-10 16:29:32 +00:00
$text = ' [login:' . self :: $bot [ 'login' ] . '] отказал' . $sa . ' вам в поединке.' ;
2023-01-28 02:24:37 +00:00
$chatDto = new ChatMessage ();
$chatDto -> setCity ( $uz2 [ 'city' ]);
$chatDto -> setTo ( $uz2 [ 'login' ]);
$chatDto -> setText ( $text );
$chatDto -> setType ( 6 );
( new Chat ()) -> sendMsg ( $chatDto );
2022-08-25 11:23:36 +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 {
2023-01-10 16:29:32 +00:00
//Заявку никто не принял, возможно стоит отменить заявку вообще!
2022-08-25 11:23:36 +00:00
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-01-10 16:29:32 +00:00
//Бот уже слишком долго ждет ответа игрока, отказываемся от заявки
2022-08-25 11:23:36 +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 )) {
$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' ])) {
$sa = '' ;
if ( self :: $bot [ 'sex' ] == 2 ) {
2023-01-10 16:29:32 +00:00
$sa = 'а ' ;
2022-08-25 11:23:36 +00:00
}
2023-01-10 16:29:32 +00:00
$text = ' [login:' . self :: $bot [ 'login' ] . '] отозвал' . $sa . ' свой запрос на бой.' ;
2023-01-28 02:24:37 +00:00
$chatDto = new ChatMessage ();
$chatDto -> setCity ( $uz1 [ 'city' ]);
$chatDto -> setTo ( $uz1 [ 'login' ]);
$chatDto -> setText ( $text );
$chatDto -> setType ( 6 );
( new Chat ()) -> sendMsg ( $chatDto );
2022-08-25 11:23:36 +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 );
}
}
}
return true ;
} else {
return false ;
}
}
}
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 ; //принимаем физ
2022-08-25 11:23:36 +00:00
} elseif ( rand ( 0 , 1 ) == 0 ) {
2023-01-10 16:29:32 +00:00
$r = 4 ; //принимаем турнир
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
$r = 5 ; //подаем физ
2022-08-25 11:23:36 +00:00
}
}
} elseif ( self :: $bot [ 'level' ] == 0 ) {
if ( rand ( 0 , 1 ) == 1 ) {
2023-01-10 16:29:32 +00:00
$r = 1 ; //принимаем физ
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
$r = 5 ; //подаем физ
2022-08-25 11:23:36 +00:00
}
}
if ( $r == 4 ) {
$r = 1 ;
}
return $r ;
}
/*/
2023-01-10 16:29:32 +00:00
Базовые функции обучения бота
2022-08-25 11:23:36 +00:00
/*/
2023-01-10 16:29:32 +00:00
//Бот ищет заявку в группы или хаот для своего уровня и подходящую ему
2022-08-25 11:23:36 +00:00
static function bot_group_haot_zv ( $id )
{
$rz = 5 ;
$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 '] . ' )
) ' );
$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
//Логика приема заявки
2022-08-25 11:23:36 +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
//Принимаем участие в заявке
2022-08-25 11:23:36 +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
//Добавляем нового бота
2022-08-25 11:23:36 +00:00
static function createNewBot ( $login , $sex )
{
if ( $sex != 1 ) {
$sex = 0 ;
} else {
$se = 1 ;
}
2023-01-06 14:57:25 +00:00
$r = [ 'name' => '_' , 'chatColor' => 'Black' ];
2022-08-25 11:23:36 +00:00
2023-01-06 14:57:25 +00:00
$ins = mysql_query ( " INSERT INTO `users` (`fnq`,`host_reg`,`room`,`login`,`pass`,`ipreg`,`ip`,`city`,`cityreg`,`name`,`sex`,`chatColor`,`timereg`) VALUES (
2022-08-25 11:23:36 +00:00
'0' ,
'real_bot_user' ,
'0' ,
'" . mysql_real_escape_string($login) . "' ,
2023-01-10 16:29:32 +00:00
'" . md5(' regnxt #$%^а 0.' . time()) . "',
2022-08-25 11:23:36 +00:00
'127.0.0.1' ,
'127.0.0.1' ,
'capitalcity' ,
'capitalcity' ,
'" . $r[' name '] . "' ,
'" . mysql_real_escape_string($sex) . "' ,
'" . $r[' chatColor '] . "' ,
'" . 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
//Бот находится в онлайне
2022-08-25 11:23:36 +00:00
static function _online ()
{
if ( self :: $bot [ 'online' ] < time () - 60 ) {
2023-01-10 16:29:32 +00:00
//уровень/апп
2022-08-25 11:23:36 +00:00
if ( self :: $bot [ 'battle' ] == 0 && self :: $bot [ 'zv' ] == 0 ) {
self :: _level ();
}
self :: update ( 'online' , time ());
}
}
2023-01-10 16:29:32 +00:00
//Бот меняет локацию
2022-08-25 11:23:36 +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
//будуар
2022-08-25 11:23:36 +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
//будуар
2022-08-25 11:23:36 +00:00
$r = 7 ;
} elseif ( $r == 3 ) {
2023-01-10 16:29:32 +00:00
//З В 3
2022-08-25 11:23:36 +00:00
$r = 5 ;
} elseif ( $r == 2 ) {
2023-01-10 16:29:32 +00:00
//З В 2
2022-08-25 11:23:36 +00:00
$r = 2 ;
} else {
2023-01-10 16:29:32 +00:00
//З В 1
2022-08-25 11:23:36 +00:00
$r = 4 ;
}
if ( self :: $bot [ 'level' ] == 0 ) {
2023-01-10 16:29:32 +00:00
//Новички
2022-08-25 11:23:36 +00:00
$r = 0 ;
}
}
return $r ;
}
static function _loc ( $id )
{
if ( $id == self :: $bot [ 'room' ]) {
2023-01-10 16:29:32 +00:00
//ничего, уже пришли
2022-08-25 11:23:36 +00:00
self :: update ( 'a1' , 0 );
} else {
2023-01-10 16:29:32 +00:00
//Прокладываем маршрут из текущей комнаты
2022-08-25 11:23:36 +00:00
$rid_next = self :: _loc_A ( self :: $bot [ 'room' ], $id );
if ( $rid_next > 0 ) {
2023-01-10 16:29:32 +00:00
//Идем туда
2022-08-25 11:23:36 +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
//Невозможно дойти туда
2022-08-25 11:23:36 +00:00
return false ;
}
}
}
2023-01-10 16:29:32 +00:00
//Бот получил уровень, либо апп
2022-08-25 11:23:36 +00:00
static function _level ()
{
global $u ;
$lvl = mysql_fetch_array ( mysql_query ( 'SELECT `upLevel`,`nextLevel`,`exp`,`money`,`money_bonus1`,`money_bonus2`,`ability`,`skills`,`nskills`,`sskills`,`expBtlMax`,`hpRegen`,`mpRegen`,`money2` FROM `levels` WHERE `upLevel`="' . ( self :: $bot [ 'upLevel' ] + 1 ) . '" LIMIT 1' ));
if ( isset ( $lvl [ 'upLevel' ])) {
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' ])) {
$u -> addItem ( 1204 , self :: $bot [ 'id' ]);
self :: $bot [ 'exp' ] = 12500 ;
}
}
if ( $lvl [ 'exp' ] <= self :: $bot [ 'exp' ]) {
self :: inuser_go_main ( self :: $bot );
mysql_query ( 'UPDATE `users` SET `clss` = "0" WHERE `id` = "' . self :: $bot [ 'id' ] . '" LIMIT 1' );
}
} else {
self :: e ( self :: $bot [ 'login' ]);
}
}
2023-01-10 16:29:32 +00:00
//Вспомогательные функции
2022-08-25 11:23:36 +00:00
static function e ( $t )
{
2023-01-28 02:24:37 +00:00
( new Chat ()) -> debug ( $t , true );
2022-08-25 11:23:36 +00:00
}
static function rnd ()
{
return time () + rand ( 3 , 14 ) + rand ( 0 , 14 ) + rand ( 7 , 21 );
}
static function update ( $n , $v , $t = 'users' )
{
self :: $bot [ $n ] = $v ;
mysql_query ( 'UPDATE `' . $t . '` SET `' . $n . '` = "' . self :: $bot [ $n ] . '" WHERE `id` = "' . self :: $bot [ 'id' ] . '" LIMIT 1' );
}
}