db = $db; } /** Должно бы уехать в Priems. * @param $u1 * @param $u2 * @param $type * @return string */ public function maginfoattack($u1, $u2, $type) { /* 1 - огонь, 2 - воздух, 3 - вода, 4 - земля */ $v_l = str_replace(' ', ' ', $this->users[$this->uids[$u1]]['login']); //защита цели $v_z = 0 + $this->stats[$this->uids[$u2]]['zm' . $type]; //подавление защиты от магии $v_p = round(($this->stats[$this->uids[$u1]]['pzm' . $type] + $this->stats[$this->uids[$u1]]['pzm']) * 0.4); //мощность мага $v_m = 0 + $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(); '; } /** Узнаём тип поединка в зависимоти от $x * @param $x * @return array */ private function typeBattle($x) { $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; } ## ВСЕ ТРИ ПЕРЕМЕННЫЕ - КОНСТАНТЫ ДЛЯ PRIEMS (номерные) public $mncolor = [ 1 => '006699', 2 => '006699', 3 => '006699', 4 => '006699', 5 => '006699', 6 => '006699', 7 => '006699', ]; //не крит public $mcolor = [ 1 => 'A00000', 2 => '008080', 3 => '0000FF', 4 => 'A52A2A', 5 => '006699', 6 => '006699', 7 => '006699', ]; //не крит public $mname = [ 'огонь' => 1, 'воздух' => 2, 'вода' => 3, 'земля' => 4, 'свет' => 5, 'тьма' => 6, 'серая' => 7, ]; /** Перечень приёмов (?) *
act: *
1 - когда персонаж получает повреждение *
2 - когда персонаж наносит удар *
type_of: *
1 - уворот *
2 - крит *
3 - атака *
4 - защита *
5 - прочее * @var array[] */ private $prm = [ 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], //Излом хаоса //291 => array( 'name' => 'Грация Боя', 'act' => 2, '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 /*, 'moment' => 3*/], 239 => ['name' => 'Поступь смерти', 'act' => 2, 'type_of' => 3], 240 => ['name' => 'Хлебнуть крови', 'act' => 2, 'type_of' => 5], //Оледенение 21 => ['name' => 'Оледенение [4]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 73 => ['name' => 'Оледенение [5]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 74 => ['name' => 'Оледенение [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 75 => ['name' => 'Оледенение [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 76 => ['name' => 'Оледенение [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 77 => ['name' => 'Оледенение [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 78 => ['name' => 'Оледенение [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 79 => ['name' => 'Оледенение [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], //Отравление 22 => ['name' => 'Отравление [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 80 => ['name' => 'Отравление [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 81 => ['name' => 'Отравление [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 82 => ['name' => 'Отравление [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 83 => ['name' => 'Отравление [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 84 => ['name' => 'Отравление [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], //Регенерация 36 => ['name' => 'Регенерация [5]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 85 => ['name' => 'Регенерация [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 86 => ['name' => 'Регенерация [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 87 => ['name' => 'Регенерация [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 88 => ['name' => 'Регенерация [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 89 => ['name' => 'Регенерация [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 90 => ['name' => 'Регенерация [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], //Ядовитое облако 23 => ['name' => 'Ядовитое Облако [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 70 => ['name' => 'Ядовитое Облако [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 71 => ['name' => 'Ядовитое Облако [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 72 => ['name' => 'Ядовитое Облако [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], //Иней 269 => ['name' => 'Иней [8]', 'act' => 2, 'type_of' => 9], 276 => ['name' => 'Иней [9]', 'act' => 2, 'type_of' => 9], 277 => ['name' => 'Иней [10]', 'act' => 2, 'type_of' => 9], 270 => ['name' => 'Духи Льда', 'act' => 2, 'type_of' => 5, 'type_sec' => 5], 280 => ['name' => 'Хватка Льда', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 281 => ['name' => 'Жертва Воде', 'act' => 2, 'type_of' => 5], 282 => ['name' => 'Ледяное Спасение', 'act' => 2, 'type_of' => 5], //Медитация 24 => ['name' => 'Медитация', 'act' => 2, 'type_of' => 0, 'moment' => 3], //Магический барьер 210 => ['name' => 'Магический Барьер [4]', 'act' => 2, 'type_of' => 8], 209 => ['name' => 'Магический Барьер [7]', 'act' => 2, 'type_of' => 8], 208 => ['name' => 'Магический Барьер [8]', 'act' => 2, 'type_of' => 8], 207 => ['name' => 'Магический Барьер [9]', 'act' => 2, 'type_of' => 8], 206 => ['name' => 'Магический Барьер [10]', 'act' => 2, 'type_of' => 8], 284 => ['name' => 'Магический Барьер [11]', 'act' => 2, 'type_of' => 8], //Силовое поле 175 => ['name' => 'Магический Барьер [7]', 'act' => 2, 'type_of' => 8], 176 => ['name' => 'Магический Барьер [8]', 'act' => 2, 'type_of' => 8], 177 => ['name' => 'Магический Барьер [9]', 'act' => 2, 'type_of' => 8], 178 => ['name' => 'Магический Барьер [10]', 'act' => 2, 'type_of' => 8], 179 => ['name' => 'Магический Барьер [11]', 'act' => 2, 'type_of' => 8], //Метеорит 42 => ['name' => 'Метеорит [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 121 => ['name' => 'Метеорит [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 122 => ['name' => 'Метеорит [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 123 => ['name' => 'Метеорит [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 124 => ['name' => 'Метеорит [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 125 => ['name' => 'Метеорит [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 249 => ['name' => 'Каменный Щит', 'act' => 2, 'type_of' => 4], 248 => ['name' => 'Песчаный Щит', 'act' => 2, 'type_of' => 4], 251 => ['name' => 'Заземление: Плюс', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 252 => ['name' => 'Заземление: Минус', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], //Туманный образ 273 => ['name' => 'Туманный Образ [10]', 'act' => 1, 'type_of' => 4], 286 => ['name' => 'Туманный Образ [9]', 'act' => 1, 'type_of' => 4], 287 => ['name' => 'Туманный Образ [8]', 'act' => 1, 'type_of' => 4], 288 => ['name' => 'Туманный Образ [7]', 'act' => 1, 'type_of' => 4], 255 => ['name' => 'Воздушный Щит', 'act' => 2, 'type_of' => 8], ////Пещерные приемы 337 => ['name' => 'Выпить Душу', 'act' => 2, 'type_of' => 5], //Пожирающее Пламя 33 => ['name' => 'Пожирающее Пламя [6]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 56 => ['name' => 'Пожирающее Пламя [7]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 57 => ['name' => 'Пожирающее Пламя [8]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 58 => ['name' => 'Пожирающее Пламя [9]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 59 => ['name' => 'Пожирающее Пламя [10]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 60 => ['name' => 'Пожирающее Пламя [11]', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], //Огненный Щит 245 => ['name' => 'Огненный Щит', 'act' => 2, 'type_of' => 9], ////Эффекты 327 => ['name' => 'Живая Вода', 'act' => 2, 'type_of' => 0, 'moment' => 3], 328 => ['name' => 'Сушеный Мухомор', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 329 => ['name' => 'Мешочек Пыли', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 330 => ['name' => 'Отвар когтей ПГ', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 331 => ['name' => 'Отвар Василиска', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 332 => ['name' => 'Точильный Камень', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 333 => ['name' => 'Волшебный Эликсир', 'act' => 2, 'type_of' => 0, 'moment' => 3], 334 => ['name' => 'Цепь Защитника', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 335 => ['name' => 'Эликсир Безумного Критовика', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3,], //1 сентября, квест 299 => ['name' => 'Ядовитые язвы', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 300 => ['name' => 'Элементарный заряд', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 301 => ['name' => 'Темное ранение', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 302 => ['name' => 'Подлечиться', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 303 => ['name' => 'Шкура поглощения', 'act' => 2, 'type_of' => 4], 304 => ['name' => 'Особенное проклятье!', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], 305 => ['name' => 'Кровожадность', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], ]; /** Сохраняем лог в архив * @return void */ private function saveLogs() { mysql_query('INSERT INTO `battle_logs_save` SELECT `id`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type` FROM `battle_logs` WHERE `battle` = ' . $this->info['id'] . ' AND `id_hod` <= ' . $this->hodID); mysql_query('DELETE FROM `battle_logs` WHERE `battle` = ' . $this->info['id'] . 'all'); mysql_query('DELETE FROM `battle_stat` WHERE `battle` < ' . ($this->info['id'] - 100)); mysql_query('DELETE FROM `battle_actions` WHERE `btl` = ' . $this->info['id']); } /** Кандидат на перенос в Priems * @param $uid * @param $hp * @param $false_t7 * @return false|float */ public function hphe($uid, $hp, $false_t7 = false) { if (!isset($this->stats[$this->uids[$uid]])) { echo 'WARNING! ОШИБКА! ПОТЕРЯНА ПЕРЕМЕННАЯ ЗДОРОВЬЯ ПЕРСОНАЖА!'; } else { $hpnow = floor($this->stats[$this->uids[$uid]]['hpNow']); $hpall = $this->stats[$this->uids[$uid]]['hpAll']; if ($hp > 0) { //Хиляем if ($hpnow + $hp > $hpall) { $hpli = $hpnow + $hp - $hpall; $hp -= $hpli; } if (isset($this->stats[$this->uids[$uid]]['min_heal_proc']) && $this->stats[$this->uids[$uid]]['min_heal_proc'] < -99) { $hp = 0; } else { $hp = $hp / 100 * (100 + $this->stats[$this->uids[$uid]]['min_heal_proc']); } //Отнимаем тактику if (!$false_t7) { if ($this->users[$this->uids[$uid]]['tactic7'] <= 0) { $hp = 0; $this->users[$this->uids[$uid]]['tactic7'] = 0; $this->stats[$this->uids[$uid]]['tactic7'] = $this->users[$this->uids[$uid]]['tactic7']; } else { $gdhh = round($hp / $this->stats[$this->uids[$uid]]['hpAll'] * 10, 2); if ($gdhh == 0) { $gdhh = 0.01; } $gdhd = round($this->users[$this->uids[$uid]]['tactic7'] / $gdhh * 100); $this->users[$this->uids[$uid]]['tactic7'] = round(($this->users[$this->uids[$uid]]['tactic7'] - $gdhh), 2); if ($this->users[$this->uids[$uid]]['tactic7'] < 0) { $this->users[$this->uids[$uid]]['tactic7'] = 0; } $this->stats[$this->uids[$uid]]['tactic7'] = $this->users[$this->uids[$uid]]['tactic7']; if ($gdhd < 100) { $hp = floor($hp / 100 * $gdhd); } } } } elseif ($hp < 0) { //Отнимаемф if ($hpnow + $hp < 0) { $hpli = $hpnow + $hp; $hp += -($hpli); } } if ($this->stats[$this->uids[$uid]]['hpNow'] < 1) { $hp = 0; } $this->stats[$this->uids[$uid]]['last_hp'] = -$hp; mysql_query('UPDATE `stats` SET `last_hp` = ' . $this->users[$this->uids[$uid]]['last_hp'] . ', `tactic7` = ' . $this->users[$this->uids[$uid]]['tactic7'] . ' WHERE `id` = ' . $uid); } return floor($hp); } public function deleffm($pid, $uid, $id) { if ($id > 0) { if (!mysql_query('DELETE FROM `eff_users` WHERE `id` = ' . $id . ' AND `v1` = "priem" AND `v2` != 0')) { echo '[*Ошибка удаления прием[' . $id . ',' . $pid . ',' . $uid . ']]'; } } else { mysql_query('DELETE FROM `eff_users` WHERE `uid` = ' . $uid . ' AND `v1` = "priem" AND `v2` = ' . $pid); } } /** возможность использовать удар * @var int */ private $na = 1; /** % опыта в бою * @var int */ private $expCoef = 0; /** Добавочный опыт в боях * @var int */ private $aBexp = 0; /** Список uid кто нанес удар и по кому * $ga[ {id кого ударили} ][ {id кто ударил} ] * @var array */ private $ag = []; /** ID ботов * @var array */ private $bots = []; /** i бота ??? * @var array */ private $iBots = []; private $stnZbVs = 0; private $stnZb = []; /** Если игрок нанес удар (?) [константа?] * @var array */ private $uAtc = [ 'id' => 0, 'a' => [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0], 'b' => 0, ]; /** Чем лупили * @var string[][] */ private $lg_itm = [ 0 => ['грудью', 'ребром руки', 'лбом', 'кулаком', 'ногой', 'левой ногой', 'правой ногой', 'коленом'], 1 => ['ножом', 'тыльной стороной лезвия ножа', 'рукоятью ножа', 'лезвием ножа'], 2 => ['сучковатой палкой', 'поленом', 'тяжелой дубиной', 'дубиной', 'рукоятью молота'], 3 => ['секирой', 'топором', 'лезвием секиры', 'алебардой', 'тяжелым держаком', 'длинной секирой'], 4 => ['ножнами', 'гардой', 'мечом', 'лезвием меча', 'рукоятью меча', 'тупым лезвием', 'острой стороной меча', 'огромным мечом',], 5 => ['сучковатой палкой', 'посохом', 'тяжелой тростью', 'корявым посохом', 'основанием посоха'], 22 => ['костылем'], ]; /** Куда лупили * @var string[][] */ private $lg_zon = [ 1 => ['в нос', 'в глаз', 'в челюсть', 'по переносице', 'в кадык', 'по затылку', 'в правый глаз', 'в левый глаз', 'в скулу',], 2 => ['в грудь', 'в корпус', 'в солнечное сплетение', 'в сердце', 'в область лопаток'], 3 => ['в бок', 'по желудку', 'по левой руке', 'по правой руке'], 4 => ['по <вырезано цензурой>', 'в пах', 'в промежность', 'по левой ягодице', 'по правой ягодице'], 5 => ['по ногам', 'в область правой пятки', 'в область левой пятки', 'по коленной чашечке', 'по икрам'], ]; /** Ошибка (текст) * @var */ public $e; /**Кэширование данных * @var bool */ public $cached = false; /** Отображаем главное окно: *
1 - можно бить, *
2 - ожидаем ход противника, *
3 - Проиграли. Ожидаем завершения поединка * @var int */ public $mainStatus = 1; /** Информация о поединке * @var array */ public $info = []; /** Информация о пользователях в этом бою * @var array */ public $users = []; /** Информация о статах пользователей в этом бою * @var array */ public $stats = []; /** Список пользователей и их id в stats или users. *
Пример id пользователя = 555 , то $uids[555] выдаст его порядковый номер в массиве users \ stats * @var array */ public $uids = []; /** Список ударов в этом бою (действующих) * @var array */ public $atacks = []; /** Список uid кто нанес удар и по кому *
$ga[ {id кто ударил} ][ {id кого ударил} ] * @var array */ public $ga = []; public $hodID = 0; public $is = []; public $items = []; private $uclearc = []; private $ucleari = []; private $user = []; /** * @param $uid * @return void */ private function clear_cache($uid) { if ($uid > 0 && !isset($this->uclearc[$uid])) { $this->uclearc[$uid] = true; $this->ucleari[] = $uid; } } /** * @return void */ public function clear_cache_start() { $q = 'delete from battle_cache where uid in (' . implode(', ', $this->ucleari) . ')'; mysql_query($q); } // /** Проверка урон приемов над защитными. Перенести в Priems. *
Логика работы ускользает от понимания. * @param $pid * @param $u1 * @param $u2 * @param $hp * @return mixed */ public function testYronPriemAttack($pid, $u1, $u2, $hp) { //Игрок 1 бьет по Игроку 2 при помощи приема № pid на hp ед. здоровья /* Полная защита */ //Получаем приемы и смотрим когда какой действует foreach ($this->stats[$this->uids[$u2]]['effects'] as $effect) { if ( isset($effect) && $effect['id_eff'] == 22 && $effect['v1'] == 'priem' && in_array($effect['v2'], [45, 140, 211]) ) { //Приемы от которых урон = 1 , то есть выдаем 0 $hp['y'] = -1; $hp['r'] = 1; $hp['k'] = 2; $hp['m_y'] = 1; $hp['m_k'] = 2; } } return $hp; } /** Расчет опыта * @param $y * @param $s1 * @param $s2 * @param $id1 * @param $id2 * @return float|int */ private function testExp($y, $s1, $s2, $id1, $id2) { global $c; //ТУТ таблица умножения оыта $oplevel = [ // Максимум для каждого уровня. 0 => 1, 1 => 1, 2 => 1, 3 => 1, 4 => 2, 5 => 2, 6 => 2, 7 => 2, 8 => 3, 9 => 4, 10 => 5, 11 => 6, 12 => 7, 13 => 50, 14 => 75, ]; if ($y < 0) { $y = 0; } if ($s2['hpNow'] < 0) { $y = 0; } if ($s2['hpNow'] < $y) { $y = $s2['hpNow']; } if ($y < 0) { $y = 0; } $addExp = (int)($y * $oplevel[$this->users[$this->uids[$s2['id']]]['level']]); if ($s2['hpAll'] - $y <= 0) { $addExp = 100; } if ($addExp < 0) { $addExp = 0; } if ($s2['levels'] != 'undefined' && $this->users[$this->uids[$s2['id']]]['pass'] != 'saintlucia') { if ($this->info['razdel'] != 5 && $c['exp_limit_many']) { $texp = mysql_fetch_array(mysql_query('SELECT COUNT(`a`.`id`) FROM `battle_users` AS `a` WHERE `a`.`uid` = ' . $id1 . ' AND `a`.`battle` IN ( SELECT `b`.`battle` FROM `battle_users` AS `b` WHERE `b`.`uid` = ' . $id2 . ' AND `b`.`team` != `a`.`team` AND `b`.`time` > ' . (time() - 86400) . ' ) LIMIT 1')); $texp = $texp[0]; // if ($texp > 5) { $addExp = $addExp * 0.00; } 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; } } } else { $addExp = 0; } return $addExp; } /** Добавляем опыт \ нанесенный урон * @param $id * @param $y * @param $id1 * @param $id2 * @param $mgregen * @return void */ public function takeExp($id, $y, $id1, $id2, $mgregen = false) { global $u; if (isset($this->users[$this->uids[$id]])) { $s1 = $this->stats[$this->uids[$id1]]; $s2 = $this->stats[$this->uids[$id2]]; if ($id1 != $id2) { $e = $this->testExp($y, $s1, $s2, $id1, $id2); } else { $e = 0; } if ( (int)$this->users[$this->uids[$id1]]['bot_id'] == 0 && $this->users[$this->uids[$id1]]['dnow'] != 0 && $this->info['dungeon'] != 1 ) { $dun_limitForLevel = [ // Максимум для каждого уровня. 4 => 750, 5 => 1500, 6 => 3500, 7 => 8000, 8 => 25000, 9 => 50000, 10 => 75000, 11 => 125000, 12 => 250000, 13 => 500000, 14 => 750000, ]; $dun_expFactor = [ // Максимум для каждого уровня. 4 => 5, 5 => 5, 6 => 5, 7 => 5, 8 => 5, 9 => 3, 10 => 1, 11 => 1, 12 => 1, 13 => 1, 14 => 1, ]; if (isset($dun_expFactor[(int)$this->users[$this->uids[$id1]]['level']])) { $e = $e * $dun_expFactor[(int)$this->users[$this->uids[$id1]]['level']]; } if ($this->info['dungeon'] > 1 && $this->users[$this->uids[$id1]]['battle'] > 0) { // пещерный лимит $dun_exp = []; // Текущий лимит опыта игрока в подземельях. $rep = mysql_fetch_array(mysql_query('SELECT `dungeonexp`,`id` FROM `rep` WHERE `id` = ' . $this->users[$this->uids[$id1]]['id'])); $rep = explode(',', $rep['dungeonexp']); foreach ($rep as $key => $val) { $val = explode('=', $val); if (isset($val[0]) && isset($val[1]) && $val[0] != '' && $val[1] != 0) { $dun_exp[(int)$val[0]] = (int)$val[1]; } // текущий лимит опыта в подземке } unset($rep); if (!isset($dun_exp[$this->info['dungeon']])) { $dun_exp[$this->info['dungeon']] = 0; } if (!isset($dun_limitForLevel[(int)$this->users[$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; } } else // Опыт в пещерах. { if ($this->info['dungeon'] == 102) { $e = floor($e * 0.002); } } } $this->users[$this->uids[$id1]]['battle_exp'] += floor($e); // if (!$mgregen) { $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; } } } } $upd = mysql_query('UPDATE `stats` SET `last_hp` = ' . $this->users[$this->uids[$id1]]['last_hp'] . ',`tactic6` = ' . $this->users[$this->uids[$id1]]['tactic6'] . ',`battle_yron` = ' . $this->users[$this->uids[$id1]]['battle_yron'] . ',`battle_exp` = ' . $this->users[$this->uids[$id1]]['battle_exp'] . ' WHERE `id` = ' . (int)$id1); if (!$upd) { echo '[не удача при использовании приема]'; } else { $this->stats[$this->uids[$id1]]['battle_exp'] = $this->users[$this->uids[$id1]]['battle_exp']; $this->clear_cache($id1); $this->stats[$this->uids[$id1]]['tactic6'] = $this->users[$this->uids[$id1]]['tactic6']; if ($id1 == $u->info['id']) { $u->info['tactic6'] = $this->users[$this->uids[$id1]]['tactic6']; $u->stats['tactic6'] = $this->users[$this->uids[$id1]]['tactic6']; $u->info['battle_exp'] = $this->users[$this->uids[$id1]]['battle_exp']; $u->info['battle_yron'] = $this->users[$this->uids[$id1]]['battle_yron']; $u->info['notactic'] = $this->users[$this->uids[$id1]]['notactic']; $u->stats['notactic'] = $this->users[$this->uids[$id1]]['notactic']; } } unset($s1, $s2); } } /** Добавляем нанесенный урон. * @param $uid * @param $y * @return void * @todo Перенести в класс Priems. */ public function takeYronNow($uid, $y) { global $u; $this->users[$this->uids[$uid]]['battle_yron'] += floor($y); $this->stats[$this->uids[$uid]]['battle_yron'] += floor($y); if ($uid == $u->info['id']) { $u->info['battle_yron'] += floor($y); $u->stats['battle_yron'] += floor($y); } mysql_query('UPDATE `stats` SET `battle_yron` = `battle_yron` + ' . mysql_real_escape_string(floor($y)) . ' WHERE `id` = ' . (int)$uid); } /** JS информация о игроке. Действительно, что ещё хранить в _battles.. * @param $id * @param $t * @return false|string */ public function myInfo($id, $t) { global $u; if (isset($this->users[$this->uids[$id]]) || $u->info['id'] == $id) { if ($u->info['id'] == $id || ($u->info['enemy'] == $id && $id > 0)) { //Всегда обновляем $this->users[$this->uids[$id]] = mysql_fetch_array(mysql_query('SELECT `u`.`zag`,`u`.`id`,`u`.`login`,`u`.`login2`,`u`.`online`,`u`.`admin`,`u`.`city`,`u`.`cityreg`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`, `u`.`level`,`u`.`money`,`u`.`money3`,`u`.`money2`,`u`.`money4`,`u`.`battle`,`u`.`sex`,`u`.`obraz`,`u`.`win`,`u`.`win_t`, `u`.`lose`,`u`.`lose_t`,`u`.`nich`,`u`.`timeMain`,`u`.`invis`,`u`.`bot_id`,`u`.`animal`,`u`.`type_pers`, `u`.`notrhod`,`u`.`bot_room`,`u`.`inUser`,`u`.`inTurnir`,`u`.`inTurnirnew`,`u`.`activ`,`u`.`stopexp`,`u`.`real`, `st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`id` = "' . $id . '" LIMIT 1')); $this->stats[$this->uids[$id]] = $u->getStats($this->users[$this->uids[$id]], 0, 0, false, false, true); } $ur = $this->users[$this->uids[$id]]; $st = $this->stats[$this->uids[$id]]; $itm = $this->stats[$this->uids[$id]]['items']; $eff = $this->stats[$this->uids[$id]]['effects']; $ef = ''; $i = 0; if ($u->info['seff'] < 1) { $ef .= '
Свернуть\',event,3,1,1,1,\'\');\" onmouseout=\"top.hic();\" onmousedown=\"top.hic();\">
'; 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'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $eff[$i]['v2'] . '" LIMIT 1')); } if (isset($eff[$i]['priem']['id']) && $eff[$i]['priem']['neg'] == 1) { $nseef = 0; } } } if (isset($eff[$i]) && $eff[$i] != 'delete') { if ($nseef == 0) { $ei = '' . $eff[$i]['name'] . ''; if ($eff[$i]['x'] > 1) { $ei .= ' x' . $eff[$i]['x'] . ' '; } if ($eff[$i]['type1'] > 0 && $eff[$i]['type1'] < 7) { $ei .= ' (Эликсир)'; } elseif (($eff[$i]['type1'] > 6 && $eff[$i]['type1'] < 11) || $eff[$i]['type1'] == 16) { $ei .= ' (Заклятие)'; } elseif ($eff[$i]['type1'] == 14) { $ei .= ' (Прием)'; } elseif ($eff[$i]['type1'] == 15) { $ei .= ' (Изучение)'; } elseif ($eff[$i]['type1'] == 17) { $ei .= ' (Проклятие)'; } elseif ($eff[$i]['type1'] == 18 || $eff[$i]['type1'] == 19) { $ei .= ' (Травма)'; } elseif ($eff[$i]['type1'] == 20) { $ei .= ' (Пристрастие)'; } elseif ($eff[$i]['type1'] == 22) { $ei .= ' (Ожидание)'; } else { $ei .= ' (Эффект)'; } $ei .= '
'; $out = ''; $time_still = ($eff[$i]['timeUse'] + ($eff[$i]['timeAce'] - $eff[$i]['timeUse']) + $eff[$i]['actionTime']); if ($eff[$i]['timeAce'] == 0) { $time_still += $eff[$i]['timeUse']; } $time_still -= time(); if ($eff[$i]['bp'] == 0 && $eff[$i]['timeUse'] != 77) { if ($eff[$i]['type1'] != 13) { $ei .= 'Осталось: ' . $u->timeOut($time_still); } } else { if ($eff[$i]['timeUse'] != 77 && $eff[$i]['hod'] < 1) { $ei .= 'Осталось: ' . $u->timeOut($time_still); } elseif ($eff[$i]['hod'] >= 0) { $ei .= 'Зарядов: ' . $eff[$i]['hod']; } } if ($eff[$i]['user_use'] != '') { if ($this->users[$this->uids[$eff[$i]['user_use']]]['login2'] != '') { $ei .= '
Автор: ' . $this->users[$this->uids[$eff[$i]['user_use']]]['login2'] . ''; } elseif ($this->users[$this->uids[$eff[$i]['user_use']]]['login'] != '') { $ei .= '
Автор: ' . $this->users[$this->uids[$eff[$i]['user_use']]]['login'] . ''; } } //Действие эффекта $tr = ''; $ti = $u->items['add']; $x = 0; $ed = $this->lookStats($eff[$i]['data']); while ($x < count($ti)) { $n = $ti[$x]; if (isset($ed['add_' . $n], $u->is[$n]) && $n != 'pog') { $z = ''; if ($ed['add_' . $n] > 0) { $z = '+'; } $tr .= '
' . $u->is[$n] . ': ' . $z . $ed['add_' . $n]; } $x++; } if ($ed['add_mib1'] != 0) { if ($ed['add_mab1'] != 0) { $tr .= '
Броня головы: ' . $ed['add_mib1'] . '-' . $ed['add_mab1']; } else { $m1l = $ed['add_mib1']; if ($m1l > 0) { $m1l = '+' . $m1l; } $tr .= '
Броня головы: ' . $m1l; } } if ($ed['add_mib2'] != 0) { if ($ed['add_mab2'] != 0) { $tr .= '
Броня корпуса: ' . $ed['add_mib2'] . '-' . $ed['add_mab2']; } else { $m1l = $ed['add_mib2']; if ($m1l > 0) { $m1l = '+' . $m1l; } $tr .= '
Броня корпуса: ' . $m1l; } } if ($ed['add_mib3'] != 0) { if ($ed['add_mab3'] != 0) { $tr .= '
Броня пояса: ' . $ed['add_mib3'] . '-' . $ed['add_mab3']; } else { $m1l = $ed['add_mib3']; if ($m1l > 0) { $m1l = '+' . $m1l; } $tr .= '
Броня пояса: ' . $m1l; } } if ($ed['add_mib4'] != 0) { if ($ed['add_mab4'] != 0) { $tr .= '
Броня ног: ' . $ed['add_mib4'] . '-' . $ed['add_mab4']; } else { $m1l = $ed['add_mib4']; if ($m1l > 0) { $m1l = '+' . $m1l; } $tr .= '
Броня ног: ' . $m1l; } } $efix = 0; if (isset($ed['add_pog2']) && $ed['add_pog2'] > 0) { $efix = $ed['add_pog2']; } if (isset($ed['add_pog'])) { $tr .= '
Магический барьер способен поглотить еще ' . $ed['add_pog'] . ' ед. урона'; } if (isset($ed['add_pog2'])) { $tr .= '
Магический барьер способен поглотить еще ' . $ed['add_pog2'] . ' ед. урона (' . $ed['add_pog2p'] . '%)'; } if ($tr != '') { $ei .= $tr; } if ($eff[$i]['info'] != '') { $ei .= '
Информация:
' . $eff[$i]['info']; } $ef .= '
'; unset($efix); } } elseif ($eff[$i] != 'delete') { $i = -2; } $i++; } } else { $ef .= '
Развернуть\',event,3,1,1,1,\'\');\" onmouseout=\"top.hic();\" onmousedown=\"top.hic();\">
'; } $ca = ''; if ($ur['clan'] > 0) { $cl = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id` = ' . $ur['clan'])); if (isset($cl['id'])) { $ca = ''; } } if ($ur['align'] > 0) { $ca = '' . $ca; } if ($ur['login2'] == '') { $ur['login2'] = $ur['login']; } if (floor($st['hpNow']) > $st['hpAll']) { $st['hpNow'] = $st['hpAll']; } if (floor($st['mpNow']) > $st['mpAll']) { $st['mpNow'] = $st['mpAll']; } $stsua = '' . $ur['login2'] . ''; $stsua .= '
Сила: ' . $st['s1']; $stsua .= '
Ловкость: ' . $st['s2']; $stsua .= '
Интуиция: ' . $st['s3']; $stsua .= '
Выносливость: ' . $st['s4']; if ($st['s5'] != 0) { $stsua .= '
Интелект: ' . $st['s5']; } if ($st['s6'] != 0) { $stsua .= '
Мудрость: ' . $st['s6']; } if ($st['s7'] != 0) { $stsua .= '
Духовность: ' . $st['s7']; } if ($u->info['admin'] > 0) { $align = $ur['align']; } $tp_img = [ 1 => 4, 2 => 5, 14 => 6, 3 => 7, 5 => 8, 7 => 9, 17 => 10, 16 => 11, 13 => 12, 10 => 13, 9 => 14, 8 => 15, 11 => 17, //кольцо 2 12 => 18 //кольцо 3 ]; $info = 'info_reflesh(' . $t . ',' . $ur['id'] . ',"' . $ca . '' . $ur['login2'] . ' [' . $ur['level'] . '] ","' . $ur['obraz'] . '",' . floor($st['hpNow']) . ',' . floor($st['hpAll']) . ',' . floor($st['mpNow']) . ',' . floor($st['mpAll']) . ',0,' . $ur['sex'] . ',"' . $ef . '","' . $stsua . '", "' . $align . '", "' . $ur['zag'] . '");shpb();'; $i = 0; 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 = '' . $itm[$i]['name'] . ''; $td = $this->lookStats($itm[$i]['data']); $lvar = ''; if ($td['add_hpAll'] > 0) { $td['add_hpAll'] = '+' . $td['add_hpAll']; $lvar .= '
Уровень жизни: ' . $td['add_hpAll']; } if ($td['sv_yron_max'] > 0 || $td['sv_yron_min'] > 0) { $lvar .= '
Урон: ' . (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 .= '
Броня головы: ' . $m1l . (0 + $td['add_mab1']); } else { $lvar .= '
Броня головы: ' . (0 + $td['add_mib1']) . '-' . (0 + $td['add_mab1']); } } if ($td['add_mab2'] > 0) { if ($td['add_mib2'] == $td['add_mab2'] && $pl['geniration'] == 1) { $m1l = '+'; $lvar .= '
Броня корпуса: ' . $m1l . (0 + $td['add_mab2']); } else { $lvar .= '
Броня корпуса: ' . (0 + $td['add_mib2']) . '-' . (0 + $td['add_mab2']); } } if ($td['add_mab3'] > 0) { if ($td['add_mib3'] == $td['add_mab3'] && $pl['geniration'] == 1) { $m1l = '+'; $lvar .= '
Броня пояса: ' . $m1l . (0 + $td['add_mab3']); } else { $lvar .= '
Броня пояса: ' . (0 + $td['add_mib3']) . '-' . (0 + $td['add_mab3']); } } if ($td['add_mab4'] > 0) { if ($td['add_mib4'] == $td['add_mab4'] && $pl['geniration'] == 1) { $m1l = '+'; $lvar .= '
Броня ног: ' . $m1l . (0 + $td['add_mab4']); } else { $lvar .= '
Броня ног: ' . (0 + $td['add_mib4']) . '-' . (0 + $td['add_mab4']); } } if ($itm[$i]['iznosMAX'] > 0) { if ($itm[$i]['iznosMAXi'] == 999999999) { $lvar .= '
Долговечность: неразрушимо'; } else { $lvar .= '
Долговечность: ' . floor($itm[$i]['iznosNOW']) . '/' . floor($itm[$i]['iznosMAX']); } } $ttl .= $lvar; $ccv = ''; if ($itm[$i]['magic_inci'] != '' || $itm[$i]['magic_inc'] != '') { if ($itm[$i]['magic_inc'] == '') { $itm[$i]['magic_inc'] = $itm[$i]['magic_inci']; } $temp01 = mysql_query('SELECT * FROM `eff_main` WHERE `id2` = ' . $itm[$i]['magic_inc'] . ' AND `type1` = 12345 LIMIT 1'); if ($temp01) { $mgi = mysql_fetch_array($temp01); if (isset($mgi['id2'])) { $ccv .= 'top.useMagicBattle(\'' . $mgi['mname'] . '\',' . $itm[$i]['id'] . ',\'' . $mgi['img'] . '\',1,2);'; } } } $info .= 'abitms(' . (0 + $t) . ',' . (0 + $itm[$i]['uid']) . ',' . (0 + $itm[$i]['id']) . ',' . (0 + $itm[$i]['inOdet']) . ',"' . $itm[$i]['name'] . '","' . $ttl . '","' . $itm[$i]['img'] . '","' . $ccv . '");'; $i++; } return $info; } else { return false; } } //Проверка на выживших public function testUsersLive() { $tl = 0; for ($i = 0; $i < count($this->uids); $i++) { if ($this->stats[$i]['id'] <= 0) { continue; } if (isset($tml[$this->users[$i]['team']]) || floor($this->stats[$i]['hpNow']) < 1) { continue; } $tml[$this->users[$i]['team']] = 1; $tl++; if ($tl > 1) { break; } } return $tl > 1; } //Мини лог private function miniLogAdd(array $user, $text) { $time = time(); $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); } /** Проверяем завершение боя. *
[Оптимизируй меня]: много повторяющихся элементов. * @return void */ public function testFinish() { global $u; // mysql_query('START TRANSACTION;'); // $test = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `team_win` = -1 LIMIT 1 FOR UPDATE')); // mysql_query('COMMIT;'); // if ($this->info['team_win'] == -1 && isset($test['id'])) { $hp = []; $tml = []; $tmv = []; $tl = 0; $i = 0; $j = 0; while ($i < count($this->uids)) { if ($this->stats[$i]['id'] > 0) { if (floor($this->stats[$i]['hpNow']) < 1) { $this->stats[$i]['hpNow'] = 0; } $hp[$this->users[$i]['team']] += floor($this->stats[$i]['hpNow']); if (!isset($tml[$this->users[$i]['team']]) && floor($this->stats[$i]['hpNow']) >= 1) { $tml[$this->users[$i]['team']] = 1; $tmv[$j] = $this->users[$i]['team']; $tl++; } } $i++; } if ($tl <= 1) { //Доп.проверка $tmHpNow = []; $tmNow = []; $sp = mysql_query('SELECT `u`.`login`,`u`.`id`,`u`.`battle`,`s`.`team`,`s`.`hpNow` FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `u`.`battle` = "' . $this->info['id'] . '"'); while ($pl = mysql_fetch_array($sp)) { if (!isset($tmHpNow[$pl['team']])) { $tmHpNow[$pl['team']] = 0; $tmNow[] = $pl['team']; } $hpTm = floor($pl['hpNow']); if ($hpTm < 0) { $hpTm = 0; } if ($hpTm > 0) { $tmHpNow[$pl['team']] += $pl['hpNow']; } } $gdj = 0; $i = 0; while ($i < count($tmNow)) { if (isset($tmNow[$i])) { $j = $tmNow[$i]; if ($tmHpNow[$j] > 0) { $gdj++; } } $i++; } if ($gdj > 1) { $tl = $gdj; echo 'Поединок может завершиться не корректно... (Сообщите Администрации об этом)'; } } if ($tl <= 1) { //завершаем поединок, кто-то один победил, либо ничья $i = 0; $tmwin = 0; while ($i < count($tmv)) { if ($tmv[$i] >= 1 && $tml[$tmv[$i]] > 0) { $tmwin = $tmv[$i]; } $i++; } if ($this->info['izlom'] == 0) { $rs = ''; $ts = []; $tsi = 0; if ($this->info['id'] > 0) { //данные о игроках в бою unset($this->users, $this->stats, $this->uids, $this->bots, $this->iBots); $trl = mysql_query('SELECT `u`.`no_ip`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`money3`,`u`.`money2`,`u`.`bot_id` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "' . $this->info['id'] . '" ORDER BY `st`.`bot` DESC'); $ir = 0; $bi = 0; $this->users = null; $this->stats = null; $this->uids = null; $this->bots = null; $this->iBots = null; while ($pl = mysql_fetch_array($trl)) { //записываем данные if ($pl['login2'] == '') { $pl['login2'] = $pl['login']; } $this->users[$ir] = $pl; $this->uids[$pl['id']] = $ir; if ($pl['bot'] > 0) { $this->bots[$bi] = $pl['id']; $this->iBots[$pl['id']] = $bi; $bi++; } //записываем статы $this->stats[$ir] = $u->getStats($pl, 0, 0, false, false, true); $ir++; } } } elseif (!isset($this->uids[$u->info['id']])) { $rs = ''; $ts = []; $tsi = 0; if ($this->info['id'] > 0) { //данные о игроках в бою $trl = mysql_query('SELECT `u`.`no_ip`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`bot_id`,`u`.`money3`,`u`.`money2` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`id` = "' . $this->info['id'] . '" LIMIT 1'); $pl = mysql_fetch_array($trl); //записываем данные if ($pl['login2'] == '') { $pl['login2'] = $pl['login']; } $this->users[] = $pl; $this->uids[$pl['id']] = $ir; if ($pl['bot'] > 0) { $this->bots[] = $pl['id']; $this->iBots[$pl['id']] = $bi; } //записываем статы $this->stats[] = $u->getStats($pl, 0, 0, false, false, true); } } if ($this->info['izlom'] > 0 && $tmwin == 1) { // выкидываем ботов из боя $i = 0; $dlt = ''; $dlt2 = ''; $sp = mysql_query('SELECT `users`.`id`,`stats`.`bot`,`stats`.`team` FROM `users`,`stats` WHERE `users`.`battle` = "' . $this->info['id'] . '" AND `stats`.`id` = `users`.`id` LIMIT 250'); while ($pl = mysql_fetch_array($sp)) { if ($pl['bot'] == 1 && $pl['team'] != $u->info['team']) { $dlt .= ' `id`="' . $pl['id'] . '" OR'; $dlt2 .= ' `uid`="' . $pl['id'] . '" OR'; $i++; } } if ($i > 0) { $dlt = trim($dlt, 'OR'); $dlt2 = trim($dlt2, 'OR'); mysql_query('DELETE FROM `users` WHERE ' . $dlt . ' LIMIT ' . $i); mysql_query('DELETE FROM `stats` WHERE ' . $dlt . ' LIMIT ' . $i); mysql_query('DELETE FROM `items_users` WHERE ' . $dlt2 . ' LIMIT ' . ($i * 100)); mysql_query('DELETE FROM `eff_users` WHERE ' . $dlt2 . ' LIMIT ' . ($i * 100)); } unset($i, $dlt, $dlt2); $j = 0; $k = 0; $obr = 0; //Это излом, добавляем еще ботов if ($this->get_chanse(20)) { //Уникальные монстры if ($this->info['izlomLvl'] == 8) { $bots = [ 'Валентайский Охотник', 'Шипокрыл Хаоса', 'Шипокрыл', 'Лик Хаоса', 'Фанатик Хаоса', ]; //$bots = array( 'Валентайский Охотник' ); } $logins_bot = []; // echo '
Приближается нечто...
'; // $id2 = rand(0, (count($bots) - 1)); $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, round($this->info['izlomRoundSee'])); if (isset($id['id']) && $bot) { // $btxt = ''; if ($id['align'] > 0) { $btxt = $btxt . ''; } if ($id['clan'] > 0) { $btxt = $btxt . ''; } $btxt = $btxt . '{u1}[' . $id['level'] . ']'; if ($id['sex'] == 1) { $btxt = $btxt . ' вмешалась в поединок.'; } else { $btxt = $btxt . ' вмешался в поединок.'; } $this->miniLogAdd([ 'login' => $id['login'], 'sex' => $id['sex'], 'team' => 0, ], '{tm1} ' . $btxt); // $logins_bot = $bot['logins_bot']; mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); $u->addAction(time(), 'win_bot_' . $id['id'], '', $this->users[$i]['id']); if (rand(0, 10000) < 1500) { $obr++; } $j++; } } else { //Обычные монстры if ($this->info['izlomLvl'] == 8) { $bots = [ 'Литейщик', 'Проклятие Глубин', 'Пустынник Маньяк', 'Пустынник Убийца', 'Рабочий Мглы', 'Смотритель Мглы', 'Сторож Мглы', ]; } $logins_bot = []; // $id2 = rand(0, (count($bots) - 1)); $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, ($this->info['izlomRoundSee'] * 2)); if (isset($id['id']) && $bot) { // $btxt = ''; if ($id['align'] > 0) { $btxt = $btxt . ''; } if ($id['clan'] > 0) { $btxt = $btxt . ''; } $btxt = $btxt . '{u1}[' . $id['level'] . ']'; if ($id['sex'] == 1) { $btxt = $btxt . ' вмешалась в поединок.'; } else { $btxt = $btxt . ' вмешался в поединок.'; } $this->miniLogAdd([ 'login' => $id['login'], 'sex' => $id['sex'], 'team' => 0, ], '{tm1} ' . $btxt); // $logins_bot = $bot['logins_bot']; mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); if (rand(0, 10000) < 1500) { $obr++; } $j++; } // $id2 = rand(0, (count($bots) - 1)); $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, $this->info['izlomRoundSee']); if (isset($id['id']) && $bot) { // $btxt = ''; if ($id['align'] > 0) { $btxt = $btxt . ''; } if ($id['clan'] > 0) { $btxt = $btxt . ''; } $btxt = $btxt . '{u1}[' . $id['level'] . ']'; if ($id['sex'] == 1) { $btxt = $btxt . ' вмешалась в поединок.'; } else { $btxt = $btxt . ' вмешался в поединок.'; } $this->miniLogAdd([ 'login' => $id['login'], 'sex' => $id['sex'], 'team' => 0, ], '{tm1} ' . $btxt); // $logins_bot = $bot['logins_bot']; mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); if (rand(0, 10000) < 1500) { $obr++; } $j++; } // if (rand(0, 100) < 70) { $id2 = rand(0, (count($bots) - 1)); $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, $this->info['izlomRoundSee']); if (isset($id['id']) && $bot) { // $btxt = ''; if ($id['align'] > 0) { $btxt = $btxt . ''; } if ($id['clan'] > 0) { $btxt = $btxt . ''; } $btxt = $btxt . '{u1}[' . $id['level'] . ']'; if ($id['sex'] == 1) { $btxt = $btxt . ' вмешалась в поединок.'; } else { $btxt = $btxt . ' вмешался в поединок.'; } $this->miniLogAdd([ 'login' => $id['login'], 'sex' => $id['sex'], 'team' => 0, ], '{tm1} ' . $btxt); // $logins_bot = $bot['logins_bot']; mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); if (rand(0, 10000) < 1500) { $obr++; } $j++; } } //Каждые 10 вол = +1 монстр $irb = floor($this->info['izlomRoundSee'] / 10); while ($irb > 0) { // if (rand(0, 100) < 20) { $id2 = rand(0, (count($bots) - 1)); $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "' . $bots[$id2] . '" AND `level` <= "' . $u->info['level'] . '" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1')); $bot = $u->addNewbot($id['id'], null, null, $logins_bot, null, $this->info['izlomRoundSee']); if (isset($id['id']) && $bot) { // $btxt = ''; if ($id['align'] > 0) { $btxt = $btxt . ''; } if ($id['clan'] > 0) { $btxt = $btxt . ''; } $btxt = $btxt . '{u1}[' . $id['level'] . ']'; if ($id['sex'] == 1) { $btxt = $btxt . ' вмешалась в поединок.'; } else { $btxt = $btxt . ' вмешался в поединок.'; } $this->miniLogAdd([ 'login' => $id['login'], 'sex' => $id['sex'], 'team' => 0, ], '{tm1} ' . $btxt); // $logins_bot = $bot['logins_bot']; mysql_query('UPDATE `users` SET `battle`="' . $this->info['id'] . '" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot['id'] . '" LIMIT 1'); if (rand(0, 10000) < 1500) { $obr++; } $j++; } } $irb--; } } // unset($logins_bot); if ($j == 0) { //конец излома $this->finishBattle($tml, $tmv, null, $tl); $fin1 = mysql_query('INSERT INTO `izlom_rating` (`uid`,`time`,`voln`,`level`,`bots`,`rep`,`obr`,`btl`) VALUES ("' . $u->info['id'] . '","' . time() . '","' . $this->info['izlomRoundSee'] . '","' . $this->info['izlomLvl'] . '","0","0","' . ($this->info['izlomObr'] - $this->info['izlomObrNow']) . '","' . $this->info['id'] . '")'); } else { $this->info['izlomRound'] = $iz['round']; mysql_query('UPDATE `battle` SET `izlomObrNow` = ' . $obr . ',`izlomObr` = `izlomObr` + ' . $obr . ',`timeout` = (`timeout`+5),`izlomRound` = "' . ($this->info['izlomRound'] + 1) . '",`izlomRoundSee` = `izlomRoundSee`+1 WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); $this->stats[$this->uids[$u->info['id']]]['hpNow'] += $this->stats[$this->uids[$u->info['id']]]['hpAll'] * 0.25; $this->stats[$this->uids[$u->info['id']]]['mpNow'] += $this->stats[$this->uids[$u->info['id']]]['mpAll'] * 0.25; $this->users[$this->uids[$u->info['id']]]['hpNow'] = $this->stats[$this->uids[$u->info['id']]]['hpAll']; $this->users[$this->uids[$u->info['id']]]['mpNow'] = $this->stats[$this->uids[$u->info['id']]]['mpAll']; $vLog = 'at1=00000||at2=00000||zb1=' . $this->stats[$this->uids[$u1]]['zonb'] . '||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] . '||bl1=' . $this->atacks[$id]['b' . $a] . '||bl2=' . $this->atacks[$id]['b' . $b] . '||time1=' . $this->atacks[$id]['time'] . '||time2=' . $this->atacks[$id]['time2'] . '||s2=' . $this->users[$this->uids[$u2]]['sex'] . '||s1=' . $this->users[$this->uids[$u1]]['sex'] . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2'] . ''; $mas = [ 'time' => time(), 'battle' => $this->info['id'], 'id_hod' => ($this->hodID + 1), 'vars' => $vLog, 'type' => 1, ]; if ($u->info['sex'] == 1) { $mas['text'] = '' . date('H:i') . ' ' . $u->info['login'] . ' воспользовалась приемом "Передышка".'; } else { $mas['text'] = '' . date('H:i') . ' ' . $u->info['login'] . ' воспользовался приемом "Передышка".'; } 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'] .= ' +' . $hpSks . ''; } else { $hpSks = 0; $mas['text'] .= ' --'; } $mas['text'] .= ' [' . floor($u->info['hpNow'] + $hpSks) . '/' . $u->stats['hpAll'] . ']'; $this->add_log($mas); mysql_query('UPDATE `stats` SET `hpNow` = "' . ($u->info['hpNow'] + ($u->stats['hpAll'] * ((rand(15, 25)) / 100))) . '",`mpNow` = "' . ($u->info['mpNow'] + ($u->stats['mpAll'] * 0.25)) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); } } else { //завершаем бой $this->finishBattle($tml, $tmv, null, $tl); if ($this->info['izlom'] > 0) { $fin1 = mysql_query('INSERT INTO `izlom_rating` (`uid`,`time`,`voln`,`level`,`bots`,`rep`,`obr`,`btl`) VALUES ("' . $u->info['id'] . '","' . time() . '","' . $this->info['izlomRoundSee'] . '","' . $this->info['izlomLvl'] . '","0","0","' . ($this->info['izlomObr'] - $this->info['izlomObrNow']) . '","' . $this->info['id'] . '")'); } } if (isset($fin1)) { mysql_query('INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","31","23","' . $u->info['id'] . '","Касание Хаоса","nofastfinisheff=1","' . time() . '")'); mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','" . $u->info['room'] . "','','" . $u->info['login'] . "','Вы создали предмет "Образец"x" . (($this->info['izlomObr'] - $this->info['izlomObrNow']) * 7) . "','" . time() . "','6','0')"); $i01 = 1; while ($i01 <= (($this->info['izlomObr'] - $this->info['izlomObrNow'])) * 7) { $u->addItem(1226, $u->info['id'], '|sudba=' . $u->info['login']); $i01++; } mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES ("' . $u->info['id'] . '","' . time() . '","capitalcity","' . $u->info['room'] . '","izlom"," ","","")'); unset($fin1); } } } else { mysql_query('START TRANSACTION;'); $test = mysql_fetch_array(mysql_query('SELECT `id`,`team_win`, `testfinish` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `team_win` != -1 LIMIT 1 FOR UPDATE')); mysql_query('COMMIT;'); if (isset($test['id'])) { $this->finishBattle(null, null, 10, $tl); } } } /** Завершение поединка. *
ЁБИЧЕСКАЯ СИЛА! СЮДА НАПИХАНО ВСЁ! *
Эта функция принесёт больше всего проблем. * @param $t ??? * @param $v ??? * @param $nl ??? * @param $tl [unused] ??? * @return void */ private function finishBattle($t, $v, $nl, $tl) { global $u, $c; mysql_query('LOCK TABLES users,stats,battle,battle_last,battle_end,chat WRITE'); $frtu = false; $test = mysql_fetch_array(mysql_query('SELECT `id`,`team_win`,`testfinish` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `team_win` != -1 LIMIT 1;')); if ($test['testfinish'] != -1) { $trtt = mysql_query('UPDATE `battle` SET `testfinish` = "-1" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); $relbf = $this->info['team_win']; if ($nl != 10) { $i = 0; $dnr = 0; if ($this->info['team_win'] == -1) { $this->info['team_win'] = 0; while ($i < count($v)) { if ($v[$i] >= 1 && $t[$v[$i]] > 0) { $this->info['team_win'] = $v[$i]; } $i++; } } } //данные о игроках в бою $t = mysql_query('SELECT `u`.`stopexp`,`u`.`twink`,`u`.`city`,`u`.`room`,`u`.`no_ip`,`u`.`pass`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`bot_id`,`u`.`money3`,`u`.`money2` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "' . $this->info['id'] . '"'); $i = 0; $bi = 0; while ($pl = mysql_fetch_array($t)) { //записываем данные if ($pl['login2'] == '') { $pl['login2'] = $pl['login']; } $this->users[$i] = $pl; $this->uids[$pl['id']] = $i; if ($pl['bot'] > 0) { $this->bots[$bi] = $pl['id']; $this->iBots[$pl['id']] = $bi; $bi++; } //записываем статы $this->stats[$i] = $u->getStats($pl, 0, 0, false, false, true); $i++; } unset($pl, $t); if ($this->info['time_over'] == 0) { $tststrt = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `time_over` = "0" LIMIT 1')); if (isset($tststrt['id'])) { if ($this->info['inTurnir'] == 0 || $this->info['type'] == 500) { mysql_query('UPDATE `battle` SET `time_over` = "' . time() . '",`team_win` = "' . $this->info['team_win'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); } mysql_query('UPDATE `battle_stat` SET `team_win` = "' . $this->info['team_win'] . '" WHERE `battle_id` = "' . $this->info['id'] . '"'); //Заносим данные о завершении боя $i = 0; $vl = ''; $vtvl = ''; $relu = 0; while ($i < count($this->users)) { $vl .= '("' . $this->users[$i]['login'] . '","' . $this->users[$i]['city'] . '","' . $this->info['id'] . '","' . $this->users[$i]['id'] . '","' . time() . '","' . $this->users[$i]['team'] . '","' . $this->users[$i]['level'] . '","' . $this->users[$i]['align'] . '","' . $this->users[$i]['clan'] . '","' . $this->users[$i]['exp'] . '","' . $this->users[$i]['bot'] . '","' . $this->users[$i]['money'] . '","' . $this->users[$i]['money2'] . '","' . $this->users[$i]['money3'] . '"),'; if ($this->users[$i]['team'] == $this->info['team_win'] && $this->info['team_win'] > 0) { $vtvl .= '' . $this->users[$i]['login'] . ', '; } $i++; } $this->info['players_c'] = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `users` WHERE `login` NOT LIKE "%(зверь%" AND `battle` = "' . $this->info['id'] . '" LIMIT 1')); $this->info['players_c'] = $this->info['players_c'][0]; mysql_query('UPDATE `battle` SET `players_c` = "' . $this->info['players_c'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); if ($vtvl != '') { $vtvl = rtrim($vtvl, ', '); $vtvl = str_replace('"', '\\\\\"', $vtvl); $this->hodID++; $vLog = 'time1=' . time(); $mass = [ 'time' => time(), 'battle' => $this->info['id'], 'id_hod' => $this->hodID, 'text' => 'test', 'vars' => $vLog, 'zona1' => '', 'zonb1' => '', 'zona2' => '', 'zonb2' => '', 'type' => '1', ]; $vtvl = 'Бой закончен, победа за ' . $vtvl . '.'; } else { $this->info['players_cc'] = mysql_fetch_array(mysql_query('SELECT COUNT(`u`.`id`) FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `s`.`hpNow` > 0 AND `u`.`battle` = "' . $this->info['id'] . '" AND `s`.`team` != "' . $u->info['team'] . '" LIMIT 1')); $this->info['players_cc'] = $this->info['players_cc'][0]; $this->info['players_cc2'] = mysql_fetch_array(mysql_query('SELECT COUNT(`u`.`id`) FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `s`.`hpNow` >= 1 AND `u`.`battle` = "' . $this->info['id'] . '" AND `s`.`team` != "' . $u->info['team'] . '" LIMIT 1')); $this->info['players_cc2'] = $this->info['players_cc2'][0]; $inf_test = ', users: ' . $this->info['players_cc'] . ' and ' . $this->info['players_cc2'] . ''; $this->hodID++; $vLog = 'time1=' . time(); $mass = [ 'time' => time(), 'battle' => $this->info['id'], 'id_hod' => $this->hodID, 'text' => 'test', 'vars' => $vLog, 'zona1' => '', 'zonb1' => '', 'zona2' => '', 'zonb2' => '', 'type' => '1', ]; $vtvl = 'Бой закончен, ничья.'; } $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); $this->saveLogs(); if ($this->info['type'] == 99) { $vLog = 'time1=' . time(); $mass = [ 'time' => time(), 'battle' => $this->info['id'], 'id_hod' => $this->hodID, 'text' => 'test', 'vars' => $vLog, 'zona1' => '', 'zonb1' => '', 'zona2' => '', 'zonb2' => '', 'type' => '1', ]; $vtvl = 'И победители стали калечить проигравших...'; $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); $i = 0; $vtvl = ''; $tr_nm = [ 1 => 'легкую', 2 => 'среднюю', 3 => 'тяжелую', 4 => 'неизлечимую', ]; while ($i < count($this->users)) { if ($this->users[$i]['team'] != $this->info['team_win']) { $tr_pl = mysql_fetch_array(mysql_query('SELECT `id`,`v1` FROM `eff_users` WHERE `id_eff` = 4 AND `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = "0" ORDER BY `v1` DESC LIMIT 1')); if (!isset($tr_pl['id']) || $tr_pl['v1'] < 3) { if ($this->info['smert'] == 1) { $tr_tp = 4; } else { $tr_tp = rand(1, 3); } if (isset($tr_pl['id'])) { $tr_tp = rand(($tr_pl['v1'] + 1), 3); } if ($this->users[$i]['sex'] == 1) { $vtvl = '' . $this->users[$i]['login'] . ' получила повреждение: ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; } else { $vtvl = '' . $this->users[$i]['login'] . ' получил повреждение: ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; } $this->addTravm($this->users[$i]['id'], $tr_tp, rand(3, 5)); } } $i++; } $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); } if ($vl != '') { $vl = rtrim($vl, ','); mysql_query('INSERT INTO `battle_last` (`login`,`city`,`battle_id`,`uid`,`time`,`team`,`lvl`,`align`,`clan`,`exp`,`bot`,`money`,`money2`,`money3`) VALUES ' . $vl . ''); } mysql_query('INSERT INTO `battle_end` (`battle_id`,`city`,`time`,`team_win`) VALUES ("' . $this->info['id'] . '","' . $this->info['city'] . '","' . $this->info['time_start'] . '","' . $this->info['team_win'] . '")'); } $vLog = 'time1=' . time(); $mass = [ 'time' => time(), 'battle' => $this->info['id'], 'id_hod' => $this->hodID, 'text' => 'test', 'vars' => $vLog, 'zona1' => '', 'zonb1' => '', 'zona2' => '', 'zonb2' => '', 'type' => '1', ]; $i = 0; $vtvl = ''; $tr_nm = [ 1 => 'легкую', 2 => 'среднюю', 3 => 'тяжелую', 4 => 'неизлечимую', ]; while ($i < count($this->users)) { if ($this->users[$i]['team'] != $this->info['team_win'] && $this->info['team_win'] > 0) { $tr_pl = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `v1` = "priem" AND `v2` = 292 AND `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = "0" LIMIT 1')); $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl2 . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); if (isset($tr_pl['id'])) { if (rand(0, 100) < $tr_pl['data']) { $tr_tp = rand(($tr_pl['v1'] + 1), 3); if ($this->users[$i]['sex'] == 1) { $vtvl = '' . $this->users[$i]['login'] . ' получила повреждение (Искалечить, автор: ' . $this->users[$this->uids[$tr_pl['user_use']]]['login'] . '): ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; } else { $vtvl = '' . $this->users[$i]['login'] . ' получил повреждение (Искалечить, автор: ' . $this->users[$this->uids[$tr_pl['user_use']]]['login'] . '): ' . $tr_nm[$tr_tp] . ' травму.
' . $vtvl; } $this->addTravm($this->users[$i]['id'], $tr_tp, rand(3, 5)); } } } $i++; } if ($vtvl != '') { if ($this->info['type'] != 99) { $vtvl2 = 'И победители стали калечить проигравших...'; $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl2 . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); } $ins = mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $vtvl . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); } //Турнир БС if ($this->info['inTurnir'] > 0 && $this->info['dungeon'] != 15 && $u->info['room'] != 413) { $bs = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `id` = "' . $this->info['inTurnir'] . '" LIMIT 1')); $i = 0; $j = 0; while ($i < count($this->users)) { if ($this->stats[$i]['hpNow'] < 1 && $this->users[$i]['clone'] == 0 && $this->stats[$i]['clone'] == 0) { //Добавляем в лог БС if ($this->users[$i]['sex'] == 0) { $text .= '{u1} повержен и выбывает из турнира'; } else { $text .= '{u1} повержена и выбывает из турнира'; } //Выкидываем предметы с персонажа $spik = mysql_query('SELECT `id`,`item_id` FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `delete` ="0"'); while ($plik = mysql_fetch_array($spik)) { /* БС-1 */ 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 .= ''; } if ($usr_real['clan'] > 0) { $usrreal .= ''; } $usrreal .= '' . $usr_real['login'] . '[' . $usr_real['level'] . ']'; } else { $mereal = 'Невидимка[??]'; } $text = str_replace('{u1}', $usrreal, $text); mysql_query('INSERT INTO `bs_logs` (`type`,`text`,`time`,`id_bs`,`count_bs`,`city`,`m`,`u`) VALUES ( "1", "' . mysql_real_escape_string($text) . '", "' . time() . '", "' . $bs['id'] . '", "' . $bs['count'] . '", "' . $bs['city'] . '", "' . round($bs['money'] * 0.85, 2) . '","' . $i . '" )'); // //Удаление клона mysql_query('DELETE FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `stats` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `actions` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); mysql_query('DELETE FROM `users_delo` WHERE `uid` = "' . $this->users[$i]['id'] . '"'); //Обновление персонажа mysql_query('UPDATE `users` SET `inUser` = "0" WHERE `login` = "' . $this->users[$i]['login'] . '" OR `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1'); //Обновляем заявку mysql_query('UPDATE `bs_zv` SET `off` = "' . time() . '" WHERE `inBot` = "' . $this->users[$i]['id'] . '" AND `off` = "0" LIMIT 1'); unset($text, $usrreal, $usr_real); if ($this->users[$i]['pass'] != 'bstowerbot') { $bs['users']--; $bs['users_finish']++; } else { $bs['arhiv']--; } $j++; } $i++; } if ($j > 0) { mysql_query('UPDATE `bs_turnirs` SET `arhiv` = "' . $bs['arhiv'] . '",`users` = "' . $bs['users'] . '",`users_finish` = "' . $bs['users_finish'] . '" WHERE `id` = "' . $bs['id'] . '" LIMIT 1'); } unset($bs, $j); } //Награда за события if ($this->info['type'] == 500 && isset($tststrt['id'])) { //Предметы которые выпадают в центр $i = 0; while ($i < count($this->users)) { 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'); mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Внимание! ' . mysql_real_escape_string(str_replace('{b}', '' . $this->users[$i]['login'] . ' [' . $this->users[$i]['level'] . ']users[$i]['id'] . ' >', $mon['nich_text'])) . ' ","' . $this->users[$i]['city'] . '","","6","1","' . time() . '")'); } 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 .= 'users[$j]['align'] . '.gif >'; } if ($this->users[$j]['clan'] > 0) { $usrwin .= 'users[$j]['clan'] . '.gif >'; } $usrwin .= '' . $this->users[$j]['login'] . ' [' . $this->users[$j]['level'] . ']users[$j]['id'] . ' >'; } } $j++; } if ($usrwin != '') { $usrwin = ltrim($usrwin, ', '); } else { $usrwin = 'Команда героев'; } 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'); mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Внимание! ' . mysql_real_escape_string(str_replace('{b}', '' . $this->users[$i]['login'] . ' [' . $this->users[$i]['level'] . ']users[$i]['id'] . ' >', str_replace('{u}', $usrwin, $mon['win_text']))) . ' ","' . $this->users[$i]['city'] . '","","6","1","' . time() . '")'); 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'); mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("Внимание! ' . mysql_real_escape_string(str_replace('{b}', '' . $this->users[$i]['login'] . ' [' . $this->users[$i]['level'] . ']users[$i]['id'] . ' >', $mon['lose_text'])) . ' ","' . $this->users[$i]['city'] . '","","6","1","' . time() . '")'); } } } $i++; } } } // выкидываем ботов из боя $i = 0; $botsi = 0; if (isset($tststrt['id'])) { while ($i < count($this->users)) { //Тут выкидываем юзеров из Призавого хаота if ($this->info['type'] == 33) { $plde = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1')); if (isset($plde['mail']) && $plde['mail'] == "haot@new-combats.com") { $pld = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1')); if (isset($pld['id'])) { if ($this->users[$i]['battle_yron'] >= 500) { $u->addItem(4754, $pld['id'], ''); $u->addItem(4754, $pld['id'], ''); $u->addItem(4754, $pld['id'], ''); $u->addItem(4754, $pld['id'], ''); $u->addItem(4754, $pld['id'], ''); $pld['battle_text'] .= ' За Героическое Сражение вы получаете Реликвия Ангела (x5). '; mysql_query('UPDATE `users_achiv` SET `pg`= `pg`+1 WHERE `id` = "' . $pld['id'] . '" LIMIT 1'); if ($this->users[$i]['team'] == $this->info['team_win']) { if (rand(1, 100) <= 5) { $u->addItem(10020, $pld['id'], ''); $pld['battle_text'] .= ' и Жетон Успеха. '; } } } else { $pld['battle_text'] .= ' Вы ничего не получили. Нужно набить больше 500 урона урона .'; } mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $pld['city'] . "','" . $pld['room'] . "','','" . $pld['login'] . "','" . $pld['battle_text'] . "','-1','6','0')"); mysql_query('DELETE FROM `stats` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); mysql_query('UPDATE `users` SET `inUser` = "0" WHERE `inUser` = "' . $this->users[$i]['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); } } unset ($plde, $pld); } if ($this->users[$i]['bot'] == 1) { $botsi++; mysql_query('DELETE FROM `users` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `stats` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); } elseif ($this->users[$i]['bot'] == 2) { $this->users[$i]['battle'] = 0; mysql_query('UPDATE `users` SET `battle` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "0",`exp` = `exp` + `battle_exp`,`battle_exp` = "0",`battle_yron` = "0",`enemy` = "0", `timeGo` = "' . time() . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); //mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "0",`exp` = `exp` + `battle_exp`,`battle_exp` = "0",`timeGo` = "'.time().'" WHERE `id` = "'.$this->users[$i]['id'].'" LIMIT 1'); mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); } elseif ($this->users[$i]['bot'] > 0) { $this->users[$i]['battle'] = 0; mysql_query('UPDATE `users` SET `battle` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "0",`exp` = `exp` + `battle_exp`,`battle_exp` = "0",`battle_yron` = "0",`enemy` = "0", `timeGo` = "' . time() . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" LIMIT 100'); } if ($this->users[$i]['clone'] > 0 && $this->users[$i]['bot'] > 0 && isset($this->users[$this->uids[$this->users[$i]['clone']]]['id']) && $this->users[$this->uids[$this->users[$i]['clone']]]['team'] != $this->users[$i]['team']) { //Добавляем что клон побежден if ($this->users[$this->uids[$this->users[$i]['clone']]]['team'] == $this->info['team_win']) { $u->addAction(time(), 'win_bot_clone', '', $this->users[$i]['clone']); } elseif ($this->info['team_win'] == 0) { $u->addAction(time(), 'nich_bot_clone', '', $this->users[$i]['clone']); } else { $u->addAction(time(), 'lose_bot_clone', '', $this->users[$i]['clone']); } } elseif ($this->users[$i]['bot'] > 0 && $this->users[$i]['bot_id'] > 0) { //Добавляем что бота победили $j = 0; while ($j < count($this->users)) { if ($this->users[$j]['bot'] == 0 && $this->users[$j]['team'] != $this->users[$i]['team']) { if ($this->users[$j]['team'] == $this->info['team_win']) { $u->addAction(time(), 'win_bot_' . $this->users[$i]['bot_id'], '', $this->users[$j]['id']); // mysql_query('UPDATE `dialog_act` SET `now` = `now` + 1 WHERE `uid` = "' . $this->users[$j]['id'] . '" AND ( `btl_bot` LIKE "' . $this->users[$i]['bot_id'] . '!%" OR `btl_bot` LIKE "%!' . $this->users[$i]['bot_id'] . '!%" ) AND `val` != 1 LIMIT 1'); // } elseif ($this->info['team_win'] == 0) { $u->addAction(time(), 'nich_bot_' . $this->users[$i]['bot_id'], '', $this->users[$j]['id']); } else { $u->addAction(time(), 'lose_bot_' . $this->users[$i]['bot_id'], '', $this->users[$j]['id']); } } $j++; } } $i++; } } $botss = []; if ($nl != 10) { //Из бота падают предметы if ($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)) { $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] != '') { $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'])) { // Если квест есть, предмет имеет шанс выпасть } elseif (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']; $rtxt = 'У ' . $tbot2['login'] . ' был предмет "' . $itmnm . '" и кто угодно может поднять его'; mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $this->info['dn_id'] . "','" . $this->users[0]['city'] . "','" . $this->users[0]['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); $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) { if ($this->get_chanse(99)) { //Не выпало } elseif ($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']; $rtxt = 'У ' . $tbot2['login'] . ' был предмет "' . $itmnm . '" и кто угодно может поднять его'; mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $this->info['dn_id'] . "','" . $this->users[0]['city'] . "','" . $this->users[0]['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); $ins = mysql_query('INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`) VALUES ( "' . $this->info['dn_id'] . '", "' . $tou . '", "' . $itmz[0] . '", "' . time() . '", "' . $this->info['x'] . '", "' . $this->info['y'] . '")'); } } // //Странички саныча, if (rand(1, 100) <= 99) { //Не выпало } elseif ($this->info['dungeon'] == 12 || $this->info['dungeon'] == 3 || $this->info['dungeon'] == 101 || $this->info['dungeon'] == 16 || $this->info['dungeon'] == 9 || $this->info['dungeon'] == 10 || $this->info['dungeon'] == 13 || $this->info['dungeon'] == 106) { $tou = 0; //какому юзеру предназначено // выделяем случайного юзера из команды $itmz = rand(3143, 3192); // $itmnm = mysql_fetch_array(mysql_query('SELECT `name` FROM `items_main` WHERE `id` = "' . $itmz . '" LIMIT 1')); $itmnm = $itmnm['name']; $rtxt = 'У ' . $tbot2['login'] . ' был предмет "' . $itmnm . '" и кто угодно может поднять его'; mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $this->info['dn_id'] . "','" . $this->users[0]['city'] . "','" . $this->users[0]['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); $ins = mysql_query('INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`) VALUES ( "' . $this->info['dn_id'] . '", "' . $tou . '", "' . $itmz . '", "' . time() . '", "' . $this->info['x'] . '", "' . $this->info['y'] . '")'); } } mysql_query('UPDATE `dungeon_bots` SET `delete` = "' . time() . '" AND `inBattle` = "' . $this->info['id'] . '" WHERE `dn` = "' . $this->info['dn_id'] . '" AND `for_dn` = "0" AND `delete` = "0" '); } else { //выкидываем всех игроков в клетку RESTART $dnr = 1; if ($this->info['dungeon'] != 102) { mysql_query('UPDATE `dungeon_bots` SET `inBattle` = "0" WHERE `dn` = "' . $this->info['dn_id'] . '" AND `for_dn` = "0" AND `x` = "' . $this->info['x'] . '" AND `y`= "' . $this->info['y'] . '"'); } } } } $gm = []; $gms = []; $bm = []; $bms = []; //Квестовый раздел //Квестовый раздел //завершаем поединок $i = $this->uids[$u->info['id']]; if ($this->info['team_win'] >= 0) { if ($this->stats[$i]['pbe'] > 0) { //Бонус покупателя $this->expCoef += $this->stats[$i]['pbe']; } if ( $this->info['razdel'] == 5 && (($c['m'] >= 6 && $c['m'] <= 8) || ($c['w'] == 0 || $c['w'] == 6)) ) { //Лето и выходные $this->expCoef += 5; } $this->stats[$i]['exp'] += $this->expCoef; $this->stats[$i]['exp'] += $this->aBexp * $c['exp']; if ($this->stats[$i]['os4'] > 0) { $this->stats[$i]['exp'] += $this->stats[$i]['os4']; } $act01 = 0; $this->users[$i]['battle_exp'] = round($this->users[$i]['battle_exp'] + ($this->users[$i]['battle_exp'] / 100 * (1 + $this->info['addExp'] + $this->stats[$i]['exp']))); if ($this->info['type'] == 564) { //Бой с копией $this->users[$i]['battle_exp'] = 0; } if ($this->info['dungeon'] == 104) { $this->users[$i]['battle_exp'] = ($u->info['level'] * 2) * (count($this->uids) - 1); } elseif ($this->info['dungeon'] > 0 && $this->users[$i]['dnow'] != 0 && $this->info['dungeon'] != 1 && $this->users[$i]['team'] == $this->info['team_win']) { $dun_limitForLevel = [ 4 => 750, 5 => 1500, 6 => 3500, 7 => 8000, 8 => 25000, 9 => 50000, 10 => 75000, 11 => 100000, 12 => 100000, 13 => 100000, 14 => 100000, ]; // Максимум для каждого уровня. if ($this->users[$i]['battle_exp'] > 0) { $dun_exp = []; // Текущий лимит опыта игрока в подземельях. $rep = mysql_fetch_array(mysql_query('SELECT `dungeonexp`,`id` FROM `rep` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1')); $rep = explode(',', $rep['dungeonexp']); foreach ($rep as $key => $val) { $val = explode('=', $val); // текущий лимит опыта в подземке if (isset($val[0]) && isset($val[1]) && $val[0] != '' && $val[1] != 0) { $dun_exp[(int)$val[0]] = (int)$val[1]; } } unset($rep); } if (!isset($dun_exp[$this->info['dungeon']])) { $dun_exp[$this->info['dungeon']] = 0; } if (!isset($dun_limitForLevel[(int)$this->users[$i]['level']])) { // Если лимит не задан, опыт не даем. $this->users[$i]['battle_exp'] = 0; } elseif ( isset($dun_exp[$this->info['dungeon']]) && $dun_exp[$this->info['dungeon']] >= $dun_limitForLevel[(int)$this->users[$i]['level']] ) { // Если лимит уже достигнут, опыт не даем. $this->users[$i]['battle_exp'] = 0; } elseif ( isset($dun_exp[$this->info['dungeon']]) && $dun_limitForLevel[(int)$this->users[$i]['level']] > $dun_exp[$this->info['dungeon']] ) { // Если текущая репутация не достигла лимита. if (($dun_exp[$this->info['dungeon']] + $this->users[$i]['battle_exp']) > $dun_limitForLevel[(int)$this->users[$i]['level']]) { // Если опыта набрано достаточно, для достижения лимита. $this->users[$i]['battle_exp'] = abs($this->users[$i]['battle_exp'] - abs($dun_limitForLevel[(int)$this->users[$i]['level']] - ($this->users[$i]['battle_exp'] + $dun_exp[$this->info['dungeon']]))); $dun_exp[$this->info['dungeon']] += $this->users[$i]['battle_exp']; } elseif ($dun_limitForLevel[(int)$this->users[$i]['level']] > ($dun_exp[$this->info['dungeon']] + $this->users[$i]['battle_exp'])) { // Если опыта недостаточно, для достижения лимита. $dun_exp[$this->info['dungeon']] += $this->users[$i]['battle_exp']; } else { $this->users[$i]['battle_exp'] = 0; } } else { // В любой непонятной ситуцаии. $this->users[$i]['battle_exp'] = 0; } if ($this->users[$i]['battle_exp'] > 0 && isset($dun_exp[$this->info['dungeon']]) && $dun_exp[$this->info['dungeon']] > 0) { $dunexp = []; foreach ($dun_exp as $key => $val) { $dunexp[$key] = $key . '=' . $val; // текущий лимит опыта в подземке } $dun_exp = implode(",", $dunexp); mysql_query('UPDATE `rep` SET `dungeonexp` = "' . $dun_exp . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); unset($dunexp, $dun_exp); } unset($dun_limitForLevel); } $sinf = ''; if ($c['exp_mega']) { $this->users[$i]['battle_exp'] += floor($this->users[$i]['battle_exp'] / 100 * $c['exp_mega_val'][$this->users[$i]['level']]); } if ($this->info['team_win'] == 0 && $this->info['type'] != 564) { //ничья if ($this->users[$i]['level'] <= 1) { $this->users[$i]['battle_exp'] = floor($this->users[$i]['battle_exp'] * 0.50); } else { $this->users[$i]['battle_exp'] = ceil($this->users[$i]['battle_exp'] * 0.10); } $this->users[$i]['nich'] += 1; // mysql_query('UPDATE `users` SET `swin` = 0, `slose` = 0 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 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; // mysql_query('UPDATE `users` SET `swin` = `swin` + 1, `slose` = 0 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); // } elseif ($this->info['type'] != 564) { //проиграл if ($this->users[$i]['level'] <= 1) { $this->users[$i]['battle_exp'] = ceil($this->users[$i]['battle_exp'] * 0.33); } else { $this->users[$i]['battle_exp'] = ceil($this->users[$i]['battle_exp'] * 0.10); } $bm[$i] = $this->info['money']; $bms[$i] = $this->info['money3']; $this->users[$i]['lose'] += 1; mysql_query('UPDATE `users` SET `swin` = 0, `slose` = `slose` + 1 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); $act01 = 2; } //Рассчитываем кол-во выигрышных сумм и кто сколько получил (для екр.) if ($this->info['money3'] > 0 && isset($gms[$i]) && $this->info['type'] != 564) { $mn = [ 'l' => 0, //сколько проигравших игроков 'w' => 0, //сколько выигрывших игроков 'm' => 0 //сумма выигрыша (общая) ]; if ($act01 == 1) { $mn['l'] = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" AND `team` != "' . $this->users[$i]['team'] . '" LIMIT 1')); $mn['l'] = $mn['l'][0]; $mn['w'] = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" AND `team` = "' . $this->users[$i]['team'] . '" LIMIT 1')); $mn['w'] = $mn['w'][0]; $mn['m'] = round(($mn['l'] * $this->info['money3']) / 100 * 87, 2); $gms[$i] = round(($mn['m'] / $mn['w']), 2); } } // //заносим данные в БД //Поломка предметов if ($act01 == 1) { //победа if ($this->users[$i]['dnow'] == 0) { if ($this->users[$i]['hpNow'] < 1) { $lom = 0.05; } } } elseif ($act01 == 2) { //поражение $lom = 0.55; } else { //ничья $lom = 0.05; } //$lom = round($lom*2.75,2); $nlom = [0 => rand(0, 18), 1 => rand(0, 18), 2 => rand(0, 18), 3 => rand(0, 18)]; if ($this->info['type'] == 564) { $lom = 0; } if ($this->stats[$i]['silver'] >= 4) { $lom = 0; } mysql_query('UPDATE `items_users` SET `iznosNOW` = `iznosNOW`+' . $lom . ' WHERE `inOdet` < "18" AND `inOdet` > "0" AND `uid` = "' . $this->users[$i]['id'] . '" AND `inOdet`!="0" AND `inOdet`!=' . $nlom[0] . ' AND `inOdet`!=' . $nlom[1] . ' AND `inOdet`!=' . $nlom[2] . ' AND `inOdet`!=' . $nlom[3] . ' LIMIT 18'); $prc = ''; if ($this->users[$i]['align'] == 2) { $this->users[$i]['battle_exp'] = floor($this->users[$i]['battle_exp'] / 2); } if ($this->users[$i]['animal'] > 0) { $ulan = $u->testAction('`uid` = "' . $this->users[$i]['id'] . '" AND `vars` = "animal_use' . $this->info['id'] . '" LIMIT 1', 1); if (isset($ulan['id']) && $this->users[$i]['team'] == $this->info['team_win'] && $this->users[$i]['level'] > $ulan['vals']) { $a004 = mysql_fetch_array(mysql_query('SELECT `max_exp`,`name` FROM `users_animal` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `id` = "' . $this->users[$i]['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1')); //33% от опыта переходит зверю, но не более максимума $aexp = (round($this->users[$i]['battle_exp'] / 100 * 33)); if ($aexp > $a004['max_exp']) { $aexp = $a004['max_exp']; } unset($ulan); // mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat` ) VALUES ( '1','" . $this->users[$i]['city'] . "','" . $this->users[$i]['room'] . "','','" . $this->users[$i]['login'] . "' ,'Ваш питомец "" . $a004['name'] . "" получил опыт: " . $aexp . "','-1','6','0')"); // $upd = mysql_query('UPDATE `users_animal` SET `exp` = `exp` + ' . $aexp . ' WHERE `id` = "' . $this->users[$i]['animal'] . '" AND `level` < ' . $this->users[$i]['level'] . ' LIMIT 1'); if ($upd) { $this->users[$i]['battle_exp'] = round($this->users[$i]['battle_exp'] / 100 * 67); $this->info['addExp'] -= 33.333; } } } $prsusers = mysql_fetch_array(mysql_query('SELECT SUM(`price1`) FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" LIMIT 1')); unset($prsusers); $btlstatus = $this->typeBattle($prsusers[0]); if ($this->info['smert'] == 1) { $btlstatus = [150, 150, 'Жесточайшее Сражение', 'Жесточайшее Сражение']; } // if ($this->stats[$i]['clanpos'] > 0) { if ($this->stats[$i]['clanpos'] == 1) { $this->info['addExp'] += 0; } elseif ($this->stats[$i]['clanpos'] == 2) { $this->info['addExp'] += 0; } elseif ($this->stats[$i]['clanpos'] == 3) { $this->info['addExp'] += 0; } } unset($r1); //Статусная битва if ($btlstatus[0] > 0) { if ($this->info['type'] == 99) { $this->info['addExp'] += $btlstatus[1]; } else { $this->info['addExp'] += $btlstatus[0]; } } if ($this->users[$i]['align'] == 2 || $this->users[$i]['haos'] > time()) { $this->stats[$i]['exp'] = -($this->info['addExp'] + 50); } if ($this->info['addExp'] + $this->stats[$i]['exp'] != 0) { $prc = ' (' . (100 + $this->info['addExp'] + $this->stats[$i]['exp']) . '%)'; } if ($this->info['money'] > 0) { if (isset($gm[$i])) { $prc .= ' Вы выйграли ' . $gm[$i] . ' кр. за этот бой.'; $u->addDelo(4, $this->users[$i]['id'], '"System.battle": Персонаж выйграл ' . $gm[$i] . ' кр. (В бою №' . $this->info['id'] . ').', time(), $this->info['city'], 'System.battle', 0, 0); $this->users[$i]['money'] += $gm[$i]; } elseif (isset($bm[$i])) { $prc .= ' Вы заплатили ' . $bm[$i] . ' кр. за этот бой.'; $u->addDelo(4, $this->users[$i]['id'], '"System.battle": Персонаж проиграл ' . $gm[$i] . ' кр. (В бою №' . $this->info['id'] . ').', time(), $this->info['city'], 'System.battle', 0, 0); $this->users[$i]['money'] -= $bm[$i]; } } // if ($c['money_haot'] && $this->users[$i]['exp'] <= 200000000) { if ($act01 == 1 && $this->info['razdel'] == 5 && $this->users[$i]['level'] >= 8) { //Сколько нужно опыта набить $trexp = [ 8 => 1200, 9 => 3000, 10 => 4500, 11 => 12000, 12 => 20000, 13 => 30000, 14 => 30000, 15 => 30000, 16 => 30000, 17 => 30000, 18 => 30000, 19 => 30000, 20 => 30000, 21 => 30000, ]; $trexp = $trexp[$this->users[$i]['level']]; //Какая цена фулла должна быть $trmn = [ 8 => 1000, 9 => 3000, 10 => 2500, 11 => 3000, 12 => 3000, 13 => 3000, 14 => 3000, 15 => 3000, 16 => 3000, 17 => 3000, 18 => 3000, 19 => 3000, 20 => 3000, 21 => 3000, ]; $trmn = $trmn[$this->users[$i]['level']]; //Сколько екр дается $admn = [ 8 => 0.05, //0.05 9 => 0.065, //0.065 10 => 0.075, //0.075 11 => 0.085, //0.085 12 => 0.1, //0.1 13 => 0.1, 14 => 0.1, 15 => 0.1, 16 => 0.1, 17 => 0.1, 18 => 0.1, 19 => 0.1, 20 => 0.1, 21 => 0.1, ]; $admn = $admn[$this->users[$i]['level']]; if ($c['m'] >= 6 && $c['m'] <= 8) { //Летний период if ($c['w'] == 0 || $c['w'] == 5 || $c['w'] == 6) { //Выходные дни $admn = $admn * 2; } } elseif ($c['w'] == 0 || $c['w'] == 5 || $c['w'] == 6) { //Выходные дни $admn = $admn * 2; } if ($this->users[$i]['battle_exp'] < $trexp) { //недостаточно опыта набито за бой $prc .= ', Награда 0 ЕКР за этот бой (Мало опыта набили).'; //недостаточно стоимость кр вещей } elseif ($admn > 0) { if ($this->info['type'] != 33) { $prc .= ', Награда ' . $admn . ' ЕКР за этот бой.'; } $u->addDelo(4, $this->users[$i]['id'], '"System.battle": Персонаж получил ' . $admn . ' ЕКР (В бою №' . $this->info['id'] . ').', time(), $this->info['city'], 'System.battle', 0, 0); $this->users[$i]['money2'] += $admn; } } } if ($this->info['money3'] > 0) { if (isset($gms[$i])) { $prc .= ' Вы выйграли ' . $gms[$i] . ' $. за этот бой.'; $u->addDelo(4, $this->users[$i]['id'], '"System.battle": Персонаж выйграл ' . $gms[$i] . ' $. (В бою №' . $this->info['id'] . ').', time(), $this->info['city'], 'System.battle', 0, 0); $this->users[$i]['money3'] += $gms[$i]; mysql_query('UPDATE `users` SET `money3` = `money3` + "' . $gms[$i] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); } elseif (isset($bms[$i])) { $prc .= ' Вы заплатили ' . $bms[$i] . ' $. за этот бой.'; $u->addDelo(4, $this->users[$i]['id'], '"System.battle": Персонаж проиграл ' . $gms[$i] . ' $. (В бою №' . $this->info['id'] . ').', time(), $this->info['city'], 'System.battle', 0, 0); $this->users[$i]['money3'] -= $bms[$i]; mysql_query('UPDATE `users` SET `money3` = `money3` - "' . $bms[$i] . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); } } $lime = [ 8 => 18000, 9 => 28000, 10 => 84000, 11 => 100, 12 => 100, 13 => 100, 14 => 100, 15 => 100, 16 => 100, 17 => 100, 18 => 100, 19 => 100, 20 => 100, 21 => 100, ]; if ($this->users[$i]['level'] < 8) { $lime = 5400; } else { $lime = $lime[$this->users[$i]['level']]; } if ($this->stats[$i]['silver'] >= 5) { $lime += round($lime); } if ($this->users[$i]['stopexp'] == 1) { $lime = 0; $this->users[$i]['battle_exp'] = 0; } if ($lime < $this->users[$i]['battle_exp'] && $c['limitedexp']) { $this->users[$i]['battle_exp'] = $lime; } unset($lime); if ($btlstatus[0] > 0) { if ($this->info['type'] == 99) { $prc .= ' (' . $btlstatus[3] . ')'; } else { $prc .= ' (' . $btlstatus[2] . ')'; } } if ($this->info['dungeon'] == 1 && $this->users[$i]['team'] == $this->info['team_win']) { //канализация лимит $rep = mysql_fetch_array(mysql_query('SELECT `dl1`,`id` FROM `rep` WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1')); if ($rep['dl' . $this->info['dungeon']] > 0) { $this->users[$i]['battle_exp'] += 3 * count($this->users); if ($rep['dl' . $this->info['dungeon']] > $this->users[$i]['battle_exp']) { $rep['dl' . $this->info['dungeon']] -= $this->users[$i]['battle_exp']; } else { $this->users[$i]['battle_exp'] = $rep['dl' . $this->info['dungeon']]; $rep['dl' . $this->info['dungeon']] = 0; } mysql_query('UPDATE `rep` SET `dl' . $this->info['dungeon'] . '` = "' . $rep['dl' . $this->info['dungeon']] . '" WHERE `id` = "' . $rep['id'] . '" LIMIT 1'); } else { $this->users[$i]['battle_exp'] = 0; } } if ($this->users[$i]['battle_exp'] < 1) { $this->users[$i]['battle_exp'] = 0; } if ( $this->users[$i]['battle_exp'] < 1 && $this->users[$i]['twink'] == 0 && $this->info['money'] == 0 && $this->info['money3'] == 0 && $this->info['kingfight'] == 0 && empty($admnb) ) { $prc = ''; } if ($this->user[$i]['host_reg'] == 'real_bot_user') { $this->users[$i]['battle_exp'] = round($this->users[$i]['battle_exp'] / 3); } if ($sinf != '') { $sinf = ' ( ' . $sinf . ' )'; } //--------------Лимит 8-9-------------- if ($this->users[$i]['level'] == 8 && $this->users[$i]['battle_exp'] >= 23000) { $this->users[$i]['battle_exp'] = 23000; } if ($this->users[$i]['level'] == 9 && $this->users[$i]['battle_exp'] >= 31000) { $this->users[$i]['battle_exp'] = 31000; } if ($this->users[$i]['level'] == 10 && $this->users[$i]['battle_exp'] >= 52000) { $this->users[$i]['battle_exp'] = 52000; } if ($this->users[$i]['level'] >= 11 && $this->users[$i]['battle_exp'] >= 75000) { $this->users[$i]['battle_exp'] = 75000; } //------------------------------------- if ($this->info['type'] != 33) { $this->users[$i]['battle_text'] = 'Бой закончен. Всего вами нанесено урона: ' . floor($this->users[$i]['battle_yron']) . ' HP. Получено опыта: ' . (0 + $this->users[$i]['battle_exp']) . '' . $prc . '.' . $sinf; //stats } /*Выпадение зубов в конце боя */ if ($c['nolevel']) { $rex95 = substr($this->users[$i]['exp'], -1); if ($this->users[$i]['money4'] < 1000 && $this->users[$i]['exp'] == 12499) { $rex95 = 6; $rex95 = 5; } } else { $rex95 = 5; } if ($c['zuby'] && $this->info['dungeon'] == 0 && ($this->info['clone'] == 0 || $this->users[$i]['level'] < 5) && $rex95 != 9 && $this->info['type'] != 564) { if ($this->users[$i]['align'] != 2 && $this->users[$i]['level'] >= 0 && $this->users[$i]['level'] < 8 && $this->users[$i]['battle_exp'] > 0) { $rzb = 0; if ($this->get_chanse(50)) { $rzb += rand(1, 3); } elseif ($this->users[$i]['battle_exp'] > 15) { $rzb += 1; } $chzbs = 100; if ($this->stats[$i]['silver'] > 0) { $chzbs = 150; } if ($this->users[$i]['battle_exp'] > 9) { if ($this->users[$i]['level'] > 1) { //Нормальный зуб if ($this->get_chanse(25 / 100 * $chzbs)) { $rzb += 10; } } elseif ($this->users[$i]['level'] == 1 && $this->get_chanse(30 / 100 * $chzbs)) { $rzb += 10; } if ($this->users[$i]['level'] > 3 && $this->get_chanse(5 / 100 * $chzbs)) { $rzb += 100; } } if ($this->users[$i]['team'] == $this->info['team_win']) { //выиграли if ($this->users[$i]['level'] < 8) { $rzb += 1; } } elseif ($this->users[$i]['team'] == 0) { //ничья if ($this->get_chanse(25 / 100 * $chzbs) && $this->users[$i]['battle_exp'] > 2) { $rzb = rand(0, 1); } else { $rzb = 0; } } else { //проиграли if ($this->users[$i]['level'] >= 1) { $rzb = 0; } else { if ($this->users[$i]['battle_exp'] < 3) { $rzb = 0; } elseif ($this->user[$i]['lose'] > $this->user[$i]['win']) { if ($this->get_chanse(5 / 100 * $chzbs)) { $rzb = rand(0, 1); } else { $rzb = 0; } } elseif ($this->get_chanse(10 / 100 * $chzbs)) { $rzb = rand(0, 1); } } $rzb = 0; } if ($rex95 == 6) { $rzb = $this->users[$i]['battle_exp'] > 10 ? rand(0, 1) : 0; } if ($rzb > 0 && rand(0, 1000) <= 500) { $rzb = rand(1, 3); } if ($rzb > 0) { if ($this->stats[$i]['silver'] >= 5) { $rzb = $rzb * 2; } mysql_query('UPDATE `users` SET `money4` = `money4` + "' . $rzb . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); $this->users[$i]['battle_text'] .= ' Вы получили ' . $u->zuby($rzb, 1) . ' за этот бой.'; } } } if ($this->info['priz'] > 0) { //Призовой хаот /* [4754] 2-3 лвл = 1 жетон 4-5 лвл = 1 жетона 6-7 лвл = 2 жетонов 8-9 лвл = 3 жетонов В случаи победы (х3) */ $tmon = [ 2 => 1, 3 => 1, 4 => 1, 5 => 1, 6 => 1, 7 => 2, 8 => 3, 9 => 3, 10 => 5, 11 => 5, ]; $tmon = $tmon[$this->users[$i]['level']]; // $tmonc = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `battle` WHERE `id` IN ( SELECT `battle_id` FROM `battle_last` WHERE `uid` = "' . $this->users[$i]['id'] . '" ) AND `priz` > 0 AND `time_start` > "' . strtotime(date('d.m.Y')) . '"')); $tmonc = $tmonc[0]; // if ($this->users[$i]['team'] == $this->info['team_win']) { //При выигрыше увеличиваем if ($tmonc < 1) { $tmonc = 1; } elseif ($tmonc > 96) { $tmonc = 96; } $tmon = ($tmon * $tmonc); } // $tmoni = 1; while ($tmoni <= floor($tmon / 2)) { $u->addItem(4754, $this->users[$i]['id'], ''); // $tmoni++; } // $this->users[$i]['battle_text'] .= ' За призовой хаот вы получаете Призовой Жетон (x' . floor($tmon / 2) . '). (Чем больше призовых хаотов вы примите за сутки, тем больше будет выдаваться жетонов при победе! Призовых хаотов посещено сегодня ' . ($tmonc) . '/96 )'; // unset($tmon, $tmoni); } //Снижение времени Право на подвиг Титул за победу в хаоте if ($this->info['dungeon'] == 0 && $this->info['razdel'] == 5 && $this->users[$i]['team'] == $this->info['team_win']) { //ТУТ2 $u->repexp_add($this->users[$i]['id'], 2); //Репутация за поб в хаоте +2 $check = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `id_eff` = 478 AND `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = 0 ORDER BY `overType` DESC LIMIT 1;')); if (isset($check['id'])) { $urcheck = 10000; if ($this->users[$i]['level'] == 8) { $urcheck = 3000; } elseif ($this->users[$i]['level'] == 9) { $urcheck = 7000; } elseif ($this->users[$i]['level'] == 10) { $urcheck = 12000; } elseif ($this->users[$i]['level'] >= 11) { $urcheck = 18000; } if ($this->users[$i]['battle_yron'] >= $urcheck) { mysql_query('UPDATE `eff_users` SET `timeUse` = `timeUse` - 300 WHERE `id_eff`=478 AND `delete` = 0 AND `uid` =' . $this->users[$i]['id'] . ' LIMIT 1'); $this->users[$i]['battle_text'] .= ' За победу в хаоте и нанесение урона в ' . $urcheck . ' и более вы получаете -5 мин. к праву на подвиг!'; } } mysql_query('UPDATE `users_achiv` SET `vx`= `vx`+1 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); // } //Награда за клан вар if ($this->info['dungeon'] == 0 && $this->info['type'] == 250 && $this->users[$i]['team'] == $this->info['team_win']) { mysql_query('UPDATE `users_achiv` SET `kw`= `kw`+1 WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); if (date('w') == 0 || date('w') == 6 || date('w') == 4) { $u->repexp_add($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) { $u->repexp_add($this->users[$i]['id'], 10); //Кровавые войны(победа) 10 } } //Новая выдача на трупожора if ($this->info['dungeon'] == 0 && $this->info['type'] == 500 && $this->users[$i]['team'] == $this->info['team_win'] && $this->users[$i]['no_ip'] != 'trupojor' && $this->users[$i]['bot'] == 0) { if ($this->users[$i]['level'] > 9) { $mid = 903093; } else { $mid = 89489; } $mon = mysql_fetch_array(mysql_query('SELECT * FROM `aaa_monsters` WHERE `uid` = "' . $mid . '" LIMIT 1')); if ($this->users[$i]['battle_yron'] >= 2000) { $ritem = rand(1, 100); if ($ritem <= 20) { $mon['win_itm'] = '4459@1'; } elseif ($ritem <= 40) { $mon['win_itm'] = '4460@1'; } elseif ($ritem <= 60) { $mon['win_itm'] = '4461@1'; } elseif ($ritem <= 80) { $mon['win_itm'] = '4462@1'; } else { $mon['win_itm'] = '4463@1'; } } elseif ($this->users[$i]['battle_yron'] >= 1500) { $ritem = rand(1, 100); if ($ritem <= 20) { $mon['win_itm'] = '4459@1'; } elseif ($ritem <= 40) { $mon['win_itm'] = '4460@1'; } elseif ($ritem <= 60) { $mon['win_itm'] = '4461@1'; } elseif ($ritem <= 80) { $mon['win_itm'] = '4462@1'; } else { $mon['win_itm'] = '4463@1'; } } elseif ($this->users[$i]['battle_yron'] >= 1000) { $ritem = rand(1, 100); if ($ritem <= 25) { $mon['win_itm'] = '4460@1'; } elseif ($ritem <= 50) { $mon['win_itm'] = '4461@1'; } elseif ($ritem <= 75) { $mon['win_itm'] = '4462@1'; } else { $mon['win_itm'] = '4463@1'; } } else { $mon['win_itm'] = '4392@1'; $timewait = 0; } if ($this->users[$i]['battle_yron'] > 0) { mysql_query('INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","478","111","' . $this->users[$i]['id'] . '","Право на подвиг","pravonapodvig=1","' . time() . '")'); } mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES ("' . $this->users[$i]['id'] . '","' . (time() - $timewait) . '","capitalcity","' . $this->users[$i]['room'] . '","end_trup"," ","","")'); mysql_query('INSERT INTO `eff_users` (`no_Ace`,`id_eff`,`overType`,`uid`,`name`,`data`,`timeUse`) VALUES ("1","479","112","' . $u->info['id'] . '","Защита от нападения","zashitatk=1","' . time() . '")'); $ritem = rand(1, 1000); if ($ritem == 555) { $mon['win_itm'] = $mon['win_itm'] . ',5022@1'; } $this->addGlobalItems($mid, $this->users[$i]['id'], $mon['win_itm'], $mon['win_eff'], $mon['win_ico'], 1, $mon['win_money1'], $mon['win_money2']); //$mon['win_exp'] } if ($this->info['dungeon'] == 0 && $this->info['razdel'] == 5 && $u->info['battle_yron'] >= 2000) { //Реликвия Ангела ang_g if ($this->users[$i]['team'] == $this->info['team_win']) { //При выигрыше увеличиваем $tmoni = 2; } else { $tmoni = 1; } $tmon = $tmoni; $effblago = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = ' . $this->users[$i]['id'] . ' AND `delete` = 0 AND `id_eff`= 414 LIMIT 1')); if (isset ($effblago['id'])) { $limitg = 50; } else { $limitg = 25; } while ($tmoni >= 1) { if ($u->info['ang_g'] < $limitg) { $u->addItem(4754, $this->users[$i]['id'], ''); mysql_query('UPDATE `users` SET `ang_g`=`ang_g`+1 WHERE `id` =' . $this->users[$i]['id']); } else { $tmon--; } $tmoni--; } if ($this->info['type'] != 33) { $this->users[$i]['battle_text'] .= ' За хаот вы получаете Реликвия Ангела (' . $tmon . '). Всего [' . ($u->info['ang_g'] + $tmon) . '/' . $limitg . '] в день. '; } unset($tmon, $tmoni, $effblago, $limitg); } 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'] .= ' Вы получаете Тыква (x1).'; $u->addItem(4504, $this->users[$i]['id'], '|sudba=1'); } } //Добавляем воинственность if ($this->info['dungeon'] == 0 && $this->info['razdel'] == 5 && $this->users[$i]['exp'] >= 1500 ) { if ($this->users[$i]['battle_exp'] > 100 * $this->users[$i]['level']) { $rzbvo = $this->users[$i]['battle_exp'] * 6 / 1000; if ($this->users[$i]['level'] == 8) { if ($rzbvo >= 100) { $rzbvo = 100; } } if ($this->users[$i]['level'] == 9) { if ($rzbvo >= 150) { $rzbvo = 150; } } if ($this->users[$i]['level'] == 10) { if ($rzbvo >= 200) { $rzbvo = 200; } } if ($this->users[$i]['level'] == 11) { if ($rzbvo >= 250) { $rzbvo = 250; } } if ($this->users[$i]['level'] == 12) { if ($rzbvo >= 250) { $rzbvo = 250; } } if ($this->info['type'] != 33) { $this->users[$i]['battle_text'] .= ' Вы получили ' . $rzbvo . ' воинственности за этот бой.'; } mysql_query('UPDATE `rep` SET `rep3` = `rep3` + ' . $rzbvo . ' WHERE `id` = ' . $this->users[$i]['id']); mysql_query('INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES ("' . $this->users[$i]['id'] . '","' . time() . '","capitalcity","' . $this->users[$i]['room'] . '","end_xaot"," ","' . $zadID . '","")'); } } if ($this->stats[$i]['hpNow'] >= 1) { $this->stats[$i]['test_heal'] = mysql_fetch_array(mysql_query('SELECT SUM(`yrn`) FROM `battle_stat` WHERE `uid2` = "' . $this->users[$i]['id'] . '" AND `battle` = "' . $this->info['id'] . '" LIMIT 1')); $this->stats[$i]['test_heal'] = $this->stats[$i]['test_heal'][0]; $this->stats[$i]['test_start'] = mysql_fetch_array(mysql_query('SELECT `hpStart` FROM `battle_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `battle` = "' . $this->info['id'] . '" LIMIT 1')); $this->stats[$i]['test_start'] = $this->stats[$i]['test_start']['hpStart']; // $this->stats[$i]['hpNow'] = ($this->stats[$i]['test_start'] - $this->stats[$i]['test_heal']); if ($this->stats[$i]['hpNow'] < 1) { $this->stats[$i]['hpNow'] = 1; } } else { $this->stats[$i]['hpNow'] = 0; } unset($this->stats[$i]['test_heal']); $this->users[$i]['last_b'] = $this->info['id']; //stats $this->users[$i]['last_a'] = $act01; $this->users[$i]['battle'] = -1; //users $this->users[$i]['battle_yron'] = 0; //stats $this->users[$i]['exp'] += $this->users[$i]['battle_exp']; //users //Добавляем клан опыт (Все кроме пещер) if ($this->users[$i]['clan'] > 0) { $cpr = 1; if ($this->info['typeBattle'] == 9) { $cpr = 25; } elseif ($this->info['typeBattle'] == 50) { $cpr = 65; } if ($this->stats[$i]['silver'] >= 5) { $cpr = floor($cpr / 100 * 150); } mysql_query('UPDATE `clan` SET `exp` = `exp` + "' . round($this->users[$i]['battle_exp'] / 100 * $cpr) . '" WHERE `id` = "' . $this->users[$i]['clan'] . '" LIMIT 1'); } $this->users[$i]['battle_exp'] = 0; //stats if ($this->users[$i]['team'] == $this->info['team_win']) { mysql_query('UPDATE `rep` SET `n_capitalcity` = `n_capitalcity` + ' . $this->users[$i]['bn_capitalcity'] . ' ,`n_demonscity` = `n_demonscity` + ' . $this->users[$i]['bn_demonscity'] . ' ,`n_demonscity` = `n_demonscity` + ' . $this->users[$i]['bn_suncity'] . ' WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); } //репутация $this->users[$i]['bn_demonscity'] = 0; $this->users[$i]['bn_capitalcity'] = 0; $this->users[$i]['bn_suncity'] = 0; //завершение эффектов с финишем $spe = mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `file_finish` != "" AND `v1` = "priem" LIMIT 30'); while ($ple = mysql_fetch_array($spe)) { if (file_exists('../../_incl_data/class/priems/' . $ple['file_finish'] . '.php')) { require('../../_incl_data/class/priems/' . $ple['file_finish'] . '.php'); } } //обновляем данные mysql_query('DELETE FROM `eff_users` WHERE `v1` = "priem" AND `uid` = "' . $this->users[$i]['id'] . '" LIMIT 50'); if ($dnr == 1) { if ($this->users[$i]['room'] == 370) { $dies = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `dn` = "' . $this->users[$i]['dnow'] . '" AND `vars` = "dielaba" LIMIT 1')); $dies = $dies[0]; mysql_query('INSERT INTO `dungeon_actions` (`dn`,`uid`,`x`,`y`,`time`,`vars`,`vals`) VALUES ( "' . $this->users[$i]['dnow'] . '","' . $this->users[$i]['id'] . '","' . $this->users[$i]['x'] . '","' . $this->users[$i]['y'] . '","' . time() . '","dielaba","" )'); } else { $dies = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `dn` = "' . $this->users[$i]['dnow'] . '" AND `vars` = "die" LIMIT 1')); $dies = $dies[0]; mysql_query('INSERT INTO `dungeon_actions` (`dn`,`uid`,`x`,`y`,`time`,`vars`,`vals`) VALUES ( "' . $this->users[$i]['dnow'] . '","' . $this->users[$i]['id'] . '","' . $this->users[$i]['x'] . '","' . $this->users[$i]['y'] . '","' . time() . '","die","" )'); } if ($dies < 2 || $this->info['dungeon'] == 15) { // $tshbn = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `delete` = 0 AND `item_id` = "4910" LIMIT 1')); if (isset($tshbn['id'])) { //выбрасываем шайбу mysql_query('DELETE FROM `items_users` WHERE `id` = "' . $tshbn['id'] . '" LIMIT 1'); // mysql_query('INSERT INTO `dungeon_obj` ( `name`,`dn`,`x`,`y`,`img`,`delete`,`action`,`for_dn`, `type`,`w`,`h`,`s`,`s2`,`os1`,`os2`,`os3`,`os4`,`type2`,`top`,`left`,`date` ) VALUES ( "Шайба","' . $this->info['dn_id'] . '","' . $this->users[$i]['x'] . '","' . $this->users[$i]['y'] . '","shaiba.png","0","fileact:15/shaiba","0", "0","120","220","0","0","5","8","12","0","0","0","0","{use:\'takeit\',rt1:69,rl1:-47,rt2:74,rl2:126,rt3:76,rl3:140,rt4:80,rl4:150}" )'); // } //телепортируем в рестарт (координата 0х0) $this->users[$i]['x'] = $this->users[$i]['res_x']; $this->users[$i]['y'] = $this->users[$i]['res_y']; $this->users[$i]['s'] = $this->users[$i]['res_s']; $r_n = mysql_fetch_array(mysql_query('SELECT `name` FROM `room` WHERE `id` = "' . (int)$this->users[$i]['room'] . '" LIMIT 1')); if ($this->users[$i]['room'] == 370) { if ($this->users[$i]['sex'] == 0) { $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб и находится в начале лабиринта'; } else { $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла и находится в начале лабиринта'; } } else { if ($this->users[$i]['sex'] == 0) { $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб и находится в комнате "' . $r_n['name'] . '"'; } else { $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла и находится в комнате "' . $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'); } mysql_query('UPDATE `stats` SET `dnow` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); mysql_query('UPDATE `users` SET `room` = "369" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); //удаляем все предметы которые пропадают после выхода из пещеры mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `delete` < 1234567890 AND `inShop` = "0" AND (`dn_delete` = "1" OR `data` LIKE "%fromlaba=1%")'); if ($this->users[$i]['login'] != '') { if ($this->users[$i]['sex'] == 0) { $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб без права на воскрешение и покидает подземелье' . $nld; } else { $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла без права на воскрешение и покидает подземелье' . $nld; } } } else { $tinf = mysql_fetch_array(mysql_query('SELECT `uid` FROM `dungeon_now` WHERE `id` = "' . $this->info['dn_id'] . '" LIMIT 1')); $nld = ''; if ($tinf['uid'] == $this->users[$i]['id']) { $tinf = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `dnow` = "' . $this->info['dn_id'] . '" AND `hpNow` >= 1 LIMIT 1')); if (isset($tinf['id'])) { $tinf = mysql_fetch_array(mysql_query('SELECT `id`,`login` FROM `users` WHERE `id` = "' . $tinf['id'] . '" LIMIT 1')); $nld .= ', новым лидером становится "' . $tinf['login'] . '"'; mysql_query('UPDATE `dungeon_now` SET `uid` = "' . $tinf['id'] . '" WHERE `id` = "' . $this->info['dn_id'] . '" LIMIT 1'); } } $rooms = [ 374 => 372, //ПТП (Кэпитал сити) 189 => 188, //Водосток (Кэпитал сити) 392 => 393, //Шахты (Кэпитал сити) 398 => 397, //Шахты (Ангелс сити) 243 => 395, //Водосток (Ангелс сити) 360 => 242, //Бездна (Ангелс сити) 19 => 293 //Катакомбы ]; // $n_rm = $rooms[$this->users[$i]['room']]; mysql_query('UPDATE `stats` SET `dnow` = "0" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); mysql_query('UPDATE `users` SET `room` = "321" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); //удаляем все предметы которые пропадают после выхода из пещеры mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `dn_delete` = "1" LIMIT 1000'); mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `item_id` = "1189" OR `item_id` = "4447" OR `item_id` = "1174") LIMIT 1000'); if ($this->users[$i]['sex'] == 0) { $rtxt = '' . $this->users[$i]['login'] . ' трагически погиб без права на воскрешение и покидает подземелье' . $nld; } else { $rtxt = '' . $this->users[$i]['login'] . ' трагически погибла без права на воскрешение и покидает подземелье' . $nld; } } if ($rtxt != '') { mysql_query("INSERT INTO `chat` (`dn`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`,`typeTime`,`new`) VALUES ('" . $this->info['dn_id'] . "','" . $this->users[$i]['city'] . "','" . $this->users[$i]['room'] . "','','','" . $rtxt . "','" . time() . "','6','0','1','1')"); } } mysql_query('UPDATE `users` SET `login2` = "" WHERE `battle` = "' . $this->info['id'] . '"'); mysql_query('UPDATE `users` SET `login2` = "", `money` = "' . $this->users[$i]['money'] . '", `money2` = "' . $this->users[$i]['money2'] . '",`win` = "' . $this->users[$i]['win'] . '",`lose` = "' . $this->users[$i]['lose'] . '",`nich` = "' . $this->users[$i]['nich'] . '",`battle` = "-1" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); if ($u->info['id'] == $this->users[$i]['id']) { $u->info['battle_text'] = $this->users[$i]['battle_text']; } mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->stats[$i]['hpNow'] . '",`mpNow` = "' . $this->stats[$i]['mpNow'] . '",`bn_capitalcity` = 0,`bn_demonscity` = 0,`smena` = 3,`tactic7` = "-100",`x`="' . $this->users[$i]['x'] . '",`y`="' . $this->users[$i]['y'] . '",`priems_z`="0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0",`last_pr`="0",`tactic1`="0",`tactic2`="0",`tactic3`="0",`tactic4`="0",`tactic5`="0",`tactic6`="0.00000000",`tactic7`="10",`exp` = "' . $this->users[$i]['exp'] . '",`battle_exp` = "' . $this->users[$i]['battle_exp'] . '",`battle_text` = "' . $this->users[$i]['battle_text'] . '",`battle_yron` = "0",`enemy` = "0",`last_b`="' . $this->info['id'] . '",`regHP` = "' . time() . '",`regMP` = "' . time() . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); if ($this->info['turnir'] == 0) { //пишем в чат mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$i]['city'] . "','" . $this->users[$i]['room'] . "','','" . $this->users[$i]['login'] . "','" . $this->users[$i]['battle_text'] . "','-1','6','0')"); } else { mysql_query('UPDATE `turnirs` SET `winner` = "' . $this->info['team_win'] . '" WHERE `id` = "' . $this->info['turnir'] . '" LIMIT 1'); } //завершаем сам бой mysql_query('UPDATE `battle` SET `time_over` = "' . time() . '",`team_win` = "' . $this->info['team_win'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); // Жрать хочет if ($this->users[$i]['animal'] > 0) { $a = mysql_fetch_array(mysql_query('SELECT * FROM `users_animal` WHERE `uid` = ' . $this->users[$i]['id'] . ' AND `id` = ' . $this->users[$i]['animal'] . ' AND `pet_in_cage` = 0 AND `delete` = 0 LIMIT 1')); if (isset($a['id'])) { if ($a['eda'] < 1) { $u->send('', $this->users[$i]['room'], $this->users[$i]['city'], '', $this->users[$i]['login'], '' . $a['name'] . ' нуждается в еде...', time(), 6, 0, 0, 0, 1); } } } mysql_query("UPDATE `stats` SET `battle_text` = '',`last_b` = 0 WHERE `id` = " . $this->users[$i]['id']); 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 ''; } } } else { sleep(2); } mysql_query('UPDATE `battle` SET `testfinish` = 0 WHERE `id` = ' . $this->info['id']); mysql_query('UNLOCK TABLES'); } //Выдаем предметы private $ainm = []; /** * @param $uid * @param int $itemId * @param string $data * @return void */ private function addGlobalItem($uid, $itemId, $data) { $room = $this->users[$this->uids[$uid]]['room']; $login = $this->users[$this->uids[$uid]]['login']; $q = "insert into items_local (room, time, item_id, data, tr_login, colvo) values ($room, unix_timestamp(), $itemId, $data, $login, 1)"; mysql_query($q); } private function addGlobalItems($bid, $uid, $itm, $eff, $ico, $exp, $cr, $ecr) { global $u; // //Выпадение дропа на ЦП if ($bid == 1008) { //Старый Новый Год $jit = 0; $iit = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `online` > unix_timestamp() - 120')); $iit = floor($iit[0] / 20); $iit = rand(1, $iit); while ($jit < $iit) { if (rand(0, 100) < 50) { $svtk = array_fill(0, 71, 1000); array_push($svtk, 1461, 1462, 1463, 4037, 4038, 4039, 4040, 911, 1172, 1173, 2142, 2141, 2143, 2870, 2144); $svtk = $svtk[rand(0, count($svtk) - 1)]; if ($svtk == 1000) { $this->addGlobalItem($uid, $svtk, '|nosale=1|srok=259200'); $this->addGlobalItem($uid, $svtk, '|nosale=1|srok=259200'); $this->addGlobalItem($uid, $svtk, '|nosale=1|srok=259200'); $this->addGlobalItem($uid, $svtk, '|nosale=1|srok=259200'); $this->addGlobalItem($uid, $svtk, '|nosale=1|srok=259200'); $this->addGlobalItem($uid, $svtk, '|nosale=1|srok=259200'); } $this->addGlobalItem($uid, $svtk, '|nosale=1|srok=259200'); } $jit++; } unset($svtk); } elseif ($bid == 1007) { //Хэллоуин, Тыквоголовый CAPITAL CITY $jit = 0; $iit = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `online` > unix_timestamp() - 120')); $iit = floor($iit[0] / 20); $iit = rand(1, $iit); while ($jit < $iit) { if (rand(0, 100) < 50) { $this->addGlobalItem($uid, 4504, ''); } $jit++; } } elseif ($bid == 1006) { //Трупожор CAPITAL CITY if (rand(0, 100) < 10) { $this->addGlobalItem($uid, 4451, 'srok=86400'); } } elseif ($bid == 1000) { //Трупожор CAPITAL CITY $this->addGlobalItem($uid, 4460, 'srok=2592000'); } elseif ($bid == 1001) { //Трупожор CAPITAL CITY $this->addGlobalItem($uid, 4461, 'srok=2592000'); } elseif ($bid == 1002) { //Трупожор CAPITAL CITY $this->addGlobalItem($uid, 4462, 'srok=2592000'); } elseif ($bid == 1003) { //Трупожор CAPITAL CITY $this->addGlobalItem($uid, 4463, 'srok=2592000'); } elseif ($bid == 1004) { //Трупожор CAPITAL CITY $this->addGlobalItem($uid, 4459, 'srok=2592000'); } if ($exp >= 0) { $this->users[$this->uids[$uid]]['battle_exp'] += round($exp * $this->users[$this->uids[$uid]]['battle_yron'] / $this->stats[$this->uids[$bid]]['hpAll']); 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) { if ($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'); mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы получили кредиты: " . mysql_real_escape_string($cr) . " кр.','-1','6','0')"); } } // if ($ecr != '' && $ecr > 0) { if ($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) { mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Трупожор был пуст!!!','-1','6','0')"); $u->addDelo(4, $this->users[$this->uids[$uid]]['id'], '"System.battle>": (В бою трупожор), ПУСТ!!! ', time(), $this->users[$this->uids[$uid]]['city'], 'System.battle', 0, 0); } else { mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы получили Евро-кредиты: " . mysql_real_escape_string($ecr) . " екр.','-1','6','0')"); $u->addDelo(4, $this->users[$this->uids[$uid]]['id'], '"System.battle": Персонаж получил ' . $ecr . ' ЕКР (В бою трупожор), сейчас: ' . $this->users[$this->uids[$uid]]['money2'] . ' ЕКР', time(), $this->users[$this->uids[$uid]]['city'], 'System.battle', 0, 0); } } } // if ($ico != '') { /* 0(тип, 1 - значок, 2 - подвиг)@ 1(время в минутах)@ 2(название картинки)@ 3(название)@ 4(требует остаться в живых 0 или 1, либо игрок умер -1)@ 5(требует набить с ботам урона в % Например 0.001)@ 6(действия например: add_s1=5|add_hpAll=50)@ 7(Требует другой значок, название картинки)@ 8(плюсует значок 0 или 1)@ 9(удаляем прошлый значок 0 or 1) */ $i = 0; $txt = ''; $ico = explode('#', $ico); while ($i < count($ico)) { $ico_e = explode('@', $ico[$i]); if (isset($ico_e[3])) { // $add = 1; if ($ico_e[4] == 1 && floor($this->stats[$this->uids[$uid]]['hpNow']) < 1) { $add = 0; } if ($add == 1) { $ins = false; if ($ico_e[8] == 0) { $ins = true; if ($ico_e[9] == 1) { mysql_query('DELETE FROM `users_ico` WHERE `uid` = ' . (int)$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` = ' . (int)$uid . ' AND (`endTime` > unix_timestamp() OR `endTime` = 0) AND `img` = ' . mysql_real_escape_string($ico_e[2]) . ' LIMIT 1')); if (!isset($old_ico['id'])) { $ins = true; } else { if ($old_ico['id'] > 0) { $txt .= ', "' . $ico_e[3] . ' (Обновление)"'; mysql_query('UPDATE `users_ico` SET `x` = `x` + 1,`endTime` = ' . (time() + $ico_e[1] * 60) . ' WHERE `id` = ' . $old_ico['id']); } 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) . ', unix_timestamp(), ' . 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] . '"'; } } } $i++; } if ($txt != '') { $txt = ltrim($txt, ', '); mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы совершили подвиг: " . mysql_real_escape_string($txt) . "','-1','6','0')"); } } // 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]) { $u->addItem($itm_e[0], $uid, '|' . $itm_e[2]); $j++; } if (!isset($this->ainm[$itm_e[0]])) { $this->ainm[$itm_e[0]] = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = ' . mysql_real_escape_string($itm_e[0]))); } if (isset($this->ainm[$itm_e[0]]['id'])) { //Добавляем текст о добавлении предмета $txt .= ', ' . $this->ainm[$itm_e[0]]['name'] . ''; if ($itm_e[1] > 1) { $txt .= ' (x' . $itm_e[1] . ')'; } } } $i++; } if ($txt != '') { $txt = ltrim($txt, ', '); mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $this->users[$this->uids[$uid]]['city'] . "','" . $this->users[$this->uids[$uid]]['room'] . "','','" . $this->users[$this->uids[$uid]]['login'] . "','Вы получили предметы: " . mysql_real_escape_string($txt) . "','-1','6','0')"); } } } /** Удар * @return void */ private function addNewAtack() { global $u; if (!isset($this->ga[$u->info['id']][$u->info['enemy']])) { if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] > 0) { $us = $this->stats[$this->uids[$u->info['id']]]; $i = 1; $no = 0; while ($i <= $us['zona']) { if ($this->uAtc['a'][$i] == 0) { $no = 1; } $i++; } if ($this->uAtc['b'] == 0) { $no = 1; } if ($no == 0) { //наносим удар if ($u->info['enemy'] > 0) { if (!isset($this->ga[$u->info['enemy']][$u->info['id']])) { if ( $this->stats[$this->uids[$u->info['id']]]['hpNow'] >= 1 && $this->stats[$this->uids[$u->info['enemy']]]['hpNow'] >= 1 ) { //наносим новый удар $a = $this->uAtc['a'][1] . $this->uAtc['a'][2] . $this->uAtc['a'][3] . $this->uAtc['a'][4] . $this->uAtc['a'][5]; $b = $this->uAtc['b']; mysql_query('DELETE FROM `battle_act` WHERE `battle` = ' . $this->info['id'] . ' AND ((`uid2` = ' . $u->info['id'] . ' AND `uid1` = ' . $u->info['enemy'] . ') OR (`uid1` = ' . $u->info['id'] . ' AND `uid2` = ' . $u->info['enemy'] . ')) LIMIT 2'); $d = mysql_query('INSERT INTO `battle_act` (`battle`,`time`,`uid1`,`uid2`,`a1`,`b1`) VALUES (' . $this->info['id'] . ',' . time() . ',' . $u->info['id'] . ',' . $u->info['enemy'] . ',' . $a . ',' . $b . ')'); if (!$d) { $this->e = 'Не удалось нанести удар по противнику...'; } else { $this->ga[$u->info['id']][$u->info['enemy']] = mysql_insert_id(); } } } else { //отвечаем на удар противника if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] >= 1 && $this->stats[$this->uids[$u->info['enemy']]]['hpNow'] >= 1) { if (isset($this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['id'])) { $this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['a2'] = $this->uAtc['a'][1] . $this->uAtc['a'][2] . $this->uAtc['a'][3] . $this->uAtc['a'][4] . $this->uAtc['a'][5]; $this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['b2'] = $this->uAtc['b']; $this->startAtack($this->atacks[$this->ga[$u->info['enemy']][$u->info['id']]]['id']); } } } } } else { $this->e = 'Выберите зоны удара и блока'; } } else { $this->e = 'Для вас поединок закончен, ожидайте пока завершат другие...'; } } } /** Запускаем магические предметы, если в них что-то встроено. * Ещё один дебильный файл с инклюдами. Неиспользуемые переменные могут передаваться в инклюды. *
Файлы: /class/priems/* * @param int $uid1 * @param int $uid2 * @param int $end если > 0, то подключается *.end.php, иначе *.php * @return void */ private function magicItems($uid1, $uid2, $end) { if (!isset($this->stats[$this->uids[$uid1]])) { return; } foreach ($this->stats[$this->uids[$uid1]]['items'] as $item) { if (!$item['id'] || !$this->lookStats($item['data'])['bm_a1']) { continue; } $file = $this->lookStats($item['data'])['bm_a1'] . $end > 0 ? '.end.php' : '.php'; if (file_exists('../../_incl_data/class/priems/' . $file)) { require_once '../../_incl_data/class/priems/' . $file; } } } private $rehodeff = []; //Поглощение урона private $poglast = []; public function testPogB($uid, $yr, $pliid, $test = 0) { $yr2 = $yr; $checktuman = mysql_fetch_array(mysql_query('SELECT id FROM `eff_users` WHERE `uid` = ' . $uid . ' AND v2 in (273, 286, 287, 288) AND `delete` =0 LIMIT 1')); //проверка на туманный образ //if ( !isset($checktuman['id'])) if ($yr > 0 && !isset($checktuman['id'])) { global $priem; $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']); $dt3 = $this->lookStats($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); $dt3['add_pog2p'] = min(floor($j['y'] / $yr2 * 100), $dt3['add_pog2p']); if (isset($dt3['add_pog2mp'])) { if ((round(round($yr2 / 100 * (100 - $dt3['add_pog2p'])) * $dt3['add_pog2mp'])) > $this->stats[$this->uids[$uid]]['mpNow']) { //не хватило маны, считаем сколько хватит % от поглощенного урона $j['yhj'] = $this->stats[$this->uids[$uid]]['mpNow'] / (round(round($yr2 / 100 * (100 - $dt3['add_pog2p'])) * $dt3['add_pog2mp'])) * 100; $j['yhj'] = floor($j['yhj']); //Сколько % мы можем поглотить $dt3['add_pog2p'] = floor($dt3['add_pog2p'] / 100 * $j['yhj']); } if ($test == 1) { $priem->minMana($uid, round(round($yr2 / 100 * $dt3['add_pog2p']) * $dt3['add_pog2mp'])); } } if (!isset($this->poglast[$uid])) { $this->poglast[$uid] = 0; } $this->poglast[$uid] += $yr2; if ($test == 1) { $j['y'] -= round($this->poglast[$uid] / 100 * $dt3['add_pog2p']); $priem->minMana($uid, round(round($this->poglast[$uid] / 100 * $dt3['add_pog2p']) * $dt3['add_pog2mp'])); } if (isset($dt3['add_pog2p'])) { $yr2 = round($yr2 / 100 * (100 - $dt3['add_pog2p'])); } if ($j['y'] < 0 || ($this->stats[$this->uids[$uid]]['mpNow'] <= 0 && $dt3['add_pog2mp'] > 0)) { $dt2 = $this->lookStats($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); if (isset($dt2['endPog']) && $dt2['endPog'] == 1) { //удаляем прием //Добавляем в лог $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['v2'] . '" LIMIT 1')); $this->delPriem($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1], $this->users[$this->uids[$uid]], 4, $uid); $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1] = 'delete'; } unset($dt2); $j['y'] = 0; } $this->stats[$this->uids[$uid]]['set_pog'][$i]['y'] = $j['y']; if (isset($this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'])) { $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] = str_replace('add_pog2=$', 'add_pog2=' . $j['y'], $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data']); 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']); } if ($j['y'] - $this->poglast[$uid] + $yr2 < 0) { $yr -= $yr + ($j['y'] - $this->poglast[$uid] + $yr2); $yr2 = $yr; $i = count($this->stats[$this->uids[$uid]]['set_pog2']) + 1; } } $i++; } } return $yr2; } /** Тестируем удары и т.д */ private function newRazmen($id) { $at = [1 => [0], 2 => [0]]; $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; if ($this->atacks[$id]['out1'] == 0) { $at[1] = $this->usersTestAtack($id, $uid1, $uid2); } if ($this->atacks[$id]['out2'] == 0) { $at[2] = $this->usersTestAtack($id, $uid2, $uid1); } return $at; } /** Игрок1 наносит удар Игрок2 (сломано?) */ private function usersTestAtack($id, $uid1, $uid2) { $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']) { //echo '{'.$j.'}'; $block[$j] = 1; $j++; if ($j > 5 || $j < 1) { $j = 1; } $i++; } } //Проверка ударов $i = 1; while ($i <= $this->stats[$this->uids[$uid1]]['zona']) { if (!isset($atack[$i]) || $atack[$i] == 0) { $atack[$i] = rand(1, 5); } if ($atack[$i] > 0) { if ($block[$atack[$i]] == 1) { //удар был заблокирован // КУДА БИЛ , ТИП УДАРА $r['atack'][] = [$atack[$i], 3, 0]; } else { //Удар прошел // КУДА БИЛ , ТИП УДАРА $r['atack'][] = [$atack[$i], 1, 0]; } } $i++; } return $r; } //Проверка зоны и блока /** * @param $id * @param $uid1 * @param $uid2 * @param $atack * @return bool (bool) удар был заблокирован */ public function testRazmenblock1($id, $uid1, $uid2, $atack) { $block = []; //Проверка блоков $i = 1; $j = 0; 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']) { //echo '{'.$j.'}'; $block[$j] = 1; $j++; if ($j > 5 || $j < 1) { $j = 1; } $i++; } } //Проверка ударов return $atack > 0 && $block[$atack] == 1; } //Первичный расчет мф. эффектов (пример) /** * private function firstRazmen($id, $at) * { * $uid1 = $this->atacks[$id]['uid1']; * $uid2 = $this->atacks[$id]['uid2']; * * $i = 1; * while ($i <= 2) { * if ($i == 1) { * $u1 = $uid1; * $u2 = $uid2; * } else { * $u1 = $uid2; * $u2 = $uid1; * } * * //Расчет уворота Цели от Атакующего * $i++; * } * return $at; * } */ /** Для yhod_user. * @var int */ private $import_user = 0; /** Проверка ухода удара в игрока */ private function yhod_user($uid1, $uid2, $type) { // 1 - кто бьет . 2 - в кого бьют . тип //Удал летит прямо в противника if ($this->import_user == 0) { $r = $uid1; $rand_user = false; if ($type == 2) { //Случайный персонаж из своей команды (в том числе игрок) $i = 0; while ($i < count($this->users)) { if ($this->users[$i]['team'] == $this->users[$this->uids[$uid2]]['team']) { $rand_user[] = $this->users[$i]['id']; } $i++; } } elseif ($type == 4) { //Случайный персонаж, любой $i = 0; while ($i < count($this->users)) { //if( $this->users[$i]['team'] == $this->users[$this->uids[$uid1]]['team'] ) { $rand_user[] = $this->users[$i]['id']; //} $i++; } } elseif ($type == 5) { //Случайный персонаж, любой (кроме игрока) $i = 0; while ($i < count($this->users)) { if ($this->users[$i]['team'] == $this->users[$this->uids[$uid2]]['team'] && $uid2 != $this->users[$i]['id']) { $rand_user[] = $this->users[$i]['id']; } $i++; } } elseif ($type == 6) { //Случайный персонаж из команды противника $i = 0; while ($i < count($this->users)) { if ($this->users[$i]['team'] != $this->users[$this->uids[$uid2]]['team']) { $rand_user[] = $this->users[$i]['id']; } $i++; } } elseif ($type > 100) { //Удар идет в конкретного игрока if (!isset($this->users[$this->uids[$type]]) || $this->users[$this->uids[$type]]['id'] != $type) { $r = $uid2; } else { $r = $type; } } if (!empty($rand_user)) { $r = $rand_user[rand(0, (count($rand_user) - 1))]; } $this->import_user = $r; } else { $r = $this->import_user; } return $r; } /** Расчет уворота игроков */ private function mf1Razmen($id, $at, $v, $pat = false, $rjd = 0) { if ($pat) { $pat = $at; $at = $pat['p']; } else { $pat = false; } $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); } $i = 1; while ($i <= 2) { if ($i == 1) { $a = 1; $b = 2; $u1 = $uid1; $u2 = $uid2; } else { $a = 2; $b = 1; $u1 = $uid2; $u2 = $uid1; } //Расчет уворота Цели (u2) от Атакующего (u1) $j = 0; $wp01 = 3; $k01 = 0; if ($rjd > 0) { $j = $rjd - 1; } 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 = $this->lookStats($witm01['data']); if ($at[$a]['atack'][$j][2] == $v) { $tyv = $this->mfs(2, [ 'u1' => $u1, 'u2' => $u2, 'mf' => $this->stats[$this->uids[$u2]]['m4'], 'amf' => (int)$this->stats[$this->uids[$u2]]['m15'], 'smf' => ($this->stats[$this->uids[$u1]]['m5'] + $witm_data01['sv_m5']), 'asmf' => $this->stats[$this->uids[$u1]]['m21'], ], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level']); if ($tyv == 1 && $this->atacks[$id]['out' . $b] == 0) { //увернулся, гад :) $this->stats[$this->uids[$u1]]['nopryh'] = floor(0 + (int)$this->stats[$this->uids[$u1]]['nopryh']); if (!isset($this->stats[$this->uids[$u1]]['nopryh']) || $this->stats[$this->uids[$u1]]['nopryh'] <= 0) { $at[$a]['atack'][$j][1] = 2; } else { $this->stats[$this->uids[$u1]]['nopryh']--; $this->stats[$this->uids[$u1]]['nopryh_act']++; } } } $j++; } $i++; } unset($witm01, $witm_type01, $wp01, $k01); if ($pat) { $pat['p'] = $at; $at = $pat; } return $at; } /** Расчет крита игроков */ private function mf2Razmen($id, $at, $v, $pat = false, $rjd = 0) { global $u; if ($pat) { $pat = $at; $at = $pat['p']; } else { $pat = false; } $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); } $i = 1; while ($i <= 2) { if ($i == 1) { $a = 1; $u1 = $uid1; $u2 = $uid2; } else { $a = 2; $u1 = $uid2; $u2 = $uid1; } //Расчет крита Атакующего (u1) по Цели (u2) $j = 0; $wp01 = 0; $k01 = 0; if ($rjd > 0) { $j = $rjd - 1; } 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 = $this->lookStats($witm01['data']); if ($this->mfs(1, [ 'u1' => $u1, 'u2' => $u2, 'mf' => $this->stats[$this->uids[$u1]]['m1'] + $witm_data01['sv_m1'], 'amf' => $this->stats[$this->uids[$u1]]['m14'], 'smf' => $this->stats[$this->uids[$u2]]['m2'], 'aamf1' => (int)$this->stats[$this->uids[$u2]]['enemy_am1'], ], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level']) == 1) { //кританул, гад :) if ($at[$a]['atack'][$j][1] == 3) { //в блок $at[$a]['atack'][$j][1] = 4; //Тут тест } elseif ($at[$a]['atack'][$j][1] != 2 && $at[$a]['atack'][$j][1] != 6 && $at[$a]['atack'][$j][1] != 7 && $at[$a]['atack'][$j][1] != 8) { //обычный крит $at[$a]['atack'][$j][1] = 5; } else { $at[$a]['atack'][$j][1] = 1; } } $j++; } $i++; } unset($witm01, $witm_type01, $k01, $wp01); if ($pat) { $pat['p'] = $at; $at = $pat; } return $at; } /**Расчет парирования игроков*/ private function mf3Razmen($id, $at, $v, $pat = false, $rjd = 0) { if ($pat) { $pat = $at; $at = $pat['p']; } else { $pat = false; } $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); } $i = 1; while ($i <= 2) { if ($i == 1) { $a = 1; $b = 2; $u1 = $uid1; $u2 = $uid2; } else { $a = 2; $b = 1; $u1 = $uid2; $u2 = $uid1; } //Расчет парирования Цели (u2) от Атакующего (u1) //print_r( $at[$i] ); $j = 0; if ($rjd > 0) { $j = $rjd - 1; } while ($j < count($at[$a]['atack']) && $j < 8) { // КУДА БИЛ , ТИП УДАРА if ((!isset($this->stats[$this->uids[$u2]]['no_pr1']) || $this->stats[$this->uids[$u2]]['no_pr1'] == 0) && $at[$a]['atack'][$j][2] == $v) { if ($this->mfs(3, [ 'u1' => $u1, 'u2' => $u2, '1' => $this->stats[$this->uids[$u2]]['m7'], '2' => $this->stats[$this->uids[$u1]]['m7'], ], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level']) == 1 && $this->atacks[$id]['out' . $b] == 0) { //Парировал, гад :) $this->stats[$this->uids[$u1]]['nopryh'] = floor(0 + (int)$this->stats[$this->uids[$u1]]['nopryh']); if ((!isset($this->stats[$this->uids[$u1]]['nopryh']) || $this->stats[$this->uids[$u1]]['nopryh'] == 0) && $this->stats[$this->uids[$u1]]['nopryh_act'] < 1) { $at[$a]['atack'][$j][1] = 6; $this->stats[$this->uids[$u1]]['nopryh']--; $this->stats[$this->uids[$u1]]['nopryh_act']++; } } } $j++; } $i++; } if ($pat) { $pat['p'] = $at; $at = $pat; } return $at; } /**Расчет блока щитом игроков (скорее всего сломано) */ private function mf4Razmen($id, $at, $v, $pat = false, $rjd = 0) { if ($pat) { $pat = $at; $at = $pat['p']; } else { $pat = false; } $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); } $i = 1; while ($i <= 2) { if ($i == 1) { $a = 1; $b = 2; $u1 = $uid1; $u2 = $uid2; } else { $a = 2; $b = 1; $u1 = $uid2; $u2 = $uid1; } if ($this->stats[$this->uids[$u2]]['sheld1'] > 0) { //Расчет блока щитом Цели (u2) от Атакующего (u1) //print_r( $at[$i] ); $j = 0; while ($j < count($at[$a]['atack']) && $j < 8) { // КУДА БИЛ , ТИП УДАРА if ($at[$a]['atack'][$j][2] == $v && $this->mfs(5, ($this->stats[$this->uids[$u2]]['m8'] / 2 + $this->stats[$this->uids[$u2]]['m18']), $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level']) == 1 && $this->atacks[$id]['out' . $b] == 0) { //блокировал щитом, гад :) $at[$a]['atack'][$j][1] = 7; } $j++; } } $i++; } if ($pat) { $pat['p'] = $at; $at = $pat; } return $at; } /**Расчет контрудара игроков*/ private function mf5Razmen($id, $at, $v, $rjd = 0) { $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); } $i = 1; while ($i <= 2) { if ($i == 1) { $a = 1; $b = 2; $u1 = $uid1; $u2 = $uid2; } else { $a = 2; $b = 1; $u1 = $uid2; $u2 = $uid1; } //Расчет контрудара Цели (u2) по Атакующему (u1) $j = 0; if ($rjd > 0) { $j = $rjd - 1; } while ($j < count($at[$a]['atack']) && $j < 8) { // КУДА БИЛ , ТИП УДАРА if ($at[$a]['atack'][$j][2] == $v && $at[$a]['atack'][$j][1] == 2 && $this->mfs(6, [ 'u1' => $u1, 'u2' => $u2, 'a' => $this->stats[$this->uids[$u2]]['m6'], 'b' => $this->stats[$this->uids[$u1]]['m6'], ], $this->users[$this->uids[$u1]]['level'], $this->users[$this->uids[$u2]]['level']) == 1) { //контрудар, гад :) $at[$a]['atack'][$j][1] = 8; $rnd_a = rand(1, 5); $rjd = count($at[$b]['atack']); if (!$this->testRazmenblock1($id, $u2, $u1, $rnd_a)) { $at[$b]['atack'][] = [$rnd_a, 1, 0, 1]; // 3 , 0 , 1 } else { $at[$b]['atack'][] = [$rnd_a, 3, 0, 1]; // 3 , 0 , 1 } $at = $this->contrRestart($id, $at, 1, $rjd); } $j++; } $i++; } return $at; } //Выделение из лог текста public function addlt($a, $id, $s, $rnd = null) { global $log_text; if (is_null($rnd)) { $rnd = rand(0, (count($log_text[$s][$id]) - 1)); } return '{' . $a . 'x' . $id . 'x' . $rnd . '}'; } private function addNewStatDb($id) { 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'] . ', ' . $id['uid1'] . ', ' . $id['uid2'] . ', ' . $id['time'] . ', ' . $id['type'] . ', ' . $id['a'] . ', ' . $id['b'] . ', ' . $id['ma'] . ', ' . $id['mb'] . ', ' . $id['type_a'] . ', ' . $id['type_b'] . ', ' . $id['yrn'] . ', ' . $id['yrn_krit'] . ', ' . $id['tm1'] . ', ' . $id['tm2'] . ' )'); } //Добавляем статистику public function addNewStat($stat) { if (isset($stat[1])) { $this->addNewStatDb($stat[1]); } if (isset($stat[2])) { $this->addNewStatDb($stat[2]); } } //Добавляем размены в лог private function addlogRazmen($id, $at) { $this->hodID++; $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; $dies = [ 1 => 0, 2 => 0, ]; //массив для статистики $stat = [ 1 => [ 'uid1' => 0, 'uid2' => 0, 'time' => time(), 'type' => 0, 'a' => '00000', 'b' => '0', 'type_a' => '', 'type_b' => '0', 'yrn' => 0, 'yrn_krit' => 0, 'ma' => 0, 'mb' => 0, 'tm1' => 0, 'tm2' => 0, ], 2 => [ 'uid1' => 0, 'uid2' => 0, 'time' => time(), 'type' => 0, 'a' => '00000', 'b' => '0', 'type_a' => '', 'type_b' => '0', 'yrn' => 0, 'yrn_krit' => 0, 'ma' => 0, 'mb' => 0, 'tm1' => 0, 'tm2' => 0, ], ]; $i = 1; while ($i <= 2) { if ($i == 1) { $a = 1; $b = 2; $u1 = $uid1; $u2 = $uid2; } else { $a = 2; $b = 1; $u1 = $uid2; $u2 = $uid1; } if ($this->stats[$this->uids[$u2]]['yhod'] > 0) { $u2 = $this->yhod_user($u1, $u2, $this->stats[$this->uids[$u2]]['yhod']); } $s1 = $this->users[$this->uids[$u1]]['sex']; $s2 = $this->users[$this->uids[$u2]]['sex']; $stat[$a]['uid1'] = $u1; $stat[$a]['uid2'] = $u2; $stat[$a]['ma'] = $this->stats[$this->uids[$u1]]['zona']; $stat[$a]['mb'] = $this->stats[$this->uids[$u1]]['zonb']; $stat[$a]['tm1'] = $this->users[$this->uids[$u1]]['team']; $stat[$a]['tm2'] = $this->users[$this->uids[$u2]]['team']; $stat[$a]['a'] = $this->atacks[$id]['a' . $a]; $stat[$a]['b'] = $this->atacks[$id]['b' . $a]; $vLog = 'at1=00000||at2=00000||zb1=' . $this->stats[$this->uids[$u1]]['zonb'] . '||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] . '||bl1=' . $this->atacks[$id]['b' . $a] . '||bl2=' . $this->atacks[$id]['b' . $b] . '||time1=' . $this->atacks[$id]['time'] . '||time2=' . $this->atacks[$id]['time2'] . '||s' . $a . '=' . $s1 . '||s' . $b . '=' . $s2 . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2']; $mas = [ 'text' => '', 'time' => time(), 'battle' => $this->info['id'], 'id_hod' => $this->hodID, 'vars' => $vLog, 'type' => 1, ]; if (!isset($at[$a]['atack'])) { //ТУТ тест пропуска if ($this->atacks[$id]['tpo' . $a] == 2) { $mas['text'] .= '{u1} потратил свой ход на магию.'; } else { // if ($this->info['razdel'] == 0 && $this->info['dn_id'] == 0 && $this->info['izlom'] == 0) { mysql_query('INSERT INTO `battle_out` (`battle`,`uid1`,`uid2`,`time`,`out`) VALUES ( ' . $this->info['id'] . ',' . $u1 . ',' . $u2 . ', unix_timestamp(), 1)'); } // if (isset($u1)) { $mas['text'] .= '{u1} пропустил свой ход.'; //Проверка сброс туманок mysql_query('update eff_users set `delete` = unix_timestamp() where `uid` = ' . $u1 . ' AND `delete` = 0 AND `v1` = "priem" AND v2 in (288, 287, 286, 273) LIMIT 1'); } } $mas['text'] = '{tm1} ' . $mas['text']; $this->add_log($mas); } else { $j = 0; while ($j < count($at[$a]['atack']) && $j < 8) { // $mas['text'] = ''; // $wt = [ 21 => 4, 22 => 5, 20 => 2, 28 => 2, 19 => 3, 18 => 1, 26 => 22, ]; $par = [ 'zona' => '{zn2_' . $at[$a]['atack'][$j][0] . '} ', 'kyda' => $this->lg_zon[$at[$a]['atack'][$j][0]][rand(0, (count($this->lg_zon[$at[$a]['atack'][$j][0]]) - 1))], 'chem' => $this->lg_itm[$wt[$at[$a]['atack'][$j]['wt']]][rand(0, (count($this->lg_itm[$wt[$at[$a]['atack'][$j]['wt']]]) - 1))], ]; // $this->atacks[$id]['uid_' . $u1 . '_t' . $at[$a]['atack'][$j][1]]++; // if ($at[$a]['atack'][$j][1] == 1 || $at[$a]['atack'][$j][1] == 5) { //u1 ударил обычным ударом u2 //u1 ударил критическим ударом u2 $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'] . '. '; } elseif ($at[$a]['atack'][$j][1] == 2) { //u2 увернулся от u1 $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1) . $this->addlt($a, 9, $s1) . ' {u2} ' . $this->addlt($b, 11, $s2) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; } elseif ($at[$a]['atack'][$j][1] == 3) { //u2 заблокировал удар u1 $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1) . $this->addlt($a, 9, $s1) . ' {u2} ' . $this->addlt($b, 10, $s2) . ' ' . $this->addlt(1, 7, $s1, $at[$a]['atack'][$j]['yron']['t']) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; } elseif ($at[$a]['atack'][$j][1] == 4) { //u1 пробил блок u2 критом if (isset($at[$a]['atack'][$j]['yron']['t'])) { $mas['text'] .= $par['zona'] . '{u2} ' . $this->addlt($b, 1, $s2) . $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'] . '. '; } } elseif ($at[$a]['atack'][$j][1] == 6) { //u2 парировал удар u1 $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1) . $this->addlt($a, 9, $s1) . ' {u2} неожиданно парировал ' . $this->addlt(1, 7, $s1, $at[$a]['atack'][$j]['yron']['t']) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; } elseif ($at[$a]['atack'][$j][1] == 7) { //u2 блокировал щитом удар u1 $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1) . $this->addlt($a, 9, $s1) . ' {u2}, воспользовавшись своим щитом, ' . $this->addlt($b, 10, $s2) . ' ' . $this->addlt(1, 7, $s1, $at[$a]['atack'][$j]['yron']['t']) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; } elseif ($at[$a]['atack'][$j][1] == 8) { //u2 увернулся от удара u1 и нанес по нему контрудар $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1) . $this->addlt($a, 9, $s1) . ' {u2} ' . $this->addlt($b, 11, $s2) . ' ' . $par['chem'] . ' ' . $par['kyda'] . ' и нанес контрудар. '; } $stat[$a]['type_a'] .= '' . $at[$a]['atack'][$j][1]; if ( (!isset($this->stats[$this->uids[$u2]]['notravma']) || $this->stats[$this->uids[$u2]]['notravma'] == 0) && isset($at[$a]['atack'][$j]['yron']['travma']) && $at[$a]['atack'][$j]['yron']['travma'][0] > 0 && floor($at[$a]['atack'][$j]['yron']['hp']) <= 0 ) { $tr_pl = mysql_fetch_array(mysql_query('SELECT `id`,`v1` FROM `eff_users` WHERE `id_eff` = 4 AND `uid` = ' . $u2 . ' AND `delete` = 0 ORDER BY `v1` DESC LIMIT 1')); if (!isset($tr_pl['id']) || $tr_pl['v1'] < 3) { //263 if (isset($tr_pl['id'])) { $at[$a]['atack'][$j]['yron']['travma'][0] = rand(($tr_pl['v1'] + 1), 3); } $tr_pl2 = mysql_fetch_array(mysql_query('SELECT `id` FROM `eff_users` WHERE `uid` = ' . $u2 . ' AND `delete` = 0 AND `name` LIKE "%Защита от травм%" limit 1')); if (!isset($tr_pl2['id']) && $at[$a]['atack'][$j]['yron']['travma'][0] <= 3) { $mas['text'] = rtrim($mas['text'], '. '); $mas['text'] .= ', нанеся противнику '; 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'] .= ' травму. '; } } 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'] .= ' пробив броню. '; } 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) && $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'] .= ' ' . $at[$a]['atack'][$j]['yron']['r'] . ''; } else { $mas['text'] .= ' ' . $at[$a]['atack'][$j]['yron']['r'] . ''; } $stat[$a]['yrn'] += -$at[$a]['atack'][$j]['yron']['r']; } if (isset($at[$a]['atack'][$j]['yron']['hp'])) { if ($this->users[$this->uids[$u2]]['align'] == 9) { $at[$a]['atack'][$j]['yron']['hp'] = $at[$a]['atack'][$j]['yron']['hp'] / ($at[$a]['atack'][$j]['yron']['hpAll'] / 100); $at[$a]['atack'][$j]['yron']['hpAll'] = '100%'; } $mas['text'] .= ' [' . floor($at[$a]['atack'][$j]['yron']['hp']) . '/' . floor($at[$a]['atack'][$j]['yron']['hpAll']) . ']'; } // if ($mas['text'] != '') { $mas['text'] = '{tm1} ' . $mas['text']; } if (count($at[$a]['atack'][$j]['yron']['plog']) > 0) { $il = 0; while ($il <= count($at[$a]['atack'][$j]['yron']['plog'])) { if (isset($at[$a]['atack'][$j]['yron']['plog'][$il])) { eval($at[$a]['atack'][$j]['yron']['plog'][$il]); } $il++; } } $this->add_log($mas); $j++; } } $i++; } //Добавляем статистику + записываем в баттл_юзерс НР игроков $this->addNewStat($stat); //Вывод в лог смерти персонажа if (floor($this->stats[$this->uids[$u1]]['hpNow']) < 1) { $dies[1] = 1; } if (floor($this->stats[$this->uids[$u2]]['hpNow']) < 1) { $dies[2] = 1; } if ($dies[1] > 0 || $dies[2] > 0) { $rtngwin = [1, 2, 3, 5, 10, 20, 40, 80, 160]; $rtnglos = [0, 0, 0, -1, -2, -5, -10, -20, -40]; if ($this->info['typeBattle'] == 99) { if ($btlstatus[0] == 0) { //Кровавые бои обычные $rtngwin = [2, 4, 6, 10, 20, 40, 80, 160, 320]; if ($this->info['razdel'] == 5) { //не хаот $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } else { //хаот $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; } } elseif ($btlstatus[0] == 25) { //Кровавая битва $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } elseif ($btlstatus[0] == 50) { //Кровавая резня $rtngwin = [4, 8, 16, 32, 64, 128, 256, 512, 1024]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } elseif ($btlstatus[0] == 75) { //Кровавая сеча $rtngwin = [5, 10, 20, 40, 80, 160, 320, 640, 1280]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } elseif ($btlstatus[0] == 100) { //Кровавое побоище $rtngwin = [6, 12, 24, 48, 98, 196, 392, 784, 1568]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } elseif ($btlstatus[0] == 150) { //Судный день $rtngwin = [7, 14, 28, 56, 112, 224, 448, 896, 1792]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } } else { if ($btlstatus[0] == 0) { //Обычный поединок if ($this->info['razdel'] != 5) { //хаот $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; } } elseif ($btlstatus[0] == 25) { //великая битва $rtngwin = [2, 4, 6, 10, 20, 40, 80, 160, 320]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } elseif ($btlstatus[0] == 50) { //величайшая битва $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } elseif ($btlstatus[0] == 75) { //историческая битва сеча $rtngwin = [4, 8, 16, 32, 64, 128, 256, 512, 1024]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } elseif ($btlstatus[0] == 100) { //эпохальная битва $rtngwin = [5, 10, 20, 40, 80, 160, 320, 640, 1280]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } elseif ($btlstatus[0] == 150) { //судный день $rtngwin = [7, 14, 28, 56, 112, 224, 448, 896, 1792]; $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; } } if ($this->info['dn_id'] > 0 || $this->info['izlom'] != 0 || $this->info['turnir'] != 0) { //Пещерные бои не считаются и Изломы тоже, ну и Турниры $rtngwin = [0, 0, 0, 0, 0, 0, 0, 0, 0]; $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; } elseif ($this->info['clan1'] > 0 && $this->info['clan2'] > 0) { //Клановая война $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; $rtnglos = [-1, -2, -4, -8, -16, -32, -64, -128, -256]; } if ($dies[1] == 1) { if ($this->info['dn_id'] > 0) { //не дается репутация } else { if ($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) { //не дается репутация } else { if ($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 . ', unix_timestamp(), ' . $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 . ', unix_timestamp(), ' . $rtng2 . ', ' . $this->users[$this->uids[$u2]]['align'] . ', ' . $this->users[$this->uids[$u2]]['clan'] . ') '); } } unset($rtng1, $rtng2); } } //Добавляем в лог действия приема public function priemAddLog($id, $a, $b, $u1, $u2, $prm, $text, $hodID, $tm1 = 0, $tm2 = 0) { if ($tm1 === 0) { if (isset($this->atacks[$id])) { $tm1 = $this->atacks[$id]['time']; } else { $tm1 = time(); } } if ($tm2 === 0) { if (isset($this->atacks[$id])) { $tm2 = $this->atacks[$id]['time2']; } else { $tm2 = time(); } } $vLog = 'prm=' . $prm . '||at1=00000||at2=00000||zb1=' . $this->stats[$this->uids[$u1]]['zonb'] . '||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] . '||bl1=' . $this->atacks[$id]['b' . $a] . '||bl2=' . $this->atacks[$id]['b' . $b] . '||time1=' . $tm1 . '||time2=' . $tm2 . '||s' . $a . '=' . $this->users[$this->uids[$u1]]['sex'] . '||s' . $b . '=' . $this->users[$this->uids[$u2]]['sex'] . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2']; $mas = [ 'text' => $text, 'time' => time(), 'battle' => $this->info['id'], 'id_hod' => $hodID, 'vars' => $vLog, 'type' => 1, ]; $this->add_log($mas); } //Добавляем в лог действия приема (без атаки) public function priemAddLogFast($u1, $u2, $prm, $text, $hodID, $tm) { $vLog = 'prm=' . $prm . '||time1=' . $tm . '||time2=' . $tm . '||s1=' . $this->users[$this->uids[$u1]]['sex'] . '||s2=' . $this->users[$this->uids[$u2]]['sex'] . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2']; $mas = [ 'text' => $text, 'time' => time(), 'battle' => $this->info['id'], 'id_hod' => ($this->hodID + $hodID), 'vars' => $vLog, 'type' => 1, ]; $this->add_log($mas); } //Считаем контру private function contrRestart($id, $at, $v, $rjd = 0) { //уворот $at = $this->mf1Razmen($id, $at, $v, true, $rjd); //парирование $at = $this->mf3Razmen($id, $at, $v, true, $rjd); //контрудар //$at = $this->mf5Razmen($id,$at,$v,true,$rjd); //блок щитом (если есть щит, конечно) $at = $this->mf4Razmen($id, $at, $v, true, $rjd); //Проверяем урон //$at = $this->yronRazmen($id,$at); //крит $at = $this->mf2Razmen($id, $at, $v, true, $rjd); return $this->yronRazmen($id, $at, true, $rjd); } //Расчитываем ед. урона public function yronGetrazmen($uid1, $uid2, $wp, $zona) { global $u; $r = ['r' => '--',]; //Определяем тип урона /* Колющий Рубящий Режущий Дробящий */ $witm = 0; $witm_type = 0; if ($wp > 0) { $witm = $this->stats[$this->uids[$uid1]]['items'][$this->stats[$this->uids[$uid1]]['wp' . $wp . 'id']]; $witm_data = $this->lookStats($witm['data']); $witm_type = $this->weaponTx($witm); } if ($witm_type == 0 || $witm_type == 12) { $witm_type2 = ''; } else { $witm_type2 = $witm_type; } $r['t'] = $witm_type2; //Расчет брони /* голова грудь живот пояс ноги */ $bron = [ 1 => [$this->stats[$this->uids[$uid2]]['mib1'], $this->stats[$this->uids[$uid2]]['mab1']], 2 => [$this->stats[$this->uids[$uid2]]['mib2'], $this->stats[$this->uids[$uid2]]['mab2']], 3 => [$this->stats[$this->uids[$uid2]]['mib2'], $this->stats[$this->uids[$uid2]]['mab2']], 4 => [$this->stats[$this->uids[$uid2]]['mib3'], $this->stats[$this->uids[$uid2]]['mab3']], 5 => [$this->stats[$this->uids[$uid2]]['mib4'], $this->stats[$this->uids[$uid2]]['mab4']], ]; // //Увеличиваем параметры от текущего оружия которым бьем //$witm_data $iii = 1; while ($iii <= 7) { if (isset($witm_data['sv_a' . $iii]) && $witm_data['sv_a' . $iii] != 0) { $this->stats[$this->uids[$uid1]]['a' . $iii] += $witm_data['sv_a' . $iii]; } if (isset($witm_data['sv_mg' . $iii]) && $witm_data['sv_mg' . $iii] != 0) { $this->stats[$this->uids[$uid1]]['mg' . $iii] += $witm_data['sv_mg' . $iii]; } $iii++; } $iii = 1; while ($iii <= 4) { if (isset($witm_data['sv_aall']) && $witm_data['sv_aall'] != 0) { $this->stats[$this->uids[$uid1]]['a' . $iii] += $witm_data['sv_aall']; } $iii++; } $iii = 1; while ($iii <= 4) { if (isset($witm_data['sv_mall']) && $witm_data['sv_mall'] != 0) { $this->stats[$this->uids[$uid1]]['mg' . $iii] += $witm_data['sv_mall']; } $iii++; } $iii = 1; while ($iii <= 7) { if (isset($witm_data['sv_m2all']) && $witm_data['sv_m2all'] != 0) { $this->stats[$this->uids[$uid1]]['mg' . $iii] += $witm_data['sv_m2all']; } $iii++; } if (isset($witm_data['sv_m3']) && $witm_data['sv_m3'] != 0) { $this->stats[$this->uids[$uid1]]['m3'] += $witm_data['sv_m3']; } $iii = 1; while ($iii <= 7) { if (isset($witm_data['sv_pa' . $iii]) && $witm_data['sv_pa' . $iii] != 0) { $this->stats[$this->uids[$uid1]]['pa' . $iii] += $witm_data['sv_pa' . $iii] + $witm_data['sv_m10']; } if (isset($witm_data['sv_pm' . $iii]) && $witm_data['sv_pm' . $iii] != 0) { $this->stats[$this->uids[$uid1]]['pm' . $iii] += $witm_data['sv_pm' . $iii] + $witm_data['sv_m11a']; if ($iii < 5) { $this->stats[$this->uids[$uid1]]['pm' . $iii] += $witm_data['sv_m11']; } } $iii++; } //мощность + подавление мощности противником $wAp = 0; if ($witm_type == 12) { //удар кулаком $wAp += $this->stats[$this->uids[$uid1]]['m10']; if ($this->users[$this->uids[$uid1]]['align'] == 7) { $wAp += 15; } } elseif ($witm_type < 5) { $wAp += $this->stats[$this->uids[$uid1]]['pa' . $witm_type]; $wAp -= $this->stats[$this->uids[$uid2]]['antpa' . $witm_type]; } else { $wAp += $this->stats[$this->uids[$uid1]]['m10'] + $this->stats[$this->uids[$uid1]]['pm' . ($witm_type - 4)] + $this->stats[$this->uids[$uid1]]['m11a'] + $witm_data['sv_pm' . ($witm_type - 4)]; $wAp -= $this->stats[$this->uids[$uid2]]['antpm' . ($witm_type - 4)]; } //Владение данным оружием $vladenie = 0; //Пробой брони $proboi = 0; $witm_data['m9'] = $this->stats[$this->uids[$uid1]]['m9']; if (rand(1, 100) < floor($witm_data['m9'] / 2)) { $proboi = floor($witm_data['m9'] / 2); $r['pb'] = 1; } $y = $this->yrn( $this->stats[$this->uids[$uid1]], $this->stats[$this->uids[$uid2]], $this->users[$this->uids[$uid1]], $this->users[$this->uids[$uid2]], $this->users[$this->uids[$uid1]]['level'], $this->users[$this->uids[$uid2]]['level'], // $witm_type, $this->stats[$this->uids[$uid1]]['minAtack'], //мин. урон (добавочный) $this->stats[$this->uids[$uid1]]['maxAtack'], //макс. урон $bron[$zona][0], //броня мин. $bron[$zona][1], //броня макс // $vladenie, //владения $wAp, //мощность урона (round($this->stats[$this->uids[$uid1]]['m3'])), //мощность крита (($this->stats[$this->uids[$uid2]]['za' . $witm_type2]) - $this->stats[$this->uids[$uid1]]['pza']), //защита от урона $this->stats[$this->uids[$uid1]]['ozash'], //подавление защиты $proboi, //пробой брони 0, //хз ($witm_data['sv_yron_min'] + $this->stats[$this->uids[$uid1]]['yron_min']), ($witm_data['sv_yron_max'] + $this->stats[$this->uids[$uid1]]['yron_max']), $this->stats[$this->uids[$uid2]]['zaproc'], $this->stats[$this->uids[$uid2]]['zmproc'], (($this->stats[$this->uids[$uid2]]['zm' . ($witm_type2 - 4)]) - round($this->stats[$this->uids[$uid1]]['pzm'] * 0.8)), //защита от урона $this->stats[$this->uids[$uid1]]['omzash'], //подавление защиты $witm['type'], $witm ); $r['y'] = round(rand($y['min'] + $proboi, $y['max'] + round($proboi / 2))); $r['k'] = round(rand($y['Kmin'] + round($proboi / 4), $y['Kmax'] + round($proboi / 8))); $r['m_y'] = $y['max']; $r['m_k'] = $y['Kmax']; $r['bRND'] = $y['bRND']; $r['w_type'] = $witm_type; //тип от оружия if ($witm['type'] == 18) { $tp = 1; } elseif ($witm['type'] == 19) { $tp = 2; } elseif ($witm['type'] == 20) { $tp = 3; } elseif ($witm['type'] == 21) { $tp = 4; } if ($tp != $witm_type && $wp > 0) // ТУТ { $r['y'] = round($r['y'] / 3); $r['r'] = round($r['r'] / 3); $r['k'] = round($r['k'] / 3); $r['m_k'] = round($r['m_k'] / 3); $r['m_y'] = round($r['m_y'] / 3); } if (isset($this->stats[$this->uids[$uid2]]['zaproc'])) { $r['y'] = round($r['y'] - $r['y'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); $r['r'] = round($r['r'] - $r['r'] * $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; } //Считаем урон private function yronRazmen($id, $at, $pat = false, $rjd = 0) { if ($pat) { $pat = $at; $at = $pat['p']; } else { unset($pat); } $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { $yhod = [1 => 1, 2 => 0]; } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { $yhod = [1 => 0, 2 => 1]; } $i = 1; while ($i <= 2) { if ($i == 1) { $a = 1; $u1 = $uid1; $u2 = $uid2; } else { $a = 2; $u1 = $uid2; $u2 = $uid1; } //Считаем свойства от предметов //Расчет удара (u2) по (u1) $j = 0; $k = 0; if ($rjd > 0) { $j = $rjd - 1; } //ТУТ 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 { $wp = 3; } $k = 0; } $witm = $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp' . $wp . 'id']]; $witm_type = $this->weaponTx($witm); $at[$a]['atack'][$j]['wt'] = $witm['type']; // $at[$a]['atack'][$j]['yhod'] = $yhod[$a]; if (!isset($at[$a]['atack'][$j]['yron']) && ( $at[$a]['atack'][$j][1] == 1 || $at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5) ) { $at[$a]['atack'][$j]['yron'] = $this->yronGetrazmen($u1, $u2, $wp, $at[$a]['atack'][$j][0]); if ($at[$a]['atack'][$j][1] == 4) { $at[$a]['atack'][$j]['yron']['y_old'] = $at[$a]['atack'][$j]['yron']['y']; $at[$a]['atack'][$j]['yron']['y'] = round($at[$a]['atack'][$j]['yron']['k'] / 2); } elseif ($at[$a]['atack'][$j][1] == 5) { $at[$a]['atack'][$j]['yron']['y_old'] = $at[$a]['atack'][$j]['yron']['y']; $at[$a]['atack'][$j]['yron']['y'] = $at[$a]['atack'][$j]['yron']['k']; } $at[$a]['atack'][$j]['yron']['2h'] = $witm['2h']; $at[$a]['atack'][$j]['yron']['w'] = $wp; if ($at[$a]['atack'][$j]['yron']['y'] < 1) { $at[$a]['atack'][$j]['yron']['r'] = '--'; } else { $at[$a]['atack'][$j]['yron']['r'] = '-' . $at[$a]['atack'][$j]['yron']['y']; } } else { $at[$a]['atack'][$j]['block'] = $this->yronGetrazmen($u1, $u2, $wp, $at[$a]['atack'][$j][0]); 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 ($pat) { $pat['p'] = $at; $at = $pat; } return $at; } //Обновление здоровья private function updateHealth($id, $at) { $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { $uid1 = $this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod']); } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { $uid2 = $this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod']); } $i = 1; while ($i <= 2) { if ($i == 1) { $a = 1; $b = 2; $u1 = $uid1; $u2 = $uid2; } else { $a = 2; $b = 1; $u1 = $uid2; $u2 = $uid1; } //Рассчет дополнительных тактик if ($this->atacks[$id]['out' . $b] > 0) { //Игрок ${'u'.$a} получает тактики, возможно //выдаем тактику контрудара if (rand(0, 100) < min(floor($this->stats[$this->uids[$u1]]['m6'] / 5), 20) && $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) && $this->stats[$this->uids[$u2]]['this_animal'] == 0) { $this->users[$this->uids[$u1]]['tactic4']++; } } //Расчет удара Цели (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) { //u2 увернулся от u1 } elseif ($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']) && $this->stats[$this->uids[$u2]]['this_animal'] == 0 ) { $this->users[$this->uids[$u1]]['tactic2']++; } $this->users[$this->uids[$u2]]['tactic4']++; //тактика за пробив блок } elseif ($at[$a]['atack'][$j][1] == 5) { //u1 ударил критическим ударом u2 if (!isset($at[$a]['atack'][$j]['notactic2'])) { if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { $this->users[$this->uids[$u1]]['tactic2'] += 2; } //Двуручка if ( $at[$a]['atack'][$j]['yron']['2h'] == 1 && $this->stats[$this->uids[$u2]]['this_animal'] == 0 ) { $this->users[$this->uids[$u1]]['tactic2'] += 1; } } } elseif ($at[$a]['atack'][$j][1] == 6) { //u2 парировал удар u1 if ( !isset($at[$a]['atack'][$j]['notactic5']) && $this->stats[$this->uids[$u1]]['this_animal'] == 0 ) { $this->users[$this->uids[$u2]]['tactic5']++; } } elseif ($at[$a]['atack'][$j][1] == 7) { //u2 блокировал щитом удар u1 //ТУТ ЩИТ if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { $this->users[$this->uids[$u2]]['tactic4']++; } } elseif ($at[$a]['atack'][$j][1] == 8) { //u2 увернулся от удара u1 и нанес по нему контрудар if ($this->stats[$this->uids[$u1]]['this_animal'] == 0) { $this->users[$this->uids[$u2]]['tactic3']++; } } // КУДА БИЛ , ТИП УДАРА if (isset($at[$a]['atack'][$j]['yron']) && ( $at[$a]['atack'][$j][1] == 1 || $at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5)) { if ($this->stats[$this->uids[$u2]]['hpNow'] <= $at[$a]['atack'][$j]['yron']['y']) { $at[$a]['atack'][$j]['yron']['y'] = $this->stats[$this->uids[$u2]]['hpNow']; } if ($this->stats[$this->uids[$u2]]['hpNow'] <= $at[$a]['atack'][$j]['yron']['k']) { $at[$a]['atack'][$j]['yron']['k'] = $this->stats[$this->uids[$u2]]['hpNow']; } if ($at[$a]['atack'][$j]['yron']['y'] < 0) { $at[$a]['atack'][$j]['yron']['y'] = 1; $at[$a]['atack'][$j]['yron']['r'] = -1; $at[$a]['atack'][$j]['yron']['k'] = 1; } if ($this->stats[$this->uids[$u2]]['hpNow'] < 1) { $at[$a]['atack'][$j]['yron']['y'] = 0; $at[$a]['atack'][$j]['yron']['r'] = -1; $at[$a]['atack'][$j]['yron']['k'] = 0; } //Добавляем нанесенный урон и опыт $this->takeExp($u1, $at[$a]['atack'][$j]['yron']['y'], $u1, $u2); //Отнимаем НР $this->stats[$this->uids[$u2]]['hpNow'] -= $at[$a]['atack'][$j]['yron']['y']; $this->users[$this->uids[$u2]]['last_hp'] = -$at[$a]['atack'][$j]['yron']['y']; $at[$a]['atack'][$j]['yron']['hp'] = $this->stats[$this->uids[$u2]]['hpNow']; if ($at[$a]['atack'][$j]['yron']['hp'] < 1) { $at[$a]['atack'][$j]['yron']['hp'] = 0; } $at[$a]['atack'][$j]['yron']['hpAll'] = $this->stats[$this->uids[$u2]]['hpAll']; if ($at[$a]['atack'][$j]['yron']['hp'] > $at[$a]['atack'][$j]['yron']['hpAll']) { $at[$a]['atack'][$j]['yron']['hp'] = $at[$a]['atack'][$j]['yron']['hpAll']; } // //Травмирование if ( rand(0, 100) <= 50 && ($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5) && !isset($at[$a]['atack'][$j]['yron']['travma']) && rand(0, 1000) < 500 && $this->users[$this->uids[$u2]]['level'] > 1 && $this->stats[$this->uids[$u1]] > 1 ) { $trvm_chns = floor(rand(0, 200) / 10); if ($trvm_chns > 3 || $trvm_chns < 1) { $trvm_chns = 0; } $at[$a]['atack'][$j]['yron']['travma'] = [$trvm_chns, 'Обыкновенная травма']; unset($trvm_chns); } } $j++; } $i++; } return $at; } //Добавляем новую статистику игрока private function addstatuser($id) { if (!$id && !is_numeric($id)) { return; } mysql_query('INSERT INTO `battle_users` ( `battle`,`uid`,`time_enter`,`login`,`level`,`align`,`clan`,`hpAll`,`hp`,`hpStart`,`team` ) VALUES ( ' . $this->info['id'] . ', ' . $id . ', unix_timestamp(), ' . $this->users[$this->uids[$id]]['login'] . ', ' . $this->users[$this->uids[$id]]['level'] . ', ' . $this->users[$this->uids[$id]]['align'] . ', ' . $this->users[$this->uids[$id]]['clan'] . ', ' . $this->stats[$this->uids[$id]]['hpAll'] . ', ' . $this->stats[$this->uids[$id]]['hp'] . ', ' . $this->stats[$this->uids[$id]]['hpNow'] . ', ' . $this->users[$this->uids[$id]]['team'] . ' )'); } //Проверяем приемы public function priemsRazmen($id, $at) { if ($at == 'fast') { $uid1 = $id[0]; $uid2 = $id[1]; } else { $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; } $i = 1; while ($i <= 2) { if ($i == 1) { $u1 = $uid1; } else { $u1 = $uid2; } //Получаем приемы и смотрим когда какой действует $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++; } } //Приемы которые используются моментально private function priemsRazmenMoment($id, $at) { $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; $i = 1; while ($i <= 2) { if ($i == 1) { $u1 = $uid1; $u2 = $uid2; } else { $u1 = $uid2; $u2 = $uid1; } if (!isset($at['p']['p_cast'])) { $at['p'] = $at; $at['p']['p_cast'] = true; } // //Приемы ухода от удара if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 1) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_used_this = $u1; $pr_moment = true; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u1, $j); unset(${'fx_priem'}); $this->stats[$this->uids[$u2]]['nopryh']--; } } $j++; } } //Приемы крита $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 2) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_used_this = $u1; $pr_moment = true; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u1, $j); unset(${'fx_priem'}); } } $j++; } //Приемы атаки $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 3) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_used_this = $u1; $pr_moment = true; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); if (isset($fx_priem)) { $at = $fx_priem($id, $at, $u1, $j); } unset(${'fx_priem'}); } } $j++; } //Приемы защиты $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 4) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_used_this = $u1; $pr_moment = true; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u1, $j); unset(${'fx_priem'}); } } $j++; } //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 5) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_used_this = $u1; $pr_moment = true; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u1, $j); unset(${'fx_priem'}); } } $j++; } $i++; } //return $at; } //Приемы которые используются моментально (в конце хода) private function priemsRazmenMomentEnd($id, $at) { $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; $i = 1; while ($i <= 2) { if ($i == 1) { $u1 = $uid1; $u2 = $uid2; } else { $u1 = $uid2; $u2 = $uid1; } if (!isset($at['p']['p_cast'])) { $at['p'] = $at; $at['p']['p_cast'] = true; } // //Приемы ухода от удара if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 1) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_used_this = $u1; $pr_moment = true; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u1, $j); unset(${'fx_priem'}); $this->stats[$this->uids[$u2]]['nopryh']--; } } $j++; } } //Приемы крита $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 2) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_used_this = $u1; $pr_moment = true; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u1, $j); unset(${'fx_priem'}); } } $j++; } //Приемы атаки $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 3) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_used_this = $u1; $pr_moment = true; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); if (isset($fx_priem)) { $at = $fx_priem($id, $at, $u1, $j); unset(${'fx_priem'}); } } } $j++; } //Приемы защиты $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 4) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_used_this = $u1; $pr_moment = true; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u1, $j); unset(${'fx_priem'}); } } $j++; } //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 5) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_used_this = $u1; $pr_moment = true; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u1, $j); unset(${'fx_priem'}); } } $j++; } $i++; } //return $at; } //Используем приемы private function priemsTestRazmen($id, $at) { $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; $i = 1; while ($i <= 2) { if ($i == 1) { $u1 = $uid1; $u2 = $uid2; } else { $u1 = $uid2; $u2 = $uid1; } if (!isset($at['p']['p_cast'])) { $at['p'] = $at; $at['p']['p_cast'] = true; } //ставка $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 220 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 237 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 286 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 287 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 288 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 213) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_used_this = $u1; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u1, $j); unset(${'fx_priem'}); } } $j++; } //Приемы ухода от удара if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 1) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_used_this = $u1; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u1, $j); unset(${'fx_priem'}); $this->stats[$this->uids[$u2]]['nopryh']--; } } $j++; } } //Приемы крита $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 2) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_used_this = $u1; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u1, $j); unset(${'fx_priem'}); } } $j++; } //Приемы атаки $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 3) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_used_this = $u1; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); if (isset($fx_priem)) { $at = $fx_priem($id, $at, $u1, $j); } unset(${'fx_priem'}); } } $j++; } //Приемы защиты $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 4) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_used_this = $u1; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); if (isset($fx_priem)) { $at = $fx_priem($id, $at, $u1, $j); } unset(${'fx_priem'}); } } $j++; } //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_used_this = $u1; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); if (isset($fx_priem)) { $at = $fx_priem($id, $at, $u1, $j); } unset(${'fx_priem'}); } } $j++; } $i++; } $i = 1; while ($i <= 2) { $u1 = $i == 1 ? $uid1 : $uid2; if (!isset($at['p']['p_cast'])) { $at['p'] = $at; $at['p']['p_cast'] = true; } //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 8) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_used_this = $u1; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u1, $j); unset(${'fx_priem'}); } } $j++; } //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 9) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_used_this = $u1; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u1, $j); unset(${'fx_priem'}); } } $j++; } $i++; } return $at; } //Повторная проверка приемов private function priemsRestartRazmen($id, $at) { if (isset($at['p'])) { // //Проверка $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; /* Если возникнут проблемы с приемами, придется переписать алгоритм, сейчас он выглядит так: Цикл 1. Проверяем пользователя Цикл 2 внутри Цикла 1. Проверяем приемы поторые пользователь использовал Придется сделать: Цикл 1. Проверяем пользователя Цикл 2 внутри Цикла 1. Проверяем приемы уворота Цикл 3. Проверяем пользователя Цикл 4 внутри Цикла 3. Проверяем приемы крита и т.д. */ $i = 1; while ($i <= 2) { if ($i == 1) { $u1 = $uid1; $u2 = $uid2; } else { $u1 = $uid2; $u2 = $uid1; } if (!isset($at['p']['p_cast'])) { $at['p'] = $at; $at['p']['p_cast'] = true; } //Приемы ухода от удара if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 1) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_tested_this = $u1; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u1, $j); unset(${'fx_priem'}); $this->stats[$this->uids[$u2]]['nopryh']--; } } $j++; } } //Приемы крита $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 2) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_tested_this = $u1; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u1, $j); unset(${'fx_priem'}); } } $j++; } //Приемы защиты $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 4) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_tested_this = $u1; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u1, $j); unset(${'fx_priem'}); } } $j++; } //Приемы атаки $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 3) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_tested_this = $u1; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u1, $j); unset(${'fx_priem'}); } } $j++; } //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_tested_this = $u1; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u1, $j); unset(${'fx_priem'}); } } $j++; } //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 8) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { $pr_tested_this = $u2; require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u2, $j); unset(${'fx_priem'}); } } $j++; } //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 9) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { $pr_tested_this = $u2; require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); $at = $fx_priem($id, $at, $u2, $j); unset(${'fx_priem'}); } } $j++; } $i++; } } return $at['p']; } //Проверка урона приемов public $um_priem = []; /** * Трогать очень осторожно. Этот шайтан как-то проверяет приёмы на враге * и рассчитывает урон учитывая и эти приёмы тоже. * @param $uid1 * @param $uid2 * @param $priem * @param $yron * @param $profil * @param $stabil [deprecated] * @param $test [deprecated] * @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 - урон не подвержен мощностям и т.д */ //Проверка $u1 = $uid1; $u2 = $uid2; //Проверяем приемы защиты игрока $u1 на урон игрока $u2 //Получаем приемы и смотрим когда какой действует if (!isset($this->stats[$this->uids[$u2]]['u_priem'])) { $eff = $this->stats[$this->uids[$u2]]['effects']; $j = 0; while ($j <= count($eff)) { if (isset($eff[$j]) && $eff[$j]['id_eff'] == 22 && $eff[$j]['v1'] == 'priem' && $eff[$j]['v2'] > 0) { $this->stats[$this->uids[$u2]]['u_priem'][] = [ $j, $eff[$j]['v2'], $this->prm[$eff[$j]['v2']]['act'], $eff[$j]['id'], $this->prm[$eff[$j]['v2']]['type_of'], $this->prm[$eff[$j]['v2']]['moment'], ]; } $j++; } unset($eff); } //Приемы защиты $j = 0; while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 4) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { $pr_momental_this = $u2; require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); $yron = $fx_moment($u2, $u1, $j, $yron, $profil); unset(${'fx_moment'}); } } $j++; } //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_momental_this = $u1; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); if (isset($fx_moment)) { $yron = $fx_moment($u1, $u2, $j, $yron, $profil, $inlog); } unset(${'fx_moment'}); } } $j++; } //Прочие приемы (влияет на урон от моментальных приемов) $j = 0; while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][7] == 5) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php')) { $pr_momental_this_seven = $u1; require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); if (isset($fx_moment_seven)) { $yron = $fx_moment_seven($u1, $u2, $j, $yron, $profil, $inlog); } unset(${'fx_moment_seven'}); } } $j++; } //Прочие приемы $j = 0; while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 8) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { $pr_momental_this = $u2; require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); if (isset($fx_moment)) { $yron = $fx_moment($u2, $u1, $j, $yron, $profil, $inlog); } unset(${'fx_moment'}); } } if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 9) { if (file_exists('../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php')) { $pr_momental_this = $u2; require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); if (isset($fx_moment)) { $yron = $fx_moment($u2, $u1, $j, $yron, $profil, $inlog); } unset(${'fx_moment'}); } } $j++; } if ($this->stats[$this->uids[$u2]]['zaproc'] > 0) { $yron = round($yron - $yron * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); if ($yron < 1) { $yron = 1; } } return $yron; } //Опыт + набитый урон за удар приемом\магией /** * @param $u1 * @param $u2 * @param $yron * @param $type [deprecated] * @return void */ public function priemYronSave($u1, $u2, $yron, $type = 0) { //$type 0 - урон , 1 - хил $this->testUserInfoBattle($u1); $this->testUserInfoBattle($u2); if (isset($this->uids[$u1])) { if ($this->stats[$this->uids[$u2]]['hpAll'] <= 1000) { $adt6 = round(0.1 * (floor($yron) / $this->stats[$this->uids[$u2]]['hpAll'] * 100), 10); } else { $adt6 = round(0.1 * (floor($yron) / 1000 * 100), 10); } if ($yron > $this->stats[$this->uids[$u2]]['hpNow']) { $yron = $this->stats[$this->uids[$u2]]['hpNow']; } if ($yron > 0) { $this->users[$this->uids[$u1]]['battle_yron'] += $yron; $this->users[$this->uids[$u1]]['battle_exp'] += round($this->testExp($yron, $this->stats[$this->uids[$u1]], $this->stats[$this->uids[$u2]], $u1, $u2)); if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { $this->users[$this->uids[$u1]]['tactic6'] += $adt6; $this->stats[$this->uids[$u1]]['tactic6'] += $adt6; } else { $this->users[$this->uids[$u1]]['tactic6'] += $adt6 / 3; $this->stats[$this->uids[$u1]]['tactic6'] += $adt6 / 3; } } else { $adt6 = 0; } // $this->users[$this->uids[$u2]]['last_hp'] = -$yron; // mysql_query('UPDATE `stats` SET `tactic6` = `tactic6` + ' . $adt6 . ', `battle_yron` = `battle_yron` + ' . $yron . ', `battle_exp` = `battle_exp` + ' . round($this->testExp($yron, $this->stats[$this->uids[$u1]], $this->stats[$this->uids[$u2]], $u1, $u2)) . ' WHERE `id` = ' . $u1); // mysql_query('UPDATE `stats` SET `last_hp` = ' . $this->users[$this->uids[$u2]]['last_hp'] . ' WHERE `id` = ' . $u2); } $this->addNewStat([ 1 => [ 'battle' => $this->info['id'], 'uid1' => $this->users[$this->uids[$u1]]['id'], 'uid2' => $this->users[$this->uids[$u2]]['id'], 'time' => time(), 'type' => 0, 'a' => '10000', 'b' => 0, 'type_a' => 1, 'type_b' => 0, 'ma' => 1, 'mb' => 1, 'yrn' => $yron, 'yrn_krit' => 0, 'tm1' => $this->users[$this->uids[$u1]]['team'], 'tm2' => $this->users[$this->uids[$u2]]['team'], ], ]); } //Наносим удар между игроками public function startAtack($id) { global $c, $u, $priem; if (!isset($this->atacks[$id]) || $this->atacks[$id]['lock'] != 0) { return; }//Прием разгадать тактику $i = 1; $j = 2; $k = 0; 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')); $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')); if (isset($untac['id']) && !isset($agrs['id'])) { // AND `a`.`v2` != 235 // AND `a`.`v2` != 273 AND `a`.`v2` != 286 AND `a`.`v2` != 287 AND `a`.`v2` != 288 $pvr['sp'] = mysql_query('SELECT * FROM `eff_users` WHERE `uid` = ' . $this->atacks[$id]['uid' . $j] . ' AND `delete` = 0 AND `v1` = "priem" and `v2` not in (222, 238, 228, 229, 139, 188, 226, 211, 49, 233, 227, 220, 191, 332, 333, 334, 335, 236, 201, 261, 262, 206, 207, 208, 209, 210, 284, 263, 258, 29, 30, 31, 32, 526, 249, 248, 187, 245, 175, 176, 177, 178, 179, 285, 36, 85, 86, 87, 88, 89, 90, 269, 276, 277, 270, 174, 324, 217) AND `name` NOT LIKE "%Иммунитет%" LIMIT 30'); while ($pvr['pl'] = mysql_fetch_array($pvr['sp'])) { $pvr['pl']['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $pvr['pl']['v2'] . '" LIMIT 1')); if (isset($pvr['pl']['priem']['id']) && $pvr['pl']['priem']['neg'] == 0) { $this->delPriem($pvr['pl'], $this->users[$this->uids[$this->atacks[$id]['uid' . $j]]], 100); } } // $k++; } $j--; $i++; } //Восстановление манны 1% за ход if ($this->atacks[$id]['out1'] == 0) { if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['s6'] / 4 < $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['level']) { $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] += floor($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['level'] + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hod_minmana']); } else { $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] += floor($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['s6'] / 4 + $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hod_minmana']); } $this->users[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] = $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow']; } // if ($this->atacks[$id]['out2'] == 0) { if ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['s6'] / 4 < $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['level']) { $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] += floor($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['level'] + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hod_minmana']); } else { $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] += floor($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['s6'] / 4 + $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hod_minmana']); } $this->users[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] = $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow']; } //Антистаты if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['antm3'] != 0) { $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['m3'] -= round($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['antm3']); } if ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['antm3'] != 0) { $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['m3'] -= round($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['antm3']); } //Расчет количества блоков и противников $this->testZonb($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2']); //Запускаем магию предметов $this->magicItems($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $id); $this->magicItems($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $id); // Получаем приемы игроков $this->priemsRazmen($id, $at); $this->priemsRazmenMoment($id, $at); $this->priemsRazmen($id, $at); $at = $this->newRazmen($id); // Тестируем какие еще могут быть варианты при ударе // Уворот, парирование, крит, пробить блок, блок щитом // Блок щитом (если есть щит, конечно) $at = $this->mf2Razmen($id, $at, $v); //крит $at = $this->mf3Razmen($id, $at, $v); //парирование $at = $this->mf4Razmen($id, $at, $v); //блок щитом $at = $this->mf1Razmen($id, $at, $v); //уворот $at = $this->mf5Razmen($id, $at, $v); //контрудар $at = $this->yronRazmen($id, $at); //расчет урона // Проверяем приемы // Получаем приемы игроков $at = $this->priemsTestRazmen($id, $at); // Собираем размен (пересчитываем и расчитываем урон и т.д) $at = $this->priemsRestartRazmen($id, $at); //Повторная проверка приемов (если требуется) // //Минусуем поглощенный урон if (count($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['set_pog']) > 0) { $this->testPogB($this->atacks[$id]['uid1'], 1, $id, 1); } if (count($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['set_pog']) > 0) { $this->testPogB($this->atacks[$id]['uid2'], 1, $id, 1); } // Обновляем НР и добавляем тактики $at = $this->updateHealth($id, $at); // Заносим в логи + записываем статистику боя $this->addlogRazmen($id, $at); // NEW BATTLE SYSTEM //Запускаем магию предметов $this->magicItems($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $id); $this->magicItems($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $id); // //Возращаем зоны блока $this->restZonb($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2']); //обновляем задержки приемов $zd1 = explode('|', $this->users[$this->uids[$this->atacks[$id]['uid1']]]['priems_z']); $zd2 = explode('|', $this->users[$this->uids[$this->atacks[$id]['uid2']]]['priems_z']); // $prmos = []; // $i5 = 0; while ($i5 < 51) { if (isset($zd1[$i5]) && $zd1[$i5] > 0) { //Если приемы не требуют ход $zd1[$i5] -= 1; } else { $zd1[$i5] = 0; } if (isset($zd2[$i5]) && $zd2[$i5] > 0) { //Если приемы не требуют ход $zd2[$i5] -= 1; } else { $zd2[$i5] = 0; } $i5++; } unset($prmos); if ($this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy'] == $this->users[$this->uids[$this->atacks[$id]['uid2']]]['id']) { $this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy'] = -$this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy']; } if ($this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy'] == $this->users[$this->uids[$this->atacks[$id]['uid1']]]['id']) { $this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy'] = -$this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy']; } $this->users[$this->uids[$this->atacks[$id]['uid1']]]['priems_z'] = implode('|', $zd1); $this->users[$this->uids[$this->atacks[$id]['uid2']]]['priems_z'] = implode('|', $zd2); if ($this->atacks[$id]['uid1'] == $u->info['id']) { $u->info['priems_z'] = implode('|', $zd1); } elseif ($this->atacks[$id]['uid2'] == $u->info['id']) { $u->info['priems_z'] = implode('|', $zd2); } // //Проверяем тактики $i = 1; while ($i <= 6) { if ($this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] > 25) { $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] = 25; } elseif ($this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] <= 0) { $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic' . $i] = 0; } if ($this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] > 25) { $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] = 25; } elseif ($this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] <= 0) { $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic' . $i] = 0; } $i++; } // //Обновляем задержки предметов mysql_query('UPDATE `items_users` SET `btl_zd` = `btl_zd` - 1 WHERE (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '") AND `btl_zd` > 0 AND `inOdet` > 0 LIMIT 100'); mysql_query('UPDATE `users` SET `notrhod` = "-1" WHERE `id` = "' . $this->atacks[$id]['uid1'] . '" OR `id` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 2'); //Обновляем задержки пирожков mysql_query('UPDATE `pirogi` SET `hod` = `hod` - 1 WHERE `btl` = "' . $this->info['id'] . '" AND (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '")'); mysql_query('UPDATE `tactic` SET `hod` = `hod` - 1 WHERE `btl` = "' . $this->info['id'] . '" AND (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '")'); //Тактики mysql_query('DELETE FROM `pirogi` WHERE `btl` = "' . $this->info['id'] . '" AND `hod` < 1'); mysql_query('DELETE FROM `tactic` WHERE `btl` = "' . $this->info['id'] . '" AND `hod` < 1'); //Обновляем задержки пирожков mysql_query('UPDATE `spells` SET `hod` = `hod` - 1 WHERE `btl` = "' . $this->info['id'] . '" AND (`uid` = "' . $this->atacks[$id]['uid1'] . '" OR `uid` = "' . $this->atacks[$id]['uid2'] . '")'); mysql_query('DELETE FROM `spells` WHERE `btl` = "' . $this->info['id'] . '" AND `hod` < 1'); //Обновляем данные в battle_users mysql_query('UPDATE `battle_users` SET `hp` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hpNow'] . '" WHERE `battle` = "' . $this->info['id'] . '" AND `uid` = "' . $this->atacks[$id]['uid1'] . '" LIMIT 1'); mysql_query('UPDATE `battle_users` SET `hp` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hpNow'] . '" WHERE `battle` = "' . $this->info['id'] . '" AND `uid` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 1'); //Восстановление манны 25% от мудрости за ход if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { $this->save_stats($this->yhod_user($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'])); } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { $this->save_stats($this->yhod_user($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'])); } // $this->save_stats($this->atacks[$id]['uid1']); $this->save_stats($this->atacks[$id]['uid2']); $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'])); if (round($eff[$i]['priem']['minmana'] * $eff[$i]['x']) != 0) { //Отнимаем ману у того кто кастовал $priem->minMana($eff[$i]['user_use'], round($eff[$i]['priem']['minmana'] * $eff[$i]['x'])); if ($this->stats[$this->uids[$eff[$i]['user_use']]]['mpNow'] <= 0) { $eff[$i]['hod'] = 0; } } if (strripos($eff[$i]['data'], 'minprocmanahod')) { $pvr = [ 'x1' => 0, 'x2' => 0, 'd' => explode('|', $eff[$i]['data']), 'i' => 0, 'uid' => $eff[$i]['uid'], 'color' => '', 'color2' => '', 'effx' => '', 'x' => $eff[$i]['name'], ]; while ($pvr['i'] < count($pvr['d'])) { if (isset($pvr['d'][$pvr['i']])) { $pvr['d1'] = explode('=', $pvr['d'][$pvr['i']]); if ($pvr['d1'][0] == 'minprocmanahod') { $pvr['d1'] = explode('x', $pvr['d1'][1]); $pvr['x1'] = $pvr['d1'][0]; $pvr['x2'] = $pvr['d1'][1]; } } $pvr['i']++; } $pvr['mp'] = round($this->stats[$this->uids[$pvr['uid']]]['mpAll'] / 100 * rand($pvr['x1'], $pvr['x2'])); $pvr['mpSee'] = 0; $pvr['mpNow'] = floor($this->stats[$this->uids[$pvr['uid']]]['mpNow']); $pvr['mpAll'] = $this->stats[$this->uids[$pvr['uid']]]['mpAll']; $pvr['mpTr'] = $pvr['mpAll'] - $pvr['mpNow']; if ($pvr['mpTr'] > 0) { //Требуется хилл if ($pvr['mpTr'] < $pvr['mp']) { $pvr['mp'] = $pvr['mpTr']; } $pvr['mpSee'] = '+' . $pvr['mp']; $pvr['mpNow'] += $pvr['mp']; } if ($pvr['mpNow'] > $pvr['mpAll']) { $pvr['mpNow'] = $pvr['mpAll']; } elseif ($pvr['mpNow'] < 0) { $pvr['mpNow'] = 0; } if ($pvr['mpSee'] == 0) { $pvr['mpSee'] = '--'; } $this->stats[$this->uids[$pvr['uid']]]['mpNow'] = $pvr['mpNow']; $this->users[$this->uids[$pvr['uid']]]['mpNow'] = $pvr['mpNow']; mysql_query('UPDATE `stats` SET `mpNow` = ' . $this->stats[$this->uids[$pvr['uid']]]['mpNow'] . ' WHERE `id` = ' . $pvr['uid']); $pvr['text'] = $this->addlt(1, 21, $this->users[$this->uids[$pvr['uid']]]['sex']); $pvr['text2'] = '{tm1} ' . $pvr['text'] . ' на ' . $pvr['mpSee'] . ' [' . $pvr['mpNow'] . '/' . $pvr['mpAll'] . '] (Мана)'; $this->priemAddLog($id, 1, 2, $pvr['uid'], 0, '' . $pvr['x'] . '', $pvr['text2'], ($this->hodID) ); unset($pvr); } if (isset($this->rehodeff[$eff[$i]['id']])) { $eff[$i]['hod'] = $this->rehodeff[$eff[$i]['id']]; } if ($eff[$i]['hod'] > 0) { $this->stats[$this->uids[$this->atacks[$id]['uid' . $j]]]['effects']['hod'] = $eff[$i]['hod']; mysql_query('UPDATE `eff_users` SET `hod` = "' . $eff[$i]['hod'] . '" WHERE `id` = "' . $eff[$i]['id'] . '" LIMIT 1'); } else { //удаляем прием if ($eff[$i]['v2'] > 0) { if ($j == 1) { $jn = 2; } else { $jn = 1; } $this->delPriem($eff[$i], $this->users[$this->uids[$this->atacks[$id]['uid' . $j]]], 3, $this->atacks[$id]['uid' . $jn]); } } } elseif ($eff[$i]['timeUse'] == 77 && $eff[$i]['hod'] == -2) { $eff[$i]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $eff[$i]['v2'] . '" LIMIT 1')); $priem->hodUsePriem($eff[$i], $eff[$i]['priem']); } else { $eff[$i]['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $eff[$i]['v2'] . '" LIMIT 1')); if (isset($eff[$i]['priem']['minmana']) && round($eff[$i]['priem']['minmana'] * $eff[$i]['x']) != 0) { //Отнимаем ману у того кто кастовал $priem->minMana($eff[$i]['user_use'], round($eff[$i]['priem']['minmana'] * $eff[$i]['x'])); if ($this->stats[$this->uids[$eff[$i]['user_use']]]['mpNow'] <= 0) { $eff[$i]['hod'] = 0; if (isset($this->rehodeff[$eff[$i]['id']])) { $eff[$i]['hod'] = $this->rehodeff[$eff[$i]['id']]; } if ($eff[$i]['v2'] > 0) { if ($j == 1) { $jn = 2; } else { $jn = 1; } $this->delPriem($eff[$i], $this->users[$this->uids[$this->atacks[$id]['uid' . $j]]], 3, $this->atacks[$id]['uid' . $jn]); } } } elseif ($eff[$i]['timeUse'] > 100 && $eff[$i]['hod'] > -1 && $c['effz'] > 0) { $eff[$i]['hod']--; if (isset($this->rehodeff[$eff[$i]['id']])) { $eff[$i]['hod'] = $this->rehodeff[$eff[$i]['id']]; } if ($eff[$i]['hod'] > 0) { $this->stats[$this->uids[$this->atacks[$id]['uid' . $j]]]['effects']['hod'] = $eff[$i]['hod']; mysql_query('UPDATE `eff_users` SET `hod` = "' . $eff[$i]['hod'] . '" WHERE `id` = "' . $eff[$i]['id'] . '" LIMIT 1'); } else { //удаляем прием if ($eff[$i]['v2'] > 0) { if ($j == 1) { $jn = 2; } else { $jn = 1; } $this->delPriem($eff[$i], $this->users[$this->uids[$this->atacks[$id]['uid' . $j]]], 3, $this->atacks[$id]['uid' . $jn]); } } } } } $i++; } $j++; } // // //Проверяем if ($c['propsk_die'] > 0 && $this->info['razdel'] == 0 && $this->info['dn_id'] == 0 && $this->info['izlom'] == 0) { $cn1 = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `battle_out` WHERE `battle` = "' . $this->info['id'] . '" AND `uid1` = "' . $this->atacks[$id]['uid1'] . '" LIMIT 1')); $cn2 = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `battle_out` WHERE `battle` = "' . $this->info['id'] . '" AND `uid1` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 1')); if ($cn1[0] > 3) { // $pvr['text2'] = '{tm1} Персонаж {u1} был убит из-за большого количества пропусков хода.'; $this->priemAddLog($id, 1, 2, $this->atacks[$id]['uid1'], 0, '', $pvr['text2'], ($this->hodID) ); unset($pvr); mysql_query('UPDATE `stats` SET `hpNow` = 0 WHERE `id` = "' . $this->atacks[$id]['uid1'] . '" LIMIT 1'); } if ($cn2[0] > $c['propsk_die']) { $pvr['text2'] = '{tm1} Персонаж {u1} был убит из-за большого количества пропусков хода.'; $this->priemAddLog($id, 1, 2, $this->atacks[$id]['uid2'], 0, '', $pvr['text2'], ($this->hodID) ); 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); // unset($old_s1, $old_s2); // } //Сохранение данные private function save_stats($uid) { mysql_query('UPDATE `stats` SET `hpNow` = ' . $this->stats[$this->uids[$uid]]['hpNow'] . ', `mpNow` = ' . $this->stats[$this->uids[$uid]]['mpNow'] . ', `tactic1` = ' . $this->users[$this->uids[$uid]]['tactic1'] . ', `tactic2` = ' . $this->users[$this->uids[$uid]]['tactic2'] . ', `tactic3` = ' . $this->users[$this->uids[$uid]]['tactic3'] . ', `tactic4` = ' . $this->users[$this->uids[$uid]]['tactic4'] . ', `tactic5` = ' . $this->users[$this->uids[$uid]]['tactic5'] . ', `tactic6` = ' . $this->users[$this->uids[$uid]]['tactic6'] . ', `tactic7` = ' . $this->users[$this->uids[$uid]]['tactic7'] . ', `enemy` = ' . $this->users[$this->uids[$uid]]['enemy'] . ', `battle_yron` = ' . $this->users[$this->uids[$uid]]['battle_yron'] . ', `last_hp` = ' . $this->users[$this->uids[$uid]]['last_hp'] . ', `battle_exp` = ' . $this->users[$this->uids[$uid]]['battle_exp'] . ', `priems_z` = ' . $this->users[$this->uids[$uid]]['priems_z'] . ' WHERE `id` = ' . $uid); } //Выводим лог боя public function lookLog() { global $u; $hodID = mysql_fetch_array(mysql_query('SELECT `id_hod` FROM `battle_logs` WHERE `battle` = ' . $this->info['id'] . ' ORDER BY `time`')); if ($hodID['id_hod'] <= 1) { $u->info['alog'] = 0; } if ($_POST['idlog'] < 1) { $_POST['idlog'] = 0; } $talog = mysql_fetch_array(mysql_query('SELECT `alog` FROM `stats` WHERE `id` = ' . $u->info['id'])); $sp = mysql_query('SELECT `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` FROM `battle_logs` WHERE `battle` = ' . $this->info['id'] . ' AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC'); if (isset($sp) && $this->info['team_win'] != -1) { $sp = mysql_query('SELECT `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` FROM `battle_logs_save` WHERE `battle` = ' . $this->info['id'] . ' AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC'); } $jin = 0; $forYou2 = 0; $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'])); $sp = mysql_query('SELECT `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` FROM `battle_logs` WHERE `battle` = ' . $this->info['id'] . ' AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC'); if (isset($sp) && $this->info['team_win'] != -1) { $sp = mysql_query('SELECT `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` FROM `battle_logs_save` WHERE `battle` = ' . $this->info['id'] . ' AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC'); } $jin = 0; $forYou2 = 0; while ($pl = mysql_fetch_array($sp)) { if ($jin == 0) { $u->info['alog'] = $pl['id_hod']; } $jin++; $rt = $pl['text']; $pl['vars'] = str_replace('^^^^', 'rvnO', $pl['vars']); $rt = str_replace('{tm1}', '' . date('H:i', $pl['time']) . '', $rt); $rt = str_replace('{tm2}', '' . date('H:i', $pl['time']) . '', $rt); $rt = str_replace('{tm3}', '' . date('d.m.Y H:i', $pl['time']) . '', $rt); $rt = str_replace('{tm4}', '' . date('d.m.Y H:i', $pl['time']) . '', $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; } mysql_query('UPDATE `stats` SET `alog`=' . $u->info['alog'] . ' WHERE `id` =' . $u->info['id']); $js .= 'id_log=' . $pll . ';'; return $js; } //Новый лог Мой Лог public function lookmLog() { $u = user::start(); $js = ''; $pll = 0; if ($this->info['type'] != 9) { $hodID = mysql_fetch_array(mysql_query('SELECT `id`,`id_hod` FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` LIMIT 1')); if ($hodID['id_hod'] <= 1) { $u->info['mlog'] = 0; } if (isset($hodID['id']) && $this->info['team_win'] != -1) { $hodID = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_logs_save` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` LIMIT 1')); } if (isset($hodID['id'])) { $hodID = $hodID['id']; } else { $hodID = 0; } $tmlog = mysql_fetch_array(mysql_query('SELECT `mlog` FROM `stats` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1')); $spm = mysql_query('SELECT `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $tmlog['mlog'] . ' AND `vars` LIKE "%' . $u->info['login'] . '%" ORDER BY `id` DESC'); if (isset($spm) && $this->info['team_win'] != -1) { $spm = mysql_query('SELECT `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` FROM `battle_logs_save` WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $tmlog['mlog'] . ' AND `vars` LIKE "%' . $u->info['login'] . '%" ORDER BY `id` DESC'); } $jin = 0; $forYou2 = 0; 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}', '' . date('H:i', $plm['time']) . '', $rt); $rt = str_replace('{tm2}', '' . date('H:i', $plm['time']) . '', $rt); $rt = str_replace('{tm3}', '' . date('d.m.Y H:i', $plm['time']) . '', $rt); $rt = str_replace('{tm4}', '' . date('d.m.Y H:i', $plm['time']) . '', $rt); $plm['text'] = $rt; unset($rt); if ($pll < $plm['id']) { $pll = $plm['id']; } $js = 'add_mlog(' . $plm['id'] . ',' . $forYou2 . ',"' . $plm['text'] . '",' . $plm['id_hod'] . ',0,0,"' . str_replace('"', '"', $plm['vars']) . '");' . $js; } $js .= 'id_mlog=' . $pll . ';'; mysql_query('UPDATE `stats` SET `mlog`=' . $u->info['mlog'] . ' WHERE `id` =' . $u->info['id']); } return $js; } //====================== //Добавляем в лог public function add_log($mass) { if ($mass['time'] != '' && $mass['text'] != '') { mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`type`) VALUES (' . $mass['time'] . ',' . $mass['battle'] . ',' . $mass['id_hod'] . ',' . $mass['text'] . ',' . $mass['vars'] . ',' . $mass['type'] . ')'); if (rand(2, 10) == 10) { $this->get_comment(); } } } ///Комментатор private function get_comment() { $boycom = [ 'А танцуешь ты лучше.', 'А мы что, в прятки тут играем?', 'А вы разве пингвинов никогда не видели?', 'А, ведь когда-то, вы были красивыми… А теперь? Ну и рожи! Жуть!', 'А потом еще труп пинать будут.', 'А я вчера ночью за соседями подглядывал. Они точно так же кувыркались', 'А ведь вы живых людей дубасите...', 'А вот я вчера в зоопарке был...', 'А вы в стройбате не служили?', 'А вы видели, чтобы так на улице делали!?', 'А вы знали что ёжики размножаются в интернете?', 'А жить-то, как хочется:', 'А из-за чего вы собственно дерётесь?', 'А чего ржёте, вы ещё остальных не видели', 'А что произойдёт если ты испугаешся до полусмерти дважды?!', 'Больше так не делай. Ты же не садист?', 'Без комментариев...', 'Больно ведь!', 'Быстро ты за монитор спрятался!', 'Все хотят попасть в рай, но никто не хочет умирать!', 'Вчера с такой девчонкой познакомился.', 'Всего 5 минут знакомы, а дерутся, словно супруги с 20-ти летним стажем...', 'Все. Я так больше не могу.', 'В конце концов, кто-то победит?', 'Вы чего, с дерева упали?', 'Возятся как сонные мухи... давайте я вам лучше анекдот расскажу: ...', 'Вот видишь, как полезно чистить зубы на ночь?', 'Вот вы все руками махаете, а за вами уже очередь', 'Вот попадёте вы в плен и вас там будут долго бить. Но вы ничего не расскажете... и не потому, что вы такой стойкий, просто вы ничего не знаете', 'Вы бы лучше пошли потренировались!', 'Вы все еще разминаетесь? Позовите, когда кости в муку друг другу разминать будете.', 'Вы же бойцы! Имейте совесть!', 'Гаси недоумка!', 'Да, если бы я смог это остановить, то получил бы нобелевскую премию `За мир` ', 'Да куда они бьют?!', 'Давайте быстрее! За вами уже очередь образовалась.', 'Давайте обойдемся сегодня таймаутом. А? А то мне уже кошмары скоро будут сниться.', 'Дерутся как девчонки!', 'Дети, посмотрите налево... Ой!.. Нет, туда лучше не смотреть.', 'Если так будет продолжаться, то скоро мы заснем!', 'Если бы у меня было кресло-качалка, я бы в нём качался...', 'Если вы что-то сказать хотите, то лучше молчите :)', 'Жестокость не порок.', 'Жизнь вне нашего клуба - это пустая трата кислорода!!!', 'Жми! Дави! Кусай! Царапай!', 'За такие бои надо в хаос отправлять!', 'Знаете откуда в комиссионном магазине столько вещей? Это я после ваших гулянок собираю и сдаю туда. Иногда вместе с частями тела, застрявшими в них.', 'Здесь люди так близки друг к другу. Просто иначе ударить нельзя.', 'И пролитая кровь еще пульсирует...', 'Инвалидов развелось...', 'Какой бой!!!', 'Кто!? Кто здесь?!', 'Кто вас этому научил?', 'Кузнечик, блин...', 'Куплю импортный проигрыватель грампластинок.', 'Лошадью ходи!', 'Лучше враг, чем друг - враг.', 'Ладно, вы тут пока друг друга за волосы таскайте, а я пойду, пообедаю.', 'Мне ваш балет уже надоел!', 'Может, начнется-таки настоящий бой???', 'Мысли лезут в голову изнутри, а удары снаружи.', 'Ну и где ваши коронные удары? Где живописные падения я спрашиваю!', 'Ну, нельзя же так наотмашь лупить!', 'Надо раньше было думать, теперь смертельно поздно...', 'На такое зрелище билеты продавать можно. Народ ухохочется!', 'Нет! Не надо драки! А... ладно деритесь, все равно не умеете.', 'Нет, ну должен быть повод, должен же быть повод?', 'Нет, я отказываюсь это комментировать!', 'Не таких обламывали!', 'Ну выпили вы рюмку, ну две... ну литр, ну два... так зачем же после этого драку затевать?!', 'Ну и кто за этот погром платить будет?', 'Ну и оскал у вас. Из вашей улыбки кастеты делать можно.', 'Ну, что же ты..? Не печалься. Выше голову, так по ней удобней попасть.', 'Ничего... Блок тоже удар.', 'Обернись!!!.... Поздно...', 'Ого! Научите меня так не делать.', 'Осторожно! Сделаешь дырочку, уже не запломбируешь!', 'Оно вам надо???', 'Обычное дело...там что-то отклеилось.', 'Ой, и заболтался я с вами...', 'Он же не промахнётся если ты не отойдёшь!', 'По-моему, кому-то светит инвалидность.', 'Подкинь ему грабли, на которые он еще не наступал.', 'Прав был кот Леопольд, давайте жить дружно?', 'При ударе в живот нарушается кислотно-щелочной баланс.', 'Проверь, не торчит ли у тебя нож из живота.', 'Перестаньте мне орать!', 'Подкинь ему грабли, на которые он еще не наступал.', 'Прыгают тут как блохи... Все, я пошел за дихлофосом!', 'Разбудите меня когда эта порнография закончится...', 'Ребенок сильнее ударил бы!', 'Славно вмазал!', 'Славно они веселятся', 'Смотрю вот на вас, и слезы наворачиваются.', 'Сначала учатся ходить, а потом только в драку лезут.', 'Так они друг другу что-нибудь сломают.', 'Так ты ему все кости переломаешь!', 'У меня в подъезде точно так же соседа отмудохали', 'Убогих развелось...', 'Ух ты, какой прыткий!', 'Фашист!! Надо ж, так по больному месту врезать...', 'Хватит бить его об угол моей кабинки! Мне же потом ее чинить.', 'Хулиганы, прекратите немедленно!', 'Хочешь, подскажу, куда он ударит?', 'Хорошо, что у меня ловкости больше чем у вас всех, а то б вы и меня в инвалидную коляску посадили бы.', 'Хороший бой!', 'Хороший удар!', 'Хиляк-разрядник!', 'Что ты его за волосы схватил?! Отпусти немедленно!', 'Щас я вас настигну, вот тогда мы и похохочем', 'Это была какая-то неизвестная мне техника...', 'Это же противник, а не глина! Хватит мяться!', 'Это не бой, это издевательское избиение.', 'Это поубавит спеси', 'Это и был твой план `Б` ?', 'Это была какая-то неизвестная мне техника...', 'Я же предупреждал, - будет больно.', 'Я не страдаю безумием. Я наслаждаюсь им каждую минуту :)', 'Я красивый, я сильный, я умный, я добрый. А вот вы? Вы себя-то видели?!', 'Я тоже умею драться, но не буду...', '(тревожно озираясь) я вам по секрету скажу... за вами наблюдают!', '<вырезано цензурой> после боя я этих <вырезано цензурой> обоих в <вырезано цензурой> и <вырезано цензурой>', '<вырезано цензурой> каратисты фиговы', ]; if (rand(1, 12) !== 12) { return; } shuffle($boycom); $this->add_log([ 'time' => time(), 'battle' => $this->info['id'], 'id_hod' => $this->hodID, 'text' => '{tm1} Комментатор: ' . current($boycom) . '', 'vars' => 'time1=' . time(), 'zona1' => '', 'zonb1' => '', 'zona2' => '', 'zonb2' => '', 'type' => '1', ]); } //Расчет типа удара от оружия public function weaponTx($item) { if (!isset($item['id'])) { $i = 1; while ($i <= 4) { $itm['tya' . $i] = 1; $i++; } } $itm = $this->lookStats($item['data']); $t[0]['z'] = 0; $t[0]['t'] = 0; //колящий урон $t[1]['z'] = round(0 + $itm['tya1']); $t[1]['t'] = 1; //рубящий урон $t[2]['z'] = round(0 + $itm['tya2']); $t[2]['t'] = 2; //дробящий урон $t[3]['z'] = round(0 + $itm['tya3']); $t[3]['t'] = 3; //режущий урон $t[4]['z'] = round(0 + $itm['tya4']); $t[4]['t'] = 4; //урон огня $t[5]['z'] = round(0 + $itm['tym1']); $t[5]['t'] = 5; //урон воздуха $t[6]['z'] = round(0 + $itm['tym2']); $t[6]['t'] = 6; //урон воды $t[7]['z'] = round(0 + $itm['tym3']); $t[7]['t'] = 7; //урон земли $t[8]['z'] = round(0 + $itm['tym4']); $t[8]['t'] = 8; //урон света $t[9]['z'] = round(0 + $itm['tym5']); $t[9]['t'] = 9; //урон тьмы $t[10]['z'] = round(0 + $itm['tym6']); $t[10]['t'] = 10; //урон серой магией $t[11]['z'] = round(0 + $itm['tym7']); $t[11]['t'] = 11; $tpt = $t[0]['z']; $tpmin = $t[0]; $tpmax = $t[0]; $i = 1; while ($i <= 11) { if ($t[$i]['z'] > $tpt) { $tpt = $t[$i]['z']; $tpmax = $t[$i]; $ii = $i; } $i++; } $t[$ii]['z'] = 0; $tpt = $t[0]['z']; $i = 1; while ($i <= 11) { if ($t[$i]['z'] > $tpt) { $tpt = $t[$i]['z']; $tpmin = $t[$i]; } $i++; } $setclass = rand(1, 100); if ($setclass > $tpmax['z']) { $tp = $tpmin['t']; } else { $tp = $tpmax['t']; } return $tp; } //Расчет урона от оружия public function weaponAt22($item, $st = 0) { if (empty($item['data'])) { return []; } $itm = $this->lookStats($item['data']); //начинаем расчет урона $min = $itm['sv_yron_min'] + $itm['yron_min'] + $st['minAtack']; $max = $itm['sv_yron_max'] + $itm['yron_max'] + $st['maxAtack']; return [$min, $max]; } //Гамс //Расчет защиты private function zago($v) { return round((1 - (pow(0.5, (max($v, 1700) / 399.51)))) * 100, 2); } //Расчет защиты (магия) public function zmgo($v) { return (1 - (pow(0.5, ($v / 250)))) * 100; } /** * @param $st1 * @param $st2 * @param $u1 * @param $u2 * @param $level * @param $level2 [not used?] * @param $type * @param $min_yron * @param $max_yron * @param $min_bron [not used?] * @param $max_bron [not used?] * @param $vladenie * @param $power_yron * @param $power_krit * @param $zashita * @param $ozashita [not used?] * @param $proboi * @param $weapom_damage [not used?] * @param $weapom_min * @param $weapom_max * @param $za_proc [not used?] * @param $zm_proc [not used?] * @param $zashitam [not used?] * @param $ozashitam [not used?] * @param $wp_type * @param $witm * @return array */ public function yrn( $st1, $st2, $u1, $u2, $level, $level2 = null, $type, $min_yron, $max_yron, $min_bron = null, $max_bron = null, $vladenie, $power_yron, $power_krit, $zashita, $ozashita = null, $proboi, $weapom_damage = null, $weapom_min, $weapom_max, $za_proc = null, $zm_proc = null, $zashitam = null, // pzm тут! $ozashitam = null, $wp_type, $witm ) { global $u; //Поправка if ($zashita < 1) { $zashita = 1; } if ($min_yron < 1) { $min_yron = 1; } if ($max_yron < 1) { $max_yron = 1; } if (!isset($type) || $type == '') { $type = 12; } //Параметры для возврвата $p = [ 'Y' => 0, 'B' => [0 => 0, 1 => 0, 'rnd' => false], 'L' => $level, 'W' => [$weapom_min, $weapom_max, 'rnd' => false], //минимальный урон //максимальный урон добавочный 'U' => $vladenie, //владение оружием 'M' => $power_yron, //мощность урона 'K' => $power_krit, //мощность крита 'S' => 0, //влияние статов на проф.урон 'T' => 1, //Кф. оружия 'iT' => 1, //Итоговый доп. Кф. оружия /* (S) - влияние наших статов на профильный урон Колющий: S = Сила * 0,3 + Ловкость * 0,7 Рубящий: S = Сила * 0,5 + Ловкость * 0,25 + Интуиция * 0,25 Дробящий: S = Сила * 1 Режущий: S = Сила * 0,3 + Интуиция * 0,7 */ ]; //Умножитель 1.33 для двуручки и 1.00 для одной руки $witmdata = $this->lookStats($witm['data']); //Расчет типа урона if ($wp_type == 18) { $r['type'] = 1; } elseif ($wp_type == 19) { $r['type'] = 2; } elseif ($wp_type == 20) { $r['type'] = 3; } elseif ($wp_type == 21) { $r['type'] = 4; } else { $r['type'] = 0; } //ТУТ Профильный урон //колющий if ($r['type'] == 1) { $p['S'] = $st1['s1'] * 0.25 + $st1['s2'] * 0.75; $p['U'] = $st1['a1'] * 1.00; //кинжалы //рубящий } elseif ($r['type'] == 2) { $p['S'] = $st1['s1'] * 1.20; $p['U'] = $st1['a2'] * 1.00; //топоры //дробящий } elseif ($r['type'] == 3) { $p['S'] = $st1['s1'] * 0.5 + $st1['s4'] * 1.00; $p['U'] = $st1['a3'] * 1.00; //дубины //режущий } elseif ($r['type'] == 4) { $p['S'] = $st1['s3'] * 1.00; $p['U'] = $st1['a4'] * 1.00; //мечи //Магиечески } elseif ($r['type'] >= 5 && $r['type'] < 12) { $p['S'] = $st1['s1'] * 0.5 + $st1['s2'] * 0.5; $p['U'] = $st1['mg' . ($r['type'] - 4)] * 1.00; //магией $p['Mage'] = true; } else { $p['S'] = 0; $p['U'] = 0; // для кулака(нужно переписывать } $r['bron']['rnd'] = rand($r['bron'][0], $r['bron'][1]); //Остальные расчеты (коэфицент) $p['B'][0] = 2 + $level + $st1['s1'] - round($st1['s1'] / 5); $p['B'][1] = $p['B'][0] + 3; $p['B']['rnd'] = rand($p['B'][0], $p['B'][1]); $p['W']['rnd'] = rand($p['W'][0], $p['W'][1]); //Обычный урон if ($r['type'] == 12) { $r['min'] = ($p['B'][0] + $weapom_min) * $p['T'] * (1 + $p['M'] / 100); $r['max'] = ($p['B'][1] + $weapom_max) * $p['T'] * (1 + $p['M'] / 100); } else { $r['min'] = (($p['B'][0] + $p['S'] * 2 + $weapom_min * 2 + $p['U'] * 2) * $p['T']) * (1 + $p['M'] / 100); $r['max'] = (($p['B'][1] + $p['S'] * 2 + $weapom_max * 2 + $p['U'] * 2) * $p['T']) * (1 + $p['M'] / 100); } $r['bRND'] = $p['B']['rnd']; $r['Kmin'] = ceil((2 + ($p['K'] / 100)) * $r['min']); $r['Kmax'] = ceil((2 + ($p['K'] / 100)) * $r['max']); //Расчет брони //для обычного if ($r['type'] < 5 || $r['type'] == 12) { $r['min_abron'] = round($r['min'] * 0.05); $r['max_abron'] = round($r['max'] * 0.05); if ($proboi != 0) { $r['bron']['rndold'] = $r['bron']['rnd']; } //Новые исправления в броне $r['Kmin'] -= $r['bron']['rnd'] * 2; //было умножить на 2 $r['Kmax'] -= $r['bron']['rnd'] * 2; //было умножить на 2 $r['min'] -= $r['bron']['rnd']; //не было деления ни на чо. $r['max'] -= $r['bron']['rnd']; //не было деления ни на чо. } //Расчет защиты (не более 80%) if ($r['type'] < 5 || $r['type'] == 12) { $r['min'] = round($r['min'] / 100 * (100 - $this->zago($st2['za']))); $r['max'] = round($r['max'] / 100 * (100 - $this->zago($st2['za']))); $r['Kmin'] = round($r['Kmin'] / 100 * (100 - $this->zago($st2['za']))); $r['Kmax'] = round($r['Kmax'] / 100 * (100 - $this->zago($st2['za']))); } else { $r['min'] = round($r['min'] / 100 * (100 - $this->zmgo($st2['zm']))); $r['max'] = round($r['max'] / 100 * (100 - $this->zmgo($st2['zm']))); $r['Kmin'] = round($r['Kmin'] / 100 * (100 - $this->zmgo($st2['zm']))); $r['Kmax'] = round($r['Kmax'] / 100 * (100 - $this->zmgo($st2['zm']))); } $r['min'] = round($r['min']); $r['max'] = round($r['max']); $r['Kmin'] = round($r['Kmin']); $r['Kmax'] = round($r['Kmax']); $min_yrn = 0; //% if ($u1['clone'] > 0) { $min_yrn = 75; } $r['min'] -= floor($r['min'] / 100 * $min_yrn); $r['max'] -= floor($r['max'] / 100 * $min_yrn); $r['Kmin'] -= floor($r['Kmin'] / 100 * ($min_yrn)); $r['Kmax'] -= floor($r['Kmax'] / 100 * ($min_yrn)); $r['min_'] -= floor($r['min_'] / 100 * $min_yrn); $r['max_'] -= floor($r['max_'] / 100 * $min_yrn); $r['Kmin_'] -= floor($r['Kmin_'] / 100 * ($min_yrn)); $r['Kmax_'] -= floor($r['Kmax_'] / 100 * ($min_yrn)); $defd = mysql_fetch_array(mysql_query('SELECT SUM(`vals`) FROM `battle_actions` WHERE `btl` = ' . $this->info['id'] . ' AND `vars` = "use_defteam' . $u2['team'] . '" LIMIT 1')); if ($defd[0] > 100) { $defd[0] = 100; } $defd = 0 + $defd[0]; $powd = mysql_fetch_array(mysql_query('SELECT SUM(`vals`) FROM `battle_actions` WHERE `btl` = ' . $this->info['id'] . ' AND `vars` = "use_powteam' . $u1['team'] . '" LIMIT 1')); if ($powd[0] > 100) { $powd[0] = 100; } $powd = 0 + $powd[0]; $defd = $defd - $powd; $r['min'] -= floor($defd); $r['max'] -= floor($defd); $r['Kmin'] -= floor($defd * 2); $r['Kmax'] -= floor($defd * 2); $r['min_'] -= floor($defd); $r['max_'] -= floor($defd); $r['Kmin_'] -= floor($defd * 2); $r['Kmax_'] -= floor($defd * 2); $r['min'] += $st1['maxAtack']; $r['max'] += $st1['maxAtack']; $r['Kmin'] += $st1['maxAtack'] * 2; $r['Kmin'] += $st1['maxAtack'] * 2; if ($r['min'] < 1) { $r['min'] = 1; } if ($r['max'] < 1) { $r['max'] = 1; } if ($r['Kmin'] < 2) { $r['Kmin'] = 2; } if ($r['Kmax'] < 2) { $r['Kmax'] = 2; } if ($r['Kmin_'] < 2) { $r['Kmin_'] = 2; } if ($r['Kmin_'] < 2) { $r['Kmax_'] = 2; } $r['m_k'] = $r['Kmax']; return $r; } //Завершение действия приема // pl прием // u1 инфа юзера // t1 тип снятия // 99 = очищение кровью // u2 //$this->delPriem($pd[$k2][1][$k],${'p'.$k2},1,${'p'.$k2jn}); public $del_val = []; public function delPriem( $pl, $u1, $t = 1, $u2 = false, $rznm = 'Очиститься Кровью' ) { global $u; if (isset($pl['priem']['id']) && !isset($this->del_val['eff'][$pl['priem']['id']])) { 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']); } $vLog = 'time1=' . time() . '||s1=' . $u1['sex'] . '||t1=' . $u1['team'] . '||login1=' . $u1['login']; if (isset($u2['id'])) { $vLog .= '||s2=' . $u2['sex'] . '||t2=' . $u2['team'] . '||login2=' . $u2['login']; } $mas1 = [ 'time' => time(), 'battle' => $this->info['id'], 'id_hod' => $this->hodID, 'text' => '', 'vars' => $vLog, 'zona1' => '', 'zonb1' => '', 'zona2' => '', 'zonb2' => '', 'type' => '1', ]; if ($t == 4) { $mas1['id_hod']++; $t = 2; } if ($t == 1) { $mas1['id_hod']++; if ($pl['priem']['file'] != '0') { if (file_exists('../../_incl_data/class/priems/' . $pl['priem']['file'] . '.php')) { require('priems/' . $pl['priem']['file'] . '.php'); } } elseif ($pl['priem']['file3'] != '0') { if (file_exists('../../_incl_data/class/priems/' . $pl['priem']['file3'] . '.php')) { require('priems/' . $pl['priem']['file3'] . '.php'); } } else { $mas1['text'] = '{tm1} {u1} {1x16x0} прием "' . $pl['name'] . '".'; $this->del_val['eff'][$pl['priem']['id']] = true; } } elseif ($t == 2) { $mas1['text'] = '{tm1} У персонажа {u1} закончилось действие магии "' . $pl['name'] . '".'; } elseif ($t == 99) { $mas1['text'] = '{u1} Снял эфект "' . $pl['name'] . '" с помощью ' . $rznm . ' .'; } else { if ($t == 100) { $mas1['id_hod']++; } $mas1['text'] = '{tm1} Закончилось действие эффекта "' . $pl['name'] . '" для {u1}.'; } if ($pl['priem']['id'] != 24) { $this->add_log($mas1); } $this->stats[$this->uids[$pl['uid']]] = $u->getStats($pl['uid'], 0, 0, false, false, true); } } //Разбираем массив со статами public function lookStats($m) { return json_decode(str_replace(['=', '|'], ['":', ',"'], '{"' . $m . '}'), true); } //Расчет МФ /** * @param $type * @param $mf * @param $lvl1 [not used?] * @param $lvl2 [not used?] * @return int */ private function mfs($type, $mf, $lvl1 = null, $lvl2 = null) { $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: //Контрудар //$mf['a'] защита //$mf['b'] атака if ($mf['a'] > 0) { if ($mf['b'] > 0) { $rval = round($mf['a'] - ($mf['b'] / 2)); } else { $rval = $mf['a']; } } if ($rval < 1) { $rval = 0; } if ($rval > 75) { $rval = 75; } break; } return $this->get_chanse($rval) ? 1 : 0; } public function get_chanse($percent) { if ($percent <= 0) { return false; } return mt_rand(1, 100) <= max($percent, 100); } //Смена противника public function smena($uid, $auto = false, $lastdie = false) { global $u; if (($auto || $u->info['smena'] <= 0) && !$auto) { return 'У вас закончились смены противника'; } if ($this->stats[$this->uids[$u->info['id']]]['hpNow'] < 1) { return 'Для вас поединок закончен, ожидайте пока завершат другие...'; } if ( !isset($this->uids[$uid]) || $uid == $u->info['id'] || $this->users[$this->uids[$uid]]['team'] == $this->users[$this->uids[$u->info['id']]]['team'] ) { return 'Нельзя сменить на выбранную цель []'; } if (isset($this->ga[$u->info['id']][$uid]) && !$lastdie) { return 'Нельзя сменить на выбранную цель!'; } if (ceil($this->stats[$this->uids[$uid]]['hpNow']) < 1) { return 'Нельзя сменить, противник уже мертв'; }//меняем противника if (!$auto) { $u->info['smena']--; } mysql_query('UPDATE `stats` SET `enemy` = ' . $uid . ',`smena` = ' . $u->info['smena'] . ' WHERE `id` = ' . $u->info['id']); $u->info['enemy'] = $uid; $this->users[$this->uids[$uid]]['smena'] = $u->info['smena']; $this->users[$this->uids[$u->info['id']]]['enemy'] = $uid; return 1; } //авто-смена противника //ТУТ баг выбора public function autoSmena() { global $u; $ms = []; $ms_all = []; $ms_ansf = []; $i = 0; $j = 0; $z = 0; while ($i < count($this->users)) { if (isset($this->users[$i]) && $this->users[$i]['id'] != $u->info['id'] && $this->users[$i]['team'] != $u->info['team'] && $this->stats[$i]['hpNow'] > 0 && -($u->info['enemy']) != $this->users[$i]['id']) { if (!isset($this->ga[$u->info['id']][$this->users[$i]['id']])) { $ms[$j] = $this->users[$i]['id']; $j++; } if (!isset($this->uids[(-($u->info['enemy']))])) { $ms_all[] = $this->users[$i]['id']; } if (isset($this->ga[$this->users[$i]['id']][$u->info['id']])) { $ms_ansf[$z] = $this->users[$i]['id']; $z++; } } $i++; } $msh = []; if ($j == 0 && $z == 0) { $enemydie = 0; if (isset($this->stats[$this->uids[$u->info['enemy']]])) { $u->info['enemy'] = 0; $enemydie = 1; } if ((!isset($this->uids[(-($u->info['enemy']))]) || $this->stats[$this->uids[(-($u->info['enemy']))]]['hpNow'] < 1) && ($u->info['enemy'] < 0 || $enemydie == 1)) { $i = 0; $j = 0; while ($i < count($this->users)) { if (isset($this->users[$i]) && $this->users[$i]['id'] != $u->info['id'] && $this->users[$i]['team'] != $u->info['team'] && $this->stats[$i]['hpNow'] >= 1 && -($u->info['enemy']) != $this->users[$i]['id']) { $ms[$j] = $this->users[$i]['id']; $msh[$ms[$j]] = true; $j++; } $i++; } } } $ms = $ms[rand(0, $j - 1)]; $ms_ansf = $ms_ansf[rand(0, $z - 1)]; if ($z > 0) { $this->smena($ms_ansf, true); } elseif ($j > 0) { if (isset($msh[$ms])) { $this->smena($ms, true, true); } else { $this->smena($ms, true); } } else { if ($u->info['enemy'] < 0) { $smnr5 = $this->smena(-($u->info['enemy']), true); unset($smnr5); } } } //Действия бота (атака) private function botAtack($uid, $pl, $tp) { $test_atack = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_act` WHERE `battle` = "' . $this->info['id'] . '" AND (( `uid1` = "' . $pl . '" AND `uid2` = "' . $uid . '" ) OR ( `uid2` = "' . $pl . '" AND `uid1` = "' . $uid . '" )) LIMIT 1')); if ($tp == 1 && !isset($test_atack['id'])) { $test_uid = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $uid . '" AND `hpNow` >= 1 LIMIT 1')); $test_pl = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $pl . '" AND `hpNow` >= 1 LIMIT 1')); if (isset($test_uid['id']) && isset($test_pl['id']) && $test_uid['id'] != $test_pl['id']) { $a = rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5); $b = rand(1, 5); mysql_query('INSERT INTO `battle_act` (`battle`,`time`,`uid1`,`uid2`,`a1`,`b1`) VALUES ("' . $this->info['id'] . '","' . time() . '","' . $pl . '","' . $uid . '","' . $a . '","' . $b . '")'); } } elseif ($tp == 2) { //бот отвечает на удар $test_uid = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $uid . '" AND `hpNow` >= 1 LIMIT 1')); $test_pl = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . $pl['uid2'] . '" AND `hpNow` >= 1 LIMIT 1')); if (isset($test_uid['id']) && isset($test_pl['id']) && $test_uid['id'] != $test_pl['id']) { $bot = $this->users[$this->uids[$pl['uid2']]]; $na = ['id' => 0, 'a' => [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0], 'b' => 0]; $a222 = rand(1, 5) . '_' . rand(1, 5) . '_' . rand(1, 5) . '_' . rand(1, 5) . '_' . rand(1, 5); $a = explode('_', $a222); $i = 1; $na['id'] = time(); while ($i <= 5) { if (isset($a[$i - 1])) { $a[$i - 1] = intval(round($a[$i - 1])); if ($a[$i - 1] >= 1 && $a[$i - 1] <= 5) { $na['a'][$i] = $a[$i - 1]; } else { $na['a'][$i] = 0; } } $i++; } $na['b'] = rand(1, 5); //Проводим удар $this->atacks[$pl['id']]['a2'] = $a222; $this->atacks[$pl['id']]['b2'] = $na['b']; $this->startAtack($pl['id']); } } //unset($test_uid,$test_pl,$test_atack); } //Проверяем удары, приемы, свитки, зверей public function testActions() { //проверяем удары $m = mysql_query('SELECT * FROM `battle_act` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `id`'); $i = 0; $botA = []; $botR = []; while ($pl = mysql_fetch_array($m)) { //mysql_query('DELETE FROM `battle_act` WHERE `battle` = "'.$this->info['id'].'" AND `uid1` = "'.$pl['uid2'].'" AND `uid2` = "'.$pl['uid1'].'"'); $pluids = mysql_fetch_array(mysql_query('SELECT `hpNow` FROM `stats` WHERE (`id` = "' . $pl['uid1'] . '" AND `hpNow` <= 0) OR (`id` = "' . $pl['uid2'] . '" AND `hpNow` <= 0) LIMIT 1')); $pltest = mysql_fetch_array(mysql_query('SELECT * FROM `battle_act` WHERE `id` = "' . $pl['id'] . '" LIMIT 1')); if (isset($pltest['id'])) { if (isset($pluids['hpNow'])) { mysql_query('DELETE FROM `battle_act` WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); } elseif ($pl['time'] + $this->info['timeout'] > time()) { //удар не пропущен по тайму, просто заносим данные $this->atacks[$pl['id']] = $pl; $this->ga[$pl['uid1']][$pl['uid2']] = $pl['id']; $this->ag[$pl['uid2']][$pl['uid1']] = $pl['id']; if (isset($this->iBots[$pl['uid1']])) { //ударил бот и нет ответа $botA[$pl['uid1']] = $pl['id']; } elseif (isset($this->iBots[$pl['uid2']])) { //ударили бота и он не ответил $botR[$pl['uid2']] = $pl['id']; if ($this->users[$this->uids[$pl['uid2']]]['timeGo'] < time()) { $this->botAtack($pl['uid1'], $pl, 2); } } } else { //пропуск по тайму $pl['time'] = time(); if ($pl['a1'] == 0 && $pl['a2'] == 0) { //игрок 1 пропустил по тайму $pl['out1'] = time(); $pl['tout1'] = 1; //игрок 2 пропустил по тайму $pl['out2'] = time(); $pl['tout2'] = 1; } elseif ($pl['a1'] == 0) { //игрок 1 пропустил по тайму $pl['out1'] = time(); $pl['tout1'] = 1; } elseif ($pl['a2'] == 0) { //игрок 2 пропустил по тайму $pl['out2'] = time(); $pl['tout2'] = 1; } //наносим удар по пропуску $this->atacks[$pl['id']] = $pl; $this->startAtack($pl['id']); mysql_query('DELETE FROM `battle_act` WHERE `id` = ' . $pl['id']); } } } //тест удара if ($this->uAtc['id'] > 0 && $this->na == 1) { if ($pl['out1'] == 0 && $pl['out2'] == 0) { //Может разменяться только тот кто бил if ($pl['uid1'] == $u->info['id'] || $pl['uid2'] == $u->info['id']) { $this->addNewAtack(); } } else { $this->addNewAtack(); } } //тест использования заклятий //тест использования приемов //тест, бот делает удары while ($i < count($this->bots)) { $bot = $this->bots[$i]; if (isset($bot) && $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && $this->stats[$this->uids[$bot]]['pass'] != 'saintlucia') //Тут проверка на бота saintlucia { $j = 0; while ($j < count($this->users)) { if ($this->info['razdel'] == 0) { $tnbot = time() + rand(1, 1); } else { $tnbot = time() + rand(1, 2); } if ($this->users[$j]['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']); } elseif (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']); } } } else { //Удары между ботами // if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time() && $this->users[$j]['hpNow'] >= 1 && $this->users[$this->uids[$bot]]['hpNow'] >= 1) { $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['a1'] = rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5); $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['b1'] = rand(1, 5); $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['a2'] = rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5); $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['b2'] = rand(1, 5); $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['a1'] = rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5); $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['b1'] = rand(1, 5); $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['a2'] = rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5); $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['b2'] = rand(1, 5); if (isset($this->ga[$bot][$this->users[$j]['id']]) && $this->users[$j]['bot'] > 0) { if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time()) { $tnbot = time() + rand(3, 7); if ($this->info['type'] == 329) { // тестовый бой $tnbot = time() - 1; } $this->startAtack($this->ga[$bot][$this->users[$j]['id']]); $this->users[$this->uids[$bot]]['timeGo'] = $tnbot; mysql_query('UPDATE `stats` SET `timeGo` = ' . $tnbot . ' WHERE `id` = ' . $this->users[$this->uids[$bot]]['id']); } } 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']); } } } } } $j++; } } $i++; } } //Действия бота private function botAct($uid) { if ($this->users[$this->uids[$uid]]['bot'] > 0) { if ($this->users[$this->uids[$uid]]['online'] < time() - 3) { $this->users[$this->uids[$uid]]['online'] = time(); mysql_query('UPDATE `users` SET `online` = unix_timestamp() WHERE `id` = ' . (int)$uid); return true; } elseif (rand(0, 2) == 1) { return true; } } return false; } //получаем данные о поединке public function battleInfo($id) { $b = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = ' . (int)$id)); if (isset($b['id'])) { $this->hodID = mysql_fetch_array(mysql_query('SELECT `id_hod` FROM `battle_logs` WHERE `battle` = ' . $b['id'] . ' ORDER BY `id` DESC LIMIT 1')); if (isset($this->hodID['id_hod'])) { $this->hodID = $this->hodID['id_hod']; } else { $this->hodID = 0; } return $b; } else { return false; } } //наносим удар противнику public function addAtack() { global $js; if (isset($_POST['atack'], $_POST['block'])) { $na = [ 'id' => time(), 'a' => [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0], 'b' => intval(round($_POST['block'])), ]; $a = explode('_', $_POST['atack']); $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]; } else { $na['a'][$i] = 0; } } $i++; } if ($na['b'] < 1 || $na['b'] > 5) { $na['b'] = 0; } $this->uAtc = $na; $js .= 'testClearZone();'; } else { $this->e = 'Выберите зоны удара и блока'; } } //выделяем пользователей public function teamsTake() { global $u; $rs = ''; $ts = []; $tsi = 0; if ($this->info['id'] > 0) { //данные о игроках в бою $nxtlg = []; $t = mysql_query('SELECT `u`.`room`,`u`.`no_ip`,`u`.`twink`,`u`.`stopexp`,`u`.`id`,`u`.`notrhod`,`u`.`login`,`u`.`login2`,`u`.`sex`,`u`.`online`,`u`.`admin`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`,`u`.`level`,`u`.`battle`,`u`.`obraz`,`u`.`win`,`u`.`lose`,`u`.`nich`,`u`.`animal`,`st`.`stats`,`st`.`hpNow`,`st`.`mpNow`,`st`.`exp`,`st`.`dnow`,`st`.`team`,`st`.`battle_yron`,`st`.`battle_exp`,`st`.`enemy`,`st`.`battle_text`,`st`.`upLevel`,`st`.`timeGo`,`st`.`timeGoL`,`st`.`bot`,`st`.`lider`,`st`.`btl_cof`,`st`.`tactic1`,`st`.`tactic2`,`st`.`tactic3`,`st`.`tactic4`,`st`.`tactic5`,`st`.`tactic6`,`st`.`tactic7`,`st`.`x`,`st`.`y`,`st`.`battleEnd`,`st`.`priemslot`,`st`.`priems`,`st`.`priems_z`,`st`.`bet`,`st`.`clone`,`st`.`atack`,`st`.`bbexp`,`st`.`res_x`,`st`.`res_y`,`st`.`res_s`,`st`.`id`,`st`.`last_hp`,`st`.`last_pr`,`u`.`sex`,`u`.`money`,`u`.`bot_id`,`u`.`money3`,`u`.`money2` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "' . $this->info['id'] . '"'); $i = 0; $bi = 0; $up = ''; if ($this->info['start2'] == 0) { $tststrt = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = ' . $this->info['id'] . ' AND `start2` = 0 LIMIT 1')); if (isset($tststrt['id'])) { mysql_query('UPDATE `battle` SET `start2` = unix_timestamp() WHERE `id` = ' . $this->info['id'] . ' LIMIT 1'); } else { $this->info['start2'] = time(); } } while ($pl = mysql_fetch_array($t)) { //записываем данные if ($pl['login2'] == '') { $pl['login2'] = $pl['login']; } $this->users[$i] = $pl; $this->uids[$pl['id']] = $i; if ($this->info['start2'] == 0) { mysql_query('UPDATE `users` SET `notrhod` = -1 WHERE `id` = ' . $this->users[$i]['id'] . ' LIMIT 1'); $this->users[$i]['notrhod'] = -1; } if ($pl['bot'] > 0) { $this->bots[$bi] = $pl['id']; $this->iBots[$pl['id']] = $bi; $bi++; } //записываем статы $this->stats[$i] = $u->getStats($pl, 0, 0, false, $this->cached, true); //Заносим старт if ($this->info['start2'] == 0) { if (!isset($ts[$this->users[$i]['team']])) { $tsi++; $ts[$this->users[$i]['team']] = $tsi; } if ($this->users[$i]['level'] <= 7) { $this->users[$i]['tactic7'] = floor(10 / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); } elseif ($this->users[$i]['level'] == 8) { $this->users[$i]['tactic7'] = floor(20 / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); } elseif ($this->users[$i]['level'] == 9) { $this->users[$i]['tactic7'] = floor(30 / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); } elseif ($this->users[$i]['level'] >= 10) { $this->users[$i]['tactic7'] = floor((40 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); } if ($this->stats[$i]['s7'] > 49) { mysql_query('UPDATE `eff_users` SET `delete`= unix_timestamp() WHERE `uid` = ' . $this->users[$i]['id'] . ' AND `overType` = 101 AND `delete` = 0'); mysql_query(" INSERT INTO `eff_users` ( `id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES ( 22, '" . $this->stats[$i]['id'] . "', 'Спасение', 'add_spasenie=1', 101, 77, 0, '" . $this->stats[$i]['id'] . "', 0, 'priem', 324, 'preservation.gif', 1, -1, 'спасение', 0, 0, '', 0, 0, 0, 1, 0); "); } ##### // Бафф Зверя animal_bonus if ($this->users[$i]['animal'] > 0) { $a = mysql_fetch_array(mysql_query('SELECT * FROM `users_animal` WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `id` = "' . $this->users[$i]['animal'] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1')); if (isset($a['id']) && $a['eda'] >= 1) { $anl = mysql_fetch_array(mysql_query('SELECT `bonus` FROM `levels_animal` WHERE `type` = "' . $a['type'] . '" AND `level` = "' . $a['level'] . '" LIMIT 1')); $anl = $anl['bonus']; $tpa = [ 1 => 'cat', 2 => 'owl', 3 => 'wisp', 4 => 'demon', 5 => 'dog', 6 => 'pig', 7 => 'dragon', ]; $tpa2 = [ 1 => 'Кота', 2 => 'Совы', 3 => 'Светляка', 4 => 'Чертяки', 5 => 'Пса', 6 => 'Свина', 7 => 'Дракона', ]; $tpa3 = [ 1 => 'Кошачья Ловкость', 2 => 'Интуиция Совы', 3 => 'Сила Стихий', 4 => 'Демоническая Сила', 5 => 'Друг', 6 => 'Полная Броня', 7 => 'Инферно', ]; mysql_query('UPDATE `eff_users` SET `delete`="' . time() . '" WHERE `uid` = "' . $this->users[$i]['id'] . '" AND `overType` = 100 AND `delete` = 0'); mysql_query('INSERT INTO `eff_users` (`hod`,`v2`,`img2`,`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`v1`,`user_use`) VALUES ("-1","201","summon_pet_' . $tpa[$a['type']] . '.gif",22,"' . $this->users[$i]['id'] . '","' . $tpa3[$a['type']] . ' [' . $a['level'] . ']","' . $anl . '","100","77","priem","' . $this->users[$i]['id'] . '")'); //добавление духа от дракона if ($a['type'] == 7) { if ($a['level'] == 10) { $this->users[$i]['tactic7'] = floor((50 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); } elseif ($a['level'] == 11) { $this->users[$i]['tactic7'] = floor((65 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); } elseif ($a['level'] == 12) { $this->users[$i]['tactic7'] = floor((90 + $this->stats[$i]['s7']) / $this->stats[$i]['hpAll'] * $this->stats[$i]['hpNow']); } } // $anl = $this->lookStats($anl); $vLog = 'time1=' . time() . '||s1=' . $this->users[$i]['sex'] . '||t1=' . $this->users[$i]['team'] . '||login1=' . $this->users[$i]['login']; $vLog .= '||s2=1||t2=' . $this->users[$i]['team'] . '||login2=' . $a['name'] . ' (Зверь ' . $this->users[$i]['login'] . ')'; $mas1 = [ 'time' => time(), 'battle' => $this->info['id'], 'id_hod' => 1, '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]]) && $anl['add_' . $u->items['add'][$i6]] > 0) { if ($u->items['add'][$i6] == 'mib1') { $ba .= 'Броня головы: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; } elseif ($u->items['add'][$i6] == 'mib2') { $ba .= 'Броня корпуса: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; } elseif ($u->items['add'][$i6] == 'mib3') { $ba .= 'Броня пояса: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; } elseif ($u->items['add'][$i6] == 'mib4') { $ba .= 'Броня ног: +' . $anl['add_' . $u->items['add'][$i6]] . ', '; } elseif ( $u->items['add'][$i6] != 'mab1' && $u->items['add'][$i6] != 'mab2' && $u->items['add'][$i6] != 'mab3' && $u->items['add'][$i6] != 'mab4' ) { $ba .= $u->is[$u->items['add'][$i6]] . ': +' . $anl['add_' . $u->items['add'][$i6]] . ', '; } } $i6++; } $ba = trim($ba, ', '); if ($ba == '') { $ba = 'Эффект отсутсвует'; } $mas1['text'] = '{tm1} {u2} очнулся от медитации, и призвал заклятье "' . $tpa3[$a['type']] . ' [' . $a['level'] . ']" на {u1}. (' . $ba . ')'; $nxtlg[] = $mas1; mysql_query('UPDATE `users_animal` SET `eda` = `eda` - 1 WHERE `id` = "' . $a['id'] . '" LIMIT 1'); $this->get_comment(); } } mysql_query('UPDATE `stats` SET `last_hp` = "0",`tactic1`="0",`tactic2`="0",`tactic3`="0",`tactic4`="0",`tactic5`="0",`tactic6`="0",`tactic7` = "' . ($this->users[$i]['tactic7']) . '" WHERE `id` = "' . $this->users[$i]['id'] . '" LIMIT 1'); $rs[$this->users[$i]['team']] .= $u->microLogin($this->users[$i], 2) . ', '; } $up .= '`uid` = "' . $pl['id'] . '" OR'; //battle-user (статистика, начальная) $mybu = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_users` WHERE `battle` = "' . $this->info['id'] . '" AND `uid` = "' . mysql_real_escape_string($pl['id']) . '" LIMIT 1')); if (!isset($mybu['id'])) { //Пустое значение статистики для данного персонажа за текущий бой $this->addstatuser($pl['id']); } $i++; } $up = rtrim($up, ' OR'); //Заносим в лог начало поединка if ($this->info['start1'] == 0) { $tststrt = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "' . $this->info['id'] . '" AND `start1` = "0" LIMIT 1')); if (isset($tststrt['id'])) { $upd = mysql_query('UPDATE `battle` SET `start1` = "' . time() . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'); if ($upd) { $i = 0; $r = ''; while ($i <= $tsi) { if (isset($rs[$i]) && $rs[$i] != '') { $r .= rtrim($rs[$i], ', ') . ' и '; } $i++; } $r = rtrim($r, ' и'); $r = str_replace('"', '\\\\\"', $r); $this->hodID++; $time = time(); $mass = [ 'time' => $time, 'battle' => $this->info['id'], 'id_hod' => $this->hodID, 'vars' => "time1=$time||", 'zona1' => '', 'zonb1' => '', 'zona2' => '', 'zonb2' => '', 'type' => '1', ]; $r = 'Часы показывали ' . date('d.m.Y H:i', $this->info['time_start']) . ', когда ' . $r . ' бросили вызов друг другу.'; mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . $mass['time'] . '","' . $mass['battle'] . '","' . $mass['id_hod'] . '","' . $r . '","' . $mass['vars'] . '","' . $mass['zona1'] . '","' . $mass['zonb1'] . '","' . $mass['zona2'] . '","' . $mass['zonb2'] . '","' . $mass['type'] . '")'); $this->info['start1'] = time(); } } if (!empty($nxtlg)) { foreach ($nxtlg as $item) { $this->add_log($item); } } } } } //Возращаем зоны блока по умолчанию private function restZonb($uid1, $uid2) { if ($this->stnZbVs[$uid1] > 0) { $this->stats[$this->uids[$uid1]]['zonb'] = $this->stnZbVs[$uid1]; } if ($this->stnZbVs[$uid2] > 0) { $this->stats[$this->uids[$uid1]]['zonb'] = $this->stnZbVs[$uid2]; } } //проверка блока (Визуальная) public function 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 ( !empty($eu) && ($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; } //проверка блока private function testZonb($uid, $uid2) { $zba = []; if ($this->stnZb[$uid] == 0) { $zba[1] = $this->stats[$this->uids[$uid]]['zonb']; $this->stnZb[$uid] = $zba[1]; } else { $zba[1] = $this->stnZb[$uid]; } if ($this->stnZb[$uid2] == 0) { $zba[2] = $this->stats[$this->uids[$uid2]]['zonb']; $this->stnZb[$uid] = $zba[2]; } else { $zba[2] = $this->stnZb[$uid2]; } if ($zba[1] > 3) { $zba[1] = 3; } if ($zba[2] > 3) { $zba[2] = 3; } //Блоки игрока 1 if ( ($this->stats[$this->uids[$uid2]]['weapon1'] == 1 || $this->stats[$this->uids[$uid2]]['weapon2'] == 1) && $this->stats[$this->uids[$uid]]['weapon1'] != 1 && $this->stats[$this->uids[$uid]]['weapon2'] != 1 ) { $zba[1] -= 1; } //Блоки игрока 2 if ( ($this->stats[$this->uids[$uid]]['weapon1'] == 1 || $this->stats[$this->uids[$uid]]['weapon2'] == 1) && $this->stats[$this->uids[$uid2]]['weapon1'] != 1 && $this->stats[$this->uids[$uid2]]['weapon2'] != 1 ) { $zba[2] -= 1; } if ($zba[1] < 1) { $zba[1] = 1; } if ($zba[2] < 1) { $zba[2] = 1; } $this->stats[$this->uids[$uid]]['zonb'] = $zba[1]; $this->stats[$this->uids[$uid2]]['zonb'] = $zba[2]; if ( $this->stats[$this->uids[$uid]]['min_zonb'] > 0 && $this->stats[$this->uids[$uid]]['zonb'] < $this->stats[$this->uids[$uid]]['min_zonb'] ) { $this->stats[$this->uids[$uid]]['zonb'] = $this->stats[$this->uids[$uid]]['min_zonb']; } if ( $this->stats[$this->uids[$uid2]]['min_zonb'] > 0 && $this->stats[$this->uids[$uid2]]['zonb'] < $this->stats[$this->uids[$uid2]]['min_zonb'] ) { $this->stats[$this->uids[$uid2]]['zonb'] = $this->stats[$this->uids[$uid2]]['min_zonb']; } } //генерируем команды public function genTeams($you) { $ret = ''; $teams = []; //выделяем пользователей $i = 0; $j = 1; $tms = []; $teams[$this->users[$this->uids[$you]]['team']] = ''; $tms[0] = $this->users[$this->uids[$you]]['team']; while ($i < count($this->uids)) { if ($this->stats[$i]['hpNow'] > 0) { if (!isset($teams[$this->users[$i]['team']])) { $tms[$j] = $this->users[$i]['team']; $j++; } if ($this->stats[$i]['hpNow'] < 0) { $this->stats[$i]['hpNow'] = 0; } if ($this->stats[$i]['hpAll'] < $this->stats[$i]['hpNow']) { $this->stats[$i]['hpNow'] = $this->stats[$i]['hpAll']; } $a1ms = ''; if ($this->ga[$this->users[$i]['id']][$you]) { $a1mc = ''; $ac = mysql_fetch_array(mysql_query('SELECT * FROM `battle_act` WHERE `id` = "' . $this->ga[$this->users[$i]['id']][$you] . '" LIMIT 1')); if (isset($ac) && $ac['time'] + $this->info['timeout'] - 15 < time()) { $a1mc = 'color:red;'; } $a1ms = 'style=\"text-decoration: underline; ' . $a1mc . '\"'; } elseif ($this->ag[$this->users[$i]['id']][$you]) { $a1mc = ''; $ac = mysql_fetch_array(mysql_query('SELECT * FROM `battle_act` WHERE `id` = "' . $this->ag[$this->users[$i]['id']][$you] . '" LIMIT 1')); if (isset($ac) && $ac['time'] + $this->info['timeout'] - 15 < time()) { $a1mc = 'color:green;'; } $a1ms = 'style=\"text-decoration: overline; ' . $a1mc . '\"'; } if ($this->users[$i]['login2'] == '') { $this->users[$i]['login2'] = $this->users[$i]['login']; } if ($this->users[$i]['align'] == 9) { $this->stats[$i]['hpNow'] = $this->stats[$i]['hpNow'] / ($this->stats[$i]['hpAll'] / 100); $this->stats[$i]['hpAll'] = '100%'; } $ldr = ''; if ($this->users[$i]['lider'] == $this->info['id']) { $ldr = 'users[$i]['team'] . '.gif \>'; } $teams[$this->users[$i]['team']] .= ', ' . $ldr . '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'] . ' [' . floor($this->stats[$i]['hpNow']) . '/' . $this->stats[$i]['hpAll'] . ']'; } $i++; } //генерируем команды $i = 0; while ($i < count($tms)) { $teams[$tms[$i]] = ltrim($teams[$tms[$i]], ', '); if ($teams[$tms[$i]] != '') { $teams[$tms[$i]] = ' ' . $teams[$tms[$i]]; $ret .= $teams[$tms[$i]]; if (count($tms) > $i + 1) { $ret .= '   против   '; } } $i++; } return "genteam($ret);"; } public function addTravm($uid, $type, $lvl) { $timeEnd = 0; if ($type == 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 ($type == 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 ($type == 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 ($type == 4) { $name = 'Неизлечимая травма'; $stat = rand(1, 3); // пока без духовности $timeEnd = 24;// время травмы от 24 часа $data = 'add_s' . $stat . '=-' . ($lvl * 50); $v1 = 4; $img = 'eff_travma4.gif'; } $timeEnd *= 3600; mysql_query('INSERT INTO `eff_users` (`overType`,`timeUse`,`hod`,`name`,`data`,`uid`, `id_eff`, `img2`, `timeAce`, `v1`) VALUES (0,unix_timestamp(), -1, ' . $name . ',' . $data . ',' . $uid . ', 4, ' . $img . ',' . $timeEnd . ', ' . $v1 . ')'); mysql_query('INSERT INTO `eff_users` (`overType`,`timeUse`,`hod`,`name`,`data`,`uid`, `id_eff`, `img2`, `timeAce`, `v1`) VALUES (0,unix_timestamp(), -1, "Иммунитет: Защита от травм","add_notravma=1",' . $uid . ', 263, "cure1.gif",21600, "")'); } 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`.`activ`,`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); } } ///----Спасение функция public function spaCheck($u1) { if ($this->stats[$this->uids[$u1]]['hpNow'] < 1) { mysql_query('DELETE FROM `battle_act` WHERE `uid1` = "' . $u1 . '" OR `uid2` = "' . $u1 . '"'); if ($this->stats[$this->uids[$u1]]['spasenie'] > 0 && $this->users[$this->uids[$u1]]['tactic7'] >= 25) // { //Свиток спасения // if ($this->stats[$this->uids[$u1]]['s7'] > 49 && $this->stats[$this->uids[$u1]]['s7'] < 75) { //Даем призрачку mysql_query("INSERT INTO `eff_users` (`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES (22, '" . $u1 . "', 'Призрачная защита', 'add_zmproc=75|add_zaproc=75', 0, 77, 0, '" . $u1 . "', 0, 'priem', 141, 'spirit_block25.gif', 1, 1, '0', 0, 0, '', 0, 0, 0, 0, 0);"); $this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll'] * 0.5); $this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll'] * 0.5); } elseif ($this->stats[$this->uids[$u1]]['s7'] > 74 && $this->stats[$this->uids[$u1]]['s7'] < 100) { //Абсолютная защита mysql_query("INSERT INTO `eff_users` (`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES (22, '" . $u1 . "', 'Абсолютная защита', 'add_zmproc=100|add_zaproc=100', 0, 77, 0, '" . $u1 . "', 0, 'priem', 358, 'block_absolute.gif', 1, 1, '0', 0, 0, '', 0, 0, 0, 0, 0);"); $this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll'] * 0.75); $this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll'] * 0.75); } elseif ($this->stats[$this->uids[$u1]]['s7'] > 99) { //Абсолютная защита x2 mysql_query("INSERT INTO `eff_users` (`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES (22, '" . $u1 . "', 'Защита Мироздателя', 'add_zmproc=100|add_zaproc=100', 0, 77, 0, '" . $u1 . "', 0, 'priem', 358, 'wis_white_shield.gif', 1, 2, '0', 0, 0, '', 0, 0, 0, 0, 0);"); $this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll']); $this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll']); } if ($this->stats[$this->uids[$u1]]['hpNow'] < 1) { $this->stats[$this->uids[$u1]]['hpNow'] = 1; } if ($this->stats[$this->uids[$u1]]['mpNow'] < 1) { $this->stats[$this->uids[$u1]]['mpNow'] = 1; } if ($this->stats[$this->uids[$u1]]['hpNow'] > $this->stats[$this->uids[$u1]]['hpAll']) { $this->stats[$this->uids[$u1]]['hpNow'] = floor($this->stats[$this->uids[$u1]]['hpAll']); } if ($this->stats[$this->uids[$u1]]['mpNow'] > $this->stats[$this->uids[$u1]]['mpAll']) { $this->stats[$this->uids[$u1]]['mpNow'] = floor($this->stats[$this->uids[$u1]]['mpAll']); } mysql_query('DELETE FROM `eff_users` WHERE `uid` = ' . $u1 . ' AND `id_eff` = 22 AND `v1` = "priem" AND `v2` = 324'); mysql_query('UPDATE `stats` SET `hpNow` = ' . $this->stats[$this->uids[$u1]]['hpNow'] . ',`mpNow` = ' . $this->stats[$this->uids[$u1]]['mpNow'] . ', `tactic7` = `tactic7` - 25 WHERE `id` = ' . $u1 . ' LIMIT 1'); $mas['text'] = '{tm1} ' . $this->stats[$this->uids[$u1]]['login'] . ' убит...' . $this->stats[$this->uids[$u1]]['login'] . ' был спасен. '; $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} ' . $this->stats[$this->uids[$u1]]['login'] . ' погиб.'; $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'); // v1 priem } } } } //Конец спасения } if (!defined('GAME')) { die(); } ignore_user_abort(true); ini_set('memory_limit', '512M'); $btl = new battleClass(new Db());