game/_incl_data/class/Magic.php
2024-12-10 13:09:03 +02:00

1912 lines
131 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

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

<?php
use Core\Db;
use Helper\Conversion;
use Magic\Attack;
use User\Effects;
use User\ItemsModel;
class Magic
{
public int $youuse = 0;
public array $cMagic = [4174, 4175, 4176, 4177, 4178, 4179, 4180];
public array $eMagic = [4185, 4186, 4187];
private Attack $attack;
public function __construct()
{
ignore_user_abort(true);
if (isset($_POST['useitemon'])) {
$_GET['login'] = $_POST['useitemon'];
}
$this->attack = new Attack($this);
}
public function useItems($id)
{
global $u, $btl;
$itm = mysql_fetch_array(
mysql_query(
'SELECT `iu`.`id` AS `iuid`,`im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`uid` = "' . $u->info['id'] . '" AND `iu`.`inShop`="0" AND `iu`.`delete`="0" AND `iu`.`id` = "' . mysql_real_escape_string(
(int)$id
) . '" LIMIT 1'
)
);
$bs_is = mysql_fetch_array(
mysql_query('SELECT * FROM `bs_turnirs` WHERE `id` = "' . $u->info['inTurnir'] . '" LIMIT 1')
);
if (isset($itm['id'])) {
//Группа предметов
if ($itm['group'] == 1 && ItemsModel::itemsX($itm['id']) > 1) {
//вытаскиваем предмет из группы
$u->unstack($itm['id'], 1);
}
$st = Conversion::dataStringToArray($itm['data']);
if (isset($st['tr_lvl']) && $st['tr_lvl'] > $u->info['level']) {
$u->error = 'Вы слишком малы чтобы использовать данный предмет ';
return 'Вы слишком малы чтобы использовать данный предмет';
}
if ($itm['magic_chance'] > 0 && $itm['magic_chance'] < 100) {
$itm['magic_chance'] += floor($u->stats['s5'] * 3);
if ($itm['magic_chance'] >= 99) {
$itm['magic_chance'] = 99;
}
}
if (isset($bs_is['id']) && (in_array($itm['item_id'], $this->eMagic) || in_array(
$itm['item_id'], $this->cMagic
))) {
$itm['magic_chance'] += $bs_is['users'];
if ($itm['magic_chance'] >= 99) {
$itm['magic_chance'] = 99;
}
}
if ($itm['iznosNOW'] >= $itm['iznosMAX']) {
$u->error = 'Не осталось зарядов...';
} elseif ($st['useOnlyInBattle'] == 1 && $u->info['battle'] == 0) {
//Можно использовать только в поединке
$u->error = 'Можно использовать только в поединке';
} elseif ($u->info['battle'] > 0 && $itm['btl_zd'] > 0) {
//Можно использовать только в поединке
$u->error = 'Задержка использования еще ' . $itm['btl_zd'] . ' ходов';
} elseif ($st['useOnlyInBattle'] == 1 && $u->info['battle'] > 0 && $u->stats['hpNow'] < 1) {
//Можно использовать только в поединке
$u->error = 'Вы погибли, нельзя пользоваться свитками и магией';
} elseif ($itm['magic_chance'] > 0 && rand(0, 100) > $itm['magic_chance']) {
$u->error = 'Каст &quot;' . $itm['name'] . '&quot; сгорел';
$itm['iznosNOW']++;
if ($itm['inGroup'] > 0 && $itm['delete'] == 0) {
mysql_query(
'UPDATE `items_users` SET `inGroup` = 0, `delete` = 0 WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
);
Delo::add(
1,
'System.inventory',
$u->info['id'],
'&quot;<span style="color: maroon; ">System.inventory</span>&quot;:<B>(КАСТ СГОРЕЛ)</b> Персонаж использовал &quot;' . $itm['name'] . '&quot; (' . $us[1] . ') [itm:' . $itm['id'] . '].',
);
} elseif (isset($st['usefromfile'])) {
//используем заклятие
$st = Conversion::dataStringToArray($itm['data']);
if (isset($st['zazuby']) && $_GET['login'] != $u->info['login']) {
//unset($st['useOnLogin']);
$_GET['login'] = $u->info['login'];
}
$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) {
if ($u->info['inTurnir'] == 0) {
if ($u->info['battle'] > 0) {
$usr = mysql_fetch_array(
mysql_query(
'SELECT `st`.`atack`, `st`.`clone`, `u`.`bot_id`, `u`.`type_pers`,`u`.`inTurnir`,`st`.`zv`,`st`.`bot`,`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`.`battle` = "' . $u->info['battle'] . '" AND (`u`.`login`="' . mysql_real_escape_string(
$_GET['login']
) . '" OR `u`.`login`="' . mysql_real_escape_string($jl) . '") LIMIT 1'
)
);
} else {
$usr = mysql_fetch_array(
mysql_query(
'SELECT `st`.`atack`, `st`.`clone`, `u`.`bot_id`, `u`.`type_pers`,`u`.`inTurnir`,`st`.`zv`,`st`.`bot`,`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'
)
);
}
} else {
if ($u->info['battle'] > 0) {
$usr = mysql_fetch_array(
mysql_query(
'SELECT `st`.`atack`,`st`.`clone`,`u`.`bot_id`,`u`.`type_pers`,`u`.`inTurnir`,`st`.`zv`,`st`.`bot`,`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`.`battle` = "' . $u->info['battle'] . '" AND (`u`.`login`="' . mysql_real_escape_string(
$_GET['login']
) . '" OR `u`.`login`="' . mysql_real_escape_string(
$jl
) . '") AND `u`.`inTurnir` > 0 LIMIT 1'
)
);
} else {
$usr = mysql_fetch_array(
mysql_query(
'SELECT `st`.`atack`,`st`.`clone`,`u`.`bot_id`,`u`.`type_pers`,`u`.`inTurnir`,`st`.`zv`,`st`.`bot`,`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
) . '") AND `u`.`inTurnir` > 0 LIMIT 1'
)
);
}
}
}
if ($st['usefromfile'] == 1) {
if ($u->info['battle'] > 0) {
if (file_exists('../../_incl_data/class/Magic/' . $itm['magic_inci'] . '.php')) {
require('../../_incl_data/class/Magic/' . $itm['magic_inci'] . '.php');
} else {
$u->error = 'Не удалось использовать (' . $itm['magic_inci'] . '.b)';
}
} else {
if (file_exists('_incl_data/class/Magic/' . $itm['magic_inci'] . '.php')) {
require('_incl_data/class/Magic/' . $itm['magic_inci'] . '.php');
} else {
$u->error = 'Не удалось использовать (' . $itm['magic_inci'] . ')';
}
}
} else {
if ($itm['useInBattle'] > 0) {
if (file_exists('../../_incl_data/class/priems/' . $st['usefromfile'] . '.php')) {
require('../../_incl_data/class/priems/' . $st['usefromfile'] . '.php');
} else {
$u->error = 'Не удалось использовать (' . $st['usefromfile'] . '.)';
}
} else {
$u->error = 'Не удалось использовать (' . $st['usefromfile'] . '!)';
}
}
} 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.<br>';
} else {
$u->error = 'Ваше здоровье и так полностью восстановлено<br>';
$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.<br />';
} 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'];
$u->stats['mpNow'] += $use['moment_mp'];
$u->info['mpNow'] += $use['moment_mp'];
if ($itm['inGroup'] > 0 && $itm['delete'] == 0) {
mysql_query(
'UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
mysql_query(
'UPDATE `stats` SET `hpNow` = "' . $u->info['hpNow'] . '", `mpNow` = "' . $u->info['mpNow'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'
);
Delo::add(
1,
'System.inventory',
$u->info['id'],
'&quot;<span style="color: maroon; ">System.inventory</span>&quot;: Персонаж использовал эликсир &quot;' . $itm['name'] . '&quot; (+' . $use['moment_hp'] . ' HP) [itm:' . $itm['id'] . '].',
);
$this->youuse++;
$u->error = 'Вы успешно использовали эликсир &quot;' . $itm['name'] . '&quot;<br>' . $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->addEffect($u->info['id'], $itm['magic_inc']);
if ($us[0] == 1) {
$itm['iznosNOW']++;
if ($itm['inGroup'] > 0 && $itm['delete'] == 0) {
mysql_query(
'UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
);
Delo::add(
1,
'System.inventory',
$u->info['id'],
'&quot;<span style="color: maroon; ">System.inventory</span>&quot;: Персонаж использовал эликсир &quot;' . $itm['name'] . '&quot; (' . $us[1] . ') [itm:' . $itm['id'] . '].',
);
$this->youuse++;
$u->error = 'Вы успешно использовали эликсир &quot;' . $itm['name'] . '&quot;<br>' . $us[1] . '';
} else {
$u->error = 'Не удалось использовать "' . $itm['name'] . '"';
}
} else {
$u->error = 'Не удалось использовать "' . $itm['name'] . '"';
}
}
}
//---------------
} elseif ($itm['type'] == 29) {
//используем заклятие
$st = Conversion::dataStringToArray($itm['data']);
if (isset($st['zazuby']) && $_GET['login'] != $u->info['login']) {
//unset($st['useOnLogin']);
$_GET['login'] = $u->info['login'];
}
$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 ($itm['magic_inci'] == 'nextuplvl') {
if ($itm['iznosNOW'] >= $itm['iznosMAX']) {
$u->error = 'Свиток был исполчен...';
} elseif ($u->info['battle'] > 0) {
//
$u->error = 'Вы не можете использовать свиток в бою';
} else {
if ($u->info['twink'] > 0) {
$u->error = 'Используйте свиток на основном персонаже';
} else {
mysql_query(
'UPDATE `users` SET `stopexp` = 0 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'
);
mysql_query(
'UPDATE `users_twink` SET `stopexp` = 0 WHERE `uid` = "' . $u->info['id'] . '" LIMIT 1'
);
$itm['iznosNOW']++;
if ($itm['inGroup'] > 0 && $itm['delete'] == 0) {
mysql_query(
'UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
);
}
}
} elseif (isset($st['useOnLogin']) && $st['useOnLogin'] == 1) {
if ($u->info['inTurnir'] == 0) {
if ($u->info['battle'] > 0) {
$usr = mysql_fetch_array(
mysql_query(
'SELECT `st`.`atack`, `st`.`clone`, `u`.`bot_id`, `u`.`type_pers`,`u`.`inTurnir`,`st`.`zv`,`st`.`bot`,`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`.`battle` = "' . $u->info['battle'] . '" AND (`u`.`login`="' . mysql_real_escape_string(
$_GET['login']
) . '" OR `u`.`login`="' . mysql_real_escape_string($jl) . '") LIMIT 1'
)
);
} else {
$usr = mysql_fetch_array(
mysql_query(
'SELECT `st`.`atack`, `st`.`clone`, `u`.`bot_id`, `u`.`type_pers`,`u`.`inTurnir`,`st`.`zv`,`st`.`bot`,`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'
)
);
}
} else {
if ($u->info['battle'] > 0) {
$usr = mysql_fetch_array(
mysql_query(
'SELECT `st`.`atack`,`st`.`clone`,`u`.`bot_id`,`u`.`type_pers`,`u`.`inTurnir`,`st`.`zv`,`st`.`bot`,`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`.`battle` = "' . $u->info['battle'] . '" AND (`u`.`login`="' . mysql_real_escape_string(
$_GET['login']
) . '" OR `u`.`login`="' . mysql_real_escape_string(
$jl
) . '") AND `u`.`inTurnir` > 0 LIMIT 1'
)
);
} else {
$usr = mysql_fetch_array(
mysql_query(
'SELECT `st`.`atack`,`st`.`clone`,`u`.`bot_id`,`u`.`type_pers`,`u`.`inTurnir`,`st`.`zv`,`st`.`bot`,`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
) . '") AND `u`.`inTurnir` > 0 LIMIT 1'
)
);
}
}
if (isset($usr['id'])) {
$chat = new Chat();
$cmsg = new ChatMessage();
$cmsg->setCity($u->info['city']);
$cmsg->setRoom($u->info['room']);
$cmsg->setTypeTime(1);
//заклятье нападения
if ($itm['iznosNOW'] >= $itm['iznosMAX']) {
$u->error = 'Свиток был исполчен...';
} elseif ($itm['magic_inci'] == 'snowball') {
if ($u->info['battle'] == 0) {
$usr = mysql_fetch_array(
mysql_query(
'SELECT `st`.`clone`,`u`.`type_pers`,`u`.`bot_id`,`st`.`zv`,`u`.`inTurnir`,`st`.`bot`,`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`.`battle` = 0 OR `u`.`battle` = "' . $u->info['battle'] . '") AND (`u`.`login`="' . mysql_real_escape_string(
$_GET['login']
) . '" OR `u`.`login`="' . mysql_real_escape_string($jl) . '") LIMIT 1'
)
);
} else {
$usr = mysql_fetch_array(
mysql_query(
'SELECT `st`.`clone`,`u`.`type_pers`,`u`.`bot_id`,`st`.`zv`,`u`.`inTurnir`,`st`.`bot`,`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`.`battle` = 0 OR `u`.`battle` = "' . $u->info['battle'] . '") AND (`u`.`login`="' . mysql_real_escape_string(
$_GET['login']
) . '" OR `u`.`login`="' . mysql_real_escape_string(
$jl
) . '") AND `u`.`battle` = "' . $u->info['battle'] . '" LIMIT 1'
)
);
}
if ($usr['battle'] > 0 && $u->info['battle'] != $usr['battle']) {
$u->error = 'Персонаж находится в бою';
} elseif ($usr['battle'] > 0) {
//Кидаемся в поединке
if ($usr['team'] != $u->info['team'] && $usr['hpNow'] > 0) {
$txt = 1;
//Отморозки
if ($usr['bot_id'] >= 439 && $usr['bot_id'] <= 460) {
$txt = 500;
} elseif ($usr['bot_id'] == 291) {
if ($usr['hpNow'] < 961) {
$txt = 1982;
} elseif ($usr['hpNow'] > 980 && $usr['hpNow'] < 1981) {
$txt = 1982;
}
} elseif ($usr['id'] == 1008) {
$txt = $u->info['level'] * 250;
}
$usr['hpNow'] -= $txt;
if ($txt < 0) {
$txt = '+' . $txt;
} elseif ($txt == 0) {
$txt = '--';
} else {
$txt = '-' . $txt;
}
if ($usr['hpNow'] < 0) {
$usr['hpNow'] = 0;
}
$btl->stats[$btl->uids[$usr['id']]]['hpNow'] = $usr['hpNow'];
$lastHOD = mysql_fetch_array(
mysql_query(
'SELECT * FROM `battle_logs` WHERE `battle` = "' . $u->info['battle'] . '" ORDER BY `id_hod` DESC LIMIT 1'
)
);
if (isset($lastHOD['id'])) {
$btl->stats[$btl->uids[$usr['id']]]['hpNow'] = floor(
$btl->stats[$btl->uids[$usr['id']]]['hpNow']
);
if ($btl->stats[$btl->uids[$usr['id']]]['hpNow'] > $btl->stats[$btl->uids[$usr['id']]]['hpAll']) {
$btl->stats[$btl->uids[$usr['id']]]['hpNow'] = $btl->stats[$btl->uids[$usr['id']]]['hpAll'];
}
if ($btl->stats[$btl->uids[$usr['id']]]['hpNow'] < 1) {
$btl->stats[$btl->uids[$usr['id']]]['hpNow'] = 0;
}
$id_hod = $lastHOD['id_hod'];
if ($lastHOD['type'] != 6) {
$id_hod++;
}
mysql_query(
'UPDATE `stats` SET `hpNow` = "' . $btl->stats[$btl->uids[$usr['id']]]['hpNow'] . '" WHERE `id` = "' . $usr['id'] . '" LIMIT 1'
);
$itm['iznosNOW']++;
if ($itm['inGroup'] > 0 && $itm['delete'] == 0) {
mysql_query(
'UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
);
$txt = '<font color=#006699>' . $txt . '</font>';
if ($u->info['sex'] == 1) {
$txt = 'Хитрая {u1} бросила кусок снега в {u2}. <b>' . $txt . '</b> [' . $btl->stats[$btl->uids[$usr['id']]]['hpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['hpAll'] . ']';
} else {
$txt = 'Хитрый {u1} бросил кусок снега в {u2}. <b>' . $txt . '</b> [' . $btl->stats[$btl->uids[$usr['id']]]['hpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['hpAll'] . ']';
}
mysql_query(
'INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . time() . '","' . $u->info['battle'] . '","' . ($id_hod) . '","{tm1} ' . $txt . '","login1=' . $u->info['login'] . '||t1=' . $u->info['team'] . '||login2=' . $usr['login'] . '||t2=' . $usr['team'] . '||time1=' . time() . '","","","","","6")'
);
}
unset($txt);
} else {
$u->error = 'Нельзя использовать на данного персонажа';
}
} elseif ($u->info['dnow'] != $usr['dnow']) {
$u->error = 'Персонаж находится в другой комнате';
} elseif ($usr['id'] == $u->info['id']) {
$u->error = 'Нельзя кидаться в самого себя';
} elseif ($usr['online'] < time() - 520 && $usr['battle'] == 0 && $usr['bot'] == 0) {
$u->error = 'Персонаж находится в реальном мире ;)';
} elseif ($usr['room'] != $u->info['room']) {
$u->error = 'Персонаж находится в другой комнате';
} elseif ($usr['admin'] > 0 && $u->info['admin'] == 0) {
$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']++;
if ($itm['inGroup'] > 0 && $itm['delete'] == 0) {
mysql_query(
'UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
);
$urs_st = $u->getStats($usr['id']);
$rtxt = '[img[items/snowball1.gif]] Хитр' . $sx . ' &quot;' . $u->info['login'] . '&quot; бросил' . $sx2 . ' кусок снега в &quot;' . $usr['login'] . '&quot;. <font color=red><b>-1000</b></font> [' . floor(
$urs_st['hpNow']
) . '/' . $urs_st['hpAll'] . ']';
$cmsg->setText($rtxt);
$cmsg->setType(6);
$chat->sendMsg($cmsg);
unset($sx, $sx2);
} else {
$u->error = 'Не удалось кинуть снежок...';
}
}
} elseif ($itm['magic_inci'] == 'atack') { //заклятье нападения
$usta = $u->getStats($usr['id'], 0); // статы цели
$rgd = $u->regen($usr['id'], $usta, 1);
$usta['hpNow'] = $rgd['hpNow'];
$usta['mpNow'] = $rgd['mpNow'];
$minHp = floor(
$usta['hpAll'] / 100 * 33
); // минимальный запас здоровья цели при котором можно напасть
$batlatest = mysql_fetch_array(
mysql_query(
'SELECT * FROM `battle` WHERE `id` = "' . $usr['battle'] . '" AND `team_win` = -1 LIMIT 1'
)
);
$test = mysql_fetch_array(
mysql_query(
'SELECT `id` FROM `battle_last` WHERE `uid` = "' . $u->info['id'] . '" AND `battle_id` = "' . $usr['battle'] . '" LIMIT 1'
)
);
if (isset($test['id'])) {
echo 'Нельзя вмешаться, вы уже были в этом поединке.';
} elseif (time() - $usr['timereg'] < 86400 * 10) {
$u->error = 'Нападать на новичков запрещается! Сейчас придет Мироздатель и превратит тебя в лягушку...';
} elseif ($usr['atack'] == 1 || $usr['atack'] > time()) {
$u->error = 'На персонаже метка нападения, нападайте через неё...';
} elseif ($u->info['dnow'] != $usr['dnow']) {
$u->error = 'Персонаж находится в другой комнате (пещере)';
} elseif ($usr['inTurnirnew'] > 0) {
$u->error = 'Персонаж принимает участие в турнире';
} elseif ($u->info['battle'] > 0) {
$u->error = 'Вы уже находитесь в бою';
} elseif ($usr['id'] == $u->info['id']) {
$u->error = 'Нельзя нападать на самого себя';
} elseif ($usr['bot'] == 2) {
$u->error = 'Не удалость напасть на бота ' . $usr['login'] . '';
} elseif ($usr['online'] < time() - 120) {
$u->error = 'Персонаж не в сети';
} elseif ($usr['admin'] == 1) {
$u->error = 'Уважайте хранителей...';
} elseif ($usr['room'] != $u->info['room'] && $u->info['battle'] != $usr['battle'] && $u->info['battle'] > 0) {
$u->error = 'Персонаж находится в другой комнате!';
} elseif ($usr['room'] != $u->info['room']) {
$u->error = 'Персонаж находится в другой комнате';
} elseif ($batlatest['noatack'] == 1) {
$u->error = 'Поединок защищен магией! Вы не можете вмешаться!';
} elseif ($minHp > $usta['hpNow'] && !isset($batlatest['id'])) {
//мало хп
$u->error = 'Персонаж слишком слаб (' . floor($usta['hpNow']) . 'HP)';
} elseif ($u->info['noatack'] != 0) {
//мало хп
$u->error = 'В этой комнате нападения запрещены.';
} else {
if ($usr['type_pers'] > 0) {
$kroww = $usr['type_pers'];
} elseif ($itm['item_id'] == '2391') {
$kroww = 99;
} elseif ($itm['item_id'] == '11117') {
$kroww = 222;
} else {
$kroww = 0;
}
$kulak = 0;
if ($itm['item_id'] == 4404) {
$kulak = 1;
}
if ($u->info['inTurnir'] > 0) {
$bsi = $u->info['inTurnir'];
} else {
$bsi = 0;
}
$atc = $this->atackUser(
$u->info['id'], $usr['id'], $usr['team'], $usr['battle'], 0, $kroww, $kulak, $bsi
);
if ($atc > 0) {
//отправляем системку в чат
$sx = '';
if ($u->info['sex'] == 1) {
$sx = 'а';
}
$itm['iznosNOW']++;
if ($itm['inGroup'] > 0 && $itm['delete'] == 0) {
mysql_query(
'UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
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]] &quot;' . $u->info['login'] . '&quot; использовал' . $sx . ' магию нападения на персонажа &quot;' . $usr['login'] . '&quot;.';
$cmsg->setText($rtxt);
$cmsg->setType(11);
$chat->sendMsg($cmsg);
//напали, обновляем экран
die('<script>top.frames[\'main\'].location = "main.php";</script>');
} else {
if ($u->error == '') {
$u->error = 'Не удалось напасть на персонажа...';
}
}
}
} elseif ($itm['magic_inci'] == 'cureHP') {
//Реген НР,MP
$po = Conversion::dataStringToArray($itm['data']);
if ($u->info['battle'] > 0) {
//используем свиток в поединке
$bu = mysql_fetch_array(
mysql_query(
'SELECT * FROM `spells` WHERE `btl` = "' . $u->info['battle'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
)
);
if (isset($bu['id'])) {
$u->error = 'Нельзя использовать свиток каждый ход...';
} elseif ($usr['battle'] != $u->info['battle']) {
$u->error = 'Неудалось использовать, персонаж в другом поединке...';
} elseif ($usr['team'] != $u->info['team']) {
$u->error = 'Неудалось использовать на противника...';
} elseif ($usr['hpNow'] < 1) {
$u->error = 'Неудалось использовать на мертвых...';
} elseif ($u->info['hpNow'] < 1) {
$u->error = 'Неудалось использовать, вы погибли...';
} elseif ($btl->i->noeff > 0) {
$u->error = 'Запрет на использования свитков восстановления';
} elseif ($po['magic_hpNow'] < 1 && $po['magic_mpNow'] < 1) {
$u->error = 'Неудалось использовать, в магическом свитке нет магии...';
} elseif (($usr['battle'] == $u->info['battle'] && ($u->info['team'] == $usr['team'] && ($po['magic_hpNow'] > 0 || $po['magic_mpNow'] > 0))) && $usr['hpNow'] >= 1 && $u->info['hpNow'] >= 1) {
//кастуем
if (isset($po['magic_hpNow'])) {
mysql_query(
'INSERT INTO `spells` (`btl`,`uid`,`time`,`item_id`,`var`,`hod`) VALUES (
"' . $u->info['battle'] . '","' . $u->info['id'] . '","' . time() . '","' . $itm['item_id'] . '","' . $itm['name'] . '","1"
)'
);
$txt = $po['magic_hpNow'];
if ($btl->stats[$btl->uids[$usr['id']]]['hpAll'] - $btl->stats[$btl->uids[$usr['id']]]['hpNow'] < $txt) {
$txt = floor(
$btl->stats[$btl->uids[$usr['id']]]['hpAll'] - $btl->stats[$btl->uids[$usr['id']]]['hpNow']
);
}
//653 - 400
//253
//453 1306
$gdhh = round($txt / $btl->stats[$btl->uids[$usr['id']]]['hpAll'] * 5, 2);
$gdhd = round($gdhh / $btl->users[$btl->uids[$usr['id']]]['tactic7'] * 100);
if ($gdhd > 100) {
$txt = floor($txt / 100 * $gdhd);
}
if ($btl->users[$btl->uids[$usr['id']]]['tactic7'] >= 1) {
if ($txt > 0) {
$btl->stats[$btl->uids[$usr['id']]]['hpNow'] += $txt;
$btl->users[$btl->uids[$usr['id']]]['tactic7'] -= $gdhh;
if ($btl->users[$btl->uids[$usr['id']]]['tactic7'] < 0) {
$btl->users[$btl->uids[$usr['id']]]['tactic7'] = 0;
}
}
mysql_query(
'UPDATE `stats` SET `last_hp` = "' . $txt . '", `hpNow` = `hpNow` + ' . $po['magic_hpNow'] . ', `tactic7` = "' . $btl->users[$btl->uids[$usr['id']]]['tactic7'] . '" WHERE `id` = "' . $usr['id'] . '" LIMIT 1'
);
if ($txt > 0) {
$txt = '+' . $txt;
} elseif ($txt == 0) {
$txt = '--';
}
} else {
$txt = '--';
}
$lastHOD = mysql_fetch_array(
mysql_query(
'SELECT * FROM `battle_logs` WHERE `battle` = "' . $u->info['battle'] . '" ORDER BY `id_hod` DESC LIMIT 1'
)
);
if (isset($lastHOD['id'])) {
$btl->stats[$btl->uids[$usr['id']]]['hpNow'] = floor(
$btl->stats[$btl->uids[$usr['id']]]['hpNow']
);
if ($btl->stats[$btl->uids[$usr['id']]]['hpNow'] > $btl->stats[$btl->uids[$usr['id']]]['hpAll']) {
$btl->stats[$btl->uids[$usr['id']]]['hpNow'] = $btl->stats[$btl->uids[$usr['id']]]['hpAll'];
}
if ($btl->stats[$btl->uids[$usr['id']]]['hpNow'] < 1) {
$btl->stats[$btl->uids[$usr['id']]]['hpNow'] = 0;
}
$id_hod = $lastHOD['id_hod'];
if ($lastHOD['type'] != 6) {
$id_hod++;
}
$txt = '<font color=#006699>' . $txt . '</font>';
if ($u->info['id'] == $usr['id']) {
if ($u->info['sex'] == 1) {
$txt = '{u1} использовала &quot;<b>' . $itm['name'] . '</b>&quot; на себя. <b>' . $txt . '</b> [' . $btl->stats[$btl->uids[$usr['id']]]['hpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['hpAll'] . ']';
} else {
$txt = '{u1} использовал &quot;<b>' . $itm['name'] . '</b>&quot; на себя. <b>' . $txt . '</b> [' . $btl->stats[$btl->uids[$usr['id']]]['hpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['hpAll'] . ']';
}
} else {
if ($u->info['sex'] == 1) {
$txt = '{u1} использовала &quot;<b>' . $itm['name'] . '</b>&quot; на {u2}. <b>' . $txt . '</b> [' . $btl->stats[$btl->uids[$usr['id']]]['hpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['hpAll'] . ']';
} else {
$txt = '{u1} использовал &quot;<b>' . $itm['name'] . '</b>&quot; на {u2}. <b>' . $txt . '</b> [' . $btl->stats[$btl->uids[$usr['id']]]['hpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['hpAll'] . ']';
}
}
mysql_query(
'INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . time() . '","' . $u->info['battle'] . '","' . ($id_hod) . '","{tm1} ' . $txt . '","login1=' . $u->info['login'] . '||t1=' . $u->info['team'] . '||login2=' . $usr['login'] . '||t2=' . $usr['team'] . '||time1=' . time() . '","","","","","6")'
);
}
}
$itm['iznosNOW']++;
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
);
// сообщение в лог боя
$sx = 'ый';
$sx2 = '';
if ($u->info['sex'] == 1) {
$sx = 'ая';
$sx2 = 'а';
}
$u->error = 'Свиток &quot;' . $itm['name'] . '&quot; был успешно использован.';
} else {
$u->error = 'Нельзя использовать на данного персонажа';
}
} elseif ($u->info['dnow'] != $usr['dnow']) {
$u->error = 'Персонаж находится в другой комнате [пещера]';
} elseif ($usr['online'] < time() - 120 && $usr['bot'] == 0) {
$u->error = 'Персонаж находится в реальном мире';
} elseif ($usr['room'] != $u->info['room']) {
$u->error = 'Персонаж находится в другой комнате';
} elseif ($usr['battle'] != $u->info['battle']) {
$u->error = 'Персонаж находится в поединке';
} else {
//кастуем
if (isset($po['magic_hpNow'])) {
mysql_query(
'UPDATE `stats` SET `hpNow` = `hpNow` + ' . $po['magic_hpNow'] . ' WHERE `id` = "' . $usr['id'] . '" LIMIT 1'
);
}
$itm['iznosNOW']++;
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
);
if ($itm['inGroup'] > 0 && $itm['delete'] == 0) {
mysql_query(
'UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
// сообщение в чат
$sx = 'ый';
$sx2 = '';
if ($u->info['sex'] == 1) {
$sx = 'ая';
$sx2 = 'а';
}
$u->error = 'Свиток &quot;' . $itm['name'] . '&quot; был успешно использован.';
$rtxt = '[img[items/' . $itm['img'] . ']] Персонаж &quot;' . $u->info['login'] . '&quot; использовал' . $sx2 . ' &quot;' . $itm['name'] . '&quot; на &quot;' . $usr['login'] . '&quot;.';
$cmsg = new ChatMessage();
$cmsg->setCity($u->info['city']);
$cmsg->setRoom($u->info['room']);
$cmsg->setText($rtxt);
$cmsg->setType(6);
$cmsg->setTypeTime(1);
(new Chat())->sendMsg($cmsg);
}
} elseif ($itm['magic_inci'] == 'cureMP') {
//Реген НР,MP
$po = Conversion::dataStringToArray($itm['data']);
if ($u->info['battle'] > 0) {
//используем свиток в поединке
$bu = mysql_fetch_array(
mysql_query(
'SELECT * FROM `spells` WHERE `btl` = "' . $u->info['battle'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
)
);
if (isset($bu['id'])) {
$u->error = 'Нельзя использовать свиток каждый ход...';
} elseif ($btl->i->noeff > 0) {
$u->error = 'Запрет на использования свитков восстановления';
} elseif (($usr['battle'] == $u->info['battle'] && ($u->info['team'] == $usr['team'] && ($po['magic_hpNow'] > 0 || $po['magic_mpNow'] > 0))) && $usr['hpNow'] > 1 && $u->info['hpNow'] >= 1) {
//кастуем
if (isset($po['magic_mpNow'])) {
mysql_query(
'INSERT INTO `spells` (`btl`,`uid`,`time`,`item_id`,`var`,`hod`) VALUES (
"' . $u->info['battle'] . '","' . $u->info['id'] . '","' . time() . '","' . $itm['item_id'] . '","' . $itm['name'] . '","1"
)'
);
$txt = $po['magic_mpNow'];
if ($btl->stats[$btl->uids[$usr['id']]]['mpAll'] - $btl->stats[$btl->uids[$usr['id']]]['mpNow'] < $txt) {
$txt = floor(
$btl->stats[$btl->uids[$usr['id']]]['mpAll'] - $btl->stats[$btl->uids[$usr['id']]]['mpNow']
);
}
$gdhh = round($txt / $btl->stats[$btl->uids[$usr['id']]]['mpAll'] * 5);
$gdhd = round($gdhh / $btl->users[$btl->uids[$usr['id']]]['tactic7'] * 100);
if ($gdhd > 100) {
$txt = floor($txt / 100 * $gdhd);
}
if ($btl->users[$btl->uids[$usr['id']]]['tactic7'] >= 1) { // поставить >= 1 , если требует дух
if ($txt > 0) {
$btl->stats[$btl->uids[$usr['id']]]['mpNow'] += $txt;
$btl->users[$btl->uids[$usr['id']]]['tactic7'] -= $gdhh;
if ($btl->users[$btl->uids[$usr['id']]]['tactic7'] < 0) {
$btl->users[$btl->uids[$usr['id']]]['tactic7'] = 0;
}
}
mysql_query(
'UPDATE `stats` SET `mpNow` = `mpNow` + ' . $txt . ', `tactic7` = "' . $btl->users[$btl->uids[$usr['id']]]['tactic7'] . '" WHERE `id` = "' . $usr['id'] . '" LIMIT 1'
);
if ($txt > 0) {
$txt = '+' . $txt;
} elseif ($txt == 0) {
$txt = '--';
}
} else {
$txt = '--';
}
$lastHOD = mysql_fetch_array(
mysql_query(
'SELECT * FROM `battle_logs` WHERE `battle` = "' . $u->info['battle'] . '" ORDER BY `id_hod` DESC LIMIT 1'
)
);
if (isset($lastHOD['id'])) {
$btl->stats[$btl->uids[$usr['id']]]['mpNow'] = floor(
$btl->stats[$btl->uids[$usr['id']]]['mpNow']
);
if ($btl->stats[$btl->uids[$usr['id']]]['mpNow'] > $btl->stats[$btl->uids[$usr['id']]]['mpAll']) {
$btl->stats[$btl->uids[$usr['id']]]['mpNow'] = $btl->stats[$btl->uids[$usr['id']]]['mpAll'];
}
if ($btl->stats[$btl->uids[$usr['id']]]['mpNow'] < 1) {
$btl->stats[$btl->uids[$usr['id']]]['mpNow'] = 0;
}
$id_hod = $lastHOD['id_hod'];
if ($lastHOD['type'] != 6) {
$id_hod++;
}
$txt = '<font color=#006699>' . $txt . '</font>';
if ($u->info['id'] == $usr['id']) {
if ($u->info['sex'] == 1) {
$txt = '{u1} использовала &quot;<b>' . $itm['name'] . '</b>&quot; на себя. <b>' . $txt . '</b> [' . $btl->stats[$btl->uids[$usr['id']]]['mpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['mpAll'] . '] (Мана)';
} else {
$txt = '{u1} использовал &quot;<b>' . $itm['name'] . '</b>&quot; на себя. <b>' . $txt . '</b> [' . $btl->stats[$btl->uids[$usr['id']]]['mpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['mpAll'] . '] (Мана)';
}
} else {
if ($u->info['sex'] == 1) {
$txt = '{u1} использовала &quot;<b>' . $itm['name'] . '</b>&quot; на {u2}. <b>' . $txt . '</b> [' . $btl->stats[$btl->uids[$usr['id']]]['mpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['mpAll'] . '] (Мана)';
} else {
$txt = '{u1} использовал &quot;<b>' . $itm['name'] . '</b>&quot; на {u2}. <b>' . $txt . '</b> [' . $btl->stats[$btl->uids[$usr['id']]]['mpNow'] . '/' . $btl->stats[$btl->uids[$usr['id']]]['mpAll'] . '] (Мана)';
}
}
mysql_query(
'INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . time() . '","' . $u->info['battle'] . '","' . ($id_hod) . '","{tm1} ' . $txt . '","login1=' . $u->info['login'] . '||t1=' . $u->info['team'] . '||login2=' . $usr['login'] . '||t2=' . $usr['team'] . '||time1=' . time() . '","","","","","6")'
);
}
}
$itm['iznosNOW']++;
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
);
// сообщение в лог боя
$sx = 'ый';
$sx2 = '';
if ($u->info['sex'] == 1) {
$sx = 'ая';
$sx2 = 'а';
}
$u->error = 'Свиток &quot;' . $itm['name'] . '&quot; был успешно использован.';
} else {
$u->error = 'Нельзя использовать на данного персонажа';
}
} elseif ($u->info['dnow'] != $usr['dnow']) {
$u->error = 'Персонаж находится в другой комнате [пещера]';
} elseif ($usr['online'] < time() - 120 && $usr['bot'] == 0) {
$u->error = 'Персонаж находится в реальном мире';
} elseif ($usr['room'] != $u->info['room']) {
$u->error = 'Персонаж находится в другой комнате';
} elseif ($usr['battle'] != $u->info['battle']) {
$u->error = 'Персонаж находится в поединке';
} else {
//кастуем
if (isset($po['magic_mpNow'])) {
mysql_query(
'UPDATE `stats` SET `mpNow` = `mpNow` + ' . $po['magic_mpNow'] . ' WHERE `id` = "' . $usr['id'] . '" LIMIT 1'
);
}
$itm['iznosNOW']++;
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
);
if ($itm['inGroup'] > 0 && $itm['delete'] == 0) {
mysql_query(
'UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
// сообщение в чат
$sx = 'ый';
$sx2 = '';
if ($u->info['sex'] == 1) {
$sx = 'ая';
$sx2 = 'а';
}
$u->error = 'Свиток &quot;' . $itm['name'] . '&quot; был успешно использован.';
$rtxt = '[img[items/' . $itm['img'] . ']] Персонаж &quot;' . $u->info['login'] . '&quot; использовал' . $sx2 . ' &quot;' . $itm['name'] . '&quot; на &quot;' . $usr['login'] . '&quot;.';
$cmsg = new ChatMessage();
$cmsg->setCity($u->info['city']);
$cmsg->setRoom($u->info['room']);
$cmsg->setText($rtxt);
$cmsg->setType(6);
$cmsg->setTypeTime(1);
(new Chat())->sendMsg($cmsg);
}
} elseif ($itm['magic_inci'] == 'lech_1' or $itm['magic_inci'] == 'lech_2' or $itm['magic_inci'] == 'lech_3') {
if ($u->info['battle'] > 0) {
//используем свиток в поединке
} elseif ($u->info['dnow'] != $usr['dnow']) {
$u->error = 'Персонаж находится в другой комнате [пещера]';
} elseif ($usr['online'] < time() - 120 && $usr['bot'] == 0) {
$u->error = 'Персонаж находится в реальном мире';
} elseif ($usr['room'] != $u->info['room']) {
$u->error = 'Персонаж находится в другой комнате';
} elseif ($usr['battle'] != $u->info['battle']) {
$u->error = 'Персонаж находится в поединке';
} else {
$travm = mysql_fetch_array(
mysql_query(
'SELECT * FROM `eff_users` WHERE `uid`="' . $usr['id'] . '" and `id_eff`="4" and `delete`="0" ORDER BY `v1` DESC LIMIT 1'
)
);
//$type_lechenie = $travm['v1'];
$itm['magic_inci'] = 'lech_' . $travm['v1'];
if ($itm['magic_inci'] == 'lech_1') {
$type_lechenie = 1; // тип травмы котору лечим
$text_msg = '&quot;Легкой травмы&quot;';
$text_msg2 = 'легких';
} elseif ($itm['magic_inci'] == 'lech_2') {
$type_lechenie = 2; // тип травмы котору лечим
$text_msg = '&quot;Средней травмы&quot;';
$text_msg2 = 'средних';
} elseif ($itm['magic_inci'] == 'lech_3') {
$type_lechenie = 3; // тип травмы котору лечим
$text_msg = '&quot;Тяжелой травмы&quot;';
$text_msg2 = 'тяжелых';
}
if ($travm) {
$lech_aa = [0, 2, 3, 4];
$travm_cep = mysql_fetch_array(
mysql_query(
'SELECT * FROM `eff_users` WHERE `uid`="' . $usr['id'] . '" and `id_eff`="335" and `delete`="0" and `v1`="' . $type_lechenie . '" LIMIT 1'
)
);
if ($travm_cep['timeUse'] < time() - 360) {
unset($travm_cep);
}
$cep_users = explode(',', $travm_cep['data']);
$it_i = 0;
$it_no = 0;
$it_users = '';
while ($it_i < count($cep_users)) {
$it_u = $cep_users[$it_i];
if ($it_u == $u->info['id']) {
$it_no = 1;
}
$it_u = mysql_fetch_array(
mysql_query(
'SELECT `id`,`login`,`level`,`align`,`clan`,`room` FROM `users` WHERE `id` = "' . $it_u . '" LIMIT 1'
)
);
if (isset($it_u['id'])) {
$it_users .= ', ' . $it_u['login'] . '';
}
$it_i++;
}
$it_u = ltrim($it_u, ', ');
$lech_co = round($travm_cep['x'] + 1);
if ($it_no == 1) {
$u->error = 'Вы уже один из лекарей';
} elseif ($lech_co >= $lech_aa[$type_lechenie]) {
mysql_query(
'UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $travm['id'] . '" LIMIT 1'
);
$itm['iznosNOW']++;
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
);
if ($itm['inGroup'] > 0 && $itm['delete'] == 0) {
mysql_query(
'UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
$rtxt = '[img[items/cure_g1.gif]] Лекарь &quot;' . $u->info['login'] . '&quot; кинул цепь исцеления на игрока &quot;' . $usr['login'] . '&quot;.';
$cmsg = new ChatMessage();
$cmsg->setCity($u->info['city']);
$cmsg->setRoom($u->info['room']);
$cmsg->setText($rtxt);
$cmsg->setType(6);
$cmsg->setTypeTime(1);
(new Chat())->sendMsg($cmsg);
//mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$travm_cep['id'].'" LIMIT 1');
mysql_query(
'UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $usr['id'] . '" AND `id_eff` = 4 AND `delete` = 0 LIMIT 1'
);
// сообщение в чат
$u->error = 'Персонаж излечен от ' . $text_msg . '.';
$rtxt = '[img[items/cure' . $type_lechenie . '.gif]] Лекари &quot;' . $u->info['login'] . $it_users . '&quot; вылечили от ' . $text_msg . ' игрока &quot;' . $usr['login'] . '&quot;.';
$cmsg = new ChatMessage();
$cmsg->setCity($u->info['city']);
$cmsg->setRoom($u->info['room']);
$cmsg->setText($rtxt);
$cmsg->setType(6);
$cmsg->setTypeTime(1);
(new Chat())->sendMsg($cmsg);
} else {
if (isset($travm_cep['id'])) {
$travm_cep['x']++;
$u->error = 'Вы присоединились к цепи исцеления для &quot;' . $text_msg . '&quot; (исцеление ' . $text_msg2 . ' травм)';
mysql_query(
'UPDATE `eff_users` SET `x` = "' . $travm_cep['x'] . '"
,`data` = "' . $travm_cep['data'] . ',' . $u->info['id'] . '"
WHERE `id` = "' . $travm_cep['id'] . '" LIMIT 1'
);
} else {
$u->error = 'Вы создали цепь исцеления для &quot;' . $text_msg . '&quot; (исцеление ' . $text_msg2 . ' травм), у остальных лекарей есть 5 минут, чтобы завершить заклинание';
mysql_query(
'INSERT INTO `eff_users`
(
`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`user_use`,`v1`,`x`
) VALUES (
"335","' . $usr['id'] . '","Цепь исцеления","' . $u->info['id'] . '","28","' . time() . '","' . $u->info['id'] . '","' . $type_lechenie . '","1"
)'
);
}
//mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$travm['id'].'" LIMIT 1');
$itm['iznosNOW']++;
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
);
if ($itm['inGroup'] > 0 && $itm['delete'] == 0) {
mysql_query(
'UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
// сообщение в чат
$rtxt = '[img[items/cure_g1.gif]] Лекарь &quot;' . $u->info['login'] . '&quot; кинул цепь исцеления на игрока &quot;' . $usr['login'] . '&quot;.';
$cmsg = new ChatMessage();
$cmsg->setCity($u->info['city']);
$cmsg->setRoom($u->info['room']);
$cmsg->setText($rtxt);
$cmsg->setType(6);
$cmsg->setTypeTime(1);
(new Chat())->sendMsg($cmsg);
}
} else {
$u->error = 'Персонаж не имеет данной травмы.';
}
}
} elseif ($itm['magic_inci'] == 'lech_free_1' or $itm['magic_inci'] == 'lech_free_2' or $itm['magic_inci'] == 'lech_free_3') {
if ($u->info['battle'] > 0) {
//используем свиток в поединке
} elseif ($u->info['dnow'] != $usr['dnow']) {
$u->error = 'Персонаж находится в другой комнате [пещера]';
} elseif ($usr['online'] < time() - 120 && $usr['bot'] == 0) {
$u->error = 'Персонаж находится в реальном мире';
} elseif ($usr['room'] != $u->info['room']) {
$u->error = 'Персонаж находится в другой комнате';
} elseif ($usr['battle'] != $u->info['battle']) {
$u->error = 'Персонаж находится в поединке';
} else {
$travm = mysql_fetch_array(
mysql_query(
'SELECT * FROM `eff_users` WHERE `uid`="' . $usr['id'] . '" and `id_eff`="4" and `delete`="0" ORDER BY `v1` DESC LIMIT 1'
)
);
//$type_lechenie = $travm['v1'];
//$itm['magic_inci'] = 'lech_free_'.$travm['v1'];
if ($itm['magic_inci'] == 'lech_free_1') {
$type_lechenie = 1; // тип травмы котору лечим
$text_msg = '&quot;Легкой травмы&quot;';
$text_msg2 = 'легких';
} elseif ($itm['magic_inci'] == 'lech_free_2') {
$type_lechenie = 2; // тип травмы котору лечим
$text_msg = '&quot;Средней травмы&quot;';
$text_msg2 = 'средних';
} elseif ($itm['magic_inci'] == 'lech_free_3') {
$type_lechenie = 3; // тип травмы котору лечим
$text_msg = '&quot;Тяжелой травмы&quot;';
$text_msg2 = 'тяжелых';
}
if ($travm['v1'] != $type_lechenie) {
$u->error = 'Неподходящий свиток для данной травмы.';
} elseif ($travm['id']) {
$lech_aa = [0, 0, 0, 0];
$travm_cep = mysql_fetch_array(
mysql_query(
'SELECT * FROM `eff_users` WHERE `uid`="' . $usr['id'] . '" and `id_eff`="335" and `delete`="0" and `v1`="' . $type_lechenie . '" LIMIT 1'
)
);
if ($travm_cep['timeUse'] < time() - 360) {
unset($travm_cep);
}
$cep_users = explode(',', $travm_cep['data']);
$it_i = 0;
$it_no = 0;
$it_users = '';
while ($it_i < count($cep_users)) {
$it_u = $cep_users[$it_i];
if ($it_u == $u->info['id']) {
$it_no = 1;
}
$it_u = mysql_fetch_array(
mysql_query(
'SELECT `id`,`login`,`level`,`align`,`clan`,`room` FROM `users` WHERE `id` = "' . $it_u . '" LIMIT 1'
)
);
if (isset($it_u['id'])) {
$it_users .= ', ' . $it_u['login'] . '';
}
$it_i++;
}
$it_u = ltrim($it_u, ', ');
$lech_co = round($travm_cep['x'] + 1);
if ($it_no == 1) {
$u->error = 'Вы уже один из лекарей';
} elseif ($lech_co >= $lech_aa[$type_lechenie]) {
mysql_query(
'UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $travm['id'] . '" LIMIT 1'
);
$itm['iznosNOW']++;
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
);
if ($itm['inGroup'] > 0 && $itm['delete'] == 0) {
mysql_query(
'UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
mysql_query(
'UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . $usr['id'] . '" AND `id_eff` = 4 AND `delete` = 0 LIMIT 1'
);
// сообщение в чат
$u->error = 'Персонаж излечен от ' . $text_msg . '.';
$rtxt = '[img[items/cure' . $type_lechenie . '.gif]] Лекари &quot;' . $u->info['login'] . $it_users . '&quot; вылечили от ' . $text_msg . ' игрока &quot;' . $usr['login'] . '&quot;.';
$cmsg = new ChatMessage();
$cmsg->setCity($u->info['city']);
$cmsg->setRoom($u->info['room']);
$cmsg->setText($rtxt);
$cmsg->setType(6);
$cmsg->setTypeTime(1);
(new Chat())->sendMsg($cmsg);
} else {
if (isset($travm_cep['id'])) {
$travm_cep['x']++;
$u->error = 'Вы присоединились к цепи исцеления для &quot;' . $text_msg . '&quot; (исцеление ' . $text_msg2 . ' травм)';
mysql_query(
'UPDATE `eff_users` SET `x` = "' . $travm_cep['x'] . '"
,`data` = "' . $travm_cep['data'] . ',' . $u->info['id'] . '"
WHERE `id` = "' . $travm_cep['id'] . '" LIMIT 1'
);
} else {
$u->error = 'Вы создали цепь исцеления для &quot;' . $text_msg . '&quot; (исцеление ' . $text_msg2 . ' травм), у остальных лекарей есть 5 минут, чтобы завершить заклинание';
mysql_query(
'INSERT INTO `eff_users`
(
`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`user_use`,`v1`,`x`
) VALUES (
"335","' . $usr['id'] . '","Цепь исцеления","' . $u->info['id'] . '","28","' . time() . '","' . $u->info['id'] . '","' . $type_lechenie . '","1"
)'
);
}
$itm['iznosNOW']++;
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
);
if ($itm['inGroup'] > 0 && $itm['delete'] == 0) {
mysql_query(
'UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
// сообщение в чат
$rtxt = '[img[items/cure_g1.gif]] Лекарь &quot;' . $u->info['login'] . '&quot; кинул цепь исцеления на игрока &quot;' . $usr['login'] . '&quot;.';
$cmsg = new ChatMessage();
$cmsg->setCity($u->info['city']);
$cmsg->setRoom($u->info['room']);
$cmsg->setText($rtxt);
$cmsg->setType(6);
$cmsg->setTypeTime(1);
(new Chat())->sendMsg($cmsg);
}
} else {
$u->error = 'Персонаж не имеет данной травмы.';
}
}
} else {
if ($u->info['id'] != $usr['id']) {
$lsct = mysql_fetch_array(
mysql_query(
'SELECT `id_eff` FROM `eff_users` WHERE `uid` = "' . $usr['id'] . '" AND `delete` = "0" AND (`overType` = "' . $itm['overType'] . '" OR (`id_eff` = "' . $itm['magic_inc'] . '" AND "' . (0 + $st['onlyOne']) . '" != "0")) LIMIT 1'
)
);
$lsct['good'] = 1;
//Касты
if ($lsct['id_eff'] >= 291 && $lsct['id_eff'] <= 296 && $itm['magic_inc'] >= 291 && $itm['magic_inc'] <= 296) {
if ($lsct['id_eff'] > $itm['magic_inc']) {
$u->error = 'На персонаже есть каст лучше этого!';
$lsct['good'] = 0;
}
}
} else {
$lsct['good'] = 1;
}
//просто используем на персонажа
if ($lsct['good'] == 0) {
} elseif ($u->info['dnow'] != $usr['dnow']) {
$u->error = 'Персонаж находится в другой комнате [пещера]';
} elseif ($usr['room'] == 217 || $usr['room'] == 218 || $usr['room'] == 219) {
$u->error = 'Персонаж ' . User::getLogin($usr['id']) . ' находится в Общежитии!';
} elseif ($usr['inTurnir'] != 0 && ($u->info['inTurnir'] != $usr['inTurnir'])) {
$u->error = 'Участвует в турнире Башни смерти...';
} elseif ($usr['id'] == $u->info['id'] && isset($st['useOnlyUser'])) {
$u->error = 'Нельзя использовать это заклятие на самого себя';
} elseif ($usr['online'] < time() - 120 && $usr['bot'] == 0) {
$u->error = 'Персонаж находится в реальном мире ;)';
} elseif ($usr['room'] != $u->info['room'] && $usr['battle'] != $u->info['battle'] && $u->info['battle'] > 0) {
$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;
//
$tpsm = 0;
if ($itm['useInBattle'] == 0 && $usr['battle'] > 0) {
//Нельзя юзать
$goodUse = 0;
} else {
if ($usr['battle'] > 0) {
global $btl;
if ($u->info['team'] != $btl->users[$btl->uids[$usr['id']]]['team']) {
if ($itm['useInBattle'] == 1) {
$goodUse = 0;
}
$tpsm = 2;
} elseif ($u->info['team'] == $btl->users[$btl->uids[$usr['id']]]['team']) {
if ($itm['useInBattle'] == 2) {
$goodUse = 0;
}
$tpsm = 1;
}
}
}
//
if ($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 && $itm['magic_inc'] == 'unclone') {
//Переманить клона
if ($usr['clone'] > 0 && $usr['hpNow'] >= 1 && $usr['team'] != $u->info['team']) {
mysql_query(
'UPDATE `stats` SET `team` = "' . $u->info['team'] . '" WHERE `id` = "' . $usr['id'] . '" LIMIT 1'
);
if ($u->info['sex'] == 0) {
$txt_m = '{u1} <b>переманил клона</b> {u2} на свою сторону.';
} else {
$txt_m = '{u1} <b>переманила</b> клона {u2} на свою сторону.';
}
$this->inBattleLog($txt_m, $usr);
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = "' . ($itm['iznosNOW'] + 1) . '" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
mysql_query(
'UPDATE `items_users` SET `btl_zd` = "1" WHERE `item_id` = "' . $itm['item_id'] . '" AND `inOdet` > 0 AND `uid` = "' . $u->info['id'] . '" AND `delete` = "0" LIMIT 20'
);
$u->error = 'Вы успешно использовали заклинание &quot;' . $itm['name'] . '&quot; на &quot;' . $usr['login'] . '&quot;';
} else {
$u->error = 'Вы не можете переманивать данного персонажа...';
}
} elseif ($goodUse == 1) {
$us = $this->addEffect($usr['id'], $itm['magic_inc']);
if ($us[0] == 1) {
$mmmid = mysql_insert_id();
$itm['iznosNOW']++;
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
);
if ($itm['inGroup'] > 0 && $itm['delete'] == 0) {
mysql_query(
'UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
if ($u->info['id'] != $usr['id']) {
Delo::add(
1,
'System.inventory',
$u->info['id'],
'&quot;<span style="color: maroon; ">System.inventory</span>&quot;: Персонаж использовал заклинание &quot;' . $itm['name'] . '&quot; (' . $us[1] . ') на персонажа &quot;' . $usr['login'] . '&quot; (id' . $usr['id'] . ') [itm:' . $itm['id'] . '].',
);
Delo::add(
1,
'System.inventory',
$usr['id'],
'&quot;<span style="color: maroon; ">System.inventory</span>&quot;: Персонаж &quot;' . $u->info['login'] . '&quot; (id' . $u->info['id'] . ') использовал заклинание &quot;' . $itm['name'] . '&quot; (' . $us[1] . ') на персонажа [itm:' . $itm['id'] . '].',
);
$u->error = 'Вы успешно использовали заклинание &quot;' . $itm['name'] . '&quot; на персонажа &quot;' . $usr['login'] . '&quot;<br>' . $us[1] . '';
} else {
Delo::add(
1,
'System.inventory',
$u->info['id'],
'&quot;<span style="color: maroon; ">System.inventory</span>&quot;: Персонаж использовал заклинание &quot;' . $itm['name'] . '&quot; (' . $us[1] . ') на персонажа самого себя [itm:' . $itm['id'] . '].',
);
$u->error = 'Вы успешно использовали заклинание &quot;' . $itm['name'] . '&quot; на самого себя<br>' . $us[1] . '';
}
//
if ($usr['battle'] > 0) {
//Заносим в лог
$txt_m = '';
if ($u->info['sex'] == 0) {
if ($u->info['id'] != $usr['id']) {
$txt_m .= '{u1} воспользовался магией &quot;<b>' . $itm['name'] . '</b>&quot; на {u2}.';
} else {
$txt_m .= '{u1} воспользовался магией &quot;<b>' . $itm['name'] . '</b>&quot; на себя.';
}
} else {
if ($u->info['id'] != $usr['id']) {
$txt_m .= '{u1} воспользовалась магией &quot;<b>' . $itm['name'] . '</b>&quot; на {u2}.';
} else {
$txt_m .= '{u1} воспользовалась магией &quot;<b>' . $itm['name'] . '</b>&quot; на себя.';
}
}
$this->inBattleLog($txt_m, $usr);
//
//По завершению боя эффект должен слетать
//306 - положительное , 307 - отрицательное
if ($tpsm == 1) {
//306
mysql_query(
'UPDATE `eff_users` SET `v1` = "priem",`v2` = "306",`timeUse` = "77",`hod` = "-1",`img2` = "' . $itm['img'] . '" WHERE `id` = "' . $mmmid . '" LIMIT 1'
);
} elseif ($tpsm == 2) {
//307
mysql_query(
'UPDATE `eff_users` SET `v1` = "priem",`v2` = "307",`timeUse` = "77",`hod` = "-1",`img2` = "' . $itm['img'] . '" WHERE `id` = "' . $mmmid . '" LIMIT 1'
);
}
//
}
//
$this->youuse++;
} else {
$u->error = 'Не удалось использовать "' . $itm['name'] . '" ... (' . $itm['magin_inc'] . ' and ' . $itm['magic_inci'] . ', Эффект не добавлен)';
}
} else {
$u->error = 'Не удалось использовать "' . $itm['name'] . '"';
}
}
}
} else {
$u->error = 'Персонаж "' . $jl . '" не найден в этом городе (' . $u->info['city'] . ')';
}
} else {
//на себя
$goodUse = 1;
if (($u->info['align'] == 2 || $u->info['haos'] > time()) && isset($st['nohaos'])) {
$goodUse = 0;
$u->error = 'Хаосники не могут использовать данное заклятие';
}
if ($itm['magic_inci'] == 'lech') {
$goodUse = 0;
if ($u->info['level'] >= 2 and $u->info['level'] <= 13) {
$travm = mysql_fetch_array(
mysql_query(
'SELECT * FROM `eff_users` WHERE `uid`="' . $u->info['id'] . '" and `id_eff`="4" and `delete`="0" LIMIT 1'
)
);
if ($travm && $travm['v1'] == 4) {
$u->error = 'У вас неизлечимая травма, вам помогут только боги или время.';
} elseif ($travm) {
mysql_query(
'UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $travm['id'] . '" LIMIT 1'
);
$itm['iznosNOW']++;
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
);
if ($itm['inGroup'] > 0 && $itm['delete'] == 0) {
mysql_query(
'UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
} else {
$u->error = 'У вас нету травмы.';
}
} else {
$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'] == 'unclone') {
//Свиток клонирования
if ($u->info['hpNow'] < 1) {
$u->error = 'Вам не удалось переманить клона...';
} elseif ($u->info['battle'] == 0) {
$u->error = 'Можно использовать только в поединке...';
} else {
//Преманиваем
$u->error = 'Переманили...';
}
} elseif ($itm['magic_inci'] == 'cloneMe') {
//Свиток клонирования
if (true == false) {
$u->error = 'Свитки клонирования запрещены в нашем проекте.';
} elseif ($u->info['hpNow'] < 1) {
$u->error = 'Вы успешно клонировали свой труп ;)';
} elseif ($u->info['battle'] == 0) {
$u->error = 'Можно использовать только в поединке...';
} else {
$bot_cou = mysql_fetch_array(
mysql_query(
'SELECT COUNT(`id`) FROM `users` WHERE `login` LIKE "%' . $u->info['login'] . ' (клон%" AND `battle` = "' . $u->info['battle'] . '" LIMIT 1'
)
);
$bot_cou = $bot_cou[0] + 1;
//Добавляем бота
$clone = [
'id' => $u->info['id'],
'login' => $u->info['login'] . ' (клон ' . $bot_cou . ')',
'level' => $u->info['level'],
'city' => $u->info['city'],
'cityreg' => $u->info['cityreg'],
'name' => $u->info['name'],
'sex' => $u->info['sex'],
'hobby' => $u->info['hobby'],
'time_reg' => $u->info['time_reg'],
'obraz' => $u->info['obraz'],
'stats' => $u->info['stats'],
'upLevel' => $u->info['upLevel'],
'priems' => $u->info['priems'],
'loclon' => true,
'inTurnir' => $u->info['inTurnir'],
];
$bot = $u->addNewbot(1, null, $clone, null, true);
if ($bot > 0) {
mysql_query(
'UPDATE `stats` SET `team` = "' . $u->info['team'] . '",`hpNow` = "' . $u->stats['hpNow'] . '",`mpNow` = "' . $u->stats['mpNow'] . '" WHERE `id` = "' . $bot . '" LIMIT 1'
);
mysql_query(
'UPDATE `users` SET `battle` = "' . $u->info['battle'] . '" WHERE `id` = "' . $bot . '" LIMIT 1'
);
//Доабвляем лог
if ($u->info['sex'] == 0) {
$txt_m = '{u1} использовал &quot;' . $itm['name'] . '&quot; и <b>породил клона</b>.';
} else {
$txt_m = '{u1} использовала &quot;' . $itm['name'] . '&quot; и <b>породила клона</b>.';
}
$this->inBattleLog($txt_m, null);
if ($u->info['sex'] == 0) {
$txt_m = '<b>' . $u->info['login'] . ' (клон ' . $bot_cou . ')</b>[' . $u->info['level'] . '] вмешался в поединок!';
} else {
$txt_m = '<b>' . $u->info['login'] . ' (клон ' . $bot_cou . ')</b>[' . $u->info['level'] . '] вмешалась в поединок!';
}
$this->inBattleLog($txt_m, $usr_m);
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = "' . ($itm['iznosNOW'] + 1) . '" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
mysql_query(
'UPDATE `items_users` SET `btl_zd` = "1" WHERE `item_id` = "' . $itm['item_id'] . '" AND `inOdet` > 0 AND `uid` = "' . $u->info['id'] . '" AND `delete` = "0" LIMIT 20'
);
$u->error = 'Заклятие &quot;' . $itm['name'] . '&quot; было успешно использовано';
} else {
$u->error = 'Неудалось использовать заклятие...';
}
unset($txt_m, $usr_m, $clone, $bot_cou, $bot);
}
} elseif ($itm['magic_inci'] == 'scan') {
if ($u->info['inTurnir'] != 0) {
$sp = mysql_query(
'SELECT `st`.*, `u`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `inTurnir` = "' . $u->info['inTurnir'] . '"'
);
while ($pl = mysql_fetch_array($sp)) {
$rrm = mysql_fetch_array(
mysql_query(
'SELECT * FROM `bs_map` WHERE `x` = "' . $pl['x'] . '" AND `y` = "' . $pl['y'] . '"'
)
);
$trnt .= $pl['login'] . ' Комната : ' . $rrm['name'] . ', ';
}
$trnt = rtrim($trnt, ', ');
$it_ = ItemsModel::addItem(
2435, $u->info['id'], 'noodet=1|noremont=1|sudba=' . $u->info['login'] . ''
);
mysql_query(
'UPDATE `items_users` SET `use_text` = 500 WHERE `id` = "' . $it_ . '" LIMIT 1'
);
mysql_query(
'INSERT INTO `items_text` (`item_id`,`time`,`login`,`text`,`city`,`x`,`type`) VALUES ("' . $it_ . '","' . time() . '","","' . mysql_real_escape_string(
$trnt
) . '","' . $u->info['city'] . '","1","1")'
);
mysql_query('DELETE FROM `items_users` WHERE `id` = "' . $itm['id'] . '" LIMIT 1');
$u->error = 'Вы получили выписку...';
} else {
$u->error = 'Используется только в Башне смерти...';
}
} elseif ($itm['magic_inci'] == 'tactic') {
//Выдаем тактику
if ($u->stats['hpNow'] >= 1) {
$bu = mysql_fetch_array(
mysql_query(
'SELECT * FROM `tactic` WHERE `btl` = "' . $u->info['battle'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
)
);
if (isset($bu['id'])) {
$u->error = 'Нельзя использовать свиток каждый ход...';
} else {
//
mysql_query(
'INSERT INTO `tactic` (`btl`,`uid`,`time`,`item_id`,`var`,`hod`) VALUES ("' . $u->info['battle'] . '","' . $u->info['id'] . '","' . time() . '","' . $itm['item_id'] . '","' . $itm['name'] . '","1")'
);
//
mysql_query(
'INSERT INTO `battle_actions` (`uid`,`btl`,`time`,`vars`,`vals`) VALUES (
"' . $u->info['id'] . '","' . $u->info['battle'] . '","' . time() . '","use_cast_tactic",""
)'
);
$u->info['tactic' . $st['addtac']] += $st['addtacv'];
mysql_query(
'UPDATE `stats` SET `tactic' . $st['addtac'] . '` = "' . $u->info['tactic' . $st['addtac']] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'
);
//Доабвляем лог
if ($u->info['sex'] == 0) {
$txt_m = '{u1} применил заклинание &quot;<b>' . $itm['name'] . '</b>&quot;.';
} else {
$txt_m = '{u1} применила заклинание &quot;<b>' . $itm['name'] . '</b>&quot;.';
}
$this->inBattleLog($txt_m, null);
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = "' . ($itm['iznosNOW'] + 1) . '" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
$u->error = 'Заклятие &quot;' . $itm['name'] . '&quot; было успешно использовано';
}
} else {
$u->error = 'Вы погибли...';
}
} elseif ($itm['magic_inci'] == 'add_animal') {
if ($u->info['animal'] > 0) {
$u->error = 'Не удалось использовать "' . $itm['name'] . '", у Вас уже есть зверь.';
} else {
$anm = ['type' => 1, 'name' => '', 'obraz' => '', 'stats' => '', 'sex' => 0];
//Выбираем тип зверя
if ($itm['name'] == 'Призвать Сову') {
$anm['type'] = 2;
} elseif ($itm['name'] == 'Призвать Светляка') {
$anm['type'] = 3;
} elseif ($itm['name'] == 'Призвать Кота') {
$anm['type'] = 1;
} elseif ($itm['name'] == 'Призвать Чертяку') {
$anm['type'] = 4;
} elseif ($itm['name'] == 'Призвать Свина') {
$anm['type'] = 6;
} elseif ($itm['name'] == 'Призвать Пса') {
$anm['type'] = 5;
} elseif ($itm['name'] == 'Призвать Дракона') {
$anm['type'] = 7;
if ($anm['type'] == 1) {
$anm['name'] = 'Кот';
$anm['sex'] = 0;
$anm['obraz'] = [1 => '20864.gif', 2 => '21301.gif', 3 => '21139.gif', 4 => '20427.gif'];
$anm['stats'] = 's1=2|s2=5|s3=2|s4=5|rinv=40|m9=5|m6=10';
} elseif ($anm['type'] == 7) {
$anm['name'] = 'Дракон';
$anm['sex'] = 0;
$anm['obraz'] = [1 => '21338_pgtpdbx.gif'];
$anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10';
}
} elseif ($anm['type'] == 2) {
$anm['name'] = 'Сова';
$anm['sex'] = 1;
$anm['obraz'] = [1 => '21415.gif', 2 => '21722.gif', 3 => '21550.gif'];
$anm['stats'] = 's1=2|s2=2|s3=5|s4=5|rinv=40|m9=5|m6=10';
} elseif ($anm['type'] == 3) {
$anm['name'] = 'Светляк';
$anm['sex'] = 0;
$anm['obraz'] = [1 => '22277.gif', 2 => '22265.gif', 3 => '22333.gif', 4 => '22298.gif'];
$anm['stats'] = 's1=3|s2=10|s3=3|s4=4|rinv=40|m9=5|m6=10';
} elseif ($anm['type'] == 4) {
$anm['name'] = 'Чертяка';
$anm['sex'] = 0;
$anm['obraz'] = [1 => '22177.gif', 2 => '21976.gif', 3 => '21877.gif'];
$anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10';
} elseif ($anm['type'] == 5) {
$anm['name'] = 'Пес';
$anm['sex'] = 0;
$anm['obraz'] = [1 => '22352.gif', 2 => '23024.gif', 3 => '22900.gif', 4 => '22501.gif', 5 => '22700.gif'];
$anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10';
} elseif ($anm['type'] == 6) {
$anm['name'] = 'Свин';
$anm['sex'] = 0;
$anm['obraz'] = [1 => '24000.gif', 2 => '25000.gif', 3 => '27000.gif', 4 => '28000.gif'];
$anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10';
}
$anm['obraz'] = $anm['obraz'][rand(1, count($anm['obraz']))];
$anm['obraz'] = str_replace('.gif', '', $anm['obraz']);
$anm['obraz'] = str_replace('.jpg', '', $anm['obraz']);
$anm['obraz'] = str_replace('.png', '', $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'] . '" и помните - &quot;Мы в ответе за тех, кого приручили&quot;.';
$itm['iznosNOW']++;
mysql_query(
'UPDATE `items_users` SET `iznosNOW` = "' . $itm['iznosNOW'] . '" WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
);
if ($itm['inGroup'] > 0 && $itm['delete'] == 0) {
mysql_query(
'UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
Delo::add(
1,
'System.inventory',
$u->info['id'],
'&quot;<span style="color: maroon; ">System.inventory</span>&quot;: Персонаж использовал заклинание &quot;' . $itm['name'] . '&quot; (' . $us[1] . ') [itm:' . $itm['id'] . '].',
);
} else {
$u->error = 'Не удалось использовать "' . $itm['name'] . '", что-то здесь не так ...';
}
}
} elseif ($goodUse == 1) {
if ($itm['magic_inc'] == '') {
$itm['magic_inc'] = $itm['magic_inci'];
}
$us = $this->addEffect($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'
);
if ($itm['inGroup'] > 0 && $itm['delete'] == 0) {
mysql_query(
'UPDATE `items_users` SET `inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
}
Delo::add(
1,
'System.inventory',
$u->info['id'],
'&quot;<span style="color: maroon; ">System.inventory</span>&quot;: Персонаж использовал заклинание &quot;' . $itm['name'] . '&quot; (' . $us[1] . ') [itm:' . $itm['id'] . '].',
);
$this->youuse++;
$u->error = 'Вы успешно использовали заклинание &quot;' . $itm['name'] . '&quot;<br>' . $us[1] . '';
} else {
if ($u->error != '') {
$u->error = 'Не удалось использовать "' . $itm['name'] . '"...<br>' . $u->error;
} else {
$u->error = 'Не удалось использовать "' . $itm['name'] . '"...';
}
}
} else {
if ($u->error != '') {
$u->error = 'Не удалось использовать "' . $itm['name'] . '"<br>' . $u->error;
} else {
$u->error = 'Не удалось использовать "' . $itm['name'] . '"';
}
}
}
//------------------------------
}
}
if ($goodUse == 1) {
mysql_query(
'UPDATE `items_users` SET `lastUPD` = ' . time() . ' WHERE `id` = "' . $itm['id'] . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
);
}
} else {
if ($id == 5555) {
mysql_query('UPDATE `stats` SET `seff` = 0 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1');
$u->error = 'Эфекты развернуты';
} elseif ($id == 7777) {
mysql_query('UPDATE `stats` SET `seff` = 1 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1');
$u->error = 'Эфекты свернуты';
} else {
$u->error = 'Предмет не найден в инвентаре';
}
}
}
//Использование предмета
public function addEffect($uid, $id, $isNo = null): array
{
return Effects::addById($uid, $id, (bool)$isNo) ? [1, '...'] : [0, ''];
}
public function atackUser($uid1, $uid2, $tm, $btl, $addExp = 0, $type = 0)
{
return $this->attack->atackUser($uid1, $uid2, $tm, $btl, $addExp, $type);
}
//Проверка травмы
private function inBattleLog($txt, $usr = null)
{
global $u;
$lastHOD = Db::getRow('select id_hod, type from battle_logs where battle = ? order by id_hod desc limit 1', [$u->info['battle']]);
if (!$lastHOD) {
return;
}
$idTurn = $lastHOD['id_hod'];
if ($lastHOD['type'] != 6) {
$idTurn++;
}
$sql = 'insert into battle_logs (time, battle, id_hod, text, vars, zona1, zonb1, zona2, zonb2, type) values (unix_timestamp(),?,?,?,?,?,?,?,?,6)';
$args = [
$u->info['battle'],
$idTurn,
$txt,
"login1={$u->info['login']}||t1={$u->info['team']}||login2={$usr['login']}||t2={$usr['team']}||time1=" . time(),
'',
'',
'',
'',
];
Db::sql($sql, $args);
}
//создаем нападение на персонажа
public function testTravma(int $uid, $vals): bool
{
$v1 = Db::getValue('select v1 from eff_users where id_eff = 4 and uid = ? and `delete` = 0 and v1 >= ?', [$uid, $vals]);
return intval($v1) >= intval($vals);
}
}