game/_incl_data/class/Battle.php

9791 lines
476 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
use Core\Config;
use Core\Db;
use Helper\Conversion;
use User\ItemsModel;
use User\StatsModel;
class Battle
{
public array $mncolor = [
1 => '006699',
2 => '006699',
3 => '006699',
4 => '006699',
5 => '006699',
6 => '006699',
7 => '006699',
]; //не крит
public array $mcolor = [
1 => 'A00000',
2 => '008080',
3 => '0000FF',
4 => 'A52A2A',
5 => '006699',
6 => '006699',
7 => '006699',
]; //не крит
public array $mname = [
'огонь' => 1,
'воздух' => 2,
'вода' => 3,
'земля' => 4,
'свет' => 5,
'тьма' => 6,
'серая' => 7,
];
public array $prm = [
/*
act: 1 - когда персонаж получает повреждение
2 - когда персонаж наносит удар
type_of: 1 - уворот
2 - крит
3 - атака
4 - защита
5 - прочее
*/
1 => ['name' => 'Прикрыться', 'act' => 1, 'type_of' => 5],
2 => ['name' => 'Вломить', 'act' => 2, 'type_of' => 3],
4 => ['name' => 'Сильный удар', 'act' => 2, 'type_of' => 3],
7 => ['name' => 'Активная защита', 'act' => 1, 'type_of' => 4],
290 => ['name' => 'Вытягивание души', 'act' => 1, 'type_of' => 4],
//Канализация
294 => ['name' => 'Зловонная Вода', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3],
295 => ['name' => 'Проткнуть', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3],
296 => ['name' => 'Гнилая Кровь', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3],
297 => ['name' => 'Собраться', 'act' => 2, 'type_of' => 0, 'moment' => 3],
298 => ['name' => 'Приказ Слабости', 'act' => 2, 'type_of' => 3],
141 => ['name' => 'Призрачная защита', 'act' => 2, 'type_of' => 4],
147 => ['name' => 'Призрачный кинжал', 'act' => 2, 'type_of' => 4],
148 => ['name' => 'Призрачный топор', 'act' => 2, 'type_of' => 4],
149 => ['name' => 'Призрачный удар', 'act' => 2, 'type_of' => 4],
150 => ['name' => 'Призрачное лезвие', 'act' => 2, 'type_of' => 4],
142 => ['name' => 'Призрачный огонь', 'act' => 2, 'type_of' => 4],
144 => ['name' => 'Призрачный воздух', 'act' => 2, 'type_of' => 4],
146 => ['name' => 'Призрачная земля', 'act' => 2, 'type_of' => 4],
145 => ['name' => 'Призрачная вода', 'act' => 2, 'type_of' => 4],
8 => ['name' => 'Танец ветра', 'act' => 1, 'type_of' => 1],
9 => ['name' => 'Дикая удача', 'act' => 2, 'type_of' => 3],
10 => ['name' => 'Предвидение', 'act' => 1, 'type_of' => 1],
11 => ['name' => 'Удачный удар', 'act' => 2, 'type_of' => 3],
45 => ['name' => 'Полная защита', 'act' => 1, 'type_of' => 4],
47 => ['name' => 'Слепая удача', 'act' => 2, 'type_of' => 2],
48 => ['name' => 'Танец лезвий', 'act' => 1, 'type_of' => 1],
49 => ['name' => 'Второе дыхание', 'act' => 1, 'type_of' => 1],
138 => ['name' => 'Сокрушающий удар', 'act' => 2, 'type_of' => 3],
140 => ['name' => 'Абсолютная защита', 'act' => 1, 'type_of' => 4],
193 => ['name' => 'Усиленные удары', 'act' => 2, 'type_of' => 3],
204 => ['name' => 'Обречённость', 'act' => 2, 'type_of' => 0, 'moment' => 3],
211 => ['name' => 'Агрессивная защита', 'act' => 1, 'type_of' => 4],
213 => ['name' => 'Коварный Уход', 'act' => 1, 'type_of' => 4],
215 => ['name' => 'Скрытая ловкость', 'act' => 1, 'type_of' => 1],
216 => ['name' => 'Скрытая сила', 'act' => 2, 'type_of' => 2],
217 => ['name' => 'Разгадать тактику', 'act' => 2, 'type_of' => 0, 'moment' => 3],
219 => ['name' => 'Точный удар', 'act' => 2, 'type_of' => 3],
220 => ['name' => 'Ставка на опережение', 'act' => 2, 'type_of' => 0, 'moment' => 3],
222 => ['name' => 'Последний удар', 'act' => 2, 'type_of' => 3],
225 => ['name' => 'Магическая защита', 'act' => 1, 'type_of' => 4],
226 => ['name' => 'Возмездие', 'act' => 1, 'type_of' => 4],
231 => ['name' => 'Глухая защита', 'act' => 2, 'type_of' => 0, 'moment' => 3],
234 => ['name' => 'Осторожность', 'act' => 2, 'type_of' => 4],
235 => ['name' => 'Шокирующий удар', 'act' => 2, 'type_of' => 3],
342 => ['name' => 'Круговая Защита', 'act' => 0, 'type_of' => 0],
343 => ['name' => 'Натиск', 'act' => 0, 'type_of' => 0],
237 => ['name' => 'Разведка боем', 'act' => 2, 'type_of' => 3],
239 => ['name' => 'Поступь смерти', 'act' => 2, 'type_of' => 3],
240 => ['name' => 'Хлебнуть крови', 'act' => 2, 'type_of' => 5]
,
21 => ['name' => 'Оледенение [4]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
73 => ['name' => 'Оледенение [5]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
74 => ['name' => 'Оледенение [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
75 => ['name' => 'Оледенение [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
76 => ['name' => 'Оледенение [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
77 => ['name' => 'Оледенение [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
78 => ['name' => 'Оледенение [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
79 => ['name' => 'Оледенение [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
22 => ['name' => 'Отравление [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
80 => ['name' => 'Отравление [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
81 => ['name' => 'Отравление [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
82 => ['name' => 'Отравление [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
83 => ['name' => 'Отравление [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
84 => ['name' => 'Отравление [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
36 => ['name' => 'Регенерация [5]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
85 => ['name' => 'Регенерация [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
86 => ['name' => 'Регенерация [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
87 => ['name' => 'Регенерация [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
88 => ['name' => 'Регенерация [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
89 => ['name' => 'Регенерация [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
90 => ['name' => 'Регенерация [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
23 => ['name' => 'Ядовитое Облако [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
70 => ['name' => 'Ядовитое Облако [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
71 => ['name' => 'Ядовитое Облако [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
72 => ['name' => 'Ядовитое Облако [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
269 => ['name' => 'Иней [8]', 'act' => 2, 'type_of' => 9]
,
276 => ['name' => 'Иней [9]', 'act' => 2, 'type_of' => 9]
,
277 => ['name' => 'Иней [10]', 'act' => 2, 'type_of' => 9]
,
270 => ['name' => 'Духи Льда', 'act' => 2, 'type_of' => 5, 'type_sec' => 5]
,
280 => ['name' => 'Хватка Льда', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
281 => ['name' => 'Жертва Воде', 'act' => 2, 'type_of' => 5]
,
282 => ['name' => 'Ледяное Спасение', 'act' => 2, 'type_of' => 5],
24 => ['name' => 'Медитация', 'act' => 2, 'type_of' => 0, 'moment' => 3]
,
210 => ['name' => 'Магический Барьер [4]', 'act' => 2, 'type_of' => 8]
,
209 => ['name' => 'Магический Барьер [7]', 'act' => 2, 'type_of' => 8]
,
208 => ['name' => 'Магический Барьер [8]', 'act' => 2, 'type_of' => 8]
,
207 => ['name' => 'Магический Барьер [9]', 'act' => 2, 'type_of' => 8]
,
206 => ['name' => 'Магический Барьер [10]', 'act' => 2, 'type_of' => 8]
,
284 => ['name' => 'Магический Барьер [11]', 'act' => 2, 'type_of' => 8]
,
175 => ['name' => 'Магический Барьер [7]', 'act' => 2, 'type_of' => 8]
,
176 => ['name' => 'Магический Барьер [8]', 'act' => 2, 'type_of' => 8]
,
177 => ['name' => 'Магический Барьер [9]', 'act' => 2, 'type_of' => 8]
,
178 => ['name' => 'Магический Барьер [10]', 'act' => 2, 'type_of' => 8]
,
179 => ['name' => 'Магический Барьер [11]', 'act' => 2, 'type_of' => 8]
,
42 => ['name' => 'Метеорит [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
121 => ['name' => 'Метеорит [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
122 => ['name' => 'Метеорит [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
123 => ['name' => 'Метеорит [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
124 => ['name' => 'Метеорит [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
125 => ['name' => 'Метеорит [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
249 => ['name' => 'Каменный Щит', 'act' => 2, 'type_of' => 4]
,
248 => ['name' => 'Песчаный Щит', 'act' => 2, 'type_of' => 4]
,
251 => ['name' => 'Заземление: Плюс', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
252 => ['name' => 'Заземление: Минус', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
273 => ['name' => 'Туманный Образ [10]', 'act' => 1, 'type_of' => 4]
,
286 => ['name' => 'Туманный Образ [9]', 'act' => 1, 'type_of' => 4]
,
287 => ['name' => 'Туманный Образ [8]', 'act' => 1, 'type_of' => 4]
,
288 => ['name' => 'Туманный Образ [7]', 'act' => 1, 'type_of' => 4]
,
255 => ['name' => 'Воздушный Щит', 'act' => 2, 'type_of' => 8]
,
337 => ['name' => 'Выпить Душу', 'act' => 2, 'type_of' => 5]
,
33 => ['name' => 'Пожирающее Пламя [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
56 => ['name' => 'Пожирающее Пламя [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
57 => ['name' => 'Пожирающее Пламя [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
58 => ['name' => 'Пожирающее Пламя [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
59 => ['name' => 'Пожирающее Пламя [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
60 => ['name' => 'Пожирающее Пламя [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
245 => ['name' => 'Огненный Щит', 'act' => 2, 'type_of' => 9]
,
327 => ['name' => 'Живая Вода', 'act' => 2, 'type_of' => 0, 'moment' => 3]
,
328 => ['name' => 'Сушеный Мухомор', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
329 => ['name' => 'Мешочек Пыли', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
330 => ['name' => 'Отвар когтей ПГ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
331 => ['name' => 'Отвар Василиска', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
332 => ['name' => 'Точильный Камень', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
333 => ['name' => 'Волшебный Эликсир', 'act' => 2, 'type_of' => 0, 'moment' => 3]
,
334 => ['name' => 'Цепь Защитника', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
335 => [
'name' => 'Эликсир Безумного Критовика',
'act' => 2,
'type_of' => 0,
'moment' => 0,
'moment_end' => 3,
]
,
299 => ['name' => 'Ядовитые язвы', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
300 => ['name' => 'Элементарный заряд', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
301 => ['name' => 'Темное ранение', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
302 => ['name' => 'Подлечиться', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
303 => ['name' => 'Шкура поглощения', 'act' => 2, 'type_of' => 4]
,
304 => ['name' => 'Особенное проклятье!', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3]
,
305 => ['name' => 'Кровожадность', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3],
];
public $cached = false; //Кэширование данных
public $expCoef = 0; # % опыта в бою
public $aBexp = 0; //Добавочный опыт в боях
public $mainStatus = 1; //Отображаем главное окно (1 - можно бить, 2 - ожидаем ход противника, 3 - Проиграли. Ожидаем завершения поединка)
public $info = []; //Информация о поединке
public $users; //Информация о пользователях в этом бою
public $stats = []; //Информация о статах пользователей в этом бою
public $uids = []; //Список пользователей и их id в stats или users пример id пользователя = 555 , то $uids[555] выдаст его порядковый номер в массиве users \ stats
public $atacks = []; //Список ударов в этом бою (действующих)
public $ga = []; //Список uid кто нанес удар и по кому $ga[ {id кто ударил} ][ {id кого ударил} ]
public $ag = []; //Список uid кто нанес удар и по кому $ga[ {id кого ударили} ][ {id кто ударил} ]
public $na = 1; //возможность использовать удар
public $np = 1; //возможность использовать приемы
public $nm = 1; //возможность использовать заклятия
public $hodID = 0;
public $stnZbVs = 0;
public $bots = []; // ID ботов
public $iBots = []; // i бота
public $stnZb = [];
public array $uAtc = [
'id' => 0,
'a' => [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0],
'b' => 0,
]; //Если игрок нанес удар
public array $lg_itm = [
0 => [
'грудью',
'ребром руки',
'лбом',
'кулаком',
'ногой',
'левой ногой',
'правой ногой',
'коленом',
],
1 => ['ножом', 'тыльной стороной лезвия ножа', 'рукоятью ножа', 'лезвием ножа'],
2 => ['сучковатой палкой', 'поленом', 'тяжелой дубиной', 'дубиной', 'рукоятью молота'],
3 => ['секирой', 'топором', 'лезвием секиры', 'алебардой', 'тяжелым держаком', 'длинной секирой'],
4 => [
'ножнами',
'гардой',
'мечом',
'лезвием меча',
'рукоятью меча',
'тупым лезвием',
'острой стороной меча',
'огромным мечом',
],
5 => ['сучковатой палкой', 'посохом', 'тяжелой тростью', 'корявым посохом', 'основанием посоха'],
22 => ['костылем'],
]; // Чем лупили
public array $lg_zon = [
1 => [
'в нос',
'в глаз',
'в челюсть',
'по переносице',
'в кадык',
'по затылку',
'в правый глаз',
'в левый глаз',
'в скулу',
],
2 => ['в грудь', 'в корпус', 'в солнечное сплетение', 'в сердце', 'в область лопаток'],
3 => ['в бок', 'по желудку', 'по левой руке', 'по правой руке'],
4 => ['по <вырезано цензурой>', 'в пах', 'в промежность', 'по левой ягодице', 'по правой ягодице'],
5 => ['по ногам', 'в область правой пятки', 'в область левой пятки', 'по коленной чашечке', 'по икрам'],
]; // Куда лупили
public string $e; //Ошибка (текст)
public array $is = [];
public array $items = [];
//Очистка кэша для ...
public array $uclearc = [];
public array $ucleari = [];
public $ainm = [];
public $rehodeff = [];
public $poglast = [];
public $prlog = [];
public $um_priem = [];
public $restart_stats_data = [];
public $import_atack = [];
public $contr = [];
//
public $import_user = 0;
public $pr_not_use = [], $pr_reset = [], $pr_yrn = false, $prnt = [];
public $del_val = [], $re_pd = [];
//Добавляем нанесенный урон
public function __construct()
{
ignore_user_abort(true);
}
//JS информация о игроке
public function maginfoattack($u1, $u2, $type): string
{
/*
1 - огонь,
2 - воздух,
3 - вода,
4 - земля
*/
$v_l = str_replace(' ', '&nbsp;', $this->users[$this->uids[$u1]]['login']);
$v_z = (int)$this->stats[$this->uids[$u2]]['zm' . $type]; //защита цели
$v_p = (int)round(
(
$this->stats[$this->uids[$u1]]['pzm' . $type] +
$this->stats[$this->uids[$u1]]['pzm']
)
* 0.4
); //подавление защиты от магии
$v_m = (int)$this->stats[$this->uids[$u1]]['pm' . $type]; //мощность мага
//
return ' magelogin=' . $v_l . ' onMouseOver=top.hi(this,maginfo(' . $v_z . ',' . $v_p . ',' . $v_m . ',this),event,3,1,1,1,null); onMouseOut=top.hic(); onMouseDown=top.hic(); ';
}
public function hphe($uid, $hp, $false_t7 = false)
{
global $u;
if (!isset($this->stats[$this->uids[$uid]])) {
echo 'WARNING! ОШИБКА! ПОТЕРЯНА ПЕРЕМЕННАЯ ЗДОРОВЬЯ ПЕРСОНАЖА!';
} else {
$hpnow = floor($this->stats[$this->uids[$uid]]['hpNow']);
$hpall = $this->stats[$this->uids[$uid]]['hpAll'];
if ($hp > 0) {
//Хиляем
if ($hpnow + $hp > $hpall) {
$hpli = $hpnow + $hp - $hpall;
$hp -= $hpli;
}
if (isset($this->stats[$this->uids[$uid]]['min_heal_proc']) && $this->stats[$this->uids[$uid]]['min_heal_proc'] < -99) {
$hp = 0;
} else {
$hp = $hp / 100 * (100 + $this->stats[$this->uids[$uid]]['min_heal_proc']);
}
//Отнимаем тактику
if (!$false_t7) {
if ($this->users[$this->uids[$uid]]['tactic7'] <= 0) {
$hp = 0;
$this->users[$this->uids[$uid]]['tactic7'] = 0;
$this->stats[$this->uids[$uid]]['tactic7'] = $this->users[$this->uids[$uid]]['tactic7'];
} else {
$gdhh = round($hp / $this->stats[$this->uids[$uid]]['hpAll'] * 10, 2);
if ($gdhh == 0) {
$gdhh = 0.01;
}
$gdhd = round($this->users[$this->uids[$uid]]['tactic7'] / $gdhh * 100);
$this->users[$this->uids[$uid]]['tactic7'] = round(
($this->users[$this->uids[$uid]]['tactic7'] - $gdhh),
2
);
if ($this->users[$this->uids[$uid]]['tactic7'] < 0) {
$this->users[$this->uids[$uid]]['tactic7'] = 0;
}
$this->stats[$this->uids[$uid]]['tactic7'] = $this->users[$this->uids[$uid]]['tactic7'];
if ($gdhd < 100) {
$hp = floor($hp / 100 * $gdhd);
}
}
}
} elseif ($hp < 0) {
//Отнимаемф
if ($hpnow + $hp < 0) {
$hpli = $hpnow + $hp;
$hp += -($hpli);
}
}
if ($this->stats[$this->uids[$uid]]['hpNow'] < 1) {
$hp = 0;
}
$this->stats[$this->uids[$uid]]['last_hp'] = -$hp;
Db::sql(
'update stats set last_hp = ?, tactic7 = ? where id = ?', [
$this->users[$this->uids[$uid]]['last_hp'],
$this->users[$this->uids[$uid]]['tactic7'],
$uid,
]
);
}
return floor($hp);
}
// todo stopped here //
//Мини лог
/**
* Какая-то хуедрыга для номерных файлов-приёмов
* @param int $pid
* @param int $uid
* @param int $id
* @return void
*/
public function deleffm(int $pid, int $uid, int $id)
{
if ($id > 0) {
Db::sql('delete from eff_users where id = ? and v1 = ? and v2 != 0', [$id, 'priem']);
} else {
Db::sql('delete from eff_users where uid = ? and v1 = ? and v2 = ?', [$uid, 'priem', $pid]);
}
}
//Проверяем завершение боя
public function clear_cache_start()
{
$uids = implode(',', $this->ucleari);
Db::sql('delete from battle_cache where uid in (?)', [$uids]);
}
//завершение поединка
/**
* Проверка урон приемов над защитными.
* Игрок 1 бьет по Игроку 2 при помощи приема на hp ед. здоровья.
* @param $u2
* @param $hp
* @return mixed
*/
public function testYronPriemAttack($u2, $hp)
{
//Получаем приемы и смотрим когда какой действует
foreach ($this->stats[$this->uids[$u2]]['effects'] as $effect) {
if (
isset($effect) &&
$effect['id_eff'] == 22 &&
$effect['v1'] == 'priem' &&
(
$effect['v2'] == 140 ||
$effect['v2'] == 211 ||
$effect['v2'] == 45
)
) {
//Приемы от которых урон = 1 , то есть выдаем 0
$hp['y'] = -1;
$hp['r'] = 1;
$hp['k'] = 2;
$hp['m_y'] = 1;
$hp['m_k'] = 2;
}
}
return $hp;
}
public function takeYronNow($uid, $y)
{
global $u;
if (!is_numeric($y) || !is_numeric($uid)) {
return;
}
(int)$y = floor($y);
$this->users[$this->uids[$uid]]['battle_yron'] += $y;
$this->stats[$this->uids[$uid]]['battle_yron'] += $y;
if ($uid == $u->info['id']) {
$u->info['battle_yron'] += $y;
$u->stats['battle_yron'] += $y;
}
Db::sql('update stats set battle_yron = battle_yron + ? where id = ?', [$y, $uid]);
}
public function myInfo($id, $t)
{
global $c, $u;
if (!isset($this->users[$this->uids[$id]]) && $u->info['id'] != $id) {
return false;
}
if ($u->info['id'] == $id || ($u->info['enemy'] == $id && $id > 0)) {
//Всегда обновляем
$this->users[$this->uids[$id]] = Db::getRow('select u.zag,u.id,u.login,u.login2,u.online,u.admin,u.city,u.cityreg,u.align,u.align_lvl,u.align_exp,u.clan,
u.level,u.money,u.money3,u.money2,u.money4,u.battle,u.sex,u.obraz,u.win,u.win_t,
u.lose,u.lose_t,u.nich,u.timeMain,u.invis,u.bot_id,u.animal,u.type_pers,
u.notrhod,u.bot_room,u.inUser,u.inTurnir,u.inTurnirnew,u.stopexp,u.real, s.* from users as u left join stats as s on (u.id = s.id) where u.id = ?', [$id]);
$this->stats[$this->uids[$id]] = $u->getStats($this->users[$this->uids[$id]], 0, 0, false, false, true);
$this->stats[$this->uids[$id]]['items'] = $this->stats[$this->uids[$id]]['items'];
$this->stats[$this->uids[$id]]['effects'] = $this->stats[$this->uids[$id]]['effects'];
}
$ur = $this->users[$this->uids[$id]];
$st = $this->stats[$this->uids[$id]];
$itm = $this->stats[$this->uids[$id]]['items'];
$eff = $this->stats[$this->uids[$id]]['effects'];
$ef = '';
$i = 0;
if ($u->info['seff'] < 1) {
$ef .= '<div class=\"pimg\" pog=\"0\" col=\"0\" stl=\"0\" stt=\"Свернуть\"><img src=\"//img.new-combats.tech/i/eff/effs_hide.gif\"/ onclick=\"top.useMagicBattle(\'Свернуть\',7777,\'effs_show.gif\',1,2);\" onmouseover=\"top.hi(this,\'<strong>Свернуть</strong>\',event,3,1,1,1,\'\');\" onmouseout=\"top.hic();\" onmousedown=\"top.hic();\"></div>';
while ($i != -1) {
$nseef = 0;
if ($this->users[$this->uids[$ur['id']]]['id'] != $u->info['id'] && $ur['id'] != 0) {
if ($this->stats[$this->uids[$ur['id']]]['seeAllEff'] != 1) {
$nseef = 1;
if ($eff[$i]['v1'] == 'priem') {
$eff[$i]['priem'] = Db::getRow('select * from priems where id = ?', [$eff[$i]['v2']]);
}
if (isset($eff[$i]['priem']['id']) && $eff[$i]['priem']['neg'] == 1) {
$nseef = 0;
}
}
}
if (isset($eff[$i]) && $eff[$i] != 'delete') {
if ($nseef == 0) {
$ei = '<strong><u>' . $eff[$i]['name'] . '</u></strong>';
if ($eff[$i]['x'] > 1) {
$ei .= ' x' . $eff[$i]['x'] . ' ';
}
if ($eff[$i]['type1'] > 0 && $eff[$i]['type1'] < 7) {
$ei .= ' (Эликсир)';
} elseif (($eff[$i]['type1'] > 6 && $eff[$i]['type1'] < 11) || $eff[$i]['type1'] == 16) {
$ei .= ' (Заклятие)';
} elseif ($eff[$i]['type1'] == 14) {
$ei .= ' (Прием)';
} elseif ($eff[$i]['type1'] == 15) {
$ei .= ' (Изучение)';
} elseif ($eff[$i]['type1'] == 17) {
$ei .= ' (Проклятие)';
} elseif ($eff[$i]['type1'] == 18 || $eff[$i]['type1'] == 19) {
$ei .= ' (Травма)';
} elseif ($eff[$i]['type1'] == 20) {
$ei .= ' (Пристрастие)';
} elseif ($eff[$i]['type1'] == 22) {
$ei .= ' (Ожидание)';
} else {
$ei .= ' (Эффект)';
}
$ei .= '<br>';
$out = '';
$time_still = ($eff[$i]['timeUse'] + ($eff[$i]['timeAce'] - $eff[$i]['timeUse']) + $eff[$i]['actionTime']);
if ($eff[$i]['timeAce'] == 0) {
$time_still += $eff[$i]['timeUse'];
}
$time_still -= time();
if ($eff[$i]['bp'] == 0 && $eff[$i]['timeUse'] != 77) {
if ($eff[$i]['type1'] != 13) {
$ei .= 'Осталось: ' . $u->timeOut($time_still) . '';
}
} else {
if ($eff[$i]['timeUse'] != 77 && $eff[$i]['hod'] < 1) {
$ei .= 'Осталось: ' . $u->timeOut($time_still) . '';
//$ei .= 'Зарядов: '.$out.'<br>';
} elseif ($eff[$i]['hod'] >= 0) {
$ei .= 'Зарядов: ' . $eff[$i]['hod'] . '';
}
}
if ($eff[$i]['user_use'] != '') {
if ($this->users[$this->uids[$eff[$i]['user_use']]]['login2'] != '') {
$ei .= '<br>Автор: <strong>' . $this->users[$this->uids[$eff[$i]['user_use']]]['login2'] . '</strong>';
} elseif ($this->users[$this->uids[$eff[$i]['user_use']]]['login'] != '') {
$ei .= '<br>Автор: <strong>' . $this->users[$this->uids[$eff[$i]['user_use']]]['login'] . '</strong>';
}
}
//Действие эффекта
$tr = '';
$ti = $u->items['add'];
$x = 0;
$ed = Conversion::dataStringToArray($eff[$i]['data']);
while ($x < count($ti)) {
$n = $ti[$x];
if (isset($ed['add_' . $n], $u->is[$n]) && $n != 'pog') {
$z = '';
if ($ed['add_' . $n] > 0) {
$z = '+';
}
$tr .= '<br>' . $u->is[$n] . ': ' . $z . '' . $ed['add_' . $n];
}
$x++;
}
if ($ed['add_mib1'] != 0) {
if ($ed['add_mab1'] != 0) {
$tr .= '<br>Броня головы: ' . $ed['add_mib1'] . '-' . $ed['add_mab1'] . '';
} else {
$m1l = $ed['add_mib1'];
if ($m1l > 0) {
$m1l = '+' . $m1l;
}
$tr .= '<br>Броня головы: ' . $m1l . '';
}
}
if ($ed['add_mib2'] != 0) {
if ($ed['add_mab2'] != 0) {
$tr .= '<br>Броня корпуса: ' . $ed['add_mib2'] . '-' . $ed['add_mab2'] . '';
} else {
$m1l = $ed['add_mib2'];
if ($m1l > 0) {
$m1l = '+' . $m1l;
}
$tr .= '<br>Броня корпуса: ' . $m1l . '';
}
}
if ($ed['add_mib3'] != 0) {
if ($ed['add_mab3'] != 0) {
$tr .= '<br>Броня пояса: ' . $ed['add_mib3'] . '-' . $ed['add_mab3'] . '';
} else {
$m1l = $ed['add_mib3'];
if ($m1l > 0) {
$m1l = '+' . $m1l;
}
$tr .= '<br>Броня пояса: ' . $m1l . '';
}
}
if ($ed['add_mib4'] != 0) {
if ($ed['add_mab4'] != 0) {
$tr .= '<br>Броня ног: ' . $ed['add_mib4'] . '-' . $ed['add_mab4'] . '';
} else {
$m1l = $ed['add_mib4'];
if ($m1l > 0) {
$m1l = '+' . $m1l;
}
$tr .= '<br>Броня ног: ' . $m1l . '';
}
}
$efix = 0;
if (isset($ed['add_pog2']) && $ed['add_pog2'] > 0) {
$efix = $ed['add_pog2'];
}
if (isset($ed['add_pog'])) {
$tr .= '<br>Магический барьер способен поглотить еще <strong>' . $ed['add_pog'] . '</strong> ед. урона';
}
if (isset($ed['add_pog2'])) {
$tr .= '<br>Магический барьер способен поглотить еще <strong>' . $ed['add_pog2'] . '</strong> ед. урона <small>(' . $ed['add_pog2p'] . '%)</small>';
}
if ($tr != '') {
$ei .= $tr;
}
if ($eff[$i]['info'] != '') {
$ei .= '<br><i>Информация:</i><br>' . $eff[$i]['info'];
}
$ef .= '<div class=\"pimg\" pog=\"' . $efix . '\" col=\"' . $eff[$i]['x'] . '\" stl=\"0\" stt=\"' . $ei . '\"><img src=\"//img.new-combats.tech/i/eff/' . $eff[$i]['img'] . '\"/></div>';
unset($efix);
}
} elseif ($eff[$i] != 'delete') {
$i = -2;
}
$i++;
}
} else {
$ef .= '<div class=\"pimg\" pog=\"0\" col=\"0\" stl=\"0\" stt=\"Развернуть\"><img src=\"//img.new-combats.tech/i/eff/effs_show.gif\"/ onclick=\"top.useMagicBattle(\'Развернуть\',5555,\'effs_show.gif\',1,2);\" onmouseover=\"top.hi(this,\'<strong>Развернуть</strong>\',event,3,1,1,1,\'\');\" onmouseout=\"top.hic();\" onmousedown=\"top.hic();\"></div>';
}
$ca = '';
if ($ur['clan'] > 0) {
$cl = Db::getRow('select * from clan where id = ?', [$ur['clan']]);
if (isset($cl['id'])) {
$ca = '<img src=\"//img.new-combats.tech/i/clan/' . $cl['name_mini'] . '.gif\" title=\"' . $cl['name'] . '\">';
}
}
if ($ur['align'] > 0) {
$ca = '<img src=\"//img.new-combats.tech/i/align/align' . $ur['align'] . '.gif\">' . $ca;
}
if ($ur['login2'] == '') {
$ur['login2'] = $ur['login'];
}
if (floor($st['hpNow']) > $st['hpAll']) {
$st['hpNow'] = $st['hpAll'];
}
if (floor($st['mpNow']) > $st['mpAll']) {
$st['mpNow'] = $st['mpAll'];
}
$stsua = '<strong>' . $ur['login2'] . '</strong>';
$stsua .= '<br>Сила: ' . $st['s1'];
$stsua .= '<br>Ловкость: ' . $st['s2'];
$stsua .= '<br>Интуиция: ' . $st['s3'];
$stsua .= '<br>Выносливость: ' . $st['s4'];
if ($st['s5'] != 0) {
$stsua .= '<br>Интелект: ' . $st['s5'];
}
if ($st['s6'] != 0) {
$stsua .= '<br>Мудрость: ' . $st['s6'];
}
if ($st['s7'] != 0) {
$stsua .= '<br>Духовность: ' . $st['s7'];
}
if ($u->info['admin'] > 0) {
$align = $ur['align'];
}
$tp_img = [
1 => 4,
2 => 5,
14 => 6,
3 => 7,
5 => 8,
7 => 9,
17 => 10,
16 => 11,
13 => 12,
10 => 13,
9 => 14,
8 => 15,
11 => 17, //кольцо 2
12 => 18, //кольцо 3
];
$info = 'info_reflesh(' . $t . ',' . $ur['id'] . ',"' . $ca . '<a href=\"javascript:void(0)\" onclick=\"top.chat.addto(\'' . $ur['login2'] . '\',\'to\');return false;\">' . $ur['login2'] . '</a> [' . $ur['level'] . ']<a href=\"info/' . $ur['id'] . '\" target=\"_blank\"><img src=\"//img.new-combats.tech/i/inf_' . $ur['cityreg'] . '.gif\" title=\"Инф. о ' . $ur['login2'] . '\"></a>&nbsp;","' . $ur['obraz'] . '",' . floor(
$st['hpNow']
) . ',' . floor($st['hpAll']) . ',' . floor(
$st['mpNow']
) . ',' . floor(
$st['mpAll']
) . ',0,' . $ur['sex'] . ',"' . $ef . '","' . $stsua . '", "' . $align . '", "' . $ur['zag'] . '");shpb();';
$i = 0;
if (is_array($itm)) {
while ($i < count($itm)) {
//
if (isset($st['items_img'][$tp_img[$itm[$i]['inOdet']]])) {
$itm[$i]['img'] = $st['items_img'][$tp_img[$itm[$i]['inOdet']]];
}
//генерируем предметы
$ttl = '<strong>' . $itm[$i]['name'] . '</strong>';
$td = Conversion::dataStringToArray($itm[$i]['data']);
$lvar = '';
if ($td['add_hpAll'] > 0) {
$td['add_hpAll'] = '+' . $td['add_hpAll'];
$lvar .= '<br>Уровень жизни: ' . $td['add_hpAll'] . '';
}
if ($td['sv_yron_max'] > 0 || $td['sv_yron_min'] > 0) {
$lvar .= '<br>Урон: ' . (0 + $td['sv_yron_min']) . '-' . (0 + $td['sv_yron_max']) . '';
}
if ($td['add_mab1'] > 0) {
if ($td['add_mib1'] == $td['add_mab1'] && $pl['geniration'] == 1) {
$m1l = '+';
$lvar .= '<br>Броня головы: ' . $m1l . '' . (0 + $td['add_mab1']) . '';
} else {
$lvar .= '<br>Броня головы: ' . (0 + $td['add_mib1']) . '-' . (0 + $td['add_mab1']) . '';
}
}
if ($td['add_mab2'] > 0) {
if ($td['add_mib2'] == $td['add_mab2'] && $pl['geniration'] == 1) {
$m1l = '+';
$lvar .= '<br>Броня корпуса: ' . $m1l . '' . (0 + $td['add_mab2']) . '';
} else {
$lvar .= '<br>Броня корпуса: ' . (0 + $td['add_mib2']) . '-' . (0 + $td['add_mab2']) . '';
}
}
if ($td['add_mab3'] > 0) {
if ($td['add_mib3'] == $td['add_mab3'] && $pl['geniration'] == 1) {
$m1l = '+';
$lvar .= '<br>Броня пояса: ' . $m1l . '' . (0 + $td['add_mab3']) . '';
} else {
$lvar .= '<br>Броня пояса: ' . (0 + $td['add_mib3']) . '-' . (0 + $td['add_mab3']) . '';
}
}
if ($td['add_mab4'] > 0) {
if ($td['add_mib4'] == $td['add_mab4'] && $pl['geniration'] == 1) {
$m1l = '+';
$lvar .= '<br>Броня ног: ' . $m1l . '' . (0 + $td['add_mab4']) . '';
} else {
$lvar .= '<br>Броня ног: ' . (0 + $td['add_mib4']) . '-' . (0 + $td['add_mab4']) . '';
}
}
if ($itm[$i]['iznosMAX'] > 0) {
if ($itm[$i]['iznosMAXi'] == 999999999) {
$lvar .= '<br>Долговечность: <font color=brown>неразрушимо</font>';
} else {
$lvar .= '<br>Долговечность: ' . floor(
$itm[$i]['iznosNOW']
) . '/' . floor(
$itm[$i]['iznosMAX']
);
}
}
$ttl .= $lvar;
$ccv = '';
if ($itm[$i]['magic_inci'] != '' || $itm[$i]['magic_inc'] != '') {
if ($itm[$i]['magic_inc'] == '') {
$itm[$i]['magic_inc'] = $itm[$i]['magic_inci'];
}
$mgi = Db::getRow('select * from eff_main where id2 = ? and type1 = 12345', [$itm[$i]['magic_inc']]);
if (isset($mgi['id2'])) {
$mgilog = '';
$ccv .= 'top.useMagicBattle(\'' . $mgi['mname'] . '\',' . $itm[$i]['id'] . ',\'' . $mgi['img'] . '\',1,2);';
}
}
$info .= 'abitms(' . (0 + $t) . ',' . (0 + $itm[$i]['uid']) . ',' . (0 + $itm[$i]['id']) . ',' . (0 + $itm[$i]['inOdet']) . ',"' . $itm[$i]['name'] . '","' . $ttl . '","' . $itm[$i]['img'] . '","' . $ccv . '");';
$i++;
}
}
return $info;
}
//Проводим удар
/**
* Проверка на выживших.
* Проклято и сломано.
* @return bool
*/
public function testUsersLive(): bool
{
$r = false;
$tl = 0;
$i = 0;
$j = 0;
while ($i < count($this->uids)) {
if ($this->stats[$i]['id'] > 0) {
if (floor($this->stats[$i]['hpNow']) < 1) {
$this->stats[$i]['hpNow'] = 0;
}
$hp[$this->users[$i]['team']] += floor($this->stats[$i]['hpNow']);
if (!isset($tml[$this->users[$i]['team']]) && floor($this->stats[$i]['hpNow']) >= 1) {
$tml[$this->users[$i]['team']] = 1;
$tmv[$j] = $this->users[$i]['team'];
$tl++;
}
}
$i++;
}
if ($tl > 1) {
$r = true;
}
return $r;
}
//Запускаем магические предметы, если в них что-то встроено
public function testFinish()
{
global $u;
mysql_query('START TRANSACTION;');
$test = mysql_fetch_array(
mysql_query(
'SELECT `id` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `team_win` = -1 LIMIT 1 FOR UPDATE'
)
);
mysql_query('COMMIT;');
if ($this->info['team_win'] == -1 && isset($test['id'])) {
$hp = [];
$tml = [];
$tmv = [];
$tl = 0;
$i = 0;
$j = 0;
while ($i < count($this->uids)) {
if ($this->stats[$i]['id'] > 0) {
if (floor($this->stats[$i]['hpNow']) < 1) {
$this->stats[$i]['hpNow'] = 0;
}
$hp[$this->users[$i]['team']] += floor($this->stats[$i]['hpNow']);
if (!isset($tml[$this->users[$i]['team']]) && floor($this->stats[$i]['hpNow']) >= 1) {
$tml[$this->users[$i]['team']] = 1;
$tmv[$j] = $this->users[$i]['team'];
$tl++;
}
}
$i++;
}
if ($tl <= 1) {
//Доп.проверка
$tmHpNow = [];
$tmNow = [];
$sp = mysql_query(
'SELECT `u`.`login`,`u`.`id`,`u`.`battle`,`s`.`team`,`s`.`hpNow` FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `u`.`battle` = "' . $this->info['id'] . '"'
);
while ($pl = mysql_fetch_array($sp)) {
if (!isset($tmHpNow[$pl['team']])) {
$tmHpNow[$pl['team']] = 0;
$tmNow[] = $pl['team'];
}
$hpTm = floor($pl['hpNow']);
if ($hpTm < 0) {
$hpTm = 0;
}
if ($hpTm > 0) {
$tmHpNow[$pl['team']] += $pl['hpNow'];
}
}
$gdj = 0;
$i = 0;
while ($i < count($tmNow)) {
if (isset($tmNow[$i])) {
$j = $tmNow[$i];
if ($tmHpNow[$j] > 0) {
$gdj++;
}
}
$i++;
}
if ($gdj > 1) {
$tl = $gdj;
echo 'Поединок может завершиться не корректно... (Сообщите Администрации об этом)';
}
}
if ($tl <= 1) {
//завершаем поединок, кто-то один победил, либо ничья
$i = 0;
$tmwin = 0;
while ($i < count($tmv)) {
if ($tmv[$i] >= 1 && $tml[$tmv[$i]] > 0) {
$tmwin = $tmv[$i];
}
$i++;
}
if ($this->info['izlom'] == 0) {
$rs = '';
$ts = [];
$tsi = 0;
if ($this->info['id'] > 0) {
//данные о игроках в бою
unset($this->users, $this->stats, $this->uids, $this->bots, $this->iBots);
$trl = mysql_query(
'SELECT `u`.`no_ip`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`money3`,`u`.`money2`,`u`.`bot_id` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "' . $this->info['id'] . '" ORDER BY `st`.`bot` DESC'
);
$ir = 0;
$bi = 0;
$this->users = null;
$this->stats = null;
$this->uids = null;
$this->bots = null;
$this->iBots = null;
while ($pl = mysql_fetch_array($trl)) {
//записываем данные
if ($pl['login2'] == '') {
$pl['login2'] = $pl['login'];
}
$this->users[$ir] = $pl;
$this->uids[$pl['id']] = $ir;
if ($pl['bot'] > 0) {
$this->bots[$bi] = $pl['id'];
$this->iBots[$pl['id']] = $bi;
$bi++;
}
//записываем статы
$this->stats[$ir] = $u->getStats($pl, 0, 0, false, false, true);
$ir++;
}
}
} elseif (!isset($this->uids[$u->info['id']])) {
$rs = '';
$ts = [];
$tsi = 0;
if ($this->info['id'] > 0) {
//данные о игроках в бою
$trl = mysql_query(
'SELECT `u`.`no_ip`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`bot_id`,`u`.`money3`,`u`.`money2` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`id` = "' . $this->info['id'] . '" LIMIT 1'
);
$pl = mysql_fetch_array($trl);
//записываем данные
if ($pl['login2'] == '') {
$pl['login2'] = $pl['login'];
}
$this->users[] = $pl;
$this->uids[$pl['id']] = $ir;
if ($pl['bot'] > 0) {
$this->bots[] = $pl['id'];
$this->iBots[$pl['id']] = $bi;
}
//записываем статы
$this->stats[] = $u->getStats($pl, 0, 0, false, false, true);
}
}
if ($this->info['izlom'] > 0 && $tmwin == 1) {
// выкидываем ботов из боя
$i = 0;
$dlt = '';
$dlt2 = '';
$sp = mysql_query(
'SELECT `users`.`id`,`stats`.`bot`,`stats`.`team` FROM `users`,`stats` WHERE `users`.`battle` = "' . $this->info['id'] . '" AND `stats`.`id` = `users`.`id` LIMIT 250'
);
while ($pl = mysql_fetch_array($sp)) {
if ($pl['bot'] == 1 && $pl['team'] != $u->info['team']) {
$dlt .= ' `id`="' . $pl['id'] . '" OR';
$dlt2 .= ' `uid`="' . $pl['id'] . '" OR';
$i++;
}
}
if ($i > 0) {
$dlt = trim($dlt, 'OR');
$dlt2 = trim($dlt2, 'OR');
mysql_query('DELETE FROM `users` WHERE ' . $dlt . ' LIMIT ' . $i);
mysql_query('DELETE FROM `stats` WHERE ' . $dlt . ' LIMIT ' . $i);
mysql_query('DELETE FROM `items_users` WHERE ' . $dlt2 . ' LIMIT ' . ($i * 100));
mysql_query('DELETE FROM `eff_users` WHERE ' . $dlt2 . ' LIMIT ' . ($i * 100));
}
unset($i, $dlt, $dlt2);
$j = 0;
$k = 0;
$obr = 0;
//Это излом, добавляем еще ботов
if ($this->get_chanse(20)) {
//Уникальные монстры
if ($this->info['izlomLvl'] == 8) {
$bots = [
'Валентайский Охотник',
'Шипокрыл Хаоса',
'Шипокрыл',
'Лик Хаоса',
'Фанатик Хаоса',
];
}
$logins_bot = [];
//
echo '<center><strong><font color=red>Приближается нечто...</font></strong></center>';
//
$id2 = rand(0, (count($bots) - 1));
$id = mysql_fetch_array(
mysql_query(
'SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1'
)
);
$bot = $u->addNewbot(
$id['id'], null, null, $logins_bot, null,
round($this->info['izlomRoundSee'])
);
if (isset($id['id']) && $bot != false) {
//
$btxt = '';
if ($id['align'] > 0) {
$btxt = $btxt . '<img width=12 height=15 src=//img.new-combats.tech/i/align/align' . $id['align'] . '.gif >';
}
if ($id['clan'] > 0) {
$btxt = $btxt . '<img width=24 height=15 src=//img.new-combats.tech/i/clan/' . $id['clan'] . '.gif >';
}
$btxt = $btxt . '<strong>{u1}</strong>[' . $id['level'] . ']<a href=info/' . $id['id'] . ' target=_blank ><img width=12 height=11 src=//img.new-combats.tech/i/inf_capitalcity.gif ></a>';
if ($id['sex'] == 1) {
$btxt = $btxt . ' вмешалась в поединок.';
} else {
$btxt = $btxt . ' вмешался в поединок.';
}
$this->miniLogAdd(
[
'login' => $id['login'],
'sex' => $id['sex'],
'team' => 0,
], '{tm1} ' . $btxt
);
//
$logins_bot = $bot['logins_bot'];
mysql_query(
'UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'
);
mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1');
$u->addAction(time(), 'win_bot_' . $id['id'], '', $this->users[$i]['id']);
if (rand(0, 10000) < 1500) {
$obr++;
}
$j++;
}
} else {
//Обычные монстры
if ($this->info['izlomLvl'] == 8) {
$bots = [
'Литейщик',
'Проклятие Глубин',
'Пустынник Маньяк',
'Пустынник Убийца',
'Рабочий Мглы',
'Смотритель Мглы',
'Сторож Мглы',
];
}
$logins_bot = [];
//
$id2 = rand(0, (count($bots) - 1));
$id = mysql_fetch_array(
mysql_query(
'SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1'
)
);
$bot = $u->addNewbot(
$id['id'], null, null, $logins_bot, null,
($this->info['izlomRoundSee'] * 2)
);
if (isset($id['id']) && $bot) {
//
$btxt = '';
if ($id['align'] > 0) {
$btxt = $btxt . '<img width=12 height=15 src=//img.new-combats.tech/i/align/align' . $id['align'] . '.gif >';
}
if ($id['clan'] > 0) {
$btxt = $btxt . '<img width=24 height=15 src=//img.new-combats.tech/i/clan/' . $id['clan'] . '.gif >';
}
$btxt = $btxt . '<strong>{u1}</strong>[' . $id['level'] . ']<a href=info/' . $id['id'] . ' target=_blank ><img width=12 height=11 src=//img.new-combats.tech/i/inf_capitalcity.gif ></a>';
if ($id['sex'] == 1) {
$btxt = $btxt . ' вмешалась в поединок.';
} else {
$btxt = $btxt . ' вмешался в поединок.';
}
$this->miniLogAdd(
[
'login' => $id['login'],
'sex' => $id['sex'],
'team' => 0,
], '{tm1} ' . $btxt
);
//
$logins_bot = $bot['logins_bot'];
mysql_query(
'UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'
);
mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1');
if (rand(0, 10000) < 1500) {
$obr++;
}
$j++;
}
//
$id2 = rand(0, (count($bots) - 1));
$id = mysql_fetch_array(
mysql_query(
'SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1'
)
);
$bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, $this->info['izlomRoundSee']);
if (isset($id['id']) && $bot) {
//
$btxt = '';
if ($id['align'] > 0) {
$btxt = $btxt . '<img width=12 height=15 src=//img.new-combats.tech/i/align/align' . $id['align'] . '.gif >';
}
if ($id['clan'] > 0) {
$btxt = $btxt . '<img width=24 height=15 src=//img.new-combats.tech/i/clan/' . $id['clan'] . '.gif >';
}
$btxt = $btxt . '<strong>{u1}</strong>[' . $id['level'] . ']<a href=info/' . $id['id'] . ' target=_blank ><img width=12 height=11 src=//img.new-combats.tech/i/inf_capitalcity.gif ></a>';
if ($id['sex'] == 1) {
$btxt = $btxt . ' вмешалась в поединок.';
} else {
$btxt = $btxt . ' вмешался в поединок.';
}
$this->miniLogAdd(
[
'login' => $id['login'],
'sex' => $id['sex'],
'team' => 0,
], '{tm1} ' . $btxt
);
//
$logins_bot = $bot['logins_bot'];
mysql_query(
'UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'
);
mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1');
if (rand(0, 10000) < 1500) {
$obr++;
}
$j++;
}
//
if (rand(0, 100) < 70) {
$id2 = rand(0, (count($bots) - 1));
$id = mysql_fetch_array(
mysql_query(
'SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1'
)
);
$bot = $u->addNewbot(
$id['id'], null, null, $logins_bot, null,
$this->info['izlomRoundSee']
);
if (isset($id['id']) && $bot) {
//
$btxt = '';
if ($id['align'] > 0) {
$btxt = $btxt . '<img width=12 height=15 src=//img.new-combats.tech/i/align/align' . $id['align'] . '.gif >';
}
if ($id['clan'] > 0) {
$btxt = $btxt . '<img width=24 height=15 src=//img.new-combats.tech/i/clan/' . $id['clan'] . '.gif >';
}
$btxt = $btxt . '<strong>{u1}</strong>[' . $id['level'] . ']<a href=info/' . $id['id'] . ' target=_blank ><img width=12 height=11 src=//img.new-combats.tech/i/inf_capitalcity.gif ></a>';
if ($id['sex'] == 1) {
$btxt = $btxt . ' вмешалась в поединок.';
} else {
$btxt = $btxt . ' вмешался в поединок.';
}
$this->miniLogAdd(
[
'login' => $id['login'],
'sex' => $id['sex'],
'team' => 0,
], '{tm1} ' . $btxt
);
//
$logins_bot = $bot['logins_bot'];
mysql_query(
'UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'
);
mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1');
if (rand(0, 10000) < 1500) {
$obr++;
}
$j++;
}
}
//Каждые 10 вол = +1 монстр
$irb = floor($this->info['izlomRoundSee'] / 10);
while ($irb > 0) {
//
if (rand(0, 100) < 20) {
$id2 = rand(0, (count($bots) - 1));
$id = mysql_fetch_array(
mysql_query(
'SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1'
)
);
$bot = $u->addNewbot(
$id['id'], null, null, $logins_bot, null,
$this->info['izlomRoundSee']
);
if (isset($id['id']) && $bot) {
//
$btxt = '';
if ($id['align'] > 0) {
$btxt = $btxt . '<img width=12 height=15 src=//img.new-combats.tech/i/align/align' . $id['align'] . '.gif >';
}
if ($id['clan'] > 0) {
$btxt = $btxt . '<img width=24 height=15 src=//img.new-combats.tech/i/clan/' . $id['clan'] . '.gif >';
}
$btxt = $btxt . '<strong>{u1}</strong>[' . $id['level'] . ']<a href=info/' . $id['id'] . ' target=_blank ><img width=12 height=11 src=//img.new-combats.tech/i/inf_capitalcity.gif ></a>';
if ($id['sex'] == 1) {
$btxt = $btxt . ' вмешалась в поединок.';
} else {
$btxt = $btxt . ' вмешался в поединок.';
}
$this->miniLogAdd(
[
'login' => $id['login'],
'sex' => $id['sex'],
'team' => 0,
], '{tm1} ' . $btxt
);
//
$logins_bot = $bot['logins_bot'];
mysql_query(
'UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'
);
mysql_query(
'UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'
);
if (rand(0, 10000) < 1500) {
$obr++;
}
$j++;
}
}
$irb--;
}
}
//
unset($logins_bot);
if ($j == 0) {
//конец излома
$this->finishBattle($tml, $tmv, null, $tl);
$fin1 = mysql_query(
'INSERT INTO `izlom_rating` (`uid`,`time`,`voln`,`level`,`bots`,`rep`,`obr`,`btl`) VALUES ("' . $u->info['id'] . '","' . time() . '","' . $this->info['izlomRoundSee'] . '","' . $this->info['izlomLvl'] . '","0","0","' . ($this->info['izlomObr'] - $this->info['izlomObrNow']) . '","' . $this->info['id'] . '")'
);
} else {
$this->info['izlomRound'] = $iz['round'];
mysql_query(
'UPDATE `battle` SET `izlomObrNow` = ' . $obr . ',`izlomObr` = `izlomObr` + ' . $obr . ',`timeout` = (`timeout`+5),`izlomRound` = "' . ($this->info['izlomRound'] + 1) . '",`izlomRoundSee` = `izlomRoundSee`+1 WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'
);
$this->stats[$this->uids[$u->info['id']]]['hpNow'] += $this->stats[$this->uids[$u->info['id']]]['hpAll'] * 0.25;
$this->stats[$this->uids[$u->info['id']]]['mpNow'] += $this->stats[$this->uids[$u->info['id']]]['mpAll'] * 0.25;
$this->users[$this->uids[$u->info['id']]]['hpNow'] = $this->stats[$this->uids[$u->info['id']]]['hpAll'];
$this->users[$this->uids[$u->info['id']]]['mpNow'] = $this->stats[$this->uids[$u->info['id']]]['mpAll'];
$vLog = 'at1=00000||at2=00000||zb1=' . $this->stats[$this->uids[$u1]]['zonb'] . '||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] . '||bl1=' . $this->atacks[$id]['b' . $a] . '||bl2=' . $this->atacks[$id]['b' . $b] . '||time1=' . $this->atacks[$id]['time'] . '||time2=' . $this->atacks[$id]['time2'] . '||s2=' . $this->users[$this->uids[$u2]]['sex'] . '||s1=' . $this->users[$this->uids[$u1]]['sex'] . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2'] . '';
$mas = [
'text' => '',
'time' => time(),
'vars' => '',
'battle' => $this->info['id'],
'id_hod' => ($this->hodID + 1),
'vars' => $vLog,
'type' => 1,
];
if ($u->info['sex'] == 1) {
$mas['text'] = '<span class=date>' . date(
'H:i'
) . '</span> <strong>' . $u->info['login'] . '</strong> воспользовалась приемом &quot;<strong>Передышка</strong>&quot;.';
} else {
$mas['text'] = '<span class=date>' . date(
'H:i'
) . '</span> <strong>' . $u->info['login'] . '</strong> воспользовался приемом &quot;<strong>Передышка</strong>&quot;.';
}
if ($u->stats['hpNow'] < $u->stats['hpAll']) {
$hpSks = floor(($u->stats['hpAll'] * ((rand(15, 25)) / 100)));
if ($hpSks > floor($u->stats['hpAll'] - $u->stats['hpNow'])) {
$hpSks = floor($u->stats['hpAll'] - $u->stats['hpNow']);
}
$mas['text'] .= ' <font color=#0066aa><strong>+' . $hpSks . '</strong></font>';
} else {
$hpSks = 0;
$mas['text'] .= ' <font color=#0066aa><strong>--</strong></font>';
}
$mas['text'] .= ' [' . floor($u->info['hpNow'] + $hpSks) . '/' . $u->stats['hpAll'] . ']';
$this->add_log($mas);
mysql_query(
'UPDATE `stats` SET `hpNow` = "' . ($u->info['hpNow'] + ($u->stats['hpAll'] * ((rand(
15,
25
)) / 100))) . '",`mpNow` = "' . ($u->info['mpNow'] + ($u->stats['mpAll'] * 0.25)) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'
);
}
} else {
//завершаем бой
$this->finishBattle($tml, $tmv, null, $tl);
if ($this->info['izlom'] > 0) {
$fin1 = mysql_query(
'INSERT INTO `izlom_rating` (`uid`,`time`,`voln`,`level`,`bots`,`rep`,`obr`,`btl`) VALUES ("' . $u->info['id'] . '","' . time() . '","' . $this->info['izlomRoundSee'] . '","' . $this->info['izlomLvl'] . '","0","0","' . ($this->info['izlomObr'] - $this->info['izlomObrNow']) . '","' . $this->info['id'] . '")'
);
}
}
if (isset($fin1)) {
mysql_query(
'INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","31","23","' . $u->info['id'] . '","Касание Хаоса","nofastfinisheff=1","' . time() . '")'
);
$cmsg = new ChatMessage();
$cmsg->setCity($u->info['city']);
$cmsg->setRoom($u->info['room']);
$cmsg->setTo($u->info['login']);
$cmsg->setType(6);
$cmsg->setText(
'Вы создали предмет "Образец" x' . (($this->info['izlomObr'] - $this->info['izlomObrNow']) * 7)
);
(new Chat())->sendMsg($cmsg);
$i01 = 1;
while ($i01 <= (($this->info['izlomObr'] - $this->info['izlomObrNow'])) * 7) {
ItemsModel::addItem(1226, $u->info['id'], '|sudba=' . $u->info['login']);
$i01++;
}
mysql_query(
'INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES ("' . $u->info['id'] . '","' . time() . '","capitalcity","' . $u->info['room'] . '","izlom"," ","","")'
);
unset($fin1);
}
}
} else {
mysql_query('START TRANSACTION;');
$test = mysql_fetch_array(
mysql_query(
'SELECT `id`,`team_win`, `testfinish` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `team_win` != -1 LIMIT 1 FOR UPDATE'
)
);
mysql_query('COMMIT;');
if (isset($test['id'])) {
$this->finishBattle(null, null, 10, $tl);
}
}
}
//Поглощение урона
public function get_chanse($percent): bool
{
if ($percent >= 100) {
$percent = 100;
} elseif ($percent == 0) {
$percent = 0;
}
return $this->dodge(1, $percent);
}
public function dodge($a, $b): bool
{
$i = 0;
$arr = []; //массив для записи уникальных случайных чисел
while ($i < ($b - $a)) {
while (in_array($rand, $arr)) {
$rand = mt_rand(1, 100);
}
$arr[] = $rand;
$i++;
}
$n = mt_rand(1, 100);
return (bool)array_search($n, $arr);
}
//Поглощение урона
private function miniLogAdd($user, $text)
{
$vLog = 'at1=00000||at2=00000||zb1=0||zb2=0||bl1=0||bl2=0||time1=' . time() . '||time2=' . time() . '||s1=' . $user['sex'] . '||t1=' . $user['team'] . '||login1=' . $user['login'] . '||';
$mas1 = [
'time' => time(),
'battle' => $this->info['id'],
'id_hod' => ($this->hodID + 1),
'text' => $text,
'vars' => $vLog,
'zona1' => '',
'zonb1' => '',
'zona2' => '',
'zonb2' => '',
'type' => '1',
];
$this->add_log($mas1);
}
public function add_log($mass)
{
if (empty($mass['text'])) {
return;
}
mysql_query(
'INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`type`) VALUES (unix_timestamp(), "' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $mass['text'] . '","' . $mass['vars'] . '","' . $mass['type'] . '")'
);
if (rand(2, 10) == 10) {
$this->get_comment();
}
}
//Тестируем удары и т.д
public function get_comment()
{
$boycom = [
'А танцуешь ты лучше.',
'А мы что, в прятки тут играем?',
'А вы разве пингвинов никогда не видели?',
'А, ведь когда-то, вы были красивыми… А теперь? Ну и рожи! Жуть!',
'А потом еще труп пинать будут.',
'А я вчера ночью за соседями подглядывал. Они точно так же кувыркались',
'А ведь вы живых людей дубасите...',
'А вот я вчера в зоопарке был...',
'А вы в стройбате не служили?',
'А вы видели, чтобы так на улице делали!?',
'А вы знали что ёжики размножаются в интернете?',
'А жить-то, как хочется:',
'А из-за чего вы собственно дерётесь?',
'А чего ржёте, вы ещё остальных не видели',
'А что произойдёт если ты испугаешся до полусмерти дважды?!',
'Больше так не делай. Ты же не садист?',
'Без комментариев...',
'Больно ведь!',
'Быстро ты за монитор спрятался!',
'Все хотят попасть в рай, но никто не хочет умирать!',
'Вчера с такой девчонкой познакомился.',
'Всего 5 минут знакомы, а дерутся, словно супруги с 20-ти летним стажем...',
'Все. Я так больше не могу.',
'В конце концов, кто-то победит?',
'Вы чего, с дерева упали?',
'Возятся как сонные мухи... давайте я вам лучше анекдот расскажу: ...',
'Вот видишь, как полезно чистить зубы на ночь?',
'Вот вы все руками махаете, а за вами уже очередь',
'Вот попадёте вы в плен и вас там будут долго бить. Но вы ничего не расскажете... и не потому, что вы такой стойкий, просто вы ничего не знаете',
'Вы бы лучше пошли потренировались!',
'Вы все еще разминаетесь? Позовите, когда кости в муку друг другу разминать будете.',
'Вы же бойцы! Имейте совесть!',
'Гаси недоумка!',
'Да, если бы я смог это остановить, то получил бы нобелевскую премию `За мир` ',
'Да куда они бьют?!',
'Давайте быстрее! За вами уже очередь образовалась.',
'Давайте обойдемся сегодня таймаутом. А? А то мне уже кошмары скоро будут сниться.',
'Дерутся как девчонки!',
'Дети, посмотрите налево... Ой!.. Нет, туда лучше не смотреть.',
'Если так будет продолжаться, то скоро мы заснем!',
'Если бы у меня было кресло-качалка, я бы в нём качался...',
'Если вы что-то сказать хотите, то лучше молчите :)',
'Жестокость не порок.',
'Жизнь вне нашего клуба - это пустая трата кислорода!!!',
'Жми! Дави! Кусай! Царапай!',
'За такие бои надо в хаос отправлять!',
'Знаете откуда в комиссионном магазине столько вещей? Это я после ваших гулянок собираю и сдаю туда. Иногда вместе с частями тела, застрявшими в них.',
'Здесь люди так близки друг к другу. Просто иначе ударить нельзя.',
'И пролитая кровь еще пульсирует...',
'Инвалидов развелось...',
'Какой бой!!!',
'Кто!? Кто здесь?!',
'Кто вас этому научил?',
'Кузнечик, блин...',
'Куплю импортный проигрыватель грампластинок.',
'Лошадью ходи!',
'Лучше враг, чем друг - враг.',
'Ладно, вы тут пока друг друга за волосы таскайте, а я пойду, пообедаю.',
'Мне ваш балет уже надоел!',
'Может, начнется-таки настоящий бой???',
'Мысли лезут в голову изнутри, а удары снаружи.',
'Ну и где ваши коронные удары? Где живописные падения я спрашиваю!',
'Ну, нельзя же так наотмашь лупить!',
'Надо раньше было думать, теперь смертельно поздно...',
'На такое зрелище билеты продавать можно. Народ ухохочется!',
'Нет! Не надо драки! А... ладно деритесь, все равно не умеете.',
'Нет, ну должен быть повод, должен же быть повод?',
'Нет, я отказываюсь это комментировать!',
'Не таких обламывали!',
'Ну выпили вы рюмку, ну две... ну литр, ну два... так зачем же после этого драку затевать?!',
'Ну и кто за этот погром платить будет?',
'Ну и оскал у вас. Из вашей улыбки кастеты делать можно.',
'Ну, что же ты..? Не печалься. Выше голову, так по ней удобней попасть.',
'Ничего... Блок тоже удар.',
'Обернись!!!.... Поздно...',
'Ого! Научите меня так не делать.',
'Осторожно! Сделаешь дырочку, уже не запломбируешь!',
'Оно вам надо???',
'Обычное дело...там что-то отклеилось.',
'Ой, и заболтался я с вами...',
'Он же не промахнётся если ты не отойдёшь!',
'По-моему, кому-то светит инвалидность.',
'Подкинь ему грабли, на которые он еще не наступал.',
'Прав был кот Леопольд, давайте жить дружно?',
'При ударе в живот нарушается кислотно-щелочной баланс.',
'Проверь, не торчит ли у тебя нож из живота.',
'Перестаньте мне орать!',
'Подкинь ему грабли, на которые он еще не наступал.',
'Прыгают тут как блохи... Все, я пошел за дихлофосом!',
'Разбудите меня когда эта порнография закончится...',
'Ребенок сильнее ударил бы!',
'Славно вмазал!',
'Славно они веселятся',
'Смотрю вот на вас, и слезы наворачиваются.',
'Сначала учатся ходить, а потом только в драку лезут.',
'Так они друг другу что-нибудь сломают.',
'Так ты ему все кости переломаешь!',
'У меня в подъезде точно так же соседа отмудохали',
'Убогих развелось...',
'Ух ты, какой прыткий!',
'Фашист!! Надо ж, так по больному месту врезать...',
'Хватит бить его об угол моей кабинки! Мне же потом ее чинить.',
'Хулиганы, прекратите немедленно!',
'Хочешь, подскажу, куда он ударит?',
'Хорошо, что у меня ловкости больше чем у вас всех, а то б вы и меня в инвалидную коляску посадили бы.',
'Хороший бой!',
'Хороший удар!',
'Хиляк-разрядник!',
'Что ты его за волосы схватил?! Отпусти немедленно!',
'Щас я вас настигну, вот тогда мы и похохочем',
'Это была какая-то неизвестная мне техника...',
'Это же противник, а не глина! Хватит мяться!',
'Это не бой, это издевательское избиение.',
'Это поубавит спеси',
'Это и был твой план `Б` ?',
'Это была какая-то неизвестная мне техника...',
'Я же предупреждал, - будет больно.',
'Я не страдаю безумием. Я наслаждаюсь им каждую минуту :)',
'Я красивый, я сильный, я умный, я добрый. А вот вы? Вы себя-то видели?!',
'Я тоже умею драться, но не буду...',
'(тревожно озираясь) я вам по секрету скажу... за вами наблюдают!',
'<вырезано цензурой> после боя я этих <вырезано цензурой> обоих в <вырезано цензурой> и <вырезано цензурой>',
'<вырезано цензурой> каратисты фиговы',
];
if (rand(1, 12) === 1) {
$txt = '{tm1} <i>Комментатор: ' . $boycom[rand(0, count($boycom) - 1)] . '</i>';
$vLog = 'time1=' . time() . '';
$mas1 = [
'time' => time(),
'battle' => $this->info['id'],
'id_hod' => $this->hodID,
'text' => '',
'vars' => $vLog,
'zona1' => '',
'zonb1' => '',
'zona2' => '',
'zonb2' => '',
'type' => '1',
];
$mas1['text'] = $txt;
$this->add_log($mas1);
} else {
return false;
}
return true;
}
//Игрок1 наносит удар Игрок2
public function finishBattle($t, $v, $nl, $tl)
{
global $magic, $u, $q, $c;
$chat = new Chat();
mysql_query('LOCK TABLES users,stats,battle,battle_last,battle_end,chat WRITE');
$frtu = false;
$test = mysql_fetch_array(
mysql_query(
'SELECT `id`,`team_win`,`testfinish` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `team_win` != -1 LIMIT 1;'
)
);
if ($test['testfinish'] != -1) {
$trtt = mysql_query(
'UPDATE `battle` SET `testfinish` = "-1" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'
);
$relbf = $this->info['team_win'];
if ($nl != 10) {
$i = 0;
$dnr = 0;
if ($this->info['team_win'] == -1) {
$this->info['team_win'] = 0;
while ($i < count($v)) {
if ($v[$i] >= 1 && $t[$v[$i]] > 0) {
$this->info['team_win'] = $v[$i];
}
$i++;
}
}
}
//данные о игроках в бою
$t = mysql_query(
'SELECT `u`.`stopexp`,`u`.`twink`,`u`.`city`,`u`.`room`,`u`.`no_ip`,`u`.`pass`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`bot_id`,`u`.`money3`,`u`.`money2` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "' . $this->info['id'] . '"'
);
$i = 0;
$bi = 0;
while ($pl = mysql_fetch_array($t)) {
//записываем данные
if ($pl['login2'] == '') {
$pl['login2'] = $pl['login'];
}
$this->users[$i] = $pl;
$this->uids[$pl['id']] = $i;
if ($pl['bot'] > 0) {
$this->bots[$bi] = $pl['id'];
$this->iBots[$pl['id']] = $bi;
$bi++;
}
//записываем статы
$this->stats[$i] = $u->getStats($pl, 0, 0, false, false, true);
$i++;
}
unset($pl, $t);
if ($this->info['time_over'] == 0) {
$tststrt = mysql_fetch_array(
mysql_query(
'SELECT * FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `time_over` = "0" LIMIT 1'
)
);
if (isset($tststrt['id'])) {
if ($this->info['inTurnir'] == 0 || $this->info['type'] == 500) {
mysql_query(
'UPDATE `battle` SET `time_over` = "' . time() . '",`team_win` = "' . $this->info['team_win'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'
);
}
mysql_query(
'UPDATE `battle_stat` SET `team_win` = "' . $this->info['team_win'] . '" WHERE `battle_id` = "' . $this->info['id'] . '"'
);
//Заносим данные о завершении боя
$i = 0;
$vl = '';
$vtvl = '';
$relu = 0;
while ($i < count($this->users)) {
$vl .= '("' . $this->users[$i]['login'] . '","' . $this->users[$i]['city'] . '","' . $this->info['id'] . '","' . $this->users[$i]['id'] . '","' . time() . '","' . $this->users[$i]['team'] . '","' . $this->users[$i]['level'] . '","' . $this->users[$i]['align'] . '","' . $this->users[$i]['clan'] . '","' . $this->users[$i]['exp'] . '","' . $this->users[$i]['bot'] . '","' . $this->users[$i]['money'] . '","' . $this->users[$i]['money2'] . '","' . $this->users[$i]['money3'] . '"),';
if ($this->users[$i]['team'] == $this->info['team_win'] && $this->info['team_win'] > 0) {
$vtvl .= '<strong>' . $this->users[$i]['login'] . '</strong>, ';
}
$i++;
}
$this->info['players_c'] = mysql_fetch_array(
mysql_query(
'SELECT COUNT(`id`) FROM `users` WHERE `login` NOT LIKE "%(зверь%" AND `battle` = "' . $this->info['id'] . '" LIMIT 1'
)
);
$this->info['players_c'] = $this->info['players_c'][0];
mysql_query(
'UPDATE `battle` SET `players_c` = "' . $this->info['players_c'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'
);
if ($vtvl != '') {
$vtvl = rtrim($vtvl, ', ');
$vtvl = str_replace('"', '\\\\\"', $vtvl);
$this->hodID++;
$vLog = 'time1=' . time();
$mass = [
'time' => time(),
'battle' => $this->info['id'],
'id_hod' => $this->hodID,
'text' => 'test',
'vars' => $vLog,
'zona1' => '',
'zonb1' => '',
'zona2' => '',
'zonb2' => '',
'type' => '1',
];
$vtvl = 'Бой закончен, победа за ' . $vtvl . '.';
} else {
$this->info['players_cc'] = mysql_fetch_array(
mysql_query(
'SELECT COUNT(`u`.`id`) FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `s`.`hpNow` > 0 AND `u`.`battle` = "' . $this->info['id'] . '" AND `s`.`team` != "' . $u->info['team'] . '" LIMIT 1'
)
);
$this->info['players_cc'] = $this->info['players_cc'][0];
$this->info['players_cc2'] = mysql_fetch_array(
mysql_query(
'SELECT COUNT(`u`.`id`) FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `s`.`hpNow` >= 1 AND `u`.`battle` = "' . $this->info['id'] . '" AND `s`.`team` != "' . $u->info['team'] . '" LIMIT 1'
)
);
$this->info['players_cc2'] = $this->info['players_cc2'][0];
$inf_test = ', users: ' . $this->info['players_cc'] . ' and ' . $this->info['players_cc2'] . '';
$this->hodID++;
$vLog = 'time1=' . time();
$mass = [
'time' => time(),
'battle' => $this->info['id'],
'id_hod' => $this->hodID,
'text' => 'test',
'vars' => $vLog,
'zona1' => '',
'zonb1' => '',
'zona2' => '',
'zonb2' => '',
'type' => '1',
];
$vtvl = 'Бой закончен, ничья.';
}
$ins = mysql_query(
'INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'
);
$this->saveLogs();
if ($this->info['type'] == 99) {
$vLog = 'time1=' . time();
$mass = [
'time' => time(),
'battle' => $this->info['id'],
'id_hod' => $this->hodID,
'text' => 'test',
'vars' => $vLog,
'zona1' => '',
'zonb1' => '',
'zona2' => '',
'zonb2' => '',
'type' => '1',
];
$vtvl = 'И победители стали калечить проигравших...';
$ins = mysql_query(
'INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'
);
$i = 0;
$vtvl = '';
$tr_nm = [
1 => 'легкую',
2 => 'среднюю',
3 => 'тяжелую',
4 => 'неизлечимую',
];
while ($i < count($this->users)) {
if ($this->users[$i]['team'] != $this->info['team_win']) {
$tr_pl = mysql_fetch_array(
mysql_query(
'SELECT `id`,`v1` FROM `eff_users` WHERE `id_eff` = 4 AND `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = "0" ORDER BY `v1` DESC LIMIT 1'
)
);
if (!isset($tr_pl['id']) || $tr_pl['v1'] < 3) {
if ($this->info['smert'] == 1) {
$tr_tp = 4;
} else {
$tr_tp = rand(1, 3);
}
if (isset($tr_pl['id'])) {
$tr_tp = rand(($tr_pl['v1'] + 1), 3);
}
if ($this->users[$i]['sex'] == 1) {
$vtvl = '<strong>' . $this->users[$i]['login'] . '</strong> получила повреждение: <font color=red>' . $tr_nm[$tr_tp] . ' травму</font>.<br>' . $vtvl;
} else {
$vtvl = '<strong>' . $this->users[$i]['login'] . '</strong> получил повреждение: <font color=red>' . $tr_nm[$tr_tp] . ' травму</font>.<br>' . $vtvl;
}
$this->addTravm($this->users[$i]['id'], $tr_tp, rand(3, 5));
}
}
$i++;
}
$ins = mysql_query(
'INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'
);
}
if ($vl != '') {
$vl = rtrim($vl, ',');
mysql_query(
'INSERT INTO `battle_last` (`login`,`city`,`battle_id`,`uid`,`time`,`team`,`lvl`,`align`,`clan`,`exp`,`bot`,`money`,`money2`,`money3`) VALUES ' . $vl . ''
);
}
mysql_query(
'INSERT INTO `battle_end` (`battle_id`,`city`,`time`,`team_win`) VALUES ("' . $this->info['id'] . '","' . $this->info['city'] . '","' . $this->info['time_start'] . '","' . $this->info['team_win'] . '")'
);
}
$vLog = 'time1=' . time();
$mass = [
'time' => time(),
'battle' => $this->info['id'],
'id_hod' => $this->hodID,
'text' => 'test',
'vars' => $vLog,
'zona1' => '',
'zonb1' => '',
'zona2' => '',
'zonb2' => '',
'type' => '1',
];
$i = 0;
$vtvl = '';
$tr_nm = [
1 => 'легкую',
2 => 'среднюю',
3 => 'тяжелую',
4 => 'неизлечимую',
];
while ($i < count($this->users)) {
if ($this->users[$i]['team'] != $this->info['team_win'] && $this->info['team_win'] > 0) {
$tr_pl = mysql_fetch_array(
mysql_query(
'SELECT * FROM `eff_users` WHERE `v1` = "priem" AND `v2` = 292 AND `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = "0" LIMIT 1'
)
);
$ins = mysql_query(
'INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl2 . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'
);
if (isset($tr_pl['id'])) {
if (rand(0, 100) < $tr_pl['data']) {
$tr_tp = rand(1, 3);
if (isset($tr_pl['id'])) {
$tr_tp = rand(($tr_pl['v1'] + 1), 3);
}
if ($this->users[$i]['sex'] == 1) {
$vtvl = '<strong>' . $this->users[$i]['login'] . '</strong> получила повреждение (Искалечить, автор: <strong>' . $this->users[$this->uids[$tr_pl['user_use']]]['login'] . '</strong>): <font color=red>' . $tr_nm[$tr_tp] . ' травму</font>.<br>' . $vtvl;
} else {
$vtvl = '<strong>' . $this->users[$i]['login'] . '</strong> получил повреждение (Искалечить, автор: <strong>' . $this->users[$this->uids[$tr_pl['user_use']]]['login'] . '</strong>): <font color=red>' . $tr_nm[$tr_tp] . ' травму</font>.<br>' . $vtvl;
}
$this->addTravm($this->users[$i]['id'], $tr_tp, rand(3, 5));
}
}
}
$i++;
}
if ($vtvl != '') {
if ($this->info['type'] != 99) {
$vtvl2 = 'И победители стали калечить проигравших...';
$ins = mysql_query(
'INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl2 . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'
);
}
$ins = mysql_query(
'INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'
);
}
//Турнир БС
if ($this->info['inTurnir'] > 0 && $this->info['dungeon'] != 15 && $u->info['room'] != 413) {
$bs = mysql_fetch_array(
mysql_query('SELECT * FROM `bs_turnirs` WHERE `id` = "' . $this->info['inTurnir'] . '" LIMIT 1')
);
$i = 0;
$j = 0;
while ($i < count($this->users)) {
if ($this->stats[$i]['hpNow'] < 1 && $this->users[$i]['clone'] == 0 && $this->stats[$i]['clone'] == 0) {
//Добавляем в лог БС
if ($this->users[$i]['sex'] == 0) {
$text .= '{u1} повержен и выбывает из турнира';
} else {
$text .= '{u1} повержена и выбывает из турнира';
}
//Выкидываем предметы с персонажа
$spik = mysql_query(
'SELECT `id`,`item_id` FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `delete` ="0"'
);
while ($plik = mysql_fetch_array($spik)) {
mysql_query(
'INSERT INTO `dungeon_items` (`dn`,`item_id`,`time`,`x`,`y`) VALUES (
"' . $this->users[$i]['dnow'] . '","' . $plik['item_id'] . '","' . (time() - 600) . '","' . $this->users[$i]['x'] . '","' . $this->users[$i]['y'] . '"
)'
);
}
unset($spik, $plik);
//
$usrreal = '';
$usr_real = mysql_fetch_array(
mysql_query(
'SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `login` = "' . $this->users[$i]['login'] . '" AND `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1'
)
);
if (!isset($usr_real['id'])) {
$usr_real = $this->users[$i];
}
if (isset($usr_real['id'])) {
if ($usr_real['align'] > 0) {
$usrreal .= '<img src=//img.new-combats.tech/i/align/align' . $usr_real['align'] . '.gif width=12 height=15 >';
}
if ($usr_real['clan'] > 0) {
$usrreal .= '<img src=//img.new-combats.tech/i/clan/' . $usr_real['clan'] . '.gif width=24 height=15 >';
}
$usrreal .= '<strong>' . $usr_real['login'] . '</strong>[' . $usr_real['level'] . ']<a target=_blank href=/info/' . $usr_real['id'] . ' ><img width=12 hiehgt=11 src=//img.new-combats.tech/i/inf_capitalcity.gif ></a>';
} else {
$mereal = '<i>Невидимка</i>[??]';
}
$text = str_replace('{u1}', $usrreal, $text);
mysql_query(
'INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES (
"1", "' . mysql_real_escape_string($text) . '", "' . time() . '", "' . $bs['id'] . '", "' . $bs['count'] . '", "' . $bs['city'] . '",
"' . round($bs['money'] * 0.85, 2) . '","' . $i . '"
)'
);
//
//Удаление клона
mysql_query('DELETE FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1');
mysql_query('DELETE FROM `stats` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1');
mysql_query('DELETE FROM `actions` WHERE `uid` = "' . $this->users[$i]['id'] . '"');
mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '"');
mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '"');
mysql_query('DELETE FROM `users_delo` WHERE `uid` = "' . $this->users[$i]['id'] . '"');
//Обновление персонажа
mysql_query(
'UPDATE `users` SET `inUser` = "0" WHERE `login` = "' . $this->users[$i]['login'] . '" OR `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
//Обновляем заявку
mysql_query(
'UPDATE `bs_zv` SET `off` = "' . time() . '" WHERE `inBot` = "' . $this->users[$i]['id'] . '" AND `off` = "0" LIMIT 1'
);
unset($text, $usrreal, $usr_real);
if ($this->users[$i]['pass'] != 'bstowerbot') {
$bs['users']--;
$bs['users_finish']++;
} else {
$bs['arhiv']--;
}
$j++;
}
$i++;
}
if ($j > 0) {
mysql_query(
'UPDATE `bs_turnirs` SET `arhiv` = "' . $bs['arhiv'] . '",`users` = "' . $bs['users'] . '",`users_finish` = "' . $bs['users_finish'] . '" WHERE `id` = "' . $bs['id'] . '" LIMIT 1'
);
}
unset($bs, $j);
}
//Награда за события
if ($this->info['type'] == 500 && isset($tststrt['id'])) {
//Предметы которые выпадают в центр
$i = 0;
while ($i < count($this->users)) {
$cmsg = new ChatMessage();
$cmsg->setType(6);
$cmsg->setCity($this->users[$i]['city']);
$cmsg->setIsAlert(true);
if ($this->users[$i]['no_ip'] == 'trupojor') {
$mon = mysql_fetch_array(
mysql_query(
'SELECT * FROM `aaa_monsters` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 1'
)
);
if (isset($mon['id'])) {
if ($this->info['team_win'] == 0) {
//Ничья
mysql_query(
'UPDATE `stats` SET `hpNow` = "' . $this->stats[$i]['hpAll'] . '",`mpNow` = "' . $this->stats[$i]['mpAll'] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
$cmsg->setText(
str_replace(
'{b}',
'<strong>' . $this->users[$i]['login'] . '</strong> [' . $this->users[$i]['level'] . ']<a target=_blank href=info/' . $this->users[$i]['id'] . ' ><img width=12 height=11 src=//img.new-combats.tech/i/inf_capitalcity.gif ></a>',
$mon['nich_text']
)
);
$chat->sendMsg($cmsg);
} elseif ($this->info['team_win'] != $this->users[$i]['team']) {
//Выиграли
$j = 0;
$usrwin = '';
while ($j < count($this->users)) {
if ($this->users[$j]['no_ip'] != 'trupojor' && $this->users[$j]['bot'] == 0) {
if ($this->stats[$j]['hpNow'] > 0) {
$usrwin .= ', ';
if ($this->users[$j]['align'] > 0) {
$usrwin .= '<img width=12 height=15 src=//img.new-combats.tech/i/align/align' . $this->users[$j]['align'] . '.gif >';
}
if ($this->users[$j]['clan'] > 0) {
$usrwin .= '<img width=24 height=15 src=//img.new-combats.tech/i/clan/' . $this->users[$j]['clan'] . '.gif >';
}
$usrwin .= '<strong>' . $this->users[$j]['login'] . '</strong> [' . $this->users[$j]['level'] . ']<a target=_blank href=info/' . $this->users[$j]['id'] . ' ><img width=12 height=11 src=//img.new-combats.tech/i/inf_capitalcity.gif ></a>';
}
}
$j++;
}
if ($usrwin != '') {
$usrwin = ltrim($usrwin, ', ');
} else {
$usrwin = '<i>Команда героев</i>';
}
mysql_query(
'UPDATE `users` SET `room` = "303" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
$truptimelast = time() + rand(1800, 3600);
mysql_query(
'UPDATE `stats` SET `res_x` = "' . $truptimelast . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
$cmsg->setText(
str_replace(
'{b}',
'<strong>' . $this->users[$i]['login'] . '</strong> [' . $this->users[$i]['level'] . ']<a target=_blank href=info/' . $this->users[$i]['id'] . ' ><img width=12 height=11 src=//img.new-combats.tech/i/inf_capitalcity.gif ></a>',
str_replace('{u}', $usrwin, $mon['win_text'])
)
);
$chat->sendMsg($cmsg);
unset($usrwin);
} else {
//Проиграли
if ($mon['win_back'] == 1) {
mysql_query(
'UPDATE `users` SET `room` = "303" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
}
mysql_query(
'UPDATE `stats` SET `hpNow` = "' . $this->stats[$i]['hpAll'] . '",`mpNow` = "' . $this->stats[$i]['mpAll'] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
$cmsg->setText(
str_replace(
'{b}',
'<strong>' . $this->users[$i]['login'] . '</strong> [' . $this->users[$i]['level'] . ']<a target=_blank href=info/' . $this->users[$i]['id'] . ' ><img width=12 height=11 src=//img.new-combats.tech/i/inf_capitalcity.gif ></a>',
$mon['lose_text']
)
);
$chat->sendMsg($cmsg);
}
}
}
$i++;
}
}
}
// выкидываем ботов из боя
$i = 0;
$botsi = 0;
if (isset($tststrt['id'])) {
while ($i < count($this->users)) {
//Тут выкидываем юзеров из Призавого хаота
if ($this->info['type'] == 33) {
$plde = mysql_fetch_array(
mysql_query('SELECT * FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1')
);
if (isset($plde['mail']) && $plde['mail'] == "haot@new-combats.com") {
$pld = mysql_fetch_array(
mysql_query(
'SELECT * FROM `users` WHERE `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1'
)
);
if (isset($pld['id'])) {
if ($this->users[$i]['battle_yron'] >= 500) {
mysql_query(
'UPDATE `users_achiv` SET `pg`= `pg`+1 WHERE `id` = "' . $pld['id'] . '" LIMIT 1'
);
if ($this->users[$i]['team'] == $this->info['team_win'] && rand(1, 100) <= 5) {
ItemsModel::addItem(10020, $pld['id'], '');
$pld['battle_text'] .= ' За Героическое Сражение вы получаете <strong>Жетон Успеха</strong>. ';
}
} else {
$pld['battle_text'] .= ' Вы ничего не получили. <strong>Нужно набить больше 500 урона урона</strong> .';
}
$cmsg = new ChatMessage();
$cmsg->setCity($pld['city']);
$cmsg->setRoom($pld['room']);
$cmsg->setTo($pld['login']);
$cmsg->setText($pld['battle_text']);
$cmsg->setType(6);
$chat->sendMsg($cmsg);
mysql_query(
'DELETE FROM `stats` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
mysql_query(
'DELETE FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'
);
mysql_query(
'DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'
);
mysql_query(
'UPDATE `users` SET `inUser` = "0" WHERE `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
mysql_query(
'DELETE FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
}
}
unset ($plde, $pld);
}
if ($this->users[$i]['bot'] == 1) {
$botsi++;
mysql_query('DELETE FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1');
mysql_query('DELETE FROM `stats` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1');
mysql_query(
'DELETE FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'
);
mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100');
} elseif ($this->users[$i]['bot'] == 2) {
$this->users[$i]['battle'] = 0;
mysql_query(
'UPDATE `users` SET `battle` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
mysql_query(
'UPDATE `stats` SET `zv` = "0",`team` = "0",`exp` = `exp` + `battle_exp`,`battle_exp` = "0",`battle_yron` = "0",`enemy` = "0", `timeGo` = "' . time() . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100');
} elseif ($this->users[$i]['bot'] > 0) {
$this->users[$i]['battle'] = 0;
mysql_query(
'UPDATE `users` SET `battle` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
mysql_query(
'UPDATE `stats` SET `zv` = "0",`team` = "0",`exp` = `exp` + `battle_exp`,`battle_exp` = "0",`battle_yron` = "0",`enemy` = "0", `timeGo` = "' . time() . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100');
}
if ($this->users[$i]['clone'] > 0 && $this->users[$i]['bot'] > 0 && isset($this->users[$this->uids[$this->users[$i]['clone']]]['id']) && $this->users[$this->uids[$this->users[$i]['clone']]]['team'] != $this->users[$i]['team']) {
//Добавляем что клон побежден
if ($this->users[$this->uids[$this->users[$i]['clone']]]['team'] == $this->info['team_win']) {
$u->addAction(time(), 'win_bot_clone', '', $this->users[$i]['clone']);
} elseif ($this->info['team_win'] == 0) {
$u->addAction(time(), 'nich_bot_clone', '', $this->users[$i]['clone']);
} else {
$u->addAction(time(), 'lose_bot_clone', '', $this->users[$i]['clone']);
}
} elseif ($this->users[$i]['bot'] > 0 && $this->users[$i]['bot_id'] > 0) {
//Добавляем что бота победили
$j = 0;
while ($j < count($this->users)) {
if ($this->users[$j]['bot'] == 0 && $this->users[$j]['team'] != $this->users[$i]['team']) {
if ($this->users[$j]['team'] == $this->info['team_win']) { // if($this->users[$j]['team']==$this->info['team_win']){
$u->addAction(
time(), 'win_bot_' . $this->users[$i]['bot_id'], '',
$this->users[$j]['id']
);
//
mysql_query(
'UPDATE `dialog_act` SET `now` = `now` + 1 WHERE `uid` = "' . $this->users[$j]['id'] . '" AND
( `btl_bot` LIKE "' . $this->users[$i]['bot_id'] . '!%" OR `btl_bot` LIKE "%!' . $this->users[$i]['bot_id'] . '!%" )
AND `val` != 1
LIMIT 1'
);
//
} elseif ($this->info['team_win'] == 0) {
$u->addAction(
time(), 'nich_bot_' . $this->users[$i]['bot_id'], '',
$this->users[$j]['id']
);
} else {
$u->addAction(
time(), 'lose_bot_' . $this->users[$i]['bot_id'], '',
$this->users[$j]['id']
);
}
}
$j++;
}
}
$i++;
}
}
$botss = [];
//Из бота падают предметы
if ($nl != 10 && $this->info['dungeon'] > 0) {
if ($this->info['team_win'] == $u->info['team'] && $this->info['dungeon'] == 102) {
$j1 = mysql_fetch_array(
mysql_query(
'SELECT * FROM `laba_obj` WHERE `type` = 2 AND `lib` = "' . $this->info['dn_id'] . '" AND `x` = "' . $this->info['x'] . '" AND `y` = "' . $this->info['y'] . '" LIMIT 1'
)
);
if (isset($j1['id'])) {
mysql_query('DELETE FROM `laba_obj` WHERE `id` = "' . $j1['id'] . '" LIMIT 1');
//Выпадает шмотка
mysql_query(
'INSERT INTO `laba_obj` (`use`,`lib`,`time`,`type`,`x`,`y`,`vars`) VALUES (
"0","' . $j1['lib'] . '","' . time() . '","6","' . $j1['x'] . '","' . $j1['y'] . '","' . (0 + $botsi) . '"
)'
);
}
} elseif ($this->info['team_win'] == $u->info['team']) {
//выйграли люди, выкидываем предметы из мобов
$j1 = mysql_query(
'SELECT * FROM `dungeon_bots` WHERE `dn` = "' . $this->info['dn_id'] . '" AND `for_dn` = "0" AND `x` = "' . $this->info['x'] . '" AND `delete` = "0" AND `y`= "' . $this->info['y'] . '" LIMIT 100'
);
while ($tbot = mysql_fetch_array($j1)) {
$cmsg = new ChatMessage();
$cmsg->setDn($this->info['dn_id']);
$cmsg->setCity($this->users[0]['city']);
$cmsg->setRoom($this->users[0]['room']);
$cmsg->setType(6);
$cmsg->setTypeTime(1);
$j2 = 0;
while ($j2 < $tbot['colvo']) {
if (isset($tbot['id2'])) {
$tbot2 = mysql_fetch_array(
mysql_query(
'SELECT * FROM `test_bot` WHERE `id` = "' . $tbot['id_bot'] . '" LIMIT 1'
)
);
$itms = explode('|', $tbot2['p_items']);
$tii = 0;
$testdrop = 0;
while ($tii < count($itms) && $testdrop == 0) {
$itmz = explode('=', $itms[$tii]);
if ($itmz[0] > 0) {
if (isset($itmz[2]) && $itmz[2] != '') { // $itmz[2] == quest888
$questDrop = mysql_fetch_array(
mysql_query(
'SELECT * FROM `actions` WHERE `vars` LIKE "%' . $itmz[2] . '%" AND `vals` = "go" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
)
);
}
if (!isset($questDrop['id']) && isset($itmz[2]) && $itmz[2] != '') {
$itmz[1] = 0;
} // Если предмет квестовый, а квеста у игрока нет, то предмет выпадет с вероятностью 0
unset($questDrop);
//Добавляем этот предмет в зону Х и У
if ($itmz[1] * 100000 >= rand(1, 10000000)) {
$tou = 0; //какому юзеру предназначено
/* выделяем случайного юзера из команды */
$itmnm = mysql_fetch_array(
mysql_query(
'SELECT `name` FROM `items_main` WHERE `id` = "' . $itmz[0] . '" LIMIT 1'
)
);
$itmnm = $itmnm['name'];
$cmsg->setText(
'У <strong>' . $tbot2['login'] . '</strong> был предмет &quot;' . $itmnm . '&quot; и кто угодно может поднять его'
);
$chat->sendMsg($cmsg);
$ins = mysql_query(
'INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`) VALUES (
"' . $this->info['dn_id'] . '",
"' . $tou . '",
"' . $itmz[0] . '",
"' . time() . '",
"' . $this->info['x'] . '",
"' . $this->info['y'] . '")'
);
if (!isset($questDrop['id'])) {
$testdrop = 1; //ТУТ drop-drop //quest
}
}
}
$tii++;
}
}
$j2++;
}
//
//Квест 1-15 сентября,
if (
date('m') == 9 &&
date('d') < 15 &&
!$this->get_chanse(99) &&
($this->info['dungeon'] == 12 || $this->info['dungeon'] == 101)
) {
$tou = 0; //какому юзеру предназначено
/* выделяем случайного юзера из команды */
$itmz = [
rand(4745, 4751),
100,
];
//
$itmnm = mysql_fetch_array(
mysql_query(
'SELECT `name` FROM `items_main` WHERE `id` = "' . $itmz[0] . '" LIMIT 1'
)
);
$itmnm = $itmnm['name'];
$cmsg->setText(
'У <strong>' . $tbot2['login'] . '</strong> был предмет &quot;' . $itmnm . '&quot; и кто угодно может поднять его'
);
$chat->sendMsg($cmsg);
$ins = mysql_query(
'INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`) VALUES (
"' . $this->info['dn_id'] . '",
"' . $tou . '",
"' . $itmz[0] . '",
"' . time() . '",
"' . $this->info['x'] . '",
"' . $this->info['y'] . '")'
);
}
//
//Странички саныча,
if (rand(1, 100) <= 99) {
} elseif ($this->info['dungeon'] == 12 || $this->info['dungeon'] == 3 ||
$this->info['dungeon'] == 101 || $this->info['dungeon'] == 16 ||
$this->info['dungeon'] == 9 || $this->info['dungeon'] == 10 ||
$this->info['dungeon'] == 13 || $this->info['dungeon'] == 106) {
$tou = 0; //какому юзеру предназначено
// выделяем случайного юзера из команды
$itmz = mt_rand(3143, 3192);
//
$itmnm = mysql_fetch_array(
mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $itmz . '" LIMIT 1')
);
$itmnm = $itmnm['name'];
$cmsg->setText(
'У <strong>' . $tbot2['login'] . '</strong> был предмет &quot;' . $itmnm . '&quot; и кто угодно может поднять его'
);
$chat->sendMsg($cmsg);
$ins = mysql_query(
'INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`) VALUES (
"' . $this->info['dn_id'] . '",
"' . $tou . '",
"' . $itmz . '",
"' . time() . '",
"' . $this->info['x'] . '",
"' . $this->info['y'] . '")'
);
}
}
mysql_query(
'UPDATE `dungeon_bots` SET `delete` = "' . time() . '" AND `inBattle` = "' . $this->info['id'] . '" WHERE `dn` = "' . $this->info['dn_id'] . '" AND `for_dn` = "0" AND `delete` = "0" '
);
} else {
//выкидываем всех игроков в клетку RESTART
$dnr = 1;
if ($this->info['dungeon'] != 102) {
mysql_query(
'UPDATE `dungeon_bots` SET `inBattle` = "0" WHERE `dn` = "' . $this->info['dn_id'] . '" AND `for_dn` = "0" AND `x` = "' . $this->info['x'] . '" AND `y`= "' . $this->info['y'] . '"'
);
}
}
}
$gm = [];
$gms = [];
$bm = [];
$bms = [];
//Квестовый раздел
//Квестовый раздел
//завершаем поединок
$i = $this->uids[$u->info['id']];
if ($this->info['team_win'] >= 0) {
$cmsg = new ChatMessage();
$cmsg->setCity($this->users[$i]['city']);
$cmsg->setRoom($this->users[$i]['room']);
$cmsg->setType(6);
if ($this->stats[$i]['pbe'] > 0) {
//Бонус покупателя
$this->expCoef += $this->stats[$i]['pbe'];
}
if ($this->info['razdel'] == 5 && ($c['m'] >= 6 && $c['m'] <= 8 || $c['w'] == 0 || $c['w'] == 6)) {
$this->expCoef += 5;
}
$this->stats[$i]['exp'] += $this->expCoef;
$this->stats[$i]['exp'] += $this->aBexp * $c['exp'];
if ($this->stats[$i]['os4'] > 0) {
$this->stats[$i]['exp'] += $this->stats[$i]['os4'];
}
$act01 = 0;
$this->users[$i]['battle_exp'] = round(
$this->users[$i]['battle_exp'] + ($this->users[$i]['battle_exp'] / 100 * (1 + $this->info['addExp'] + $this->stats[$i]['exp']))
);
if ($this->info['type'] == 564) {
//Бой с копией
$this->users[$i]['battle_exp'] = 0;
}
if ($this->info['dungeon'] == 104) {
$this->users[$i]['battle_exp'] = ($u->info['level'] * 2) * (count($this->uids) - 1);
} elseif ($this->info['dungeon'] > 0 && $this->users[$i]['dnow'] != 0 && $this->info['dungeon'] != 1 && $this->users[$i]['team'] == $this->info['team_win']) {
$dun_limitForLevel = [
4 => 750,
5 => 1500,
6 => 3500,
7 => 8000,
8 => 25000,
9 => 50000,
10 => 75000,
11 => 100000,
12 => 100000,
13 => 100000,
14 => 100000,
];
// Максимум для каждого уровня.
if ($this->users[$i]['battle_exp'] > 0) {
$dun_exp = []; // Текущий лимит опыта игрока в подземельях.
$rep = mysql_fetch_array(
mysql_query(
'SELECT `dungeonexp`,`id` FROM `rep` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
)
);
$rep = explode(',', $rep['dungeonexp']);
foreach ($rep as $key => $val) {
$val = explode('=', $val); // текущий лимит опыта в подземке
if (isset($val[0]) && isset($val[1]) && $val[0] != '' && $val[1] != 0) {
$dun_exp[(int)$val[0]] = (int)$val[1];
}
}
unset($rep);
}
if (!isset($dun_exp[$this->info['dungeon']])) {
$dun_exp[$this->info['dungeon']] = 0;
}
if (!isset($dun_limitForLevel[(int)$this->users[$i]['level']])) { // Если лимит не задан, опыт не даем.
$this->users[$i]['battle_exp'] = 0;
} elseif (
isset($dun_exp[$this->info['dungeon']]) &&
$dun_exp[$this->info['dungeon']] >= $dun_limitForLevel[(int)$this->users[$i]['level']]
) { // Если лимит уже достигнут, опыт не даем.
$this->users[$i]['battle_exp'] = 0;
} elseif (
isset($dun_exp[$this->info['dungeon']]) &&
$dun_limitForLevel[(int)$this->users[$i]['level']] > $dun_exp[$this->info['dungeon']]
) { // Если текущая репутация не достигла лимита.
if (($dun_exp[$this->info['dungeon']] + $this->users[$i]['battle_exp']) > $dun_limitForLevel[(int)$this->users[$i]['level']]) {
// Если опыта набрано достаточно, для достижения лимита.
$this->users[$i]['battle_exp'] = abs(
$this->users[$i]['battle_exp'] - abs(
$dun_limitForLevel[(int)$this->users[$i]['level']] - ($this->users[$i]['battle_exp'] + $dun_exp[$this->info['dungeon']])
)
);
$dun_exp[$this->info['dungeon']] += $this->users[$i]['battle_exp'];
} elseif ($dun_limitForLevel[(int)$this->users[$i]['level']] > ($dun_exp[$this->info['dungeon']] + $this->users[$i]['battle_exp'])) {
// Если опыта недостаточно, для достижения лимита.
$dun_exp[$this->info['dungeon']] += $this->users[$i]['battle_exp'];
} else {
$this->users[$i]['battle_exp'] = 0;
}
} else { // В любой непонятной ситуцаии.
$this->users[$i]['battle_exp'] = 0;
}
if ($this->users[$i]['battle_exp'] > 0 && isset($dun_exp[$this->info['dungeon']]) && $dun_exp[$this->info['dungeon']] > 0) {
$dunexp = [];
foreach ($dun_exp as $key => $val) {
$dunexp[$key] = $key . '=' . $val; // текущий лимит опыта в подземке
}
$dun_exp = implode(",", $dunexp);
mysql_query(
'UPDATE `rep` SET `dungeonexp` = "' . $dun_exp . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
unset($dunexp, $dun_exp);
}
unset($dun_limitForLevel);
}
$sinf = '';
if ($c['exp_mega']) {
$this->users[$i]['battle_exp'] += floor(
$this->users[$i]['battle_exp'] / 100 * $c['exp_mega_val'][$this->users[$i]['level']]
);
}
if ($this->info['team_win'] == 0 && $this->info['type'] != 564) {
if ($this->users[$i]['level'] <= 1) {
$this->users[$i]['battle_exp'] = floor($this->users[$i]['battle_exp'] * 0.50);
} else {
$this->users[$i]['battle_exp'] = ceil($this->users[$i]['battle_exp'] * 0.10);
}
$this->users[$i]['nich'] += 1;
} elseif ($this->users[$i]['team'] == $this->info['team_win'] && $this->info['type'] != 564) {
$gm[$i] = $this->info['money'];
$gms[$i] = $this->info['money3'];
$this->users[$i]['win'] += 1;
$act01 = 1;
} elseif ($this->info['type'] != 564) {
if ($this->users[$i]['level'] <= 1) {
$this->users[$i]['battle_exp'] = ceil($this->users[$i]['battle_exp'] * 0.33);
} else {
$this->users[$i]['battle_exp'] = ceil($this->users[$i]['battle_exp'] * 0.10);
}
$bm[$i] = $this->info['money'];
$bms[$i] = $this->info['money3'];
$this->users[$i]['lose'] += 1;
$act01 = 2;
}
//Рассчитываем кол-во выигрышных сумм и кто сколько получил (для екр.)
if ($this->info['money3'] > 0 && isset($gms[$i]) && $this->info['type'] != 564) {
$mn = [
'l' => 0, //сколько проигравших игроков
'w' => 0, //сколько выигрывших игроков
'm' => 0, //сумма выигрыша (общая)
];
if ($act01 == 1) {
$mn['l'] = mysql_fetch_array(
mysql_query(
'SELECT COUNT(`id`) FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" AND `team` != "' . $this->users[$i]['team'] . '" LIMIT 1'
)
);
$mn['l'] = $mn['l'][0];
$mn['w'] = mysql_fetch_array(
mysql_query(
'SELECT COUNT(`id`) FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" AND `team` = "' . $this->users[$i]['team'] . '" LIMIT 1'
)
);
$mn['w'] = $mn['w'][0];
$mn['m'] = round(($mn['l'] * $this->info['money3']) / 100 * 87, 2);
$gms[$i] = round(($mn['m'] / $mn['w']), 2);
}
}
//заносим данные в БД
//Поломка предметов
if ($act01 == 1) {
//победа
if ($this->users[$i]['dnow'] == 0 && $this->users[$i]['hpNow'] < 1) {
$lom = 0.05;
}
} elseif ($act01 == 2) {
//поражение
$lom = 0.55;
} else {
//ничья
$lom = 0.05;
}
$nlom = [0 => rand(0, 18), 1 => rand(0, 18), 2 => rand(0, 18), 3 => rand(0, 18)];
if ($this->info['type'] == 564) {
$lom = 0;
}
if ($this->stats[$i]['silver'] >= 4) {
$lom = 0;
}
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = `iznosNOW`+' . $lom . ' WHERE `inOdet` < "18" AND `inOdet` > "0" AND `uid` = "' . $this->users[$i]['id'] . '" AND `inOdet`!="0" AND `inOdet`!=' . $nlom[0] . ' AND `inOdet`!=' . $nlom[1] . ' AND `inOdet`!=' . $nlom[2] . ' AND `inOdet`!=' . $nlom[3] . ' LIMIT 18'
);
$prc = '';
if ($this->users[$i]['align'] == 2) {
$this->users[$i]['battle_exp'] = floor($this->users[$i]['battle_exp'] / 2);
}
if ($this->users[$i]['animal'] > 0) {
$ulan = $u->testAction(
'`uid` = "' . $this->users[$i]['id'] . '" AND `vars` = "animal_use' . $this->info['id'] . '" LIMIT 1',
1
);
if (isset($ulan['id']) && $this->users[$i]['team'] == $this->info['team_win'] && $this->users[$i]['level'] > $ulan['vals']) {
$a004 = mysql_fetch_array(
mysql_query(
'SELECT `max_exp`,`name` FROM `users_animal` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `id` = "' . $this->users[$i]['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1'
)
);
//33% от опыта переходит зверю, но не более максимума
$aexp = (round($this->users[$i]['battle_exp'] / 100 * 33));
if ($aexp > $a004['max_exp']) {
$aexp = $a004['max_exp'];
}
unset($ulan);
//
$cmsg->setTo($this->users[$i]['login']);
$cmsg->setText("Ваш питомец «{$a004['name']}» получил опыт: <strong>$aexp</strong>");
$chat->sendMsg($cmsg);
//
$upd = mysql_query(
'UPDATE `users_animal` SET `exp` = `exp` + ' . $aexp . ' WHERE `id` = "' . $this->users[$i]['animal'] . '" AND `level` < ' . $this->users[$i]['level'] . ' LIMIT 1'
);
if ($upd) {
$this->users[$i]['battle_exp'] = round($this->users[$i]['battle_exp'] / 100 * 67);
$this->info['addExp'] -= 33.333;
}
}
}
$prsusers = mysql_fetch_array(
mysql_query(
'SELECT SUM(`price1`) FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" LIMIT 1'
)
);
$btlstatus = $this->typeBattle($prsusers[0]);
if ($this->info['smert'] == 1) {
$btlstatus = [150, 150, 'Жесточайшее Сражение', 'Жесточайшее Сражение'];
}
//
if ($this->stats[$i]['clanpos'] > 0 && ($this->stats[$i]['clanpos'] == 1 || $this->stats[$i]['clanpos'] == 2 || $this->stats[$i]['clanpos'] == 3)) {
$this->info['addExp'] += 0;
}
unset($r1);
//Статусная битва
if ($btlstatus[0] > 0) {
if ($this->info['type'] == 99) {
$this->info['addExp'] += $btlstatus[1];
} else {
$this->info['addExp'] += $btlstatus[0];
}
}
if ($this->users[$i]['align'] == 2 || $this->users[$i]['haos'] > time()) {
$this->stats[$i]['exp'] = -($this->info['addExp'] + 50);
}
if ($this->info['addExp'] + $this->stats[$i]['exp'] != 0) {
$prc = ' (' . (100 + $this->info['addExp'] + $this->stats[$i]['exp']) . '%)';
}
if ($this->info['money'] > 0) {
if (isset($gm[$i])) {
$prc .= ' Вы выйграли <strong>' . $gm[$i] . ' кр.</strong> за этот бой.';
$u->addDelo(
4, $this->users[$i]['id'],
'&quot;<font color="olive">System.battle</font>&quot;: Персонаж выйграл <strong>' . $gm[$i] . ' кр.</strong> (В бою №' . $this->info['id'] . ').',
time(), $this->info['city'], 'System.battle', 0, 0
);
$this->users[$i]['money'] += $gm[$i];
} elseif (isset($bm[$i])) {
$prc .= ' Вы заплатили <strong>' . $bm[$i] . ' кр.</strong> за этот бой.';
$u->addDelo(
4, $this->users[$i]['id'],
'&quot;<font color="olive">System.battle</font>&quot;: Персонаж <i>проиграл</i> <strong>' . $gm[$i] . ' кр.</strong> (В бою №' . $this->info['id'] . ').',
time(), $this->info['city'], 'System.battle', 0, 0
);
$this->users[$i]['money'] -= $bm[$i];
}
}
if ($c['money_haot'] && $this->users[$i]['exp'] <= 200000000) {
if ($act01 == 1 && $this->info['razdel'] == 5 && $this->users[$i]['level'] >= 8) {
//Сколько нужно опыта набить
$trexp = [
8 => 1200,
9 => 3000,
10 => 4500,
11 => 12000,
12 => 20000,
13 => 30000,
14 => 30000,
15 => 30000,
16 => 30000,
17 => 30000,
18 => 30000,
19 => 30000,
20 => 30000,
21 => 30000,
];
$trexp = $trexp[$this->users[$i]['level']];
//Какая цена фулла должна быть
$trmn = [
8 => 1000,
9 => 3000,
10 => 2500,
11 => 3000,
12 => 3000,
13 => 3000,
14 => 3000,
15 => 3000,
16 => 3000,
17 => 3000,
18 => 3000,
19 => 3000,
20 => 3000,
21 => 3000,
];
$trmn = $trmn[$this->users[$i]['level']];
//Сколько екр дается
$admn = [
8 => 0.05, //0.05
9 => 0.065, //0.065
10 => 0.075, //0.075
11 => 0.085, //0.085
12 => 0.1, //0.1
13 => 0.1,
14 => 0.1,
15 => 0.1,
16 => 0.1,
17 => 0.1,
18 => 0.1,
19 => 0.1,
20 => 0.1,
21 => 0.1,
];
$admn = $admn[$this->users[$i]['level']];
if ($c['m'] >= 6 && $c['m'] <= 8) {
//Летний период
if ($c['w'] == 0 || $c['w'] == 5 || $c['w'] == 6) {
//Выходные дни
$admn = $admn * 2;
}
} elseif ($c['w'] == 0 || $c['w'] == 5 || $c['w'] == 6) {
//Выходные дни
$admn = $admn * 2;
}
if ($this->users[$i]['battle_exp'] < $trexp) {
$prc .= ', Награда <strong>0 ЕКР</strong> за этот бой (Мало опыта набили).';
} elseif ($admn > 0) {
if ($this->info['type'] != 33) {
$prc .= ', Награда <strong>' . $admn . ' ЕКР</strong> за этот бой.';
}
$u->addDelo(
4, $this->users[$i]['id'],
'&quot;<font color="olive">System.battle</font>&quot;: Персонаж получил <strong>' . $admn . ' ЕКР</strong> (В бою №' . $this->info['id'] . ').',
time(), $this->info['city'], 'System.battle', 0, 0
);
$this->users[$i]['money2'] += $admn;
}
}
}
if ($this->info['money3'] > 0) {
if (isset($gms[$i])) {
$prc .= ' Вы выйграли <strong>' . $gms[$i] . ' $.</strong> за этот бой.';
$u->addDelo(
4, $this->users[$i]['id'],
'&quot;<font color="olive">System.battle</font>&quot;: Персонаж выйграл <strong>' . $gms[$i] . ' $.</strong> (В бою №' . $this->info['id'] . ').',
time(), $this->info['city'], 'System.battle', 0, 0
);
$this->users[$i]['money3'] += $gms[$i];
mysql_query(
'UPDATE `users` SET `money3` = `money3` + "' . $gms[$i] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
} elseif (isset($bms[$i])) {
$prc .= ' Вы заплатили <strong>' . $bms[$i] . ' $.</strong> за этот бой.';
$u->addDelo(
4, $this->users[$i]['id'],
'&quot;<font color="olive">System.battle</font>&quot;: Персонаж <i>проиграл</i> <strong>' . $gms[$i] . ' $.</strong> (В бою №' . $this->info['id'] . ').',
time(), $this->info['city'], 'System.battle', 0, 0
);
$this->users[$i]['money3'] -= $bms[$i];
mysql_query(
'UPDATE `users` SET `money3` = `money3` - "' . $bms[$i] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
}
}
$lime = [
8 => 18000,
9 => 28000,
10 => 84000,
11 => 100,
12 => 100,
13 => 100,
14 => 100,
15 => 100,
16 => 100,
17 => 100,
18 => 100,
19 => 100,
20 => 100,
21 => 100,
];
if ($this->users[$i]['level'] < 8) {
$lime = 5400;
} else {
$lime = $lime[$this->users[$i]['level']];
}
if ($this->stats[$i]['silver'] >= 5) {
$lime += round($lime);
}
if ($this->users[$i]['stopexp'] == 1) {
$lime = 0;
$this->users[$i]['battle_exp'] = 0;
}
if ($lime < $this->users[$i]['battle_exp'] && $c['limitedexp'] == true) {
$this->users[$i]['battle_exp'] = $lime;
}
unset($lime);
if ($btlstatus[0] > 0) {
if ($this->info['type'] == 99) {
$prc .= ' (' . $btlstatus[3] . ')';
} else {
$prc .= ' (' . $btlstatus[2] . ')';
}
}
if ($this->info['dungeon'] == 1 && $this->users[$i]['team'] == $this->info['team_win']) {
//канализация лимит
$rep = mysql_fetch_array(
mysql_query(
'SELECT `dl1`,`id` FROM `rep` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
)
);
if ($rep['dl' . $this->info['dungeon']] > 0) {
$this->users[$i]['battle_exp'] += 3 * count($this->users);
if ($rep['dl' . $this->info['dungeon']] > $this->users[$i]['battle_exp']) {
$rep['dl' . $this->info['dungeon']] -= $this->users[$i]['battle_exp'];
} else {
$this->users[$i]['battle_exp'] = $rep['dl' . $this->info['dungeon']];
$rep['dl' . $this->info['dungeon']] = 0;
}
mysql_query(
'UPDATE `rep` SET `dl' . $this->info['dungeon'] . '` = "' . $rep['dl' . $this->info['dungeon']] . '" WHERE `id` = "' . $rep['id'] . '" LIMIT 1'
);
} else {
$this->users[$i]['battle_exp'] = 0;
}
}
if ($this->users[$i]['battle_exp'] < 1) {
$this->users[$i]['battle_exp'] = 0;
}
if ($this->users[$i]['battle_exp'] < 1 && $this->users[$i]['twink'] == 0) {
if ($this->info['money'] == 0 && $this->info['money3'] == 0 && $this->info['kingfight'] == 0 && (!isset($admnb) || $admnb == 0)) {
$prc = '';
}
}
if ($this->user[$i]['host_reg'] == 'real_bot_user') {
$this->users[$i]['battle_exp'] = round($this->users[$i]['battle_exp'] / 3);
}
if ($sinf != '') {
$sinf = ' ( ' . $sinf . ' )';
}
//--------------Лимит 8-9--------------
if ($this->users[$i]['level'] == 8 && $this->users[$i]['battle_exp'] >= 23000) {
$this->users[$i]['battle_exp'] = 23000;
}
if ($this->users[$i]['level'] == 9 && $this->users[$i]['battle_exp'] >= 31000) {
$this->users[$i]['battle_exp'] = 31000;
}
if ($this->users[$i]['level'] == 10 && $this->users[$i]['battle_exp'] >= 52000) {
$this->users[$i]['battle_exp'] = 52000;
}
if ($this->users[$i]['level'] >= 11 && $this->users[$i]['battle_exp'] >= 75000) {
$this->users[$i]['battle_exp'] = 75000;
}
//-------------------------------------
if ($this->info['type'] != 33) {
$this->users[$i]['battle_text'] = 'Бой закончен. Всего вами нанесено урона: <strong>' . floor(
$this->users[$i]['battle_yron']
) . ' HP</strong>. Получено опыта: <strong>' . (0 + $this->users[$i]['battle_exp']) . '</strong>' . $prc . '.' . $sinf; //stats
}
/*Выпадение зубов в конце боя */
if ($c['nolevel']) {
$rex95 = substr($this->users[$i]['exp'], -1);
if ($this->users[$i]['money4'] < 1000 && $this->users[$i]['exp'] == 12499) {
$rex95 = 6;
$rex95 = 5;
}
} else {
$rex95 = 5;
}
if ($c['zuby'] && $this->info['dungeon'] == 0 && ($this->info['clone'] == 0 || $this->users[$i]['level'] < 5) && $rex95 != 9 && $this->info['type'] != 564) {
if ($this->users[$i]['align'] != 2 && $this->users[$i]['level'] >= 0 && $this->users[$i]['level'] < 8 && $this->users[$i]['battle_exp'] > 0) {
$rzb = 0;
if ($this->get_chanse(50)) {
$rzb += rand(1, 3);
} else {
if ($this->users[$i]['battle_exp'] > 15) {
$rzb += 1;
}
}
$chzbs = 100;
if ($this->stats[$i]['silver'] > 0) {
$chzbs = 150;
}
if ($this->users[$i]['battle_exp'] > 9) {
if ($this->users[$i]['level'] > 1) {
//Нормальный зуб
if ($this->get_chanse(25 / 100 * $chzbs)) {
$rzb += 10;
}
} elseif ($this->users[$i]['level'] == 1) {
if ($this->get_chanse(30 / 100 * $chzbs)) {
$rzb += 10;
}
}
if ($this->users[$i]['level'] > 3) {
if ($this->get_chanse(5 / 100 * $chzbs)) {
$rzb += 100;
}
}
}
if ($this->users[$i]['team'] == $this->info['team_win']) {
//выиграли
if ($this->users[$i]['level'] < 8) {
$rzb += 1;
}
} elseif ($this->users[$i]['team'] == 0) {
//ничья
if ($this->get_chanse(25 / 100 * $chzbs) && $this->users[$i]['battle_exp'] > 2) {
$rzb = rand(0, 1);
} else {
$rzb = 0;
}
} else {
//проиграли
if ($this->users[$i]['level'] >= 1) {
$rzb = 0;
} else {
if ($this->users[$i]['battle_exp'] < 3) {
$rzb = 0;
} elseif ($this->user[$i]['lose'] > $this->user[$i]['win']) {
if ($this->get_chanse(5 / 100 * $chzbs)) {
$rzb = rand(0, 1);
} else {
$rzb = 0;
}
} elseif ($this->get_chanse(10 / 100 * $chzbs)) {
$rzb = rand(0, 1);
}
}
$rzb = 0;
}
if ($rex95 == 6) {
if ($this->users[$i]['battle_exp'] > 10) {
$rzb = rand(0, 1);
} else {
$rzb = 0;
}
}
if ($rzb > 0 && rand(0, 1000) <= 500) {
$rzb = rand(1, 3);
}
if ($rzb > 0) {
if ($this->stats[$i]['silver'] >= 5) {
$rzb = $rzb * 2;
}
mysql_query(
'UPDATE `users` SET `money4` = `money4` + "' . $rzb . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
$this->users[$i]['battle_text'] .= ' Вы получили <small>' . $u->zuby(
$rzb,
1
) . '</small> за этот бой.';
}
}
}
if ($this->info['priz'] > 0 && true == false) { // тут были реликвии ангела.
//Призовой хаот
/*
[4754]
2-3 лвл = 1 жетон
4-5 лвл = 1 жетона
6-7 лвл = 2 жетонов
8-9 лвл = 3 жетонов
В случаи победы (х3)
*/
if ($this->info['type'] != 33)//ТУТ приз хаот дроп
{
$tmon = [
2 => 1,
3 => 1,
4 => 1,
5 => 1,
6 => 1,
7 => 2,
8 => 3,
9 => 3,
10 => 5,
11 => 5,
];
$tmon = $tmon[$this->users[$i]['level']];
$tmonc = mysql_fetch_array(
mysql_query(
'SELECT COUNT(*) FROM `battle` WHERE `id` IN ( SELECT `battle_id` FROM `battle_last` WHERE `uid` = "' . $this->users[$i]['id'] . '" ) AND `priz` > 0 AND `time_start` > "' . strtotime(
date('d.m.Y')
) . '"'
)
);
$tmonc = $tmonc[0];
if ($this->users[$i]['team'] == $this->info['team_win']) {
//При выигрыше увеличиваем
if ($tmonc < 1) {
$tmonc = 1;
} elseif ($tmonc > 96) {
$tmonc = 96;
}
$tmon = ($tmon * $tmonc);
}
$tmoni = 1;
while ($tmoni <= floor($tmon / 2)) {
ItemsModel::addItem(0, $this->users[$i]['id'], ''); // тут были реликвии ангела.
$tmoni++;
}
$this->users[$i]['battle_text'] .= ' За призовой хаот вы получаете <strong>Призовой Жетон (x' . floor(
$tmon / 2
) . ')</strong>. (Чем больше призовых хаотов вы примите за сутки, тем больше будет выдаваться жетонов при победе! Призовых хаотов посещено сегодня ' . ($tmonc) . '/96 )';
unset($tmon, $tmoni);
}
}
//Снижение времени Право на подвиг Титул за победу в хаоте
if ($this->info['dungeon'] == 0 && $this->info['razdel'] == 5 && $this->users[$i]['team'] == $this->info['team_win']) {
//ТУТ2
StatsModel::addRepexpById($this->users[$i]['id'], 2); //Репутация за поб в хаоте +2
$check = mysql_fetch_array(
mysql_query(
'SELECT * FROM `eff_users` WHERE `id_eff` = 478 AND `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = 0 ORDER BY `overType` DESC LIMIT 1;'
)
);
if (isset($check['id'])) {
$urcheck = 10000;
if ($this->users[$i]['level'] == 8) {
$urcheck = 3000;
} elseif ($this->users[$i]['level'] == 9) {
$urcheck = 7000;
} elseif ($this->users[$i]['level'] == 10) {
$urcheck = 12000;
} elseif ($this->users[$i]['level'] >= 11) {
$urcheck = 18000;
}
if ($this->users[$i]['battle_yron'] >= $urcheck) {
mysql_query(
'UPDATE `eff_users` SET `timeUse` = `timeUse` - 300 WHERE `id_eff`=478 AND `delete` = 0 AND `uid` =' . $this->users[$i]['id'] . ' LIMIT 1'
);
$this->users[$i]['battle_text'] .= ' За победу в хаоте и нанесение урона в <strong>' . $urcheck . '</strong> и более вы получаете <strong>-5 мин.</strong> к праву на подвиг!';
}
}
mysql_query(
'UPDATE `users_achiv` SET `vx`= `vx`+1 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
); //
}
//Награда за клан вар
if ($this->info['dungeon'] == 0 && $this->info['type'] == 250 && $this->users[$i]['team'] == $this->info['team_win']) {
mysql_query(
'UPDATE `users_achiv` SET `kw`= `kw`+1 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
if (date('w') == 0 || date('w') == 6 || date('w') == 4) {
StatsModel::addRepexpById($this->users[$i]['id'], 25); //Клановые войны(победа) 25
}
}
//Награда за клан вар
if ($this->info['dungeon'] == 0 && $this->info['type'] == 99 && $this->users[$i]['team'] == $this->info['team_win']) {
if (date('w') == 0 || date('w') == 6 || date('w') == 5) {
StatsModel::addRepexpById($this->users[$i]['id'], 10); //Кровавые войны(победа) 10
}
}
//Новая выдача на трупожора
if ($this->info['dungeon'] == 0 && $this->info['type'] == 500 && $this->users[$i]['team'] == $this->info['team_win'] && $this->users[$i]['no_ip'] != 'trupojor' && $this->users[$i]['bot'] == 0) {
if ($this->users[$i]['level'] > 9) {
$mid = 903093;
} else {
$mid = 89489;
}
$mon = mysql_fetch_array(
mysql_query('SELECT * FROM `aaa_monsters` WHERE `uid` = "' . $mid . '" LIMIT 1')
);
if ($this->users[$i]['battle_yron'] >= 2000) {
$ritem = rand(1, 100);
if ($ritem <= 20) {
$mon['win_itm'] = '4459@1';
} elseif ($ritem <= 40) {
$mon['win_itm'] = '4460@1';
} elseif ($ritem <= 60) {
$mon['win_itm'] = '4461@1';
} elseif ($ritem <= 80) {
$mon['win_itm'] = '4462@1';
} else {
$mon['win_itm'] = '4463@1';
}
} elseif ($this->users[$i]['battle_yron'] >= 1500) {
$ritem = rand(1, 100);
if ($ritem <= 20) {
$mon['win_itm'] = '4459@1';
} elseif ($ritem <= 40) {
$mon['win_itm'] = '4460@1';
} elseif ($ritem <= 60) {
$mon['win_itm'] = '4461@1';
} elseif ($ritem <= 80) {
$mon['win_itm'] = '4462@1';
} else {
$mon['win_itm'] = '4463@1';
}
} elseif ($this->users[$i]['battle_yron'] >= 1000) {
$ritem = rand(1, 100);
if ($ritem <= 25) {
$mon['win_itm'] = '4460@1';
} elseif ($ritem <= 50) {
$mon['win_itm'] = '4461@1';
} elseif ($ritem <= 75) {
$mon['win_itm'] = '4462@1';
} else {
$mon['win_itm'] = '4463@1';
}
} else {
$mon['win_itm'] = '4392@1';
$timewait = 0;
}
if ($this->users[$i]['battle_yron'] > 0) {
mysql_query(
'INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","478","111","' . $this->users[$i]['id'] . '","Право на подвиг","pravonapodvig=1","' . time() . '")'
);
}
mysql_query(
'INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES ("' . $this->users[$i]['id'] . '","' . (time() - $timewait) . '","capitalcity","' . $this->users[$i]['room'] . '","end_trup"," ","","")'
);
mysql_query(
'INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","479","112","' . $u->info['id'] . '","Защита от нападения","zashitatk=1","' . time() . '")'
);
$ritem = rand(1, 1000);
if ($ritem == 555) {
$mon['win_itm'] = $mon['win_itm'] . ',5022@1';
}
//
$this->addGlobalItems(
$mid, $this->users[$i]['id'], $mon['win_itm'], $mon['win_eff'],
$mon['win_ico'], 1, $mon['win_money1'], $mon['win_money2']
); //$mon['win_exp']
}
if ($this->info['razdel'] == 5 || $this->info['razdel'] == 4) {
if (date('d.m') == '31.10' || (date('m') == 11 && date('d') < 7)) {
//Хэллоуин 4504
$this->users[$i]['battle_text'] .= ' Вы получаете <strong>Тыква (x1)</strong>.';
ItemsModel::addItem(4504, $this->users[$i]['id'], '|sudba=1');
}
}
//Добавляем воинственность
if ($this->info['dungeon'] == 0 && $this->info['razdel'] == 5 && $this->users[$i]['exp'] >= 1500 /*($this->users[$i]['exp'] < 12499 || $this->users[$i]['exp'] > 12500)*/
) {
if ($this->users[$i]['battle_exp'] > 100 * $this->users[$i]['level']) {
$rzbvo = $this->users[$i]['battle_exp'] * 6 / 1000;
if ($this->users[$i]['level'] == 8) {
if ($rzbvo >= 100) {
$rzbvo = 100;
}
}
if ($this->users[$i]['level'] == 9) {
if ($rzbvo >= 150) {
$rzbvo = 150;
}
}
if ($this->users[$i]['level'] == 10) {
if ($rzbvo >= 200) {
$rzbvo = 200;
}
}
if ($this->users[$i]['level'] == 11) {
if ($rzbvo >= 250) {
$rzbvo = 250;
}
}
if ($this->users[$i]['level'] == 12) {
if ($rzbvo >= 250) {
$rzbvo = 250;
}
}
if ($this->info['type'] != 33) {
$this->users[$i]['battle_text'] .= ' Вы получили ' . $rzbvo . ' воинственности за этот бой.';
}
mysql_query(
'UPDATE `rep` SET `rep3` = `rep3` + "' . $rzbvo . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
mysql_query(
'INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES ("' . $this->users[$i]['id'] . '","' . time() . '","capitalcity","' . $this->users[$i]['room'] . '","end_xaot"," ","' . $zadID . '","")'
);
}
}
if ($this->stats[$i]['hpNow'] >= 1) {
$this->stats[$i]['test_heal'] = mysql_fetch_array(
mysql_query(
'SELECT SUM(`yrn`) FROM `battle_stat` WHERE `uid2` = "' . $this->users[$i]['id'] . '" AND `battle` = "' . $this->info['id'] . '" LIMIT 1'
)
);
$this->stats[$i]['test_heal'] = $this->stats[$i]['test_heal'][0];
$this->stats[$i]['test_start'] = mysql_fetch_array(
mysql_query(
'SELECT `hpStart` FROM `battle_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `battle` = "' . $this->info['id'] . '" LIMIT 1'
)
);
$this->stats[$i]['test_start'] = $this->stats[$i]['test_start']['hpStart'];
//
$this->stats[$i]['hpNow'] = ($this->stats[$i]['test_start'] - $this->stats[$i]['test_heal']);
if ($this->stats[$i]['hpNow'] < 1) {
$this->stats[$i]['hpNow'] = 1;
}
} else {
$this->stats[$i]['hpNow'] = 0;
}
unset($this->stats[$i]['test_heal']);
$this->users[$i]['last_b'] = $this->info['id']; //stats
$this->users[$i]['last_a'] = $act01;
$this->users[$i]['battle'] = -1; //users
$this->users[$i]['battle_yron'] = 0; //stats
$this->users[$i]['exp'] += $this->users[$i]['battle_exp']; //users
//Добавляем клан опыт (Все кроме пещер)
if ($this->users[$i]['clan'] > 0) {
$cpr = 1;
if ($this->info['typeBattle'] == 9) {
$cpr = 25;
} elseif ($this->info['typeBattle'] == 50) {
$cpr = 65;
}
if ($this->stats[$i]['silver'] >= 5) {
$cpr = floor($cpr / 100 * 150);
}
mysql_query(
'UPDATE `clan` SET `exp` = `exp` + "' . round(
$this->users[$i]['battle_exp'] / 100 * $cpr
) . '" WHERE `id` = "' . $this->users[$i]['clan'] . '" LIMIT 1'
);
}
$this->users[$i]['battle_exp'] = 0; //stats
if ($this->users[$i]['team'] == $this->info['team_win']) {
mysql_query(
'UPDATE `rep` SET `n_capitalcity` = `n_capitalcity` + ' . $this->users[$i]['bn_capitalcity'] . ' ,`n_demonscity` = `n_demonscity` + ' . $this->users[$i]['bn_demonscity'] . ' ,`n_demonscity` = `n_demonscity` + ' . $this->users[$i]['bn_suncity'] . ' WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
}
//репутация
$this->users[$i]['bn_demonscity'] = 0;
$this->users[$i]['bn_capitalcity'] = 0;
$this->users[$i]['bn_suncity'] = 0;
//завершение эффектов с финишем
$spe = mysql_query(
'SELECT * FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `file_finish` != "" AND `v1` = "priem" LIMIT 30'
);
while ($ple = mysql_fetch_array($spe)) {
if (file_exists('../../_incl_data/class/priems/' . $ple['file_finish'] . '.php')) {
require('../../_incl_data/class/priems/' . $ple['file_finish'] . '.php');
}
}
//обновляем данные
mysql_query(
'DELETE FROM `eff_users` WHERE `v1` = "priem" AND `uid` = "' . $this->users[$i]['id'] . '" LIMIT 50'
);
if ($dnr == 1) {
if ($this->users[$i]['room'] == 370) {
$dies = mysql_fetch_array(
mysql_query(
'SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `dn` = "' . $this->users[$i]['dnow'] . '" AND `vars` = "dielaba" LIMIT 1'
)
);
$dies = $dies[0];
mysql_query(
'INSERT INTO `dungeon_actions` (`dn`,`uid`,`x`,`y`,`time`,`vars`,`vals`) VALUES (
"' . $this->users[$i]['dnow'] . '","' . $this->users[$i]['id'] . '","' . $this->users[$i]['x'] . '","' . $this->users[$i]['y'] . '","' . time() . '","dielaba",""
)'
);
} else {
$dies = mysql_fetch_array(
mysql_query(
'SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `dn` = "' . $this->users[$i]['dnow'] . '" AND `vars` = "die" LIMIT 1'
)
);
$dies = $dies[0];
mysql_query(
'INSERT INTO `dungeon_actions` (`dn`,`uid`,`x`,`y`,`time`,`vars`,`vals`) VALUES (
"' . $this->users[$i]['dnow'] . '","' . $this->users[$i]['id'] . '","' . $this->users[$i]['x'] . '","' . $this->users[$i]['y'] . '","' . time() . '","die",""
)'
);
}
if ($dies < 2 || $this->info['dungeon'] == 15) {
//
$tshbn = mysql_fetch_array(
mysql_query(
'SELECT `id` FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = 0 AND `item_id` = "4910" LIMIT 1'
)
);
if (isset($tshbn['id'])) {
//выбрасываем шайбу
mysql_query('DELETE FROM `items_users` WHERE `id` = "' . $tshbn['id'] . '" LIMIT 1');
//
mysql_query(
'INSERT INTO `dungeon_obj` (
`name`,`dn`,`x`,`y`,`img`,`delete`,`action`,`for_dn`,
`type`,`w`,`h`,`s`,`s2`,`os1`,`os2`,`os3`,`os4`,`type2`,`top`,`left`,`date`
) VALUES (
"Шайба","' . $this->info['dn_id'] . '","' . $this->users[$i]['x'] . '","' . $this->users[$i]['y'] . '","shaiba.png","0","fileact:15/shaiba","0",
"0","120","220","0","0","5","8","12","0","0","0","0","{use:\'takeit\',rt1:69,rl1:-47,rt2:74,rl2:126,rt3:76,rl3:140,rt4:80,rl4:150}"
)'
);
//
}
//телепортируем в рестарт (координата 0х0)
$this->users[$i]['x'] = $this->users[$i]['res_x'];
$this->users[$i]['y'] = $this->users[$i]['res_y'];
$this->users[$i]['s'] = $this->users[$i]['res_s'];
$r_n = mysql_fetch_array(
mysql_query(
'SELECT `name` FROM `room` WHERE `id` = "' . (int)$this->users[$i]['room'] . '" LIMIT 1'
)
);
if ($this->users[$i]['room'] == 370) {
if ($this->users[$i]['sex'] == 0) {
$rtxt = '<strong>' . $this->users[$i]['login'] . '</strong> трагически погиб и находится в начале лабиринта';
} else {
$rtxt = '<strong>' . $this->users[$i]['login'] . '</strong> трагически погибла и находится в начале лабиринта';
}
} else {
if ($this->users[$i]['sex'] == 0) {
$rtxt = '<strong>' . $this->users[$i]['login'] . '</strong> трагически погиб и находится в комнате &quot;' . $r_n['name'] . '&quot;';
} else {
$rtxt = '<strong>' . $this->users[$i]['login'] . '</strong> трагически погибла и находится в комнате &quot;' . $r_n['name'] . '&quot;';
}
}
} elseif ($this->info['dungeon'] == 102) {
$nld = '';
$lab = mysql_fetch_array(
mysql_query(
'SELECT `id`,`users` FROM `laba_now` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
)
);
if ($lab['users'] < 2) {
//Удаляем подземелье
mysql_query('DELETE FROM `laba_now` WHERE `id` = "' . $lab['id'] . '" LIMIT 1');
mysql_query('DELETE FROM `laba_map` WHERE `id` = "' . $lab['id'] . '" LIMIT 1');
mysql_query('DELETE FROM `laba_obj` WHERE `lib` = "' . $lab['id'] . '"');
mysql_query('DELETE FROM `laba_act` WHERE `lib` = "' . $lab['id'] . '"');
mysql_query('DELETE FROM `laba_itm` WHERE `lib` = "' . $lab['id'] . '"');
} else {
$lab['users']--;
mysql_query(
'UPDATE `laba_now` SET `users` = "' . $lab['users'] . '" WHERE `id` = "' . $lab['id'] . '" LIMIT 1'
);
}
mysql_query(
'UPDATE `stats` SET `dnow` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
mysql_query(
'UPDATE `users` SET `room` = "369" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
//удаляем все предметы которые пропадают после выхода из пещеры
mysql_query(
'UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `delete` < 1234567890 AND `inShop` = "0" AND (`dn_delete` = "1" OR `data` LIKE "%fromlaba=1%")'
);
if ($this->users[$i]['login'] != '') {
if ($this->users[$i]['sex'] == 0) {
$rtxt = '<strong>' . $this->users[$i]['login'] . '</strong> трагически погиб без права на воскрешение и покидает подземелье' . $nld;
} else {
$rtxt = '<strong>' . $this->users[$i]['login'] . '</strong> трагически погибла без права на воскрешение и покидает подземелье' . $nld;
}
}
} else {
$tinf = mysql_fetch_array(
mysql_query(
'SELECT `uid` FROM `dungeon_now` WHERE `id` = "' . $this->info['dn_id'] . '" LIMIT 1'
)
);
$nld = '';
if ($tinf['uid'] == $this->users[$i]['id']) {
$tinf = mysql_fetch_array(
mysql_query(
'SELECT `id` FROM `stats` WHERE `dnow` = "' . $this->info['dn_id'] . '" AND `hpNow` >= 1 LIMIT 1'
)
);
if (isset($tinf['id'])) {
$tinf = mysql_fetch_array(
mysql_query(
'SELECT `id`,`login` FROM `users` WHERE `id` = "' . $tinf['id'] . '" LIMIT 1'
)
);
$nld .= ', новым лидером становится &quot;' . $tinf['login'] . '&quot;';
mysql_query(
'UPDATE `dungeon_now` SET `uid` = "' . $tinf['id'] . '" WHERE `id` = "' . $this->info['dn_id'] . '" LIMIT 1'
);
}
}
$rooms = [
374 => 372, //ПТП (Кэпитал сити)
189 => 188, //Водосток (Кэпитал сити)
392 => 393, //Шахты (Кэпитал сити)
398 => 397, //Шахты (Ангелс сити)
243 => 395, //Водосток (Ангелс сити)
360 => 242, //Бездна (Ангелс сити)
19 => 293, //Катакомбы
];
// $n_rm = $rooms[$this->users[$i]['room']];
mysql_query(
'UPDATE `stats` SET `dnow` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
mysql_query(
'UPDATE `users` SET `room` = "321" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
//удаляем все предметы которые пропадают после выхода из пещеры
mysql_query(
'UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `dn_delete` = "1" LIMIT 1000'
);
mysql_query(
'UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "1189" OR `item_id` = "4447" OR `item_id` = "1174") LIMIT 1000'
);
if ($this->users[$i]['sex'] == 0) {
$rtxt = '<strong>' . $this->users[$i]['login'] . '</strong> трагически погиб без права на воскрешение и покидает подземелье' . $nld;
} else {
$rtxt = '<strong>' . $this->users[$i]['login'] . '</strong> трагически погибла без права на воскрешение и покидает подземелье' . $nld;
}
}
if (!empty($rtxt)) {
$cmsg->setDn($this->info['dn_id']);
$cmsg->setText($rtxt);
$cmsg->setTypeTime(1);
$chat->sendMsg($cmsg);
}
}
mysql_query('UPDATE `users` SET `login2` = "" WHERE `battle` = "' . $this->info['id'] . '"');
$upd = mysql_query(
'UPDATE `users` SET `login2` = "", `money` = "' . $this->users[$i]['money'] . '", `money2` = "' . $this->users[$i]['money2'] . '",`win` = "' . $this->users[$i]['win'] . '",`lose` = "' . $this->users[$i]['lose'] . '",`nich` = "' . $this->users[$i]['nich'] . '",`battle` = "-1" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
if ($u->info['id'] == $this->users[$i]['id']) {
$u->info['battle_text'] = $this->users[$i]['battle_text'];
}
$upd2 = mysql_query(
'UPDATE `stats` SET `hpNow` = "' . $this->stats[$i]['hpNow'] . '",`mpNow` = "' . $this->stats[$i]['mpNow'] . '",`bn_capitalcity` = 0,`bn_demonscity` = 0,`smena` = 3,`tactic7` = "-100",`x`="' . $this->users[$i]['x'] . '",`y`="' . $this->users[$i]['y'] . '",`priems_z`="0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0",`last_pr`="0",`tactic1`="0",`tactic2`="0",`tactic3`="0",`tactic4`="0",`tactic5`="0",`tactic6`="0.00000000",`tactic7`="10",`exp` = "' . $this->users[$i]['exp'] . '",`battle_exp` = "' . $this->users[$i]['battle_exp'] . '",`battle_text` = "' . $this->users[$i]['battle_text'] . '",`battle_yron` = "0",`enemy` = "0",`last_b`="' . $this->info['id'] . '",`regHP` = "' . time() . '",`regMP` = "' . time() . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
if ($this->info['turnir'] == 0) {
//пишем в чат
$cmsg->setTo($this->users[$i]['login']);
$cmsg->setText($this->users[$i]['battle_text']);
$chat->sendMsg($cmsg);
} else {
mysql_query(
'UPDATE `turnirs` SET `winner` = "' . $this->info['team_win'] . '" WHERE `id` = "' . $this->info['turnir'] . '" LIMIT 1'
);
}
//завершаем сам бой
$upd3 = mysql_query(
'UPDATE `battle` SET `time_over` = "' . time() . '",`team_win` = "' . $this->info['team_win'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'
);
// Жрать хочет
if ($this->users[$i]['animal'] > 0) {
$a = mysql_fetch_array(
mysql_query(
'SELECT * FROM `users_animal` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `id` = "' . $this->users[$i]['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1'
)
);
if (isset($a['id'])) {
if ($a['eda'] < 1) {
$cmsg = new ChatMessage();
$cmsg->setRoom($this->users[$i]['room']);
$cmsg->setCity($this->users[$i]['city']);
$cmsg->setTo($this->users[$i]['login']);
$cmsg->setText('<strong>' . $a['name'] . '</strong> нуждается в еде...');
$cmsg->setType(6);
$chat->sendMsg($cmsg);
}
}
}
mysql_query(
'UPDATE `stats` SET `battle_text` = "",`last_b`="0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
mysql_query('UPDATE `battle_users` SET `finish` = 1 WHERE `uid` = "' . $this->users[$i]['id'] . '"');
$this->saveLogs();
if ($u->info['battle'] != 0 && !isset($u->info['battle_lsto'])) {
echo '<script>document.getElementById(\'teams\').style.display=\'none\';var battleFinishData = "' . $u->info['battle_text'] . '";</script>';
}
}
} else {
sleep(2);
}
mysql_query('UPDATE `battle` SET `testfinish` = "0" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1');
mysql_query('UNLOCK TABLES');
}
//Проверка зоны и блока
/**
* Сохраняем лог в архив
* @return void
*/
private function saveLogs()
{
Db::sql(
'insert into battle_logs_save select id, time, battle, id_hod, text, vars, zona1, zonb1, zona2, zonb2, type from battle_logs where battle = ? and id_hod <= ?',
[$this->info['id'], $this->hodID]
);
Db::sql('delete from battle_logs where battle = ?', [$this->info['id']]);
Db::sql('delete from battle_stat where battle < ?', [$this->info['id'] - 100]);
Db::sql('delete from battle_actions where btl = ?', [$this->info['id']]);
}
//Проверка ухода удара в игрока
public function addTravm($uid, $type, $lvl)
{
global $u;
$t = $type;
if ($t == 1) {
$name = 'Легкая травма';
$stat = rand(1, 3); // пока без духовности
$timeEnd = rand(1, 3);// время травмы от 1.30 до 6 часов
$data = 'add_s' . $stat . '=-' . $lvl;
$img = 'eff_travma1.gif';
$v1 = 1;
} elseif ($t == 2) {
$name = 'Средняя травма';
$stat = rand(1, 3); // пока без духовности
$timeEnd = rand(3, 5);// время травмы от 6 до 12 часов
$data = 'add_s' . $stat . '=-' . ($lvl * 2);
$v1 = 2;
$img = 'eff_travma2.gif';
} elseif ($t == 3) {
$name = 'Тяжелая травма';
$stat = rand(1, 3); // пока без духовности
$timeEnd = rand(5, 7);// время травмы от 12 до 6 часов
$data = 'add_s' . $stat . '=-' . ($lvl * 3);
$v1 = 3;
$img = 'eff_travma3.gif';
} elseif ($t == 4) {
$name = 'Неизлечимая травма';
$stat = rand(1, 3); // пока без духовности
$timeEnd = 24;// время травмы от 24 часа
$data = 'add_s' . $stat . '=-' . ($lvl * 50);
$v1 = 4;
$img = 'eff_travma4.gif';
}
$timeEnd *= 3600;
$ins = mysql_query(
'INSERT INTO `eff_users` (`overType`,`timeUse`,`hod`,`name`,`data`,`uid`, `id_eff`, `img2`, `timeAce`, `v1`) VALUES ("0","' . time() . '","-1","' . $name . '","' . $data . '","' . $uid . '", "4", "' . $img . '","' . $timeEnd . '", "' . $v1 . '")'
);
$ins = mysql_query(
'INSERT INTO `eff_users` (`overType`,`timeUse`,`hod`,`name`,`data`,`uid`, `id_eff`, `img2`, `timeAce`, `v1`) VALUES ("0","' . time() . '","-1","Иммунитет: Защита от травм","add_notravma=1","' . $uid . '", "263", "cure1.gif","21600", "")'
);
}
//Расчет уворота игроков
private function typeBattle(int $x): array
{
$r = [0, 0, 'Обычный поединок', 'Кровавый Поединок'];
if ($x >= 50000 && $x < 100000) {
$r = [25, 50, 'Великая Битва', 'Кровавая Битва'];
} elseif ($x < 500000) {
$r = [50, 75, 'Величайшая Битва', 'Кровавая Резня'];
} elseif ($x < 1000000) {
$r = [75, 100, 'Историческая Битва', 'Кровавая Сеча'];
} elseif ($x < 2500000) {
$r = [100, 125, 'Эпохальная Битва', 'Кровавое Побоище'];
} elseif ($x >= 5000000) {
$r = [150, 150, 'Судный День', 'Судный День'];
}
return $r;
}
//Расчет крита игроков
public function addGlobalItems($bid, $uid, $itm, $eff, $ico, $exp, $cr, $ecr)
{
global $u;
$chat = new Chat();
$cmsg = new ChatMessage();
$cmsg->setType(6);
$cmsg->setCity($this->users[$this->uids[$uid]]['city']);
$cmsg->setRoom($this->users[$this->uids[$uid]]['room']);
$cmsg->setTo($this->users[$this->uids[$uid]]['login']);
$cmsg->setColor('#cb0000');
//
//Выпадение дропа на ЦП
if ($bid == 1008) {
//Старый Новый Год
$jit = 0;
$iit = mysql_fetch_array(
mysql_query('SELECT COUNT(*) FROM `users` WHERE `online` > ' . (time() - 120) . '')
);
$iit = floor($iit[0] / 20);
$iit = rand(1, $iit);
while ($jit < $iit) {
if (rand(0, 100) < 50) {
$svtk = [
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1461,
1462,
1463,
4037,
4038,
4039,
4040,
911,
1172,
1173,
2142,
2141,
2143,
2870,
2144,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
1000,
];
$svtk = $svtk[rand(0, count($svtk) - 1)];
if ($svtk == 1000) {
mysql_query(
'INSERT INTO `items_local`
( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES
(
"' . $this->users[$this->uids[$uid]]['room'] . '",
"' . time() . '",
"' . $svtk . '",
"|nosale=1|srok=259200",
"' . $this->users[$this->uids[$uid]]['login'] . '",
"1"
),(
"' . $this->users[$this->uids[$uid]]['room'] . '",
"' . time() . '",
"' . $svtk . '",
"|nosale=1|srok=259200",
"' . $this->users[$this->uids[$uid]]['login'] . '",
"1"
),(
"' . $this->users[$this->uids[$uid]]['room'] . '",
"' . time() . '",
"' . $svtk . '",
"|nosale=1|srok=259200",
"' . $this->users[$this->uids[$uid]]['login'] . '",
"1"
),(
"' . $this->users[$this->uids[$uid]]['room'] . '",
"' . time() . '",
"' . $svtk . '",
"|nosale=1|srok=259200",
"' . $this->users[$this->uids[$uid]]['login'] . '",
"1"
),(
"' . $this->users[$this->uids[$uid]]['room'] . '",
"' . time() . '",
"' . $svtk . '",
"|nosale=1|srok=259200",
"' . $this->users[$this->uids[$uid]]['login'] . '",
"1"
),(
"' . $this->users[$this->uids[$uid]]['room'] . '",
"' . time() . '",
"' . $svtk . '",
"|nosale=1|srok=259200",
"' . $this->users[$this->uids[$uid]]['login'] . '",
"1"
)'
);
}
mysql_query(
'INSERT INTO `items_local`
( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES
(
"' . $this->users[$this->uids[$uid]]['room'] . '",
"' . time() . '",
"' . $svtk . '",
"|nosale=1|srok=259200",
"' . $this->users[$this->uids[$uid]]['login'] . '",
"1"
)'
);
}
$jit++;
}
unset($svtk);
} elseif ($bid == 1007) {
//Хэллоуин, Тыквоголовый CAPITAL CITY
$jit = 0;
$iit = mysql_fetch_array(
mysql_query('SELECT COUNT(*) FROM `users` WHERE `online` > ' . (time() - 120) . '')
);
$iit = floor($iit[0] / 20);
$iit = rand(1, $iit);
while ($jit < $iit) {
if (rand(0, 100) < 50) {
mysql_query(
'INSERT INTO `items_local`
( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES
(
"' . $this->users[$this->uids[$uid]]['room'] . '",
"' . time() . '",
"4504",
"",
"' . $this->users[$this->uids[$uid]]['login'] . '",
"1"
)'
);
}
$jit++;
}
} elseif ($bid == 1006) {
//Трупожор CAPITAL CITY
if (rand(0, 100) < 10) {
mysql_query(
'INSERT INTO `items_local`
( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES
(
"' . $this->users[$this->uids[$uid]]['room'] . '",
"' . time() . '",
"4451",
"srok=86400",
"' . $this->users[$this->uids[$uid]]['login'] . '",
"1"
)'
);
}
} elseif ($bid == 1000) {
//Трупожор CAPITAL CITY
mysql_query(
'INSERT INTO `items_local`
( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES
(
"' . $this->users[$this->uids[$uid]]['room'] . '",
"' . time() . '",
"4460",
"srok=2592000",
"' . $this->users[$this->uids[$uid]]['login'] . '",
"1"
)'
);
} elseif ($bid == 1001) {
//Трупожор CAPITAL CITY
mysql_query(
'INSERT INTO `items_local`
( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES
(
"' . $this->users[$this->uids[$uid]]['room'] . '",
"' . time() . '",
"4461",
"srok=2592000",
"' . $this->users[$this->uids[$uid]]['login'] . '",
"1"
)'
);
} elseif ($bid == 1002) {
//Трупожор CAPITAL CITY
mysql_query(
'INSERT INTO `items_local`
( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES
(
"' . $this->users[$this->uids[$uid]]['room'] . '",
"' . time() . '",
"4462",
"srok=2592000",
"' . $this->users[$this->uids[$uid]]['login'] . '",
"1"
)'
);
} elseif ($bid == 1003) {
//Трупожор CAPITAL CITY
mysql_query(
'INSERT INTO `items_local`
( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES
(
"' . $this->users[$this->uids[$uid]]['room'] . '",
"' . time() . '",
"4463",
"srok=2592000",
"' . $this->users[$this->uids[$uid]]['login'] . '",
"1"
)'
);
} elseif ($bid == 1004) {
//Трупожор CAPITAL CITY
mysql_query(
'INSERT INTO `items_local`
( `room` , `time`,`item_id`,`data`,`tr_login`,`colvo` ) VALUES
(
"' . $this->users[$this->uids[$uid]]['room'] . '",
"' . time() . '",
"4459",
"srok=2592000",
"' . $this->users[$this->uids[$uid]]['login'] . '",
"1"
)'
);
}
if ($exp >= 0) {
//added if, was division by zero. 27.08.22, ins.
$this->users[$this->uids[$uid]]['battle_exp'] += round(
$this->stats[$this->uids[$bid]]['hpAll'] > 0 ? $exp * $this->users[$this->uids[$uid]]['battle_yron'] / $this->stats[$this->uids[$bid]]['hpAll'] : $exp * $this->users[$this->uids[$uid]]['battle_yron']
);
mysql_query(
'UPDATE `stats` SET `battle_exp` = "' . mysql_real_escape_string(
$this->users[$this->uids[$uid]]['battle_exp']
) . '" WHERE `id` = "' . mysql_real_escape_string($uid) . '" LIMIT 1'
);
}
//
if ($cr != '' && $cr > 0 && $this->stats[$this->uids[$uid]]['hpNow'] > 0) {
mysql_query(
'UPDATE `users` SET `money` = (`money` + ' . mysql_real_escape_string(
$cr
) . ') WHERE `id` = "' . mysql_real_escape_string($uid) . '" LIMIT 1'
);
$cmsg->setText("<strong>Вы получили кредиты: $cr кр.</strong>");
$chat->sendMsg($cmsg);
}
//
if ($ecr != '' && $ecr > 0 && $this->stats[$this->uids[$uid]]['hpNow'] > 0) {
$this->users[$this->uids[$uid]]['money2'] += $ecr;
$resulttp = mysql_query(
'UPDATE `users` SET `money2` = (`money2` + ' . mysql_real_escape_string(
$ecr
) . ') WHERE `id` = "' . $this->users[$this->uids[$uid]]['id'] . '" LIMIT 1'
);
if (!$resulttp) {
$cmsg->setText("<strong>Трупожор был пуст!</strong>");
$chat->sendMsg($cmsg);
$u->addDelo(
4, $this->users[$this->uids[$uid]]['id'],
'&quot;<font color="olive">System.battle</font>&quot;: (В бою трупожор), ПУСТ!!! ', time(),
$this->users[$this->uids[$uid]]['city'], 'System.battle', 0, 0
);
} else {
$cmsg->setText("<strong>Вы получили еврокредиты: $ecr екр.</strong>");
$chat->sendMsg($cmsg);
$u->addDelo(
4, $this->users[$this->uids[$uid]]['id'],
'&quot;<font color="olive">System.battle</font>&quot;: Персонаж получил <strong>' . $ecr . ' ЕКР</strong> (В бою трупожор), сейчас: <strong>' . $this->users[$this->uids[$uid]]['money2'] . ' ЕКР</strong>',
time(), $this->users[$this->uids[$uid]]['city'], 'System.battle', 0, 0
);
}
}
if ($ico != '') {
/*
0(тип, 1 - значок, 2 - подвиг)@
1(время в минутах)@
2(название картинки)@
3(название)@
4(требует остаться в живых 0 или 1, либо игрок умер -1)@
5(требует набить с ботам урона в % Например 0.001)@
6(действия например: add_s1=5|add_hpAll=50)@
7(Требует другой значок, название картинки)@
8(плюсует значок 0 или 1)@
9(удаляем прошлый значок 0 or 1)
*/
$i = 0;
$txt = '';
$ico = explode('#', $ico);
while ($i < count($ico)) {
$ico_e = explode('@', $ico[$i]);
if (isset($ico_e[3])) {
$add = 1;
if ($ico_e[4] == 1 && floor($this->stats[$this->uids[$uid]]['hpNow']) < 1) {
$add = 0;
}
if ($add == 1) {
$ins = false;
if ($ico_e[8] == 0) {
$ins = true;
if ($ico_e[9] == 1) {
mysql_query(
'DELETE FROM `users_ico` WHERE `uid` = "' . mysql_real_escape_string(
$uid
) . '" AND `img` = "' . mysql_real_escape_string($ico_e[2]) . '"'
);
}
} else {
$old_ico = mysql_fetch_array(
mysql_query(
'SELECT `id` FROM `users_ico` WHERE `uid` = "' . mysql_real_escape_string(
$uid
) . '" AND (`endTime` > "' . time() . '" OR `endTime` = 0) AND `img` = "' . mysql_real_escape_string(
$ico_e[2]
) . '" LIMIT 1'
)
);
if (!isset($old_ico['id'])) {
$ins = true;
} else {
if ($old_ico['id'] > 0) {
$txt .= ', &quot;' . $ico_e[3] . ' (<small>Обновление</small>)&quot;';
mysql_query(
'UPDATE `users_ico` SET `x` = `x` + 1,`endTime` = "' . mysql_real_escape_string(
time() + $ico_e[1] * 60
) . '" WHERE `id` = "' . $old_ico['id'] . '" LIMIT 1'
);
} else {
$ins = true;
}
}
unset($old_ico);
}
if ($ins) {
if ($ico_e[9] == 1) {
mysql_query(
'DELETE FROM `users_ico` WHERE `uid` = "' . mysql_real_escape_string(
$uid
) . '" AND `img` = "' . mysql_real_escape_string($ico_e[2]) . '"'
);
}
mysql_query(
'INSERT INTO `users_ico` (`uid`,`time`,`text`,`img`,`endTime`,`type`,`bonus`) VALUES (
"' . mysql_real_escape_string($uid) . '",
"' . time() . '",
"' . mysql_real_escape_string($ico_e[3]) . '",
"' . mysql_real_escape_string($ico_e[2]) . '",
"' . mysql_real_escape_string(time() + $ico_e[1] * 60) . '",
"' . mysql_real_escape_string($ico_e[0]) . '",
"' . mysql_real_escape_string($ico_e[6]) . '"
)'
);
$txt .= ', &quot;' . $ico_e[3] . '&quot;';
}
}
}
$i++;
}
if ($txt != '') {
$txt = ltrim($txt, ', ');
$cmsg->setText("<strong>Вы совершили подвиг:</strong> $txt");
$chat->sendMsg($cmsg);
}
}
if ($itm != '') {
$i = 0;
$txt = '';
$itm = explode(',', $itm);
while ($i < count($itm)) {
$itm_e = explode('@', $itm[$i]);
if ($itm_e[0] > 0) {
$j = 0;
while ($j < $itm_e[1]) {
ItemsModel::addItem($itm_e[0], $uid, '|' . $itm_e[2]);
$j++;
}
if (!isset($this->ainm[$itm_e[0]])) {
$this->ainm[$itm_e[0]] = mysql_fetch_array(
mysql_query(
'SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . mysql_real_escape_string(
$itm_e[0]
) . '" LIMIT 1'
)
);
}
if (isset($this->ainm[$itm_e[0]]['id'])) {
//Добавляем текст о добавлении предмета
$txt .= ', <strong>' . $this->ainm[$itm_e[0]]['name'] . '</strong>';
if ($itm_e[1] > 1) {
$txt .= ' <strong>(x' . $itm_e[1] . ')</strong>';
}
}
}
$i++;
}
if ($txt != '') {
$txt = ltrim($txt, ', ');
$cmsg->setText("<strong>Вы получили предметы:</strong> $txt");
$chat->sendMsg($cmsg);
}
}
//
}
//Расчет парирования игроков
public function testPog($uid, $yr)
{
$yr2 = $yr;
if ($yr > 0) {
$testmana = false;
global $u, $priem;
$i = 0;
$ypg22 = 0;
while ($i < count($this->stats[$this->uids[$uid]]['set_pog2'])) {
$j = $this->stats[$this->uids[$uid]]['set_pog2'][$i];
$this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] = str_replace(
'add_pog2=' . $j['y'],
'add_pog2=$', $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']
);
$dt3 = Conversion::dataStringToArray($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']);
if (isset($dt3['add_pog2mp'])) {
$priem->minMana($uid, round(round($yr2 / 100 * (100 - $dt3['add_pog2p'])) * $dt3['add_pog2mp']));
}
$j['y'] -= $yr2; // осталось для поглощения
if (isset($dt3['add_pog2p'])) {
$yr2 = round($yr2 / 100 * (100 - $dt3['add_pog2p']));
}
unset($dt3);
if ($j['y'] < 0 || ($this->stats[$this->uids[$uid]]['mpNow'] <= 0 && $dt3['add_pog2mp'] > 0)) {
$dt2 = Conversion::dataStringToArray($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']);
if (isset($dt2['endPog']) && $dt2['endPog'] == 1) {
//удаляем прием
$this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['priem'] = mysql_fetch_array(
mysql_query(
'SELECT * FROM `priems` WHERE `id` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['v2'] . '" LIMIT 1'
)
);
$this->delPriem(
$this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1],
$this->users[$this->uids[$uid]], 4, $uid
);
$this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1] = 'delete';
}
unset($dt2);
$yr2 = -($j['y']);
$j['y'] = 0;
}
$this->stats[$this->uids[$uid]]['set_pog'][$i]['y'] = $j['y'];
$this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] = str_replace(
'add_pog2=$',
'add_pog2=' . $j['y'], $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']
);
$upd = mysql_query(
'UPDATE `eff_users` SET `data` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] . '" WHERE `id` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['id'] . '" LIMIT 1'
);
$i++;
}
}
return $yr2;
}
//Расчет блока щитом игроков
public function delPriem(
$pl,
$u1,
$t = 1,
$u2 = false,
$rznm = 'Очиститься Кровью',
$k2nm = null,
$yrn = null,
$yrnt = null
)
{
global $u, $priem;
if (!isset($pl['priem']['id']) || isset($this->del_val['eff'][$pl['priem']['id']])) {
return;
}
if ($pl['x'] > 1) {
$pl['name'] = $pl['name'] . ' x' . $pl['x'] . '';
}
if ($pl['timeUse'] == 77) {
//завершаем прием
mysql_query('DELETE FROM `eff_users` WHERE `id` = "' . $pl['id'] . '" LIMIT 1');
}
$vLog = 'time1=' . time() . '||s1=' . $u1['sex'] . '||t1=' . $u1['team'] . '||login1=' . $u1['login'] . '';
if (isset($u2['id'])) {
$vLog .= '||s2=' . $u2['sex'] . '||t2=' . $u2['team'] . '||login2=' . $u2['login'] . '';
}
$mas1 = [
'time' => time(),
'battle' => $this->info['id'],
'id_hod' => $this->hodID,
'text' => '',
'vars' => $vLog,
'zona1' => '',
'zonb1' => '',
'zona2' => '',
'zonb2' => '',
'type' => '1',
];
if ($t == 4) {
$mas1['id_hod']++;
$t = 2;
}
if ($t == 1) {
$mas1['id_hod']++;
if ($pl['priem']['file'] != '0') {
if (file_exists('../../_incl_data/class/priems/' . $pl['priem']['file'] . '.php')) {
require('priems/' . $pl['priem']['file'] . '.php');
}
} elseif ($pl['priem']['file3'] != '0') {
if (file_exists('../../_incl_data/class/priems/' . $pl['priem']['file3'] . '.php')) {
require('priems/' . $pl['priem']['file3'] . '.php');
}
} else {
$mas1['text'] = '{tm1} {u1} {1x16x0} прием &quot;<strong>' . $pl['name'] . '</strong>&quot;.';
$this->del_val['eff'][$pl['priem']['id']] = true;
}
} elseif ($t == 2) {
$mas1['text'] = '{tm1} У персонажа {u1} закончилось действие магии &quot;<strong>' . $pl['name'] . '</strong>&quot;.';
} elseif ($t == 99) {
$mas1['text'] = '{u1} Снял эфект &quot;<strong>' . $pl['name'] . '</strong>&quot; с помощью <strong>' . $rznm . '</strong> .';
} else {
if ($t == 100) {
$mas1['id_hod']++;
}
$mas1['text'] = '{tm1} Закончилось действие эффекта &quot;<strong>' . $pl['name'] . '</strong>&quot; для {u1}.';
}
if ($pl['priem']['id'] != 24) {
$this->add_log($mas1);
}
$this->stats[$this->uids[$pl['uid']]] = $u->getStats($pl['uid'], 0, 0, false, false, true);
}
//Расчет контрудара игроков
public function priemAddLogFast($u1, $u2, $prm, $text, $hodID, $tm)
{
$vLog = 'prm=' . $prm . '||time1=' . $tm . '||time2=' . $tm . '||s1=' . $this->users[$this->uids[$u1]]['sex'] . '||s2=' . $this->users[$this->uids[$u2]]['sex'] . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2'] . '';
$mas = [
'text' => $text,
'time' => time(),
'vars' => '',
'battle' => $this->info['id'],
'id_hod' => ($this->hodID + $hodID),
'vars' => $vLog,
'type' => 1,
];
$this->add_log($mas);
}
//Выделение из лог текста
public function yronGetrazmenStats($s, $z)
{
global $u;
/*
1 - шлем
2 - наручи
3 - оружие (правая рука)
4 - рубаха
5 - броня
6 - плащ
7 - пояс
8 - серьги
9 - амулет
10-12 - кольца
13 - перчатки
14 - оружие / щит (левая рука)
16 - поножи
17 - ботинки
*/
$zi = [ //Предметы влияющие на зоны
1 => [1, 8, 9, 52], //голова
2 => [4, 5, 6], //грудь
3 => [2, 4, 5, 6, 13], //живот
4 => [7, 16, 10, 11, 12], //пояс
5 => [17], //ноги
];
$zi = $zi[$z];
$i = 0;
while ($i < count($zi)) {
$t = $u->items['add'];
$ii = 0;
while ($ii < count($s['items'])) {
if (isset($s['items'][$ii]) && $s['items'][$ii]['inOdet'] == $zi[$i]) {
$po = Conversion::dataStringToArray($s['items'][$ii]['data']);
$x = 0;
while ($x < count($t)) {
$n = $t[$x];
if (isset($po['sv_' . $n])) {
$s[$n] += $po['sv_' . $n];
if ($n == 'za') {
$iii = 1;
while ($iii <= 4) {
$s['za' . $iii] += $po['sv_' . $n];
$iii++;
}
} elseif ($n == 'zm') {
$iii = 1;
while ($iii <= 4) {
$s['zm' . $iii] += $po['sv_' . $n];
$iii++;
}
} elseif ($n == 'zma') {
$iii = 1;
while ($iii <= 7) {
$s['zma' . $iii] += $po['sv_' . $n];
$iii++;
}
}
}
$x++;
}
}
$ii++;
}
$i++;
}
return $s;
}
//Добавляем статистику
/**
* Трогать очень осторожно. Этот шайтан как-то проверяет приёмы на враге
* и рассчитывает урон учитывая и эти приёмы тоже.
* @param $uid1
* @param $uid2
* @param $priem
* @param $yron
* @param $profil
* @param $stabil
* @param $test
* @param $inlog
* @return float|int|mixed
*/
public function testYronPriem($uid1, $uid2, $priem, $yron, $profil, $stabil, $test = false, $inlog = 0)
{
/*
profil = {
-1 - урон оружием
-2 - урон магией
0 - неизвестно
1-4 - профильный оружия
5-12 - профильный магия
}
stabil - урон не подвержен мощностям и т.д
*/
//Проверка
$a = 1;
$b = 2;
$u1 = $uid1;
$u2 = $uid2;
//Проверяем приемы защиты игрока $u1 на урон игрока $u2
//Получаем приемы и смотрим когда какой действует
if (!isset($this->stats[$this->uids[$u2]]['u_priem'])) {
$eff = $this->stats[$this->uids[$u2]]['effects'];
$j = 0;
while ($j <= count($eff)) {
if (isset($eff[$j]) && $eff[$j]['id_eff'] == 22 && $eff[$j]['v1'] == 'priem' && $eff[$j]['v2'] > 0) {
$this->stats[$this->uids[$u2]]['u_priem'][] = [
$j,
$eff[$j]['v2'],
$this->prm[$eff[$j]['v2']]['act'],
$eff[$j]['id'],
$this->prm[$eff[$j]['v2']]['type_of'],
$this->prm[$eff[$j]['v2']]['moment'],
];
}
$j++;
}
unset($eff);
}
//Приемы защиты
$j = 0;
while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) {
if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 4) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'
)) {
$pr_momental_this = $u2;
require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php');
$yron = $fx_moment($u2, $u1, $j, $yron, $profil);
unset(${'fx_moment'});
}
}
$j++;
}
//Прочие приемы
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_momental_this = $u1;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
if (isset($fx_moment)) {
$yron = $fx_moment($u1, $u2, $j, $yron, $profil, $inlog);
}
unset(${'fx_moment'});
}
}
$j++;
}
//Прочие приемы (влияет на урон от моментальных приемов)
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][7] == 5) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_momental_this_seven = $u1;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
if (isset($fx_moment_seven)) {
$yron = $fx_moment_seven($u1, $u2, $j, $yron, $profil, $inlog);
}
unset(${'fx_moment_seven'});
}
}
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 180) {
// Переохлаждение (снижает урон на 10%). Пан или пропал.
$x = Db::getValue('select x from eff_users where v2 = 180 and uid = ?', [$u1]);
$yron = 0.1 * $x;
}
$j++;
}
//Прочие приемы
$j = 0;
while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) {
if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 8) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'
)) {
$pr_momental_this = $u2;
require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php');
if (isset($fx_moment)) {
$yron = $fx_moment($u2, $u1, $j, $yron, $profil, $inlog);
}
unset(${'fx_moment'});
}
}
if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 9) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'
)) {
$pr_momental_this = $u2;
require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php');
if (isset($fx_moment)) {
$yron = $fx_moment($u2, $u1, $j, $yron, $profil, $inlog);
}
unset(${'fx_moment'});
}
}
$j++;
}
if ($this->stats[$this->uids[$u2]]['zaproc'] > 0) {
$yron = round($yron - $yron * $this->stats[$this->uids[$uid2]]['zaproc'] / 100);
if ($yron < 1) {
$yron = 1;
}
}
return $yron;
}
public function priemYronSave($u1, $u2, $yron, $type)
{
//$type 0 - урон , 1 - хил
$this->testUserInfoBattle($u1);
$this->testUserInfoBattle($u2);
if (isset($this->uids[$u1])) {
if ($this->stats[$this->uids[$u2]]['hpAll'] <= 1000) {
$adt6 = round(0.1 * (floor($yron) / $this->stats[$this->uids[$u2]]['hpAll'] * 100), 10);
} else {
$adt6 = round(0.1 * (floor($yron) / 1000 * 100), 10);
}
if ($yron > $this->stats[$this->uids[$u2]]['hpNow']) {
$yron = $this->stats[$this->uids[$u2]]['hpNow'];
}
if ($yron > 0) {
$this->users[$this->uids[$u1]]['battle_yron'] += $yron;
$this->users[$this->uids[$u1]]['battle_exp'] += round(
$this->testExp($yron, $this->stats[$this->uids[$u2]])
);
if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) {
$this->users[$this->uids[$u1]]['tactic6'] += $adt6;
$this->stats[$this->uids[$u1]]['tactic6'] += $adt6;
} else {
$this->users[$this->uids[$u1]]['tactic6'] += $adt6 / 3;
$this->stats[$this->uids[$u1]]['tactic6'] += $adt6 / 3;
}
} else {
$adt6 = 0;
}
//
$this->users[$this->uids[$u2]]['last_hp'] = -$yron;
//
mysql_query(
'UPDATE `stats` SET
`tactic6` = `tactic6` + "' . $adt6 . '",
`battle_yron` = `battle_yron` + "' . $yron . '",
`battle_exp` = `battle_exp` + "' . round(
$this->testExp($yron, $this->stats[$this->uids[$u2]])
) . '"
WHERE `id` = "' . $u1 . '" LIMIT 1'
);
//
mysql_query(
'UPDATE `stats` SET
`last_hp` = "' . $this->users[$this->uids[$u2]]['last_hp'] . '"
WHERE `id` = "' . $u2 . '" LIMIT 1'
);
}
$this->addNewStat(
[
1 => [
'battle' => $this->info['id'],
'uid1' => $this->users[$this->uids[$u1]]['id'],
'uid2' => $this->users[$this->uids[$u2]]['id'],
'time' => time(),
'type' => 0,
'a' => '10000',
'b' => 0,
'type_a' => 1,
'type_b' => 0,
'ma' => 1,
'mb' => 1,
'yrn' => $yron,
'yrn_krit' => 0,
'tm1' => $this->users[$this->uids[$u1]]['team'],
'tm2' => $this->users[$this->uids[$u2]]['team'],
],
]
);
}
//Добавляем статистику ударов
public function testUserInfoBattle($uid)
{
global $u;
if (!isset($this->uids[$uid])) {
//Заносим данные об игроке снова (видимо он погиб и его стерло с инфо)
if (!isset($this->uids[$uid])) {
$this->uids[$uid] = count($this->users);
}
$this->users[$this->uids[$uid]] = mysql_fetch_array(
mysql_query(
'SELECT
`u`.`id`,`u`.`login`,`u`.`login2`,`u`.`online`,`u`.`admin`,`u`.`city`,`u`.`cityreg`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,
`u`.`level`,`u`.`money`,`u`.`money3`,`u`.`money2`,`u`.`money4`,`u`.`battle`,`u`.`sex`,`u`.`obraz`,`u`.`win`,`u`.`win_t`,
`u`.`lose`,`u`.`lose_t`,`u`.`nich`,`u`.`timeMain`,`u`.`invis`,`u`.`bot_id`,`u`.`animal`,`u`.`type_pers`,
`u`.`notrhod`,`u`.`bot_room`,`u`.`inUser`,`u`.`inTurnir`,`u`.`inTurnirnew`,`u`.`stopexp`,`u`.`real`,
`st`.*
FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`id` = "' . $uid . '" LIMIT 1'
)
);
$this->stats[$this->uids[$uid]] = $u->getStats($this->users[$this->uids[$uid]], 0, 0, false, false, true);
}
}
//Добавляем размены в лог
/**
* Расчет опыта
* @param $y
* @param $s2
* @return int
*/
private function testExp($y, $s2): int
{
if ($s2['levels'] == 'undefined' || $this->users[$this->uids[$s2['id']]]['pass'] == 'saintlucia') {
return 0;
}
$y = max(0, (int)$y);
$expmultiplier = 1;
if ($this->users[$this->uids[$s2['id']]]['level'] >= 8) {
$expmultiplier = $this->users[$this->uids[$s2['id']]]['level'] - 5;
}
if ($s2['hpNow'] < 0) {
$y = 0;
}
if ($s2['hpNow'] < $y) {
$y = max(0, $s2['hpNow']);
}
$addExp = $y * $expmultiplier;
if ($s2['hpAll'] - $y <= 0) {
$addExp = 100;
}
if ($this->info['razdel'] != 5 && Config::get('exp_limit_many')) {
$texp = Db::getValue(
'select count(*) from battle_users as a where uid = ? and battle in (select battle from battle_users where uid = ? and team != a.team and time_enter > unix_timestamp() - 86400)'
);
//
if ($texp > 5) {
$addExp = 0;
} elseif ($texp > 4) {
$addExp = $addExp * 0.50;
} elseif ($texp > 3) {
$addExp = $addExp * 0.75;
} elseif ($texp > 2) {
$addExp = $addExp * 1.00;
} elseif ($texp > 1) {
$addExp = $addExp * 1.00;
} else {
$addExp = $addExp * 1.00;
}
}
return (int)round($addExp);
}
//Добавляем в лог действия приема
public function addNewStat($stat)
{
if (isset($stat[1])) {
mysql_query(
'INSERT INTO `battle_stat`
( `battle`,`uid1`,`uid2`,`time`,`type`,`a`,`b`,`ma`,`mb`,`type_a`,`type_b`,`yrn`,`yrn_krit`,`tm1`,`tm2` ) VALUES (
"' . $this->info['id'] . '",
"' . $stat[1]['uid1'] . '",
"' . $stat[1]['uid2'] . '",
"' . $stat[1]['time'] . '",
"' . $stat[1]['type'] . '",
"' . $stat[1]['a'] . '",
"' . $stat[1]['b'] . '",
"' . $stat[1]['ma'] . '",
"' . $stat[1]['mb'] . '",
"' . $stat[1]['type_a'] . '",
"' . $stat[1]['type_b'] . '",
"' . $stat[1]['yrn'] . '",
"' . $stat[1]['yrn_krit'] . '",
"' . $stat[1]['tm1'] . '",
"' . $stat[1]['tm2'] . '"
)'
);
}
if (isset($stat[2])) {
mysql_query(
'INSERT INTO `battle_stat`
( `battle`,`uid1`,`uid2`,`time`,`type`,`a`,`b`,`ma`,`mb`,`type_a`,`type_b`,`yrn`,`yrn_krit`,`tm1`,`tm2` ) VALUES (
"' . $this->info['id'] . '",
"' . $stat[2]['uid1'] . '",
"' . $stat[2]['uid2'] . '",
"' . $stat[2]['time'] . '",
"' . $stat[2]['type'] . '",
"' . $stat[2]['a'] . '",
"' . $stat[2]['b'] . '",
"' . $stat[1]['ma'] . '",
"' . $stat[2]['mb'] . '",
"' . $stat[2]['type_a'] . '",
"' . $stat[2]['type_b'] . '",
"' . $stat[2]['yrn'] . '",
"' . $stat[2]['yrn_krit'] . '",
"' . $stat[2]['tm1'] . '",
"' . $stat[2]['tm2'] . '"
)'
);
}
}
//Добавляем в лог действия приема (без атаки)
public function hpSee($now, $all, $type = 1): string
{
$r = '[' . $now . '/' . $all . ']';
if ($all > 10000) {
$type = 2;
}
if ($type == 2) {
$p1 = floor($now / $all * 100);
$r = '[' . $p1 . '/100%]';
}
return $r;
}
//Считаем контру
public function lookLog(): string
{
global $c, $u, $log_text;
$hodID = mysql_fetch_array(
mysql_query(
'SELECT `id`,`id_hod` FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` ASC LIMIT 1'
)
);
if ($hodID['id_hod'] <= 1) {
$u->info['alog'] = 0;
}
if (isset($hodID['id']) && $this->info['team_win'] != -1) {
$hodID = mysql_fetch_array(
mysql_query(
'SELECT `id` FROM `battle_logs_save` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` ASC LIMIT 1'
)
);
}
$hodID = $hodID['id'] ?? 0;
$updt = 0;
$js = '';
$pll = 0;
if ($_POST['idlog'] < 1) {
$_POST['idlog'] = 0;
}
$talog = mysql_fetch_array(
mysql_query('SELECT `alog` FROM `stats` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1')
);
$sp = mysql_query(
'SELECT
`id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2`
FROM `battle_logs`
WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC'
);
if (isset($sp) && $this->info['team_win'] != -1) {
$sp = mysql_query(
'SELECT
`id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2`
FROM `battle_logs_save`
WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC'
);
}
$jin = 0;
$forYou2 = 0;
if (is_array($sp)) {
while ($pl = mysql_fetch_array($sp)) {
if ($jin == 0) {
$u->info['alog'] = $pl['id_hod'];
}
$jin++;
$rt = $pl['text'];
$pl['vars'] = str_replace('^^^^', 'rvnO', $pl['vars']);
$rt = str_replace(
'{tm1}', '<span class=\"date {fru}\">' . date('H:i', $pl['time']) . '</span>',
$rt
);
$rt = str_replace(
'{tm2}', '<span class=\"date {fru}\">' . date('H:i', $pl['time']) . '</span>',
$rt
);
$rt = str_replace(
'{tm3}',
'<span class=\"date {fru}\">' . date('d.m.Y H:i', $pl['time']) . '</span>', $rt
);
$rt = str_replace(
'{tm4}',
'<span class=\"date {fru}\">' . date('d.m.Y H:i', $pl['time']) . '</span>', $rt
);
$pl['text'] = $rt;
unset($rt);
if ($pll < $pl['id']) {
$pll = $pl['id'];
}
$js = 'add_log(' . $pl['id'] . ',' . $forYou2 . ',"' . $pl['text'] . '",' . $pl['id_hod'] . ',0,0,"' . str_replace(
'"',
'&quot;', $pl['vars']
) . '");' . $js;
}
}
mysql_query(
'UPDATE `stats` SET `alog`="' . $u->info['alog'] . '" WHERE `id` ="' . $u->info['id'] . '" LIMIT 1'
);
$js .= 'id_log=' . $pll . ';';
return $js;
}
//Расчитываем статы для конкретной зоны атаки
public function lookmLog(): string
{
global $c, $u, $log_text;
$js = '';
$pll = 0;
if ($this->info['type'] != 9) {
$hodID = mysql_fetch_array(
mysql_query(
'SELECT `id`,`id_hod` FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` ASC LIMIT 1'
)
);
if ($hodID['id_hod'] <= 1) {
$u->info['mlog'] = 0;
}
if (isset($hodID['id']) && $this->info['team_win'] != -1) {
$hodID = mysql_fetch_array(
mysql_query(
'SELECT `id` FROM `battle_logs_save` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` ASC LIMIT 1'
)
);
}
$hodID = $hodID['id'] ?? 0;
$tmlog = mysql_fetch_array(
mysql_query('SELECT `mlog` FROM `stats` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1')
);
$spm = mysql_query(
'SELECT
`id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2`
FROM `battle_logs`
WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $tmlog['mlog'] . ' AND `vars` LIKE "%' . $u->info['login'] . '%" ORDER BY `id` DESC'
);
if (isset($spm) && $this->info['team_win'] != -1) {
$spm = mysql_query(
'SELECT
`id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2`
FROM `battle_logs_save`
WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $tmlog['mlog'] . ' AND `vars` LIKE "%' . $u->info['login'] . '%" ORDER BY `id` DESC'
);
}
$jin = 0;
$forYou2 = 0;
if (is_array($spm)) {
while ($plm = mysql_fetch_array($spm)) {
if ($jin == 0) {
$u->info['mlog'] = $plm['id_hod'];
}
$jin++;
$rt = $plm['text'];
$plm['vars'] = str_replace('^^^^', 'rvnO', $plm['vars']);
$rt = str_replace(
'{tm1}', '<span class=\"date {fru}\">' . date('H:i', $plm['time']) . '</span>', $rt
);
$rt = str_replace(
'{tm2}', '<span class=\"date {fru}\">' . date('H:i', $plm['time']) . '</span>', $rt
);
$rt = str_replace(
'{tm3}', '<span class=\"date {fru}\">' . date('d.m.Y H:i', $plm['time']) . '</span>',
$rt
);
$rt = str_replace(
'{tm4}', '<span class=\"date {fru}\">' . date('d.m.Y H:i', $plm['time']) . '</span>',
$rt
);
$plm['text'] = $rt;
unset($rt);
if ($pll < $plm['id']) {
$pll = $plm['id'];
}
$js = 'add_mlog(' . $plm['id'] . ',' . $forYou2 . ',"' . $plm['text'] . '",' . $plm['id_hod'] . ',0,0,"' . str_replace(
'"',
'&quot;', $plm['vars']
) . '");' . $js;
}
}
$js .= 'id_mlog=' . $pll . ';';
mysql_query(
'UPDATE `stats` SET `mlog`="' . $u->info['mlog'] . '" WHERE `id` ="' . $u->info['id'] . '" LIMIT 1'
);
}
return $js;
}
//Расчитываем ед. урона
public function weaponAt($item, $st, $x): int
{
$tp = 0;
$tp20 = 0;
if (isset($item['id'])) {
$itm = Helper\Conversion::dataStringToArray($item['data']);
//начинаем расчет урона
$min = $itm['sv_yron_min'] + $itm['yron_min'] + $st['minAtack'];
$max = $itm['sv_yron_max'] + $itm['yron_max'] + $st['maxAtack'];
if ($x != 0) {
/*
Колющий - 60% Силы и 40% Ловкости.
Рубящий - 70% Силы 20% Ловкости и 20% Интуиции.
Дробящий - 100% Силы.
Режущий - 60% Силы и 40% Интуиции.
*/
//Тип урона: 0 - нет урона, 1 - колющий, 2 - рубящий, 3 - дробящий, 4 - режущий, 5 - огонь, 6 - воздух, 7 - вода, 8 - земля, 9 - свет, 10 - тьма, 11 - серая
if ($x == 1) {
//колющий
$wst = $st['s2'] * 1;
$min += 5 + (ceil($wst * 1.4) / 1.25) + $st['minAtack'];
$max += 7 + (ceil(0.4 + $min / 0.9) / 1.25) + $st['maxAtack'];
$tp20 = 1;
} elseif ($x == 2) {
//рубящий
$wst = $st['s1'] * 0.75;
$min += 5 + (ceil($wst * 1.4) / 1) + $st['minAtack'];
$max += 7 + (ceil(0.4 + $min / 0.9) / 1.25) + $st['maxAtack'];
$tp20 = 2;
} elseif ($x == 3) {
//дробящий
$wst = $st['s4'] * 1.5;
$min += 5 + (ceil($wst * 1.4) / 1.25) + $st['minAtack'];
$max += 7 + (ceil(0.4 + $min / 0.9) / 1.25) + $st['maxAtack'];
$tp20 = 3;
} elseif ($x == 4) {
//режущий
$wst = $st['s3'] * 1;
$min += 5 + (ceil($wst * 1.4) / 1.25) + $st['minAtack'];
$max += 7 + (ceil(0.4 + $min / 0.9) / 1.25) + $st['maxAtack'];
$tp20 = 4;
} elseif ($x >= 5 && $x <= 22) {
//урон магии и магии стихий
$wst = $st['s1'] * 0.01 + $st['s2'] * 0.01 + $st['s3'] * 0.01 + $st['s5'] * 0.06;
$min += 3 + (ceil($wst * 1.4) / 2.25) + $st['minAtack'];
$max += 5 + (ceil(0.4 + $min / 0.9) / 2.25) + $st['maxAtack'];
$tp20 = 5;
}
$wst = ($st['s1'] * 0.02 + $st['s2'] * 0.02 + $st['s3'] * 0.05);
$min1 = -2 + ceil($wst * 1.4) / 1.25;
$max1 = 4 + ceil(0.4 + $min1 / 0.9) / 1.25;
$min = round(($min + $min1));
}
$tp = rand(($min + $max) / 3.5, (($min + $max) / 3.5 + (($min + $max) / 3.5) / 100 * 7));
}
return $tp;
}
//Считаем урон
public function weaponAt22($item, $st): array
{
$min = 0;
$max = 0;
if (isset($item['id'])) {
$itm = Helper\Conversion::dataStringToArray($item['data']);
//начинаем расчет урона
$min = $itm['sv_yron_min'] + $itm['yron_min'] + $st['minAtack'];
$max = $itm['sv_yron_max'] + $itm['yron_max'] + $st['maxAtack'];
}
return [$min, $max];
}
//Обновление здоровья
public function form_mf($u, $au): float
{
$v = $u * 5.1 - $au * 5.1;
if ($v < 0) {
$v = 0;
}
$r = (1 - (pow(99 / 100, (($v) / 100)))) * 100;
return round($r);
}
//Добавляем новую статистику игрока
public function autoSmena()
{
global $u;
$ms = [];
$ms_all = [];
$ms_ansf = [];
$i = 0;
$j = 0;
$z = 0;
while ($i < count($this->users)) {
if (isset($this->users[$i]) && $this->users[$i]['id'] != $u->info['id'] && $this->users[$i]['team'] != $u->info['team'] && $this->stats[$i]['hpNow'] > 0 && -($u->info['enemy']) != $this->users[$i]['id']) {
if (!isset($this->ga[$u->info['id']][$this->users[$i]['id']])) {
$ms[$j] = $this->users[$i]['id'];
$j++;
}
if (!isset($this->uids[(-($u->info['enemy']))])) {
$ms_all[] = $this->users[$i]['id'];
}
if (isset($this->ga[$this->users[$i]['id']][$u->info['id']])) {
$ms_ansf[$z] = $this->users[$i]['id'];
$z++;
}
}
$i++;
}
$msh = [];
if ($j == 0 && $z == 0) {
$enemydie = 0;
if (isset($this->stats[$this->uids[$u->info['enemy']]])) {
$u->info['enemy'] = 0;
$enemydie = 1;
}
if ((!isset($this->uids[(-($u->info['enemy']))]) || $this->stats[$this->uids[(-($u->info['enemy']))]]['hpNow'] < 1) && ($u->info['enemy'] < 0 || $enemydie == 1)) {
$i = 0;
$j = 0;
while ($i < count($this->users)) {
if (isset($this->users[$i]) && $this->users[$i]['id'] != $u->info['id'] && $this->users[$i]['team'] != $u->info['team'] && $this->stats[$i]['hpNow'] >= 1 && -($u->info['enemy']) != $this->users[$i]['id']) {
$ms[$j] = $this->users[$i]['id'];
$msh[$ms[$j]] = true;
$j++;
}
$i++;
}
}
}
$ms = $ms[rand(0, $j - 1)];
$ms_ansf = $ms_ansf[rand(0, $z - 1)];
if ($z > 0) {
$this->smena($ms_ansf, true);
} elseif ($j > 0) {
if (isset($msh[$ms])) {
$this->smena($ms, true, true);
} else {
$this->smena($ms, true);
}
} else {
if ($u->info['enemy'] < 0) {
$smnr5 = $this->smena(-($u->info['enemy']), true);
unset($smnr5);
}
}
}
//Проверяем приемы
public function smena($uid, $auto = false, $lastdie = false)
{
global $u;
if ((!$auto && $u->info['smena'] > 0) || $auto) {
if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] >= 1) {
if (isset($this->uids[$uid]) && $uid != $u->info['id'] && $this->users[$this->uids[$uid]]['team'] != $this->users[$this->uids[$u->info['id']]]['team']) {
if (!isset($this->ga[$u->info['id']][$uid]) || $lastdie) {
if (ceil($this->stats[$this->uids[$uid]]['hpNow']) >= 1) {
//меняем противника
if (!$auto) {
$u->info['smena']--;
}
$upd = mysql_query(
'UPDATE `stats` SET `enemy` = "' . $uid . '",`smena` = "' . $u->info['smena'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'
);
$u->info['enemy'] = $uid;
$this->users[$this->uids[$uid]]['smena'] = $u->info['smena'];
$this->users[$this->uids[$u->info['id']]]['enemy'] = $uid;
return 1;
} else {
return 'Нельзя сменить, противник уже мертв';
}
} else {
return 'Нельзя сменить на выбранную цель!';
}
} else {
return 'Нельзя сменить на выбранную цель []';
}
} else {
return 'Для вас поединок закончен, ожидайте пока завершат другие...';
}
} else {
return 'У вас закончились смены противника';
}
}
//Приемы которые используются моментально
public function testActions()
{
//проверяем удары
$m = mysql_query('SELECT * FROM `battle_act` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `id` ASC');
$i = 0;
$botA = [];
$botR = [];
while ($pl = mysql_fetch_array($m)) {
$pluids = mysql_fetch_array(
mysql_query(
'SELECT `hpNow` FROM `stats` WHERE (`id` = "' . $pl['uid1'] . '" AND `hpNow` <= 0) OR (`id` = "' . $pl['uid2'] . '" AND `hpNow` <= 0) LIMIT 1'
)
);
$pltest = mysql_fetch_array(
mysql_query('SELECT * FROM `battle_act` WHERE `id` = "' . $pl['id'] . '" LIMIT 1')
);
if (isset($pltest['id'])) {
if (isset($pluids['hpNow'])) {
mysql_query('DELETE FROM `battle_act` WHERE `id` = "' . $pl['id'] . '" LIMIT 1');
} elseif ($pl['time'] + $this->info['timeout'] > time()) {
//удар не пропущен по тайму, просто заносим данные
$this->atacks[$pl['id']] = $pl;
$this->ga[$pl['uid1']][$pl['uid2']] = $pl['id'];
$this->ag[$pl['uid2']][$pl['uid1']] = $pl['id'];
if (isset($this->iBots[$pl['uid1']])) {
//ударил бот и нет ответа
$botA[$pl['uid1']] = $pl['id'];
} elseif (isset($this->iBots[$pl['uid2']])) {
//ударили бота и он не ответил
$botR[$pl['uid2']] = $pl['id'];
if ($this->users[$this->uids[$pl['uid2']]]['timeGo'] < time()) {
$this->botAtack($pl['uid1'], $pl, 2);
}
}
} else {
//пропуск по тайму
$pl['time'] = time();
if ($pl['a1'] == 0 && $pl['a2'] == 0) {
//игрок 1 пропустил по тайму
$pl['out1'] = time();
$pl['tout1'] = 1;
//игрок 2 пропустил по тайму
$pl['out2'] = time();
$pl['tout2'] = 1;
} elseif ($pl['a1'] == 0) {
//игрок 1 пропустил по тайму
$pl['out1'] = time();
$pl['tout1'] = 1;
} elseif ($pl['a2'] == 0) {
//игрок 2 пропустил по тайму
$pl['out2'] = time();
$pl['tout2'] = 1;
}
//наносим удар по пропуску
$this->atacks[$pl['id']] = $pl;
$this->startAtack($pl['id']);
mysql_query('DELETE FROM `battle_act` WHERE `id` = "' . $pl['id'] . '"');
}
}
}
//тест удара
if ($this->uAtc['id'] > 0 && $this->na == 1) {
if ($pl['out1'] == 0 && $pl['out2'] == 0) {
//Может разменяться только тот кто бил
if ($pl['uid1'] == $u->info['id'] || $pl['uid2'] == $u->info['id']) {
$this->addNewAtack();
}
} else {
$this->addNewAtack();
}
}
//тест, бот делает удары
while ($i < count($this->bots)) {
$bot = $this->bots[$i];
if (isset($bot) && $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && $this->stats[$this->uids[$bot]]['pass'] != 'saintlucia') { //Тут проверка на бота saintlucia
$j = 0;
while ($j < count($this->users)) {
if ($this->info['razdel'] == 0) {
$tnbot = time() + rand(1, 1);
} else {
$tnbot = time() + rand(1, 2);
}
if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time()) {
if ($this->users[$j]['hpNow'] >= 1 && $this->users[$this->uids[$bot]]['hpNow'] >= 1 && $this->users[$this->uids[$bot]]['team'] != $this->users[$j]['team']) {
if (isset($this->users[$j]) && $this->stats[$j]['hpNow'] >= 1 && $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && !isset($this->ga[$bot][$this->users[$j]['id']]) && !isset($this->ag[$bot][$this->users[$j]['id']]) && $this->users[$j]['id'] != $bot && $this->users[$j]['team'] != $this->users[$this->uids[$bot]]['team']) {
if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time()) {
$this->botAtack($this->users[$j]['id'], $bot, 1);
mysql_query(
'UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1'
);
}
} elseif (isset($this->users[$i]) && $this->users[$i]['bot'] > 0 && $this->stats[$i]['hpNow'] >= 1 && $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && $this->users[$i]['id'] != $bot && $this->users[$i]['team'] != $this->users[$this->uids[$bot]]['team']) {
if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time() && $this->botAct($bot)) {
if (!isset($this->ga[$bot][$this->users[$i]['id']]) && $this->users[$this->uids[$bot]]['timeGo'] < time() && !isset($this->ag[$bot][$this->users[$i]['id']])) {
$this->botAtack($this->users[$i]['id'], $bot, 1);
mysql_query(
'UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1'
);
} elseif (!isset($this->ag[$bot][$this->users[$i]['id']]) && isset($this->ga[$bot][$this->users[$i]['id']]) && $this->users[$this->uids[$bot]]['timeGo'] < time()) {
$this->botAtack($bot, $this->users[$i]['id'], 1);
mysql_query(
'UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1'
);
}
}
} else {
//Удары между ботами
if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time() && $this->users[$j]['hpNow'] >= 1 && $this->users[$this->uids[$bot]]['hpNow'] >= 1) {
$this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['a1'] = rand(
1, 5
) . '' . rand(
1,
5
) . rand(1, 5) . rand(1, 5) . rand(1, 5);
$this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['b1'] = rand(1, 5);
$this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['a2'] = rand(
1, 5
) . '' . rand(
1,
5
) . rand(1, 5) . rand(1, 5) . rand(1, 5);
$this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['b2'] = rand(1, 5);
$this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['a1'] = rand(
1, 5
) . '' . rand(
1,
5
) . rand(1, 5) . rand(1, 5) . rand(1, 5);
$this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['b1'] = rand(1, 5);
$this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['a2'] = rand(
1, 5
) . '' . rand(
1,
5
) . rand(1, 5) . rand(1, 5) . rand(1, 5);
$this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['b2'] = rand(1, 5);
if (isset($this->ga[$bot][$this->users[$j]['id']]) && $this->users[$j]['bot'] > 0) {
if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time()) {
$tnbot = time() + rand(3, 7);
if ($this->info['type'] == 329) { // тестовый бой
$tnbot = time() - 1;
}
$this->startAtack($this->ga[$bot][$this->users[$j]['id']]);
$this->users[$this->uids[$bot]]['timeGo'] = $tnbot;
mysql_query(
'UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1'
);
}
} elseif (isset($this->ag[$bot][$this->users[$j]['id']]) && $this->users[$j]['bot'] > 0) {
if ($this->users[$this->uids[$bot]]['timeGo'] < time() && $this->users[$j]['timeGo'] < time()) {
$this->startAtack($this->ag[$bot][$this->users[$j]['id']]);
$tnbot = time() + rand(3, 7);
if ($this->info['type'] == 329) { // тестовый бой
$tnbot = time() - 1;
}
$this->users[$this->uids[$bot]]['timeGo'] = $tnbot;
mysql_query(
'UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1'
);
}
}
}
}
} else {
}
}
$j++;
}
}
$i++;
}
}
//Приемы которые используются моментально (в конце хода)
public function botAtack($uid, $pl, $tp)
{
$test_atack = mysql_fetch_array(
mysql_query(
'SELECT `id` FROM `battle_act` WHERE `battle` = "' . $this->info['id'] . '" AND ((
`uid1` = "' . $pl . '" AND `uid2` = "' . $uid . '"
) OR (
`uid2` = "' . $pl . '" AND `uid1` = "' . $uid . '"
)) LIMIT 1'
)
);
if ($tp == 1 && !isset($test_atack['id'])) {
$test_uid = mysql_fetch_array(
mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $uid . '" AND `hpNow` >= 1 LIMIT 1')
);
$test_pl = mysql_fetch_array(
mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $pl . '" AND `hpNow` >= 1 LIMIT 1')
);
if (isset($test_uid['id']) && isset($test_pl['id']) && $test_uid['id'] != $test_pl['id']) {
$a = rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5) . '' . rand(1, 5);
$b = rand(1, 5);
$d = mysql_query(
'INSERT INTO `battle_act` (`battle`,`time`,`uid1`,`uid2`,`a1`,`b1`) VALUES ("' . $this->info['id'] . '","' . time() . '","' . $pl . '","' . $uid . '","' . $a . '","' . $b . '")'
);
}
} elseif ($tp == 2) {
//бот отвечает на удар
$test_uid = mysql_fetch_array(
mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $uid . '" AND `hpNow` >= 1 LIMIT 1')
);
$test_pl = mysql_fetch_array(
mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $pl['uid2'] . '" AND `hpNow` >= 1 LIMIT 1')
);
if (isset($test_uid['id']) && isset($test_pl['id']) && $test_uid['id'] != $test_pl['id']) {
$bot = $this->users[$this->uids[$pl['uid2']]];
$na = ['id' => 0, 'a' => [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0], 'b' => 0];
$a222 = rand(1, 5) . '_' . rand(1, 5) . '_' . rand(1, 5) . '_' . rand(1, 5) . '_' . rand(1, 5);
$a = explode('_', $a222);
$i = 1;
$na['id'] = time();
while ($i <= 5) {
if (isset($a[$i - 1])) {
$a[$i - 1] = intval(round($a[$i - 1]));
if ($a[$i - 1] >= 1 && $a[$i - 1] <= 5) {
$na['a'][$i] = $a[$i - 1];
} else {
$na['a'][$i] = 0;
}
}
$i++;
}
$na['b'] = rand(1, 5);
//Проводим удар
$this->atacks[$pl['id']]['a2'] = $a222;
$this->atacks[$pl['id']]['b2'] = $na['b'];
$this->startAtack($pl['id']);
}
}
}
//Используем приемы
public function startAtack($id)
{
global $c, $u, $log_text, $priem;
$this->prlog = [];
$this->inport_user = 0;
$vrm = [
'uid1' => $this->atacks[$id]['uid1'],
'uid2' => $this->atacks[$id]['uid2'],
];
if (isset($this->atacks[$id]) && $this->atacks[$id]['lock'] == 0) {
//Прием разгадать тактику
$i = 1;
$j = 2;
$k = 0;
$unpr = '';
while ($i <= 2) {
$untac = mysql_fetch_array(
mysql_query(
'SELECT `id` FROM `eff_users` WHERE `v1` = "priem" AND `v2` = "217" AND `uid` = "' . $this->atacks[$id]['uid' . $i] . '" AND `delete` = 0 LIMIT 1'
)
);
$agrs = mysql_fetch_array(
mysql_query(
'SELECT `id` FROM `eff_users` WHERE `v1` = "priem" AND `v2` = "211" AND `uid` = "' . $this->atacks[$id]['uid' . $j] . '" AND `delete` = 0 LIMIT 1'
)
);
if (isset($untac['id']) && !isset($agrs['id'])) {
$pvr['sp'] = mysql_query(
'SELECT `a`.* FROM `eff_users` AS `a` WHERE `a`.`uid` = "' . $this->atacks[$id]['uid' . $j] . '" AND `a`.`delete` = 0 AND `a`.`v1` = "priem"
AND `a`.`v2` != 222 AND `a`.`v2` != 238 AND `a`.`v2` != 228 AND `a`.`v2` != 229
AND `a`.`v2` != 139 AND `a`.`v2` != 188 AND `a`.`v2` != 226 AND `a`.`v2` != 211
AND `a`.`v2` != 49 AND `a`.`v2` != 233 AND `a`.`v2` != 227 AND `a`.`v2` != 220
AND `a`.`v2` != 191 AND `a`.`v2` != 332 AND `a`.`v2` != 333 AND `a`.`v2` != 334
AND `a`.`v2` != 335 AND `a`.`v2` != 236 AND `a`.`v2` != 201
AND `a`.`v2` != 261 AND `a`.`v2` != 262 AND `a`.`v2` != 206 AND `a`.`v2` != 207 AND `a`.`v2` != 208 AND `a`.`v2` != 209
AND `a`.`v2` != 210 AND `a`.`v2` != 284
AND `a`.`v2` != 263 AND `a`.`v2` != 258 AND `a`.`v2` != 29 AND `a`.`v2` != 30
AND `a`.`v2` != 31 AND `a`.`v2` != 32 AND `a`.`v2` != 256 AND `a`.`v2` != 249
AND `a`.`v2` != 248 AND `a`.`v2` != 187 AND `a`.`v2` != 245 AND `a`.`v2` != 175
AND `a`.`v2` != 176 AND `a`.`v2` != 177 AND `a`.`v2` != 178 AND `a`.`v2` != 179
AND `a`.`v2` != 285 AND `a`.`v2` != 36 AND `a`.`v2` != 85 AND `a`.`v2` != 86
AND `a`.`v2` != 87 AND `a`.`v2` != 88 AND `a`.`v2` != 89 AND `a`.`v2` != 90
AND `a`.`v2` != 269 AND `a`.`v2` != 276 AND `a`.`v2` != 277 AND `a`.`v2` != 270
AND `a`.`v2` != 174 AND `a`.`v2` != 324 AND `a`.`v2` != 217
AND `name` NOT LIKE "%Иммунитет%"
LIMIT 30'
);
while ($pvr['pl'] = mysql_fetch_array($pvr['sp'])) {
$pvr['pl']['priem'] = mysql_fetch_array(
mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $pvr['pl']['v2'] . '" LIMIT 1')
);
if (isset($pvr['pl']['priem']['id']) && $pvr['pl']['priem']['neg'] == 0) {
$this->delPriem($pvr['pl'], $this->users[$this->uids[$this->atacks[$id]['uid' . $j]]], 100);
}
}
}
$j--;
$i++;
}
//Восстановление манны 1% за ход
if ($this->atacks[$id]['out1'] == 0) {
if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['s6'] / 4 < $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['level']) {
$this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] += floor(
$this->stats[$this->uids[$this->atacks[$id]['uid1']]]['level'] + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hod_minmana']
);
} else {
$this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] += floor(
$this->stats[$this->uids[$this->atacks[$id]['uid1']]]['s6'] / 4 + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hod_minmana']
);
}
$this->users[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] = $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'];
}
//
if ($this->atacks[$id]['out2'] == 0) {
if ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['s6'] / 4 < $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['level']) {
$this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] += floor(
$this->stats[$this->uids[$this->atacks[$id]['uid2']]]['level'] + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hod_minmana']
);
} else {
$this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] += floor(
$this->stats[$this->uids[$this->atacks[$id]['uid2']]]['s6'] / 4 + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hod_minmana']
);
}
$this->users[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] = $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'];
}
//Антистаты
if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['antm3'] != 0) {
$this->stats[$this->uids[$this->atacks[$id]['uid2']]]['m3'] -= round(
$this->stats[$this->uids[$this->atacks[$id]['uid1']]]['antm3']
);
}
if ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['antm3'] != 0) {
$this->stats[$this->uids[$this->atacks[$id]['uid1']]]['m3'] -= round(
$this->stats[$this->uids[$this->atacks[$id]['uid2']]]['antm3']
);
}
$last_yrn = [
1 => $this->users[$this->uids[$this->atacks[$id]['uid1']]]['battle_yron'],
2 => $this->users[$this->uids[$this->atacks[$id]['uid2']]]['battle_yron'],
];
//Расчет количества блоков и противников
$this->testZonb($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2']);
//Запускаем магию предметов
$this->magicItems($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $id);
$this->magicItems($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $id);
// Получаем приемы игроков
$this->priemsRazmen($id, $at);
$this->priemsRazmenMoment($id, $at);
$this->priemsRazmen($id, $at);
$at = $this->newRazmen($id);
// Тестируем какие еще могут быть варианты при ударе
// Уворот, парирование, крит, пробить блок, блок щитом
// Блок щитом (если есть щит, конечно)
$at = $this->mf2Razmen($id, $at, $v); //крит
$at = $this->mf3Razmen($id, $at, $v); //парирование
$at = $this->mf4Razmen($id, $at, $v); //блок щитом
$at = $this->mf1Razmen($id, $at, $v); //уворот
$at = $this->mf5Razmen($id, $at, $v); //контрудар
$at = $this->yronRazmen($id, $at); //расчет урона
// Проверяем приемы
// Получаем приемы игроков
$at = $this->priemsTestRazmen($id, $at);
// Собираем размен (пересчитываем и расчитываем урон и т.д)
$at = $this->priemsRestartRazmen($id, $at); //Повторная проверка приемов (если требуется)
//Минусуем поглощенный урон
if (count($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['set_pog']) > 0) {
$this->testPogB($this->atacks[$id]['uid1'], 1, $id, 1);
}
if (count($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['set_pog']) > 0) {
$this->testPogB($this->atacks[$id]['uid2'], 1, $id, 1);
}
// Обновляем НР и добавляем тактики
$at = $this->updateHealth($id, $at);
// Заносим в логи + записываем статистику боя
$this->addlogRazmen($id, $at);
//Запускаем магию предметов
$this->magicItems($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $id);
$this->magicItems($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $id);
//Возращаем зоны блока
$this->restZonb($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2']);
//обновляем задержки приемов
$zd1 = explode('|', $this->users[$this->uids[$this->atacks[$id]['uid1']]]['priems_z']);
$zd2 = explode('|', $this->users[$this->uids[$this->atacks[$id]['uid2']]]['priems_z']);
$zd1id = explode('|', $this->users[$this->uids[$this->atacks[$id]['uid1']]]['priems']);
$zd2id = explode('|', $this->users[$this->uids[$this->atacks[$id]['uid2']]]['priems']);
$prmos = [];
$i5 = 0;
while ($i5 < 51) {
if (isset($zd1[$i5]) && $zd1[$i5] > 0) {
//Если приемы не требуют ход
$zd1[$i5] -= 1;
} else {
$zd1[$i5] = 0;
}
if (isset($zd2[$i5]) && $zd2[$i5] > 0) {
//Если приемы не требуют ход
$zd2[$i5] -= 1;
} else {
$zd2[$i5] = 0;
}
$i5++;
}
unset($prmos);
if ($this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy'] == $this->users[$this->uids[$this->atacks[$id]['uid2']]]['id']) {
$this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy'] = -$this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy'];
}
if ($this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy'] == $this->users[$this->uids[$this->atacks[$id]['uid1']]]['id']) {
$this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy'] = -$this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy'];
}
$this->users[$this->uids[$this->atacks[$id]['uid1']]]['priems_z'] = implode('|', $zd1);
$this->users[$this->uids[$this->atacks[$id]['uid2']]]['priems_z'] = implode('|', $zd2);
if ($this->atacks[$id]['uid1'] == $u->info['id']) {
$u->info['priems_z'] = implode('|', $zd1);
} elseif ($this->atacks[$id]['uid2'] == $u->info['id']) {
$u->info['priems_z'] = implode('|', $zd2);
}
//Проверяем тактики
$i = 1;
while ($i <= 6) {
if ($this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] > 25) {
$this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] = 25;
} elseif ($this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] <= 0) {
$this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] = 0;
}
if ($this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] > 25) {
$this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] = 25;
} elseif ($this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] <= 0) {
$this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] = 0;
}
$i++;
}
//Обновляем задержки предметов
mysql_query(
'UPDATE `items_users` SET `btl_zd` = `btl_zd` - 1 WHERE (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '") AND `btl_zd` > 0 AND `inOdet` > 0 LIMIT 100'
);
mysql_query(
'UPDATE `users` SET `notrhod` = "-1" WHERE `id` = "' . $this->atacks[$id]['uid1'] . '" OR `id` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 2'
);
//Обновляем задержки пирожков
mysql_query(
'UPDATE `pirogi` SET `hod` = `hod` - 1 WHERE `btl` = "' . $this->info['id'] . '" AND (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '")'
);
mysql_query(
'UPDATE `tactic` SET `hod` = `hod` - 1 WHERE `btl` = "' . $this->info['id'] . '" AND (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '")'
);
//Тактики
mysql_query('DELETE FROM `pirogi` WHERE `btl` = "' . $this->info['id'] . '" AND `hod` < 1');
mysql_query('DELETE FROM `tactic` WHERE `btl` = "' . $this->info['id'] . '" AND `hod` < 1');
//Обновляем задержки пирожков
mysql_query(
'UPDATE `spells` SET `hod` = `hod` - 1 WHERE `btl` = "' . $this->info['id'] . '" AND (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '")'
);
mysql_query('DELETE FROM `spells` WHERE `btl` = "' . $this->info['id'] . '" AND `hod` < 1');
//Обновляем данные в battle_users
mysql_query(
'UPDATE `battle_users` SET `hp` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hpNow'] . '"
WHERE `battle` = "' . $this->info['id'] . '" AND `uid` = "' . $this->atacks[$id]['uid1'] . '" LIMIT 1'
);
mysql_query(
'UPDATE `battle_users` SET `hp` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hpNow'] . '"
WHERE `battle` = "' . $this->info['id'] . '" AND `uid` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 1'
);
//Восстановление манны 25% от мудрости за ход
$last_yrn = [
1 => $last_yrn[1],
2 => $last_yrn[2],
10 => $this->users[$this->uids[$this->atacks[$id]['uid1']]]['battle_yron'],
20 => $this->users[$this->uids[$this->atacks[$id]['uid2']]]['battle_yron'],
];
$last_yrn[100] = floor($last_yrn[10] - $last_yrn[1]);
$last_yrn[200] = floor($last_yrn[20] - $last_yrn[2]);
if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) {
$this->save_stats(
$this->yhod_user(
$this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'],
$this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']
)
);
} elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) {
$this->save_stats(
$this->yhod_user(
$this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'],
$this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']
)
);
}
mysql_query(
'UPDATE `stats` SET
`hpNow` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hpNow'] . '",
`mpNow` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] . '",
`tactic1` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic1'] . '",
`tactic2` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic2'] . '",
`tactic3` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic3'] . '",
`tactic4` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic4'] . '",
`tactic5` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic5'] . '",
`tactic6` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic6'] . '",
`tactic7` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic7'] . '",
`enemy` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy'] . '",
`battle_yron` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['battle_yron'] . '",
`last_hp` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['last_hp'] . '",
`battle_exp` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['battle_exp'] . '",
`priems_z` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['priems_z'] . '"
WHERE `id` = "' . $this->atacks[$id]['uid1'] . '" LIMIT 1'
);
mysql_query(
'UPDATE `stats` SET
`hpNow` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hpNow'] . '",
`mpNow` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] . '",
`tactic1` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic1'] . '",
`tactic2` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic2'] . '",
`tactic3` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic3'] . '",
`tactic4` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic4'] . '",
`tactic5` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic5'] . '",
`tactic6` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic6'] . '",
`tactic7` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic7'] . '",
`enemy` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy'] . '",
`battle_yron` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['battle_yron'] . '",
`last_hp` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['last_hp'] . '",
`battle_exp` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['battle_exp'] . '",
`priems_z` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['priems_z'] . '"
WHERE `id` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 1'
);
$this->priemsRazmenMomentEnd($id, $at);
//Минусуем заряд приема \ эффекта
$j = 1;
$jn = 1;
while ($j <= 2) {
$eff = $this->stats[$this->uids[$this->atacks[$id]['uid' . $j]]]['effects'];
$i = 0;
while ($i < count($eff)) {
if (isset($eff[$i])) {
if ($eff[$i]['timeUse'] == 77 && $eff[$i]['hod'] > -1) {
$eff[$i]['hod']--;
$eff[$i]['priem'] = mysql_fetch_array(
mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $eff[$i]['v2'] . '" LIMIT 1')
);
if (round($eff[$i]['priem']['minmana'] * $eff[$i]['x']) != 0) {
//Отнимаем ману у того кто кастовал
$priem->minMana(
$eff[$i]['user_use'],
round($eff[$i]['priem']['minmana'] * $eff[$i]['x'])
);
if ($this->stats[$this->uids[$eff[$i]['user_use']]]['mpNow'] <= 0) {
$eff[$i]['hod'] = 0;
}
}
if (strripos($eff[$i]['data'], 'minprocmanahod')) {
$pvr = [
'x1' => 0,
'x2' => 0,
'd' => '',
'i' => 0,
'uid' => $eff[$i]['uid'],
'color' => '',
'color2' => '',
'effx' => '',
'x' => $eff[$i]['name'],
];
$pvr['d'] = explode('|', $eff[$i]['data']);
while ($pvr['i'] < count($pvr['d'])) {
if (isset($pvr['d'][$pvr['i']])) {
$pvr['d1'] = explode('=', $pvr['d'][$pvr['i']]);
if ($pvr['d1'][0] == 'minprocmanahod') {
$pvr['d1'] = explode('x', $pvr['d1'][1]);
$pvr['x1'] = $pvr['d1'][0];
$pvr['x2'] = $pvr['d1'][1];
}
}
$pvr['i']++;
}
$pvr['mp'] = round(
$this->stats[$this->uids[$pvr['uid']]]['mpAll'] / 100 * rand(
$pvr['x1'],
$pvr['x2']
)
);
$pvr['mpSee'] = 0;
$pvr['mpNow'] = floor($this->stats[$this->uids[$pvr['uid']]]['mpNow']);
$pvr['mpAll'] = $this->stats[$this->uids[$pvr['uid']]]['mpAll'];
$pvr['mpTr'] = $pvr['mpAll'] - $pvr['mpNow'];
if ($pvr['mpTr'] > 0) {
//Требуется хилл
if ($pvr['mpTr'] < $pvr['mp']) {
$pvr['mp'] = $pvr['mpTr'];
}
$pvr['mpSee'] = '+' . $pvr['mp'];
$pvr['mpNow'] += $pvr['mp'];
}
if ($pvr['mpNow'] > $pvr['mpAll']) {
$pvr['mpNow'] = $pvr['mpAll'];
} elseif ($pvr['mpNow'] < 0) {
$pvr['mpNow'] = 0;
}
if ($pvr['mpSee'] == 0) {
$pvr['mpSee'] = '--';
}
$btl->stats[$btl->uids[$pvr['uid']]]['mpNow'] = $pvr['mpNow'];
$btl->users[$btl->uids[$pvr['uid']]]['mpNow'] = $pvr['mpNow'];
mysql_query(
'UPDATE `stats` SET `mpNow` = "' . $btl->stats[$btl->uids[$pvr['uid']]]['mpNow'] . '" WHERE `id` = "' . $pvr['uid'] . '" LIMIT 1'
);
$pvr['text'] = $this->addlt(1, 21, $this->users[$this->uids[$pvr['uid']]]['sex'], null);
$pvr['text2'] = '{tm1} ' . $pvr['text'] . ' на <font Color=#006699><strong>' . $pvr['mpSee'] . '</strong></font> [' . $pvr['mpNow'] . '/' . $pvr['mpAll'] . '] (Мана)';
$this->priemAddLog(
$id, 1, 2, $pvr['uid'], 0,
'<font color^^^^#' . $pvr['color2'] . '>' . $pvr['x'] . '</font>',
$pvr['text2'],
($this->hodID + 0)
);
unset($pvr);
}
if (isset($this->rehodeff[$eff[$i]['id']])) {
$eff[$i]['hod'] = $this->rehodeff[$eff[$i]['id']];
}
if ($eff[$i]['hod'] > 0) {
$this->stats[$this->uids[$this->atacks[$id]['uid' . $j]]]['effects']['hod'] = $eff[$i]['hod'];
mysql_query(
'UPDATE `eff_users` SET `hod` = "' . $eff[$i]['hod'] . '" WHERE `id` = "' . $eff[$i]['id'] . '" LIMIT 1'
);
} else {
//удаляем прием
if ($eff[$i]['v2'] > 0) {
if ($j == 1) {
$jn = 2;
} else {
$jn = 1;
}
$this->delPriem(
$eff[$i], $this->users[$this->uids[$this->atacks[$id]['uid' . $j]]],
3, $this->atacks[$id]['uid' . $jn]
);
}
}
} elseif ($eff[$i]['timeUse'] == 77 && $eff[$i]['hod'] == -2) {
$eff[$i]['priem'] = mysql_fetch_array(
mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $eff[$i]['v2'] . '" LIMIT 1')
);
$priem->hodUsePriem($eff[$i], $eff[$i]['priem']);
} else {
$eff[$i]['priem'] = mysql_fetch_array(
mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $eff[$i]['v2'] . '" LIMIT 1')
);
if (isset($eff[$i]['priem']['minmana']) && round(
$eff[$i]['priem']['minmana'] * $eff[$i]['x']
) != 0) {
//Отнимаем ману у того кто кастовал
$priem->minMana(
$eff[$i]['user_use'],
round($eff[$i]['priem']['minmana'] * $eff[$i]['x'])
);
if ($this->stats[$this->uids[$eff[$i]['user_use']]]['mpNow'] <= 0) {
$eff[$i]['hod'] = 0;
if (isset($this->rehodeff[$eff[$i]['id']])) {
$eff[$i]['hod'] = $this->rehodeff[$eff[$i]['id']];
}
if ($eff[$i]['v2'] > 0) {
if ($j == 1) {
$jn = 2;
} else {
$jn = 1;
}
$this->delPriem(
$eff[$i],
$this->users[$this->uids[$this->atacks[$id]['uid' . $j]]], 3,
$this->atacks[$id]['uid' . $jn]
);
}
}
} elseif ($eff[$i]['timeUse'] > 100 && $eff[$i]['hod'] > -1 && $c['effz'] > 0) {
$eff[$i]['hod']--;
if (isset($this->rehodeff[$eff[$i]['id']])) {
$eff[$i]['hod'] = $this->rehodeff[$eff[$i]['id']];
}
if ($eff[$i]['hod'] > 0) {
$this->stats[$this->uids[$this->atacks[$id]['uid' . $j]]]['effects']['hod'] = $eff[$i]['hod'];
mysql_query(
'UPDATE `eff_users` SET `hod` = "' . $eff[$i]['hod'] . '" WHERE `id` = "' . $eff[$i]['id'] . '" LIMIT 1'
);
} else {
//удаляем прием
if ($eff[$i]['v2'] > 0) {
if ($j == 1) {
$jn = 2;
} else {
$jn = 1;
}
$this->delPriem(
$eff[$i],
$this->users[$this->uids[$this->atacks[$id]['uid' . $j]]], 3,
$this->atacks[$id]['uid' . $jn]
);
}
}
}
}
}
$i++;
}
$j++;
}
//Проверяем
if ($c['propsk_die'] > 0 && $this->info['razdel'] == 0 && $this->info['dn_id'] == 0 && $this->info['izlom'] == 0) {
$cn1 = mysql_fetch_array(
mysql_query(
'SELECT COUNT(*) FROM `battle_out` WHERE `battle` = "' . $this->info['id'] . '" AND `uid1` = "' . $this->atacks[$id]['uid1'] . '" LIMIT 1'
)
);
$cn2 = mysql_fetch_array(
mysql_query(
'SELECT COUNT(*) FROM `battle_out` WHERE `battle` = "' . $this->info['id'] . '" AND `uid1` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 1'
)
);
if ($cn1[0] > 3) {
$pvr['text2'] = '{tm1} Персонаж {u1} был убит из-за большого количества пропусков хода.';
$this->priemAddLog(
$id, 1, 2, $this->atacks[$id]['uid1'], 0, '',
$pvr['text2'],
($this->hodID + 0)
);
unset($pvr);
mysql_query(
'UPDATE `stats` SET `hpNow` = 0 WHERE `id` = "' . $this->atacks[$id]['uid1'] . '" LIMIT 1'
);
}
if ($cn2[0] > $c['propsk_die']) {
$pvr['text2'] = '{tm1} Персонаж {u1} был убит из-за большого количества пропусков хода.';
$this->priemAddLog(
$id, 1, 2, $this->atacks[$id]['uid2'], 0, '',
$pvr['text2'],
($this->hodID + 0)
);
unset($pvr);
mysql_query(
'UPDATE `stats` SET `hpNow` = 0 WHERE `id` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 1'
);
}
}
//
//Обновляем текущего противника
if ($u->info['id'] == $this->atacks[$id]['uid1']) {
$u->info['enemy'] = $this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy'];
}
if ($u->info['id'] == $this->atacks[$id]['uid2']) {
$u->info['enemy'] = $this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy'];
}
//Удаляем размен из базы //ТУТ возможен лаг удаления
mysql_query(
'DELETE FROM `battle_act` WHERE ( `uid1` = "' . $this->atacks[$id]['uid1'] . '" AND `uid2` = "' . $this->atacks[$id]['uid2'] . '" ) OR
( `uid2` = "' . $this->atacks[$id]['uid1'] . '" AND `uid1` = "' . $this->atacks[$id]['uid2'] . '" )'
);
unset($old_s1, $old_s2);
unset($this->ga[$this->atacks[$id]['uid1']][$this->atacks[$id]['uid2']], $this->ga[$this->atacks[$id]['uid2']][$this->atacks[$id]['uid1']]);
unset($this->ag[$this->atacks[$id]['uid1']][$this->atacks[$id]['uid2']], $this->ag[$this->atacks[$id]['uid2']][$this->atacks[$id]['uid1']]);
unset($this->atacks[$id]);
mysql_query('DELETE FROM `battle_act` WHERE `id` = "' . $id . '" LIMIT 1');
unset($old_s1, $old_s2);
}
}
//Повторная проверка приемов
public function testZonb($uid, $uid2)
{
$zba = [];
$zba[1] = $this->stats[$this->uids[$uid]]['zonb'];
$zba[2] = $this->stats[$this->uids[$uid2]]['zonb'];
if ($this->stnZb[$uid] == 0) {
$zba[1] = $this->stats[$this->uids[$uid]]['zonb'];
$this->stnZb[$uid] = $zba[1];
} else {
$zba[1] = $this->stnZb[$uid];
}
if ($this->stnZb[$uid2] == 0) {
$zba[2] = $this->stats[$this->uids[$uid2]]['zonb'];
$this->stnZb[$uid] = $zba[2];
} else {
$zba[2] = $this->stnZb[$uid2];
}
if ($zba[1] > 3) {
$zba[1] = 3;
}
if ($zba[2] > 3) {
$zba[2] = 3;
}
//Блоки игрока 1
if (
(
$this->stats[$this->uids[$uid2]]['weapon1'] == 1 ||
$this->stats[$this->uids[$uid2]]['weapon2'] == 1
) &&
$this->stats[$this->uids[$uid]]['weapon1'] != 1 &&
$this->stats[$this->uids[$uid]]['weapon2'] != 1
) {
$zba[1] -= 1;
}
//Блоки игрока 2
if (
(
$this->stats[$this->uids[$uid]]['weapon1'] == 1 ||
$this->stats[$this->uids[$uid]]['weapon2'] == 1
) &&
$this->stats[$this->uids[$uid2]]['weapon1'] != 1 &&
$this->stats[$this->uids[$uid2]]['weapon2'] != 1
) {
$zba[2] -= 1;
}
if ($zba[1] < 1) {
$zba[1] = 1;
}
if ($zba[2] < 1) {
$zba[2] = 1;
}
$this->stats[$this->uids[$uid]]['zonb'] = $zba[1];
$this->stats[$this->uids[$uid2]]['zonb'] = $zba[2];
if (
$this->stats[$this->uids[$uid]]['min_zonb'] > 0 &&
$this->stats[$this->uids[$uid]]['zonb'] < $this->stats[$this->uids[$uid]]['min_zonb']
) {
$this->stats[$this->uids[$uid]]['zonb'] = $this->stats[$this->uids[$uid]]['min_zonb'];
}
if (
$this->stats[$this->uids[$uid2]]['min_zonb'] > 0 &&
$this->stats[$this->uids[$uid2]]['zonb'] < $this->stats[$this->uids[$uid2]]['min_zonb']
) {
$this->stats[$this->uids[$uid2]]['zonb'] = $this->stats[$this->uids[$uid2]]['min_zonb'];
}
}
//Проверка действия приема
public function magicItems($uid1, $uid2, $end)
{
global $u, $priem, $c, $code;
if (!isset($this->stats[$this->uids[$uid1]])) {
return;
}
$i = 0;
while ($i < count($this->stats[$this->uids[$uid1]]['items'])) {
$itm = $this->stats[$this->uids[$uid1]]['items'][$i];
if (isset($itm['id'])) {
$e = Conversion::dataStringToArray($itm['data']);
if (isset($e['bm_a1'])) {
if ($end > 0) {
if (file_exists('../../_incl_data/class/priems/' . $e['bm_a1'] . '.end.php')) {
require('../../_incl_data/class/priems/' . $e['bm_a1'] . '.end.php');
}
} else {
if (file_exists('../../_incl_data/class/priems/' . $e['bm_a1'] . '.php')) {
require('../../_incl_data/class/priems/' . $e['bm_a1'] . '.php');
}
}
}
}
$i++;
}
unset($itm);
}
//Проверка урона приемов
public function priemsRazmen($id, $at)
{
if ($at == 'fast') {
$uid1 = $id[0];
$uid2 = $id[1];
} else {
$uid1 = $this->atacks[$id]['uid1'];
$uid2 = $this->atacks[$id]['uid2'];
}
$i = 1;
while ($i <= 2) {
if ($i == 1) {
$a = 1;
$b = 2;
$u1 = ${'uid1'};
$u2 = ${'uid2'};
} else {
$a = 2;
$b = 1;
$u1 = ${'uid2'};
$u2 = ${'uid1'};
}
//Получаем приемы и смотрим когда какой действует
$eff = $this->stats[$this->uids[$u1]]['effects'];
$this->stats[$this->uids[$u1]]['u_priem'] = [];
$j = 0;
while ($j <= count($eff)) {
if (isset($eff[$j]) && $eff[$j]['id_eff'] == 22 && $eff[$j]['v1'] == 'priem' && $eff[$j]['v2'] > 0) {
$this->stats[$this->uids[$u1]]['u_priem'][] = [
$j,
$eff[$j]['v2'],
$this->prm[$eff[$j]['v2']]['act'],
$eff[$j]['id'],
$this->prm[$eff[$j]['v2']]['type_of'],
$this->prm[$eff[$j]['v2']]['moment'],
$this->prm[$eff[$j]['v2']]['moment_end'],
$this->prm[$eff[$j]['v2']]['type_sec'],
];
}
$j++;
}
$i++;
}
}
public function priemsRazmenMoment($id, $at)
{
$uid1 = $this->atacks[$id]['uid1'];
$uid2 = $this->atacks[$id]['uid2'];
$i = 1;
while ($i <= 2) {
if ($i == 1) {
$a = 1;
$b = 2;
$u1 = ${'uid1'};
$u2 = ${'uid2'};
} else {
$a = 2;
$b = 1;
$u1 = ${'uid2'};
$u2 = ${'uid1'};
}
if (!isset($at['p']['p_cast'])) {
$at['p'] = $at;
$at['p']['p_cast'] = true;
}
//Приемы ухода от удара
if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) {
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 1) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_used_this = $u1;
$pr_moment = true;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u1, $j);
unset(${'fx_priem'});
$this->stats[$this->uids[$u2]]['nopryh']--;
}
}
$j++;
}
}
//Приемы крита
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 2) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_used_this = $u1;
$pr_moment = true;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u1, $j);
unset(${'fx_priem'});
}
}
$j++;
}
//Приемы атаки
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 3) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_used_this = $u1;
$pr_moment = true;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
if (isset($fx_priem)) {
$at = $fx_priem($id, $at, $u1, $j);
}
unset(${'fx_priem'});
}
}
$j++;
}
//Приемы защиты
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 4) {
if ($this->testPriemVarTrueZash(
$i, 1, $this->stats[$this->uids[$u1]]['u_priem'][$j][1], $a, $b,
$u1, $u2
) == false) {
} elseif (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_used_this = $u1;
$pr_moment = true;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u1, $j);
unset(${'fx_priem'});
}
}
$j++;
}
//Прочие приемы
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 5) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_used_this = $u1;
$pr_moment = true;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u1, $j);
unset(${'fx_priem'});
}
}
$j++;
}
$i++;
}
return $at;
}
//Опыт + набитый урон за удар приемом\магией
/**
* @param $i
* @param $id
* @param $pid
* @param $a
* @param $b
* @param $u1
* @param $u2
* @return bool
* @deprecated always returns true
*/
public function testPriemVarTrueZash($i, $id, $pid, $a, $b, $u1, $u2): bool
{
return true;
}
//Наносим удар между игроками
public function newRazmen($id, $at = null)
{
$uid1 = $this->atacks[$id]['uid1'];
$uid2 = $this->atacks[$id]['uid2'];
if ($this->atacks[$id]['out1'] == 0) {
$at[1] = $this->usersTestAtack($id, $uid1, $uid2);
} else {
$at[1] = [0];
}
if ($this->atacks[$id]['out2'] == 0) {
$at[2] = $this->usersTestAtack($id, $uid2, $uid1);
} else {
$at[2] = [0];
}
return $at;
}
public function usersTestAtack($id, $uid1, $uid2): array
{
$r = [];
$block = [
0,
0,
0,
0,
0,
0,
];
//Проверка блоков
$i = 1;
if ($uid1 == $this->atacks[$id]['uid1']) {
$a = 2;
$j = $this->atacks[$id]['b2'];
$atack = [
0,
$this->atacks[$id]['a1'][0],
$this->atacks[$id]['a1'][1],
$this->atacks[$id]['a1'][2],
$this->atacks[$id]['a1'][3],
$this->atacks[$id]['a1'][4],
];
} elseif ($uid2 == $this->atacks[$id]['uid1']) {
$a = 1;
$j = $this->atacks[$id]['b1'];
$atack = [
0,
$this->atacks[$id]['a2'][0],
$this->atacks[$id]['a2'][1],
$this->atacks[$id]['a2'][2],
$this->atacks[$id]['a2'][3],
$this->atacks[$id]['a2'][4],
];
}
if ($this->atacks[$id]['out' . $a] == 0) {
while ($i <= $this->stats[$this->uids[$uid2]]['zonb']) {
$block[$j] = 1;
$j++;
if ($j > 5 || $j < 1) {
$j = 1;
}
$i++;
}
}
//Проверка ударов
$i = 1;
while ($i <= $this->stats[$this->uids[$uid1]]['zona']) {
if (!isset($atack[$i]) || $atack[$i] == 0) {
$atack[$i] = rand(1, 5);
}
if ($atack[$i] > 0) {
if ($block[$atack[$i]] == 1) {
//удар был заблокирован
// КУДА БИЛ , ТИП УДАРА
$r['atack'][] = [$atack[$i], 3, 0];
} else {
//Удар прошел
// КУДА БИЛ , ТИП УДАРА
$r['atack'][] = [$atack[$i], 1, 0];
}
}
$i++;
}
return $r;
}
public function mf2Razmen($id, $at, $v, $pat = false, $rjd = 0)
{
global $u;
if ($pat) {
$pat = $at;
$at = $pat['p'];
} else {
unset($pat);
}
$uid1 = $this->atacks[$id]['uid1'];
$uid2 = $this->atacks[$id]['uid2'];
if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) {
$uid1 = $this->yhod_user(
$this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'],
$this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']
);
} elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) {
$uid2 = $this->yhod_user(
$this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'],
$this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']
);
}
$i = 1;
while ($i <= 2) {
if ($i == 1) {
$a = 1;
$b = 2;
$u1 = ${'uid1'};
$u2 = ${'uid2'};
} else {
$a = 2;
$b = 1;
$u1 = ${'uid2'};
$u2 = ${'uid1'};
}
//Расчет крита Атакующего (u1) по Цели (u2)
$j = 0;
$wp01 = 0;
$k01 = 0;
if ($rjd > 0) {
$j = $rjd - 1;
}
if (is_array($at[$a]['atack'])) {
while ($j < count($at[$a]['atack']) && $j <= 8) {
// КУДА БИЛ , ТИП УДАРА
if ($k01 == 0 && isset($this->stats[$this->uids[$u1]]['wp3id'])) {
//Левая рука
$wp01 = 3;
$k01 = 1;
} else {
//Правая рука
if (isset($this->stats[$this->uids[$u1]]['wp14id']) && $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp14id']]['type'] != 13) {
$wp01 = 14;
} else {
$wp01 = 3;
}
$k01 = 0;
}
$witm01 = 0;
$witm_type01 = 0;
$witm01 = $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp' . $wp01 . 'id']];
$witm_data01 = Conversion::dataStringToArray($witm01['data']);
if ($this->mfs(
1, [
'u1' => $u1,
'u2' => $u2,
'mf' => $this->stats[$this->uids[$u1]]['m1'] + $witm_data01['sv_m1'],
'amf' => $this->stats[$this->uids[$u1]]['m14'],
'smf' => $this->stats[$this->uids[$u2]]['m2'],
'aamf1' => (int)$this->stats[$this->uids[$u2]]['enemy_am1'],
], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level']
) == 1) {
//кританул, гад :)
if ($at[$a]['atack'][$j][1] == 3) {
//в блок
$at[$a]['atack'][$j][1] = 4; //Тут тест
} elseif ($at[$a]['atack'][$j][1] != 2 && $at[$a]['atack'][$j][1] != 6 && $at[$a]['atack'][$j][1] != 7 && $at[$a]['atack'][$j][1] != 8) {
//обычный крит
$at[$a]['atack'][$j][1] = 5;
} else {
$at[$a]['atack'][$j][1] = 1;
}
}
$j++;
}
}
$i++;
}
unset($witm01, $witm_type01, $k01, $wp01);
if (isset($pat) && $pat) {
$pat['p'] = $at;
$at = $pat;
}
return $at;
}
public function yhod_user($uid1, $uid2, $type)
{
// 1 - кто бьет . 2 - в кого бьют . тип
//Удал летит прямо в противника
if ($this->import_user == 0) {
$r = $uid1;
$rand_user = false;
if ($type == 2) {
//Случайный персонаж из своей команды (в том числе игрок)
$i = 0;
while ($i < count($this->users)) {
if ($this->users[$i]['team'] == $this->users[$this->uids[$uid2]]['team']) {
$rand_user[] = $this->users[$i]['id'];
}
$i++;
}
} elseif ($type == 4) {
//Случайный персонаж, любой
$i = 0;
while ($i < count($this->users)) {
//if( $this->users[$i]['team'] == $this->users[$this->uids[$uid1]]['team'] ) {
$rand_user[] = $this->users[$i]['id'];
//}
$i++;
}
} elseif ($type == 5) {
//Случайный персонаж, любой (кроме игрока)
$i = 0;
while ($i < count($this->users)) {
if ($this->users[$i]['team'] == $this->users[$this->uids[$uid2]]['team'] && $uid2 != $this->users[$i]['id']) {
$rand_user[] = $this->users[$i]['id'];
}
$i++;
}
} elseif ($type == 6) {
//Случайный персонаж из команды противника
$i = 0;
while ($i < count($this->users)) {
if ($this->users[$i]['team'] != $this->users[$this->uids[$uid2]]['team']) {
$rand_user[] = $this->users[$i]['id'];
}
$i++;
}
} elseif ($type > 100) {
//Удар идет в конкретного игрока
if (!isset($this->users[$this->uids[$type]]) || $this->users[$this->uids[$type]]['id'] != $type) {
$r = $uid2;
} else {
$r = $type;
}
}
if ($rand_user && count($rand_user) > 0) {
$r = $rand_user[rand(0, (count($rand_user) - 1))];
}
$this->import_user = $r;
} else {
$r = $this->import_user;
}
return $r;
}
public function mfs($type, $mf, $lvl1, $lvl2): int
{
$rval = 0;
switch ($type) {
case 1:
//Крит
if ($mf['amf'] < 0) {
$mf['amf'] = 0;
}
if ($mf['mf'] < 0) {
$mf['mf'] = 0;
}
if ($mf['mf'] > $mf['smf']) {
$rval = 100 - floor(((($mf['smf']) / ($mf['mf'] + 1)) * 100));
}
if ($rval < 1) {
$rval = 0;
}
if ($rval > 75) {
$rval = 75;
}
if ($mf['amf'] >= 1) {
if ($mf['amf'] > 100) {
$mf['amf'] = 100;
}
if (($mf['amf'] * 100) >= mt_rand(1, 10000)) {
$rval = 100;
}
}
break;
case 2:
if ($mf['mf'] < 0) {
$mf['mf'] = 0;
}
if ($mf['amf'] < 0) {
$mf['amf'] = 0;
}
if ($mf['smf'] < 0) {
$mf['smf'] = 0;
}
if ($mf['asmf'] < 0) {
$mf['asmf'] = 0;
}
if ($mf['mf'] > $mf['smf']) {
$rval = 100 - floor(((($mf['smf']) / ($mf['mf'] + 1)) * 100)); //2.5
}
if ($rval < 1) {
$rval = 0;
}
if ($rval > 75) {
$rval = 75;
}
if ($mf['asmf'] >= 0) {
if ($mf['asmf'] > 100) {
$mf['asmf'] = 100;
}
if ($mf['asmf'] >= rand(1, 100)) {
$rval = 0;
}
}
if ($mf['amf'] >= 0) {
if ($mf['amf'] > 100) {
$mf['amf'] = 100;
}
if ($mf['amf'] >= rand(1, 100)) {
$rval = 100;
}
}
break;
case 3:
if ($mf[1] < 1) {
$mf[1] = 1;
}
if ($mf[2] < 1) {
$mf[2] = 1;
}
$rval = $mf[1] - $mf[2] / 2;
if ($rval > 75) {
$rval = 75;
}
if ($rval < 1) {
$rval = 1;
}
break;
case 4:
$mf = round($mf * 0.6);
if ($mf < 1) {
$mf = 0;
}
if ($mf > 100) {
$mf = 100;
}
$rval = min($mf, 100); //пробой брони
break;
case 5:
if ($mf < 1) {
$mf = 0;
}
$rval = min($mf, 85); //блок щитом
break;
case 6:
//Контрудар
if ($mf['a'] > 0) {
if ($mf['b'] > 0) {
$rval = round($mf['a'] - ($mf['b'] / 2));
} else {
$rval = $mf['a'];
}
}
if ($rval < 1) {
$rval = 0;
}
if ($rval > 75) {
$rval = 75;
}
break;
}
return $this->get_chanse($rval) ? 1 : 0;
}
//Сохранение данные
public function mf3Razmen($id, $at, $v, $pat = false, $rjd = 0)
{
if ($pat) {
$pat = $at;
$at = $pat['p'];
} else {
unset($pat);
}
$uid1 = $this->atacks[$id]['uid1'];
$uid2 = $this->atacks[$id]['uid2'];
if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) {
$uid1 = $this->yhod_user(
$this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'],
$this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']
);
} elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) {
$uid2 = $this->yhod_user(
$this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'],
$this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']
);
}
$i = 1;
while ($i <= 2) {
if ($i == 1) {
$a = 1;
$b = 2;
$u1 = ${'uid1'};
$u2 = ${'uid2'};
} else {
$a = 2;
$b = 1;
$u1 = ${'uid2'};
$u2 = ${'uid1'};
}
//Расчет парирования Цели (u2) от Атакующего (u1)
$j = 0;
if ($rjd > 0) {
$j = $rjd - 1;
}
if (is_array($at[$a]['atack'])) {
while ($j < count($at[$a]['atack']) && $j < 8) {
// КУДА БИЛ , ТИП УДАРА
if ((!isset($this->stats[$this->uids[$u2]]['no_pr1']) || $this->stats[$this->uids[$u2]]['no_pr1'] == 0) && $at[$a]['atack'][$j][2] == $v) {
if ($this->mfs(
3, [
'u1' => $u1,
'u2' => $u2,
'1' => $this->stats[$this->uids[$u2]]['m7'],
'2' => $this->stats[$this->uids[$u1]]['m7'],
], $this->users[$this->uids[$u1]]['level'],
$this->users[$this->uids[$u2]]['level']
) == 1 && $this->atacks[$id]['out' . $b] == 0) {
//Парировал, гад :)
$this->stats[$this->uids[$u1]]['nopryh'] = floor(
0 + (int)$this->stats[$this->uids[$u1]]['nopryh']
);
if ((!isset($this->stats[$this->uids[$u1]]['nopryh']) || $this->stats[$this->uids[$u1]]['nopryh'] == 0) && $this->stats[$this->uids[$u1]]['nopryh_act'] < 1) {
$at[$a]['atack'][$j][1] = 6;
$this->stats[$this->uids[$u1]]['nopryh']--;
$this->stats[$this->uids[$u1]]['nopryh_act']++;
}
}
}
$j++;
}
}
$i++;
}
if (isset($pat) && $pat) {
$pat['p'] = $at;
$at = $pat;
}
return $at;
}
//Отображение НР
public function mf4Razmen($id, $at, $v, $pat = false, $rjd = 0)
{
if ($pat) {
$pat = $at;
$at = $pat['p'];
} else {
unset($pat);
}
$uid1 = $this->atacks[$id]['uid1'];
$uid2 = $this->atacks[$id]['uid2'];
if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) {
$uid1 = $this->yhod_user(
$this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'],
$this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']
);
} elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) {
$uid2 = $this->yhod_user(
$this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'],
$this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']
);
}
$i = 1;
while ($i <= 2) {
if ($i == 1) {
$a = 1;
$b = 2;
$u1 = ${'uid1'};
$u2 = ${'uid2'};
} else {
$a = 2;
$b = 1;
$u1 = ${'uid2'};
$u2 = ${'uid1'};
}
if ($this->stats[$this->uids[$u2]]['sheld1'] > 0) {
//Расчет блока щитом Цели (u2) от Атакующего (u1)
$j = 0;
while ($j < count($at[$a]['atack']) && $j < 8) {
// КУДА БИЛ , ТИП УДАРА
if ($at[$a]['atack'][$j][2] == $v) {
if ($this->mfs(
5,
($this->stats[$this->uids[$u2]]['m8'] / 2 + $this->stats[$this->uids[$u2]]['m18']),
$this->users[$this->uids[$u1]]['level'],
$this->users[$this->uids[$u2]]['level']
) == 1 && $this->atacks[$id]['out' . $b] == 0) {
//блокировал щитом, гад :)
$at[$a]['atack'][$j][1] = 7;
}
}
$j++;
}
}
$i++;
}
if (isset($pat) && $pat) {
$pat['p'] = $at;
$at = $pat;
}
return $at;
}
//Выводим лог боя
public function mf1Razmen($id, $at, $v, $pat = false, $rjd = 0)
{
global $u;
if ($pat) {
$pat = $at;
$at = $pat['p'];
} else {
unset($pat);
}
$uid1 = $this->atacks[$id]['uid1'];
$uid2 = $this->atacks[$id]['uid2'];
if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) {
$uid1 = $this->yhod_user(
$this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'],
$this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']
);
} elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) {
$uid2 = $this->yhod_user(
$this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'],
$this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']
);
}
$i = 1;
while ($i <= 2) {
if ($i == 1) {
$a = 1;
$b = 2;
$u1 = ${'uid1'};
$u2 = ${'uid2'};
} else {
$a = 2;
$b = 1;
$u1 = ${'uid2'};
$u2 = ${'uid1'};
}
//Расчет уворота Цели (u2) от Атакующего (u1)
$j = 0;
$wp01 = 3;
$k01 = 0;
if ($rjd > 0) {
$j = $rjd - 1;
}
if (is_array($at[$a]['atack'])) {
while ($j < count($at[$a]['atack']) && $j < 8) {
// КУДА БИЛ , ТИП УДАРА
if ($k01 == 0 && isset($this->stats[$this->uids[$u1]]['wp3id'])) {
//Левая рука
$wp01 = 3;
$k01 = 1;
} else {
//Правая рука
if (isset($this->stats[$this->uids[$u1]]['wp14id']) && $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp14id']]['type'] != 13) {
$wp01 = 14;
} else {
$wp01 = 3;
}
$k01 = 0;
}
$witm01 = 0;
$witm_type01 = 0;
$witm01 = $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp' . $wp01 . 'id']];
$witm_data01 = Conversion::dataStringToArray($witm01['data']);
if ($at[$a]['atack'][$j][2] == $v) {
$tyv = $this->mfs(
2, [
'u1' => $u1,
'u2' => $u2,
'mf' => $this->stats[$this->uids[$u2]]['m4'],
'amf' => (int)$this->stats[$this->uids[$u2]]['m15'],
'smf' => ($this->stats[$this->uids[$u1]]['m5'] + $witm_data01['sv_m5']),
'asmf' => $this->stats[$this->uids[$u1]]['m21'],
], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level']
);
if ($tyv == 1 && $this->atacks[$id]['out' . $b] == 0) {
//увернулся, гад :)
$this->stats[$this->uids[$u1]]['nopryh'] = floor(
0 + (int)$this->stats[$this->uids[$u1]]['nopryh']
);
if (!isset($this->stats[$this->uids[$u1]]['nopryh']) || $this->stats[$this->uids[$u1]]['nopryh'] <= 0) {
$at[$a]['atack'][$j][1] = 2;
} else {
$this->stats[$this->uids[$u1]]['nopryh']--;
$this->stats[$this->uids[$u1]]['nopryh_act']++;
}
}
}
$j++;
}
}
$i++;
}
unset($witm01, $witm_type01, $wp01, $k01);
if (isset($pat) && $pat) {
$pat['p'] = $at;
$at = $pat;
}
return $at;
}
//Новый лог Мой Лог
public function mf5Razmen($id, $at, $v, $rjd = 0)
{
global $u;
$uid1 = $this->atacks[$id]['uid1'];
$uid2 = $this->atacks[$id]['uid2'];
if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) {
$uid1 = $this->yhod_user(
$this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'],
$this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']
);
} elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) {
$uid2 = $this->yhod_user(
$this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'],
$this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']
);
}
$i = 1;
while ($i <= 2) {
if ($i == 1) {
$a = 1;
$b = 2;
$u1 = ${'uid1'};
$u2 = ${'uid2'};
} else {
$a = 2;
$b = 1;
$u1 = ${'uid2'};
$u2 = ${'uid1'};
}
//Расчет контрудара Цели (u2) по Атакующему (u1)
$j = 0;
if ($rjd > 0) {
$j = $rjd - 1;
}
while ($j < count($at[$a]['atack']) && $j < 8) {
// КУДА БИЛ , ТИП УДАРА
if ($at[$a]['atack'][$j][2] == $v) {
if ($at[$a]['atack'][$j][1] == 2) {
if ($this->mfs(
6, [
'u1' => $u1,
'u2' => $u2,
'a' => $this->stats[$this->uids[$u2]]['m6'],
'b' => $this->stats[$this->uids[$u1]]['m6'],
], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level']
) == 1) {
//контрудар, гад :)
$at[$a]['atack'][$j][1] = 8;
$rnd_a = rand(1, 5);
$rjd = count($at[$b]['atack']);
if (!$this->testRazmenblock1($id, $u2, $u1, $rnd_a)) {
$at[$b]['atack'][] = [$rnd_a, 1, 0, 1]; // 3 , 0 , 1
} else {
$at[$b]['atack'][] = [$rnd_a, 3, 0, 1]; // 3 , 0 , 1
}
$at = $this->contrRestart($id, $at, 1, $rjd);
}
}
}
$j++;
}
$i++;
}
return $at;
}
//======================
//Добавляем в лог
public function testRazmenblock1($id, $uid1, $uid2, $atack): bool
{
$r = false;
//Проверка блоков
$i = 1;
if ($uid1 == $this->atacks[$id]['uid1']) {
$j = $this->atacks[$id]['b2'];
} elseif ($uid2 == $this->atacks[$id]['uid1']) {
$j = $this->atacks[$id]['b1'];
}
if ($this->atacks[$id]['out2'] == 0) {
while ($i <= $this->stats[$this->uids[$uid2]]['zonb']) {
$block[$j] = 1;
$j++;
if ($j > 5 || $j < 1) {
$j = 1;
}
$i++;
}
}
//Проверка ударов
if ($atack > 0) {
$r = $block[$atack] == 1;
}
return $r;
}
///Комментатор
public function contrRestart($id, $at, $v, $rjd = 0)
{
//уворот
$at = $this->mf1Razmen($id, $at, $v, true, $rjd);
//парирование
$at = $this->mf3Razmen($id, $at, $v, true, $rjd);
//контрудар
//$at = $this->mf5Razmen($id,$at,$v,true,$rjd);
//блок щитом (если есть щит, конечно)
$at = $this->mf4Razmen($id, $at, $v, true, $rjd);
//Проверяем урон
//$at = $this->yronRazmen($id,$at);
//крит
$at = $this->mf2Razmen($id, $at, $v, true, $rjd);
$at = $this->yronRazmen($id, $at, true, $rjd);
return $at;
}
//Расчет типа удара от оружия
public function yronRazmen($id, $at, $pat = false, $rjd = 0)
{
if ($pat) {
$pat = $at;
$at = $pat['p'];
} else {
unset($pat);
}
$uid1 = $this->atacks[$id]['uid1'];
$uid2 = $this->atacks[$id]['uid2'];
if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) {
$yhod = [1 => 1, 2 => 0];
} elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) {
$yhod = [1 => 0, 2 => 1];
}
$i = 1;
while ($i <= 2) {
if ($i == 1) {
$a = 1;
$b = 2;
$u1 = ${'uid1'};
$u2 = ${'uid2'};
} else {
$a = 2;
$b = 1;
$u1 = ${'uid2'};
$u2 = ${'uid1'};
}
$j = 0;
$k = 0;
$wp = 3;
if ($rjd > 0) {
$j = $rjd - 1;
}
if (is_array($at[$a]['atack'])) {
while ($j < count($at[$a]['atack']) && $j < 8) {
if ($k == 0 && isset($this->stats[$this->uids[$u1]]['wp3id'])) {
//Левая рука
$wp = 3;
$k = 1;
} else {
//Правая рука
if (isset($this->stats[$this->uids[$u1]]['wp14id']) && $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp14id']]['type'] != 13) {
$wp = 14;
} else {
if (isset($this->stats[$this->uids[$u1]]['wp3id'])) {
$wp = 3;
} else {
//нет оружия
$wp = 3;
}
}
$k = 0;
}
$witm = $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp' . $wp . 'id']];
$witm_type = $this->weaponTx($witm);
$at[$a]['atack'][$j]['wt'] = $witm['type'];
$at[$a]['atack'][$j]['yhod'] = $yhod[$a];
if (!isset($at[$a]['atack'][$j]['yron']) && (
$at[$a]['atack'][$j][1] == 1 ||
$at[$a]['atack'][$j][1] == 4 ||
$at[$a]['atack'][$j][1] == 5)
) {
$at[$a]['atack'][$j]['yron'] = $this->yronGetrazmen(
$u1, $u2, $wp, $at[$a]['atack'][$j][0],
);
if ($at[$a]['atack'][$j][1] == 4) {
$at[$a]['atack'][$j]['yron']['y_old'] = $at[$a]['atack'][$j]['yron']['y'];
$at[$a]['atack'][$j]['yron']['y'] = round($at[$a]['atack'][$j]['yron']['k'] / 2);
} elseif ($at[$a]['atack'][$j][1] == 5) {
$at[$a]['atack'][$j]['yron']['y_old'] = $at[$a]['atack'][$j]['yron']['y'];
$at[$a]['atack'][$j]['yron']['y'] = $at[$a]['atack'][$j]['yron']['k'];
}
$at[$a]['atack'][$j]['yron']['2h'] = $witm['2h'];
$at[$a]['atack'][$j]['yron']['w'] = $wp;
if ($at[$a]['atack'][$j]['yron']['y'] < 1) {
$at[$a]['atack'][$j]['yron']['r'] = '--';
} else {
$at[$a]['atack'][$j]['yron']['r'] = '-' . $at[$a]['atack'][$j]['yron']['y'];
}
} else {
$at[$a]['atack'][$j]['block'] = $this->yronGetrazmen(
$u1, $u2, $wp, $at[$a]['atack'][$j][0],
$yhod[$b]
);
if ($at[$a]['atack'][$j][1] == 4) {
$at[$a]['atack'][$j]['block']['y_old'] = $at[$a]['atack'][$j]['block']['y'];
$at[$a]['atack'][$j]['block']['y'] = round($at[$a]['atack'][$j]['block']['k'] / 2);
} elseif ($at[$a]['atack'][$j][1] == 5) {
$at[$a]['atack'][$j]['block']['y_old'] = $at[$a]['atack'][$j]['block']['y'];
$at[$a]['atack'][$j]['block']['y'] = $at[$a]['atack'][$j]['block']['k'];
}
$at[$a]['atack'][$j]['block']['2h'] = $witm['2h'];
$at[$a]['atack'][$j]['block']['w'] = $wp;
if ($at[$a]['atack'][$j]['block']['y'] < 1) {
$at[$a]['atack'][$j]['block']['r'] = '--';
} else {
$at[$a]['atack'][$j]['block']['r'] = '-' . $at[$a]['atack'][$j]['block']['y'];
}
}
$j++;
}
}
$i++;
}
if (isset($pat) && $pat) {
$pat['p'] = $at;
$at = $pat;
}
return $at;
}
//Расчет урона от оружия
public function weaponTx($item)
{
global $u;
$tp = 0;
if (!isset($item['id'])) {
$i = 1;
while ($i <= 4) {
$itm['tya' . $i] = 1;
$i++;
}
}
$itm = Conversion::dataStringToArray($item['data']);
$t[0]['z'] = 0;
$t[0]['t'] = 0;
//колящий урон
$t[1]['z'] = round(0 + $itm['tya1']);
$t[1]['t'] = 1;
//рубящий урон
$t[2]['z'] = round(0 + $itm['tya2']);
$t[2]['t'] = 2;
//дробящий урон
$t[3]['z'] = round(0 + $itm['tya3']);
$t[3]['t'] = 3;
//режущий урон
$t[4]['z'] = round(0 + $itm['tya4']);
$t[4]['t'] = 4;
//урон огня
$t[5]['z'] = round(0 + $itm['tym1']);
$t[5]['t'] = 5;
//урон воздуха
$t[6]['z'] = round(0 + $itm['tym2']);
$t[6]['t'] = 6;
//урон воды
$t[7]['z'] = round(0 + $itm['tym3']);
$t[7]['t'] = 7;
//урон земли
$t[8]['z'] = round(0 + $itm['tym4']);
$t[8]['t'] = 8;
//урон света
$t[9]['z'] = round(0 + $itm['tym5']);
$t[9]['t'] = 9;
//урон тьмы
$t[10]['z'] = round(0 + $itm['tym6']);
$t[10]['t'] = 10;
//урон серой магией
$t[11]['z'] = round(0 + $itm['tym7']);
$t[11]['t'] = 11;
$tpt = $t[0]['z'];
$tpmin = $t[0];
$tpmax = $t[0];
$i = 1;
while ($i <= 11) {
if ($t[$i]['z'] > $tpt) {
$tpt = $t[$i]['z'];
$tpmax = $t[$i];
$ii = $i;
}
$i++;
}
$t[$ii]['z'] = 0;
$tpt = $t[0]['z'];
$i = 1;
while ($i <= 11) {
if ($t[$i]['z'] > $tpt) {
$tpt = $t[$i]['z'];
$tpmin = $t[$i];
}
$i++;
}
$setclass = rand(1, 100);
if ($setclass > $tpmax['z']) {
$tp = $tpmin['t'];
} else {
$tp = $tpmax['t'];
}
return $tp;
}
//Расчет урона от оружия
public function yronGetrazmen($uid1, $uid2, $wp, $zona): array
{
global $u;
$r = [
'y' => 0,
'r' => '--',
];
//Определяем тип урона
/*
Колющий
Рубящий
Режущий
Дробящий
*/
$witm = 0;
$witm_type = 0;
if ($wp > 0) {
$witm = $this->stats[$this->uids[$uid1]]['items'][$this->stats[$this->uids[$uid1]]['wp' . $wp . 'id']];
$witm_data = Conversion::dataStringToArray($witm['data']);
$witm_type = $this->weaponTx($witm);
}
if ($witm_type == 0 || $witm_type == 12) {
$witm_type2 = '';
} else {
$witm_type2 = $witm_type;
}
$r['t'] = $witm_type2;
//Расчет брони
/*
голова
грудь
живот
пояс
ноги
*/
$bron = [
1 => [$this->stats[$this->uids[$uid2]]['mib1'], $this->stats[$this->uids[$uid2]]['mab1']],
2 => [$this->stats[$this->uids[$uid2]]['mib2'], $this->stats[$this->uids[$uid2]]['mab2']],
3 => [$this->stats[$this->uids[$uid2]]['mib2'], $this->stats[$this->uids[$uid2]]['mab2']],
4 => [$this->stats[$this->uids[$uid2]]['mib3'], $this->stats[$this->uids[$uid2]]['mab3']],
5 => [$this->stats[$this->uids[$uid2]]['mib4'], $this->stats[$this->uids[$uid2]]['mab4']],
];
//
//Увеличиваем параметры от текущего оружия которым бьем
$iii = 1;
while ($iii <= 7) {
if (isset($witm_data['sv_a' . $iii]) && $witm_data['sv_a' . $iii] != 0) {
$this->stats[$this->uids[$uid1]]['a' . $iii] += $witm_data['sv_a' . $iii];
}
if (isset($witm_data['sv_mg' . $iii]) && $witm_data['sv_mg' . $iii] != 0) {
$this->stats[$this->uids[$uid1]]['mg' . $iii] += $witm_data['sv_mg' . $iii];
}
$iii++;
}
$iii = 1;
while ($iii <= 4) {
if (isset($witm_data['sv_aall']) && $witm_data['sv_aall'] != 0) {
$this->stats[$this->uids[$uid1]]['a' . $iii] += $witm_data['sv_aall'];
}
$iii++;
}
$iii = 1;
while ($iii <= 4) {
if (isset($witm_data['sv_mall']) && $witm_data['sv_mall'] != 0) {
$this->stats[$this->uids[$uid1]]['mg' . $iii] += $witm_data['sv_mall'];
}
$iii++;
}
$iii = 1;
while ($iii <= 7) {
if (isset($witm_data['sv_m2all']) && $witm_data['sv_m2all'] != 0) {
$this->stats[$this->uids[$uid1]]['mg' . $iii] += $witm_data['sv_m2all'];
}
$iii++;
}
if (isset($witm_data['sv_m3']) && $witm_data['sv_m3'] != 0) {
$this->stats[$this->uids[$uid1]]['m3'] += $witm_data['sv_m3'];
}
$iii = 1;
while ($iii <= 7) {
if (isset($witm_data['sv_pa' . $iii]) && $witm_data['sv_pa' . $iii] != 0) {
$this->stats[$this->uids[$uid1]]['pa' . $iii] += $witm_data['sv_pa' . $iii] + $witm_data['sv_m10'];
}
if (isset($witm_data['sv_pm' . $iii]) && $witm_data['sv_pm' . $iii] != 0) {
$this->stats[$this->uids[$uid1]]['pm' . $iii] += $witm_data['sv_pm' . $iii] + $witm_data['sv_m11a'];
if ($iii < 5) {
$this->stats[$this->uids[$uid1]]['pm' . $iii] += $witm_data['sv_m11'];
}
}
$iii++;
}
//
//мощность + подавление мощности противником
$wAp = 0;
$w3p = 0;
$w14p = 0;
if ($witm_type == 12) {
//удар кулаком
$wAp += $this->stats[$this->uids[$uid1]]['m10'];
if ($this->users[$this->uids[$uid1]]['align'] == 7) {
$wAp += 15;
}
} elseif ($witm_type < 5) {
$wAp += $this->stats[$this->uids[$uid1]]['pa' . $witm_type . '']/* + $this->stats[$this->uids[$uid1]]['m10'] + $witm_data['sv_pa'.$witm_type.'']*/
;
$wAp -= $this->stats[$this->uids[$uid2]]['antpa' . $witm_type . ''];
} else {
$wAp += $this->stats[$this->uids[$uid1]]['m10'] + $this->stats[$this->uids[$uid1]]['pm' . ($witm_type - 4) . ''] + $this->stats[$this->uids[$uid1]]['m11a'] + $witm_data['sv_pm' . ($witm_type - 4) . ''];
$wAp -= $this->stats[$this->uids[$uid2]]['antpm' . ($witm_type - 4) . ''];
}
//Владение данным оружием
$vladenie = 0;
//Пробой брони
$proboi = 0;
$witm_data['m9'] = $this->stats[$this->uids[$uid1]]['m9'];
if (rand(1, 100) < floor($witm_data['m9'] / 2)) {
$proboi = floor($witm_data['m9'] / 2);
$r['pb'] = 1;
}
$y = $this->yrn(
$this->stats[$this->uids[$uid1]],
$this->stats[$this->uids[$uid2]],
$this->users[$this->uids[$uid1]],
$this->users[$this->uids[$uid2]],
$this->users[$this->uids[$uid1]]['level'],
$this->users[$this->uids[$uid2]]['level'],
$witm_type,
$this->stats[$this->uids[$uid1]]['minAtack'], //мин. урон (добавочный)
$this->stats[$this->uids[$uid1]]['maxAtack'], //макс. урон
$bron[$zona][0], //броня мин.
$bron[$zona][1], //броня макс
$vladenie, //владения
(($wAp /*+ $w3p + $w14p*/)), //мощность урона
(round($this->stats[$this->uids[$uid1]]['m3'])), //мощность крита
(($this->stats[$this->uids[$uid2]]['za' . $witm_type2]) - $this->stats[$this->uids[$uid1]]['pza']),
//защита от урона
$this->stats[$this->uids[$uid1]]['ozash'], //подавление защиты
$proboi, //пробой брони
0, //хз
($witm_data['sv_yron_min'] + $this->stats[$this->uids[$uid1]]['yron_min']),
($witm_data['sv_yron_max'] + $this->stats[$this->uids[$uid1]]['yron_max']),
$this->stats[$this->uids[$uid2]]['zaproc'],
$this->stats[$this->uids[$uid2]]['zmproc'],
(($this->stats[$this->uids[$uid2]]['zm' . ($witm_type2 - 4)]) - round(
$this->stats[$this->uids[$uid1]]['pzm'] * 0.8
)),
//защита от урона
$this->stats[$this->uids[$uid1]]['omzash'], //подавление защиты
$witm['type'],
$witm
);
$r['y'] = round(rand($y['min'] + $proboi, $y['max'] + round($proboi / 2)));
$r['k'] = round(rand($y['Kmin'] + round($proboi / 4), $y['Kmax'] + round($proboi / 8)));
$r['m_y'] = $y['max'];
$r['m_k'] = $y['Kmax'];
$r['bRND'] = $y['bRND'];
$r['w_type'] = $witm_type;
//Если второе оружие - урон ниже на 50%
$wp1 = $this->stats[$this->uids[$uid1]]['items'][$this->stats[$this->uids[$uid1]]['wp3id']];
$wp2 = $this->stats[$this->uids[$uid1]]['items'][$this->stats[$this->uids[$uid1]]['wp14id']];
//тип от оружия
if ($witm['type'] == 18) {
$tp = 1;
} elseif ($witm['type'] == 19) {
$tp = 2;
} elseif ($witm['type'] == 20) {
$tp = 3;
} elseif ($witm['type'] == 21) {
$tp = 4;
} else {
$tp = 0;
}
if ($tp != $witm_type && $wp > 0) // ТУТ
{
(int)$r['y'] = round((int)$r['y'] / 3);
$r['r'] = round($r['r'] / 3);
$r['k'] = round($r['k'] / 3);
$r['m_k'] = round($r['m_k'] / 3);
$r['m_y'] = round($r['m_y'] / 3);
}
if (isset($this->stats[$this->uids[$uid2]]['zaproc'])) {
$r['y'] = round($r['y'] - $r['y'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100);
(int)$r['r'] = round((int)$r['r'] - (int)$r['r'] * (int)$this->stats[$this->uids[$uid2]]['zaproc'] / 100);
$r['k'] = round($r['k'] - $r['k'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100);
$r['m_k'] = round($r['m_k'] - $r['m_k'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100);
$r['m_y'] = round($r['m_y'] - $r['m_y'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100);
if ($r['k'] < 1) {
$r['k'] = 2;
}
}
if ($r['y'] < 1) {
$r['y'] = 1;
}
if ($r['r'] >= 0) {
$r['r'] = -1;
}
if ($r['k'] < 1) {
$r['k'] = 1;
}
if ($r['m_k'] < 1) {
$r['m_k'] = 1;
}
if ($r['m_y'] < 1) {
$r['m_y'] = 1;
}
return $r;
}
//Расчет защиты
public function yrn(
$st1,
$st2,
$u1,
$u2,
$level,
$level2 = null,
$type,
$min_yron,
$max_yron,
$min_bron = null,
$max_bron = null,
$vladenie,
$power_yron,
$power_krit,
$zashita,
$ozashita = null,
$proboi,
$weapom_damage,
$weapom_min,
$weapom_max,
$za_proc = null,
$zm_proc = null,
$zashitam = null, // pzm тут!
$ozashitam = null,
$wp_type,
$witm
): array
{
global $u;
//Поправка
if ($zashita < 1) {
$zashita = 1;
}
if ($min_yron < 1) {
$min_yron = 1;
}
if ($max_yron < 1) {
$max_yron = 1;
}
if (!isset($type) || $type == '') {
$type = 12;
}
//Параметры для возврвата
$r = ['min' => 0, 'max' => 0, 'type' => $type];
$p = [
'Y' => 0,
'B' => [0 => 0, 1 => 0, 'rnd' => false],
'L' => $level,
'W' => [$weapom_min, $weapom_max, 'rnd' => false], //минимальный урон //максимальный урон добавочный
'U' => $vladenie, //владение оружием
'M' => $power_yron, //мощность урона
'K' => $power_krit, //мощность крита
'S' => 0, //влияние статов на проф.урон
'T' => 1, //Кф. оружия
'iT' => 1, //Итоговый доп. Кф. оружия
/*
(S) - влияние наших статов на профильный урон
Колющий: S = Сила * 0,3 + Ловкость * 0,7
Рубящий: S = Сила * 0,5 + Ловкость * 0,25 + Интуиция * 0,25
Дробящий: S = Сила * 1
Режущий: S = Сила * 0,3 + Интуиция * 0,7
*/
];
$witmdata = Helper\Conversion::dataStringToArray($witm['data']);
//Расчет типа урона
if ($wp_type == 18) {
$r['type'] = 1;
} elseif ($wp_type == 19) {
$r['type'] = 2;
} elseif ($wp_type == 20) {
$r['type'] = 3;
} elseif ($wp_type == 21) {
$r['type'] = 4;
} else {
$r['type'] = 0;
}
//ТУТ Профильный урон
//колющий
if ($r['type'] == 1) {
$p['S'] = $st1['s1'] * 0.25 + $st1['s2'] * 0.75;
$p['U'] = $st1['a1'] * 1.00; //кинжалы
//рубящий
} elseif ($r['type'] == 2) {
$p['S'] = $st1['s1'] * 1.20;
$p['U'] = $st1['a2'] * 1.00; //топоры
//дробящий
} elseif ($r['type'] == 3) {
$p['S'] = $st1['s1'] * 0.5 + $st1['s4'] * 1.00;
$p['U'] = $st1['a3'] * 1.00; //дубины
//режущий
} elseif ($r['type'] == 4) {
$p['S'] = $st1['s3'] * 1.00;
$p['U'] = $st1['a4'] * 1.00; //мечи
//Магиечески
} else {
$p['S'] = 0;
$p['U'] = 0; // для кулака(нужно переписывать
}
$r['bron']['rnd'] = rand($r['bron'][0], $r['bron'][1]);
//Остальные расчеты (коэфицент)
$p['B'][0] = 2 + $level + $st1['s1'] - round($st1['s1'] / 5);
$p['B'][1] = $p['B'][0] + 3;
$p['B']['rnd'] = rand($p['B'][0], $p['B'][1]);
$p['W']['rnd'] = rand($p['W'][0], $p['W'][1]);
//Обычный урон
if ($r['type'] == 12) {
$r['min'] = ($p['B'][0] + $weapom_min) * $p['T'] * (1 + $p['M'] / 100);
$r['max'] = ($p['B'][1] + $weapom_max) * $p['T'] * (1 + $p['M'] / 100);
} else {
$r['min'] = (($p['B'][0] + $p['S'] * 2 + $weapom_min * 2 + $p['U'] * 2) * $p['T']) * (1 + $p['M'] / 100);
$r['max'] = (($p['B'][1] + $p['S'] * 2 + $weapom_max * 2 + $p['U'] * 2) * $p['T']) * (1 + $p['M'] / 100);
}
$r['bRND'] = $p['B']['rnd'];
$r['Kmin'] = ceil((2 + (0 + $p['K'] / 100)) * $r['min']);
$r['Kmax'] = ceil((2 + (0 + $p['K'] / 100)) * $r['max']);
//Расчет брони
//для обычного
if ($r['type'] < 5 || $r['type'] == 12) {
$r['min_abron'] = round($r['min'] * 0.05);
$r['max_abron'] = round($r['max'] * 0.05);
if ($proboi != 0) {
$r['bron']['rndold'] = $r['bron']['rnd'];
$r['bron']['rnd'] = 0;
}
$r['Kmin'] -= $r['bron']['rnd'] * 2; //было умножить на 2
$r['Kmax'] -= $r['bron']['rnd'] * 2; //было умножить на 2
$r['min'] -= $r['bron']['rnd']; //не было деления ни на чо.
$r['max'] -= $r['bron']['rnd']; //не было деления ни на чо.
}
//Расчет защиты (не более 80%)
if ($r['type'] < 5 || $r['type'] == 12) {
$r['min'] = round($r['min'] / 100 * (100 - $this->zago($st2['za'])));
$r['max'] = round($r['max'] / 100 * (100 - $this->zago($st2['za'])));
$r['Kmin'] = round($r['Kmin'] / 100 * (100 - $this->zago($st2['za'])));
$r['Kmax'] = round($r['Kmax'] / 100 * (100 - $this->zago($st2['za'])));
} else {
$r['min'] = round($r['min'] / 100 * (100 - $this->zmgo($st2['zm'])));
$r['max'] = round($r['max'] / 100 * (100 - $this->zmgo($st2['zm'])));
$r['Kmin'] = round($r['Kmin'] / 100 * (100 - $this->zmgo($st2['zm'])));
$r['Kmax'] = round($r['Kmax'] / 100 * (100 - $this->zmgo($st2['zm'])));
}
$r['min'] = round($r['min']);
$r['max'] = round($r['max']);
$r['Kmin'] = round($r['Kmin']);
$r['Kmax'] = round($r['Kmax']);
$min_yrn = 0; //%
if ($u1['clone'] > 0) {
$min_yrn = 75;
}
$r['min'] -= floor($r['min'] / 100 * $min_yrn);
$r['max'] -= floor($r['max'] / 100 * $min_yrn);
$r['Kmin'] -= floor($r['Kmin'] / 100 * ($min_yrn));
$r['Kmax'] -= floor($r['Kmax'] / 100 * ($min_yrn));
$r['min_'] -= floor($r['min_'] / 100 * $min_yrn);
$r['max_'] -= floor($r['max_'] / 100 * $min_yrn);
$r['Kmin_'] -= floor($r['Kmin_'] / 100 * ($min_yrn));
$r['Kmax_'] -= floor($r['Kmax_'] / 100 * ($min_yrn));
$defd = mysql_fetch_array(
mysql_query(
'SELECT SUM(`vals`) FROM `battle_actions` WHERE `btl` = "' . $this->info['id'] . '" AND `vars` = "use_defteam' . $u2['team'] . '" LIMIT 1'
)
);
if ($defd[0] > 100) {
$defd[0] = 100;
}
$defd = 0 + $defd[0];
$powd = mysql_fetch_array(
mysql_query(
'SELECT SUM(`vals`) FROM `battle_actions` WHERE `btl` = "' . $this->info['id'] . '" AND `vars` = "use_powteam' . $u1['team'] . '" LIMIT 1'
)
);
if ($powd[0] > 100) {
$powd[0] = 100;
}
$powd = 0 + $powd[0];
$defd = $defd - $powd;
$r['min'] -= floor($defd);
$r['max'] -= floor($defd);
$r['Kmin'] -= floor($defd * 2);
$r['Kmax'] -= floor($defd * 2);
$r['min_'] -= floor($defd);
$r['max_'] -= floor($defd);
$r['Kmin_'] -= floor($defd * 2);
$r['Kmax_'] -= floor($defd * 2);
$r['min'] += $st1['maxAtack'];
$r['max'] += $st1['maxAtack'];
$r['Kmin'] += $st1['maxAtack'] * 2;
$r['Kmin'] += $st1['maxAtack'] * 2;
if ($r['min'] < 1) {
$r['min'] = 1;
}
if ($r['max'] < 1) {
$r['max'] = 1;
}
if ($r['Kmin'] < 2) {
$r['Kmin'] = 2;
}
if ($r['Kmax'] < 2) {
$r['Kmax'] = 2;
}
if ($r['Kmin_'] < 2) {
$r['Kmin_'] = 2;
}
if ($r['Kmin_'] < 2) {
$r['Kmax_'] = 2;
}
$r['m_k'] = $r['Kmax'];
return $r;
}
//Расчет защиты (магия)
public function zago($v): float
{
if ($v > 1700) {
$v = 1700;
}
return round((1 - (pow(0.5, ($v / 399.51)))) * 100, 2);
}
public function zmgo($v)
{
return (1 - (pow(0.5, ($v / 250)))) * 100;
}
public function priemsTestRazmen($id, $at)
{
$uid1 = $this->atacks[$id]['uid1'];
$uid2 = $this->atacks[$id]['uid2'];
$i = 1;
while ($i <= 2) {
if ($i == 1) {
$a = 1;
$b = 2;
$u1 = ${'uid1'};
$u2 = ${'uid2'};
} else {
$a = 2;
$b = 1;
$u1 = ${'uid2'};
$u2 = ${'uid1'};
}
if (!isset($at['p']['p_cast'])) {
$at['p'] = $at;
$at['p']['p_cast'] = true;
}
//ставка
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 220 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 237
|| $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 286 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 287 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 288
|| $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 213) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_used_this = $u1;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u1, $j);
unset(${'fx_priem'});
}
}
$j++;
}
//Приемы ухода от удара
if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) {
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 1) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_used_this = $u1;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u1, $j);
unset(${'fx_priem'});
$this->stats[$this->uids[$u2]]['nopryh']--;
}
}
$j++;
}
}
//Приемы крита
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 2) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_used_this = $u1;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u1, $j);
unset(${'fx_priem'});
}
}
$j++;
}
//Приемы атаки
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 3) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_used_this = $u1;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
if (isset($fx_priem)) {
$at = $fx_priem($id, $at, $u1, $j);
}
unset(${'fx_priem'});
}
}
$j++;
}
//Приемы защиты
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 4) {
if (!$this->testPriemVarTrueZash(
$i, 3, $this->stats[$this->uids[$u1]]['u_priem'][$j][1], $a, $b,
$u1, $u2
)) {
} elseif (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_used_this = $u1;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
if (isset($fx_priem)) {
$at = $fx_priem($id, $at, $u1, $j);
}
unset(${'fx_priem'});
}
}
$j++;
}
//Прочие приемы
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_used_this = $u1;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
if (isset($fx_priem)) {
$at = $fx_priem($id, $at, $u1, $j);
}
unset(${'fx_priem'});
}
}
$j++;
}
$i++;
}
$i = 1;
while ($i <= 2) {
if ($i == 1) {
$a = 1;
$b = 2;
$u1 = ${'uid1'};
$u2 = ${'uid2'};
} else {
$a = 2;
$b = 1;
$u1 = ${'uid2'};
$u2 = ${'uid1'};
}
if (!isset($at['p']['p_cast'])) {
$at['p'] = $at;
$at['p']['p_cast'] = true;
}
//Прочие приемы
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 8) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_used_this = $u1;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u1, $j);
unset(${'fx_priem'});
}
}
$j++;
}
//Прочие приемы
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 9) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_used_this = $u1;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u1, $j);
unset(${'fx_priem'});
}
}
$j++;
}
$i++;
}
return $at;
}
public function priemsRestartRazmen($id, $at)
{
if (isset($at['p'])) {
//Проверка
$uid1 = $this->atacks[$id]['uid1'];
$uid2 = $this->atacks[$id]['uid2'];
/*
Если возникнут проблемы с приемами, придется переписать алгоритм, сейчас он выглядит так:
Цикл 1. Проверяем пользователя
Цикл 2 внутри Цикла 1. Проверяем приемы поторые пользователь использовал
Придется сделать:
Цикл 1. Проверяем пользователя
Цикл 2 внутри Цикла 1. Проверяем приемы уворота
Цикл 3. Проверяем пользователя
Цикл 4 внутри Цикла 3. Проверяем приемы крита
и т.д.
*/
$i = 1;
while ($i <= 2) {
if ($i == 1) {
$a = 1;
$b = 2;
$u1 = ${'uid1'};
$u2 = ${'uid2'};
} else {
$a = 2;
$b = 1;
$u1 = ${'uid2'};
$u2 = ${'uid1'};
}
if (!isset($at['p']['p_cast'])) {
$at['p'] = $at;
$at['p']['p_cast'] = true;
}
//Приемы ухода от удара
if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) {
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 1) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_tested_this = $u1;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u1, $j);
unset(${'fx_priem'});
$this->stats[$this->uids[$u2]]['nopryh']--;
}
}
$j++;
}
}
//Приемы крита
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 2) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_tested_this = $u1;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u1, $j);
unset(${'fx_priem'});
}
}
$j++;
}
//Приемы защиты
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 4) {
if ($this->testPriemVarTrueZash(
$i, 4, $this->stats[$this->uids[$u1]]['u_priem'][$j][1], $a, $b,
$u1, $u2
) == false) {
} elseif (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_tested_this = $u1;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u1, $j);
unset(${'fx_priem'});
}
}
$j++;
}
//Приемы атаки
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 3) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_tested_this = $u1;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u1, $j);
unset(${'fx_priem'});
}
}
$j++;
}
//Прочие приемы
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_tested_this = $u1;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u1, $j);
unset(${'fx_priem'});
}
}
$j++;
}
//Прочие приемы
$j = 0;
while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 8) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'
)) {
$pr_tested_this = $u2;
require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u2, $j);
unset(${'fx_priem'});
}
}
$j++;
}
//Прочие приемы
$j = 0;
while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 9) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'
)) {
$pr_tested_this = $u2;
require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u2, $j);
unset(${'fx_priem'});
}
}
$j++;
}
$i++;
}
$at = $at['p'];
unset($at['p']);
}
return $at;
}
public function testPogB($uid, $yr, $pliid, $test = 0)
{
$yr2 = $yr;
$checktuman = mysql_fetch_array(
mysql_query(
'SELECT * FROM `eff_users` WHERE `uid` = "' . $uid . '"
AND (`v2` = 273 OR `v2` = 286 OR `v2` = 287 OR `v2` = 288)
AND `delete` =0 LIMIT 1'
)
); //проверка на туманный образ
if ($yr > 0 && !isset($checktuman['id'])) {
$testmana = false;
global $u, $priem;
$i = 0;
$ypg22 = 0;
while ($i < count($this->stats[$this->uids[$uid]]['set_pog2'])) {
$j = $this->stats[$this->uids[$uid]]['set_pog2'][$i];
if ($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['id'] == $pliid || $test == 1) {
$this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] = str_replace(
'add_pog2=' . $j['y'],
'add_pog2=$', $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']
);
$dt3 = Conversion::dataStringToArray($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']);
$dt30 = 0;
$dt30 = floor($j['y'] / $yr2 * 100);
if ($dt30 < $dt3['add_pog2p']) {
$dt3['add_pog2p'] = $dt30;
}
unset($dt30);
if (isset($dt3['add_pog2mp'])) {
if ((round(
round($yr2 / 100 * (100 - $dt3['add_pog2p'])) * $dt3['add_pog2mp']
)) > $this->stats[$this->uids[$uid]]['mpNow']) {
//не хватило маны, считаем сколько хватит % от поглощенного урона
$j['yhj'] = $this->stats[$this->uids[$uid]]['mpNow'] / (round(
round($yr2 / 100 * (100 - $dt3['add_pog2p'])) * $dt3['add_pog2mp']
)) * 100;
$j['yhj'] = floor($j['yhj']); //Сколько % мы можем поглотить
$dt3['add_pog2p'] = floor($dt3['add_pog2p'] / 100 * $j['yhj']);
}
if ($test == 1) {
$priem->minMana($uid, round(round($yr2 / 100 * $dt3['add_pog2p']) * $dt3['add_pog2mp']));
}
}
if (!isset($this->poglast[$uid])) {
$this->poglast[$uid] = 0;
}
$this->poglast[$uid] += $yr2;
if ($test == 1) {
//$j['y'] -= $this->poglast[$uid]; // осталось для поглощения
$j['y'] -= round($this->poglast[$uid] / 100 * $dt3['add_pog2p']);
$priem->minMana(
$uid,
round(round($this->poglast[$uid] / 100 * $dt3['add_pog2p']) * $dt3['add_pog2mp'])
);
}
if (isset($dt3['add_pog2p'])) {
$yr2 = round($yr2 / 100 * (100 - $dt3['add_pog2p']));
}
if ($j['y'] < 0 || ($this->stats[$this->uids[$uid]]['mpNow'] <= 0 && $dt3['add_pog2mp'] > 0)) {
$dt2 = Conversion::dataStringToArray($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']);
if (isset($dt2['endPog']) && $dt2['endPog'] == 1) {
//удаляем прием
//Добавляем в лог
$this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['priem'] = mysql_fetch_array(
mysql_query(
'SELECT * FROM `priems` WHERE `id` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['v2'] . '" LIMIT 1'
)
);
$this->delPriem(
$this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1],
$this->users[$this->uids[$uid]], 4, $uid
);
$this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1] = 'delete';
}
unset($dt2);
$j['y'] = 0;
}
$this->stats[$this->uids[$uid]]['set_pog'][$i]['y'] = $j['y'];
if (isset($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'])) {
$this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] = str_replace(
'add_pog2=$',
'add_pog2=' . $j['y'], $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']
);
$upd = mysql_query(
'UPDATE `eff_users` SET `data` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] . '" WHERE `id` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['id'] . '" LIMIT 1'
);
}
if ($j['y'] - $this->poglast[$uid] + $yr2 < 0) {
$yr -= $yr + ($j['y'] - $this->poglast[$uid] + $yr2);
$yr2 = $yr;
$i = count($this->stats[$this->uids[$uid]]['set_pog2']) + 1;
}
}
$i++;
}
}
unset($checktuman);
return $yr2;
}
//Расчет мф. (новая)
public function updateHealth($id, $at): array
{
$uid1 = $this->atacks[$id]['uid1'];
$uid2 = $this->atacks[$id]['uid2'];
if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) {
$uid1 = $this->yhod_user(
$this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'],
$this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']
);
} elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) {
$uid2 = $this->yhod_user(
$this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'],
$this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']
);
}
$i = 1;
while ($i <= 2) {
if ($i == 1) {
$a = 1;
$b = 2;
$u1 = ${'uid1'};
$u2 = ${'uid2'};
} else {
$a = 2;
$b = 1;
$u1 = ${'uid2'};
$u2 = ${'uid1'};
}
//Рассчет дополнительных тактик
if ($this->atacks[$id]['out' . $b] > 0) {
//Игрок ${'u'.$a} получает тактики, возможно
if (rand(0, 100) < min(floor($this->stats[$this->uids[$u1]]['m6'] / 5), 20)) {
//выдаем тактику контрудара
if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) {
$this->users[$this->uids[$u1]]['tactic3']++;
}
}
if (rand(0, 100) < min(floor($this->stats[$this->uids[$u1]]['m8'] / 4), 20)) {
//выдаем тактику щита
if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) {
$this->users[$this->uids[$u1]]['tactic4']++;
}
}
}
//Расчет удара Цели (u2) по Атакующему (u1)
$j = 0;
$k = 0;
$wp = 3;
while ($j < count($at[$a]['atack']) && $j < 8) {
//Добавляем тактики
if ($at[$a]['atack'][$j][1] == 1) {
//u1 ударил обычным ударом u2
if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) {
$this->users[$this->uids[$u1]]['tactic1']++;
}
//Двуручка
if ($at[$a]['atack'][$j]['yron']['2h'] == 1 && $this->stats[$this->uids[$u2]]['this_animal'] == 0) {
$this->users[$this->uids[$u1]]['tactic1'] += 2;
}
} elseif ($at[$a]['atack'][$j][1] != 2) {
if ($at[$a]['atack'][$j][1] == 3) {
//u2 заблокировал удар u1
if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) {
$this->users[$this->uids[$u2]]['tactic4']++;
}
} elseif ($at[$a]['atack'][$j][1] == 4) {
//u1 пробил блок u2 критом
if (!isset($at[$a]['atack'][$j]['notactic2'])) {
if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) {
$this->users[$this->uids[$u1]]['tactic2']++;
}
}
$this->users[$this->uids[$u2]]['tactic4']++; //тактика за пробив блок
} elseif ($at[$a]['atack'][$j][1] == 5) {
//u1 ударил критическим ударом u2
if (!isset($at[$a]['atack'][$j]['notactic2'])) {
if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) {
$this->users[$this->uids[$u1]]['tactic2'] += 2;
}
//Двуручка
if ($at[$a]['atack'][$j]['yron']['2h'] == 1 && $this->stats[$this->uids[$u2]]['this_animal'] == 0) {
$this->users[$this->uids[$u1]]['tactic2'] += 1;
}
}
} elseif ($at[$a]['atack'][$j][1] == 6) {
//u2 парировал удар u1
if (!isset($at[$a]['atack'][$j]['notactic5']) && $this->stats[$this->uids[$u1]]['this_animal'] == 0) {
$this->users[$this->uids[$u2]]['tactic5']++;
}
} elseif ($at[$a]['atack'][$j][1] == 7) {
//u2 блокировал щитом удар u1 //ТУТ ЩИТ
if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) {
$this->users[$this->uids[$u2]]['tactic4']++;
}
} elseif ($at[$a]['atack'][$j][1] == 8) {
//u2 увернулся от удара u1 и нанес по нему контрудар
if ($this->stats[$this->uids[$u1]]['this_animal'] == 0) {
$this->users[$this->uids[$u2]]['tactic3']++;
}
}
}
// КУДА БИЛ , ТИП УДАРА
if (isset($at[$a]['atack'][$j]['yron']) && (
$at[$a]['atack'][$j][1] == 1 ||
$at[$a]['atack'][$j][1] == 4 ||
$at[$a]['atack'][$j][1] == 5)) {
//
if ($this->stats[$this->uids[$u2]]['hpNow'] <= $at[$a]['atack'][$j]['yron']['y']) {
$at[$a]['atack'][$j]['yron']['y'] = $this->stats[$this->uids[$u2]]['hpNow'];
}
if ($this->stats[$this->uids[$u2]]['hpNow'] <= $at[$a]['atack'][$j]['yron']['k']) {
$at[$a]['atack'][$j]['yron']['k'] = $this->stats[$this->uids[$u2]]['hpNow'];
}
if ($at[$a]['atack'][$j]['yron']['y'] < 0) {
$at[$a]['atack'][$j]['yron']['y'] = 1;
$at[$a]['atack'][$j]['yron']['r'] = -1;
$at[$a]['atack'][$j]['yron']['k'] = 1;
}
if ($this->stats[$this->uids[$u2]]['hpNow'] < 1) {
$at[$a]['atack'][$j]['yron']['y'] = 0;
$at[$a]['atack'][$j]['yron']['r'] = -1;
$at[$a]['atack'][$j]['yron']['k'] = 0;
}
//Добавляем нанесенный урон и опыт
$this->takeExp($u1, $at[$a]['atack'][$j]['yron']['y'], $u1, $u2);
//Отнимаем НР
$this->stats[$this->uids[$u2]]['hpNow'] -= $at[$a]['atack'][$j]['yron']['y'];
$this->users[$this->uids[$u2]]['last_hp'] = -$at[$a]['atack'][$j]['yron']['y'];
$at[$a]['atack'][$j]['yron']['hp'] = $this->stats[$this->uids[$u2]]['hpNow'];
if ($at[$a]['atack'][$j]['yron']['hp'] < 1) {
$at[$a]['atack'][$j]['yron']['hp'] = 0;
}
$at[$a]['atack'][$j]['yron']['hpAll'] = $this->stats[$this->uids[$u2]]['hpAll'];
if ($at[$a]['atack'][$j]['yron']['hp'] > $at[$a]['atack'][$j]['yron']['hpAll']) {
$at[$a]['atack'][$j]['yron']['hp'] = $at[$a]['atack'][$j]['yron']['hpAll'];
}
//Травмирование
if (rand(0, 100) <= 50) {
if ($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5) {
if (!isset($at[$a]['atack'][$j]['yron']['travma']) && rand(
0,
1000
) < 500 && $this->users[$this->uids[$u2]]['level'] > 1 && $this->stats[$this->uids[$u1]] > 1) {
$trvm_chns = floor(rand(0, 200) / 10);
if ($trvm_chns > 3 || $trvm_chns < 1) {
$trvm_chns = 0;
}
$at[$a]['atack'][$j]['yron']['travma'] = [$trvm_chns, 'Обыкновенная травма'];
unset($trvm_chns);
}
}
}
}
$j++;
}
$i++;
}
return $at;
}
//Расчет МФ
/**
* Добавляем опыт \ нанесенный урон.
* Кривовсрато, на переделку.
* @param $id
* @param $y
* @param $id1
* @param $id2
* @param $mgregen
* @param $nobattle_uron
* @return void
*/
public function takeExp($id, $y, $id1, $id2, $mgregen = false, $nobattle_uron = false)
{
global $u;
if (isset($this->users[$this->uids[$id]])) {
$s1 = $this->stats[$this->uids[$id1]];
$s2 = $this->stats[$this->uids[$id2]];
if ($id1 != $id2) {
$e = $this->testExp($y, $s2);
} else {
$e = 0;
}
if ((int)$this->users[$this->uids[$id1]]['bot_id'] == 0 && $this->users[$this->uids[$id1]]['dnow'] != 0 && $this->info['dungeon'] != 1) {
$dun_limitForLevel = [ // Максимум для каждого уровня.
4 => 750,
5 => 1500,
6 => 3500,
7 => 8000,
8 => 25000,
9 => 50000,
10 => 75000,
11 => 125000,
12 => 250000,
13 => 500000,
14 => 750000,
];
$dun_expFactor = [ // Максимум для каждого уровня.
4 => 5,
5 => 5,
6 => 5,
7 => 5,
8 => 5,
9 => 3,
10 => 1,
11 => 1,
12 => 1,
13 => 1,
14 => 1,
];
if (isset($dun_expFactor[(int)$this->users[$this->uids[$id1]]['level']])) {
$e = $e * $dun_expFactor[(int)$this->users[$this->uids[$id1]]['level']];
}
if ($this->info['dungeon'] > 1 && $this->users[$this->uids[$id1]]['battle'] > 0) { // пещерный лимит
$dun_exp = []; // Текущий лимит опыта игрока в подземельях.
$rep = Db::getValue(
'select dungeonexp from rep where id = ?', [$this->users[$this->uids[$id1]]['id']]
);
$rep = explode(',', $rep);
foreach ($rep as $key => $val) {
$val = explode('=', $val);
if (isset($val[0]) && isset($val[1]) && $val[0] != '' && $val[1] != 0) {
$dun_exp[(int)$val[0]] = (int)$val[1];
} // текущий лимит опыта в подземке
}
unset($rep);
if (!isset($dun_exp[$this->info['dungeon']])) {
$dun_exp[$this->info['dungeon']] = 0;
}
if (!isset($dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']])) { // Если лимит не задан, опыт не даем.
$e = 0;
} elseif (
isset($dun_exp[$this->info['dungeon']]) &&
$dun_exp[$this->info['dungeon']] >= $dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']]
) { // Если лимит уже достигнут, опыт не даем.
$e = 0;
} elseif (
isset($dun_exp[$this->info['dungeon']]) &&
$dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']] > $dun_exp[$this->info['dungeon']]
) { // Если текущая репутация не достигла лимита.
if (($dun_exp[$this->info['dungeon']] + $e) > $dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']]) {
// Если опыта набрано достаточно, для достижения лимита.
$e = abs(
$e - abs(
$dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']] - ($e + $dun_exp[$this->info['dungeon']])
)
);
$dun_exp[$this->info['dungeon']] += $e;
} elseif ($dun_limitForLevel[(int)$this->users[$this->uids[$id1]]['level']] > ($dun_exp[$this->info['dungeon']] + $e)) {
// Если опыта недостаточно, для достижения лимита.
$dun_exp[$this->info['dungeon']] += $e;
} else {
$e = 0;
}
} else { // В любой непонятной ситуцаии.
$e = 0;
}
}
// Опыт в пещерах.
if ($this->info['dungeon'] == 102) {
$e = floor($e * 0.002);
}
}
$this->users[$this->uids[$id1]]['battle_exp'] += floor($e);
if (!$mgregen && !$nobattle_uron) {
$this->users[$this->uids[$id1]]['battle_yron'] += floor($y);
if ($this->stats[$this->uids[$id1]]['notactic'] != 1) {
if ($s2['hpAll'] <= 1000) {
if ($this->stats[$this->uids[$id2]]['this_animal'] == 0) {
$this->users[$this->uids[$id1]]['tactic6'] += round(
0.1 * (floor($y) / $s2['hpAll'] * 100),
10
);
} else {
$this->users[$this->uids[$id1]]['tactic6'] += round(
0.1 * (floor($y) / $s2['hpAll'] * 100),
10
) / 3;
}
} else {
if ($this->stats[$this->uids[$id2]]['this_animal'] == 0) {
$this->users[$this->uids[$id1]]['tactic6'] += round(0.1 * (floor($y) / 1000 * 100), 10);
} else {
$this->users[$this->uids[$id1]]['tactic6'] += round(0.1 * (floor($y) / 1000 * 100), 10) / 3;
}
}
}
}
Db::sql(
'update stats set last_hp = ?, tactic6 = ?, battle_yron = ?, battle_exp = ? where id = ?', [
$this->users[$this->uids[$id1]]['last_hp'],
$this->users[$this->uids[$id1]]['tactic6'],
$this->users[$this->uids[$id1]]['battle_yron'],
$this->users[$this->uids[$id1]]['battle_exp'],
(int)$id1,
]
);
$this->stats[$this->uids[$id1]]['battle_exp'] = $this->users[$this->uids[$id1]]['battle_exp'];
$this->clearСache($id1);
$this->stats[$this->uids[$id1]]['tactic6'] = $this->users[$this->uids[$id1]]['tactic6'];
if ($id1 == $u->info['id']) {
$u->info['tactic6'] = $this->users[$this->uids[$id1]]['tactic6'];
$u->stats['tactic6'] = $this->users[$this->uids[$id1]]['tactic6'];
$u->info['battle_exp'] = $this->users[$this->uids[$id1]]['battle_exp'];
$u->info['battle_yron'] = $this->users[$this->uids[$id1]]['battle_yron'];
$u->info['notactic'] = $this->users[$this->uids[$id1]]['notactic'];
$u->stats['notactic'] = $this->users[$this->uids[$id1]]['notactic'];
}
}
}
private function clearСache($uid)
{
if ($uid > 0 && !isset($this->uclearc[$uid])) {
$this->uclearc[$uid] = true;
$this->ucleari[] = $uid;
}
}
public function addlogRazmen($id, $at): bool
{
global $u;
$r = '';
$uid1 = $this->atacks[$id]['uid1'];
$uid2 = $this->atacks[$id]['uid2'];
$this->hodID++;
$dies = [
1 => 0,
2 => 0,
];
//массив для статистики
$stat = [
1 => [
'uid1' => 0,
'uid2' => 0,
'time' => time(),
'type' => 0,
'a' => '00000',
'b' => '0',
'type_a' => '',
'type_b' => '0',
'yrn' => 0,
'yrn_krit' => 0,
'ma' => 0,
'mb' => 0,
'tm1' => 0,
'tm2' => 0,
],
2 => [
'uid1' => 0,
'uid2' => 0,
'time' => time(),
'type' => 0,
'a' => '00000',
'b' => '0',
'type_a' => '',
'type_b' => '0',
'yrn' => 0,
'yrn_krit' => 0,
'ma' => 0,
'mb' => 0,
'tm1' => 0,
'tm2' => 0,
],
];
$i = 1;
while ($i <= 2) {
if ($i == 1) {
$a = 1;
$b = 2;
$u1 = ${'uid1'};
$u2 = ${'uid2'};
} else {
$a = 2;
$b = 1;
$u1 = ${'uid2'};
$u2 = ${'uid1'};
}
if ($this->stats[$this->uids[$u1]]['yhod'] <= 0 && $this->stats[$this->uids[$u2]]['yhod'] > 0) {
$u2 = $this->yhod_user($u1, $u2, $this->stats[$this->uids[$u2]]['yhod']);
}
$s1 = $this->users[$this->uids[$u1]]['sex'];
$s2 = $this->users[$this->uids[$u2]]['sex'];
$stat[$a]['uid1'] = $u1;
$stat[$a]['uid2'] = $u2;
$stat[$a]['ma'] = $this->stats[$this->uids[$u1]]['zona'];
$stat[$a]['mb'] = $this->stats[$this->uids[$u1]]['zonb'];
$stat[$a]['tm1'] = $this->users[$this->uids[$u1]]['team'];
$stat[$a]['tm2'] = $this->users[$this->uids[$u2]]['team'];
$stat[$a]['a'] = $this->atacks[$id]['a' . $a];
$stat[$a]['b'] = $this->atacks[$id]['b' . $a];
$vLog = 'at1=00000||at2=00000||zb1=' . $this->stats[$this->uids[$u1]]['zonb'] . '||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] . '||bl1=' . $this->atacks[$id]['b' . $a] . '||bl2=' . $this->atacks[$id]['b' . $b] . '||time1=' . $this->atacks[$id]['time'] . '||time2=' . $this->atacks[$id]['time2'] . '||s' . $a . '=' . $s1 . '||s' . $b . '=' . $s2 . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2'] . '';
$mas = [
'text' => '',
'time' => time(),
'vars' => '',
'battle' => $this->info['id'],
'id_hod' => $this->hodID,
'vars' => $vLog,
'type' => 1,
];
if (!isset($at[$a]['atack'])) { //ТУТ тест пропуска
if ($this->atacks[$id]['tpo' . $a] == 2) {
$mas['text'] .= '{u1} потратил свой ход на магию.';
} else {
//
if ($this->info['razdel'] == 0 && $this->info['dn_id'] == 0 && $this->info['izlom'] == 0) {
mysql_query(
'INSERT INTO `battle_out` (`battle`,`uid1`,`uid2`,`time`,`out`) VALUES (
"' . $this->info['id'] . '","' . $u1 . '","' . $u2 . '","' . time() . '","1"
)'
);
}
//
if (isset($u1)) {
$mas['text'] .= '{u1} пропустил свой ход.';
//Проверка сброс туманок
mysql_query(
'UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u1 . '" AND `delete` = 0 AND `v1` = "priem" AND (`v2`=288 OR `v2`=287 OR `v2`=286 OR `v2`=273) LIMIT 1'
);
}
}
$mas['text'] = '{tm1} ' . $mas['text'];
$this->add_log($mas);
} else {
$j = 0;
while ($j < count($at[$a]['atack']) && $j < 8) {
//
$mas['text'] = '';
//
$wt = [
21 => 4,
22 => 5,
20 => 2,
28 => 2,
19 => 3,
18 => 1,
26 => 22,
];
$par = [
'zona' => '{zn2_' . $at[$a]['atack'][$j][0] . '} ',
'kyda' => $this->lg_zon[$at[$a]['atack'][$j][0]][rand(
0,
(count($this->lg_zon[$at[$a]['atack'][$j][0]]) - 1)
)],
'chem' => $this->lg_itm[$wt[$at[$a]['atack'][$j]['wt']]][rand(
0,
(count($this->lg_itm[$wt[$at[$a]['atack'][$j]['wt']]]) - 1)
)],
];
//
$this->atacks[$id]['uid_' . $u1 . '_t' . $at[$a]['atack'][$j][1]]++;
//
//
$this->asr($u1, $u2, $at[$a]['atack'][$j][1]);
//
if ($at[$a]['atack'][$j][1] == 1) {
//u1 ударил обычным ударом u2
$mas['text'] .= $par['zona'] . '{u2} ' . $this->addlt($b, 1, $s2, null) . '' . $this->addlt(
$b,
2, $s2, null
) . '' . $this->addlt($a, 3, $s1, null) . ' {u1} ' . $this->addlt(
$a, 4,
$s1, null
) . '' . $this->addlt($a, 5, $s1, null) . '' . $this->addlt(
$a, 6, $s1,
null
) . ' ' . $this->addlt(
1, 7, $s1,
$at[$a]['atack'][$j]['yron']['t']
) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. ';
} elseif ($at[$a]['atack'][$j][1] == 2) {
//u2 увернулся от u1
$mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt(
$a,
9, $s1, null
) . ' {u2} <font color=#0071a3><strong>' . $this->addlt(
$b, 11, $s2,
null
) . '</strong></font> ' . $par['chem'] . ' ' . $par['kyda'] . '. ';
} elseif ($at[$a]['atack'][$j][1] == 3) {
//u2 заблокировал удар u1
$mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt(
$a,
9, $s1, null
) . ' {u2} <font color=#356d37><strong>' . $this->addlt(
$b, 10, $s2,
null
) . '</strong></font> ' . $this->addlt(
1, 7, 0, $s1,
$at[$a]['atack'][$j]['yron']['t']
) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. ';
} elseif ($at[$a]['atack'][$j][1] == 4) {
//u1 пробил блок u2 критом
if (isset($at[$a]['atack'][$j]['yron']['t'])) {
$mas['text'] .= $par['zona'] . '{u2} ' . $this->addlt(
$b, 1, $s2,
null
) . '' . $this->addlt($b, 2, $s2, null) . '' . $this->addlt(
$a, 3, $s1,
null
) . ' {u1} ' . $this->addlt($a, 4, $s1, null) . '' . $this->addlt(
$a, 5, $s1,
null
) . ', <u><font color=red>пробив блок</font></u>, ' . $this->addlt(
$a, 6, $s1,
null
) . ' ' . $this->addlt(
1, 7, $s1,
$at[$a]['atack'][$j]['yron']['t']
) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. ';
}
} elseif ($at[$a]['atack'][$j][1] == 5) {
//u1 ударил критическим ударом u2
$mas['text'] .= $par['zona'] . '{u2} ' . $this->addlt($b, 1, $s2, null) . '' . $this->addlt(
$b,
2, $s2, null
) . '' . $this->addlt($a, 3, $s1, null) . ' {u1} ' . $this->addlt(
$a, 4,
$s1, null
) . '' . $this->addlt($a, 5, $s1, null) . '' . $this->addlt(
$a, 6, $s1,
null
) . ' ' . $this->addlt(
1, 7, $s1,
$at[$a]['atack'][$j]['yron']['t']
) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. ';
} elseif ($at[$a]['atack'][$j][1] == 6) {
//u2 парировал удар u1
$mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt(
$a,
9, $s1,
null
) . ' {u2} неожиданно <strong><font color=#c59400>парировал</font></strong> ' . $this->addlt(
1,
7, 0, $s1,
$at[$a]['atack'][$j]['yron']['t']
) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. ';
} elseif ($at[$a]['atack'][$j][1] == 7) {
//u2 блокировал щитом удар u1
$mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt(
$a,
9, $s1,
null
) . ' {u2}, воспользовавшись <u><font color=#356d37>своим щитом</font></u>, ' . $this->addlt(
$b,
10, $s2, null
) . ' ' . $this->addlt(
1, 7, 0, $s1,
$at[$a]['atack'][$j]['yron']['t']
) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. ';
} elseif ($at[$a]['atack'][$j][1] == 8) {
//u2 увернулся от удара u1 и нанес по нему контрудар
$mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1, null) . '' . $this->addlt(
$a,
9, $s1, null
) . ' {u2} <font color=#0071a3><strong>' . $this->addlt(
$b, 11, $s2,
null
) . '</strong></font> ' . $par['chem'] . ' ' . $par['kyda'] . ' и нанес контрудар. ';
}
$stat[$a]['type_a'] .= '' . $at[$a]['atack'][$j][1] . '';
if ((!isset($this->stats[$this->uids[$u2]]['notravma']) || $this->stats[$this->uids[$u2]]['notravma'] == 0) && isset($at[$a]['atack'][$j]['yron']['travma']) && $at[$a]['atack'][$j]['yron']['travma'][0] > 0 && floor(
$at[$a]['atack'][$j]['yron']['hp']
) <= 0) {
$tr_pl = mysql_fetch_array(
mysql_query(
'SELECT `id`,`v1` FROM `eff_users` WHERE `id_eff` = 4 AND `uid` = "' . $u2 . '" AND `delete` = "0" ORDER BY `v1` DESC LIMIT 1'
)
);
if (!isset($tr_pl['id']) || $tr_pl['v1'] < 3) {
//263
if (isset($tr_pl['id'])) {
$at[$a]['atack'][$j]['yron']['travma'][0] = rand(($tr_pl['v1'] + 1), 3);
}
$tr_pl2 = mysql_fetch_array(
mysql_query(
'SELECT `id` FROM `eff_users` WHERE `uid` = "' . $u2 . '" AND `delete` = "0" AND `name` LIKE "%Защита от травм%" LIMIT 1'
)
);
if (!isset($tr_pl2['id']) && $at[$a]['atack'][$j]['yron']['travma'][0] <= 3) {
$mas['text'] = rtrim($mas['text'], '. ');
$mas['text'] .= ', <font color=red>нанеся противнику <strong>';
if ($at[$a]['atack'][$j]['yron']['travma'][0] == 1) {
$mas['text'] .= 'Легкую';
$this->addTravm($u2, 1, rand(3, 5));
} elseif ($at[$a]['atack'][$j]['yron']['travma'][0] == 2) {
$mas['text'] .= 'Среднюю';
$this->addTravm($u2, 2, rand(3, 5));
} elseif ($at[$a]['atack'][$j]['yron']['travma'][0] == 3) {
$mas['text'] .= 'Тяжелую';
$this->addTravm($u2, 3, rand(3, 5));
}
$mas['text'] .= ' травму</strong></font>. ';
}
}
unset($tr_pl);
}
if ($at[$a]['atack'][$j]['yron']['pb'] == 1 && isset($at[$a]['atack'][$j]['yron']['hp'])) {
$mas['text'] = rtrim($mas['text'], '. ');
$mas['text'] .= ' <i>пробив броню</i>. ';
}
if ($at[$a]['atack'][$j][3] == 1) {
$mas['text'] .= '(контрудар) ';
}
if (isset($at[$a]['atack'][$j]['yron'])) {
if ($at[$a]['atack'][$j]['yron']['w'] == 3) {
$mas['textWP'] = '(правая&nbsp;рука)';
} elseif ($at[$a]['atack'][$j]['yron']['w'] == 14) {
$mas['textWP'] = '(левая&nbsp;рука)';
} else {
$mas['textWP'] = '(непонятно&nbsp;чем)';
}
if ($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5 || $at[$a]['atack'][$j][1] == 1) {
if ($at[$a]['atack'][$j]['yron']['y'] < 1) {
$at[$a]['atack'][$j]['yron']['r'] = '--';
}
}
if ($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5) {
$stat[$a]['yrn_krit'] += -$at[$a]['atack'][$j]['yron']['r'];
$mas['text'] .= ' <font title=' . $mas['textWP'] . ' color=#ff0000><strong>' . $at[$a]['atack'][$j]['yron']['r'] . '</strong></font>';
} else {
$mas['text'] .= ' <font title=' . $mas['textWP'] . ' color=#0066aa><strong>' . $at[$a]['atack'][$j]['yron']['r'] . '</strong></font>';
}
$stat[$a]['yrn'] += -$at[$a]['atack'][$j]['yron']['r'];
}
if (isset($at[$a]['atack'][$j]['yron']['hp'])) {
if ($this->users[$this->uids[$u2]]['align'] == 9) {
$at[$a]['atack'][$j]['yron']['hp'] = $at[$a]['atack'][$j]['yron']['hp'] / ($at[$a]['atack'][$j]['yron']['hpAll'] / 100);
$at[$a]['atack'][$j]['yron']['hpAll'] = '100%';
}
$mas['text'] .= ' [' . floor($at[$a]['atack'][$j]['yron']['hp']) . '/' . floor(
$at[$a]['atack'][$j]['yron']['hpAll']
) . ']';
}
if ($mas['text'] != '') {
$mas['text'] = '{tm1} ' . $mas['text'];
}
if (is_array($at[$a]['atack'][$j]['yron']['plog'])) {
$il = 0;
while ($il <= count($at[$a]['atack'][$j]['yron']['plog'])) {
if (isset($at[$a]['atack'][$j]['yron']['plog'][$il])) {
eval($at[$a]['atack'][$j]['yron']['plog'][$il]);
}
$il++;
}
}
$this->add_log($mas);
$j++;
}
}
$i++;
}
//Добавляем статистику + записываем в баттл_юзерс НР игроков
$this->addNewStat($stat);
//Вывод в лог смерти персонажа
if (floor($this->stats[$this->uids[$u1]]['hpNow']) < 1) {
$dies[1] = 1;
}
if (floor($this->stats[$this->uids[$u2]]['hpNow']) < 1) {
$dies[2] = 1;
}
if ($dies[1] > 0 || $dies[2] > 0) {
$s1 = $this->users[$this->uids[$u1]]['sex'];
$s2 = $this->users[$this->uids[$u2]]['sex'];
$vLog = 'at1=00000||at2=00000||zb1=' . $this->stats[$this->uids[$u1]]['zonb'] . '||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] . '||bl1=' . $this->atacks[$id]['b' . $a] . '||bl2=' . $this->atacks[$id]['b' . $b] . '||time1=' . $this->atacks[$id]['time'] . '||time2=' . $this->atacks[$id]['time2'] . '||s2=' . $this->users[$this->uids[$u2]]['sex'] . '||s1=' . $this->users[$this->uids[$u1]]['sex'] . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2'] . '';
$mas = [
'text' => '',
'time' => time(),
'vars' => '',
'battle' => $this->info['id'],
'id_hod' => $this->hodID,
'vars' => $vLog,
'type' => 1,
];
$rtngwin = [1, 2, 3, 5, 10, 20, 40, 80, 160];
$rtnglos = [0, 0, 0, -1, -2, -5, -10, -20, -40];
if ($this->info['typeBattle'] == 99) {
if ($btlstatus[0] == 0) {
//Кровавые бои обычные
$rtngwin = [2, 4, 6, 10, 20, 40, 80, 160, 320];
if ($this->info['razdel'] == 5) {
//не хаот
$rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80];
} else {
//хаот
$rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0];
}
} elseif ($btlstatus[0] == 25) {
//Кровавая битва
$rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480];
$rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80];
} elseif ($btlstatus[0] == 50) {
//Кровавая резня
$rtngwin = [4, 8, 16, 32, 64, 128, 256, 512, 1024];
$rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80];
} elseif ($btlstatus[0] == 75) {
//Кровавая сеча
$rtngwin = [5, 10, 20, 40, 80, 160, 320, 640, 1280];
$rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80];
} elseif ($btlstatus[0] == 100) {
//Кровавое побоище
$rtngwin = [6, 12, 24, 48, 98, 196, 392, 784, 1568];
$rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80];
} elseif ($btlstatus[0] == 150) {
//Судный день
$rtngwin = [7, 14, 28, 56, 112, 224, 448, 896, 1792];
$rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80];
}
} else {
if ($btlstatus[0] == 0) {
//Обычный поединок
$rtngwin = [1, 2, 3, 5, 10, 20, 40, 80, 160];
if ($this->info['razdel'] == 5) {
//не хаот
$rtnglos = [0, 0, 0, -1, -2, -5, -10, -20, -40];
} else {
//хаот
$rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0];
}
} elseif ($btlstatus[0] == 25) {
//великая битва
$rtngwin = [2, 4, 6, 10, 20, 40, 80, 160, 320];
$rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80];
} elseif ($btlstatus[0] == 50) {
//величайшая битва
$rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480];
$rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80];
} elseif ($btlstatus[0] == 75) {
//историческая битва сеча
$rtngwin = [4, 8, 16, 32, 64, 128, 256, 512, 1024];
$rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80];
} elseif ($btlstatus[0] == 100) {
//эпохальная битва
$rtngwin = [5, 10, 20, 40, 80, 160, 320, 640, 1280];
$rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80];
} elseif ($btlstatus[0] == 150) {
//судный день
$rtngwin = [7, 14, 28, 56, 112, 224, 448, 896, 1792];
$rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80];
}
}
if ($this->info['dn_id'] > 0 || $this->info['izlom'] != 0 || $this->info['turnir'] != 0) {
//Пещерные бои не считаются и Изломы тоже, ну и Турниры
$rtngwin = [0, 0, 0, 0, 0, 0, 0, 0, 0];
$rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0];
} elseif ($this->info['clan1'] > 0 && $this->info['clan2'] > 0) {
//Клановая война
$rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480];
$rtnglos = [-1, -2, -4, -8, -16, -32, -64, -128, -256];
}
if ($dies[1] == 1) {
if ($this->info['dn_id'] <= 0 && $this->users[$this->uids[$u1]]['level'] >= 4) {
$rtng1 += $rtnglos[$this->users[$this->uids[$u1]]['level'] - 4];
$rtng2 += $rtngwin[$this->users[$this->uids[$u1]]['level'] - 4];
}
//Персонаж 1 погиб от рук персонаж 2
$this->spaCheck($this->users[$this->uids[$u1]]['id']);
}
if ($dies[2] == 1) {
if ($this->info['dn_id'] <= 0 && $this->users[$this->uids[$u1]]['level'] >= 4) {
$rtng1 += $rtnglos[$this->users[$this->uids[$u1]]['level'] - 4];
$rtng2 += $rtngwin[$this->users[$this->uids[$u1]]['level'] - 4];
}
//Персонаж 2 погиб от рук персонаж 1
$this->spaCheck($this->stats[$this->uids[$u2]]['id']);
}
//Записываем рейтинг
//
if ($this->info['type'] != 564 && $this->stats[$this->uids[$u1]]['inTurnir'] == 0 && $this->stats[$this->uids[$u2]]['inTurnir'] == 0 && $this->info['dn_id'] == 0 && $this->info['izlom'] == 0) {
//
if ($this->users[$this->uids[$u2]]['bot'] == 0) {
mysql_query(
'INSERT INTO `users_reting` (`uid`,`time`,`val`,`align`,`clan`) VALUES (
"' . $u1 . '","' . time() . '","' . $rtng1 . '","' . $this->users[$this->uids[$u1]]['align'] . '","' . $this->users[$this->uids[$u1]]['clan'] . '")'
);
}
unset($rtng);
if ($this->users[$this->uids[$u1]]['bot'] == 0) {
mysql_query(
'INSERT INTO `users_reting` (`uid`,`time`,`val`,`align`,`clan`) VALUES (
"' . $u2 . '","' . time() . '","' . $rtng2 . '","' . $this->users[$this->uids[$u2]]['align'] . '","' . $this->users[$this->uids[$u2]]['clan'] . '")'
);
}
}
unset($rtng1, $rtng2);
}
return true;
}
//Смена противника
public function asr($u1, $u2, $type)
{
mysql_query(
'INSERT INTO battle_static (
`uid1`,`uid2`,`hod`,`type`,`time`,`bid`
) VALUES (
"' . $u1 . '","' . $u2 . '","' . $this->hodID . '","' . $type . '","' . time() . '","' . $this->info['id'] . '"
)'
);
}
//авто-смена противника //ТУТ баг выбора
public function addlt($a, $id, $s, $rnd = null): string
{
global $log_text;
if ($rnd === null) {
$rnd = rand(0, (count($log_text[$s][$id]) - 1));
}
return '{' . $a . 'x' . $id . 'x' . $rnd . '}';
}
//Действия бота (атака)
public function spaCheck($u1)
{
if ($this->stats[$this->uids[$u1]]['hpNow'] < 1) {
mysql_query('DELETE FROM `battle_act` WHERE `uid1` = "' . $u1 . '" OR `uid2` = "' . $u1 . '"');
if ($this->stats[$this->uids[$u1]]['spasenie'] > 0 && $this->users[$this->uids[$u1]]['tactic7'] >= 25) {
//Свиток спасения
if ($this->stats[$this->uids[$u1]]['s7'] > 49 && $this->stats[$this->uids[$u1]]['s7'] < 75) {
//Даем призрачку
mysql_query(
"INSERT INTO `eff_users`
(`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES
(22, '" . $u1 . "', 'Призрачная защита', 'add_zmproc=75|add_zaproc=75', 0, 77, 0, '" . $u1 . "', 0, 'priem', 141, 'spirit_block25.gif', 1, 1, '0', 0, 0, '', 0, 0, 0, 0, 0);"
);
$this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll'] * 0.5);
$this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll'] * 0.5);
} elseif ($this->stats[$this->uids[$u1]]['s7'] > 74 && $this->stats[$this->uids[$u1]]['s7'] < 100) {
//Абсолютная защита
mysql_query(
"INSERT INTO `eff_users`
(`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES
(22, '" . $u1 . "', 'Абсолютная защита', 'add_zmproc=100|add_zaproc=100', 0, 77, 0, '" . $u1 . "', 0, 'priem', 358, 'block_absolute.gif', 1, 1, '0', 0, 0, '', 0, 0, 0, 0, 0);"
);
$this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll'] * 0.75);
$this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll'] * 0.75);
} elseif ($this->stats[$this->uids[$u1]]['s7'] > 99) {
//Абсолютная защита x2
mysql_query(
"INSERT INTO `eff_users`
(`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES
(22, '" . $u1 . "', 'Защита Мироздателя', 'add_zmproc=100|add_zaproc=100', 0, 77, 0, '" . $u1 . "', 0, 'priem', 358, 'wis_white_shield.gif', 1, 2, '0', 0, 0, '', 0, 0, 0, 0, 0);"
);
$this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll']);
$this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll']);
}
if ($this->stats[$this->uids[$u1]]['hpNow'] < 1) {
$this->stats[$this->uids[$u1]]['hpNow'] = 1;
}
if ($this->stats[$this->uids[$u1]]['mpNow'] < 1) {
$this->stats[$this->uids[$u1]]['mpNow'] = 1;
}
if ($this->stats[$this->uids[$u1]]['hpNow'] > $this->stats[$this->uids[$u1]]['hpAll']) {
$this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll']);
}
if ($this->stats[$this->uids[$u1]]['mpNow'] > $this->stats[$this->uids[$u1]]['mpAll']) {
$this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll']);
}
mysql_query(
'DELETE FROM `eff_users` WHERE `uid` = "' . $u1 . '" AND `id_eff` = 22 AND `v1` = "priem" AND `v2` = 324'
);
mysql_query(
'UPDATE `stats` SET `hpNow` = "' . $this->stats[$this->uids[$u1]]['hpNow'] . '",`mpNow` = "' . $this->stats[$this->uids[$u1]]['mpNow'] . '", `tactic7` = `tactic7` - 25 WHERE `id` = "' . $u1 . '" LIMIT 1'
);
$mas['text'] = '{tm1} <strong>' . $this->stats[$this->uids[$u1]]['login'] . '</strong> убит...<strong>' . $this->stats[$this->uids[$u1]]['login'] . '</strong> был спасен. ';
$this->priemAddLog(
$id, 1, 2, $u->info['id'], $u1,
' ',
$mas['text'],
($this->hodID + 0)
);
} else {
if (isset($this->stats[$this->uids[$u1]]['login'])) {
mysql_query('UPDATE `stats` SET `hpNow` = "0",`mpNow` = "0" WHERE `id` = "' . $u1 . '" LIMIT 1');
$this->stats[$this->uids[$u1]]['hpNow'] = 0;
$this->users[$this->uids[$u1]]['hpNow'] = 0;
$mas['text'] = '{tm1} <strong>' . $this->stats[$this->uids[$u1]]['login'] . '</strong> погиб.';
$this->priemAddLog(
$id, 1, 2, $u->info['id'], $u1,
' ',
$mas['text'],
($this->hodID + 1)
//Удаляем размен из базы //ТУТ возможен лаг удаления
);
mysql_query(
'DELETE FROM `battle_act` WHERE `uid1` = "' . $this->stats[$this->uids[$u1]]['id'] . '" OR `uid2` = "' . $this->stats[$this->uids[$u1]]['id'] . '" OR `uid2` = "-' . $this->stats[$this->uids[$u1]]['id'] . '"'
);
mysql_query(
'DELETE FROM `eff_users` WHERE `uid` = "' . $this->stats[$this->uids[$u1]]['id'] . '" AND `v1` = "priem" AND `delete` =0'
);
}
}
}
}
//Проверяем удары, приемы, свитки, зверей
public function priemAddLog($id, $a, $b, $u1, $u2, $prm, $text, $hodID, $tm1 = 0, $tm2 = 0)
{
$time = time();
if ($tm1 == 0) {
$tm1 = isset($this->atacks[$id]) ? $this->atacks[$id]['time'] : $time;
}
if ($tm2 == 0) {
$tm2 = isset($this->atacks[$id]) ? $this->atacks[$id]['time2'] : $time;
}
$prm = str_replace('=', '^^^^', $prm);
$vLog =
'prm=' . $prm .
'||at1=00000||at2=00000||zb1=' . $this->stats[$this->uids[$u1]]['zonb'] .
'||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] .
'||bl1=' . $this->atacks[$id]['b' . $a] .
'||bl2=' . $this->atacks[$id]['b' . $b] .
'||time1=' . $tm1 .
'||time2=' . $tm2 .
'||s' . $a . '=' . $this->users[$this->uids[$u1]]['sex'] .
'||s' . $b . '=' . $this->users[$this->uids[$u2]]['sex'] .
'||t2=' . $this->users[$this->uids[$u2]]['team'] .
'||t1=' . $this->users[$this->uids[$u1]]['team'] .
'||login1=' . $this->users[$this->uids[$u1]]['login2'] .
'||login2=' . $this->users[$this->uids[$u2]]['login2'];
$mas = [
'text' => $text,
'time' => $time,
'battle' => $this->info['id'],
'id_hod' => $hodID,
'vars' => $vLog,
'type' => 1,
];
$this->add_log($mas);
}
//Действия бота
public function restZonb($uid1, $uid2)
{
if ($this->stnZbVs[$uid1] > 0) {
$this->stats[$this->uids[$uid1]]['zonb'] = $this->stnZbVs[$uid1];
}
if ($this->stnZbVs[$uid2] > 0) {
$this->stats[$this->uids[$uid1]]['zonb'] = $this->stnZbVs[$uid2];
}
}
//получаем данные о поединке
public function save_stats($uid)
{
mysql_query(
'UPDATE `stats` SET
`hpNow` = "' . $this->stats[$this->uids[$uid]]['hpNow'] . '",
`mpNow` = "' . $this->stats[$this->uids[$uid]]['mpNow'] . '",
`tactic1` = "' . $this->users[$this->uids[$uid]]['tactic1'] . '",
`tactic2` = "' . $this->users[$this->uids[$uid]]['tactic2'] . '",
`tactic3` = "' . $this->users[$this->uids[$uid]]['tactic3'] . '",
`tactic4` = "' . $this->users[$this->uids[$uid]]['tactic4'] . '",
`tactic5` = "' . $this->users[$this->uids[$uid]]['tactic5'] . '",
`tactic6` = "' . $this->users[$this->uids[$uid]]['tactic6'] . '",
`tactic7` = "' . $this->users[$this->uids[$uid]]['tactic7'] . '",
`enemy` = "' . $this->users[$this->uids[$uid]]['enemy'] . '",
`battle_yron` = "' . $this->users[$this->uids[$uid]]['battle_yron'] . '",
`last_hp` = "' . $this->users[$this->uids[$uid]]['last_hp'] . '",
`battle_exp` = "' . $this->users[$this->uids[$uid]]['battle_exp'] . '",
`priems_z` = "' . $this->users[$this->uids[$uid]]['priems_z'] . '"
WHERE `id` = "' . $uid . '" LIMIT 1'
);
}
//наносим удар противнику
public function priemsRazmenMomentEnd($id, $at)
{
$uid1 = $this->atacks[$id]['uid1'];
$uid2 = $this->atacks[$id]['uid2'];
$i = 1;
while ($i <= 2) {
if ($i == 1) {
$a = 1;
$b = 2;
$u1 = ${'uid1'};
$u2 = ${'uid2'};
} else {
$a = 2;
$b = 1;
$u1 = ${'uid2'};
$u2 = ${'uid1'};
}
if (!isset($at['p']['p_cast'])) {
$at['p'] = $at;
$at['p']['p_cast'] = true;
}
//Приемы ухода от удара
if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) {
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 1) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_used_this = $u1;
$pr_moment = true;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u1, $j);
unset(${'fx_priem'});
$this->stats[$this->uids[$u2]]['nopryh']--;
}
}
$j++;
}
}
//Приемы крита
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 2) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_used_this = $u1;
$pr_moment = true;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u1, $j);
unset(${'fx_priem'});
}
}
$j++;
}
//Приемы атаки
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 3) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_used_this = $u1;
$pr_moment = true;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
if (isset($fx_priem)) {
$at = $fx_priem($id, $at, $u1, $j);
unset(${'fx_priem'});
}
}
}
$j++;
}
//Приемы защиты
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 4) {
if ($this->testPriemVarTrueZash(
$i, 2, $this->stats[$this->uids[$u1]]['u_priem'][$j][1], $a, $b,
$u1, $u2
) && file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_used_this = $u1;
$pr_moment = true;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u1, $j);
unset(${'fx_priem'});
}
}
$j++;
}
//Прочие приемы
$j = 0;
while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) {
if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 5) {
if (file_exists(
'../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'
)) {
$pr_used_this = $u1;
$pr_moment = true;
require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php');
$at = $fx_priem($id, $at, $u1, $j);
unset(${'fx_priem'});
}
}
$j++;
}
$i++;
}
return $at;
}
//выделяем пользователей
public function addNewAtack()
{
global $u;
if (!isset($this->ga[$u->info['id']][$u->info['enemy']])) {
if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] > 0) {
$us = $this->stats[$this->uids[$u->info['id']]];
$i = 1;
$no = 0;
while ($i <= $us['zona']) {
if ($this->uAtc['a'][$i] == 0) {
$no = 1;
}
$i++;
}
if ($this->uAtc['b'] == 0) {
$no = 1;
}
if ($no == 0) {
//наносим удар
if ($u->info['enemy'] > 0) {
if (!isset($this->ga[$u->info['enemy']][$u->info['id']])) {
if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] >= 1 && $this->stats[$this->uids[$u->info['enemy']]]['hpNow'] >= 1) {
//наносим новый удар
$a = $this->uAtc['a'][1] . $this->uAtc['a'][2] . $this->uAtc['a'][3] . $this->uAtc['a'][4] . $this->uAtc['a'][5];
$b = $this->uAtc['b'];
mysql_query(
'DELETE FROM `battle_act` WHERE `battle` = "' . $this->info['id'] . '" AND ((`uid2` = "' . $u->info['id'] . '" AND `uid1` = "' . $u->info['enemy'] . '") OR (`uid1` = "' . $u->info['id'] . '" AND `uid2` = "' . $u->info['enemy'] . '")) LIMIT 2'
);
$d = mysql_query(
'INSERT INTO `battle_act` (`battle`,`time`,`uid1`,`uid2`,`a1`,`b1`) VALUES ("' . $this->info['id'] . '","' . time() . '","' . $u->info['id'] . '","' . $u->info['enemy'] . '","' . $a . '","' . $b . '")'
);
if (!$d) {
$this->e = 'Не удалось нанести удар по противнику...';
} else {
$this->ga[$u->info['id']][$u->info['enemy']] = mysql_insert_id();
}
}
} else {
//отвечаем на удар противника
if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] >= 1 && $this->stats[$this->uids[$u->info['enemy']]]['hpNow'] >= 1 && isset($this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['id'])) {
$this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['a2'] = $this->uAtc['a'][1] . '' . $this->uAtc['a'][2] . '' . $this->uAtc['a'][3] . '' . $this->uAtc['a'][4] . '' . $this->uAtc['a'][5];
$this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['b2'] = $this->uAtc['b'];
$this->startAtack($this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['id']);
}
}
}
} else {
$this->e = 'Выберите зоны удара и блока';
}
} else {
$this->e = 'Для вас поединок закончен, ожидайте пока завершат другие...';
}
}
}
//Возращаем зоны блока по умолчанию
public function botAct($uid): bool
{
$r = false;
if ($this->users[$this->uids[$uid]]['bot'] > 0) {
if ($this->users[$this->uids[$uid]]['online'] < time() - 3) {
$r = true;
$this->users[$this->uids[$uid]]['online'] = time();
User::setOnline((int)$uid);
} elseif (rand(0, 2) == 1) {
$r = true;
}
}
return $r;
}
//проверка блока (Визуальная)
public function battleInfo($id)
{
$b = mysql_fetch_array(
mysql_query('SELECT * FROM `battle` WHERE `id` = "' . mysql_real_escape_string($id) . '" LIMIT 1')
);
if (isset($b['id'])) {
$this->hodID = mysql_fetch_array(
mysql_query(
'SELECT `id_hod` FROM `battle_logs` WHERE `battle` = "' . $b['id'] . '" ORDER BY `id` DESC LIMIT 1'
)
);
$this->hodID = $this->hodID['id_hod'] ?? 0;
return $b;
} else {
return false;
}
}
//проверка блока
public function addAtack()
{
global $js;
if (isset($_POST['atack'], $_POST['block'])) {
$na = ['a' => [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0]];
$a = explode('_', $_POST['atack']);
$i = 1;
$na['id'] = time();
while ($i <= 5) {
if (isset($a[$i - 1])) {
$a[$i - 1] = intval(round($a[$i - 1]));
if ($a[$i - 1] >= 1 && $a[$i - 1] <= 5) {
$na['a'][$i] = $a[$i - 1];
} else {
$na['a'][$i] = 0;
}
}
$i++;
}
$na['b'] = intval(round($_POST['block']));
if ($na['b'] < 1 || $na['b'] > 5) {
$na['b'] = 0;
}
$this->uAtc = $na;
$js .= 'testClearZone();';
} else {
$this->e = 'Выберите зоны удара и блока';
}
}
//генерируем команды
public function teamsTake()
{
global $u;
$rs = '';
$ts = [];
$tsi = 0;
if ($this->info['id'] > 0) {
//данные о игроках в бою
$nxtlg = [];
$t = mysql_query(
'SELECT `u`.`room`,`u`.`no_ip`,`u`.`twink`,`u`.`stopexp`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`bot_id`,`u`.`money3`,`u`.`money2` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "' . $this->info['id'] . '"'
);
$i = 0;
$bi = 0;
$up = '';
if ($this->info['start2'] == 0) {
$tststrt = mysql_fetch_array(
mysql_query(
'SELECT `id` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `start2` = "0" LIMIT 1'
)
);
if (isset($tststrt['id'])) {
$upd = mysql_query(
'UPDATE `battle` SET `start2` = "' . time() . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'
);
} else {
$this->info['start2'] = time();
}
}
while ($pl = mysql_fetch_array($t)) {
//записываем данные
if ($pl['login2'] == '') {
$pl['login2'] = $pl['login'];
}
$this->users[$i] = $pl;
$this->uids[$pl['id']] = $i;
if ($this->info['start2'] == 0) {
mysql_query(
'UPDATE `users` SET `notrhod` = "-1" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
$this->users[$i]['notrhod'] = -1;
}
if ($pl['bot'] > 0) {
$this->bots[$bi] = $pl['id'];
$this->iBots[$pl['id']] = $bi;
$bi++;
}
//записываем статы
$this->stats[$i] = $u->getStats($pl, 0, 0, false, $this->cached, true);
//Заносим старт
if ($this->info['start2'] == 0) {
if (!isset($ts[$this->users[$i]['team']])) {
$tsi++;
$ts[$this->users[$i]['team']] = $tsi;
}
if ($this->users[$i]['level'] <= 7) {
$this->users[$i]['tactic7'] = floor(10 / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']);
} elseif ($this->users[$i]['level'] == 8) {
$this->users[$i]['tactic7'] = floor(20 / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']);
} elseif ($this->users[$i]['level'] == 9) {
$this->users[$i]['tactic7'] = floor(30 / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']);
} elseif ($this->users[$i]['level'] >= 10) {
$this->users[$i]['tactic7'] = floor(
(40 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']
);
}
if ($this->stats[$i]['s7'] > 49) {
mysql_query(
'UPDATE `eff_users` SET `delete`="' . time() . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `overType` = 101 AND `delete` = 0'
);
mysql_query(
"
INSERT INTO `eff_users` ( `id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES
( 22, '" . $this->stats[$i]['id'] . "', 'Спасение', 'add_spasenie=1', 101, 77, 0, '" . $this->stats[$i]['id'] . "', 0, 'priem', 324, 'preservation.gif', 1, -1, 'спасение', 0, 0, '', 0, 0, 0, 1, 0);
"
);
}
// Бафф Зверя animal_bonus
if ($this->users[$i]['animal'] > 0) {
$a = mysql_fetch_array(
mysql_query(
'SELECT * FROM `users_animal` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `id` = "' . $this->users[$i]['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1'
)
);
if (isset($a['id'])) {
if ($a['eda'] >= 1) {
$anl = mysql_fetch_array(
mysql_query(
'SELECT `bonus` FROM `levels_animal` WHERE `type` = "' . $a['type'] . '" AND `level` = "' . $a['level'] . '" LIMIT 1'
)
);
$anl = $anl['bonus'];
$tpa = [
1 => 'cat',
2 => 'owl',
3 => 'wisp',
4 => 'demon',
5 => 'dog',
6 => 'pig',
7 => 'dragon',
];
$tpa2 = [
1 => 'Кота',
2 => 'Совы',
3 => 'Светляка',
4 => 'Чертяки',
5 => 'Пса',
6 => 'Свина',
7 => 'Дракона',
];
$tpa3 = [
1 => 'Кошачья Ловкость',
2 => 'Интуиция Совы',
3 => 'Сила Стихий',
4 => 'Демоническая Сила',
5 => 'Друг',
6 => 'Полная Броня',
7 => 'Инферно',
];
mysql_query(
'UPDATE `eff_users` SET `delete`="' . time() . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `overType` = 100 AND `delete` = 0'
);
mysql_query(
'INSERT INTO `eff_users` (`hod`,`v2`,`img2`,`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`v1`,`user_use`) VALUES ("-1","201","summon_pet_' . $tpa[$a['type']] . '.gif",22,"' . $this->users[$i]['id'] . '","' . $tpa3[$a['type']] . ' [' . $a['level'] . ']","' . $anl . '","100","77","priem","' . $this->users[$i]['id'] . '")'
);
//добавление духа от дракона
if ($a['type'] == 7) {
if ($a['level'] == 10) {
$this->users[$i]['tactic7'] = floor(
(50 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']
);
} elseif ($a['level'] == 11) {
$this->users[$i]['tactic7'] = floor(
(65 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']
);
} elseif ($a['level'] == 12) {
$this->users[$i]['tactic7'] = floor(
(90 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']
);
}
}
//
$anl = Conversion::dataStringToArray($anl);
$vLog = 'time1=' . time() . '||s1=' . $this->users[$i]['sex'] . '||t1=' . $this->users[$i]['team'] . '||login1=' . $this->users[$i]['login'] . '';
$vLog .= '||s2=1||t2=' . $this->users[$i]['team'] . '||login2=' . $a['name'] . ' (Зверь ' . $this->users[$i]['login'] . ')';
$mas1 = [
'time' => time(),
'battle' => $this->info['id'],
'id_hod' => 1,
'text' => '',
'vars' => $vLog,
'zona1' => '',
'zonb1' => '',
'zona2' => '',
'zonb2' => '',
'type' => '1',
];
$ba = '';
$i6 = 0;
while ($i6 < count($u->items['add'])) {
if (isset($anl['add_' . $u->items['add'][$i6]])) {
if ($anl['add_' . $u->items['add'][$i6]] > 0) {
if ($u->items['add'][$i6] == 'mib1') {
$ba .= 'Броня головы: +' . $anl['add_' . $u->items['add'][$i6]] . ', ';
} elseif ($u->items['add'][$i6] == 'mib2') {
$ba .= 'Броня корпуса: +' . $anl['add_' . $u->items['add'][$i6]] . ', ';
} elseif ($u->items['add'][$i6] == 'mib3') {
$ba .= 'Броня пояса: +' . $anl['add_' . $u->items['add'][$i6]] . ', ';
} elseif ($u->items['add'][$i6] == 'mib4') {
$ba .= 'Броня ног: +' . $anl['add_' . $u->items['add'][$i6]] . ', ';
} elseif ($u->items['add'][$i6] == 'mab1' || $u->items['add'][$i6] == 'mab2' || $u->items['add'][$i6] == 'mab3' || $u->items['add'][$i6] == 'mab4') {
} else {
$ba .= $u->is[$u->items['add'][$i6]] . ': +' . $anl['add_' . $u->items['add'][$i6]] . ', ';
}
}
}
$i6++;
}
$ba = trim($ba, ', ');
if ($ba == '') {
$ba = 'Эффект отсутсвует';
}
$mas1['text'] = '{tm1} {u2} очнулся от медитации, и призвал заклятье &quot;<strong>' . $tpa3[$a['type']] . ' [' . $a['level'] . ']</strong>&quot; на {u1}. (' . $ba . ')';
$nxtlg[count($nxtlg)] = $mas1;
mysql_query(
'UPDATE `users_animal` SET `eda` = `eda` - 1 WHERE `id` = "' . $a['id'] . '" LIMIT 1'
);
$this->get_comment();
}
}
}
mysql_query(
'UPDATE `stats` SET `last_hp` = "0",`tactic1`="0",`tactic2`="0",`tactic3`="0",`tactic4`="0",`tactic5`="0",`tactic6`="0",`tactic7` = "' . ($this->users[$i]['tactic7']) . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'
);
$rs[$this->users[$i]['team']] = $rs[$this->users[$i]['team']] . $u->microLogin(
$this->users[$i], 2
) . ', ';
}
$up .= '`uid` = "' . $pl['id'] . '" OR';
//battle-user (статистика, начальная)
$mybu = mysql_fetch_array(
mysql_query(
'SELECT `id` FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" AND `uid` = "' . mysql_real_escape_string(
$pl['id']
) . '" LIMIT 1'
)
);
if (!isset($mybu['id'])) {
//Пустое значение статистики для данного персонажа за текущий бой
$this->addstatuser($pl['id']);
}
$i++;
}
$up = rtrim($up, ' OR');
//Заносим в лог начало поединка
if ($this->info['start1'] == 0) {
$tststrt = mysql_fetch_array(
mysql_query(
'SELECT `id` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `start1` = "0" LIMIT 1'
)
);
if (isset($tststrt['id'])) {
$upd = mysql_query(
'UPDATE `battle` SET `start1` = "' . time() . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'
);
if ($upd) {
$i = 0;
$r = '';
while ($i <= $tsi) {
if (isset($rs[$i]) && $rs[$i] != '') {
$r .= rtrim($rs[$i], ', ') . ' и ';
}
$i++;
}
$r = rtrim($r, ' и ');
$r = str_replace('"', '\\\\\"', $r);
$this->hodID++;
$vLog = 'time1=' . time() . '||';
$mass = [
'time' => time(),
'battle' => $this->info['id'],
'id_hod' => $this->hodID,
'text' => 'test',
'vars' => $vLog,
'zona1' => '',
'zonb1' => '',
'zona2' => '',
'zonb2' => '',
'type' => '1',
];
$r = 'Часы показывали <span class=\\\\\"date\\\\\">' . date(
'd.m.Y H:i',
$this->info['time_start']
) . '</span>, когда ' . $r . ' бросили вызов друг другу.';
$ins = mysql_query(
'INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $r . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'
);
$this->info['start1'] = time();
}
}
//
if (count($nxtlg) > 0) {
$i = 0;
while ($i < count($nxtlg)) {
$this->add_log($nxtlg[$i]);
$i++;
}
}
//
}
}
}
public function addstatuser($id)
{
if ($id > 0) {
$uid = $id;
$id = $this->uids[$uid];
mysql_query(
'INSERT INTO `battle_users`
( `battle`,`uid`,`time_enter`,`login`,`level`,`align`,`clan`,`hpAll`,`hp`,`hpStart`,`team` )
VALUES
(
"' . $this->info['id'] . '",
"' . $uid . '",
"' . time() . '","' . $this->users[$id]['login'] . '",
"' . $this->users[$id]['level'] . '",
"' . $this->users[$id]['align'] . '",
"' . $this->users[$id]['clan'] . '",
"' . $this->stats[$id]['hpAll'] . '",
"' . $this->stats[$id]['hp'] . '",
"' . $this->stats[$id]['hpNow'] . '",
"' . $this->users[$id]['team'] . '"
)'
);
}
}
public function testZonbVis()
{
global $u;
if ($this->stnZbVs == 0) {
$zb = $this->stats[$this->uids[$u->info['id']]]['zonb'];
$this->stnZbVs = $zb;
} else {
$zb = $this->stnZb;
}
$eu = $this->users[$this->uids[$u->info['id']]]['enemy'];
if ($zb > 3) {
$zb = 3;
}
if (
$eu != 0 &&
(
$this->stats[$this->uids[$eu]]['weapon1'] == 1 ||
$this->stats[$this->uids[$eu]]['weapon2'] == 1
) &&
$this->stats[$this->uids[$u->info['id']]]['weapon1'] != 1 &&
$this->stats[$this->uids[$u->info['id']]]['weapon2'] != 1
) {
$zb -= 1;
}
if ($zb < 1) {
$zb = 1;
}
return $zb;
}
///----Спасение функция
public function genTeams($you): string
{
global $u;
$ret = '';
$teams = [];
//выделяем пользователей
$i = 0;
$j = 1;
$tms = [];
$teams[$this->users[$this->uids[$you]]['team']] = '';
$tms[0] = $this->users[$this->uids[$you]]['team'];
while ($i < count($this->uids)) {
if ($this->stats[$i]['hpNow'] > 0) {
if (!isset($teams[$this->users[$i]['team']])) {
$tms[$j] = $this->users[$i]['team'];
$j++;
}
if ($this->stats[$i]['hpNow'] < 0) {
$this->stats[$i]['hpNow'] = 0;
}
if ($this->stats[$i]['hpAll'] < $this->stats[$i]['hpNow']) {
$this->stats[$i]['hpNow'] = $this->stats[$i]['hpAll'];
}
$a1ms = '';
if (isset($this->ga[$this->users[$i]['id']][$you]) && $this->ga[$this->users[$i]['id']][$you]) {
$a1mc = '';
$ac = mysql_fetch_array(
mysql_query(
'SELECT * FROM `battle_act` WHERE `id` = "' . $this->ga[$this->users[$i]['id']][$you] . '" LIMIT 1'
)
);
if (isset($ac) && $ac['time'] + $this->info['timeout'] - 15 < time()) {
$a1mc = 'color:red;';
}
$a1ms = 'style=\"text-decoration: underline; ' . $a1mc . '\"';
} elseif (isset($this->ag[$this->users[$i]['id']][$you]) && $this->ag[$this->users[$i]['id']][$you]) {
$a1mc = '';
$ac = mysql_fetch_array(
mysql_query(
'SELECT * FROM `battle_act` WHERE `id` = "' . $this->ag[$this->users[$i]['id']][$you] . '" LIMIT 1'
)
);
if (isset($ac) && $ac['time'] + $this->info['timeout'] - 15 < time()) {
$a1mc = 'color:green;';
}
$a1ms = 'style=\"text-decoration: overline; ' . $a1mc . '\"';
}
if ($this->users[$i]['login2'] == '') {
$this->users[$i]['login2'] = $this->users[$i]['login'];
}
if ($this->users[$i]['align'] == 9) {
$this->stats[$i]['hpNow'] = $this->stats[$i]['hpNow'] / ($this->stats[$i]['hpAll'] / 100);
$this->stats[$i]['hpAll'] = '100%';
}
$ldr = '';
if ($this->users[$i]['lider'] == $this->info['id']) {
$ldr = '<img width=24 height=15 title=Лидер&nbsp;группы src=//img.new-combats.tech/i/lead' . $this->users[$i]['team'] . '.gif \>';
}
$teams[$this->users[$i]['team']] .= ', ' . $ldr . '<span ' . $a1ms . ' class=\"CSSteam' . $this->users[$i]['team'] . '\" onClick=\"top.chat.addto(\'' . $this->users[$i]['login2'] . '\',\'to\'); return false;\" oncontextmenu=\"top.infoMenu(\'' . $this->users[$i]['login2'] . '\',event,\'main\'); return false;\">' . $this->users[$i]['login2'] . '</span><small> [' . floor(
$this->stats[$i]['hpNow']
) . '/' . $this->stats[$i]['hpAll'] . ']</small>';
}
$i++;
}
//генерируем команды
$i = 0;
while ($i < count($tms)) {
$teams[$tms[$i]] = ltrim($teams[$tms[$i]], ', ');
if ($teams[$tms[$i]] != '') {
$teams[$tms[$i]] = '<img src=\"//img.new-combats.tech/i/lock3.gif\" style=\"cursor:pointer\" width=\"20\" height=\"15\" onClick=\"top.chat.addto(\'team' . $tms[$i] . '\',\'private\'); return false;\"> ' . $teams[$tms[$i]];
$ret .= $teams[$tms[$i]];
if (count($tms) > $i + 1) {
$ret .= ' <span class=\"CSSvs\">&nbsp; против &nbsp;</span> ';
}
}
$i++;
}
return 'genteam("' . $ret . '");';
}
}