game/main_bot.php

240 lines
9.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
# Получаем IP
use Core\Db;
use User\UserIp;
const GAME = true;
include('_incl_data/__config.php');
include('_incl_data/class/__db_connect.php');
if (!in_array(UserIp::get(), ['', '127.0.0.1', '91.228.152.24', $_SERVER['SERVER_ADDR']])) {
die(UserIp::get() . '<br>' . $_SERVER['SERVER_ADDR']);
}
function e($t)
{
(new Chat())->debug($t, true);
}
if (isset($_GET['cron_core'])) {
$id = [
'id' => $_GET['uid'],
'pass' => $_GET['pass'],
];
if (md5($id['id'] . '_brfCOreW@!_' . $id['pass']) == $_GET['cron_core']) {
$uzr = mysql_fetch_array(
mysql_query(
'SELECT `id`,`login`,`pass` FROM `users` WHERE `id` = ' . $id['id'] . ' AND `pass` = "' . mysql_real_escape_string($id['pass']) . '"'));
if (isset($uzr['id'])) {
$CRON_CORE = true;
$_COOKIE['login'] = $uzr['login'];
//$_COOKIE['pass'] = $uzr['pass'];
$_POST['id'] = 'reflesh';
if (isset($_GET['atack'])) {
$_POST['atack'] = $_GET['atack'];
}
if (isset($_GET['block'])) {
$_POST['block'] = $_GET['block'];
}
if (isset($_GET['usepriem'])) {
$_POST['usepriem'] = $_GET['usepriem'];
}
if (isset($_GET['useitem'])) {
$_POST['useitem'] = $_GET['useitem'];
}
}
}
}
if (!isset($uzr['id'])) {
header('location: main.php');
die();
}
unset($uzr);
$magic = new Magic();
$u = User::start();
$filter = new Filter();
$q = new Quests;
$tjs = '';
#--------для общаги, и позже для почты
$sleep = $u->testAction('`vars` = "sleep" AND `uid` = "' . $u->info['id'] . '" LIMIT 1', 1);
if ($u->room['file'] != "objaga" && $sleep['id'] > 0) {
mysql_query('UPDATE `actions` SET `vars` = "unsleep" WHERE `id` = ' . $sleep['id']);
}
$trololo = $u->room['file'] == "objaga" || $u->room['file'] == "post" ? 0 : 1;
#--------для общаги, и позже для почты
if ($u->info['online'] < time() - 60) {
$filter->setOnline($u->info['online'], $u->info['id']);
Db::sql('update users set online = unix_timestamp(), timeMain = unix_timestamp() where id = ?', [$u->info['id']]);
} elseif ($u->info['timeMain'] < time() - 60) {
Db::sql('update users set online = unix_timestamp(), timeMain = unix_timestamp() where id = ?', [$u->info['id']]);
}
if (!isset($u->info['id']) || ($u->info['joinIP'] == 1 && $u->info['ip'] != $_SERVER['HTTP_X_REAL_IP']) || $u->info['banned'] > 0) {
die($c['exit']);
}
if (isset($_GET['atak_user']) && $u->info['battle'] == 0 && $_GET['atak_user'] != $u->info['id']) {
if ($u->room['noatack'] == 0) {
$ua = Db::getValue('select clan from users where id = ?', [$_GET['atak_user']]);
$cruw = Db::getValue(
'select id from clan_wars where ((clan1 = ? and clan2 = ?) or (clan1 = ? and clan2 = ?)) and time_finish > unix_timestamp() limit 1',
[
$ua, $u->info['clan'], $u->info['clan'], $ua,
]
);
unset($ua);
if (isset($cruw)) {
$cruw = 1;
}
$ua = Db::getRow(
'select * from stats left join users on stats.id = users.id where (atack > unix_timestamp() or atack = 1 or 1 = ?) and stats.id = ?',
[$cruw, $_GET['atak_user']]
);
if (isset($ua['id']) && $ua['online'] > time() - 520) {
$usta = $u->getStats($ua['id'], 0); // статы цели
$minHp = $usta['hpAll'] / 100 * 33; // минимальный запас здоровья цели при котором можно напасть
if ($ua['room'] == $u->info['room'] && ($minHp < $usta['hpNow'] || $ua['battle'] > 0)) {
$magic->atackUser($u->info['id'], $ua['id'], $ua['team'], $ua['battle'], $ua['bbexp'], 50);
$rtxt = '[img[items/pal_button8.gif]] &quot;' . $u->info['login'] . '&quot; совершил' . $sx . ' нападение по метке на персонажа &quot;' . $ua['login'] . '&quot;.';
$cmsg = new ChatMessage();
$cmsg->setCity($u->info['city']);
$cmsg->setRoom($u->info['room']);
$cmsg->setText($rtxt);
$cmsg->setType(6);
$cmsg->setTypeTime(1);
(new Chat())->sendMsg($cmsg);
header('location: main.php');
die();
} else {
$u->error = $ua['room'] != $u->info['room'] ?
'Персонаж находится в другой комнате' :
'Персонаж имеет слишком малый уровень жизней.';
}
} else {
//На персонажа нельзя напасть
$u->error = 'Персонаж не в игре, либо на нем нет метки';
}
}
$u->error = 'Вам запрещается атаковать без разрешения...';
}
if ($u->info['battle_text'] != '') {
//Показываем системку и заносим данные
if ($u->info['last_b'] > 0) {
Db::sql(
'insert into battle_last (battle_id, uid, time, act, align, clan, exp) values (?,?,unix_timestamp(),?,?,?,?)',
[
$u->info['last_b'],
$u->info['id'],
$u->info['last_a'],
$u->info['align'],
$u->info['clan'],
$u->info['exp'],
]
);
}
Db::sql('update stats set battle_text = ?, last_b = 0 where id = ?', ['', $u->info['id']]);
}
$act = -2;
$act2 = 0;
$u->stats = $u->getStats($u->info['id'], 0);
$u->aves = $u->ves(null);
if (!isset($u->stats['act'])) {
$u->stats['act'] = 0;
}
if ($u->stats['act'] == 1) {
$act = 1;
}
$u->rgd = $u->regen($u->info['id'], 0, 0);
//Проверка уровня
$ul = $u->testLevel();
if ($ul == 1) {
$act = 1;
}
if ($u->info['repass'] > 0 && $u->info['id'] != 5433446) {
/*-----------------------*/
if ($u->info['battle'] == 0) {
if ($act2 != -2 && $act == -2) {
$act = $act2;
}
if (!isset($u->tfer['id']) && $u->room['block_all'] == 0) {
//Одеть/снять предмет
if (isset($_GET['rstv']) && isset($_GET['inv'])) {
$act = $u->freeStatsMod($_GET['rstv'], $_GET['mf'], $u->info['id']);
} elseif (isset($_GET['ufs2']) && isset($_GET['inv'])) {
$act = $u->freeStats2Item($_GET['itmid'], $_GET['ufs2'], $u->info['id'], 1);
} elseif (isset($_GET['ufs2mf']) && isset($_GET['inv'])) {
$act = $u->freeStats2Item($_GET['itmid'], $_GET['ufs2mf'], $u->info['id'], 2);
} elseif (isset($_GET['ufsmst']) && isset($_GET['inv'])) {
$act = $u->itemsSmSave($_GET['itmid'], $_GET['ufsmst'], $u->info['id']);
} elseif (isset($_GET['ufsms']) && isset($_GET['inv'])) {
$act = $u->itemsSmSave($_GET['itmid'], $_GET['ufsms'] + 100, $u->info['id']);
} elseif (isset($_GET['ufs']) && isset($_GET['inv'])) {
$act = $u->freeStatsItem($_GET['itmid'], $_GET['ufs'], $u->info['id']);
} elseif (isset($_GET['sid']) && isset($_GET['inv'])) {
$act = $u->snatItem($_GET['sid'], $u->info['id']);
} elseif (isset($_GET['oid']) && isset($_GET['inv'])) {
$act = $u->odetItem($_GET['oid'], $u->info['id']);
} elseif (isset($_GET['item_rune']) && isset($_GET['inv'])) {
$act = $u->runeItem(null);
} elseif (isset($_GET['remitem'], $_GET['inv'])) {
$act = $u->snatItemAll($u->info['id']);
} elseif (isset($_GET['delete']) && isset($_GET['inv']) && $u->newAct($_GET['sd4'])) {
$u->deleteItem(intval($_GET['delete']), $u->info['id']);
} elseif (isset($_GET['stack']) && isset($_GET['inv'])) {
$u->stack($_GET['stack']);
} elseif (isset($_GET['unstack']) && isset($_GET['inv'])) {
$u->unstack($_GET['unstack']);
} elseif (isset($_GET['end_qst_now'])) {
$q->endq((int)$_GET['end_qst_now'], 'end');
}
//Использовать эффект
if (isset($_GET['use_pid'])) {
$magic->useItems((int)$_GET['use_pid']);
}
}
} elseif ($u->info['battle_text'] != '') {
Db::sql('update stats set battle_text = ?, last_b = 0 where id = ?', ['', $u->info['id']]);
}
if ($magic->youuse > 0) {
$act = 1;
}
//Получение статов
if ($act != -2) {
$u->stats = $u->getStats($u->info['id'], 0, 1);
$u->aves = $u->ves(null);
$act2 = $u->testItems($u->info['id'], $u->stats, 0);
if ($act2 != -2 && $act == -2) {
$act = $act2;
}
}
}
if (
(isset($_GET['zayvka']) && $u->info['battle'] == 0) ||
(isset($_GET['zayvka']) && ($_GET['r'] == 6 || $_GET['r'] == 7 || !isset($_GET['r'])) && $u->info['battle'] > 0) &&
!isset($u->tfer['id'])) {
include('modules_data/_zv.php');
}
mysql_query('UNLOCK TABLES');