info['id'] . '" AND `iu`.`id` = "' . mysql_real_escape_string( (int)$id ) . '" LIMIT 1' ) ); if (isset($itm['id'])) { $st = ConversionHelper::dataStringToArray($itm['data']); if (isset($st['usefromfile']) && $st['usefromfile'] == 1) { if (file_exists('_incl_data/class/magic/' . $itm['magic_inci'] . '.php')) { require('_incl_data/class/magic/' . $itm['magic_inci'] . '.php'); } else { $u->error = '7Не удалось использовать (' . $itm['magic_inci'] . ')'; } } elseif ($itm['type'] == 30) { //Эликсиры $goodUse = 0; $use = []; if (isset($st['moment'])) { //Эликсир используется моментально (Восстановление НР или МР) if (isset($st['moment_hp'])) { //Восстанавливаем здоровье if ($u->stats['hpNow'] < $u->stats['hpAll']) { $goodUse = 1; $use['moment_hp'] = $st['moment_hp']; if ($u->stats['hpNow'] + $use['moment_hp'] > $u->stats['hpAll']) { $use['moment_hp'] = ceil($u->stats['hpAll'] - $u->stats['hpNow']); } $u->error .= 'Вы восстановили ' . ($use['moment_hp']) . ' HP.
'; } else { $u->error = 'Ваше здоровье и так полностью восстановлено'; $goodUse = 0; } } if (isset($st['moment_mp'])) { //Восстанавливаем здоровье if ($u->stats['mpNow'] < $u->stats['mpAll']) { $goodUse = 1; $use['moment_mp'] = $st['moment_mp']; if ($u->stats['mpNow'] + $use['moment_mp'] > $u->stats['mpAll']) { $use['moment_mp'] = ceil($u->stats['mpAll'] - $u->stats['mpNow']); } $u->error .= 'Вы восстановили ' . ($use['moment_mp']) . ' MP.
'; } else { $u->error = 'Ваша манна и так полностью восстановлена'; $goodUse = 0; } } if ($itm['iznosNOW'] >= $itm['iznosMAX']) { $u->error = 'Эликсир был испорчен...'; $goodUse = 0; } if (($u->info['align'] == 2 || $u->info['haos'] > time()) && isset($st['nohaos'])) { $goodUse = 0; $u->error = 'Хаосники не могут использовать данный эликсир'; } //Заносим данные в БД if ($goodUse == 1) { $itm['iznosNOW']++; $upd = mysql_query( 'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1' ); if ($upd) { $u->stats['hpNow'] += $use['moment_hp']; $u->info['hpNow'] += $use['moment_hp']; mysql_query( 'UPDATE `stats` SET `hpNow` = "' . $u->info['hpNow'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' ); $u->addDelo( 1, $u->info['id'], '"System.inventory": Персонаж использовал эликсир "' . $itm['name'] . '" (+' . $use['moment_hp'] . ' HP) [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0 ); $this->youuse++; $u->error = 'Вы успешно использовали эликсир "' . $itm['name'] . '"
' . $u->error . ''; } else { $u->error = 'Не удалось использовать эликсир...'; } } } else { //Эликсиры с продолжительным эффектом $goodUse = 1; if (($u->info['align'] == 2 || $u->info['haos'] > time()) && isset($st['nohaos'])) { $goodUse = 0; $u->error = 'Хаосники не могут использовать данный эликсир'; } if ($goodUse == 1) { $upd1 = 1; $upd2 = 1; //добавляем эффект персонажу if (isset($st['onlyOne'])) { //убираем прошлые эффекты $goodUse = 0; $upd1 = mysql_query( 'UPDATE `eff_users` SET `delete` = "' . time( ) . '" WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = "0" AND `id_eff` = "' . $itm['magic_inc'] . '"' ); if ($upd1) { $goodUse = 1; } } if (isset($st['oneType'])) { //убираем прошлые эффекты $goodUse = 0; $upd2 = mysql_query( 'UPDATE `eff_users` SET `delete` = "' . time( ) . '" WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = "0" AND `overType` = "' . $itm['overType'] . '"' ); if ($upd1) { $goodUse = 1; } } if ($goodUse == 1) { $us = $this->add_eff($u->info['id'], $itm['magic_inc']); if ($us[0] == 1) { $itm['iznosNOW']++; mysql_query( 'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1' ); $u->addDelo( 1, $u->info['id'], '"System.inventory": Персонаж использовал эликсир "' . $itm['name'] . '" (' . $us[1] . ') [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0 ); $this->youuse++; $u->error = 'Вы успешно использовали эликсир "' . $itm['name'] . '"
' . $us[1] . ''; } else { $u->error = '6Не удалось использовать "' . $itm['name'] . '"'; } } else { $u->error = '5Не удалось использовать "' . $itm['name'] . '"'; } } } //--------------- } elseif ($itm['type'] == 29) { $chat = new Chat(); $cmsg = new ChatMessage(); $cmsg->setCity($u->info['city']); $cmsg->setRoom($u->info['room']); $cmsg->setType(11); $cmsg->setTypeTime(1); //используем заклятие $st = ConversionHelper::dataStringToArray($itm['data']); $jl = $_GET['login']; $_GET['login'] = urlencode($_GET['login']); //используем на персонажа (все кроме себя) $_GET['login'] = str_replace('%', ' ', $_GET['login']); $_GET['login'] = str_replace('25', '', $_GET['login']); $jl = str_replace('%', ' ', $jl); $jl = str_replace('25', '', $jl); if (isset($st['useOnLogin']) && $st['useOnLogin'] == 1) { $usr = mysql_fetch_array( mysql_query( 'SELECT `st`.`hpNow`,`u`.`login`,`st`.`dnow`,`u`.`id`,`u`.`align`,`u`.`admin`,`u`.`clan`,`u`.`level`,`u`.`room`,`u`.`online`,`u`.`battle`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`city` = "' . $u->info['city'] . '" AND (`u`.`login`="' . mysql_real_escape_string( $_GET['login'] ) . '" OR `u`.`login`="' . mysql_real_escape_string($jl) . '") LIMIT 1' ) ); if (isset($usr['id'])) { if ($itm['iznosNOW'] >= $itm['iznosMAX']) { $u->error = 'Свиток был исполчен...'; } elseif ($itm['magic_inci'] == 'snowball') { if ($usr['id'] == $u->info['id']) { $u->error = 'Нельзя кидаться в самого себя'; } elseif ($usr['online'] < time() - 120) { $u->error = 'Персонаж находится в реальном мире ;)'; } elseif ($usr['room'] != $u->info['room']) { $u->error = 'Персонаж находится в другой комнате [' . $usr['room'] . ' ' . $u->info['room'] . ']'; } elseif ($usr['admin'] > 0 && $u->info['admin'] == 0) { $u->error = 'Нельзя кидаться в Ангелов'; } elseif ($usr['battle'] > 0 && $u->info['battle'] != $usr['battle']) { $u->error = 'Персонаж находится в бою'; } else { $usr['hpNow'] -= 1000; if ($usr['hpNow'] < 0) { $usr['hpNow'] = 0; } $upd = mysql_query( 'UPDATE `stats` SET `hpNow` = "' . $usr['hpNow'] . '" WHERE `id` = "' . $usr['id'] . '" LIMIT 1' ); if ($upd) { $sx = 'ый'; $sx2 = ''; if ($u->info['sex'] == 1) { $sx = 'ая'; $sx2 = 'а'; } $itm['iznosNOW']++; mysql_query( 'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1' ); $rtxt = '[img[items/snowball1.gif]] Хитр' . $sx . ' "' . $u->info['login'] . '" бросил' . $sx2 . ' кусок снега в "' . $usr['login'] . '". -1000 [' . $usr['hpNow'] . '/????]'; $cmsg->setText($rtxt); $chat->sendMsg($cmsg); unset($sx, $sx2); } else { $u->error = 'Не удалось кинуть снежок...'; } } } elseif ($itm['magic_inci'] == 'atack') { //заклятье нападения $usta = $u->getStats($usr['id'], 0); // статы цели $minHp = $usta['hpAll'] / 100 * 33; // минимальный запас здоровья цели при котором можно напасть if ($u->info['dnow'] != $usr['dnow']) { $u->error = 'Персонаж находится в другой комнате [пещера]'; } elseif ($u->info['battle'] > 0) { $u->error = 'Вы уже находитесь в бою'; } elseif ($usr['id'] == $u->info['id']) { $u->error = 'Нельзя нападать на самого себя'; } elseif ($usr['online'] < time() - 120) { $u->error = 'Персонаж находится в реальном мире'; } elseif ($usr['room'] != $u->info['room']) { $u->error = 'Персонаж находится в другой комнате [' . $usr['room'] . ' ' . $u->info['room'] . ']'; } elseif ($usr['admin'] > 0 && $u->info['admin'] == 0) { $u->error = 'Нельзя нападать на Ангелов'; } elseif ($minHp > $usta['hpNow']) { //мало хп $u->error = 'Персонаж имеет слишком малый уровень жизней.'; } else { $atc = $this->atackUser($u->info['id'], $usr['id'], $usr['team'], $usr['battle']); if ($atc == 1 && $u->info['align'] != 2) { //отправляем системку в чат $sx = ''; if ($u->info['sex'] == 1) { $sx = 'а'; } $itm['iznosNOW']++; mysql_query( 'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1' ); $rtxt = '[img[items/pal_button8.gif]] "' . $u->info['login'] . '" использовал' . $sx . ' магию нападения на персонажа "' . $usr['login'] . '".'; $cmsg->setText($rtxt); $chat->sendMsg($cmsg); //напали, обновляем экран die(''); } else { $u->error = 'Не удалось напасть на персонажа...'; } } } else { //просто используем на персонажа if ($u->info['dnow'] != $usr['dnow']) { $u->error = 'Персонаж находится в другой комнате [пещера]'; } elseif ($usr['id'] == $u->info['id'] && isset($st['useOnlyUser'])) { $u->error = 'Нельзя использовать это заклятие на самого себя'; } elseif ($usr['online'] < time() - 120) { $u->error = 'Персонаж находится в реальном мире ;)'; } elseif ($usr['room'] != $u->info['room']) { $u->error = 'Персонаж находится в другой комнате [' . $usr['room'] . ' ' . $u->info['room'] . ']'; } elseif ($usr['admin'] > 0 && $u->info['admin'] == 0 && isset($st['useNoAdmin'])) { $u->error = 'Нельзя использовать данное заклятие на Ангелов'; } elseif ($usr['battle'] > 0 && $u->info['battle'] != $usr['battle']) { $u->error = 'Персонаж находится в бою'; } elseif (($u->info['align'] == 2 || $u->info['haos'] > time()) && isset($st['nohaos'])) { $u->error = 'Хаосники не могут использовать данное заклятие'; } else { //добавляем эффект персонажу $goodUse = 1; if (isset($st['onlyOne'])) { //убираем прошлые эффекты $goodUse = 0; $upd1 = mysql_query( 'UPDATE `eff_users` SET `delete` = "' . time( ) . '" WHERE `uid` = "' . $usr['id'] . '" AND `delete` = "0" AND `id_eff` = "' . $itm['magic_inc'] . '"' ); if ($upd1) { $goodUse = 1; } } if (isset($st['oneType'])) { //убираем прошлые эффекты $goodUse = 0; $upd2 = mysql_query( 'UPDATE `eff_users` SET `delete` = "' . time( ) . '" WHERE `uid` = "' . $usr['id'] . '" AND `delete` = "0" AND `overType` = "' . $itm['overType'] . '"' ); if ($upd1) { $goodUse = 1; } } if ($goodUse == 1) { $us = $this->add_eff($usr['id'], $itm['magic_inc']); if ($us[0] == 1) { $itm['iznosNOW']++; mysql_query( 'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1' ); if ($u->info['id'] != $usr['id']) { $u->addDelo( 1, $u->info['id'], '"System.inventory": Персонаж использовал заклинание "' . $itm['name'] . '" (' . $us[1] . ') на персонажа "' . $usr['login'] . '" (id' . $usr['id'] . ') [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0 ); $u->addDelo( 1, $usr['id'], '"System.inventory": Персонаж "' . $u->info['login'] . '" (id' . $u->info['id'] . ') использовал заклинание "' . $itm['name'] . '" (' . $us[1] . ') на персонажа [itm:' . $itm['id'] . '].', time(), $usr['city'], 'System.inventory', 0, 0 ); $u->error = 'Вы успешно использовали заклинание "' . $itm['name'] . '" на персонажа "' . $usr['login'] . '"
' . $us[1] . ''; $rtxt = '[img[items/' . $itm['img'] . ']] "' . $u->info['login'] . '" использовал' . $sx . ' заклинание "' . $itm['name'] . '" на персонажа "' . $usr['login'] . '".'; $cmsg->setText($rtxt); $chat->sendMsg($cmsg); } else { $u->addDelo( 1, $u->info['id'], '"System.inventory": Персонаж использовал заклинание "' . $itm['name'] . '" (' . $us[1] . ') на персонажа самого себя [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0 ); $u->error = 'Вы успешно использовали заклинание "' . $itm['name'] . '" на самого себя
' . $us[1] . ''; $rtxt = '[img[items/' . $itm['img'] . ']] "' . $u->info['login'] . '" использовал' . $sx . ' заклинание "' . $itm['name'] . '" на себя.'; $cmsg->setText($rtxt); $chat->sendMsg($cmsg); } $this->youuse++; } else { $u->error = '1Не удалось использовать "' . $itm['name'] . '"'; } } else { $u->error = '2Не удалось использовать "' . $itm['name'] . '"'; } } } } else { $u->error = 'Персонаж "' . $jl . '" не найден в этом городе (' . $u->info['city'] . ')'; } } elseif (isset($st['useOnItem']) && $st['useOnItem'] == 1) { //используем на предмет } else { //на себя $goodUse = 1; if (($u->info['align'] == 2 || $u->info['haos'] > time()) && isset($st['nohaos'])) { $goodUse = 0; $u->error = 'Хаосники не могут использовать данное заклятие'; } if ($goodUse == 1) { $upd1 = 1; $upd2 = 1; //добавляем эффект персонажу if (isset($st['onlyOne'])) { //убираем прошлые эффекты $goodUse = 0; $upd1 = mysql_query( 'UPDATE `eff_users` SET `delete` = "' . time( ) . '" WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = "0" AND `id_eff` = "' . $itm['magic_inc'] . '"' ); if ($upd1) { $goodUse = 1; } } if (isset($st['oneType'])) { //убираем прошлые эффекты $goodUse = 0; $upd2 = mysql_query( 'UPDATE `eff_users` SET `delete` = "' . time( ) . '" WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = "0" AND `overType` = "' . $itm['overType'] . '"' ); if ($upd1) { $goodUse = 1; } } if ($itm['magic_inci'] == 'add_animal') { if ($u->info['animal'] > 0) { $u->error = 'Не удалось использовать "' . $itm['name'] . '", у Вас уже есть зверь.'; } else { $anm = ['type' => 1, 'name' => '', 'obraz' => '', 'stats' => '', 'sex' => 0]; if ($anm['type'] == 1) { $anm['name'] = 'Кот'; $anm['sex'] = 0; $anm['obraz'] = [1 => '20132.gif', 2 => '21139.gif', 3 => '20864.gif', 4 => '21301.gif']; $anm['stats'] = 's1=2|s2=2|s3=2|s4=5|rinv=40|m9=5|m6=10'; } $anm['obraz'] = $anm['obraz'][rand(1, count($anm['obraz']))]; $ins = mysql_query( 'INSERT INTO `users_animal` (`type`,`name`,`uid`,`obraz`,`stats`,`sex`) VALUES ("' . $anm['type'] . '","' . $anm['name'] . '","' . $u->info['id'] . '","' . $anm['obraz'] . '","' . $anm['stats'] . '","' . $anm['sex'] . '")' ); if ($ins) { $u->info['animal'] = mysql_insert_id(); mysql_query( 'UPDATE `users` SET `animal` = "' . $u->info['animal'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' ); $u->error = 'Вы успешно использовали "' . $itm['name'] . '" и помните - "Мы в ответе за тех, кого приручили".'; $itm['iznosNOW']++; mysql_query( 'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1' ); $u->addDelo( 1, $u->info['id'], '"System.inventory": Персонаж использовал заклинание "' . $itm['name'] . '" (' . $us[1] . ') [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0 ); } else { $u->error = 'Не удалось использовать "' . $itm['name'] . '", что-то здесь не так ...'; } } } elseif ($goodUse == 1) { $us = $this->add_eff($u->info['id'], $itm['magic_inc']); if ($us[0] == 1) { $itm['iznosNOW']++; mysql_query( 'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1' ); $u->addDelo( 1, $u->info['id'], '"System.inventory": Персонаж использовал заклинание "' . $itm['name'] . '" (' . $us[1] . ') [itm:' . $itm['id'] . '].', time(), $u->info['city'], 'System.inventory', 0, 0 ); $this->youuse++; $u->error = 'Вы успешно использовали заклинание "' . $itm['name'] . '"
' . $us[1] . ''; $rtxt = '[img[items/' . $itm['img'] . ']] "' . $u->info['login'] . '" использовал' . $sx . ' заклинание "' . $itm['name'] . '" на себя.'; $cmsg->setText($rtxt); $chat->sendMsg($cmsg); } else { $u->error = '3Не удалось использовать "' . $itm['name'] . '"'; } } else { $u->error = '4Не удалось использовать "' . $itm['name'] . '"'; } } //------------------------------ } } } else { $u->error = 'Предмет не найден в инвентаре'; } } public function add_eff($uid, $id) { $g = [0 => 0, 1 => '']; $eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $id . '" LIMIT 1')); if (isset($eff['id2'])) { $n = $eff['mname']; $d = $eff['mdata']; $ins = mysql_query( 'INSERT INTO `eff_users` (`overType`,`id_eff`,`uid`,`name`,`timeUse`,`data`) VALUES ("' . $eff['oneType'] . '","' . $eff['id2'] . '","' . $uid . '","' . $n . '","' . time( ) . '","' . $d . '")' ); if ($ins) { $g[0] = 1; $g[1] = '...'; } } return $g; } //создаем нападение на персонажа public function atackUser($uid1, $uid2, $tm, $btl, $addExp = 0) { $good = 0; if ($btl == 0) { //нападаем на персонажа $ins = mysql_query( 'INSERT INTO `battle` (`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES ( "' . $u->info['city'] . '", "' . time() . '", "' . $u->info['login'] . ',' . $usr['login'] . '", "180", "0", "0", "0", "50", "9", "' . $addExp . '", "0")' ); if ($ins) { $btl_id = mysql_insert_id(); $upd2 = mysql_query( 'UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $uid1 . '" OR `id` = "' . $uid2 . '" LIMIT 2' ); mysql_query('UPDATE `stats` SET `team`="1",`zv` = "0" WHERE `id` = "' . $uid1 . '" LIMIT 1'); mysql_query('UPDATE `stats` SET `team`="2",`zv` = "0" WHERE `id` = "' . $uid2 . '" LIMIT 1'); $good = 1; } } else { //вмешиваемся в бой $upd = mysql_query('UPDATE `users` SET `battle`="' . $btl . '" WHERE `id` = "' . $uid1 . '" LIMIT 1'); if ($upd) { $ltm = [1 => 2, 2 => 1]; mysql_query('UPDATE `stats` SET `team`="' . $ltm[$tm] . '" WHERE `id` = "' . $uid1 . '" LIMIT 1'); $good = 1; } } return $good; } //Нападение на центральной площади public function magicCentralAttack() { global $c, $code, $u, $re; } } $magic = new Magic; ?>