2022-12-19 20:22:19 +00:00
< ? php
2023-03-31 16:54:33 +00:00
use Core\Config ;
use Core\Db ;
2023-08-14 15:15:05 +00:00
use Helper\Conversion ;
use User\ItemsModel ;
2023-04-15 19:52:33 +00:00
use User\StatsModel ;
2023-03-31 16:54:33 +00:00
2022-12-19 20:22:19 +00:00
class Battle
{
2022-12-30 19:03:37 +00:00
public array $mncolor = [
2022-12-19 20:22:19 +00:00
1 => '006699' ,
2 => '006699' ,
3 => '006699' ,
4 => '006699' ,
5 => '006699' ,
6 => '006699' ,
7 => '006699' ,
2023-01-10 16:29:32 +00:00
]; //не крит
2022-12-30 19:03:37 +00:00
public array $mcolor = [
2022-12-19 20:22:19 +00:00
1 => 'A00000' ,
2 => '008080' ,
3 => '0000FF' ,
4 => 'A52A2A' ,
5 => '006699' ,
6 => '006699' ,
7 => '006699' ,
2023-01-10 16:29:32 +00:00
]; //не крит
2022-12-30 19:03:37 +00:00
public array $mname = [
2023-01-10 16:29:32 +00:00
'огонь' => 1 ,
'воздух' => 2 ,
'вода' => 3 ,
'земля' => 4 ,
'свет' => 5 ,
'тьма' => 6 ,
'серая' => 7 ,
2022-12-19 20:22:19 +00:00
];
2022-12-30 19:03:37 +00:00
public array $prm = [
2022-12-19 20:22:19 +00:00
/*
2023-01-10 16:29:32 +00:00
act : 1 - когда персонаж получает повреждение
2 - когда персонаж наносит удар
type_of : 1 - уворот
2 - крит
3 - атака
4 - защита
5 - прочее
2022-12-19 20:22:19 +00:00
*/
2023-01-10 16:29:32 +00:00
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 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
21 => [ 'name' => 'Оледенение [4]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
73 => [ 'name' => 'Оледенение [5]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
74 => [ 'name' => 'Оледенение [6]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
75 => [ 'name' => 'Оледенение [7]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
76 => [ 'name' => 'Оледенение [8]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
77 => [ 'name' => 'Оледенение [9]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
78 => [ 'name' => 'Оледенение [10]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
79 => [ 'name' => 'Оледенение [11]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
22 => [ 'name' => 'Отравление [6]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
80 => [ 'name' => 'Отравление [7]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
81 => [ 'name' => 'Отравление [8]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
82 => [ 'name' => 'Отравление [9]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
83 => [ 'name' => 'Отравление [10]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
84 => [ 'name' => 'Отравление [11]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
36 => [ 'name' => 'Регенерация [5]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
85 => [ 'name' => 'Регенерация [6]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
86 => [ 'name' => 'Регенерация [7]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
87 => [ 'name' => 'Регенерация [8]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
88 => [ 'name' => 'Регенерация [9]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
89 => [ 'name' => 'Регенерация [10]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
90 => [ 'name' => 'Регенерация [11]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
23 => [ 'name' => 'Ядовитое Облако [8]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
70 => [ 'name' => 'Ядовитое Облако [9]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
71 => [ 'name' => 'Ядовитое Облако [10]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
72 => [ 'name' => 'Ядовитое Облако [11]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
269 => [ 'name' => 'Иней [8]' , 'act' => 2 , 'type_of' => 9 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
276 => [ 'name' => 'Иней [9]' , 'act' => 2 , 'type_of' => 9 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
277 => [ 'name' => 'Иней [10]' , 'act' => 2 , 'type_of' => 9 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
270 => [ 'name' => 'Духи Льда' , 'act' => 2 , 'type_of' => 5 , 'type_sec' => 5 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
280 => [ 'name' => 'Хватка Льда' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
281 => [ 'name' => 'Жертва Воде' , 'act' => 2 , 'type_of' => 5 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
282 => [ 'name' => 'Ледяное Спасение' , 'act' => 2 , 'type_of' => 5 ],
24 => [ 'name' => 'Медитация' , 'act' => 2 , 'type_of' => 0 , 'moment' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
210 => [ 'name' => 'Магический Барьер [4]' , 'act' => 2 , 'type_of' => 8 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
209 => [ 'name' => 'Магический Барьер [7]' , 'act' => 2 , 'type_of' => 8 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
208 => [ 'name' => 'Магический Барьер [8]' , 'act' => 2 , 'type_of' => 8 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
207 => [ 'name' => 'Магический Барьер [9]' , 'act' => 2 , 'type_of' => 8 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
206 => [ 'name' => 'Магический Барьер [10]' , 'act' => 2 , 'type_of' => 8 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
284 => [ 'name' => 'Магический Барьер [11]' , 'act' => 2 , 'type_of' => 8 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
175 => [ 'name' => 'Магический Барьер [7]' , 'act' => 2 , 'type_of' => 8 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
176 => [ 'name' => 'Магический Барьер [8]' , 'act' => 2 , 'type_of' => 8 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
177 => [ 'name' => 'Магический Барьер [9]' , 'act' => 2 , 'type_of' => 8 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
178 => [ 'name' => 'Магический Барьер [10]' , 'act' => 2 , 'type_of' => 8 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
179 => [ 'name' => 'Магический Барьер [11]' , 'act' => 2 , 'type_of' => 8 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
42 => [ 'name' => 'Метеорит [6]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
121 => [ 'name' => 'Метеорит [7]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
122 => [ 'name' => 'Метеорит [8]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
123 => [ 'name' => 'Метеорит [9]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
124 => [ 'name' => 'Метеорит [10]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
125 => [ 'name' => 'Метеорит [11]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
249 => [ 'name' => 'Каменный Щит' , 'act' => 2 , 'type_of' => 4 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
248 => [ 'name' => 'Песчаный Щит' , 'act' => 2 , 'type_of' => 4 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
251 => [ 'name' => 'Заземление: Плюс' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
252 => [ 'name' => 'Заземление: Минус' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
273 => [ 'name' => 'Туманный Образ [10]' , 'act' => 1 , 'type_of' => 4 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
286 => [ 'name' => 'Туманный Образ [9]' , 'act' => 1 , 'type_of' => 4 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
287 => [ 'name' => 'Туманный Образ [8]' , 'act' => 1 , 'type_of' => 4 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
288 => [ 'name' => 'Туманный Образ [7]' , 'act' => 1 , 'type_of' => 4 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
255 => [ 'name' => 'Воздушный Щит' , 'act' => 2 , 'type_of' => 8 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
337 => [ 'name' => 'Выпить Душу' , 'act' => 2 , 'type_of' => 5 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
33 => [ 'name' => 'Пожирающее Пламя [6]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
56 => [ 'name' => 'Пожирающее Пламя [7]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
57 => [ 'name' => 'Пожирающее Пламя [8]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
58 => [ 'name' => 'Пожирающее Пламя [9]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
59 => [ 'name' => 'Пожирающее Пламя [10]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
60 => [ 'name' => 'Пожирающее Пламя [11]' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
245 => [ 'name' => 'Огненный Щит' , 'act' => 2 , 'type_of' => 9 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
327 => [ 'name' => 'Живая Вода' , 'act' => 2 , 'type_of' => 0 , 'moment' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
328 => [ 'name' => 'Сушеный Мухомор' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
329 => [ 'name' => 'Мешочек Пыли' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
330 => [ 'name' => 'Отвар когтей ПГ' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
331 => [ 'name' => 'Отвар Василиска' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
332 => [ 'name' => 'Точильный Камень' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
333 => [ 'name' => 'Волшебный Эликсир' , 'act' => 2 , 'type_of' => 0 , 'moment' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
334 => [ 'name' => 'Цепь Защитника' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
335 => [
2023-01-10 16:29:32 +00:00
'name' => 'Эликсир Безумного Критовика' ,
2022-12-19 20:22:19 +00:00
'act' => 2 ,
'type_of' => 0 ,
'moment' => 0 ,
'moment_end' => 3 ,
]
,
2023-01-10 16:29:32 +00:00
299 => [ 'name' => 'Ядовитые язвы' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
300 => [ 'name' => 'Элементарный заряд' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
301 => [ 'name' => 'Темное ранение' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
302 => [ 'name' => 'Подлечиться' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
303 => [ 'name' => 'Шкура поглощения' , 'act' => 2 , 'type_of' => 4 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
304 => [ 'name' => 'Особенное проклятье!' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ]
2022-12-19 20:22:19 +00:00
,
2023-01-10 16:29:32 +00:00
305 => [ 'name' => 'Кровожадность' , 'act' => 2 , 'type_of' => 0 , 'moment' => 0 , 'moment_end' => 3 ],
2022-12-19 20:22:19 +00:00
];
2023-09-30 20:17:25 +00:00
public bool $cached = false ; //Кэширование данных
public int $expCoef = 0 ; # % опыта в бою
public int $aBexp = 0 ; //Добавочный опыт в боях
public int $mainStatus = 1 ; //Отображаем главное окно (1 - можно бить, 2 - ожидаем ход противника, 3 - Проиграли. Ожидаем завершения поединка)
public array $info = []; //Информация о поединке
2023-03-31 16:54:33 +00:00
public $users ; //Информация о пользователях в этом бою
2023-09-30 20:17:25 +00:00
public array $stats = []; //Информация о статах пользователей в этом бою
public array $uids = []; //Список пользователей и их id в stats или users пример id пользователя = 555 , то $uids[555] выдаст е г о порядковый номер в массиве users \ stats
public array $atacks = []; //Список ударов в этом бою (действующих)
public array $ga = []; //Список uid кто нанес удар и по кому $ga[ {id кто ударил} ][ {id кого ударил} ]
public array $ag = []; //Список uid кто нанес удар и по кому $ga[ {id кого ударили} ][ {id кто ударил} ]
public int $na = 1 ; //возможность использовать удар
public int $nm = 1 ; //возможность использовать заклятия
public int $hodID = 0 ;
public int | array $stnZbVs = 0 ;
public array $bots = []; // ID ботов
public array $iBots = []; // i бота
public array $stnZb = [];
2023-11-02 13:57:39 +00:00
/** Выбранные зоны атаки и блока .
* @ var array
*/
2023-03-31 16:54:33 +00:00
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 = [];
2023-09-30 20:17:25 +00:00
public array $ainm = [];
public array $rehodeff = [];
public array $poglast = [];
public array $prlog = [];
public array $um_priem = [];
2023-08-10 14:51:16 +00:00
//
2023-09-30 20:17:25 +00:00
public int $import_user = 0 ;
public array $pr_not_use = [];
public array $del_val = [];
2023-08-10 14:51:16 +00:00
//Добавляем нанесенный урон
2023-03-31 16:54:33 +00:00
public function __construct ()
2022-12-19 20:22:19 +00:00
{
2023-03-31 16:54:33 +00:00
ignore_user_abort ( true );
}
2023-08-10 14:51:16 +00:00
//JS информация о игроке
2023-03-31 16:54:33 +00:00
public function maginfoattack ( $u1 , $u2 , $type ) : string
{
/*
1 - огонь ,
2 - воздух ,
3 - вода ,
4 - земля
*/
$v_l = str_replace ( ' ' , ' ' , $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(); ' ;
}
2022-12-19 20:22:19 +00:00
public function hphe ( $uid , $hp , $false_t7 = false )
{
if ( ! isset ( $this -> stats [ $this -> uids [ $uid ]])) {
2023-01-10 16:29:32 +00:00
echo 'WARNING! ОШИБКА! ПОТЕРЯНА ПЕРЕМЕННАЯ ЗДОРОВЬЯ ПЕРСОНАЖА!' ;
2022-12-19 20:22:19 +00:00
} else {
$hpnow = floor ( $this -> stats [ $this -> uids [ $uid ]][ 'hpNow' ]);
$hpall = $this -> stats [ $this -> uids [ $uid ]][ 'hpAll' ];
if ( $hp > 0 ) {
2023-01-10 16:29:32 +00:00
//Хиляем
2022-12-19 20:22:19 +00:00
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' ]);
}
2023-01-10 16:29:32 +00:00
//Отнимаем тактику
2022-12-30 19:03:37 +00:00
if ( ! $false_t7 ) {
2022-12-19 20:22:19 +00:00
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 );
2022-12-30 19:03:37 +00:00
$this -> users [ $this -> uids [ $uid ]][ 'tactic7' ] = round (
( $this -> users [ $this -> uids [ $uid ]][ 'tactic7' ] - $gdhh ),
2
);
2022-12-19 20:22:19 +00:00
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 ) {
2023-01-10 16:29:32 +00:00
//Отнимаемф
2022-12-19 20:22:19 +00:00
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 ;
2023-03-31 16:54:33 +00:00
Db :: sql (
'update stats set last_hp = ?, tactic7 = ? where id = ?' , [
2023-11-02 13:57:39 +00:00
$this -> users [ $this -> uids [ $uid ]][ 'last_hp' ],
$this -> users [ $this -> uids [ $uid ]][ 'tactic7' ],
$uid ,
]
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
}
return floor ( $hp );
}
2023-08-10 14:51:16 +00:00
// todo stopped here //
//Мини лог
2023-03-31 16:54:33 +00:00
/**
* Какая - то хуедрыга для номерных файлов - приёмов
* @ param int $pid
* @ param int $uid
* @ param int $id
* @ return void
*/
2022-12-30 19:03:37 +00:00
public function deleffm ( int $pid , int $uid , int $id )
2022-12-19 20:22:19 +00:00
{
if ( $id > 0 ) {
2023-03-31 16:54:33 +00:00
Db :: sql ( 'delete from eff_users where id = ? and v1 = ? and v2 != 0' , [ $id , 'priem' ]);
2022-12-19 20:22:19 +00:00
} else {
2023-03-31 16:54:33 +00:00
Db :: sql ( 'delete from eff_users where uid = ? and v1 = ? and v2 = ?' , [ $uid , 'priem' , $pid ]);
2022-12-19 20:22:19 +00:00
}
}
2023-08-10 14:51:16 +00:00
//Проверяем завершение боя
2022-12-19 20:22:19 +00:00
public function clear_cache_start ()
{
2023-03-31 16:54:33 +00:00
$uids = implode ( ',' , $this -> ucleari );
Db :: sql ( 'delete from battle_cache where uid in (?)' , [ $uids ]);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//завершение поединка
2022-12-19 20:22:19 +00:00
2023-03-31 16:54:33 +00:00
/**
* Проверка урон приемов над защитными .
* Игрок 1 бьет по Игроку 2 при помощи приема на hp ед . здоровья .
* @ param $u2
* @ param $hp
* @ return mixed
*/
public function testYronPriemAttack ( $u2 , $hp )
{
2023-01-10 16:29:32 +00:00
//Получаем приемы и смотрим когда какой действует
2023-03-31 16:54:33 +00:00
foreach ( $this -> stats [ $this -> uids [ $u2 ]][ 'effects' ] as $effect ) {
2023-11-02 13:57:39 +00:00
if ( ! isset ( $effect ) ||
$effect [ 'id_eff' ] != 22 ||
$effect [ 'v1' ] != 'priem' ||
$effect [ 'v2' ] != 140 && $effect [ 'v2' ] != 211 && $effect [ 'v2' ] != 45
2023-03-31 16:54:33 +00:00
) {
2023-11-02 13:57:39 +00:00
continue ;
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
//Приемы от которых урон = 1 , то есть выдаем 0
$hp [ 'y' ] = - 1 ;
$hp [ 'r' ] = 1 ;
$hp [ 'k' ] = 2 ;
$hp [ 'm_y' ] = 1 ;
$hp [ 'm_k' ] = 2 ;
2022-12-19 20:22:19 +00:00
}
return $hp ;
}
2023-11-02 13:57:39 +00:00
public function takeYronNow ( $uid , $y ) : void
2022-12-19 20:22:19 +00:00
{
2023-08-10 14:51:16 +00:00
global $u ;
if ( ! is_numeric ( $y ) || ! is_numeric ( $uid )) {
return ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
( 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 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
Db :: sql ( 'update stats set battle_yron = battle_yron + ? where id = ?' , [ $y , $uid ]);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
public function myInfo ( $id , $t )
2022-12-19 20:22:19 +00:00
{
2023-09-30 20:17:25 +00:00
global $u ;
2023-08-10 14:51:16 +00:00
if ( ! isset ( $this -> users [ $this -> uids [ $id ]]) && $u -> info [ 'id' ] != $id ) {
return false ;
}
if ( $u -> info [ 'id' ] == $id || ( $u -> info [ 'enemy' ] == $id && $id > 0 )) {
//Всегда обновляем
2023-09-30 20:17:25 +00:00
$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 ,
2023-08-10 14:51:16 +00:00
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 ,
2023-09-30 20:17:25 +00:00
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 ]
);
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$this -> stats [ $this -> uids [ $id ]] = $u -> getStats ( $this -> users [ $this -> uids [ $id ]], 0 , 0 , false , false , true );
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
}
$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 ) {
2023-11-02 13:57:39 +00:00
$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 > ' ;
2023-08-10 14:51:16 +00:00
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' ]]);
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
}
if ( isset ( $eff [ $i ][ 'priem' ][ 'id' ]) && $eff [ $i ][ 'priem' ][ 'neg' ] == 1 ) {
$nseef = 0 ;
2023-03-31 16:54:33 +00:00
}
}
}
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 .= ' (Эффект)' ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
$ei .= '<br>' ;
2022-12-19 20:22:19 +00:00
2023-03-31 16:54:33 +00:00
$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 ) {
2023-11-02 13:57:39 +00:00
$ei .= 'Осталось: ' . Conversion :: secondsToTimeout ( $time_still );
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
} else {
if ( $eff [ $i ][ 'timeUse' ] != 77 && $eff [ $i ][ 'hod' ] < 1 ) {
2023-11-02 13:57:39 +00:00
$ei .= 'Осталось: ' . Conversion :: secondsToTimeout ( $time_still );
2023-03-31 16:54:33 +00:00
} elseif ( $eff [ $i ][ 'hod' ] >= 0 ) {
2023-11-02 13:57:39 +00:00
$ei .= 'Зарядов: ' . $eff [ $i ][ 'hod' ];
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
}
2022-12-19 20:22:19 +00:00
2023-03-31 16:54:33 +00:00
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>' ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
}
2022-12-19 20:22:19 +00:00
2023-03-31 16:54:33 +00:00
//Действие эффекта
$tr = '' ;
$ti = $u -> items [ 'add' ];
$x = 0 ;
2023-08-14 15:15:05 +00:00
$ed = Conversion :: dataStringToArray ( $eff [ $i ][ 'data' ]);
2023-03-31 16:54:33 +00:00
while ( $x < count ( $ti )) {
$n = $ti [ $x ];
if ( isset ( $ed [ 'add_' . $n ], $u -> is [ $n ]) && $n != 'pog' ) {
$z = '' ;
if ( $ed [ 'add_' . $n ] > 0 ) {
$z = '+' ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
$tr .= '<br>' . $u -> is [ $n ] . ': ' . $z . '' . $ed [ 'add_' . $n ];
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
$x ++ ;
}
2022-12-19 20:22:19 +00:00
2023-03-31 16:54:33 +00:00
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 ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
$tr .= '<br>Броня головы: ' . $m1l . '' ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
}
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 ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
$tr .= '<br>Броня корпуса: ' . $m1l . '' ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
}
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 ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
$tr .= '<br>Броня пояса: ' . $m1l . '' ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
}
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 ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
$tr .= '<br>Броня ног: ' . $m1l . '' ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
}
2022-12-19 20:22:19 +00:00
2023-03-31 16:54:33 +00:00
$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>' ;
}
2022-12-19 20:22:19 +00:00
2023-03-31 16:54:33 +00:00
if ( $tr != '' ) {
$ei .= $tr ;
}
if ( $eff [ $i ][ 'info' ] != '' ) {
$ei .= '<br><i>Информация:</i><br>' . $eff [ $i ][ 'info' ];
2022-12-19 20:22:19 +00:00
}
2023-03-31 18:30:14 +00:00
$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>' ;
2023-03-31 16:54:33 +00:00
unset ( $efix );
}
} elseif ( $eff [ $i ] != 'delete' ) {
$i = - 2 ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
$i ++ ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
} else {
2023-03-31 18:30:14 +00:00
$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>' ;
2023-03-31 16:54:33 +00:00
}
$ca = '' ;
if ( $ur [ 'clan' ] > 0 ) {
$cl = Db :: getRow ( 'select * from clan where id = ?' , [ $ur [ 'clan' ]]);
if ( isset ( $cl [ 'id' ])) {
2023-03-31 18:30:14 +00:00
$ca = '<img src=\"//img.new-combats.tech/i/clan/' . $cl [ 'name_mini' ] . '.gif\" title=\"' . $cl [ 'name' ] . '\">' ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
}
if ( $ur [ 'align' ] > 0 ) {
2023-03-31 18:30:14 +00:00
$ca = '<img src=\"//img.new-combats.tech/i/align/align' . $ur [ 'align' ] . '.gif\">' . $ca ;
2023-03-31 16:54:33 +00:00
}
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
];
2023-03-31 18:30:14 +00:00
$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> ","' . $ur [ 'obraz' ] . '",' . floor (
2023-03-31 16:54:33 +00:00
$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>' ;
2023-08-14 15:15:05 +00:00
$td = Conversion :: dataStringToArray ( $itm [ $i ][ 'data' ]);
2023-03-31 16:54:33 +00:00
$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' ]) . '' ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
}
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' ]) . '' ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
}
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' ]) . '' ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
}
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' ]) . '' ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
}
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' ]
);
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
}
$ttl .= $lvar ;
$ccv = '' ;
2022-12-19 20:22:19 +00:00
2023-03-31 16:54:33 +00:00
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' ])) {
$ccv .= 'top.useMagicBattle(\'' . $mgi [ 'mname' ] . '\',' . $itm [ $i ][ 'id' ] . ',\'' . $mgi [ 'img' ] . '\',1,2);' ;
2022-12-19 20:22:19 +00:00
}
2022-12-30 19:03:37 +00:00
}
2022-12-19 20:22:19 +00:00
2023-03-31 16:54:33 +00:00
$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 ++ ;
}
2022-12-19 20:22:19 +00:00
}
2023-03-31 16:54:33 +00:00
return $info ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//Проводим удар
2023-03-31 16:54:33 +00:00
/**
* Проверка на выживших .
* Проклято и сломано .
* @ return bool
*/
2022-12-30 19:03:37 +00:00
public function testUsersLive () : bool
2022-12-19 20:22:19 +00:00
{
$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 ;
}
2023-08-10 14:51:16 +00:00
//Запускаем магические предметы, если в них что-то встроено
2022-12-19 20:22:19 +00:00
public function testFinish ()
{
global $u ;
mysql_query ( 'START TRANSACTION;' );
2022-12-30 19:03:37 +00:00
$test = mysql_fetch_array (
mysql_query (
'SELECT `id` FROM `battle` WHERE `id` = "' . $this -> info [ 'id' ] . '" AND `team_win` = -1 LIMIT 1 FOR UPDATE'
)
);
2022-12-19 20:22:19 +00:00
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 ) {
2023-01-10 16:29:32 +00:00
//Доп.проверка
2022-12-19 20:22:19 +00:00
$tmHpNow = [];
$tmNow = [];
2022-12-30 19:03:37 +00:00
$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' ] . '"'
);
2022-12-19 20:22:19 +00:00
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 ;
2023-01-10 16:29:32 +00:00
echo 'Поединок может завершиться не корректно... (Сообщите Администрации о б этом)' ;
2022-12-19 20:22:19 +00:00
}
}
if ( $tl <= 1 ) {
2023-01-10 16:29:32 +00:00
//завершаем поединок, кто-то один победил, либо ничья
2022-12-19 20:22:19 +00:00
$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 ) {
if ( $this -> info [ 'id' ] > 0 ) {
2023-01-10 16:29:32 +00:00
//данные о игроках в бою
2022-12-19 20:22:19 +00:00
unset ( $this -> users , $this -> stats , $this -> uids , $this -> bots , $this -> iBots );
2022-12-30 19:03:37 +00:00
$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'
);
2022-12-19 20:22:19 +00:00
$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 )) {
2023-01-10 16:29:32 +00:00
//записываем данные
2022-12-19 20:22:19 +00:00
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 ++ ;
}
2023-01-10 16:29:32 +00:00
//записываем статы
2022-12-19 20:22:19 +00:00
$this -> stats [ $ir ] = $u -> getStats ( $pl , 0 , 0 , false , false , true );
$ir ++ ;
}
}
} elseif ( ! isset ( $this -> uids [ $u -> info [ 'id' ]])) {
if ( $this -> info [ 'id' ] > 0 ) {
2023-01-10 16:29:32 +00:00
//данные о игроках в бою
2022-12-30 19:03:37 +00:00
$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'
);
2022-12-19 20:22:19 +00:00
$pl = mysql_fetch_array ( $trl );
2023-01-10 16:29:32 +00:00
//записываем данные
2022-12-19 20:22:19 +00:00
if ( $pl [ 'login2' ] == '' ) {
$pl [ 'login2' ] = $pl [ 'login' ];
}
2022-12-30 19:03:37 +00:00
$this -> users [] = $pl ;
2022-12-19 20:22:19 +00:00
$this -> uids [ $pl [ 'id' ]] = $ir ;
if ( $pl [ 'bot' ] > 0 ) {
2022-12-30 19:03:37 +00:00
$this -> bots [] = $pl [ 'id' ];
2022-12-19 20:22:19 +00:00
$this -> iBots [ $pl [ 'id' ]] = $bi ;
}
2023-01-10 16:29:32 +00:00
//записываем статы
2022-12-30 19:03:37 +00:00
$this -> stats [] = $u -> getStats ( $pl , 0 , 0 , false , false , true );
2022-12-19 20:22:19 +00:00
}
}
if ( $this -> info [ 'izlom' ] > 0 && $tmwin == 1 ) {
2023-01-10 16:29:32 +00:00
// выкидываем ботов из боя
2022-12-19 20:22:19 +00:00
$i = 0 ;
$dlt = '' ;
$dlt2 = '' ;
2022-12-30 19:03:37 +00:00
$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'
);
2022-12-19 20:22:19 +00:00
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 ;
$obr = 0 ;
2023-01-10 16:29:32 +00:00
//Это излом, добавляем еще ботов
2022-12-30 19:03:37 +00:00
if ( $this -> get_chanse ( 20 )) {
2023-01-10 16:29:32 +00:00
//Уникальные монстры
2022-12-19 20:22:19 +00:00
if ( $this -> info [ 'izlomLvl' ] == 8 ) {
$bots = [
2023-01-10 16:29:32 +00:00
'Валентайский Охотник' ,
'Шипокрыл Х а о с а ' ,
'Шипокрыл' ,
'Лик Х а о с а ' ,
'Фанатик Х а о с а ' ,
2022-12-19 20:22:19 +00:00
];
}
$logins_bot = [];
//
2023-01-10 16:29:32 +00:00
echo '<center><strong><font color=red>Приближается нечто...</font></strong></center>' ;
2022-12-19 20:22:19 +00:00
//
$id2 = rand ( 0 , ( count ( $bots ) - 1 ));
2022-12-30 19:03:37 +00:00
$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' ])
);
2022-12-19 20:22:19 +00:00
if ( isset ( $id [ 'id' ]) && $bot != false ) {
//
$btxt = '' ;
if ( $id [ 'align' ] > 0 ) {
2023-03-31 18:30:14 +00:00
$btxt = $btxt . '<img width=12 height=15 src=//img.new-combats.tech/i/align/align' . $id [ 'align' ] . '.gif >' ;
2022-12-19 20:22:19 +00:00
}
if ( $id [ 'clan' ] > 0 ) {
2023-03-31 18:30:14 +00:00
$btxt = $btxt . '<img width=24 height=15 src=//img.new-combats.tech/i/clan/' . $id [ 'clan' ] . '.gif >' ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 18:30:14 +00:00
$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>' ;
2022-12-19 20:22:19 +00:00
if ( $id [ 'sex' ] == 1 ) {
2023-01-10 16:29:32 +00:00
$btxt = $btxt . ' вмешалась в поединок.' ;
2022-12-19 20:22:19 +00:00
} else {
2023-01-10 16:29:32 +00:00
$btxt = $btxt . ' вмешался в поединок.' ;
2022-12-19 20:22:19 +00:00
}
2022-12-30 19:03:37 +00:00
$this -> miniLogAdd (
[
'login' => $id [ 'login' ],
'sex' => $id [ 'sex' ],
'team' => 0 ,
], '{tm1} ' . $btxt
);
2022-12-19 20:22:19 +00:00
//
$logins_bot = $bot [ 'logins_bot' ];
2022-12-30 19:03:37 +00:00
mysql_query (
'UPDATE `users` SET `battle`="' . $this -> info [ 'id' ] . '" WHERE `id` = "' . $bot [ 'id' ] . '" LIMIT 1'
);
2022-12-19 20:22:19 +00:00
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 {
2023-01-10 16:29:32 +00:00
//Обычные монстры
2022-12-19 20:22:19 +00:00
if ( $this -> info [ 'izlomLvl' ] == 8 ) {
$bots = [
2023-01-10 16:29:32 +00:00
'Литейщик' ,
'Проклятие Глубин' ,
'Пустынник Маньяк' ,
'Пустынник Убийца' ,
'Рабочий Мглы' ,
'Смотритель Мглы' ,
'Сторож Мглы' ,
2022-12-19 20:22:19 +00:00
];
}
$logins_bot = [];
//
$id2 = rand ( 0 , ( count ( $bots ) - 1 ));
2022-12-30 19:03:37 +00:00
$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 ) {
2022-12-19 20:22:19 +00:00
//
$btxt = '' ;
if ( $id [ 'align' ] > 0 ) {
2023-03-31 18:30:14 +00:00
$btxt = $btxt . '<img width=12 height=15 src=//img.new-combats.tech/i/align/align' . $id [ 'align' ] . '.gif >' ;
2022-12-19 20:22:19 +00:00
}
if ( $id [ 'clan' ] > 0 ) {
2023-03-31 18:30:14 +00:00
$btxt = $btxt . '<img width=24 height=15 src=//img.new-combats.tech/i/clan/' . $id [ 'clan' ] . '.gif >' ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 18:30:14 +00:00
$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>' ;
2022-12-19 20:22:19 +00:00
if ( $id [ 'sex' ] == 1 ) {
2023-01-10 16:29:32 +00:00
$btxt = $btxt . ' вмешалась в поединок.' ;
2022-12-19 20:22:19 +00:00
} else {
2023-01-10 16:29:32 +00:00
$btxt = $btxt . ' вмешался в поединок.' ;
2022-12-19 20:22:19 +00:00
}
2022-12-30 19:03:37 +00:00
$this -> miniLogAdd (
[
'login' => $id [ 'login' ],
'sex' => $id [ 'sex' ],
'team' => 0 ,
], '{tm1} ' . $btxt
);
2022-12-19 20:22:19 +00:00
//
$logins_bot = $bot [ 'logins_bot' ];
2022-12-30 19:03:37 +00:00
mysql_query (
'UPDATE `users` SET `battle`="' . $this -> info [ 'id' ] . '" WHERE `id` = "' . $bot [ 'id' ] . '" LIMIT 1'
);
2022-12-19 20:22:19 +00:00
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 ));
2022-12-30 19:03:37 +00:00
$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'
)
);
2022-12-19 20:22:19 +00:00
$bot = $u -> addNewbot ( $id [ 'id' ], null , null , $logins_bot , null , $this -> info [ 'izlomRoundSee' ]);
2022-12-30 19:03:37 +00:00
if ( isset ( $id [ 'id' ]) && $bot ) {
2022-12-19 20:22:19 +00:00
//
$btxt = '' ;
if ( $id [ 'align' ] > 0 ) {
2023-03-31 18:30:14 +00:00
$btxt = $btxt . '<img width=12 height=15 src=//img.new-combats.tech/i/align/align' . $id [ 'align' ] . '.gif >' ;
2022-12-19 20:22:19 +00:00
}
if ( $id [ 'clan' ] > 0 ) {
2023-03-31 18:30:14 +00:00
$btxt = $btxt . '<img width=24 height=15 src=//img.new-combats.tech/i/clan/' . $id [ 'clan' ] . '.gif >' ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 18:30:14 +00:00
$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>' ;
2022-12-19 20:22:19 +00:00
if ( $id [ 'sex' ] == 1 ) {
2023-01-10 16:29:32 +00:00
$btxt = $btxt . ' вмешалась в поединок.' ;
2022-12-19 20:22:19 +00:00
} else {
2023-01-10 16:29:32 +00:00
$btxt = $btxt . ' вмешался в поединок.' ;
2022-12-19 20:22:19 +00:00
}
2022-12-30 19:03:37 +00:00
$this -> miniLogAdd (
[
'login' => $id [ 'login' ],
'sex' => $id [ 'sex' ],
'team' => 0 ,
], '{tm1} ' . $btxt
);
2022-12-19 20:22:19 +00:00
//
$logins_bot = $bot [ 'logins_bot' ];
2022-12-30 19:03:37 +00:00
mysql_query (
'UPDATE `users` SET `battle`="' . $this -> info [ 'id' ] . '" WHERE `id` = "' . $bot [ 'id' ] . '" LIMIT 1'
);
2022-12-19 20:22:19 +00:00
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 ));
2022-12-30 19:03:37 +00:00
$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 ) {
2022-12-19 20:22:19 +00:00
//
$btxt = '' ;
if ( $id [ 'align' ] > 0 ) {
2023-03-31 18:30:14 +00:00
$btxt = $btxt . '<img width=12 height=15 src=//img.new-combats.tech/i/align/align' . $id [ 'align' ] . '.gif >' ;
2022-12-19 20:22:19 +00:00
}
if ( $id [ 'clan' ] > 0 ) {
2023-03-31 18:30:14 +00:00
$btxt = $btxt . '<img width=24 height=15 src=//img.new-combats.tech/i/clan/' . $id [ 'clan' ] . '.gif >' ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 18:30:14 +00:00
$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>' ;
2022-12-19 20:22:19 +00:00
if ( $id [ 'sex' ] == 1 ) {
2023-01-10 16:29:32 +00:00
$btxt = $btxt . ' вмешалась в поединок.' ;
2022-12-19 20:22:19 +00:00
} else {
2023-01-10 16:29:32 +00:00
$btxt = $btxt . ' вмешался в поединок.' ;
2022-12-19 20:22:19 +00:00
}
2022-12-30 19:03:37 +00:00
$this -> miniLogAdd (
[
'login' => $id [ 'login' ],
'sex' => $id [ 'sex' ],
'team' => 0 ,
], '{tm1} ' . $btxt
);
2022-12-19 20:22:19 +00:00
//
$logins_bot = $bot [ 'logins_bot' ];
2022-12-30 19:03:37 +00:00
mysql_query (
'UPDATE `users` SET `battle`="' . $this -> info [ 'id' ] . '" WHERE `id` = "' . $bot [ 'id' ] . '" LIMIT 1'
);
2022-12-19 20:22:19 +00:00
mysql_query ( 'UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot [ 'id' ] . '" LIMIT 1' );
if ( rand ( 0 , 10000 ) < 1500 ) {
$obr ++ ;
}
$j ++ ;
}
}
2023-01-10 16:29:32 +00:00
//Каждые 10 вол = +1 монстр
2022-12-19 20:22:19 +00:00
$irb = floor ( $this -> info [ 'izlomRoundSee' ] / 10 );
while ( $irb > 0 ) {
//
if ( rand ( 0 , 100 ) < 20 ) {
$id2 = rand ( 0 , ( count ( $bots ) - 1 ));
2022-12-30 19:03:37 +00:00
$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 ) {
2022-12-19 20:22:19 +00:00
//
$btxt = '' ;
if ( $id [ 'align' ] > 0 ) {
2023-03-31 18:30:14 +00:00
$btxt = $btxt . '<img width=12 height=15 src=//img.new-combats.tech/i/align/align' . $id [ 'align' ] . '.gif >' ;
2022-12-19 20:22:19 +00:00
}
if ( $id [ 'clan' ] > 0 ) {
2023-03-31 18:30:14 +00:00
$btxt = $btxt . '<img width=24 height=15 src=//img.new-combats.tech/i/clan/' . $id [ 'clan' ] . '.gif >' ;
2022-12-19 20:22:19 +00:00
}
2023-03-31 18:30:14 +00:00
$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>' ;
2022-12-19 20:22:19 +00:00
if ( $id [ 'sex' ] == 1 ) {
2023-01-10 16:29:32 +00:00
$btxt = $btxt . ' вмешалась в поединок.' ;
2022-12-19 20:22:19 +00:00
} else {
2023-01-10 16:29:32 +00:00
$btxt = $btxt . ' вмешался в поединок.' ;
2022-12-19 20:22:19 +00:00
}
2022-12-30 19:03:37 +00:00
$this -> miniLogAdd (
[
'login' => $id [ 'login' ],
'sex' => $id [ 'sex' ],
'team' => 0 ,
], '{tm1} ' . $btxt
);
2022-12-19 20:22:19 +00:00
//
$logins_bot = $bot [ 'logins_bot' ];
2022-12-30 19:03:37 +00:00
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'
);
2022-12-19 20:22:19 +00:00
if ( rand ( 0 , 10000 ) < 1500 ) {
$obr ++ ;
}
$j ++ ;
}
}
$irb -- ;
}
}
//
unset ( $logins_bot );
if ( $j == 0 ) {
2023-01-10 16:29:32 +00:00
//конец излома
2023-09-30 20:17:25 +00:00
$this -> finishBattle ( $tml , $tmv , null );
2022-12-30 19:03:37 +00:00
$fin1 = mysql_query (
2023-11-02 13:57:39 +00:00
'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' ] . '")'
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
} else {
$this -> info [ 'izlomRound' ] = $iz [ 'round' ];
2022-12-30 19:03:37 +00:00
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'
);
2022-12-19 20:22:19 +00:00
$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 = [
'time' => time (),
'battle' => $this -> info [ 'id' ],
'id_hod' => ( $this -> hodID + 1 ),
'vars' => $vLog ,
'type' => 1 ,
];
if ( $u -> info [ 'sex' ] == 1 ) {
2022-12-30 19:03:37 +00:00
$mas [ 'text' ] = '<span class=date>' . date (
'H:i'
2023-01-10 16:29:32 +00:00
) . '</span> <strong>' . $u -> info [ 'login' ] . '</strong> воспользовалась приемом "<strong>Передышка</strong>".' ;
2022-12-19 20:22:19 +00:00
} else {
2022-12-30 19:03:37 +00:00
$mas [ 'text' ] = '<span class=date>' . date (
'H:i'
2023-01-10 16:29:32 +00:00
) . '</span> <strong>' . $u -> info [ 'login' ] . '</strong> воспользовался приемом "<strong>Передышка</strong>".' ;
2022-12-19 20:22:19 +00:00
}
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 );
2022-12-30 19:03:37 +00:00
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'
);
2022-12-19 20:22:19 +00:00
}
} else {
2023-01-10 16:29:32 +00:00
//завершаем бой
2023-09-30 20:17:25 +00:00
$this -> finishBattle ( $tml , $tmv , null );
2022-12-19 20:22:19 +00:00
if ( $this -> info [ 'izlom' ] > 0 ) {
2022-12-30 19:03:37 +00:00
$fin1 = mysql_query (
2023-11-02 13:57:39 +00:00
'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' ] . '")'
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
}
}
if ( isset ( $fin1 )) {
2022-12-30 19:03:37 +00:00
mysql_query (
2023-11-02 13:57:39 +00:00
'INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","31","23","' . $u -> info [ 'id' ] . '","Касание Х а о с а ","nofastfinisheff=1","' . time () . '")'
2022-12-30 19:03:37 +00:00
);
2023-01-28 02:24:37 +00:00
$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 )
2022-12-30 19:03:37 +00:00
);
2023-01-28 02:24:37 +00:00
( new Chat ()) -> sendMsg ( $cmsg );
2022-12-19 20:22:19 +00:00
$i01 = 1 ;
while ( $i01 <= (( $this -> info [ 'izlomObr' ] - $this -> info [ 'izlomObrNow' ])) * 7 ) {
2023-08-14 15:15:05 +00:00
ItemsModel :: addItem ( 1226 , $u -> info [ 'id' ], '|sudba=' . $u -> info [ 'login' ]);
2022-12-19 20:22:19 +00:00
$i01 ++ ;
}
2022-12-30 19:03:37 +00:00
mysql_query (
2023-11-02 13:57:39 +00:00
'INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES ("' . $u -> info [ 'id' ] . '","' . time () . '","capitalcity","' . $u -> info [ 'room' ] . '","izlom"," ","","")'
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
unset ( $fin1 );
}
}
} else {
mysql_query ( 'START TRANSACTION;' );
2022-12-30 19:03:37 +00:00
$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'
)
);
2022-12-19 20:22:19 +00:00
mysql_query ( 'COMMIT;' );
if ( isset ( $test [ 'id' ])) {
2023-09-30 20:17:25 +00:00
$this -> finishBattle ( null , null , 10 );
2022-12-19 20:22:19 +00:00
}
}
}
2023-08-10 14:51:16 +00:00
//Поглощение урона
2023-11-02 13:57:39 +00:00
private function get_chanse ( int $percent ) : bool
2023-08-10 14:51:16 +00:00
{
2023-11-02 13:57:39 +00:00
return rand ( 0 , 100 ) <= $percent ;
2023-08-10 14:51:16 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Поглощение урона
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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 );
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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' ] . '")'
);
2023-11-02 13:57:39 +00:00
if ( $this -> get_chanse ( 12 )) {
2023-08-10 14:51:16 +00:00
$this -> get_comment ();
}
}
2022-12-30 19:03:37 +00:00
2022-12-19 20:22:19 +00:00
2023-09-30 20:17:25 +00:00
private function get_comment ()
2023-08-10 14:51:16 +00:00
{
$boycom = [
'А танцуешь ты лучше.' ,
'А мы что, в прятки тут играем?' ,
'А вы разве пингвинов никогда не видели?' ,
'А , ведь когда-то, вы были красивыми… А теперь? Н у и рожи! Жуть!' ,
'А потом еще труп пинать будут.' ,
'А я вчера ночью за соседями подглядывал. Они точно так же кувыркались' ,
'А ведь вы живых людей дубасите...' ,
'А вот я вчера в зоопарке был...' ,
'А вы в стройбате не служили?' ,
'А вы видели, чтобы так на улице делали!?' ,
'А вы знали что ёжики размножаются в интернете?' ,
'А жить-то, как хочется:' ,
'А из-за чего вы собственно дерётесь?' ,
'А чего ржёте, вы ещё остальных не видели' ,
'А что произойдёт если ты испугаешся до полусмерти дважды?!' ,
'Больше так не делай. Ты же не садист?' ,
'Без комментариев...' ,
'Больно ведь!' ,
'Быстро ты за монитор спрятался!' ,
'В с е хотят попасть в рай, но никто не хочет умирать!' ,
'Вчера с такой девчонкой познакомился.' ,
'В с е г о 5 минут знакомы, а дерутся, словно супруги с 20-ти летним стажем...' ,
'В с е . Я так больше не могу.' ,
'В конце концов, кто-то победит?' ,
'Вы чего, с дерева упали?' ,
'Возятся как сонные мухи... давайте я вам лучше анекдот расскажу: ...' ,
'Вот видишь, как полезно чистить зубы на ночь?' ,
'Вот вы все руками махаете, а за вами уже очередь' ,
'Вот попадёте вы в плен и вас там будут долго бить. Н о вы ничего не расскажете... и не потому, что вы такой стойкий, просто вы ничего не знаете' ,
'Вы бы лучше пошли потренировались!' ,
'Вы все еще разминаетесь? Позовите, когда кости в муку друг другу разминать будете.' ,
'Вы же бойцы! Имейте совесть!' ,
'Гаси недоумка!' ,
'Да, если бы я смог это остановить, то получил бы нобелевскую премию `З а мир` ' ,
'Да куда они бьют?!' ,
'Давайте быстрее! З а вами уже очередь образовалась.' ,
'Давайте обойдемся сегодня таймаутом. А ? А то мне уже кошмары скоро будут сниться.' ,
'Дерутся как девчонки!' ,
'Дети, посмотрите налево... Ой!.. Нет, туда лучше не смотреть.' ,
'Если так будет продолжаться, то скоро мы заснем!' ,
'Если бы у меня было кресло-качалка, я бы в нём качался...' ,
'Если вы что-то сказать хотите, то лучше молчите :)' ,
'Жестокость не порок.' ,
'Жизнь вне нашего клуба - это пустая трата кислорода!!!' ,
'Жми! Дави! Кусай! Царапай!' ,
'З а такие бои надо в х а о с отправлять!' ,
'Знаете откуда в комиссионном магазине столько вещей? Это я после ваших гулянок собираю и сдаю туда. Иногда вместе с частями тела, застрявшими в них.' ,
'Здесь люди так близки друг к другу. Просто иначе ударить нельзя.' ,
'И пролитая кровь еще пульсирует...' ,
'Инвалидов развелось...' ,
'Какой бой!!!' ,
'Кто!? Кто здесь?!' ,
'Кто вас этому научил?' ,
'Кузнечик, блин...' ,
'Куплю импортный проигрыватель грампластинок.' ,
'Лошадью ходи!' ,
'Лучше враг, чем друг - враг.' ,
'Ладно, вы тут пока друг друга за волосы таскайте, а я пойду, пообедаю.' ,
'Мне ваш балет уже надоел!' ,
'Может, начнется-таки настоящий бой???' ,
'Мысли лезут в голову изнутри, а удары снаружи.' ,
'Н у и где ваши коронные удары? Где живописные падения я спрашиваю!' ,
'Н у , нельзя же так наотмашь лупить!' ,
'Надо раньше было думать, теперь смертельно поздно...' ,
'Н а такое зрелище билеты продавать можно. Народ ухохочется!' ,
'Нет! Н е надо драки! А ... ладно деритесь, все равно не умеете.' ,
'Нет, ну должен быть повод, должен же быть повод?' ,
'Нет, я отказываюсь это комментировать!' ,
'Н е таких обламывали!' ,
'Н у выпили вы рюмку, ну две... ну литр, ну два... так зачем же после этого драку затевать?!' ,
'Н у и кто за этот погром платить будет?' ,
'Н у и оскал у вас. Из вашей улыбки кастеты делать можно.' ,
'Н у , что же ты..? Н е печалься. Выше голову, так по ней удобней попасть.' ,
'Ничего... Блок тоже удар.' ,
'Обернись!!!.... Поздно...' ,
'О г о ! Научите меня так не делать.' ,
'Осторожно! Сделаешь дырочку, уже не запломбируешь!' ,
'Оно вам надо???' ,
'Обычное дело...там что-то отклеилось.' ,
'Ой, и заболтался я с вами...' ,
'Он же не промахнётся если ты не отойдёшь!' ,
'По-моему, кому-то светит инвалидность.' ,
'Подкинь ему грабли, на которые он еще не наступал.' ,
'Прав был кот Леопольд, давайте жить дружно?' ,
'При ударе в живот нарушается кислотно-щелочной баланс.' ,
'Проверь, не торчит ли у тебя нож из живота.' ,
'Перестаньте мне орать!' ,
'Подкинь ему грабли, на которые он еще не наступал.' ,
'Прыгают тут как блохи... В с е , я пошел за дихлофосом!' ,
'Разбудите меня когда эта порнография закончится...' ,
'Ребенок сильнее ударил бы!' ,
'Славно вмазал!' ,
'Славно они веселятся' ,
'Смотрю вот на вас, и слезы наворачиваются.' ,
'Сначала учатся ходить, а потом только в драку лезут.' ,
'Так они друг другу что-нибудь сломают.' ,
'Так ты ему все кости переломаешь!' ,
'У меня в подъезде точно так же соседа отмудохали' ,
'Убогих развелось...' ,
'У х ты, какой прыткий!' ,
'Фашист!! Надо ж, так по больному месту врезать...' ,
'Хватит бить е г о о б угол моей кабинки! Мне же потом е е чинить.' ,
'Хулиганы, прекратите немедленно!' ,
'Хочешь, подскажу, куда он ударит?' ,
'Хорошо, что у меня ловкости больше чем у вас всех, а то б вы и меня в инвалидную коляску посадили бы.' ,
'Хороший бой!' ,
'Хороший удар!' ,
'Хиляк-разрядник!' ,
'Что ты е г о за волосы схватил?! Отпусти немедленно!' ,
'Щас я вас настигну, вот тогда мы и похохочем' ,
'Это была какая-то неизвестная мне техника...' ,
'Это же противник, а не глина! Хватит мяться!' ,
'Это не бой, это издевательское избиение.' ,
'Это поубавит спеси' ,
'Это и был твой план `Б` ?' ,
'Это была какая-то неизвестная мне техника...' ,
'Я же предупреждал, - будет больно.' ,
'Я не страдаю безумием. Я наслаждаюсь им каждую минуту :)' ,
'Я красивый, я сильный, я умный, я добрый. А вот вы? Вы себя-то видели?!' ,
'Я тоже умею драться, но не буду...' ,
'(тревожно озираясь) я вам по секрету скажу... за вами наблюдают!' ,
'<вырезано цензурой> после боя я этих <вырезано цензурой> обоих в <вырезано цензурой> и <вырезано цензурой>' ,
'<вырезано цензурой> каратисты фиговы' ,
];
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
$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' => $txt ,
'vars' => $vLog ,
'zona1' => '' ,
'zonb1' => '' ,
'zona2' => '' ,
'zonb2' => '' ,
'type' => '1' ,
];
$this -> add_log ( $mas1 );
2023-08-10 14:51:16 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Иг р о к1 наносит удар Иг р о к2
2022-12-19 20:22:19 +00:00
2023-09-30 20:17:25 +00:00
private function finishBattle ( $t , $v , $nl )
2023-08-10 14:51:16 +00:00
{
2023-09-30 20:17:25 +00:00
global $u ;
2023-08-10 14:51:16 +00:00
$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 ++ ;
}
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//данные о игроках в бою
$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' ];
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
$this -> users [ $i ] = $pl ;
$this -> uids [ $pl [ 'id' ]] = $i ;
if ( $pl [ 'bot' ] > 0 ) {
$this -> bots [ $bi ] = $pl [ 'id' ];
$this -> iBots [ $pl [ 'id' ]] = $bi ;
$bi ++ ;
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
//записываем статы
$this -> stats [ $i ] = $u -> getStats ( $pl , 0 , 0 , false , false , true );
$i ++ ;
}
unset ( $pl , $t );
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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'
)
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
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 )) {
2023-11-02 13:57:39 +00:00
$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' ] . '"),' ;
2023-08-10 14:51:16 +00:00
if ( $this -> users [ $i ][ 'team' ] == $this -> info [ 'team_win' ] && $this -> info [ 'team_win' ] > 0 ) {
$vtvl .= '<strong>' . $this -> users [ $i ][ 'login' ] . '</strong>, ' ;
}
$i ++ ;
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$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 ];
2022-12-30 19:03:37 +00:00
2023-08-10 14:51:16 +00:00
mysql_query (
'UPDATE `battle` SET `players_c` = "' . $this -> info [ 'players_c' ] . '" WHERE `id` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
2022-12-30 19:03:37 +00:00
2023-08-10 14:51:16 +00:00
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 (
2022-12-30 19:03:37 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'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'
2022-12-30 19:03:37 +00:00
)
);
2023-08-10 14:51:16 +00:00
$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 ));
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$i ++ ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$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' ] . '")'
);
2022-12-30 19:03:37 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
if ( $vl != '' ) {
$vl = rtrim ( $vl , ',' );
2022-12-30 19:03:37 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'INSERT INTO `battle_last` (`login`,`city`,`battle_id`,`uid`,`time`,`team`,`lvl`,`align`,`clan`,`exp`,`bot`,`money`,`money2`,`money3`) VALUES ' . $vl . ''
2022-12-30 19:03:37 +00:00
);
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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' ] . '")'
2022-12-30 19:03:37 +00:00
);
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$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 (
2022-12-30 19:03:37 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'SELECT * FROM `eff_users` WHERE `v1` = "priem" AND `v2` = 292 AND `uid` = "' . $this -> users [ $i ][ 'id' ] . '" AND `delete` = "0" LIMIT 1'
2022-12-30 19:03:37 +00:00
)
);
2023-08-10 14:51:16 +00:00
$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' ] . '")'
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
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 ));
}
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$i ++ ;
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
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' ] . '")'
);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$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' ] . '")'
);
2022-12-30 19:03:37 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Турнир БС
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' )
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
$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 );
2022-12-30 19:03:37 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
' 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 ++ ;
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
$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'
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
unset ( $bs , $j );
2022-12-30 19:03:37 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Награда за события
if ( $this -> info [ 'type' ] == 500 && isset ( $tststrt [ 'id' ])) {
//Предметы которые выпадают в центр
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$i = 0 ;
while ( $i < count ( $this -> users )) {
$cmsg = new ChatMessage ();
$cmsg -> setType ( 6 );
$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>' ;
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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 ++ ;
2022-12-19 20:22:19 +00:00
}
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
// выкидываем ботов из боя
$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' )
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
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'
)
);
2022-12-30 19:03:37 +00:00
2023-08-10 14:51:16 +00:00
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'
);
2022-12-30 19:03:37 +00:00
2023-08-10 14:51:16 +00:00
if ( $this -> users [ $i ][ 'team' ] == $this -> info [ 'team_win' ] && rand ( 1 , 100 ) <= 5 ) {
2023-08-14 15:15:05 +00:00
ItemsModel :: addItem ( 10020 , $pld [ 'id' ], '' );
2023-08-10 14:51:16 +00:00
$pld [ 'battle_text' ] .= ' З а Героическое Сражение вы получаете <strong>Жетон Успеха</strong>. ' ;
}
} else {
$pld [ 'battle_text' ] .= ' Вы ничего не получили. <strong>Нужно набить больше 500 урона урона</strong> .' ;
}
$cmsg = new ChatMessage ();
$cmsg -> setRoom ( $pld [ 'room' ]);
$cmsg -> setTo ( $pld [ 'login' ]);
$cmsg -> setText ( $pld [ 'battle_text' ]);
$cmsg -> setType ( 6 );
$chat -> sendMsg ( $cmsg );
2022-12-30 19:03:37 +00:00
2023-08-10 14:51:16 +00:00
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'
);
2022-12-19 20:22:19 +00:00
}
}
2023-08-10 14:51:16 +00:00
unset ( $plde , $pld );
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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'
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
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 ;
2022-12-30 19:03:37 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'UPDATE `users` SET `battle` = "0" WHERE `id` = "' . $this -> users [ $i ][ 'id' ] . '" LIMIT 1'
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
mysql_query (
2023-11-02 13:57:39 +00:00
'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'
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
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 ;
2022-12-30 19:03:37 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'UPDATE `users` SET `battle` = "0" WHERE `id` = "' . $this -> users [ $i ][ 'id' ] . '" LIMIT 1'
);
mysql_query (
2023-11-02 13:57:39 +00:00
'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'
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
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 ++ ;
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$i ++ ;
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$botss = [];
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Из бота падают предметы
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 -> 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> был предмет "' . $itmnm . '" и кто угодно может поднять е г о '
);
$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' ];
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$cmsg -> setText (
'У <strong>' . $tbot2 [ 'login' ] . '</strong> был предмет "' . $itmnm . '" и кто угодно может поднять е г о '
);
$chat -> sendMsg ( $cmsg );
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$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'] . ' " ) '
);
}
//
//Странички саныча,
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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' ];
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$cmsg -> setText (
'У <strong>' . $tbot2 [ 'login' ] . '</strong> был предмет "' . $itmnm . '" и кто угодно может поднять е г о '
);
$chat -> sendMsg ( $cmsg );
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$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'] . ' " ) '
);
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
mysql_query (
2023-11-02 13:57:39 +00:00
'UPDATE `dungeon_bots` SET `delete` = "' . time () . '" AND `inBattle` = "' . $this -> info [ 'id' ] . '" WHERE `dn` = "' . $this -> info [ 'dn_id' ] . '" AND `for_dn` = "0" AND `delete` = "0" '
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
} else {
//выкидываем всех игроков в клетку RESTART
$dnr = 1 ;
if ( $this -> info [ 'dungeon' ] != 102 ) {
2022-12-30 19:03:37 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'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' ] . '"'
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
}
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$gm = [];
$gms = [];
$bm = [];
$bms = [];
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Квестовый раздел
//Квестовый раздел
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//завершаем поединок
$i = $this -> uids [ $u -> info [ 'id' ]];
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
if ( $this -> info [ 'team_win' ] >= 0 ) {
$cmsg = new ChatMessage ();
$cmsg -> setRoom ( $this -> users [ $i ][ 'room' ]);
$cmsg -> setType ( 6 );
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
if ( $this -> stats [ $i ][ 'pbe' ] > 0 ) {
//Бонус покупателя
$this -> expCoef += $this -> stats [ $i ][ 'pbe' ];
2022-12-30 19:03:37 +00:00
}
2022-12-19 20:22:19 +00:00
2023-09-30 20:17:25 +00:00
if ( $this -> info [ 'razdel' ] == 5 && ( Config :: get ( 'm' ) >= 6 && Config :: get ( 'm' ) <= 8 || Config :: get ( 'w' ) == 0 || Config :: get ( 'w' ) == 6 )) {
2023-08-10 14:51:16 +00:00
$this -> expCoef += 5 ;
2022-12-30 19:03:37 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$this -> stats [ $i ][ 'exp' ] += $this -> expCoef ;
2022-12-19 20:22:19 +00:00
2023-09-30 20:17:25 +00:00
$this -> stats [ $i ][ 'exp' ] += $this -> aBexp * Config :: get ( 'exp' );
2022-12-30 19:03:37 +00:00
2023-08-10 14:51:16 +00:00
if ( $this -> stats [ $i ][ 'os4' ] > 0 ) {
$this -> stats [ $i ][ 'exp' ] += $this -> stats [ $i ][ 'os4' ];
}
2022-12-19 20:22:19 +00:00
2022-12-30 19:03:37 +00:00
2023-08-10 14:51:16 +00:00
$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' ]))
);
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
if ( $this -> info [ 'type' ] == 564 ) {
//Бой с копией
$this -> users [ $i ][ 'battle_exp' ] = 0 ;
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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 (
2022-12-30 19:03:37 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'SELECT `dungeonexp`,`id` FROM `rep` WHERE `id` = "' . $this -> users [ $i ][ 'id' ] . '" LIMIT 1'
2022-12-30 19:03:37 +00:00
)
);
2023-08-10 14:51:16 +00:00
$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 ];
2022-12-19 20:22:19 +00:00
}
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
unset ( $rep );
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
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' ]])
)
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
$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 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
} else { // В любой непонятной ситуцаии.
$this -> users [ $i ][ 'battle_exp' ] = 0 ;
2022-12-30 19:03:37 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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 );
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
$sinf = '' ;
2023-09-30 20:17:25 +00:00
if ( Config :: get ( 'exp_mega' )) {
2023-08-10 14:51:16 +00:00
$this -> users [ $i ][ 'battle_exp' ] += floor (
2023-09-30 20:17:25 +00:00
$this -> users [ $i ][ 'battle_exp' ] / 100 * Config :: get ( 'exp_mega_val' )[ $this -> users [ $i ][ 'level' ]]
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
}
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 );
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$bm [ $i ] = $this -> info [ 'money' ];
$bms [ $i ] = $this -> info [ 'money3' ];
$this -> users [ $i ][ 'lose' ] += 1 ;
$act01 = 2 ;
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
//Рассчитываем кол-во выигрышных сумм и кто сколько получил (для екр.)
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 );
2022-12-19 20:22:19 +00:00
}
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
//заносим данные в БД
//Поломка предметов
if ( $act01 == 1 ) {
//победа
if ( $this -> users [ $i ][ 'dnow' ] == 0 && $this -> users [ $i ][ 'hpNow' ] < 1 ) {
$lom = 0.05 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
} 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' ];
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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'
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
if ( $upd ) {
$this -> users [ $i ][ 'battle_exp' ] = round ( $this -> users [ $i ][ 'battle_exp' ] / 100 * 67 );
$this -> info [ 'addExp' ] -= 33.333 ;
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
}
$prsusers = mysql_fetch_array (
2022-12-30 19:03:37 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'SELECT SUM(`price1`) FROM `battle_users` WHERE `battle` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
)
);
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$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 ;
2022-12-30 19:03:37 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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> за этот бой.' ;
2023-12-01 21:05:11 +00:00
Delo :: add (
4 ,
'System.battle' ,
$this -> users [ $i ][ 'id' ],
'"<span style="color: olive; ">System.battle</span>": Персонаж выйграл <strong>' . $gm [ $i ] . ' кр.</strong> (В бою №' . $this -> info [ 'id' ] . ').' ,
2023-08-10 14:51:16 +00:00
);
$this -> users [ $i ][ 'money' ] += $gm [ $i ];
} elseif ( isset ( $bm [ $i ])) {
$prc .= ' Вы заплатили <strong>' . $bm [ $i ] . ' кр.</strong> за этот бой.' ;
2023-12-01 21:05:11 +00:00
Delo :: add (
4 ,
'System.battle' ,
$this -> users [ $i ][ 'id' ],
'"<span style="color: olive; ">System.battle</span>": Персонаж <i>проиграл</i> <strong>' . $gm [ $i ] . ' кр.</strong> (В бою №' . $this -> info [ 'id' ] . ').' ,
2023-08-10 14:51:16 +00:00
);
$this -> users [ $i ][ 'money' ] -= $bm [ $i ];
2022-12-19 20:22:19 +00:00
}
2022-12-30 19:03:37 +00:00
}
2023-09-30 20:17:25 +00:00
if ( Config :: get ( 'money_haot' ) && $this -> users [ $i ][ 'exp' ] <= 200000000 ) {
2023-08-10 14:51:16 +00:00
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' ]];
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Какая цена фулла должна быть
$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' ]];
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Сколько екр дается
$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' ]];
2022-12-19 20:22:19 +00:00
2023-09-30 20:17:25 +00:00
if ( Config :: get ( 'm' ) >= 6 && Config :: get ( 'm' ) <= 8 ) {
2023-08-10 14:51:16 +00:00
//Летний период
2023-09-30 20:17:25 +00:00
if ( Config :: get ( 'w' ) == 0 || Config :: get ( 'w' ) == 5 || Config :: get ( 'w' ) == 6 ) {
2023-08-10 14:51:16 +00:00
//Выходные дни
$admn = $admn * 2 ;
2022-12-19 20:22:19 +00:00
}
2023-09-30 20:17:25 +00:00
} elseif ( Config :: get ( 'w' ) == 0 || Config :: get ( 'w' ) == 5 || Config :: get ( 'w' ) == 6 ) {
2023-08-10 14:51:16 +00:00
//Выходные дни
$admn = $admn * 2 ;
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
if ( $this -> users [ $i ][ 'battle_exp' ] < $trexp ) {
$prc .= ', Награда <strong>0 Е К Р </strong> за этот бой (Мало опыта набили).' ;
} elseif ( $admn > 0 ) {
if ( $this -> info [ 'type' ] != 33 ) {
$prc .= ', Награда <strong>' . $admn . ' Е К Р </strong> за этот бой.' ;
2022-12-19 20:22:19 +00:00
}
2023-12-01 21:05:11 +00:00
Delo :: add (
4 ,
'System.battle' ,
$this -> users [ $i ][ 'id' ],
'"<span style="color: olive; ">System.battle</span>": Персонаж получил <strong>' . $admn . ' Е К Р </strong> (В бою №' . $this -> info [ 'id' ] . ').' ,
2023-08-10 14:51:16 +00:00
);
$this -> users [ $i ][ 'money2' ] += $admn ;
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
}
}
if ( $this -> info [ 'money3' ] > 0 ) {
if ( isset ( $gms [ $i ])) {
$prc .= ' Вы выйграли <strong>' . $gms [ $i ] . ' $.</strong> за этот бой.' ;
2023-12-01 21:05:11 +00:00
Delo :: add (
4 ,
'System.battle' ,
$this -> users [ $i ][ 'id' ],
'"<span style="color: olive; ">System.battle</span>": Персонаж выйграл <strong>' . $gms [ $i ] . ' $.</strong> (В бою №' . $this -> info [ 'id' ] . ').' ,
2023-08-10 14:51:16 +00:00
);
$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> за этот бой.' ;
2023-12-01 21:05:11 +00:00
Delo :: add (
4 ,
'System.battle' ,
$this -> users [ $i ][ 'id' ],
'"<span style="color: olive; ">System.battle</span>": Персонаж <i>проиграл</i> <strong>' . $gms [ $i ] . ' $.</strong> (В бою №' . $this -> info [ 'id' ] . ').' ,
2023-08-10 14:51:16 +00:00
);
$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 ,
];
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
if ( $this -> users [ $i ][ 'level' ] < 8 ) {
$lime = 5400 ;
} else {
$lime = $lime [ $this -> users [ $i ][ 'level' ]];
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
if ( $this -> stats [ $i ][ 'silver' ] >= 5 ) {
$lime += round ( $lime );
}
if ( $this -> users [ $i ][ 'stopexp' ] == 1 ) {
$lime = 0 ;
$this -> users [ $i ][ 'battle_exp' ] = 0 ;
}
2023-09-30 20:17:25 +00:00
if ( $lime < $this -> users [ $i ][ 'battle_exp' ] && Config :: get ( 'limitedexp' )) {
2023-08-10 14:51:16 +00:00
$this -> users [ $i ][ 'battle_exp' ] = $lime ;
}
unset ( $lime );
if ( $btlstatus [ 0 ] > 0 ) {
if ( $this -> info [ 'type' ] == 99 ) {
$prc .= ' (' . $btlstatus [ 3 ] . ')' ;
} else {
$prc .= ' (' . $btlstatus [ 2 ] . ')' ;
2022-12-19 20:22:19 +00:00
}
2022-12-30 19:03:37 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
if ( $this -> info [ 'dungeon' ] == 1 && $this -> users [ $i ][ 'team' ] == $this -> info [ 'team_win' ]) {
//канализация лимит
$rep = mysql_fetch_array (
2022-12-30 19:03:37 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'SELECT `dl1`,`id` FROM `rep` WHERE `id` = "' . $this -> users [ $i ][ 'id' ] . '" LIMIT 1'
2022-12-30 19:03:37 +00:00
)
);
2023-08-10 14:51:16 +00:00
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 ;
}
2022-12-30 19:03:37 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'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 ;
2022-12-19 20:22:19 +00:00
}
2022-12-30 19:03:37 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
if ( $this -> users [ $i ][ 'battle_exp' ] < 1 ) {
$this -> users [ $i ][ 'battle_exp' ] = 0 ;
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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 = '' ;
}
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
if ( $this -> user [ $i ][ 'host_reg' ] == 'real_bot_user' ) {
$this -> users [ $i ][ 'battle_exp' ] = round ( $this -> users [ $i ][ 'battle_exp' ] / 3 );
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
if ( $sinf != '' ) {
$sinf = ' ( ' . $sinf . ' )' ;
2022-12-30 19:03:37 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//--------------Лимит 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 ;
}
//-------------------------------------
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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
2022-12-30 19:03:37 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
/*Выпадение зубов в конце боя */
2023-09-30 20:17:25 +00:00
if ( Config :: get ( 'nolevel' )) {
2023-08-10 14:51:16 +00:00
$rex95 = substr ( $this -> users [ $i ][ 'exp' ], - 1 );
if ( $this -> users [ $i ][ 'money4' ] < 1000 && $this -> users [ $i ][ 'exp' ] == 12499 ) {
$rex95 = 6 ;
$rex95 = 5 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
} else {
$rex95 = 5 ;
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
//Снижение времени Право на подвиг Титул за победу в хаоте
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 ) {
2022-12-30 19:03:37 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'UPDATE `eff_users` SET `timeUse` = `timeUse` - 300 WHERE `id_eff`=478 AND `delete` = 0 AND `uid` =' . $this -> users [ $i ][ 'id' ] . ' LIMIT 1'
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
$this -> users [ $i ][ 'battle_text' ] .= ' З а победу в хаоте и нанесение урона в <strong>' . $urcheck . '</strong> и более вы получаете <strong>-5 мин.</strong> к праву на подвиг!' ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
}
mysql_query (
'UPDATE `users_achiv` SET `vx`= `vx`+1 WHERE `id` = "' . $this -> users [ $i ][ 'id' ] . '" LIMIT 1'
); //
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
}
//Награда за клан вар
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
}
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Новая выдача на трупожора
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' )
);
2023-01-28 02:24:37 +00:00
2023-08-10 14:51:16 +00:00
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' ;
2022-12-30 19:03:37 +00:00
} else {
2023-08-10 14:51:16 +00:00
$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' ;
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
} else {
$mon [ 'win_itm' ] = '4392@1' ;
$timewait = 0 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
if ( $this -> users [ $i ][ 'battle_yron' ] > 0 ) {
mysql_query (
2023-11-02 13:57:39 +00:00
'INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","478","111","' . $this -> users [ $i ][ 'id' ] . '","Право на подвиг","pravonapodvig=1","' . time () . '")'
2023-08-10 14:51:16 +00:00
);
2022-12-19 20:22:19 +00:00
}
2022-12-30 19:03:37 +00:00
mysql_query (
2023-11-02 13:57:39 +00:00
'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"," ","","")'
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
mysql_query (
2023-11-02 13:57:39 +00:00
'INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","479","112","' . $u -> info [ 'id' ] . '","Защита от нападения","zashitatk=1","' . time () . '")'
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
$ritem = rand ( 1 , 1000 );
if ( $ritem == 555 ) {
$mon [ 'win_itm' ] = $mon [ 'win_itm' ] . ',5022@1' ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//
$this -> addGlobalItems (
2023-09-30 20:17:25 +00:00
$mid ,
$this -> users [ $i ][ 'id' ],
$mon [ 'win_itm' ],
$mon [ 'win_ico' ],
1 ,
$mon [ 'win_money1' ],
$mon [ 'win_money2' ]
);
2023-08-10 14:51:16 +00:00
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
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>.' ;
2023-08-14 15:15:05 +00:00
ItemsModel :: addItem ( 4504 , $this -> users [ $i ][ 'id' ], '|sudba=1' );
2023-08-10 14:51:16 +00:00
}
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Добавляем воинственность
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 ;
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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 (
2023-11-02 13:57:39 +00:00
'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 . '","")'
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
}
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 );
}
2022-12-30 19:03:37 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'UPDATE `clan` SET `exp` = `exp` + "' . round (
$this -> users [ $i ][ 'battle_exp' ] / 100 * $cpr
) . '" WHERE `id` = "' . $this -> users [ $i ][ 'clan' ] . '" LIMIT 1'
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$this -> users [ $i ][ 'battle_exp' ] = 0 ; //stats
if ( $this -> users [ $i ][ 'team' ] == $this -> info [ 'team_win' ]) {
2022-12-30 19:03:37 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'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'
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
}
2023-01-28 02:24:37 +00:00
2023-08-10 14:51:16 +00:00
//репутация
$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'
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
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'
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
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 " , " "
) '
);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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> трагически погибла и находится в начале лабиринта' ;
2022-12-19 20:22:19 +00:00
}
} else {
2023-08-10 14:51:16 +00:00
if ( $this -> users [ $i ][ 'sex' ] == 0 ) {
$rtxt = '<strong>' . $this -> users [ $i ][ 'login' ] . '</strong> трагически погиб и находится в комнате "' . $r_n [ 'name' ] . '"' ;
} else {
$rtxt = '<strong>' . $this -> users [ $i ][ 'login' ] . '</strong> трагически погибла и находится в комнате "' . $r_n [ 'name' ] . '"' ;
}
}
} 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'
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
}
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 (
2023-11-02 13:57:39 +00:00
'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%")'
2023-08-10 14:51:16 +00:00
);
if ( $this -> users [ $i ][ 'login' ] != '' ) {
if ( $this -> users [ $i ][ 'sex' ] == 0 ) {
$rtxt = '<strong>' . $this -> users [ $i ][ 'login' ] . '</strong> трагически погиб без права на воскрешение и покидает подземелье' . $nld ;
2022-12-19 20:22:19 +00:00
} else {
2023-08-10 14:51:16 +00:00
$rtxt = '<strong>' . $this -> users [ $i ][ 'login' ] . '</strong> трагически погибла без права на воскрешение и покидает подземелье' . $nld ;
2022-12-19 20:22:19 +00:00
}
}
2023-08-10 14:51:16 +00:00
} 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 (
2022-12-30 19:03:37 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'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 .= ', новым лидером становится "' . $tinf [ 'login' ] . '"' ;
mysql_query (
'UPDATE `dungeon_now` SET `uid` = "' . $tinf [ 'id' ] . '" WHERE `id` = "' . $this -> info [ 'dn_id' ] . '" LIMIT 1'
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
}
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' ] . '"' );
2023-09-30 20:17:25 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'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' ];
}
2023-09-30 20:17:25 +00:00
mysql_query (
2023-11-02 13:57:39 +00:00
'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'
2023-08-10 14:51:16 +00:00
);
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'
);
}
//завершаем сам бой
2023-09-30 20:17:25 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'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 );
2022-12-19 20:22:19 +00:00
}
}
}
2023-08-10 14:51:16 +00:00
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>' ;
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
} else {
sleep ( 2 );
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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 )
{
$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 ;
2023-09-30 20:17:25 +00:00
mysql_query (
2023-11-02 13:57:39 +00:00
'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 . '")'
2023-08-10 14:51:16 +00:00
);
2023-09-30 20:17:25 +00:00
mysql_query (
2023-11-02 13:57:39 +00:00
'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", "")'
2023-08-10 14:51:16 +00:00
);
}
//Расчет уворота игроков
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 ;
}
//Расчет крита игроков
2023-09-30 20:17:25 +00:00
private function addGlobalItems ( $bid , $uid , $itm , $ico , $exp , $cr , $ecr )
2023-08-10 14:51:16 +00:00
{
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 "
) '
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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 "
) '
);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$jit ++ ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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 "
) '
);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$jit ++ ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
} 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 "
) '
);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
} 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 "
) '
);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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'
);
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$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 );
2023-12-01 21:05:11 +00:00
Delo :: add (
4 ,
'System.battle' ,
$this -> users [ $this -> uids [ $uid ]][ 'id' ],
'"<span style="color: olive; ">System.battle</span>": (В бою трупожор), ПУСТ!!! ' ,
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
} else {
$cmsg -> setText ( " <strong>Вы получили еврокредиты: $ecr екр.</strong> " );
$chat -> sendMsg ( $cmsg );
2023-12-01 21:05:11 +00:00
Delo :: add (
4 ,
'System.battle' ,
$this -> users [ $this -> uids [ $uid ]][ 'id' ],
'"<span style="color: olive; ">System.battle</span>": Персонаж получил <strong>' . $ecr . ' Е К Р </strong> (В бою трупожор), сейчас: <strong>' . $this -> users [ $this -> uids [ $uid ]][ 'money2' ] . ' Е К Р </strong>' ,
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
}
}
2023-08-10 14:51:16 +00:00
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 )
*/
2022-12-19 20:22:19 +00:00
$i = 0 ;
2023-08-10 14:51:16 +00:00
$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 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
if ( $add == 1 ) {
$ins = false ;
if ( $ico_e [ 8 ] == 0 ) {
$ins = true ;
if ( $ico_e [ 9 ] == 1 ) {
2022-12-30 19:03:37 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'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'
2022-12-30 19:03:37 +00:00
)
);
2023-08-10 14:51:16 +00:00
if ( ! isset ( $old_ico [ 'id' ])) {
$ins = true ;
} else {
if ( $old_ico [ 'id' ] > 0 ) {
$txt .= ', "' . $ico_e [ 3 ] . ' (<small>Обновление</small>)"' ;
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 .= ', "' . $ico_e [ 3 ] . '"' ;
2022-12-19 20:22:19 +00:00
}
}
}
$i ++ ;
}
2023-08-10 14:51:16 +00:00
if ( $txt != '' ) {
$txt = ltrim ( $txt , ', ' );
$cmsg -> setText ( " <strong>Вы совершили подвиг:</strong> $txt " );
$chat -> sendMsg ( $cmsg );
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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 ]) {
2023-08-14 15:15:05 +00:00
ItemsModel :: addItem ( $itm_e [ 0 ], $uid , '|' . $itm_e [ 2 ]);
2023-08-10 14:51:16 +00:00
$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>' ;
}
}
2022-12-19 20:22:19 +00:00
}
$i ++ ;
}
2023-08-10 14:51:16 +00:00
if ( $txt != '' ) {
$txt = ltrim ( $txt , ', ' );
$cmsg -> setText ( " <strong>Вы получили предметы:</strong> $txt " );
$chat -> sendMsg ( $cmsg );
2022-12-19 20:22:19 +00:00
}
}
2023-08-10 14:51:16 +00:00
//
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//Расчет блока щитом игроков
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
public function priemAddLogFast ( $u1 , $u2 , $prm , $text , $hodID , $tm )
{
2023-09-30 20:17:25 +00:00
$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' ];
2023-08-10 14:51:16 +00:00
$mas = [
'text' => $text ,
'time' => time (),
'battle' => $this -> info [ 'id' ],
'id_hod' => ( $this -> hodID + $hodID ),
'vars' => $vLog ,
'type' => 1 ,
];
$this -> add_log ( $mas );
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
//Расчет контрудара игроков
2023-09-30 20:17:25 +00:00
/** Осторожно ! Подключаются файлы !!!
2023-08-10 14:51:16 +00:00
* Трогать очень осторожно . Этот шайтан как - то проверяет приёмы на враге
* и рассчитывает урон учитывая и эти приёмы тоже .
* @ 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 ++ ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
unset ( $eff );
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//Приемы защиты
$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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_moment );
2023-08-10 14:51:16 +00:00
}
}
$j ++ ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//Прочие приемы
$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 );
}
2023-11-02 13:57:39 +00:00
unset ( $fx_moment );
2023-08-10 14:51:16 +00:00
}
}
$j ++ ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//Прочие приемы (влияет на урон от моментальных приемов)
$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 );
}
2023-11-02 13:57:39 +00:00
unset ( $fx_moment_seven );
2023-08-10 14:51:16 +00:00
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$j ++ ;
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Прочие приемы
$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 );
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
unset ( $fx_moment );
2023-08-10 14:51:16 +00:00
}
}
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 );
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
unset ( $fx_moment );
2022-12-19 20:22:19 +00:00
}
}
2023-08-10 14:51:16 +00:00
$j ++ ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
if ( $this -> stats [ $this -> uids [ $u2 ]][ 'zaproc' ] > 0 ) {
$yron = round ( $yron - $yron * $this -> stats [ $this -> uids [ $uid2 ]][ 'zaproc' ] / 100 );
if ( $yron < 1 ) {
$yron = 1 ;
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
return $yron ;
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
//Добавляем статистику
2023-08-10 14:51:16 +00:00
public function priemYronSave ( $u1 , $u2 , $yron , $type )
2022-12-19 20:22:19 +00:00
{
2023-08-10 14:51:16 +00:00
//$type 0 - урон , 1 - хил
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$this -> testUserInfoBattle ( $u1 );
$this -> testUserInfoBattle ( $u2 );
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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 );
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
if ( $yron > $this -> stats [ $this -> uids [ $u2 ]][ 'hpNow' ]) {
$yron = $this -> stats [ $this -> uids [ $u2 ]][ 'hpNow' ];
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
} else {
$adt6 = 0 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//
$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 '
);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$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' ],
],
]
);
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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 );
}
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
//Добавляем статистику ударов
2023-08-10 14:51:16 +00:00
2023-08-14 15:15:05 +00:00
/**
* Расчет опыта
* @ 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 );
}
2023-11-02 13:57:39 +00:00
//Добавляем размены в лог
2023-08-14 15:15:05 +00:00
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'] . ' "
) '
);
}
}
2023-11-02 13:57:39 +00:00
//Добавляем в лог действия приема
2023-08-10 14:51:16 +00:00
public function lookLog () : string
{
2023-09-30 20:17:25 +00:00
global $u ;
2023-08-10 14:51:16 +00:00
$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 ;
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$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 '
);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$jin = 0 ;
$forYou2 = 0 ;
if ( is_array ( $sp )) {
while ( $pl = mysql_fetch_array ( $sp )) {
if ( $jin == 0 ) {
$u -> info [ 'alog' ] = $pl [ 'id_hod' ];
}
$jin ++ ;
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$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 (
'"' ,
'"' , $pl [ 'vars' ]
) . '");' . $js ;
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
mysql_query (
'UPDATE `stats` SET `alog`="' . $u -> info [ 'alog' ] . '" WHERE `id` ="' . $u -> info [ 'id' ] . '" LIMIT 1'
);
$js .= 'id_log=' . $pll . ';' ;
return $js ;
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
//Считаем контру
2023-08-14 15:15:05 +00:00
2023-08-10 14:51:16 +00:00
public function lookmLog () : string
{
2023-09-30 20:17:25 +00:00
global $u ;
2023-08-10 14:51:16 +00:00
$js = '' ;
$pll = 0 ;
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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'
)
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
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'
)
);
}
2023-09-30 20:17:25 +00:00
2023-08-10 14:51:16 +00:00
$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 '
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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 '
);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$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' ];
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$js = 'add_mlog(' . $plm [ 'id' ] . ',' . $forYou2 . ',"' . $plm [ 'text' ] . '",' . $plm [ 'id_hod' ] . ',0,0,"' . str_replace (
'"' ,
'"' , $plm [ 'vars' ]
) . '");' . $js ;
2022-12-19 20:22:19 +00:00
}
}
2023-08-10 14:51:16 +00:00
$js .= 'id_mlog=' . $pll . ';' ;
mysql_query (
'UPDATE `stats` SET `mlog`="' . $u -> info [ 'mlog' ] . '" WHERE `id` ="' . $u -> info [ 'id' ] . '" LIMIT 1'
);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
return $js ;
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
//Расчитываем статы для конкретной зоны атаки
2023-08-10 14:51:16 +00:00
public function weaponAt22 ( $item , $st ) : array
2022-12-19 20:22:19 +00:00
{
2023-08-10 14:51:16 +00:00
$min = 0 ;
$max = 0 ;
if ( isset ( $item [ 'id' ])) {
2023-08-14 15:15:05 +00:00
$itm = Helper\Conversion :: dataStringToArray ( $item [ 'data' ]);
2023-08-10 14:51:16 +00:00
//начинаем расчет урона
$min = $itm [ 'sv_yron_min' ] + $itm [ 'yron_min' ] + $st [ 'minAtack' ];
$max = $itm [ 'sv_yron_max' ] + $itm [ 'yron_max' ] + $st [ 'maxAtack' ];
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
return [ $min , $max ];
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
//Считаем урон
2023-08-10 14:51:16 +00:00
public function autoSmena ()
2022-12-19 20:22:19 +00:00
{
global $u ;
2023-08-10 14:51:16 +00:00
$ms = [];
$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 ++ ;
}
2023-09-30 20:17:25 +00:00
2023-08-10 14:51:16 +00:00
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 ++ ;
}
}
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$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 );
2022-12-19 20:22:19 +00:00
} else {
2023-08-10 14:51:16 +00:00
$this -> smena ( $ms , true );
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
} else {
if ( $u -> info [ 'enemy' ] < 0 ) {
$smnr5 = $this -> smena ( - ( $u -> info [ 'enemy' ]), true );
unset ( $smnr5 );
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
}
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
//Добавляем новую статистику игрока
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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' ] -- ;
}
2023-09-30 20:17:25 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'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 'У вас закончились смены противника' ;
}
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
//Проверяем приемы
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
public function testActions ()
{
2023-09-30 20:17:25 +00:00
global $u ;
2023-08-10 14:51:16 +00:00
//проверяем удары
2023-09-30 20:17:25 +00:00
$m = mysql_query ( 'SELECT * FROM `battle_act` WHERE `battle` = "' . $this -> info [ 'id' ] . '" ORDER BY `id`' );
2023-08-10 14:51:16 +00:00
$i = 0 ;
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' ];
2023-09-30 20:17:25 +00:00
//ударили бота и он не ответил
if ( isset ( $this -> iBots [ $pl [ 'uid2' ]]) && $this -> users [ $this -> uids [ $pl [ 'uid2' ]]][ 'timeGo' ] < time ()) {
$this -> botAtack ( $pl [ 'uid1' ], $pl , 2 );
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
} 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 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//наносим удар по пропуску
$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 ();
2022-12-19 20:22:19 +00:00
}
} else {
2023-08-10 14:51:16 +00:00
$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
2022-12-19 20:22:19 +00:00
$j = 0 ;
2023-08-10 14:51:16 +00:00
while ( $j < count ( $this -> users )) {
if ( $this -> info [ 'razdel' ] == 0 ) {
$tnbot = time () + rand ( 1 , 1 );
} else {
$tnbot = time () + rand ( 1 , 2 );
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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 {
//Удары между ботами
2023-11-02 13:57:39 +00:00
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 ) {
2023-08-10 14:51:16 +00:00
$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'
);
}
}
2022-12-19 20:22:19 +00:00
}
}
} else {
}
2023-08-10 14:51:16 +00:00
}
$j ++ ;
}
}
$i ++ ;
}
}
2023-11-02 13:57:39 +00:00
//Приемы которые используются моментально
2023-08-10 14:51:16 +00:00
2023-09-30 20:17:25 +00:00
private function botAtack ( $uid , $pl , $tp )
2023-08-10 14:51:16 +00:00
{
$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 );
2023-09-30 20:17:25 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'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' ]) {
2023-09-30 20:17:25 +00:00
$na = [];
2023-08-10 14:51:16 +00:00
$a222 = rand ( 1 , 5 ) . '_' . rand ( 1 , 5 ) . '_' . rand ( 1 , 5 ) . '_' . rand ( 1 , 5 ) . '_' . rand ( 1 , 5 );
$a = explode ( '_' , $a222 );
$i = 1 ;
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 ];
2022-12-19 20:22:19 +00:00
} else {
2023-08-10 14:51:16 +00:00
$na [ 'a' ][ $i ] = 0 ;
2022-12-19 20:22:19 +00:00
}
}
2023-08-10 14:51:16 +00:00
$i ++ ;
}
$na [ 'b' ] = rand ( 1 , 5 );
//Проводим удар
$this -> atacks [ $pl [ 'id' ]][ 'a2' ] = $a222 ;
$this -> atacks [ $pl [ 'id' ]][ 'b2' ] = $na [ 'b' ];
$this -> startAtack ( $pl [ 'id' ]);
}
}
}
2023-11-02 13:57:39 +00:00
//Приемы которые используются моментально (в конце хода)
2023-08-10 14:51:16 +00:00
public function startAtack ( $id )
{
2023-09-30 20:17:25 +00:00
global $u , $priem ;
2023-08-10 14:51:16 +00:00
$this -> prlog = [];
$this -> inport_user = 0 ;
2023-11-02 13:57:39 +00:00
if ( ! isset ( $this -> atacks [ $id ]) || $this -> atacks [ $id ][ 'lock' ] != 0 ) {
return ;
}
//Прием разгадать тактику
$i = 1 ;
$j = 2 ;
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 v2 not in ( 29 , 30 , 31 , 32 , 36 , 49 , 85 , 86 , 87 , 88 , 89 , 90 , 139 , 174 , 175 , 176 , 177 , 178 , 179 , 187 , 188 , 191 , 201 , 206 , 207 , 208 , 209 , 210 , 211 , 217 , 220 , 222 , 226 ,
227 , 228 , 229 , 233 , 236 , 238 , 245 , 248 , 249 , 256 , 258 , 261 , 262 , 263 , 269 , 270 , 276 , 277 , 284 , 285 , 324 , 332 , 333 , 334 , 335 )
AND `name` NOT LIKE " %Иммунитет% "
LIMIT 30 '
2023-08-10 14:51:16 +00:00
);
2023-11-02 13:57:39 +00:00
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' )
2023-08-10 14:51:16 +00:00
);
2023-11-02 13:57:39 +00:00
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 );
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
}
}
2023-11-02 13:57:39 +00:00
$j -- ;
$i ++ ;
}
2023-08-10 14:51:16 +00:00
2023-11-02 13:57:39 +00:00
//Восстановление манны 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' ]
2023-08-10 14:51:16 +00:00
);
}
2023-11-02 13:57:39 +00:00
$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' ]
2023-08-10 14:51:16 +00:00
);
}
2023-11-02 13:57:39 +00:00
$this -> users [ $this -> uids [ $this -> atacks [ $id ][ 'uid2' ]]][ 'mpNow' ] = $this -> stats [ $this -> uids [ $this -> atacks [ $id ][ 'uid2' ]]][ 'mpNow' ];
}
2023-08-10 14:51:16 +00:00
2023-11-02 13:57:39 +00:00
//Антистаты
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' ]
);
}
2023-08-10 14:51:16 +00:00
2023-11-02 13:57:39 +00:00
//Расчет количества блоков и противников
$this -> testZonb ( $this -> atacks [ $id ][ 'uid1' ], $this -> atacks [ $id ][ 'uid2' ]);
2023-08-10 14:51:16 +00:00
2023-11-02 13:57:39 +00:00
//Запускаем магию предметов
$this -> magicItems ( $this -> atacks [ $id ][ 'uid1' ], $this -> atacks [ $id ][ 'uid2' ], $id );
$this -> magicItems ( $this -> atacks [ $id ][ 'uid2' ], $this -> atacks [ $id ][ 'uid1' ], $id );
2023-08-10 14:51:16 +00:00
2023-11-02 13:57:39 +00:00
// Получаем приемы игроков
$this -> priemsRazmen ( $id , $at );
$this -> priemsRazmenMoment ( $id , $at );
$this -> priemsRazmen ( $id , $at );
2023-08-10 14:51:16 +00:00
2023-11-02 13:57:39 +00:00
$at = $this -> newRazmen ( $id );
2023-08-10 14:51:16 +00:00
2023-11-02 13:57:39 +00:00
// Тестируем какие еще могут быть варианты при ударе
// Уворот, парирование, крит, пробить блок, блок щитом
// Блок щитом (если есть щит, конечно)
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
$at = $this -> mf2Razmen ( $at ); //крит
$at = $this -> mf3Razmen ( $id , $at , $v ); //парирование
$at = $this -> mf4Razmen ( $id , $at , $v ); //блок щитом
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
$at = $this -> mf1Razmen ( $id , $at , $v ); //уворот
$at = $this -> mf5Razmen ( $id , $at , $v ); //контрудар
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
$at = $this -> yronRazmen ( $id , $at ); //расчет урона
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
// Проверяем приемы
// Получаем приемы игроков
$at = $this -> priemsTestRazmen ( $id , $at );
// Собираем размен (пересчитываем и расчитываем урон и т.д)
$at = $this -> priemsRestartRazmen ( $id , $at ); //Повторная проверка приемов (если требуется)
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
//Минусуем поглощенный урон
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 );
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
// Обновляем Н Р и добавляем тактики
$at = $this -> updateHealth ( $id , $at );
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
// Заносим в логи + записываем статистику боя
$this -> addlogRazmen ( $id , $at );
2023-08-10 14:51:16 +00:00
2023-11-02 13:57:39 +00:00
//Запускаем магию предметов
$this -> magicItems ( $this -> atacks [ $id ][ 'uid1' ], $this -> atacks [ $id ][ 'uid2' ], $id );
$this -> magicItems ( $this -> atacks [ $id ][ 'uid2' ], $this -> atacks [ $id ][ 'uid1' ], $id );
2023-08-10 14:51:16 +00:00
2023-11-02 13:57:39 +00:00
//Возращаем зоны блока
$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' ]);
$prmos = [];
$i5 = 0 ;
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
while ( $i5 < 51 ) {
if ( isset ( $zd1 [ $i5 ]) && $zd1 [ $i5 ] > 0 ) {
//Если приемы не требуют ход
$zd1 [ $i5 ] -= 1 ;
} else {
$zd1 [ $i5 ] = 0 ;
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
if ( isset ( $zd2 [ $i5 ]) && $zd2 [ $i5 ] > 0 ) {
//Если приемы не требуют ход
$zd2 [ $i5 ] -= 1 ;
} else {
$zd2 [ $i5 ] = 0 ;
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
$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' ];
}
2023-08-10 14:51:16 +00:00
2023-11-02 13:57:39 +00:00
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 ;
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
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 ;
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
$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'
);
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
//Обновляем задержки пирожков
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' ] . '")'
);
2023-08-10 14:51:16 +00:00
2023-11-02 13:57:39 +00:00
//Тактики
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' );
2023-08-10 14:51:16 +00:00
2023-11-02 13:57:39 +00:00
//Обновляем задержки пирожков
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' );
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
//Обновляем данные в 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% от мудрости за ход
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' ]
)
2023-08-10 14:51:16 +00:00
);
2023-11-02 13:57:39 +00:00
} 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' ]
)
2023-08-10 14:51:16 +00:00
);
2023-11-02 13:57:39 +00:00
}
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 ;
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' ])
2023-08-10 14:51:16 +00:00
);
2023-11-02 13:57:39 +00:00
if ( $this -> stats [ $this -> uids [ $eff [ $i ][ 'user_use' ]]][ 'mpNow' ] <= 0 ) {
$eff [ $i ][ 'hod' ] = 0 ;
2023-08-10 14:51:16 +00:00
}
2023-11-02 13:57:39 +00:00
}
if ( strripos ( $eff [ $i ][ 'data' ], 'minprocmanahod' )) {
$pvr = [
'x1' => 0 ,
'x2' => 0 ,
'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 ];
2023-08-10 14:51:16 +00:00
}
}
2023-11-02 13:57:39 +00:00
$pvr [ 'i' ] ++ ;
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
$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' ];
2023-08-10 14:51:16 +00:00
}
2023-11-02 13:57:39 +00:00
$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' ] = '--' ;
}
2023-08-10 14:51:16 +00:00
2023-11-02 13:57:39 +00:00
$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'
);
2023-08-10 14:51:16 +00:00
2023-11-02 13:57:39 +00:00
$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 ]
2023-08-10 14:51:16 +00:00
);
}
2023-11-02 13:57:39 +00:00
}
} 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 && Config :: get ( 'effz' ) > 0 ) {
$eff [ $i ][ 'hod' ] -- ;
2023-08-10 14:51:16 +00:00
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 (
2023-11-02 13:57:39 +00:00
$eff [ $i ],
$this -> users [ $this -> uids [ $this -> atacks [ $id ][ 'uid' . $j ]]], 3 ,
$this -> atacks [ $id ][ 'uid' . $jn ]
2023-08-10 14:51:16 +00:00
);
2022-12-19 20:22:19 +00:00
}
}
}
}
}
2023-11-02 13:57:39 +00:00
$i ++ ;
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
$j ++ ;
}
//Проверяем
if ( Config :: get ( '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 )
2023-08-10 14:51:16 +00:00
);
2023-11-02 13:57:39 +00:00
unset ( $pvr );
mysql_query (
'UPDATE `stats` SET `hpNow` = 0 WHERE `id` = "' . $this -> atacks [ $id ][ 'uid1' ] . '" LIMIT 1'
2023-08-10 14:51:16 +00:00
);
2023-11-02 13:57:39 +00:00
}
if ( $cn2 [ 0 ] > Config :: get ( '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' );
}
//Используем приемы
/** Осторожно ! Подключаются файлы !!!
* @ param $pl
* @ param $u1
* @ param $t
* @ param $u2
* @ param $rznm
* @ param $k2nm
* @ param $yrn
* @ param $yrnt
* @ return void
*/
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' );
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
} elseif ( $pl [ 'priem' ][ 'file3' ] != '0' ) {
if ( file_exists ( '../../_incl_data/class/priems/' . $pl [ 'priem' ][ 'file3' ] . '.php' )) {
require ( 'priems/' . $pl [ 'priem' ][ 'file3' ] . '.php' );
2023-08-10 14:51:16 +00:00
}
2023-11-02 13:57:39 +00:00
} else {
$mas1 [ 'text' ] = '{tm1} {u1} {1x16x0} прием "<strong>' . $pl [ 'name' ] . '</strong>".' ;
$this -> del_val [ 'eff' ][ $pl [ 'priem' ][ 'id' ]] = true ;
2023-08-10 14:51:16 +00:00
}
2023-11-02 13:57:39 +00:00
} elseif ( $t == 2 ) {
$mas1 [ 'text' ] = '{tm1} У персонажа {u1} закончилось действие магии "<strong>' . $pl [ 'name' ] . '</strong>".' ;
} elseif ( $t == 99 ) {
$mas1 [ 'text' ] = '{u1} Снял эфект "<strong>' . $pl [ 'name' ] . '</strong>" с помощью <strong>' . $rznm . '</strong> .' ;
} else {
if ( $t == 100 ) {
$mas1 [ 'id_hod' ] ++ ;
2023-08-10 14:51:16 +00:00
}
2023-11-02 13:57:39 +00:00
$mas1 [ 'text' ] = '{tm1} Закончилось действие эффекта "<strong>' . $pl [ 'name' ] . '</strong>" для {u1}.' ;
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
if ( $pl [ 'priem' ][ 'id' ] != 24 ) {
$this -> add_log ( $mas1 );
}
$this -> stats [ $this -> uids [ $pl [ 'uid' ]]] = $u -> getStats ( $pl [ 'uid' ], 0 , 0 , false , false , true );
2023-08-10 14:51:16 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-14 15:15:05 +00:00
//Повторная проверка приемов
2022-12-19 20:22:19 +00:00
2023-09-30 20:17:25 +00:00
private function testZonb ( $uid , $uid2 )
2023-08-10 14:51:16 +00:00
{
$zba = [];
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
if ( $this -> stnZb [ $uid ] == 0 ) {
$zba [ 1 ] = $this -> stats [ $this -> uids [ $uid ]][ 'zonb' ];
$this -> stnZb [ $uid ] = $zba [ 1 ];
} else {
$zba [ 1 ] = $this -> stnZb [ $uid ];
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
if ( $this -> stnZb [ $uid2 ] == 0 ) {
$zba [ 2 ] = $this -> stats [ $this -> uids [ $uid2 ]][ 'zonb' ];
$this -> stnZb [ $uid ] = $zba [ 2 ];
2022-12-19 20:22:19 +00:00
} else {
2023-08-10 14:51:16 +00:00
$zba [ 2 ] = $this -> stnZb [ $uid2 ];
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
if ( $zba [ 1 ] > 3 ) {
$zba [ 1 ] = 3 ;
}
if ( $zba [ 2 ] > 3 ) {
$zba [ 2 ] = 3 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//Блоки игрока 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 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//Блоки игрока 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 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
if ( $zba [ 1 ] < 1 ) {
$zba [ 1 ] = 1 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
if ( $zba [ 2 ] < 1 ) {
$zba [ 2 ] = 1 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$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' ];
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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' ];
2022-12-19 20:22:19 +00:00
}
}
2023-08-14 15:15:05 +00:00
//Проверка действия приема
2023-08-10 14:51:16 +00:00
2023-09-30 20:17:25 +00:00
/** Осторожно ! Подключаются файлы !!!
* @ param $uid1
* @ param $uid2
* @ param $end
* @ return void
*/
private function magicItems ( $uid1 , $uid2 , $end )
2022-12-19 20:22:19 +00:00
{
2023-08-10 14:51:16 +00:00
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' ])) {
2023-08-14 15:15:05 +00:00
$e = Conversion :: dataStringToArray ( $itm [ 'data' ]);
2023-08-10 14:51:16 +00:00
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 );
}
2023-08-14 15:15:05 +00:00
//Проверка урона приемов
2023-08-10 14:51:16 +00:00
public function priemsRazmen ( $id , $at )
{
if ( $at == 'fast' ) {
$uid1 = $id [ 0 ];
$uid2 = $id [ 1 ];
2022-12-19 20:22:19 +00:00
} else {
2023-08-10 14:51:16 +00:00
$uid1 = $this -> atacks [ $id ][ 'uid1' ];
$uid2 = $this -> atacks [ $id ][ 'uid2' ];
}
$i = 1 ;
while ( $i <= 2 ) {
2023-09-30 20:17:25 +00:00
$u1 = $i == 1 ? $uid1 : $uid2 ;
2023-08-10 14:51:16 +00:00
//Получаем приемы и смотрим когда какой действует
$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 ++ ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
}
2023-09-30 20:17:25 +00:00
/** Осторожно ! Подключаются файлы !!!
* @ param $id
* @ param $at
* @ return mixed
*/
private function priemsRazmenMoment ( $id , $at )
2023-08-10 14:51:16 +00:00
{
2022-12-19 20:22:19 +00:00
$uid1 = $this -> atacks [ $id ][ 'uid1' ];
$uid2 = $this -> atacks [ $id ][ 'uid2' ];
$i = 1 ;
while ( $i <= 2 ) {
if ( $i == 1 ) {
$a = 1 ;
$b = 2 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid1 ;
$u2 = $uid2 ;
2022-12-19 20:22:19 +00:00
} else {
$a = 2 ;
$b = 1 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid2 ;
$u2 = $uid1 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
if ( ! isset ( $at [ 'p' ][ 'p_cast' ])) {
$at [ 'p' ] = $at ;
$at [ 'p' ][ 'p_cast' ] = true ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//Приемы ухода от удара
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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
$this -> stats [ $this -> uids [ $u2 ]][ 'nopryh' ] -- ;
2022-12-19 20:22:19 +00:00
}
}
2023-08-10 14:51:16 +00:00
$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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
}
}
$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 );
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
}
$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 ) {
2023-09-30 20:17:25 +00:00
if ( file_exists (
2023-08-10 14:51:16 +00:00
'../../_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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
}
}
$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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
}
}
$j ++ ;
}
$i ++ ;
}
return $at ;
}
2023-08-14 15:15:05 +00:00
//Наносим удар между игроками
2023-09-30 20:17:25 +00:00
private function newRazmen ( $id , $at = null )
2023-08-10 14:51:16 +00:00
{
$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 ;
}
2023-09-30 20:17:25 +00:00
private function usersTestAtack ( $id , $uid1 , $uid2 ) : array
2023-08-10 14:51:16 +00:00
{
$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 ];
2022-12-19 20:22:19 +00:00
}
}
$i ++ ;
}
2023-08-10 14:51:16 +00:00
return $r ;
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
/** Критический размен
* @ param $at
* @ param $pat
* @ param $rjd
* @ return array | false | mixed
*/
2023-09-30 20:17:25 +00:00
private function mf2Razmen ( $at , $pat = false , $rjd = 0 )
2023-08-10 14:51:16 +00:00
{
if ( $pat ) {
$pat = $at ;
$at = $pat [ 'p' ];
2022-12-19 20:22:19 +00:00
} else {
2023-08-10 14:51:16 +00:00
unset ( $pat );
}
2023-11-02 13:57:39 +00:00
$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' ]);
}
2022-12-19 20:22:19 +00:00
$i = 1 ;
while ( $i <= 2 ) {
if ( $i == 1 ) {
$a = 1 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid1 ;
$u2 = $uid2 ;
2022-12-19 20:22:19 +00:00
} else {
$a = 2 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid2 ;
$u2 = $uid1 ;
2022-12-19 20:22:19 +00:00
}
2023-08-14 15:15:05 +00:00
//Расчет крита Атакующего (u1) по Цели (u2)
2022-12-19 20:22:19 +00:00
$j = 0 ;
2023-08-14 15:15:05 +00:00
$wp01 = 0 ;
2023-08-10 14:51:16 +00:00
$k01 = 0 ;
if ( $rjd > 0 ) {
$j = $rjd - 1 ;
}
2023-08-14 15:15:05 +00:00
2023-08-10 14:51:16 +00:00
if ( is_array ( $at [ $a ][ 'atack' ])) {
2023-08-14 15:15:05 +00:00
while ( $j < count ( $at [ $a ][ 'atack' ]) && $j <= 8 ) {
2023-08-10 14:51:16 +00:00
// КУДА БИЛ , ТИП УДАРА
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 ;
}
$witm_type01 = 0 ;
$witm01 = $this -> stats [ $this -> uids [ $u1 ]][ 'items' ][ $this -> stats [ $this -> uids [ $u1 ]][ 'wp' . $wp01 . 'id' ]];
2023-08-14 15:15:05 +00:00
$witm_data01 = Conversion :: dataStringToArray ( $witm01 [ 'data' ]);
if ( $this -> mfs (
2023-09-30 20:17:25 +00:00
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' ],
]
2023-08-14 15:15:05 +00:00
) == 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 ;
2023-08-10 14:51:16 +00:00
}
}
$j ++ ;
}
}
$i ++ ;
}
2023-08-14 15:15:05 +00:00
unset ( $witm01 , $witm_type01 , $k01 , $wp01 );
2023-08-10 14:51:16 +00:00
if ( isset ( $pat ) && $pat ) {
$pat [ 'p' ] = $at ;
$at = $pat ;
}
2023-08-14 15:15:05 +00:00
2023-08-10 14:51:16 +00:00
return $at ;
}
2023-09-30 20:17:25 +00:00
private function yhod_user ( $uid1 , $uid2 , $type )
2023-08-10 14:51:16 +00:00
{
// 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 )) {
$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 ;
}
2023-11-02 13:57:39 +00:00
private function mfs ( int $type , array | int $mf ) : int
2023-08-10 14:51:16 +00:00
{
$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 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
if ( $rval > 75 ) {
$rval = 75 ;
}
break ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
return $this -> get_chanse ( $rval ) ? 1 : 0 ;
2022-12-19 20:22:19 +00:00
}
2023-08-14 15:15:05 +00:00
//Сохранение данные
2023-08-10 14:51:16 +00:00
2023-11-02 13:57:39 +00:00
/** Парирование размен
* @ param $id
* @ param $at
* @ param $v
* @ param $pat
* @ param $rjd
* @ return array | false | mixed
*/
2023-09-30 20:17:25 +00:00
private function mf3Razmen ( $id , $at , $v , $pat = false , $rjd = 0 )
2022-12-19 20:22:19 +00:00
{
2023-08-10 14:51:16 +00:00
if ( $pat ) {
$pat = $at ;
$at = $pat [ 'p' ];
} else {
unset ( $pat );
}
2023-11-02 13:57:39 +00:00
$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' ]);
}
2022-12-19 20:22:19 +00:00
$i = 1 ;
while ( $i <= 2 ) {
if ( $i == 1 ) {
$a = 1 ;
$b = 2 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid1 ;
$u2 = $uid2 ;
2022-12-19 20:22:19 +00:00
} else {
$a = 2 ;
$b = 1 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid2 ;
$u2 = $uid1 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//Расчет парирования Цели (u2) от Атакующего (u1)
2022-12-19 20:22:19 +00:00
$j = 0 ;
2023-08-10 14:51:16 +00:00
if ( $rjd > 0 ) {
$j = $rjd - 1 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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 (
2023-09-30 20:17:25 +00:00
3 ,
[
'u1' => $u1 ,
'u2' => $u2 ,
'1' => $this -> stats [ $this -> uids [ $u2 ]][ 'm7' ],
'2' => $this -> stats [ $this -> uids [ $u1 ]][ 'm7' ],
]
2023-08-10 14:51:16 +00:00
) == 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' ] ++ ;
}
2022-12-19 20:22:19 +00:00
}
}
2023-08-10 14:51:16 +00:00
$j ++ ;
2022-12-19 20:22:19 +00:00
}
}
$i ++ ;
}
2023-08-10 14:51:16 +00:00
if ( isset ( $pat ) && $pat ) {
$pat [ 'p' ] = $at ;
$at = $pat ;
}
2022-12-19 20:22:19 +00:00
return $at ;
}
2023-08-14 15:15:05 +00:00
//Отображение Н Р
2023-08-10 14:51:16 +00:00
2023-09-30 20:17:25 +00:00
private function mf4Razmen ( $id , $at , $v , $pat = false )
2022-12-19 20:22:19 +00:00
{
2023-08-10 14:51:16 +00:00
if ( $pat ) {
$pat = $at ;
$at = $pat [ 'p' ];
} else {
unset ( $pat );
}
2023-11-02 13:57:39 +00:00
$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' ]);
}
2023-08-10 14:51:16 +00:00
$i = 1 ;
while ( $i <= 2 ) {
if ( $i == 1 ) {
$a = 1 ;
$b = 2 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid1 ;
$u2 = $uid2 ;
2023-08-10 14:51:16 +00:00
} else {
$a = 2 ;
$b = 1 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid2 ;
$u2 = $uid1 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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 ,
2023-09-30 20:17:25 +00:00
( $this -> stats [ $this -> uids [ $u2 ]][ 'm8' ] / 2 + $this -> stats [ $this -> uids [ $u2 ]][ 'm18' ])
2023-08-10 14:51:16 +00:00
) == 1 && $this -> atacks [ $id ][ 'out' . $b ] == 0 ) {
//блокировал щитом, гад :)
$at [ $a ][ 'atack' ][ $j ][ 1 ] = 7 ;
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$j ++ ;
2022-12-19 20:22:19 +00:00
}
}
$i ++ ;
}
2023-08-10 14:51:16 +00:00
if ( isset ( $pat ) && $pat ) {
$pat [ 'p' ] = $at ;
$at = $pat ;
}
2022-12-19 20:22:19 +00:00
return $at ;
}
2023-08-14 15:15:05 +00:00
//Выводим лог боя
2023-09-30 20:17:25 +00:00
private function mf1Razmen ( $id , $at , $v , $pat = false , $rjd = 0 )
2023-08-14 15:15:05 +00:00
{
if ( $pat ) {
$pat = $at ;
$at = $pat [ 'p' ];
} else {
unset ( $pat );
}
2023-11-02 13:57:39 +00:00
$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' ]);
}
2023-08-14 15:15:05 +00:00
$i = 1 ;
while ( $i <= 2 ) {
if ( $i == 1 ) {
$a = 1 ;
$b = 2 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid1 ;
$u2 = $uid2 ;
2023-08-14 15:15:05 +00:00
} else {
$a = 2 ;
$b = 1 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid2 ;
$u2 = $uid1 ;
2023-08-14 15:15:05 +00:00
}
//Расчет уворота Цели (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 ;
}
$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 (
2023-09-30 20:17:25 +00:00
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' ],
]
2023-08-14 15:15:05 +00:00
);
if ( $tyv == 1 && $this -> atacks [ $id ][ 'out' . $b ] == 0 ) {
//увернулся, гад :)
$this -> stats [ $this -> uids [ $u1 ]][ 'nopryh' ] = floor (
2023-09-30 20:17:25 +00:00
( int ) $this -> stats [ $this -> uids [ $u1 ]][ 'nopryh' ]
2023-08-14 15:15:05 +00:00
);
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 ;
}
2023-08-10 14:51:16 +00:00
//Новый лог Мой Лог
2023-09-30 20:17:25 +00:00
private function mf5Razmen ( $id , $at , $v )
2022-12-19 20:22:19 +00:00
{
2023-09-30 20:17:25 +00:00
$rjd = 0 ;
2023-08-10 14:51:16 +00:00
2023-11-02 13:57:39 +00:00
$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' ]);
}
2022-12-19 20:22:19 +00:00
$i = 1 ;
while ( $i <= 2 ) {
if ( $i == 1 ) {
$a = 1 ;
$b = 2 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid1 ;
$u2 = $uid2 ;
2022-12-19 20:22:19 +00:00
} else {
$a = 2 ;
$b = 1 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid2 ;
$u2 = $uid1 ;
2022-12-19 20:22:19 +00:00
}
2023-08-14 15:15:05 +00:00
//Расчет контрудара Цели (u2) по Атакующему (u1)
2022-12-19 20:22:19 +00:00
$j = 0 ;
2023-08-10 14:51:16 +00:00
if ( $rjd > 0 ) {
$j = $rjd - 1 ;
2022-12-19 20:22:19 +00:00
}
2023-08-14 15:15:05 +00:00
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 (
2023-09-30 20:17:25 +00:00
6 ,
[
'u1' => $u1 ,
'u2' => $u2 ,
'a' => $this -> stats [ $this -> uids [ $u2 ]][ 'm6' ],
'b' => $this -> stats [ $this -> uids [ $u1 ]][ 'm6' ],
]
2023-08-14 15:15:05 +00:00
) == 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 );
2022-12-19 20:22:19 +00:00
}
}
}
2023-08-14 15:15:05 +00:00
$j ++ ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$i ++ ;
}
2023-08-14 15:15:05 +00:00
return $at ;
}
//======================
2022-12-19 20:22:19 +00:00
2023-08-14 15:15:05 +00:00
//Добавляем в лог
public function testRazmenblock1 ( $id , $uid1 , $uid2 , $atack ) : bool
{
$r = false ;
2023-09-30 20:17:25 +00:00
$block = [];
$j = 0 ;
2023-08-14 15:15:05 +00:00
//Проверка блоков
$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 ;
2023-08-10 14:51:16 +00:00
}
2023-08-14 15:15:05 +00:00
return $r ;
}
///Комментатор
2022-12-19 20:22:19 +00:00
2023-09-30 20:17:25 +00:00
private function contrRestart ( $id , $at , $v , $rjd = 0 )
2023-08-14 15:15:05 +00:00
{
//уворот
$at = $this -> mf1Razmen ( $id , $at , $v , true , $rjd );
//парирование
$at = $this -> mf3Razmen ( $id , $at , $v , true , $rjd );
//блок щитом (если есть щит, конечно)
2023-09-30 20:17:25 +00:00
$at = $this -> mf4Razmen ( $id , $at , $v , true );
2023-08-14 15:15:05 +00:00
//крит
2023-09-30 20:17:25 +00:00
$at = $this -> mf2Razmen ( $at , true , $rjd );
return $this -> yronRazmen ( $id , $at , true , $rjd );
2023-08-10 14:51:16 +00:00
}
2023-08-14 15:15:05 +00:00
//Расчет типа удара от оружия
2023-08-10 14:51:16 +00:00
2023-09-30 20:17:25 +00:00
private function yronRazmen ( $id , $at , $pat = false , $rjd = 0 )
2023-08-10 14:51:16 +00:00
{
if ( $pat ) {
$pat = $at ;
$at = $pat [ 'p' ];
} else {
unset ( $pat );
}
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 ];
2022-12-19 20:22:19 +00:00
}
$i = 1 ;
while ( $i <= 2 ) {
if ( $i == 1 ) {
$a = 1 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid1 ;
$u2 = $uid2 ;
2022-12-19 20:22:19 +00:00
} else {
$a = 2 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid2 ;
$u2 = $uid1 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$j = 0 ;
$k = 0 ;
2023-09-30 20:17:25 +00:00
2023-08-10 14:51:16 +00:00
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 {
2023-09-30 20:17:25 +00:00
$wp = 3 ;
2023-08-10 14:51:16 +00:00
}
$k = 0 ;
}
$witm = $this -> stats [ $this -> uids [ $u1 ]][ 'items' ][ $this -> stats [ $this -> uids [ $u1 ]][ 'wp' . $wp . 'id' ]];
2023-09-30 20:17:25 +00:00
2023-08-10 14:51:16 +00:00
$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 )
) {
2023-09-30 20:17:25 +00:00
$at [ $a ][ 'atack' ][ $j ][ 'yron' ] = $this -> yronGetrazmen ( $u1 , $u2 , $wp );
2023-08-10 14:51:16 +00:00
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 {
2023-09-30 20:17:25 +00:00
$at [ $a ][ 'atack' ][ $j ][ 'block' ] = $this -> yronGetrazmen ( $u1 , $u2 , $wp );
2023-08-10 14:51:16 +00:00
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 ;
}
2023-08-14 15:15:05 +00:00
//Расчет урона от оружия
2023-08-10 14:51:16 +00:00
2023-09-30 20:17:25 +00:00
public function yronGetrazmen ( $uid1 , $uid2 , $wp ) : array
2023-08-10 14:51:16 +00:00
{
2023-09-30 20:17:25 +00:00
$r = [ 'r' => '--' ,];
/**
* Определяем тип урона
* Колющий
* Рубящий
* Режущий
* Дробящий
*/
2023-08-10 14:51:16 +00:00
$witm = 0 ;
$witm_type = 0 ;
if ( $wp > 0 ) {
$witm = $this -> stats [ $this -> uids [ $uid1 ]][ 'items' ][ $this -> stats [ $this -> uids [ $uid1 ]][ 'wp' . $wp . 'id' ]];
2023-08-14 15:15:05 +00:00
$witm_data = Conversion :: dataStringToArray ( $witm [ 'data' ]);
2023-08-10 14:51:16 +00:00
$witm_type = $this -> weaponTx ( $witm );
}
if ( $witm_type == 0 || $witm_type == 12 ) {
$witm_type2 = '' ;
} else {
$witm_type2 = $witm_type ;
}
$r [ 't' ] = $witm_type2 ;
2023-09-30 20:17:25 +00:00
2023-08-10 14:51:16 +00:00
//Увеличиваем параметры от текущего оружия которым бьем
$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' ];
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$iii ++ ;
}
if ( isset ( $witm_data [ 'sv_m3' ]) && $witm_data [ 'sv_m3' ] != 0 ) {
$this -> stats [ $this -> uids [ $uid1 ]][ 'm3' ] += $witm_data [ 'sv_m3' ];
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$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' ];
2022-12-19 20:22:19 +00:00
}
}
2023-08-10 14:51:16 +00:00
$iii ++ ;
}
2023-09-30 20:17:25 +00:00
2023-08-10 14:51:16 +00:00
//мощность + подавление мощности противником
$wAp = 0 ;
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
if ( $witm_type == 12 ) {
//удар кулаком
$wAp += $this -> stats [ $this -> uids [ $uid1 ]][ 'm10' ];
if ( $this -> users [ $this -> uids [ $uid1 ]][ 'align' ] == 7 ) {
$wAp += 15 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
} elseif ( $witm_type < 5 ) {
2023-09-30 20:17:25 +00:00
$wAp += $this -> stats [ $this -> uids [ $uid1 ]][ 'pa' . $witm_type ];
$wAp -= $this -> stats [ $this -> uids [ $uid2 ]][ 'antpa' . $witm_type ];
2023-08-10 14:51:16 +00:00
} else {
2023-09-30 20:17:25 +00:00
$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 )];
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//Пробой брони
$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 ;
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$y = $this -> yrn (
$this -> stats [ $this -> uids [ $uid1 ]],
$this -> stats [ $this -> uids [ $uid2 ]],
$this -> users [ $this -> uids [ $uid1 ]],
$this -> users [ $this -> uids [ $uid2 ]],
$witm_type ,
2023-09-30 20:17:25 +00:00
$wAp , //мощность урона
2023-08-10 14:51:16 +00:00
$proboi , //пробой брони
( $witm_data [ 'sv_yron_min' ] + $this -> stats [ $this -> uids [ $uid1 ]][ 'yron_min' ]),
( $witm_data [ 'sv_yron_max' ] + $this -> stats [ $this -> uids [ $uid1 ]][ 'yron_max' ]),
$witm [ 'type' ],
);
$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' ];
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$r [ 'w_type' ] = $witm_type ;
//тип от оружия
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 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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 );
}
2022-12-30 19:03:37 +00:00
2023-08-10 14:51:16 +00:00
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 ;
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
//Расчет урона от оружия
public function weaponTx ( $item )
{
$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 ;
$ii = 0 ;
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 ;
}
2022-12-19 20:22:19 +00:00
2023-08-14 15:15:05 +00:00
//Расчет защиты
2023-08-10 14:51:16 +00:00
public function yrn (
2023-09-30 20:17:25 +00:00
array $st1 ,
array $st2 ,
array $u1 ,
array $u2 ,
int $type ,
int $power_yron = 0 ,
float $proboi = 0 ,
int $weapom_min = 0 ,
int $weapom_max = 0 ,
int $wp_type = 0 ,
2023-11-02 13:57:39 +00:00
) : array
{
2023-09-30 20:17:25 +00:00
$level = $st1 [ 'lvl' ];
$power_krit = round ( $st1 [ 'm3' ]);
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
if ( ! isset ( $type ) || $type == '' ) {
$type = 12 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//Параметры для возврвата
2023-09-30 20:17:25 +00:00
$r = [ 'type' => $type ];
2023-08-10 14:51:16 +00:00
$p = [
'B' => [ 0 => 0 , 1 => 0 , 'rnd' => false ],
'M' => $power_yron , //мощность урона
'K' => $power_krit , //мощность крита
'T' => 1 , //Кф. оружия
];
//Расчет типа урона
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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 ;
}
2023-09-30 20:17:25 +00:00
/**
* ( S ) - влияние наших статов на профильный урон
* 1 Колющий : S = Сила * 0 , 3 + Ловкость * 0 , 7
* 2 Рубящий : S = Сила * 0 , 5 + Ловкость * 0 , 25 + Интуиция * 0 , 25
* 3 Дробящий : S = Сила * 1
* 4 Режущий : S = Сила * 0 , 3 + Интуиция * 0 , 7
* else кулак / магия
*/
2023-08-10 14:51:16 +00:00
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 ;
2023-09-30 20:17:25 +00:00
$p [ 'U' ] = 0 ;
2023-08-10 14:51:16 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$r [ 'bron' ][ 'rnd' ] = rand ( $r [ 'bron' ][ 0 ], $r [ 'bron' ][ 1 ]);
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Остальные расчеты (коэфицент)
$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 ]);
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Обычный урон
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 );
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$r [ 'bRND' ] = $p [ 'B' ][ 'rnd' ];
2023-09-30 20:17:25 +00:00
$r [ 'Kmin' ] = ceil (( 2 + ( $p [ 'K' ] / 100 )) * $r [ 'min' ]);
$r [ 'Kmax' ] = ceil (( 2 + ( $p [ 'K' ] / 100 )) * $r [ 'max' ]);
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Расчет брони
//для обычного
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 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$r [ 'Kmin' ] -= $r [ 'bron' ][ 'rnd' ] * 2 ; //было умножить на 2
$r [ 'Kmax' ] -= $r [ 'bron' ][ 'rnd' ] * 2 ; //было умножить на 2
$r [ 'min' ] -= $r [ 'bron' ][ 'rnd' ]; //не было деления ни на чо.
$r [ 'max' ] -= $r [ 'bron' ][ 'rnd' ]; //не было деления ни на чо.
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Расчет защиты (не более 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' ]);
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$min_yrn = 0 ; //%
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
if ( $u1 [ 'clone' ] > 0 ) {
$min_yrn = 75 ;
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$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 ));
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$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 ;
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$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 ;
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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 ;
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$r [ 'm_k' ] = $r [ 'Kmax' ];
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
return $r ;
}
2022-12-19 20:22:19 +00:00
2023-08-14 15:15:05 +00:00
//Расчет защиты (магия)
2022-12-19 20:22:19 +00:00
2023-09-30 20:17:25 +00:00
private function zago ( $v ) : float
2023-08-10 14:51:16 +00:00
{
if ( $v > 1700 ) {
$v = 1700 ;
}
return round (( 1 - ( pow ( 0.5 , ( $v / 399.51 )))) * 100 , 2 );
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
public function zmgo ( $v )
{
return ( 1 - ( pow ( 0.5 , ( $v / 250 )))) * 100 ;
}
2023-09-30 20:17:25 +00:00
/** Осторожно ! Подключаются файлы !!!
* @ param $id
* @ param $at
* @ return array | mixed
*/
private function priemsTestRazmen ( $id , $at )
2023-08-10 14:51:16 +00:00
{
$uid1 = $this -> atacks [ $id ][ 'uid1' ];
$uid2 = $this -> atacks [ $id ][ 'uid2' ];
$i = 1 ;
while ( $i <= 2 ) {
if ( $i == 1 ) {
$a = 1 ;
$b = 2 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid1 ;
$u2 = $uid2 ;
2023-08-10 14:51:16 +00:00
} else {
$a = 2 ;
$b = 1 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid2 ;
$u2 = $uid1 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
if ( ! isset ( $at [ 'p' ][ 'p_cast' ])) {
$at [ 'p' ] = $at ;
$at [ 'p' ][ 'p_cast' ] = true ;
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//ставка
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
}
}
$j ++ ;
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Приемы ухода от удара
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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
$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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
}
}
$j ++ ;
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Приемы атаки
$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 );
}
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$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 ) {
2023-09-30 20:17:25 +00:00
if ( file_exists (
2023-08-10 14:51:16 +00:00
'../../_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 );
}
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$j ++ ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//Прочие приемы
$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 );
}
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$j ++ ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$i ++ ;
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$i = 1 ;
while ( $i <= 2 ) {
if ( $i == 1 ) {
$a = 1 ;
$b = 2 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid1 ;
$u2 = $uid2 ;
2023-08-10 14:51:16 +00:00
} else {
$a = 2 ;
$b = 1 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid2 ;
$u2 = $uid1 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
if ( ! isset ( $at [ 'p' ][ 'p_cast' ])) {
$at [ 'p' ] = $at ;
$at [ 'p' ][ 'p_cast' ] = true ;
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Прочие приемы
$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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
}
}
$j ++ ;
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Прочие приемы
$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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
}
}
$j ++ ;
}
$i ++ ;
}
return $at ;
}
2022-12-19 20:22:19 +00:00
2023-09-30 20:17:25 +00:00
/** Осторожно ! Подключаются файлы !!!
* @ param $id
* @ param $at
* @ return mixed
*/
private function priemsRestartRazmen ( $id , $at )
2023-08-10 14:51:16 +00:00
{
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 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid1 ;
$u2 = $uid2 ;
2023-08-10 14:51:16 +00:00
} else {
$a = 2 ;
$b = 1 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid2 ;
$u2 = $uid1 ;
2023-08-10 14:51:16 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
$this -> stats [ $this -> uids [ $u2 ]][ 'nopryh' ] -- ;
2022-12-19 20:22:19 +00:00
}
}
2023-08-10 14:51:16 +00:00
$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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
}
}
$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 ) {
2023-09-30 20:17:25 +00:00
if ( file_exists (
2023-08-10 14:51:16 +00:00
'../../_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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
}
}
$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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
}
}
$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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
}
}
$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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
}
}
$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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$j ++ ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$i ++ ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$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' ])) {
2023-09-30 20:17:25 +00:00
global $priem ;
2023-08-10 14:51:16 +00:00
$i = 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' ]
2022-12-30 19:03:37 +00:00
);
2023-08-14 15:15:05 +00:00
$dt3 = Conversion :: dataStringToArray ( $this -> stats [ $this -> uids [ $uid ]][ 'effects' ][ $j [ 'id' ] - 1 ][ 'data' ]);
2023-08-10 14:51:16 +00:00
$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 ) {
2023-09-30 20:17:25 +00:00
// осталось для поглощения
2023-08-10 14:51:16 +00:00
$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 )) {
2023-08-14 15:15:05 +00:00
$dt2 = Conversion :: dataStringToArray ( $this -> stats [ $this -> uids [ $uid ]][ 'effects' ][ $j [ 'id' ] - 1 ][ 'data' ]);
2023-08-10 14:51:16 +00:00
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 ;
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$i ++ ;
2022-12-19 20:22:19 +00:00
}
}
2023-08-10 14:51:16 +00:00
unset ( $checktuman );
return $yr2 ;
2022-12-19 20:22:19 +00:00
}
2023-09-30 20:17:25 +00:00
private function updateHealth ( $id , $at ) : array
2022-12-19 20:22:19 +00:00
{
2023-11-02 13:57:39 +00:00
$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' ]);
}
2023-08-10 14:51:16 +00:00
$i = 1 ;
while ( $i <= 2 ) {
if ( $i == 1 ) {
$a = 1 ;
$b = 2 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid1 ;
$u2 = $uid2 ;
2023-08-10 14:51:16 +00:00
} else {
$a = 2 ;
$b = 1 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid2 ;
$u2 = $uid1 ;
2023-08-10 14:51:16 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Рассчет дополнительных тактик
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' ] ++ ;
}
}
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Расчет удара Цели (u2) по Атакующему (u1)
$j = 0 ;
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' ] ++ ;
}
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
// КУДА БИЛ , ТИП УДАРА
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 )) {
//
2022-12-30 19:03:37 +00:00
2023-08-10 14:51:16 +00:00
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' ];
}
2022-12-30 19:03:37 +00:00
2023-08-10 14:51:16 +00:00
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 );
}
}
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$j ++ ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$i ++ ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
return $at ;
2022-12-19 20:22:19 +00:00
}
2023-08-14 15:15:05 +00:00
//Расчет МФ
2023-08-10 14:51:16 +00:00
/**
* Добавляем опыт \ нанесенный урон .
* Кривовсрато , на переделку .
* @ 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 )
2022-12-19 20:22:19 +00:00
{
2023-08-10 14:51:16 +00:00
global $u ;
if ( isset ( $this -> users [ $this -> uids [ $id ]])) {
$s2 = $this -> stats [ $this -> uids [ $id2 ]];
if ( $id1 != $id2 ) {
$e = $this -> testExp ( $y , $s2 );
} else {
$e = 0 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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 );
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
if ( ! isset ( $dun_exp [ $this -> info [ 'dungeon' ]])) {
$dun_exp [ $this -> info [ 'dungeon' ]] = 0 ;
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
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 ;
2022-12-30 19:03:37 +00:00
}
2023-08-10 14:51:16 +00:00
}
// Опыт в пещерах.
if ( $this -> info [ 'dungeon' ] == 102 ) {
$e = floor ( $e * 0.002 );
2022-12-19 20:22:19 +00:00
}
}
2023-08-10 14:51:16 +00:00
$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 = ?' , [
2023-11-02 13:57:39 +00:00
$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 ,
]
2023-08-10 14:51:16 +00:00
);
$this -> stats [ $this -> uids [ $id1 ]][ 'battle_exp' ] = $this -> users [ $this -> uids [ $id1 ]][ 'battle_exp' ];
2023-11-02 13:57:39 +00:00
$this -> clearCache ( $id1 );
2023-08-10 14:51:16 +00:00
$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' ];
}
2022-12-19 20:22:19 +00:00
}
}
2023-11-02 13:57:39 +00:00
private function clearCache ( $uid ) : void
2023-08-10 14:51:16 +00:00
{
if ( $uid > 0 && ! isset ( $this -> uclearc [ $uid ])) {
$this -> uclearc [ $uid ] = true ;
$this -> ucleari [] = $uid ;
2022-12-19 20:22:19 +00:00
}
}
2023-09-30 20:17:25 +00:00
private function addlogRazmen ( $id , $at ) : bool
2022-12-19 20:22:19 +00:00
{
2023-08-10 14:51:16 +00:00
$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 ,
],
];
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
$uid1 = $this -> atacks [ $id ][ 'uid1' ];
$uid2 = $this -> atacks [ $id ][ 'uid2' ];
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$i = 1 ;
while ( $i <= 2 ) {
if ( $i == 1 ) {
$a = 1 ;
$b = 2 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid1 ;
$u2 = $uid2 ;
2023-08-10 14:51:16 +00:00
} else {
$a = 2 ;
$b = 1 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid2 ;
$u2 = $uid1 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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' ]);
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$s1 = $this -> users [ $this -> uids [ $u1 ]][ 'sex' ];
$s2 = $this -> users [ $this -> uids [ $u2 ]][ 'sex' ];
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$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 ];
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$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' ] . '' ;
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$mas = [
'text' => '' ,
'time' => time (),
'battle' => $this -> info [ 'id' ],
'id_hod' => $this -> hodID ,
'vars' => $vLog ,
'type' => 1 ,
];
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
if ( ! isset ( $at [ $a ][ 'atack' ])) { //Т У Т тест пропуска
if ( $this -> atacks [ $id ][ 'tpo' . $a ] == 2 ) {
$mas [ 'text' ] .= '{u1} потратил свой ход на магию.' ;
} else {
2023-09-30 20:17:25 +00:00
2023-08-10 14:51:16 +00:00
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 "
) '
);
}
2023-09-30 20:17:25 +00:00
2023-08-10 14:51:16 +00:00
if ( isset ( $u1 )) {
$mas [ 'text' ] .= '{u1} пропустил свой ход.' ;
//Проверка с б р о с туманок
mysql_query (
2023-11-02 13:57:39 +00:00
'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'
2023-08-10 14:51:16 +00:00
);
}
}
$mas [ 'text' ] = '{tm1} ' . $mas [ 'text' ];
$this -> add_log ( $mas );
} else {
$j = 0 ;
while ( $j < count ( $at [ $a ][ 'atack' ]) && $j < 8 ) {
2023-09-30 20:17:25 +00:00
2023-08-10 14:51:16 +00:00
$mas [ 'text' ] = '' ;
2023-09-30 20:17:25 +00:00
2023-08-10 14:51:16 +00:00
$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 )
)],
];
2023-09-30 20:17:25 +00:00
2023-08-10 14:51:16 +00:00
$this -> atacks [ $id ][ 'uid_' . $u1 . '_t' . $at [ $a ][ 'atack' ][ $j ][ 1 ]] ++ ;
2023-09-30 20:17:25 +00:00
2023-08-10 14:51:16 +00:00
$this -> asr ( $u1 , $u2 , $at [ $a ][ 'atack' ][ $j ][ 1 ]);
2023-09-30 20:17:25 +00:00
2023-08-10 14:51:16 +00:00
if ( $at [ $a ][ 'atack' ][ $j ][ 1 ] == 1 ) {
//u1 ударил обычным ударом u2
2023-09-30 20:17:25 +00:00
$mas [ 'text' ] .= $par [ 'zona' ] . '{u2} ' . $this -> addlt ( $b , 1 , $s2 ) . $this -> addlt ( $b , 2 , $s2 ) . $this -> addlt ( $a , 3 , $s1 ) .
' {u1} ' . $this -> addlt ( $a , 4 , $s1 ) . $this -> addlt ( $a , 5 , $s1 ) . $this -> addlt ( $a , 6 , $s1 ) .
' ' . $this -> addlt ( 1 , 7 , $s1 , $at [ $a ][ 'atack' ][ $j ][ 'yron' ][ 't' ]) . ' ' . $par [ 'chem' ] . ' ' . $par [ 'kyda' ] . '. ' ;
2023-08-10 14:51:16 +00:00
} elseif ( $at [ $a ][ 'atack' ][ $j ][ 1 ] == 2 ) {
//u2 увернулся от u1
2023-09-30 20:17:25 +00:00
$mas [ 'text' ] .= $par [ 'zona' ] . '{u1} ' . $this -> addlt ( $a , 8 , $s1 ) . $this -> addlt ( $a , 9 , $s1 ) .
' {u2} <strong style="color:#0071a3;">' . $this -> addlt ( $b , 11 , $s2 ) . '</strong> ' . $par [ 'chem' ] . ' ' . $par [ 'kyda' ] . '. ' ;
2023-08-10 14:51:16 +00:00
} elseif ( $at [ $a ][ 'atack' ][ $j ][ 1 ] == 3 ) {
//u2 заблокировал удар u1
2023-09-30 20:17:25 +00:00
$mas [ 'text' ] .= $par [ 'zona' ] . '{u1} ' . $this -> addlt ( $a , 8 , $s1 ) . $this -> addlt ( $a , 9 , $s1 ) .
' {u2} <strong style="color:#356d37;">' . $this -> addlt ( $b , 10 , $s2 ) . '</strong> ' . $this -> addlt ( 1 , 7 , 0 , $s1 ) .
' ' . $par [ 'chem' ] . ' ' . $par [ 'kyda' ] . '. ' ;
2023-08-10 14:51:16 +00:00
} elseif ( $at [ $a ][ 'atack' ][ $j ][ 1 ] == 4 ) {
//u1 пробил блок u2 критом
if ( isset ( $at [ $a ][ 'atack' ][ $j ][ 'yron' ][ 't' ])) {
2023-09-30 20:17:25 +00:00
$mas [ 'text' ] .= $par [ 'zona' ] . '{u2} ' . $this -> addlt ( $b , 1 , $s2 ) . $this -> addlt ( $b , 2 , $s2 ) . $this -> addlt ( $a , 3 , $s1 ) .
' {u1} ' . $this -> addlt ( $a , 4 , $s1 ) . $this -> addlt ( $a , 5 , $s1 ) . ', <u style="color:red;">пробив блок</u>, ' . $this -> addlt ( $a , 6 , $s1 ) .
' ' . $this -> addlt ( 1 , 7 , $s1 , $at [ $a ][ 'atack' ][ $j ][ 'yron' ][ 't' ]) . ' ' . $par [ 'chem' ] . ' ' . $par [ 'kyda' ] . '. ' ;
2023-08-10 14:51:16 +00:00
}
} elseif ( $at [ $a ][ 'atack' ][ $j ][ 1 ] == 5 ) {
//u1 ударил критическим ударом u2
2023-09-30 20:17:25 +00:00
$mas [ 'text' ] .= $par [ 'zona' ] . '{u2} ' . $this -> addlt ( $b , 1 , $s2 ) . $this -> addlt ( $b , 2 , $s2 ) . $this -> addlt ( $a , 3 , $s1 ) .
' {u1} ' . $this -> addlt ( $a , 4 , $s1 ) . $this -> addlt ( $a , 5 , $s1 ) . $this -> addlt ( $a , 6 , $s1 ) .
' ' . $this -> addlt ( 1 , 7 , $s1 , $at [ $a ][ 'atack' ][ $j ][ 'yron' ][ 't' ]) . ' ' . $par [ 'chem' ] . ' ' . $par [ 'kyda' ] . '. ' ;
2023-08-10 14:51:16 +00:00
} elseif ( $at [ $a ][ 'atack' ][ $j ][ 1 ] == 6 ) {
//u2 парировал удар u1
2023-09-30 20:17:25 +00:00
$mas [ 'text' ] .= $par [ 'zona' ] . '{u1} ' . $this -> addlt ( $a , 8 , $s1 ) . $this -> addlt ( $a , 9 , $s1 ) .
' {u2} неожиданно <strong style="color:#c59400;">парировал</strong> ' . $this -> addlt ( 1 , 7 , 0 , $s1 ) . ' ' . $par [ 'chem' ] . ' ' . $par [ 'kyda' ] . '. ' ;
2023-08-10 14:51:16 +00:00
} elseif ( $at [ $a ][ 'atack' ][ $j ][ 1 ] == 7 ) {
//u2 блокировал щитом удар u1
2023-09-30 20:17:25 +00:00
$mas [ 'text' ] .= $par [ 'zona' ] . '{u1} ' . $this -> addlt ( $a , 8 , $s1 ) . $this -> addlt ( $a , 9 , $s1 ) .
' {u2}, воспользовавшись <u style="color:#356d37;">своим щитом</u>, ' . $this -> addlt ( $b , 10 , $s2 ) . ' ' . $this -> addlt ( 1 , 7 , 0 , $s1 ) .
' ' . $par [ 'chem' ] . ' ' . $par [ 'kyda' ] . '. ' ;
2023-08-10 14:51:16 +00:00
} elseif ( $at [ $a ][ 'atack' ][ $j ][ 1 ] == 8 ) {
//u2 увернулся от удара u1 и нанес по нему контрудар
2023-09-30 20:17:25 +00:00
$mas [ 'text' ] .= $par [ 'zona' ] . '{u1} ' . $this -> addlt ( $a , 8 , $s1 ) . $this -> addlt ( $a , 9 , $s1 ) .
' {u2} <strong style="color:#0071a3;">' . $this -> addlt ( $b , 11 , $s2 ) . '</strong> ' . $par [ 'chem' ] . ' ' . $par [ 'kyda' ] . ' и нанес контрудар. ' ;
2023-08-10 14:51:16 +00:00
}
2022-12-19 20:22:19 +00:00
2023-09-30 20:17:25 +00:00
$stat [ $a ][ 'type_a' ] .= '' . $at [ $a ][ 'atack' ][ $j ][ 1 ];
2023-08-10 14:51:16 +00:00
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' ] = '(правая рука)' ;
} elseif ( $at [ $a ][ 'atack' ][ $j ][ 'yron' ][ 'w' ] == 14 ) {
$mas [ 'textWP' ] = '(левая рука)' ;
} else {
$mas [ 'textWP' ] = '(непонятно чем)' ;
}
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' ];
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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 ++ ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//Добавляем статистику + записываем в б а ттл_юзе р с Н Р игроков
$this -> addNewStat ( $stat );
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
//Вывод в лог смерти персонажа
if ( floor ( $this -> stats [ $this -> uids [ $u1 ]][ 'hpNow' ]) < 1 ) {
$dies [ 1 ] = 1 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
if ( floor ( $this -> stats [ $this -> uids [ $u2 ]][ 'hpNow' ]) < 1 ) {
$dies [ 2 ] = 1 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
if ( $dies [ 1 ] > 0 || $dies [ 2 ] > 0 ) {
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$rtngwin = [ 1 , 2 , 3 , 5 , 10 , 20 , 40 , 80 , 160 ];
$rtnglos = [ 0 , 0 , 0 , - 1 , - 2 , - 5 , - 10 , - 20 , - 40 ];
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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 ];
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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 ];
}
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
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 );
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
return true ;
}
2022-12-19 20:22:19 +00:00
2023-08-14 15:15:05 +00:00
//Смена противника
2023-09-30 20:17:25 +00:00
private function asr ( $u1 , $u2 , $type ) : void
2023-08-10 14:51:16 +00:00
{
mysql_query (
' INSERT INTO battle_static (
`uid1` , `uid2` , `hod` , `type` , `time` , `bid`
) VALUES (
" ' . $u1 . ' " , " ' . $u2 . ' " , " ' . $this->hodID . ' " , " ' . $type . ' " , " ' . time() . ' " , " ' . $this->info ['id'] . ' "
) '
2022-12-30 19:03:37 +00:00
);
2023-08-10 14:51:16 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-14 15:15:05 +00:00
//авто-смена противника //Т У Т б а г выбора
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
public function addlt ( $a , $id , $s , $rnd = null ) : string
{
global $log_text ;
if ( $rnd === null ) {
$rnd = rand ( 0 , ( count ( $log_text [ $s ][ $id ]) - 1 ));
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
return '{' . $a . 'x' . $id . 'x' . $rnd . '}' ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//Действия бота (атака)
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
public function spaCheck ( $u1 )
2022-12-19 20:22:19 +00:00
{
2023-08-10 14:51:16 +00:00
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' ]);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
if ( $this -> stats [ $this -> uids [ $u1 ]][ 'hpNow' ] < 1 ) {
$this -> stats [ $this -> uids [ $u1 ]][ 'hpNow' ] = 1 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
if ( $this -> stats [ $this -> uids [ $u1 ]][ 'mpNow' ] < 1 ) {
$this -> stats [ $this -> uids [ $u1 ]][ 'mpNow' ] = 1 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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' ]);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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' ]);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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'
);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
}
2022-12-19 20:22:19 +00:00
}
}
2023-08-10 14:51:16 +00:00
//Проверяем удары, приемы, свитки, зверей
public function priemAddLog ( $id , $a , $b , $u1 , $u2 , $prm , $text , $hodID , $tm1 = 0 , $tm2 = 0 )
2022-12-19 20:22:19 +00:00
{
2023-08-10 14:51:16 +00:00
$time = time ();
if ( $tm1 == 0 ) {
$tm1 = isset ( $this -> atacks [ $id ]) ? $this -> atacks [ $id ][ 'time' ] : $time ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
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 );
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//Действия бота
2023-09-30 20:17:25 +00:00
private function restZonb ( $uid1 , $uid2 )
2022-12-19 20:22:19 +00:00
{
2023-08-10 14:51:16 +00:00
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 ];
2022-12-19 20:22:19 +00:00
}
}
2023-08-10 14:51:16 +00:00
//получаем данные о поединке
2023-09-30 20:17:25 +00:00
private function save_stats ( $uid )
2022-12-19 20:22:19 +00:00
{
2023-08-10 14:51:16 +00:00
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 '
);
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//наносим удар противнику
2023-09-30 20:17:25 +00:00
/** Осторожно ! Подключаются файлы !!!
* @ param $id
* @ param $at
* @ return mixed
*/
private function priemsRazmenMomentEnd ( $id , $at )
2022-12-19 20:22:19 +00:00
{
2023-08-10 14:51:16 +00:00
$uid1 = $this -> atacks [ $id ][ 'uid1' ];
$uid2 = $this -> atacks [ $id ][ 'uid2' ];
$i = 1 ;
while ( $i <= 2 ) {
if ( $i == 1 ) {
$a = 1 ;
$b = 2 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid1 ;
$u2 = $uid2 ;
2023-08-10 14:51:16 +00:00
} else {
$a = 2 ;
$b = 1 ;
2023-11-02 13:57:39 +00:00
$u1 = $uid2 ;
$u2 = $uid1 ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
if ( ! isset ( $at [ 'p' ][ 'p_cast' ])) {
$at [ 'p' ] = $at ;
$at [ 'p' ][ 'p_cast' ] = true ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//Приемы ухода от удара
if ( ! isset ( $this -> stats [ $this -> uids [ $u2 ]][ 'nopryh' ]) || $this -> stats [ $this -> uids [ $u2 ]][ 'nopryh' ] == 0 ) {
2022-12-19 20:22:19 +00:00
$j = 0 ;
2023-08-10 14:51:16 +00:00
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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
$this -> stats [ $this -> uids [ $u2 ]][ 'nopryh' ] -- ;
}
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$j ++ ;
2022-12-19 20:22:19 +00:00
}
}
2023-08-10 14:51:16 +00:00
//Приемы крита
$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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
}
}
$j ++ ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//Приемы атаки
$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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2022-12-19 20:22:19 +00:00
}
}
}
2023-08-10 14:51:16 +00:00
$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 ) {
2023-09-30 20:17:25 +00:00
if ( file_exists (
2023-11-02 13:57:39 +00:00
'../../_incl_data/class/priem/' . $this -> stats [ $this -> uids [ $u1 ]][ 'u_priem' ][ $j ][ 1 ] . '.php'
)) {
2023-08-10 14:51:16 +00:00
$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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
}
}
$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 );
2023-11-02 13:57:39 +00:00
unset ( $fx_priem );
2023-08-10 14:51:16 +00:00
}
}
$j ++ ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
$i ++ ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
return $at ;
2022-12-19 20:22:19 +00:00
}
2023-08-10 14:51:16 +00:00
//выделяем пользователей
2023-09-30 20:17:25 +00:00
private function addNewAtack ()
2022-12-19 20:22:19 +00:00
{
2023-08-10 14:51:16 +00:00
global $u ;
2023-11-02 13:57:39 +00:00
if ( isset ( $this -> ga [ $u -> info [ 'id' ]][ $u -> info [ 'enemy' ]])) {
return ;
}
if ( $this -> stats [ $this -> uids [ $u -> info [ 'id' ]]][ 'hpNow' ] <= 0 ) {
$this -> e = 'Для вас поединок закончен, ожидайте пока завершат другие...' ;
return ;
}
$us = $this -> stats [ $this -> uids [ $u -> info [ 'id' ]]];
$i = 1 ;
$no = 0 ;
2023-08-10 14:51:16 +00:00
2023-11-02 13:57:39 +00:00
while ( $i <= $us [ 'zona' ]) {
if ( $this -> uAtc [ 'a' ][ $i ] == 0 ) {
$no = 1 ;
}
$i ++ ;
}
if ( $this -> uAtc [ 'b' ] == 0 ) {
$no = 1 ;
}
if ( $no != 0 ) {
$this -> e = 'Выберите зоны удара и блока' ;
} else {
//наносим удар
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 = 'Н е удалось нанести удар по противнику...' ;
2022-12-30 19:03:37 +00:00
} else {
2023-11-02 13:57:39 +00:00
$this -> ga [ $u -> info [ 'id' ]][ $u -> info [ 'enemy' ]] = mysql_insert_id ();
2022-12-19 20:22:19 +00:00
}
}
2023-08-10 14:51:16 +00:00
} else {
2023-11-02 13:57:39 +00:00
//отвечаем на удар противника
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' ]);
}
2022-12-19 20:22:19 +00:00
}
}
}
}
2023-08-10 14:51:16 +00:00
//Возращаем зоны блока по умолчанию
2023-09-30 20:17:25 +00:00
private function botAct ( $uid ) : bool
2022-12-19 20:22:19 +00:00
{
$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 ();
2022-12-30 19:03:37 +00:00
User :: setOnline (( int ) $uid );
} elseif ( rand ( 0 , 2 ) == 1 ) {
$r = true ;
2022-12-19 20:22:19 +00:00
}
}
return $r ;
}
2023-08-10 14:51:16 +00:00
//проверка блока (Визуальная)
2022-12-19 20:22:19 +00:00
public function battleInfo ( $id )
{
2023-11-02 13:57:39 +00:00
$b = Db :: getRow ( 'select * from battle where id = ?' , [ $id ]);
if ( ! isset ( $b [ 'id' ])) {
2022-12-19 20:22:19 +00:00
return false ;
}
2023-11-02 13:57:39 +00:00
$this -> hodID = Db :: getValue ( 'select id_hod from battle_logs where battle = ? order by id desc limit 1' , [ $b [ 'id' ]]);
$this -> hodID = $this -> hodID [ 'id_hod' ] ? ? 0 ;
return $b ;
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
2023-08-10 14:51:16 +00:00
//проверка блока
2022-12-19 20:22:19 +00:00
public function addAtack ()
{
global $js ;
if ( isset ( $_POST [ 'atack' ], $_POST [ 'block' ])) {
2022-12-30 19:03:37 +00:00
$na = [ 'a' => [ 1 => 0 , 2 => 0 , 3 => 0 , 4 => 0 , 5 => 0 ]];
2022-12-19 20:22:19 +00:00
$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 {
2023-01-10 16:29:32 +00:00
$this -> e = 'Выберите зоны удара и блока' ;
2022-12-19 20:22:19 +00:00
}
}
2023-08-10 14:51:16 +00:00
//генерируем команды
2022-12-19 20:22:19 +00:00
public function teamsTake ()
{
global $u ;
$rs = '' ;
$ts = [];
$tsi = 0 ;
if ( $this -> info [ 'id' ] > 0 ) {
2023-01-10 16:29:32 +00:00
//данные о игроках в бою
2022-12-19 20:22:19 +00:00
$nxtlg = [];
2022-12-30 19:03:37 +00:00
$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' ] . '"'
);
2022-12-19 20:22:19 +00:00
$i = 0 ;
$bi = 0 ;
$up = '' ;
if ( $this -> info [ 'start2' ] == 0 ) {
2022-12-30 19:03:37 +00:00
$tststrt = mysql_fetch_array (
mysql_query (
'SELECT `id` FROM `battle` WHERE `id` = "' . $this -> info [ 'id' ] . '" AND `start2` = "0" LIMIT 1'
)
);
2022-12-19 20:22:19 +00:00
if ( isset ( $tststrt [ 'id' ])) {
2023-09-30 20:17:25 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'UPDATE `battle` SET `start2` = "' . time () . '" WHERE `id` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
} else {
$this -> info [ 'start2' ] = time ();
}
}
while ( $pl = mysql_fetch_array ( $t )) {
2023-01-10 16:29:32 +00:00
//записываем данные
2022-12-19 20:22:19 +00:00
if ( $pl [ 'login2' ] == '' ) {
$pl [ 'login2' ] = $pl [ 'login' ];
}
$this -> users [ $i ] = $pl ;
$this -> uids [ $pl [ 'id' ]] = $i ;
if ( $this -> info [ 'start2' ] == 0 ) {
2022-12-30 19:03:37 +00:00
mysql_query (
'UPDATE `users` SET `notrhod` = "-1" WHERE `id` = "' . $this -> users [ $i ][ 'id' ] . '" LIMIT 1'
);
2022-12-19 20:22:19 +00:00
$this -> users [ $i ][ 'notrhod' ] = - 1 ;
}
if ( $pl [ 'bot' ] > 0 ) {
$this -> bots [ $bi ] = $pl [ 'id' ];
$this -> iBots [ $pl [ 'id' ]] = $bi ;
$bi ++ ;
}
2023-01-10 16:29:32 +00:00
//записываем статы
2022-12-19 20:22:19 +00:00
$this -> stats [ $i ] = $u -> getStats ( $pl , 0 , 0 , false , $this -> cached , true );
2023-01-10 16:29:32 +00:00
//Заносим старт
2022-12-19 20:22:19 +00:00
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 ) {
2022-12-30 19:03:37 +00:00
$this -> users [ $i ][ 'tactic7' ] = floor (
( 40 + $this -> stats [ $i ][ 's7' ]) / $this -> stats [ $i ][ 'hpAll' ] * $this -> stats [ $i ][ 'hpNow' ]
);
2022-12-19 20:22:19 +00:00
}
if ( $this -> stats [ $i ][ 's7' ] > 49 ) {
2022-12-30 19:03:37 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'UPDATE `eff_users` SET `delete`="' . time () . '" WHERE `uid` = "' . $this -> users [ $i ][ 'id' ] . '" AND `overType` = 101 AND `delete` = 0'
2022-12-30 19:03:37 +00:00
);
mysql_query (
"
2022-12-19 20:22:19 +00:00
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
2023-01-10 16:29:32 +00:00
( 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 );
2022-12-30 19:03:37 +00:00
"
);
2022-12-19 20:22:19 +00:00
}
2023-01-10 16:29:32 +00:00
// Бафф Зверя animal_bonus
2022-12-19 20:22:19 +00:00
if ( $this -> users [ $i ][ 'animal' ] > 0 ) {
2022-12-30 19:03:37 +00:00
$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'
)
);
2022-12-19 20:22:19 +00:00
if ( isset ( $a [ 'id' ])) {
if ( $a [ 'eda' ] >= 1 ) {
2022-12-30 19:03:37 +00:00
$anl = mysql_fetch_array (
mysql_query (
'SELECT `bonus` FROM `levels_animal` WHERE `type` = "' . $a [ 'type' ] . '" AND `level` = "' . $a [ 'level' ] . '" LIMIT 1'
)
);
2022-12-19 20:22:19 +00:00
$anl = $anl [ 'bonus' ];
$tpa = [
1 => 'cat' ,
2 => 'owl' ,
3 => 'wisp' ,
4 => 'demon' ,
5 => 'dog' ,
6 => 'pig' ,
7 => 'dragon' ,
];
$tpa3 = [
2023-01-10 16:29:32 +00:00
1 => 'Кошачья Ловкость' ,
2 => 'Интуиция Совы' ,
3 => 'Сила Стихий' ,
4 => 'Демоническая Сила' ,
5 => 'Друг' ,
6 => 'Полная Броня' ,
7 => 'Инферно' ,
2022-12-19 20:22:19 +00:00
];
2022-12-30 19:03:37 +00:00
mysql_query (
2023-08-10 14:51:16 +00:00
'UPDATE `eff_users` SET `delete`="' . time () . '" WHERE `uid` = "' . $this -> users [ $i ][ 'id' ] . '" AND `overType` = 100 AND `delete` = 0'
2022-12-30 19:03:37 +00:00
);
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' ] . '")'
);
2022-12-19 20:22:19 +00:00
2023-01-10 16:29:32 +00:00
//добавление духа от дракона
2022-12-19 20:22:19 +00:00
if ( $a [ 'type' ] == 7 ) {
if ( $a [ 'level' ] == 10 ) {
2022-12-30 19:03:37 +00:00
$this -> users [ $i ][ 'tactic7' ] = floor (
( 50 + $this -> stats [ $i ][ 's7' ]) / $this -> stats [ $i ][ 'hpAll' ] * $this -> stats [ $i ][ 'hpNow' ]
);
2022-12-19 20:22:19 +00:00
} elseif ( $a [ 'level' ] == 11 ) {
2022-12-30 19:03:37 +00:00
$this -> users [ $i ][ 'tactic7' ] = floor (
( 65 + $this -> stats [ $i ][ 's7' ]) / $this -> stats [ $i ][ 'hpAll' ] * $this -> stats [ $i ][ 'hpNow' ]
);
2022-12-19 20:22:19 +00:00
} elseif ( $a [ 'level' ] == 12 ) {
2022-12-30 19:03:37 +00:00
$this -> users [ $i ][ 'tactic7' ] = floor (
( 90 + $this -> stats [ $i ][ 's7' ]) / $this -> stats [ $i ][ 'hpAll' ] * $this -> stats [ $i ][ 'hpNow' ]
);
2022-12-19 20:22:19 +00:00
}
}
//
2023-08-14 15:15:05 +00:00
$anl = Conversion :: dataStringToArray ( $anl );
2022-12-19 20:22:19 +00:00
2023-08-10 14:51:16 +00:00
$vLog = 'time1=' . time () . '||s1=' . $this -> users [ $i ][ 'sex' ] . '||t1=' . $this -> users [ $i ][ 'team' ] . '||login1=' . $this -> users [ $i ][ 'login' ] . '' ;
2023-01-10 16:29:32 +00:00
$vLog .= '||s2=1||t2=' . $this -> users [ $i ][ 'team' ] . '||login2=' . $a [ 'name' ] . ' (Зверь ' . $this -> users [ $i ][ 'login' ] . ')' ;
2022-12-19 20:22:19 +00:00
$mas1 = [
'time' => time (),
'battle' => $this -> info [ 'id' ],
'id_hod' => 1 ,
'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' ) {
2023-01-10 16:29:32 +00:00
$ba .= 'Броня головы: +' . $anl [ 'add_' . $u -> items [ 'add' ][ $i6 ]] . ', ' ;
2022-12-19 20:22:19 +00:00
} elseif ( $u -> items [ 'add' ][ $i6 ] == 'mib2' ) {
2023-01-10 16:29:32 +00:00
$ba .= 'Броня корпуса: +' . $anl [ 'add_' . $u -> items [ 'add' ][ $i6 ]] . ', ' ;
2022-12-19 20:22:19 +00:00
} elseif ( $u -> items [ 'add' ][ $i6 ] == 'mib3' ) {
2023-01-10 16:29:32 +00:00
$ba .= 'Броня пояса: +' . $anl [ 'add_' . $u -> items [ 'add' ][ $i6 ]] . ', ' ;
2022-12-19 20:22:19 +00:00
} elseif ( $u -> items [ 'add' ][ $i6 ] == 'mib4' ) {
2023-01-10 16:29:32 +00:00
$ba .= 'Броня ног: +' . $anl [ 'add_' . $u -> items [ 'add' ][ $i6 ]] . ', ' ;
2022-12-19 20:22:19 +00:00
} else {
$ba .= $u -> is [ $u -> items [ 'add' ][ $i6 ]] . ': +' . $anl [ 'add_' . $u -> items [ 'add' ][ $i6 ]] . ', ' ;
}
}
}
$i6 ++ ;
}
$ba = trim ( $ba , ', ' );
if ( $ba == '' ) {
2023-01-10 16:29:32 +00:00
$ba = 'Эффект отсутсвует' ;
2022-12-19 20:22:19 +00:00
}
2023-01-10 16:29:32 +00:00
$mas1 [ 'text' ] = '{tm1} {u2} очнулся от медитации, и призвал заклятье "<strong>' . $tpa3 [ $a [ 'type' ]] . ' [' . $a [ 'level' ] . ']</strong>" на {u1}. (' . $ba . ')' ;
2023-09-30 20:17:25 +00:00
$nxtlg [] = $mas1 ;
2022-12-30 19:03:37 +00:00
mysql_query (
'UPDATE `users_animal` SET `eda` = `eda` - 1 WHERE `id` = "' . $a [ 'id' ] . '" LIMIT 1'
);
2022-12-19 20:22:19 +00:00
$this -> get_comment ();
}
}
}
2022-12-30 19:03:37 +00:00
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'
);
2023-11-30 22:51:17 +00:00
$rs [ $this -> users [ $i ][ 'team' ]] = $rs [ $this -> users [ $i ][ 'team' ]] . $u -> getLogin ( $this -> users [ $i ][ 'id' ]) . ', ' ;
2022-12-19 20:22:19 +00:00
}
$up .= '`uid` = "' . $pl [ 'id' ] . '" OR' ;
2023-01-10 16:29:32 +00:00
//battle-user (статистика, начальная)
2022-12-30 19:03:37 +00:00
$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'
)
);
2022-12-19 20:22:19 +00:00
if ( ! isset ( $mybu [ 'id' ])) {
2023-01-10 16:29:32 +00:00
//Пустое значение статистики для данного персонажа за текущий бой
2023-11-02 13:57:39 +00:00
2022-12-19 20:22:19 +00:00
$this -> addstatuser ( $pl [ 'id' ]);
}
$i ++ ;
}
2023-01-10 16:29:32 +00:00
//Заносим в лог начало поединка
2022-12-19 20:22:19 +00:00
if ( $this -> info [ 'start1' ] == 0 ) {
2022-12-30 19:03:37 +00:00
$tststrt = mysql_fetch_array (
mysql_query (
'SELECT `id` FROM `battle` WHERE `id` = "' . $this -> info [ 'id' ] . '" AND `start1` = "0" LIMIT 1'
)
);
2022-12-19 20:22:19 +00:00
if ( isset ( $tststrt [ 'id' ])) {
2022-12-30 19:03:37 +00:00
$upd = mysql_query (
2023-08-10 14:51:16 +00:00
'UPDATE `battle` SET `start1` = "' . time () . '" WHERE `id` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
if ( $upd ) {
$i = 0 ;
$r = '' ;
while ( $i <= $tsi ) {
if ( isset ( $rs [ $i ]) && $rs [ $i ] != '' ) {
2023-01-10 16:29:32 +00:00
$r .= rtrim ( $rs [ $i ], ', ' ) . ' и ' ;
2022-12-19 20:22:19 +00:00
}
$i ++ ;
}
2023-01-10 16:29:32 +00:00
$r = rtrim ( $r , ' и ' );
2022-12-19 20:22:19 +00:00
$r = str_replace ( '"' , '\\\\\"' , $r );
$this -> hodID ++ ;
$vLog = 'time1=' . time () . '||' ;
$mass = [
'time' => time (),
'battle' => $this -> info [ 'id' ],
'id_hod' => $this -> hodID ,
'vars' => $vLog ,
'zona1' => '' ,
'zonb1' => '' ,
'zona2' => '' ,
'zonb2' => '' ,
'type' => '1' ,
];
2023-01-10 16:29:32 +00:00
$r = 'Часы показывали <span class=\\\\\"date\\\\\">' . date (
2022-12-30 19:03:37 +00:00
'd.m.Y H:i' ,
$this -> info [ 'time_start' ]
2023-01-10 16:29:32 +00:00
) . '</span>, когда ' . $r . ' бросили вызов друг другу.' ;
2022-12-30 19:03:37 +00:00
$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' ] . '")'
);
2022-12-19 20:22:19 +00:00
$this -> info [ 'start1' ] = time ();
}
}
//
if ( count ( $nxtlg ) > 0 ) {
$i = 0 ;
while ( $i < count ( $nxtlg )) {
$this -> add_log ( $nxtlg [ $i ]);
$i ++ ;
}
}
//
}
}
}
2023-11-02 13:57:39 +00:00
private function addstatuser ( $uid ) : void
2022-12-19 20:22:19 +00:00
{
2023-11-02 13:57:39 +00:00
if ( $uid <= 0 ) {
return ;
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
$id = $this -> uids [ $uid ];
if ( empty ( $this -> stats [ $id ][ 'hp' ])) {
$this -> stats [ $id ][ 'hp' ] = $this -> stats [ $id ][ 'hpNow' ];
}
Db :: sql ( 'insert into battle_users (battle,uid,time_enter,login,level,align,clan,hpAll,hp,hpStart,team) values (?,?,unix_timestamp(),?,?,?,?,?,?,?,?)' ,
[
$this -> info [ 'id' ],
$uid ,
$this -> users [ $id ][ 'login' ],
$this -> users [ $id ][ 'align' ],
$this -> users [ $id ][ 'clan' ],
$this -> stats [ $id ][ 'hpAll' ],
$this -> stats [ $id ][ 'hp' ],
$this -> stats [ $id ][ 'hpNow' ],
$this -> users [ $id ][ 'team' ],
]);
2022-12-19 20:22:19 +00:00
}
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 ;
}
2023-08-10 14:51:16 +00:00
///----Спасение функция
2022-12-19 20:22:19 +00:00
2022-12-30 19:03:37 +00:00
public function genTeams ( $you ) : string
2022-12-19 20:22:19 +00:00
{
$ret = '' ;
$teams = [];
2023-01-10 16:29:32 +00:00
//выделяем пользователей
2022-12-19 20:22:19 +00:00
$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 = '' ;
2022-12-30 19:03:37 +00:00
if ( isset ( $this -> ga [ $this -> users [ $i ][ 'id' ]][ $you ]) && $this -> ga [ $this -> users [ $i ][ 'id' ]][ $you ]) {
2022-12-19 20:22:19 +00:00
$a1mc = '' ;
2022-12-30 19:03:37 +00:00
$ac = mysql_fetch_array (
mysql_query (
'SELECT * FROM `battle_act` WHERE `id` = "' . $this -> ga [ $this -> users [ $i ][ 'id' ]][ $you ] . '" LIMIT 1'
)
);
2022-12-19 20:22:19 +00:00
if ( isset ( $ac ) && $ac [ 'time' ] + $this -> info [ 'timeout' ] - 15 < time ()) {
$a1mc = 'color:red;' ;
}
$a1ms = 'style=\"text-decoration: underline; ' . $a1mc . '\"' ;
2022-12-30 19:03:37 +00:00
} elseif ( isset ( $this -> ag [ $this -> users [ $i ][ 'id' ]][ $you ]) && $this -> ag [ $this -> users [ $i ][ 'id' ]][ $you ]) {
2022-12-19 20:22:19 +00:00
$a1mc = '' ;
2022-12-30 19:03:37 +00:00
$ac = mysql_fetch_array (
mysql_query (
'SELECT * FROM `battle_act` WHERE `id` = "' . $this -> ag [ $this -> users [ $i ][ 'id' ]][ $you ] . '" LIMIT 1'
)
);
2022-12-19 20:22:19 +00:00
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' ]) {
2023-03-31 18:30:14 +00:00
$ldr = '<img width=24 height=15 title=Лидер группы src=//img.new-combats.tech/i/lead' . $this -> users [ $i ][ 'team' ] . '.gif \>' ;
2022-12-19 20:22:19 +00:00
}
2022-12-30 19:03:37 +00:00
$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>' ;
2022-12-19 20:22:19 +00:00
}
$i ++ ;
}
2023-01-10 16:29:32 +00:00
//генерируем команды
2022-12-19 20:22:19 +00:00
$i = 0 ;
while ( $i < count ( $tms )) {
$teams [ $tms [ $i ]] = ltrim ( $teams [ $tms [ $i ]], ', ' );
if ( $teams [ $tms [ $i ]] != '' ) {
2023-03-31 18:30:14 +00:00
$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 ]];
2022-12-19 20:22:19 +00:00
$ret .= $teams [ $tms [ $i ]];
if ( count ( $tms ) > $i + 1 ) {
2023-01-10 16:29:32 +00:00
$ret .= ' <span class=\"CSSvs\"> против </span> ' ;
2022-12-19 20:22:19 +00:00
}
}
$i ++ ;
}
return 'genteam("' . $ret . '");' ;
}
}