2022-12-19 20:22:19 +00:00
< ? php
2022-12-30 19:03:37 +00:00
use Core\Config ;
2023-01-10 19:15:53 +00:00
use Core\Database ;
2022-12-30 19:03:37 +00:00
use Core\Db ;
2023-08-14 15:15:05 +00:00
use Helper\Conversion ;
2023-11-02 13:57:39 +00:00
use JetBrains\PhpStorm\NoReturn ;
2023-06-22 13:53:42 +00:00
use Model\ActionModel ;
2023-11-02 13:57:39 +00:00
use User\Effects ;
use User\InfoBox ;
2023-04-15 23:54:34 +00:00
use User\ItemsModel ;
2024-01-05 22:14:35 +00:00
use User\Login ;
2023-11-02 13:57:39 +00:00
use User\Reputation ;
2023-08-15 22:48:29 +00:00
use User\Stats ;
2023-11-09 17:24:47 +00:00
use User\UserCalculatedStats ;
use User\UserStats ;
2022-12-19 20:22:19 +00:00
class User
{
2023-07-10 23:23:49 +00:00
private static ? self $flag_one = null ;
2023-01-10 18:53:10 +00:00
public array $aves = [ 'now' => 0 , 'max' => 0 ];
public array $room = [];
public array $align_nm = [
2023-01-10 16:29:32 +00:00
1 => 'Свет' ,
2 => 'Х а о с ' ,
3 => 'Тьма' ,
7 => 'Нейтралитет' ,
2022-12-30 19:03:37 +00:00
];
2023-01-10 18:53:10 +00:00
public array $rgd = [ 0 => 0 , 1 => 0 ];
public array $city_name = [
2023-01-10 16:29:32 +00:00
'emeraldscity' => 'Emeralds city' ,
'abandonedplain' => 'Abandoned Plain' ,
'capitalcity' => 'Capital city' ,
'angelscity' => 'Angels city' ,
'newcapitalcity' => 'New Capital city' ,
'demonscity' => 'Demons city' ,
'fallenearth' => 'Fallen Earth' ,
'dreamscity' => 'Dreams City' ,
'suncity' => 'Sun City' ,
'devilscity' => 'Devils City' ,
];
2023-01-12 02:19:06 +00:00
public array $is = [ // не играть с кавычками! эти строчки уходят в яваскрипт и всё ломают!
2023-01-10 16:29:32 +00:00
'acestar' => 'Следующий каст будет критическим' ,
'spasenie' => 'Спасение после смерти' ,
'more_awards' => 'Повышеная награда %' ,
'exp' => 'Получаемый опыт (%)' ,
'align_bs' => 'Служитель закона' ,
'nopryh' => 'Прямое поподание' ,
'puti' => 'Запрет перемещения' ,
'align' => 'Склонность' ,
2023-01-12 02:19:06 +00:00
'hpAll' => " Уровень жизни (HP) " ,
'mpAll' => " Уровень маны (М P) " ,
2023-01-10 16:29:32 +00:00
'enAll' => 'Уровень энергии' ,
'sex' => 'Пол' ,
'lvl' => 'Уровень' ,
's1' => 'Сила' ,
's2' => 'Ловкость' ,
's3' => 'Интуиция' ,
's4' => 'Выносливость' ,
's5' => 'Интеллект' ,
's6' => 'Мудрость' ,
's7' => 'Духовность' ,
's8' => 'Воля' ,
's9' => 'Свобода духа' ,
's10' => 'Божественность' ,
's11' => 'Энергия' ,
'm1' => 'Мф. критического удара (%)' ,
'm2' => 'Мф. против критического удара (%)' ,
'm3' => 'Мф. мощности крит. удара (%)' ,
'm21' => 'Мф. а б с . попадания (%)' ,
'm4' => 'Мф. увертывания (%)' ,
'm5' => 'Мф. против увертывания (%)' ,
'm6' => 'Мф. контрудара (%)' ,
'm7' => 'Мф. парирования (%)' ,
'm8' => 'Мф. блока щитом (%)' ,
'm9' => 'Мф. удара сквозь броню (%)' ,
'm14' => 'Мф. а б с . критического удара (%)' ,
'm15' => 'Мф. а б с . увертывания (%)' ,
'm16' => 'Мф. а б с . парирования (%)' ,
'm17' => 'Мф. а б с . контрудара (%)' ,
'm18' => 'Мф. а б с . блока щитом (%)' ,
'm19' => 'Мф. а б с . магический промах (%)' ,
'm20' => 'Мф. удача (%)' ,
'a1' => 'Мастерство владения ножами, кинжалами' ,
'a2' => 'Мастерство владения топорами, секирами' ,
'a3' => 'Мастерство владения дубинами, молотами' ,
'a4' => 'Мастерство владения мечами' ,
'a5' => 'Мастерство владения магическими посохами' ,
'a6' => 'Мастерство владения луками' ,
'a7' => 'Мастерство владения арбалетами' ,
'aall' => 'Мастерство владения оружием' ,
'mall' => 'Мастерство владения магией стихий' ,
'm2all' => 'Мастерство владения магией' ,
'mg1' => 'Мастерство владения магией огня' ,
'mg2' => 'Мастерство владения магией воздуха' ,
'mg3' => 'Мастерство владения магией воды' ,
'mg4' => 'Мастерство владения магией земли' ,
'mg5' => 'Мастерство владения магией Света' ,
'mg6' => 'Мастерство владения магией Тьмы' ,
'mg7' => 'Мастерство владения серой магией' ,
'tj' => 'Тяжелая броня' ,
'lh' => 'Легкая броня' ,
'minAtack' => 'Минимальный урон' ,
'maxAtack' => 'Максимальный урон' ,
'm10' => 'Мф. мощности урона' ,
'm11' => 'Мф. мощности магии стихий' ,
'm11a' => 'Мф. мощности магии' ,
'pa1' => 'Мф. мощности колющего урона' ,
'pa2' => 'Мф. мощности рубящего урона' ,
'pa3' => 'Мф. мощности дробящего урона' ,
'pa4' => 'Мф. мощности режущего урона' ,
'pm1' => 'Мф. мощности магии огня' ,
'pm2' => 'Мф. мощности магии воздуха' ,
'pm3' => 'Мф. мощности магии воды' ,
'pm4' => 'Мф. мощности магии земли' ,
'pm5' => 'Мф. мощности магии Света' ,
'pm6' => 'Мф. мощности магии Тьмы' ,
'pm7' => 'Мф. мощности серой магии' ,
'za' => 'Защита от урона' ,
'zm' => 'Защита от магии стихий' ,
'zma' => 'Защита от магии' ,
'za1' => 'Защита от колющего урона' ,
'za2' => 'Защита от рубящего урона' ,
'za3' => 'Защита от дробящего урона' ,
'za4' => 'Защита от режущего урона' ,
'zm1' => 'Защита от магии огня' ,
'zm2' => 'Защита от магии воздуха' ,
'zm3' => 'Защита от магии воды' ,
'zm4' => 'Защита от магии земли' ,
'zm5' => 'Защита от магии Света' ,
'zm6' => 'Защита от магии Тьмы' ,
'zm7' => 'Защита от серой магии' ,
'magic_cast' => 'Дополнительный каст за ход' ,
'pza' => 'Понижение защиты от урона' ,
'pzm' => 'Понижение защиты от магии' ,
'pza1' => 'Понижение защиты от колющего урона' ,
'min_heal_proc' => 'Эффект лечения (%)' ,
'notravma' => 'Защита от травм' ,
'yron_min' => 'Минимальный урон' ,
'yron_max' => 'Максимальный урон' ,
'zaproc' => 'Блокировка Физического Урона (%)' ,
'zmproc' => 'Блокировка Магического Урона (%)' ,
'zm2proc' => 'Защита от магии Воздуха (%)' ,
'pza2' => 'Понижение защиты от рубящего урона' ,
'pza3' => 'Понижение защиты от дробящего урона' ,
'pza4' => 'Понижение защиты от режущего урона' ,
'pzm1' => 'Понижение защиты от магии огня' ,
'pzm2' => 'Понижение защиты от магии воздуха' ,
'pzm3' => 'Понижение защиты от магии воды' ,
'pzm4' => 'Понижение защиты от магии земли' ,
'pzm5' => 'Понижение защиты от магии Света' ,
'pzm6' => 'Понижение защиты от магии Тьмы' ,
'pzm7' => 'Понижение защиты от серой магии' ,
'speedhp' => 'Регенерация здоровья (%)' ,
'speedmp' => 'Регенерация маны (%)' ,
'tya1' => 'Колющие атаки' ,
'tya2' => 'Рубящие атаки' ,
'tya3' => 'Дробящие атаки' ,
'tya4' => 'Режущие атаки' ,
'tym1' => 'Огненные атаки' ,
'mg2static_points' => 'Уровень заряда (Воздух)' ,
'tym2' => 'Электрические атаки' ,
'tym3' => 'Ледяные атаки' ,
'tym4' => 'Земляные атаки' ,
'hpProc' => 'Уровень жизни (%)' ,
'mpProc' => 'Уровень маны (%)' ,
'tym5' => 'Атаки Света' ,
'tym6' => 'Атаки Тьмы' ,
'tym7' => 'Серые атаки' ,
'min_use_mp' => 'Уменьшает расход маны' ,
'pog' => 'Поглощение урона' ,
'pog2' => 'Поглощение урона' ,
'pog2p' => 'Процент поглощение урона' ,
'pog2mp' => 'Цена поглощение урона' ,
'maxves' => 'Увеличивает рюкзак' ,
'bonusexp' => 'Увеличивает получаемый опыт' ,
'speeden' => 'Регенерация энергии (%)' ,
'antm3' => 'Мф. против мощности крита' ,
'repair_z' => 'Бесплатное извлечение заточек' ,
'repair_r' => 'Бесплатное извлечение рун' ,
'yza' => 'Уязвимость физическому урона (%)' ,
'yzm' => 'Уязвимость магии стихий (%)' ,
2023-01-10 18:53:10 +00:00
'yzma' => 'Уязвимость магии (%)' ,
2023-01-10 16:29:32 +00:00
'yza1' => 'Уязвимость колющему урона (%)' ,
'yza2' => 'Уязвимость рубящему урона (%)' ,
'yza3' => 'Уязвимость дробящему урона (%)' ,
2023-01-10 18:53:10 +00:00
'yza4' => 'Уязвимость режущему урона (%)' ,
2023-01-10 16:29:32 +00:00
'yzm1' => 'Уязвимость магии огня (%)' ,
'yzm2' => 'Уязвимость магии воздуха (%)' ,
'yzm3' => 'Уязвимость магии воды (%)' ,
'yzm4' => 'Уязвимость магии земли (%)' ,
'yzm5' => 'Уязвимость магии (%)' ,
'yzm6' => 'Уязвимость магии (%)' ,
'yzm7' => 'Уязвимость магии (%)' ,
2023-01-10 18:53:10 +00:00
'rep' => 'Репутация Рыцаря' ,
2023-01-10 16:29:32 +00:00
'repair_discount' => 'Скидка на ремонт вещей' ,
'hpVinos' => 'Бонус жизни' ,
'bronze' => 'Bronze Premium Account' ,
'silvers' => 'Silver Premium Account' ,
'gold' => 'Благодать Ангела' ,
'speed_dungeon' => 'Скорость передвижения по подземельям' ,
'zona' => 'Дополнительная зона атаки' ,
2022-12-19 20:22:19 +00:00
];
2023-01-10 18:53:10 +00:00
public array $items = [
2023-04-15 19:52:33 +00:00
'tr' => [
'sex' ,
'align' ,
'lvl' ,
's1' ,
's2' ,
's3' ,
's4' ,
's5' ,
's6' ,
's7' ,
's8' ,
's9' ,
's10' ,
's11' ,
'a1' ,
'a2' ,
'a3' ,
'a4' ,
'a5' ,
'a6' ,
'a7' ,
'mg1' ,
'mg2' ,
'mg3' ,
'mg4' ,
'mg5' ,
'mg6' ,
'mg7' ,
'mall' ,
'm2all' ,
'aall' ,
'rep' ,
2023-07-19 15:23:44 +00:00
'align_bs' ,
2023-04-15 19:52:33 +00:00
],
2022-12-19 20:22:19 +00:00
'add' => [
2023-01-10 16:29:32 +00:00
'no_vor' ,
'antm3' ,
'acestar' ,
'spasenie' ,
'exp' ,
'enemy_am1' ,
'hod_minmana' ,
'yhod' ,
'noshock_voda' ,
'bronze' ,
'silvers' ,
'gold' ,
'repair_discount' ,
'yza' ,
'yzm' ,
'yzma' ,
'yza1' ,
'yza2' ,
'yza3' ,
'yza4' ,
'yzm1' ,
'yzm2' ,
'yzm3' ,
'yzm4' ,
'yzm5' ,
'yzm6' ,
'yzm7' ,
'repair_z' ,
'repair_r' ,
'notuse_last_pr' ,
'yrn_mg_first' ,
'antishock' ,
'nopryh' ,
'speed_dungeon' ,
'naemnik' ,
'mg2static_points' ,
'yrnhealmpprocmg3' ,
'nousepriem' ,
'notactic' ,
'seeAllEff' ,
'100proboi1' ,
'pog2' ,
'pog2p' ,
'magic_cast' ,
'min_heal_proc' ,
'no_yv1' ,
'no_krit1' ,
'no_krit2' ,
'no_contr1' ,
'no_contr2' ,
'no_bl1' ,
'no_pr1' ,
'no_yv2' ,
'no_bl2' ,
'no_pr2' ,
'silver' ,
'pza' ,
'pza1' ,
'pza2' ,
'pza3' ,
'pza4' ,
'pzm' ,
'pzm1' ,
'pzm2' ,
'pzm3' ,
'pzm4' ,
'pzm5' ,
'pzm6' ,
'pzm7' ,
'yron_min' ,
'yron_max' ,
'notravma' ,
'min_zonb' ,
'min_zona' ,
'nokrit' ,
'pog' ,
'min_use_mp' ,
'za1proc' ,
'za2proc' ,
'za3proc' ,
'za4proc' ,
'zaproc' ,
'zmproc' ,
'zm1proc' ,
'zm2proc' ,
'zm3proc' ,
'zm4proc' ,
'shopSale' ,
'shopSaleEkr' ,
's1' ,
's2' ,
's3' ,
's4' ,
's5' ,
's6' ,
's7' ,
's8' ,
's9' ,
's10' ,
's11' ,
'aall' ,
'a1' ,
'a2' ,
'a3' ,
'a4' ,
'a5' ,
'a6' ,
'a7' ,
'm2all' ,
'mall' ,
'mg1' ,
'mg2' ,
'mg3' ,
'mg4' ,
'mg5' ,
'mg6' ,
'mg7' ,
'hpAll' ,
'hpVinos' ,
'mpVinos' ,
'mpAll' ,
'enAll' ,
'hpProc' ,
'mpProc' ,
'm1' ,
'm2' ,
'm3' ,
'm4' ,
'm5' ,
'm6' ,
'm7' ,
'm8' ,
'm9' ,
'm14' ,
'm15' ,
'm16' ,
'm17' ,
'm18' ,
'm19' ,
'm20' ,
'm21' ,
'pa1' ,
'pa2' ,
'pa3' ,
'pa4' ,
'pm1' ,
'pm2' ,
'pm3' ,
'pm4' ,
'pm5' ,
'pm6' ,
'pm7' ,
'za' ,
'za1' ,
'za2' ,
'za3' ,
'za4' ,
'zma' ,
'zm' ,
'zm1' ,
'zm2' ,
'zm3' ,
'zm4' ,
'zm5' ,
'zm6' ,
'zm7' ,
'mib1' ,
'mab1' ,
'mib2' ,
'mab2' ,
'mib3' ,
'mab3' ,
'mib4' ,
'mab4' ,
'speedhp' ,
'speedmp' ,
'm10' ,
'm11' ,
'm11a' ,
'zona' ,
'zonb' ,
'maxves' ,
'minAtack' ,
'maxAtack' ,
'bonusexp' ,
'speeden' ,
],
'sv' => [
'pza' ,
'pza1' ,
'pza2' ,
'pza3' ,
'pza4' ,
'pzm' ,
'pzm1' ,
'pzm2' ,
'pzm3' ,
'pzm4' ,
'pzm5' ,
'pzm6' ,
'pzm7' ,
'notravma' ,
'min_zonb' ,
'min_zona' ,
'nokrit' ,
'pog' ,
'min_use_mp' ,
'za1proc' ,
'za2proc' ,
'za3proc' ,
'za4proc' ,
'zaproc' ,
'zmproc' ,
'zm1proc' ,
'zm2proc' ,
'zm3proc' ,
'zm4proc' ,
'shopSale' ,
'shopSaleEkr' ,
's1' ,
's2' ,
's3' ,
's4' ,
's5' ,
's6' ,
's7' ,
's8' ,
's9' ,
's10' ,
's11' ,
'aall' ,
'a1' ,
'a2' ,
'a3' ,
'a4' ,
'a5' ,
'a6' ,
'a7' ,
'm2all' ,
'mall' ,
'mg1' ,
'mg2' ,
'mg3' ,
'mg4' ,
'mg5' ,
'mg6' ,
'mg7' ,
'hpAll' ,
'mpAll' ,
'enAll' ,
'm1' ,
'm2' ,
'm3' ,
'm4' ,
'm5' ,
'm6' ,
'm7' ,
'm8' ,
'm9' ,
'm14' ,
'm15' ,
'm16' ,
'm17' ,
'm18' ,
'm19' ,
'm20' ,
'm21' ,
'pa1' ,
'pa2' ,
'pa3' ,
'pa4' ,
'pm1' ,
'pm2' ,
'pm3' ,
'pm4' ,
'pm5' ,
'pm6' ,
'pm7' ,
'min_use_mp' ,
'za' ,
'za1' ,
'za2' ,
'za3' ,
'za4' ,
'zma' ,
'zm' ,
'zm1' ,
'zm2' ,
'zm3' ,
'zm4' ,
'zm5' ,
'zm6' ,
'zm7' ,
'mib1' ,
'mab1' ,
'mib2' ,
'mab2' ,
'mib3' ,
'mab3' ,
'mib4' ,
'mab4' ,
'speedhp' ,
'speedmp' ,
'm10' ,
'm11' ,
'zona' ,
'zonb' ,
'maxves' ,
'minAtack' ,
'maxAtack' ,
'speeden' ,
],
2022-12-19 20:22:19 +00:00
];
2023-01-10 18:53:10 +00:00
public string $error2 = '' ;
public string $btl_txt = '' ;
public string $error = '' ;
public array $info = [];
2023-07-11 00:34:50 +00:00
public array $rep ;
2024-01-05 22:14:35 +00:00
/** Для переводов персонажа */
public array | false $tfer ;
public array $stats ;
2023-11-02 13:57:39 +00:00
private InfoBox $infoBox ;
private Reputation $reputation ;
private Stats $userStats ;
2022-12-19 20:22:19 +00:00
2024-01-05 22:14:35 +00:00
private function __construct ( int $uid = 0 )
2022-12-19 20:22:19 +00:00
{
2024-01-05 22:14:35 +00:00
if ( empty ( $_SESSION [ 'uid' ]) && empty ( $_COOKIE [ 'login' ]) && empty ( $uid )) {
2023-08-31 13:59:41 +00:00
return ;
}
2024-01-05 22:14:35 +00:00
$user = match ( true ) {
! empty ( $uid ) => $uid ,
! empty ( $_SESSION [ 'uid' ]) => $_SESSION [ 'uid' ],
default => $_COOKIE [ 'login' ]
};
2023-07-24 10:02:30 +00:00
$this -> info = self :: getInfo ( $user );
2023-11-06 00:40:12 +00:00
2023-07-19 15:23:44 +00:00
unset ( $user );
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
Database :: init (); // для всяких mysql_*
2022-12-30 19:03:37 +00:00
2024-01-05 22:14:35 +00:00
$this -> userStats = new Stats ( $this );
//$this->getStats($this->info); // Бля, а вдруг?
$this -> stats = $this -> userStats -> getStats ( $this -> info );
2023-07-19 15:23:44 +00:00
$this -> infoTasks ();
if ( Core\Config :: get ( 'securetime' ) > 0 ) {
if ( ! defined ( 'IP' )) {
define ( 'IP' , $_SERVER [ 'REMOTE_ADDR' ]);
}
if ( isset ( $this -> info [ 'id' ]) && ( $this -> info [ 'ip' ] != IP || $this -> info [ 'banned' ] > 0 ) && $_SERVER [ 'REQUEST_URI' ] != '/' ) {
unset ( $this -> info , $_COOKIE [ 'login' ]);
die ( Config :: get ( 'exit' ));
2022-12-19 20:22:19 +00:00
}
}
2023-08-23 11:19:27 +00:00
if ( ! isset ( $_COOKIE [ 'btl' ], $this -> info [ 'battle' ]) || $this -> info [ 'battle' ] != $_COOKIE [ 'btl' ]) {
2023-08-23 11:18:07 +00:00
setcookie ( 'btl' , $this -> info [ 'battle' ] ? ? '' , time () + 86400 );
2022-12-30 19:03:37 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $this -> info [ 'id' ])) {
if ( $this -> info [ 'invis' ] == 1 || $this -> info [ 'invis' ] > time ()) {
$this -> info [ 'cast_login' ] = '<i>Невидимка</i>' ;
} else {
$this -> info [ 'cast_login' ] = $this -> info [ 'login' ];
}
}
if ( isset ( $this -> info [ 'id' ]) && $this -> info [ 'battle' ] == 0 ) {
$sb = $this -> info [ 'money2' ];
if ( $sb - 1 > $this -> info [ 'catch' ] - $this -> info [ 'frg' ]) {
if ( $this -> info [ 'frg' ] == - 1 ) {
$sm = $this -> testAction ( '`uid` = "' . $this -> info [ 'id' ] . '" AND `vars` = "frg" LIMIT 1' , 1 );
2023-07-07 15:36:23 +00:00
}
2023-07-19 15:23:44 +00:00
if ( ! isset ( $sm [ 'id' ]) && $this -> info [ 'frg' ] == - 1 ) {
mysql_query (
'UPDATE `users` SET `catch` = "' . round (
$sb
) . '",`frg` = 0 WHERE `id` = ' . $this -> info [ 'id' ]
);
$this -> addAction (
time (), 'frg' , '[ ' . $this -> info [ 'login' ] . ' ] ' . date (
2023-12-17 02:32:09 +00:00
'd.m.Y H:i:s'
) . ' [true] , balance: ' . $sb . ' / ' . $this -> info [ 'catch' ] . ' / ' . $this -> info [ 'frg' ] . ' '
2023-07-19 15:23:44 +00:00
);
2023-07-07 15:36:23 +00:00
} else {
2023-07-19 15:23:44 +00:00
mysql_query (
'UPDATE `users` SET `catch` = "' . round (
$sb + $this -> info [ 'frg' ]
) . '" WHERE `id` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
2023-07-07 15:36:23 +00:00
);
2023-07-19 15:23:44 +00:00
if ( $sb - 10 > $this -> info [ 'catch' ] - $this -> info [ 'frg' ]) {
$this -> addAction (
time (), 'frgfalse' , '[ ' . $this -> info [ 'login' ] . ' ] ' . date (
2023-12-17 02:32:09 +00:00
'd.m.Y H:i:s'
) . ' [false] , [' . ( $sb - ( $this -> info [ 'catch' ] - $this -> info [ 'frg' ])) . '] , balance: ' . $sb . ' | ' . $this -> info [ 'catch' ] . ' | ' . $this -> info [ 'frg' ] . ' '
2023-07-19 15:23:44 +00:00
);
}
2022-12-19 20:22:19 +00:00
}
}
2023-07-07 15:36:23 +00:00
2023-07-19 15:23:44 +00:00
if ( $this -> info [ 'login2' ] != '' && $this -> info [ 'battle' ] == 0 && $this -> info [ 'zv' ] == 0 ) {
mysql_query ( 'UPDATE `users` SET `login2` = \'\' WHERE `id` = ' . $this -> info [ 'id' ]);
$this -> info [ 'login2' ] = '' ;
2023-07-07 15:36:23 +00:00
}
2023-07-19 15:23:44 +00:00
2023-11-02 13:57:39 +00:00
$this -> reputation = new Reputation ( $this -> info [ 'id' ]);
$this -> rep = $this -> reputation -> get ();
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( $this -> info [ 'login2' ] != '' && $this -> info [ 'zv' ] == 0 && $this -> info [ 'battle' ] == 0 ) {
$this -> info [ 'login2' ] = '' ;
mysql_query ( 'UPDATE `users` SET `login2` = "" WHERE `id` = "' . $this -> info [ 'id' ] . '" LIMIT 1' );
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $_GET [ 'homeworld' ]) && $this -> info [ 'zv' ] == 0 && $this -> info [ 'battle' ] == 0 && $this -> info [ 'dnow' ] == 0 ) {
$hgo = $this -> testHome ();
if ( ! isset ( $hgo [ 'id' ]) && $this -> info [ 'room' ] != 274 && $this -> info [ 'align' ] != 2 && $this -> info [ 'inTurnir' ] == 0 ) {
$this -> addAction ( time (), 'go_homeworld' , '' );
$rmt = mysql_fetch_array (
mysql_query (
'SELECT `id`,`lider`,`name`,`city`,`code`,`timeGO`,`file`,`level`,`align`,`clan`,`items`,`effects`,`destroy`,`close`,`roomGo`,`sex`,`FR`,`noatack`,`botgo`,`block_all`,`zvsee` FROM `room` WHERE `name` = "Центральная площадь" AND `city` = "' . $this -> info [ 'city' ] . '" LIMIT 1'
)
);
if ( isset ( $rmt [ 'id' ])) {
//Удаляем все ставки в БС
if ( $this -> room [ 'file' ] == 'bsenter' ) {
//Удаляем все ставки в БС
$sp_bs = mysql_query (
'SELECT `id`,`bsid`,`money` FROM `bs_zv` WHERE `uid` = "' . $this -> info [ 'id' ] . '" AND `inBot` = "0" AND `finish` = "0"'
);
while ( $pl_bs = mysql_fetch_array ( $sp_bs )) {
mysql_query (
'UPDATE `bs_turnirs` SET `users` = `users` - 1 WHERE `id` = "' . $pl_bs [ 'bsid' ] . '" LIMIT 1'
);
}
unset ( $sp_bs , $pl_bs );
mysql_query (
'UPDATE `bs_zv` SET `finish` = "' . time () . '" WHERE `uid` = "' . $this -> info [ 'id' ] . '" AND `inBot` = "0" AND `finish` = "0"'
);
}
$this -> info [ 'room' ] = $rmt [ 'id' ];
mysql_query (
'UPDATE `users` SET `room` = "' . $this -> info [ 'room' ] . '" WHERE `id` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
} else {
$this -> error = 'В этом городе нельзя пользоваться кнопкой возрата' ;
}
unset ( $rmt );
} else {
$this -> error = 'Вам запрещено пользоваться кнопкой возрата' ;
}
unset ( $hgo );
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
//Заносим текст
if ( isset ( $_GET [ 'itmid' ]) && isset ( $_GET [ 'addtext' ])) {
$itm = mysql_fetch_array (
mysql_query (
' SELECT
`i` . `id` , `i` . `item_id` , `i` . `1price` , `i` . `2price` , `i` . `uid` , `i` . `use_text` , `i` . `data` , `i` . `inOdet` , `i` . `inShop` , `i` . `delete` , `i` . `iznosNOW` , `i` . `iznosMAX` , `i` . `gift` , `i` . `gtxt1` , `i` . `gtxt2` , `i` . `kolvo` , `i` . `geniration` , `i` . `magic_inc` , `i` . `maidin` , `i` . `lastUPD` , `i` . `timeOver` , `i` . `overType` , `i` . `secret_id` , `i` . `time_create` , `i` . `inGroup` , `i` . `dn_delete` , `i` . `inTransfer` , `i` . `post_delivery` , `i` . `lbtl_` , `i` . `bexp` , `i` . `so` , `i` . `blvl`
, `m` . `max_text` FROM `items_users` AS `i` LEFT JOIN `items_main` AS `m` ON `i` . `item_id` = `m` . `id` WHERE `i` . `id` = " ' . mysql_real_escape_string(
$_GET [ 'itmid' ]
) . '" LIMIT 1'
)
);
if ( isset ( $itm [ 'id' ])) {
if ( $itm [ 'max_text' ] > 0 && $itm [ 'max_text' ] - $itm [ 'use_text' ] > 0 ) {
$txt = $_GET [ 'addtext' ];
$txt = str_replace ( ' ' , '' , $txt );
$txt = str_replace ( ' ' , '' , $txt );
if ( $txt != '' ) {
$txt = substr ( $_GET [ 'addtext' ], 0 , $itm [ 'max_text' ] - $itm [ 'use_text' ]);
$sx = iconv_strlen ( $txt );
$itm [ 'use_text' ] += $sx ;
if ( $itm [ 'use_text' ] > $itm [ 'max_text' ]) {
$itm [ 'use_text' ] = $itm [ 'max_text' ];
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
mysql_query (
'UPDATE `items_users` SET `use_text` = "' . $itm [ 'use_text' ] . '" WHERE `id` = "' . $itm [ 'id' ] . '" LIMIT 1'
);
mysql_query (
2023-12-17 02:32:09 +00:00
'INSERT INTO `items_text` (`item_id`,`time`,`login`,`text`,`city`,`x`) VALUES ("' . $itm [ 'id' ] . '","' . time (
) . '","' . $this -> info [ 'login' ] . '","' . mysql_real_escape_string (
2023-07-19 15:23:44 +00:00
htmlspecialchars ( $txt , null )
) . '","' . $this -> info [ 'city' ] . '","' . $sx . '")'
);
$this -> error = 'Запись успешно произведена' ;
} else {
$this -> error = 'Нужно что-то написать...' ;
}
} else {
$this -> error = 'Предмет для записи не подходит' ;
}
} else {
$this -> error = 'Предмет для записи не найден' ;
}
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
//Кидаем передачу
if ( isset ( $_POST [ 'trnLogin' ], $_GET [ 'transfer' ]) && $this -> info [ 'battle' ] == 0 ) {
2023-11-02 13:57:39 +00:00
$t = self :: getInfo ( $_POST [ 'trnLogin' ]);
if ( isset ( $t [ 'id' ])) {
if ( $this -> info [ 'login' ] == $t [ 'login' ]) {
$this -> error = 'Вы не можете передать самому с е б е ' ;
} elseif ( $t [ 'battle' ] > 0 ) {
$this -> error = 'Персонаж находится в бою' ;
} elseif ( $t [ 'room' ] != $this -> info [ 'room' ]) {
$this -> error = 'Вы должны находится в одной комнате с персонажем' ;
} else {
//создаем передачу
$tt = mysql_fetch_array (
mysql_query (
'SELECT `id`,`time`,`uid1`,`uid2`,`city`,`room`,`good1`,`good2`,`cancel1`,`cancel2`,`money1`,`money2`,`start1`,`start2`,`text`,`r0`,`r1`,`r2`,`finish1`,`finish2` FROM `transfers` WHERE (`uid1` = "' . $this -> info [ 'id' ] . '" OR `uid2` = "' . $this -> info [ 'id' ] . '") AND (`cancel1` = "0" OR (`finish1` > 0 AND `uid1` = "' . $this -> info [ 'id' ] . '") OR (`finish2` > 0 AND `uid2` = "' . $this -> info [ 'id' ] . '")) AND (`cancel2` = "0" OR (`finish2` > 0 AND `uid2` = "' . $this -> info [ 'id' ] . '") OR (`finish1` > 0 AND `uid1` = "' . $this -> info [ 'id' ] . '")) ORDER BY `id` DESC LIMIT 1'
)
);
if ( isset ( $tt [ 'id' ])) {
$this -> error = 'Вы уже находитесь в передаче' ;
2023-07-19 15:23:44 +00:00
} else {
$tt = mysql_fetch_array (
mysql_query (
2023-11-02 13:57:39 +00:00
'SELECT `id`,`time`,`uid1`,`uid2`,`city`,`room`,`good1`,`good2`,`cancel1`,`cancel2`,`money1`,`money2`,`start1`,`start2`,`text`,`r0`,`r1`,`r2`,`finish1`,`finish2` FROM `transfers` WHERE (`uid1` = "' . $t [ 'id' ] . '" OR `uid2` = "' . $t [ 'id' ] . '") AND (`cancel1` = "0" OR (`finish1` > 0 AND `uid1` = "' . $t [ 'id' ] . '") OR (`finish2` > 0 AND `uid2` = "' . $t [ 'id' ] . '")) AND (`cancel2` = "0" OR (`finish2` > 0 AND `uid2` = "' . $t [ 'id' ] . '") OR (`finish1` > 0 AND `uid1` = "' . $t [ 'id' ] . '")) ORDER BY `id` DESC LIMIT 1'
2023-07-19 15:23:44 +00:00
)
);
if ( isset ( $tt [ 'id' ])) {
2023-11-02 13:57:39 +00:00
$this -> error = 'Персонаж уже проводит сделку' ;
2023-07-19 15:23:44 +00:00
} else {
2023-11-02 13:57:39 +00:00
$ins = mysql_query (
2023-12-17 02:32:09 +00:00
'INSERT INTO `transfers` (`uid1`,`uid2`,`city`,`room`,`time`,`text`,`start1`) VALUES ("' . $this -> info [ 'id' ] . '","' . $t [ 'id' ] . '","' . $this -> info [ 'city' ] . '","' . $this -> info [ 'room' ] . '","' . time (
) . '","' . mysql_real_escape_string (
2023-11-02 13:57:39 +00:00
htmlspecialchars ( $_POST [ 'textarea' ], null )
) . '","' . time () . '")'
2023-07-19 15:23:44 +00:00
);
2023-11-02 13:57:39 +00:00
if ( $ins ) {
$this -> addAction (
time (),
'trasfer_' . $this -> info [ 'city' ] . '_' . $this -> info [ 'room' ] . '_' . $t [ 'id' ] . '' ,
$this -> info [ 'login' ]
2023-07-19 15:23:44 +00:00
);
}
}
}
}
2023-11-02 13:57:39 +00:00
} else {
$this -> error = 'Персонаж не найден' ;
2023-07-19 15:23:44 +00:00
}
2023-11-02 13:57:39 +00:00
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
//Выделяем передачи
2024-01-05 22:14:35 +00:00
$this -> tfer = Db :: getRow (
' select *
from transfers
where ( uid1 = ? or uid2 = ? )
and ( cancel1 = 0 or ( finish1 > 0 and uid1 = ? ) or ( finish2 > 0 and uid2 = ? ))
and ( cancel2 = 0 or ( finish2 > 0 and uid2 = ? ) or ( finish1 > 0 and uid1 = ? ))
order by id desc
limit 1 ' ,
[ $this -> info [ 'id' ], $this -> info [ 'id' ], $this -> info [ 'id' ], $this -> info [ 'id' ], $this -> info [ 'id' ], $this -> info [ 'id' ]]
2022-12-30 19:03:37 +00:00
);
2024-01-05 22:14:35 +00:00
2023-08-15 22:48:29 +00:00
if ( $this -> tfer ) {
if ( $this -> tfer [ 'uid1' ] == $this -> tfer [ 'uid2' ]) {
2023-07-19 15:23:44 +00:00
$this -> tfer = false ;
2023-08-15 22:48:29 +00:00
}
if ( isset ( $this -> tfer [ 'id' ]) && $this -> tfer [ 'cancel1' ] == 0 && $this -> tfer [ 'cancel2' ] == 0 ) {
if ( $this -> tfer [ 'uid2' ] == $this -> info [ 'id' ] && $this -> tfer [ 'start2' ] == 0 && isset ( $_GET [ 'transfer' ])) {
$this -> tfer [ 'start2' ] = time ();
2023-07-19 15:23:44 +00:00
mysql_query (
2023-08-15 22:48:29 +00:00
'UPDATE `transfers` SET `start2` = "' . $this -> tfer [ 'start2' ] . '" WHERE `id` = "' . $this -> tfer [ 'id' ] . '" LIMIT 1'
2023-07-19 15:23:44 +00:00
);
}
2023-08-15 22:48:29 +00:00
if ( $this -> tfer [ 'uid2' ] == $this -> info [ 'id' ] && $this -> tfer [ 'start2' ] == 0 ) {
$this -> tfer = false ;
} elseif ( $this -> tfer [ 'time' ] < time () - 1800 ) {
//если передача дольше 30 минут, то отмена
$upd = mysql_query (
'UPDATE `transfers` SET `cancel1` = "' . time () . '",`cancel2` = "' . time () . '" WHERE `id` = "' . $this -> tfer [ 'id' ] . '" LIMIT 1'
);
if ( $upd ) {
unset ( $this -> tfer , $upd );
}
} elseif ( $this -> info [ 'room' ] != $this -> tfer [ 'room' ] || $this -> info [ 'city' ] != $this -> tfer [ 'city' ] || $this -> info [ 'battle' ] > 0 ) {
$upd = mysql_query (
'UPDATE `transfers` SET `cancel1` = "' . time () . '",`cancel2` = "' . time () . '" WHERE `id` = "' . $this -> tfer [ 'id' ] . '" LIMIT 1'
);
if ( $upd ) {
mysql_query (
'UPDATE `items_users` SET `inTransfer` = "0" WHERE (`uid` = "' . $this -> tfer [ 'uid1' ] . '" OR `uid` = "' . $this -> tfer [ 'uid2' ] . '") AND `inTransfer` > 0'
);
unset ( $this -> tfer , $upd );
}
} elseif ( isset ( $_GET [ 'exit_transfer' ])) {
$upd = 1 ;
if ( $this -> tfer [ 'uid2' ] == $this -> info [ 'id' ]) {
$upd = 2 ;
}
$upd = mysql_query (
'UPDATE `transfers` SET `cancel' . $upd . '` = "' . time () . '" WHERE `id` = "' . $this -> tfer [ 'id' ] . '" LIMIT 1'
2023-07-19 15:23:44 +00:00
);
2023-08-15 22:48:29 +00:00
if ( $upd ) {
$this -> error = 'Вы успешно отказались от передачи.' ;
mysql_query (
'UPDATE `items_users` SET `inTransfer` = "0" WHERE (`uid` = "' . $this -> tfer [ 'uid1' ] . '" OR `uid` = "' . $this -> tfer [ 'uid2' ] . '") AND `inTransfer` > 0'
);
//Добавляем сообщение в чат
unset ( $this -> tfer , $upd );
}
2023-07-19 15:23:44 +00:00
}
}
}
2023-07-07 15:36:23 +00:00
2023-07-19 15:23:44 +00:00
/*
автофлудераст
*/
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
//Статистика персонажа на сегодня
$stat = $this -> testAction (
'`uid` = "' . $this -> info [ 'id' ] . '" AND `time` >= ' . strtotime (
'now 00:00:00'
) . ' AND `vars` = "statistic_today" LIMIT 1' , 1
);
if ( ! isset ( $stat [ 'id' ])) {
$this -> addAction (
time (), 'statistic_today' ,
'e=' . $this -> info [ 'exp' ] . '|w=' . $this -> info [ 'win' ] . '|l=' . $this -> info [ 'lose' ] . '|n=' . $this -> info [ 'nich' ]
);
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
//Одеваем боевой комплект
if ( isset ( $_GET [ 'usec1' ]) && $this -> info [ 'battle' ] == 0 ) {
2023-11-02 13:57:39 +00:00
$cmp = Db :: getValue ( 'select val from save_com where uid = ? and id = ?' , [ $this -> info [ 'id' ], ( int ) $_GET [ 'usec1' ]]);
if ( $cmp ) {
2023-07-19 15:23:44 +00:00
//снимаем все вещи
2024-01-05 22:14:35 +00:00
Db :: sql ( 'update items_users set inodet = 0 where uid = ?' , [ $this -> info [ 'id' ]]);
2023-07-19 15:23:44 +00:00
//одеваем вещи, если они не удалены
2023-11-02 13:57:39 +00:00
$cm = Conversion :: dataStringToArray ( $cmp );
foreach ( $cm as $slot => $itemid ) {
2024-01-05 22:14:35 +00:00
Db :: sql ( 'update items_users set inodet = ? where id = ? and uid = ? and inshop = 0' , [( int ) $slot , ( int ) $itemid , $this -> info [ 'id' ]]);
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
}
2023-07-19 15:23:44 +00:00
unset ( $cmp , $cm );
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$this -> room = mysql_fetch_array (
mysql_query (
'SELECT `id`,`extdlg`,`lider`,`name`,`city`,`code`,`timeGO`,`file`,`level`,`align`,`clan`,`items`,`effects`,`destroy`,`close`,`roomGo`,`sex`,`FR`,`noatack`,`botgo`,`block_all`,`zvsee`,`roomAjax` FROM `room` WHERE `id` = "' . $this -> info [ 'room' ] . '" LIMIT 1'
)
);
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
$this -> stats = $this -> getStats ( $this -> info [ 'id' ], 0 );
2023-07-19 15:23:44 +00:00
if ( ! isset ( $_GET [ 'obt_sel' ]) && $this -> info [ 'battle' ] == 0 && $this -> info [ 'obraz' ] != '0.gif' ) {
//Проверяем текущий образ
2023-11-02 13:57:39 +00:00
2023-07-19 15:23:44 +00:00
$tr = true ;
$o = mysql_fetch_array (
mysql_query (
'SELECT `id`,`sex`,`tr`,`img`,`login`,`level`,`admin`,`align`,`clan`,`itm` FROM `obraz` WHERE `img` = "' . mysql_real_escape_string (
$this -> info [ 'obraz' ]
) . '" AND `sex` = "' . $this -> info [ 'sex' ] . '" AND (`login` = "" OR `login` = "' . $this -> info [ 'login' ] . '") LIMIT 1'
)
);
$t = $this -> items [ 'tr' ];
$x = 0 ;
2023-08-14 15:15:05 +00:00
$po = Conversion :: dataStringToArray ( $o [ 'tr' ]);
2023-07-19 15:23:44 +00:00
if ( $o [ 'itm' ] > 0 ) {
$o [ 'itm' ] = explode ( ',' , $o [ 'itm' ]);
$j = 0 ;
while ( $j < count ( $o [ 'itm' ])) {
$itm_id = $o [ 'itm' ][ $j ];
if ( $itm_id > 0 ) {
$itm_id = mysql_fetch_array (
mysql_query (
'SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . $itm_id . '" LIMIT 1'
)
);
$itm_id_true = mysql_fetch_array (
mysql_query (
'SELECT `id` FROM `items_users` WHERE `item_id` = "' . $itm_id [ 'id' ] . ' " AND
`delete` = 0 AND `inOdet` > 0 AND `inShop` = 0 AND `uid` = " ' . $this->info ['id'] . ' "
LIMIT 1 '
)
);
if ( ! isset ( $itm_id_true [ 'id' ])) {
$tr = false ;
}
}
$j ++ ;
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
while ( $x < count ( $t )) {
$n = $t [ $x ];
if ( isset ( $po [ 'tr_' . $n ]) && $po [ 'tr_' . $n ] > $this -> stats [ $n ]) {
$tr = false ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$x ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $this -> info [ 'clan' ] != $o [ 'clan' ] && $o [ 'clan' ] != 0 ) {
$tr = false ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if (( ! isset ( $o [ 'id' ]) || ! $tr ) && $this -> info [ 'obraz' ] == $o [ 'img' ]) {
$this -> info [ 'obraz' ] = '0.gif' ;
mysql_query (
'UPDATE `users` SET `obraz` = "' . $this -> info [ 'obraz' ] . '" WHERE `id` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
if ( isset ( $_GET [ 'obr_sel' ]) || isset ( $_GET [ 'obraz' ])) {
$sm = $this -> testAction (
'`uid` = "' . $this -> info [ 'id' ] . '" AND `time` > ' . ( time () - 86400 ) . ' AND `vars` = "sel_obraz" LIMIT 1' ,
1
);
if ( ! isset ( $sm [ 'id' ])) {
if ( isset ( $_GET [ 'obr_sel' ])) {
$tr = true ;
$o = mysql_fetch_array (
mysql_query (
'SELECT `id`,`sex`,`tr`,`img`,`login`,`level`,`admin`,`align`,`clan`,`itm` FROM `obraz` WHERE `id` = "' . (( int ) $_GET [ 'obr_sel' ]) . '" AND `sex` = "' . $this -> info [ 'sex' ] . '" AND (`login` = "" OR `login` = "' . $this -> info [ 'login' ] . '") LIMIT 1'
)
);
$t = $this -> items [ 'tr' ];
$x = 0 ;
2023-08-14 15:15:05 +00:00
$po = Conversion :: dataStringToArray ( $o [ 'tr' ]);
2023-07-19 15:23:44 +00:00
if ( $o [ 'itm' ] > 0 ) {
$o [ 'itm' ] = explode ( ',' , $o [ 'itm' ]);
$j = 0 ;
$tritm = '' ;
while ( $j < count ( $o [ 'itm' ])) {
$itm_id = $o [ 'itm' ][ $j ];
if ( $itm_id > 0 ) {
$itm_id = mysql_fetch_array (
mysql_query (
'SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . $itm_id . '" LIMIT 1'
)
);
$itm_id_true = mysql_fetch_array (
mysql_query (
'SELECT `id` FROM `items_users` WHERE `item_id` = "' . $itm_id [ 'id' ] . ' " AND
`delete` = 0 AND `inOdet` > 0 AND `inShop` = 0 AND `uid` = " ' . $this->info ['id'] . ' "
LIMIT 1 '
)
);
if ( ! isset ( $itm_id_true [ 'id' ])) {
$tr = false ;
}
if ( $j > 0 ) {
$tritm .= ', ' ;
}
$tritm .= '"' . $itm_id [ 'name' ] . '"' ;
}
$j ++ ;
}
if ( $tritm != '' && ! $tr ) {
2024-01-05 22:14:35 +00:00
$this -> error = 'Необходимы предметы: ' . $tritm ;
2023-07-19 15:23:44 +00:00
}
}
while ( $x < count ( $t )) {
$n = $t [ $x ];
if ( isset ( $po [ 'tr_' . $n ]) && $po [ 'tr_' . $n ] > $this -> stats [ $n ]) {
$tr = false ;
$this -> error = 'Недостаточно характеристик или параметров персонажа' ;
}
$x ++ ;
}
if ( isset ( $o [ 'id' ]) && $tr ) {
if ( $this -> info [ 'obraz' ] != $o [ 'img' ]) {
mysql_query (
'UPDATE `users` SET `obraz` = "' . $o [ 'img' ] . '" WHERE `id` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
2024-01-05 22:14:35 +00:00
$this -> addAction ( time (), 'sel_obraz' , 'id=' . $o [ 'id' ]);
2023-07-19 15:23:44 +00:00
$this -> info [ 'obraz' ] = $o [ 'img' ];
}
} else {
if ( $this -> info [ 'obraz' ] == $o [ 'img' ]) {
$this -> info [ 'obraz' ] = '0.gif' ;
mysql_query (
'UPDATE `users` SET `obraz` = "' . $this -> info [ 'obraz' ] . '" WHERE `id` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
}
}
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} else {
$this -> error = 'Выбирать образ можно не чаще одного раза в сутки, следующая смена ' . date (
'd.m.Y H:i' , $sm [ 'time' ] + 86400
2024-01-05 22:14:35 +00:00
);
2023-07-19 15:23:44 +00:00
unset ( $_GET [ 'obr_sel' ]);
$_GET [ 'inv' ] = 1 ;
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
if ( $this -> info [ 'zv' ] > 0 ) {
$zv = mysql_fetch_array (
mysql_query (
'SELECT `id` FROM `zayvki` WHERE `id` = "' . $this -> info [ 'zv' ] . '" AND `btl_id` = "0" AND `cancel` = "0" LIMIT 1'
)
);
if ( ! isset ( $zv [ 'id' ])) {
$this -> info [ 'zv' ] = 0 ;
mysql_query ( 'UPDATE `stats` SET `zv` = "0" WHERE `id` = "' . $this -> info [ 'id' ] . '" LIMIT 1' );
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
if ( $this -> info [ 'wipe' ] != 0 ) {
$this -> wipe ();
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$this -> allActionsStart ();
} elseif ( isset ( $this -> info [ 'id' ])) {
2023-11-02 13:57:39 +00:00
2023-07-19 15:23:44 +00:00
$this -> room = mysql_fetch_array (
mysql_query (
'SELECT `id`,`extdlg`,`lider`,`name`,`city`,`code`,`timeGO`,`file`,`level`,`align`,`clan`,`items`,`effects`,`destroy`,`close`,`roomGo`,`sex`,`FR`,`noatack`,`botgo`,`block_all`,`zvsee`,`roomAjax` FROM `room` WHERE `id` = "' . $this -> info [ 'room' ] . '" LIMIT 1'
)
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
$this -> infoBox = new InfoBox ( $this );
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
/** Выборка из user + stats + room по id или login .
2023-07-24 10:02:30 +00:00
* @ param int | string $user
* @ return array
2023-07-07 15:36:23 +00:00
*/
2023-11-02 13:57:39 +00:00
public static function getInfo ( int | string $user ) : array
2022-12-19 20:22:19 +00:00
{
2023-07-24 10:02:30 +00:00
$cell = is_numeric ( $user ) ? 'id' : 'login' ;
$query = ' select
* ,
users . id as id ,
users . level as level ,
users . align as align ,
users . sex as sex ,
users . clan as clan ,
stats . timeGo as timeGo ,
users . name as name ,
2023-11-02 13:57:39 +00:00
stats . lider as lider ,
room . name as room_name
2023-07-24 10:02:30 +00:00
from users
left join stats on users . id = stats . id
left join room on users . room = room . id
where users . ' . $cell . ' = ? ' ;
$result = Db :: getRow ( $query , [ $user ]);
2023-11-06 00:40:12 +00:00
2023-11-09 17:24:47 +00:00
$result [ 'testStats2' ] = new UserCalculatedStats ( new UserStats ( Conversion :: dataStringToArray ( $result [ 'stats' ])));
2023-11-06 00:40:12 +00:00
2023-07-24 10:02:30 +00:00
return $result ? : [];
2022-12-19 20:22:19 +00:00
}
2023-01-10 16:29:32 +00:00
private function infoTasks ()
2022-12-19 20:22:19 +00:00
{
2023-01-10 16:29:32 +00:00
if ( empty ( $this -> info )) {
return ;
}
2022-12-30 19:03:37 +00:00
2023-01-10 16:29:32 +00:00
$this -> info [ 'achiv' ] = Db :: getRow ( 'select * from users_achiv where id = ?' , [ $this -> info [ 'id' ]]);
2022-12-19 20:22:19 +00:00
if ( ! isset ( $this -> info [ 'achiv' ][ 'id' ])) {
2022-12-30 19:03:37 +00:00
Db :: sql ( 'insert into users_achiv (id) value (?)' , [ $this -> info [ 'id' ]]);
$this -> info [ 'achiv' ] = Db :: getRow ( 'select * from users_achiv where id = ?' , [ $this -> info [ 'id' ]]);
2023-08-15 22:48:29 +00:00
}
2022-12-19 20:22:19 +00:00
2023-08-15 22:48:29 +00:00
if ( isset ( $this -> info [ 'id' ]) && $this -> info [ 'exp' ] > 300000 && $this -> info [ 'twink' ] > 0 ) {
$this -> info [ 'exp' ] = 300000 ;
Db :: sql ( 'update stats set exp = ? where id = ?' , [ $this -> info [ 'exp' ], $this -> info [ 'id' ]]);
}
if ( isset ( $this -> info [ 'id' ]) && $this -> info [ 'inUser' ]) {
$md = [
$this -> info [ 'molch1' ],
$this -> info [ 'molch2' ],
$this -> info [ 'molch3' ],
$this -> info [ 'admin' ],
$this -> info [ 'nadmin' ],
$this -> info [ 'banned' ],
$this -> info [ 'align' ],
$this -> info [ 'id' ],
$this -> info [ 'level' ],
];
$this -> info = $this -> getUserInfoById ( $this -> info [ 'inUser' ]);
if ( $this -> info [ 'molch1' ] < $md [ 0 ]) {
$this -> info [ 'molch1' ] = $md [ 0 ];
2022-12-19 20:22:19 +00:00
}
2023-08-15 22:48:29 +00:00
if ( $this -> info [ 'molch2' ] < $md [ 1 ]) {
$this -> info [ 'molch2' ] = $md [ 1 ];
}
if ( $this -> info [ 'molch3' ] < $md [ 2 ]) {
$this -> info [ 'molch3' ] = $md [ 2 ];
}
if ( $this -> info [ 'admin' ] < $md [ 3 ]) {
$this -> info [ 'admin' ] = $md [ 3 ];
}
if ( $this -> info [ 'nadmin' ] < $md [ 4 ]) {
$this -> info [ 'nadmin' ] = $md [ 4 ];
}
if ( $this -> info [ 'banned' ] < $md [ 5 ]) {
$this -> info [ 'banned' ] = $md [ 5 ];
}
$this -> info [ 'noreal' ] = 1 ;
$this -> info [ 'align_real' ] = $md [ 7 ];
$this -> info [ '__id' ] = $md [ 8 ];
$this -> info [ '__level' ] = $md [ 9 ];
2022-12-19 20:22:19 +00:00
}
}
2023-08-15 22:48:29 +00:00
public function getStats ( $uid , $i1 = null , $res = 0 , $reimg = false , $btl_cache = false , $minimal = false ) : array
{
$result = new Stats ( $this );
2023-12-19 01:58:37 +00:00
return $result -> getStats ( $uid , $i1 , $reimg , $btl_cache );
2023-08-15 22:48:29 +00:00
}
public function getUserInfoById ( $id )
{
return Db :: getRow ( 'select * from users left join stats on users.id = stats.id where users.id = ?' , [ $id ]);
}
2023-11-02 13:57:39 +00:00
public function testAction ( $filter , $tp ) : array
2022-12-19 20:22:19 +00:00
{
2023-07-19 15:23:44 +00:00
if ( $tp == 1 ) {
$query = 'select * from actions where ' . $filter ;
} elseif ( $tp == 2 ) {
$query = 'select count(*) from actions where ' . $filter ;
2023-11-02 13:57:39 +00:00
} else {
return [];
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
$arr = mysql_fetch_array ( mysql_query ( $query ));
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
return ! empty ( $arr ) ? $arr : [];
2022-12-19 20:22:19 +00:00
}
2023-10-16 13:12:16 +00:00
//Удаление определенного типа предметов
2023-07-19 15:23:44 +00:00
public function addAction ( $time , $vars , $vls , $uid = null ) : bool
{
$info = $this -> info ;
if ( $uid ) {
$info [ 'id' ] = $uid ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
ActionModel :: new ( $info , $vls , $vars , $time );
return true ;
}
2022-12-19 20:22:19 +00:00
2023-07-31 17:06:51 +00:00
public function testHome () : array
2023-07-19 15:23:44 +00:00
{
2023-07-31 17:06:51 +00:00
/*----Быстрый(Особенность)----*/
$timeforwait = 3600 ;
if ( isset ( $st [ 'os3' ]) && $st [ 'os3' ] > 0 ) {
$timeforwait = 3600 - (( $st [ 'os6' ] * 5 ) * 60 );
2023-07-19 15:23:44 +00:00
}
2023-07-31 17:06:51 +00:00
/*----Быстрый(Особенность)----*/
$hgo = $this -> testAction (
'`uid` = "' . $this -> info [ 'id' ] . '" AND `time` >= ' . ( time () - $timeforwait ) . ' AND `vars` = "go_homeworld" LIMIT 1' ,
1
);
if ( $this -> info [ 'level' ] == 0 || $this -> info [ 'active' ] != '' || $this -> info [ 'inTurnir' ] > 0 || $this -> info [ 'inTurnirnew' ] > 0 || $this -> info [ 'zv' ] > 0 || $this -> info [ 'dnow' ] > 0 ) {
$hgo [ 'id' ] = true ;
2023-07-19 15:23:44 +00:00
}
2023-07-31 17:06:51 +00:00
if ( isset ( $this -> info [ 'noreal' ]) || $this -> info [ 'dnow' ] > 0 ) {
$hgo [ 'id' ] = true ;
2023-07-19 15:23:44 +00:00
}
2023-07-31 17:06:51 +00:00
if ( ! isset ( $hgo [ 'id' ])) {
$ku = mysql_fetch_array (
mysql_query ( 'SELECT `id` FROM `katok_zv` WHERE `uid` = ' . $this -> info [ 'id' ])
2022-12-30 19:03:37 +00:00
);
2023-07-31 17:06:51 +00:00
if ( isset ( $ku [ 'id' ])) {
$hgo [ 'id' ] = true ;
}
}
return $hgo ? ? [];
2023-07-19 15:23:44 +00:00
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
public function wipe ()
{
if ( $this -> info [ 'wipe' ] > 0 && $this -> info [ 'battle' ] == 0 ) {
//wipe = 1 , значит обнуляем статы и умения
if ( $this -> info [ 'wipe' ] < 4 ) {
2023-08-14 15:15:05 +00:00
$st = Conversion :: dataStringToArray ( $this -> info [ 'stats' ]);
2023-07-19 15:23:44 +00:00
$n1 = $this -> info [ 'ability' ]; //способности
$n2 = $this -> info [ 'skills' ]; //владение магией и оружием
$n3 = $this -> info [ 'sskills' ]; //особенности
$n4 = $this -> info [ 'nskills' ]; //???
if ( $this -> info [ 'wipe' ] == 1 || $this -> info [ 'wipe' ] == 2 ) {
$i = 1 ;
while ( $i <= 11 ) {
if ( $i <= 4 ) {
$n1 += $st [ 's' . $i ] - 3 ;
$st [ 's' . $i ] = 3 ;
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
$n1 += $st [ 's' . $i ];
$st [ 's' . $i ] = 0 ;
2022-12-19 20:22:19 +00:00
}
$i ++ ;
}
2023-07-19 15:23:44 +00:00
$n1 -= $this -> info [ 'level' ];
$st [ 's4' ] = 3 + $this -> info [ 'level' ];
if ( $this -> info [ 'level' ] >= 9 ) {
$st [ 's4' ] += 1 ;
$n1 -= 1 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $this -> info [ 'level' ] >= 10 ) {
$st [ 's4' ] += 2 ;
$n1 -= 2 ;
}
if ( $this -> info [ 'level' ] >= 11 ) {
$st [ 's4' ] += 4 ;
$n1 -= 4 ;
}
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( $this -> info [ 'wipe' ] == 1 || $this -> info [ 'wipe' ] == 3 ) {
$i = 1 ;
while ( $i <= 7 ) {
$n2 += $st [ 'a' . $i ];
$n2 += $st [ 'mg' . $i ];
$st [ 'a' . $i ] = 0 ;
$st [ 'mg' . $i ] = 0 ;
$i ++ ;
}
}
if ( $this -> info [ 'wipe' ] == 1 || $this -> info [ 'wipe' ] == 3.5 ) #---С б р о с особенностей
{
$i = 1 ;
while ( $i <= 11 ) {
$n3 += $st [ 'os' . $i ];
$st [ 'os' . $i ] = 0 ;
$i ++ ;
}
}
//сохраняем данные
2023-08-14 15:15:05 +00:00
$st = Conversion :: arrayToDataString ( $st );
2023-07-19 15:23:44 +00:00
$upd = mysql_query (
'UPDATE `stats` SET `wipe`="0",`stats`="' . $st . '",`ability`="' . $n1 . '",`skills`="' . $n2 . '",`sskills`="' . $n3 . '",`nskills`="' . $n4 . '" WHERE `id` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
if ( $upd ) {
$this -> info [ 'stats' ] = $st ;
$this -> info [ 'ability' ] = $n1 ;
$this -> info [ 'skills' ] = $n2 ;
$this -> info [ 'sskills' ] = $n3 ;
$this -> info [ 'nskills' ] = $n4 ;
}
}
}
}
2022-12-19 20:22:19 +00:00
2023-10-16 13:12:16 +00:00
//Выводим вещи котоыре нужно отремонтировать
//Расчет урона от оружия
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
public function allActionsStart ()
{
global $magic ;
if ( ! isset ( $_GET [ 'use_snowball' ])) {
return ;
}
$this -> stats = $this -> getStats ( $this -> info , 0 );
//Начинаем лепить снежок на ЦП
if ( ! isset ( $this -> stats [ 'items' ][ $this -> stats [ 'wp13id' ]][ 'id' ]) || $this -> stats [ 'items' ][ $this -> stats [ 'wp13id' ]][ 'item_id' ] != 998 ) {
return ;
} //варежки одеты, все ок
if ( $this -> room [ 'name' ] != 'Центральная площадь' ) {
$this -> error2 = 'Собирать снег можно только на Центральной площади' ;
} else {
$smt = $this -> testAction (
'`uid` = "' . $this -> info [ 'id' ] . '" AND `time`>=' . ( time () - 120 ) . ' AND `vars` = "create_snowball_cp" LIMIT 1' ,
1
);
if ( isset ( $smt [ 'id' ])) {
$this -> error2 = 'Нельзя лепить несколько снежков одновременно ;)' ;
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
$smt = $this -> testAction (
'`uid` = "' . $this -> info [ 'id' ] . '" AND `time`>=' . strtotime (
'now 00:00:00'
) . ' AND `vars` = "create_snowball_cp" LIMIT 25' ,
2
2022-12-30 19:03:37 +00:00
);
2023-07-19 15:23:44 +00:00
$smt = $smt [ 0 ];
if ( $smt < 10 ) {
$this -> addAction ( time (), 'create_snowball_cp' , $this -> info [ 'city' ]);
2022-12-19 20:22:19 +00:00
2023-08-14 13:37:37 +00:00
$magic -> addEffect ( $this -> info [ 'id' ], 24 );
2023-07-19 15:23:44 +00:00
$this -> error2 = 'Начинаем лепить снежок, осталось ' . ( 10 - $smt ) . ' раз на сегодня ...' ;
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
$this -> error2 = 'Вы уже слепили 10 снежка за сегодня ...' ;
2022-12-19 20:22:19 +00:00
}
}
}
}
2023-10-16 13:12:16 +00:00
//Расчет защиты
public static function getLoginById ( int $uid ) : string
{
return Db :: getValue ( 'select login from users where id = ?' , [ $uid ]) ? : '' ;
}
2023-08-15 22:48:29 +00:00
//Расчет защиты (магия)
2023-07-19 15:23:44 +00:00
/** Singletone .
2024-01-05 22:14:35 +00:00
* @ param int $uid
2023-07-19 15:23:44 +00:00
* @ return User
*/
2024-01-05 22:14:35 +00:00
public static function start ( int $uid = 0 ) : User
2022-12-19 20:22:19 +00:00
{
2023-07-19 15:23:44 +00:00
if ( ! isset ( self :: $flag_one )) {
2024-01-05 22:14:35 +00:00
self :: $flag_one = new self ( $uid );
2023-07-19 15:23:44 +00:00
}
return self :: $flag_one ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
public static function setOnline ( int $uid ) : void
2022-12-19 20:22:19 +00:00
{
2023-07-19 15:23:44 +00:00
Db :: sql ( 'update users set online = unix_timestamp() where id = ?' , [ $uid ]);
}
2022-12-19 20:22:19 +00:00
2023-12-05 01:01:04 +00:00
/** Возврат имени персонажа с о всеми регалиями
* @ param int $uid id персонажа .
* @ return string
*/
public static function getLogin ( int $uid ) : string
{
[
'align' => $align ,
'login' => $login ,
'level' => $level ,
'name_mini' => $clanName ,
] = Db :: getRow (
' select
users . align ,
login ,
users . level ,
c . name_mini
from users left join clan as c on c . id = users . clan
where users . id = ? ' ,
[ $uid ]
);
2024-01-05 22:14:35 +00:00
if ( ! isset ( $login )) {
return " uid: $uid " ;
}
return ( new Login ( $align , $clanName , $level , $login )) -> fullLogin ;
2023-12-05 01:01:04 +00:00
}
2023-07-19 15:23:44 +00:00
public function dayquest ( int $id ) : string
{
$test = Db :: getRow ( 'select id, vals from actions where uid = ? and vars = ?' , [ $id , 'day_quest' ]);
$q = [
'1' => 'Убийство Трупожоров' ,
'2' => 'Победы в хаотических боях' ,
'3' => 'Спуск в Подземелия' ,
'4' => 'Набрать в хаотических поединках 100 000 Опыта' ,
'5' => 'Открыть Сундук Трупожора' ,
'6' => 'Посетить Излом Х а о с а ' ,
'7' => 'Сдача 3 заданий в пещерах' ,
'8' => 'Поучаствовать в Башне Смерти' ,
];
if ( ! isset ( $test [ 'id' ])) {
$n = " <a href='main.php?getq=1'><b style='color:green'>Получить задание</b></a> " ;
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
$n = " <a href='main.php?putq=1'><b style='color:green'>Сдать задание</b></a> " ;
$n = $n . " <br><b style='color:green'> " . $q [ $test [ 'vals' ]] . " </b> " ;
}
return $n ;
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
public function testAlign ( $an , int $uid ) : int
{
$r = 1 ;
if ( floor ( $an ) > 0 ) {
2023-11-02 13:57:39 +00:00
$a = Db :: getValue ( 'select align from users_align where uid = ?' , [ $uid ]);
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
if ( floor (( float ) $a ) != $an ) {
2023-07-19 15:23:44 +00:00
$r = 0 ;
2022-12-19 20:22:19 +00:00
}
}
return $r ;
}
2023-07-19 15:23:44 +00:00
public function abilsRoom ( string $type ) : string
2022-12-19 20:22:19 +00:00
{
2023-07-19 15:23:44 +00:00
$r = '' ;
//
if ( $this -> info [ 'clan' ] > 0 || ! in_array ( $this -> room [ 'name' ], [ 'Зал Света' , 'Зал Нейтралов' , 'Зал Тьмы' ])) {
//Нельзя использовать персонажам в клане
return '' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $type == 'test' ) {
if ( isset ( $_GET [ 'vhp' ])) {
$v = Db :: getValue ( 'select time from vortex where uid = ? and type = 1 order by time desc limit 1' );
if ( $v > time () - 60 * 60 ) {
//Уже юзали
2023-08-14 15:15:05 +00:00
$this -> error = 'Необходимо подождать еще ' . Conversion :: secondsToTimeout ( $v + 60 * 60 - time ());
2023-07-19 15:23:44 +00:00
} else {
if ( $this -> stats [ 'hpNow' ] < 1 ) {
$this -> stats [ 'hpNow' ] = 0 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$this -> error = 'Вы успешно восстановили ' . round ( $this -> stats [ 'hpAll' ] - $this -> stats [ 'hpNow' ]) . ' HP.' ;
Db :: sql (
2024-01-05 22:14:35 +00:00
'insert into vortex (uid, room, time, val, type) values (?,?,unix_timestamp(),?,1)' ,
2023-07-19 15:23:44 +00:00
[ $this -> info [ 'id' ], $this -> info [ 'room' ], round ( $this -> stats [ 'hpAll' ] - $this -> stats [ 'hpNow' ])]
);
$this -> stats [ 'hpNow' ] = $this -> stats [ 'hpAll' ];
2024-01-05 22:14:35 +00:00
Db :: sql ( 'update stats set hpnow = ? where id = ?' , [ $this -> stats [ 'hpNow' ], $this -> info [ 'id' ]]);
2023-07-19 15:23:44 +00:00
}
} elseif ( isset ( $_GET [ 'vmp' ])) {
$v = Db :: getValue ( 'select time from vortex where uid = ? and type = 2 order by time desc limit 1' );
if ( $v > time () - 60 * 60 ) {
//Уже юзали
2023-08-14 15:15:05 +00:00
$this -> error = 'Необходимо подождать еще ' . Conversion :: secondsToTimeout ( $v + 60 * 60 - time ());
2023-07-19 15:23:44 +00:00
} else {
if ( $this -> stats [ 'mpNow' ] < 1 ) {
$this -> stats [ 'mpNow' ] = 0 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$this -> error = 'Вы успешно восстановили ' . round ( $this -> stats [ 'mpAll' ] - $this -> stats [ 'mpNow' ]) . ' MP.' ;
Db :: sql (
2024-01-05 22:14:35 +00:00
'insert into vortex (uid, room, time, val, type) values (?,?,unix_timestamp(),?,2)' ,
2023-07-19 15:23:44 +00:00
[ $this -> info [ 'id' ], $this -> info [ 'room' ], round ( $this -> stats [ 'mpAll' ] - $this -> stats [ 'mpNow' ])]
);
$this -> stats [ 'mpNow' ] = $this -> stats [ 'mpAll' ];
2024-01-05 22:14:35 +00:00
Db :: sql ( 'update stats set mpnow = ? where id = ?' , [ $this -> stats [ 'mpNow' ], $this -> info [ 'id' ]]);
2023-07-19 15:23:44 +00:00
}
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} elseif ( $type == 'look' ) {
$vid = 0 ;
if ( $this -> room [ 'name' ] == 'Зал Света' ) {
$vid = 6 ;
} elseif ( $this -> room [ 'name' ] == 'Зал Тьмы' ) {
$vid = 7 ;
} elseif ( $this -> room [ 'name' ] == 'Зал Нейтралов' ) {
$vid = 10 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$v = mysql_fetch_array (
mysql_query (
'SELECT * FROM `vortex` WHERE `uid` = "' . $this -> info [ 'id' ] . '" AND `type` = 1 ORDER BY `time` DESC LIMIT 1'
)
);
if ( isset ( $v [ 'id' ]) && $v [ 'time' ] + 60 * 60 > time ()) {
2023-12-01 21:27:45 +00:00
$r .= '<img style="cursor:pointer;filter:alpha(opacity=47);opacity:0.47;-moz-opacity:0.47;-khtml-opacity:0.47;" onClick="alert(\'Возможно воспользоваться через ' . Conversion :: secondsToTimeout (
2023-07-19 15:23:44 +00:00
$v [ 'time' ] + 60 * 60 - time ()
) . '\');" src="' . Config :: img () . '/i/items/healvortex_' . $vid . '.png" width="40" height="25" title="Клодец HP (Задержка)"> ' ;
} else {
$r .= '<a href="main.php?vhp"><img src="' . Config :: img () . '/i/items/healvortex_' . $vid . '.png" width="40" height="25" title="Клодец HP"></a> ' ;
}
$v = mysql_fetch_array (
mysql_query (
'SELECT * FROM `vortex` WHERE `uid` = "' . $this -> info [ 'id' ] . '" AND `type` = 2 ORDER BY `time` DESC LIMIT 1'
)
);
if ( isset ( $v [ 'id' ]) && $v [ 'time' ] + 60 * 60 > time ()) {
2023-12-01 21:27:45 +00:00
$r .= '<img style="cursor:pointer;filter:alpha(opacity=47);opacity:0.47;-moz-opacity:0.47;-khtml-opacity:0.47;" onClick="alert(\'Возможно воспользоваться через ' . Conversion :: secondsToTimeout (
2023-07-19 15:23:44 +00:00
$v [ 'time' ] + 60 * 60 - time ()
) . '\');" src="' . Config :: img () . '/i/items/manavortex_' . $vid . '.png" width="40" height="25" title="Клодец MP (Задержка)"> ' ;
} else {
$r .= '<a href="main.php?vmp""><img src="' . Config :: img () . '/i/items/manavortex_' . $vid . '.png" width="40" height="25" title="Клодец MP"></a> ' ;
2022-12-19 20:22:19 +00:00
}
}
return $r ;
}
2023-11-02 13:57:39 +00:00
public function insertAlign ( $an , $uid ) : void
2022-12-19 20:22:19 +00:00
{
2023-11-02 13:57:39 +00:00
if ( $an <= 0 ) {
return ;
2022-12-19 20:22:19 +00:00
}
2024-01-05 22:14:35 +00:00
Db :: sql ( 'replace into users_align (uid, time, align) values (?,unix_timestamp(),?)' , [ $uid , floor ( $an )]);
2023-11-02 13:57:39 +00:00
2023-07-19 15:23:44 +00:00
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
public function deleteAlign ( $an , $uid ) : void
2023-07-19 15:23:44 +00:00
{
2023-11-02 13:57:39 +00:00
if ( $an <= 0 ) {
return ;
2023-07-19 15:23:44 +00:00
}
2023-11-02 13:57:39 +00:00
Db :: sql ( 'delete from users_align where uid = ? and align = ?' , [ $uid , floor ( $an )]);
2023-07-19 15:23:44 +00:00
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
public function repobmen ( int $id , $type ) : string
2023-07-19 15:23:44 +00:00
{
//echo 'обмен';
2023-11-02 13:57:39 +00:00
$pl = ItemsModel :: getOwnedItemById ( $this -> info [ 'id' ], $id );
2023-08-14 15:15:05 +00:00
$po = Conversion :: dataStringToArray ( $pl [ 'data' ]);
2023-07-19 15:23:44 +00:00
if (( ! isset ( $po [ 'frompisher' ]) || $po [ 'tr_lvl' ] < 4 ) && $pl [ 'type' ] != 31 ) {
$e = 'Н е удалось обменять предмет на репутацию.' ;
} else {
$e = 'Обмен предмета "' . $pl [ 'name' ] . '" на репутацию С apitalcity прошел удачно.' ;
2023-11-02 13:57:39 +00:00
ItemsModel :: delete ( $pl [ 'id' ]);
$this -> rep [ 'repcapitalcity' ] = $this -> reputation -> addRep ( 'repcapitalcity' , 1 );
2023-07-19 15:23:44 +00:00
}
return $e ;
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
public function lookKeys ( $m , $i ) : array
{
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
$e = explode ( '|' , $m );
$r = [];
while ( $i < count ( $e )) {
$j = explode ( '=' , $e [ $i ]);
$r [ $i ] = $j [ 0 ];
$i ++ ;
}
return $r ;
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
public function zago ( $v ) : float
{
if ( $v > 1700 ) {
$v = 1700 ;
}
return round (( 1 - ( pow ( 0.5 , ( $v / 399.51 )))) * 100 , 2 );
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
public function zmgo ( $v )
{
if ( $v > 1000 ) {
$v = 1000 ;
}
return ( 1 - ( pow ( 0.5 , ( $v / 250 )))) * 100 ;
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
public function inform ( string $v )
{
$r = '' ;
$y = [];
$w1 = 0 ;
$w2 = 0 ;
$i = 0 ;
if ( $v == 'yrontest' || $v == 'yrontest-krit' ) {
/* первое оружие или кулак */
if ( is_array ( $this -> stats [ 'items' ])) {
while ( $i < count ( $this -> stats [ 'items' ])) {
if ( $this -> stats [ 'items' ][ $i ][ 'inOdet' ] == 3 && $w1 == 0 && $this -> stats [ 'items' ][ $i ][ 'type' ] >= 18 && $this -> stats [ 'items' ][ $i ][ 'type' ] <= 28 ) {
$w1 = $this -> stats [ 'items' ][ $i ];
} elseif ( $this -> stats [ 'items' ][ $i ][ 'inOdet' ] == 14 && $w2 == 0 && $this -> stats [ 'items' ][ $i ][ 'type' ] >= 18 && $this -> stats [ 'items' ][ $i ][ 'type' ] <= 28 ) {
$w2 = $this -> stats [ 'items' ][ $i ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$i ++ ;
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
if ( isset ( $w1 [ 'id' ]) && $w1 [ 'inOdet' ] != 14 ) {
$tp = 0 ;
$t = 0 ;
$i = 1 ;
2023-08-14 15:15:05 +00:00
$d = Conversion :: dataStringToArray ( $w1 [ 'data' ]);
2023-07-19 15:23:44 +00:00
while ( $i <= 4 ) {
if ( isset ( $d [ 'tya' . $i ]) && $t < $d [ 'tya' . $i ]) {
$t = $d [ 'tya' . $i ];
$tp = $i ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$i ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$y = $this -> weaponAtc ( $w1 , $this -> stats , $tp );
if ( $v == 'yrontest-krit' ) {
$y [ 0 ] = $y [ 2 ];
$y [ 1 ] = $y [ 3 ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $y [ 0 ] < 1 ) {
$y [ 0 ] = 1 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $y [ 1 ] < 1 ) {
$y [ 1 ] = 1 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$r .= '<span title="' . $w1 [ 'name' ] . '">' . $y [ 0 ] . '-' . $y [ 1 ] . '</span>' ;
} else {
//урон кулаком
$y [ 0 ] = ceil (
2 + $this -> info [ 'level' ] + $this -> stats [ 's1' ] - round ( $this -> stats [ 's1' ] / 5 )
) + $this -> stats [ 'minAtack' ] + $this -> stats [ 'yron_min' ];
$y [ 1 ] = ceil ( $y [ 0 ] + 3 ) + $this -> stats [ 'maxAtack' ] + $this -> stats [ 'yron_max' ];
if ( $y [ 0 ] < 1 ) {
$y [ 0 ] = 1 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $y [ 1 ] < 1 ) {
$y [ 1 ] = 1 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$r .= $y [ 0 ] . '-' . $y [ 1 ];
}
/* второе оружие */
if ( isset ( $w2 [ 'id' ])) {
$tp = 0 ;
$t = 0 ;
$i = 1 ;
2023-08-14 15:15:05 +00:00
$d = Conversion :: dataStringToArray ( $w2 [ 'data' ]);
2023-07-19 15:23:44 +00:00
while ( $i <= 4 ) {
if ( $t < $d [ 'tya' . $i ]) {
$t = $d [ 'tya' . $i ];
$tp = $i ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$i ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$y = $this -> weaponAtc ( $w2 , $this -> stats , $tp );
if ( $v == 'yrontest-krit' ) {
$y [ 0 ] = $y [ 2 ];
$y [ 1 ] = $y [ 3 ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $y [ 0 ] < 1 ) {
$y [ 0 ] = 1 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $y [ 1 ] < 1 ) {
$y [ 1 ] = 1 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$r .= ' / <span title="' . $w2 [ 'name' ] . '">' . $y [ 0 ] . '-' . $y [ 1 ] . '</span>' ;
}
/* --- */
} elseif ( $v == 'yron' ) {
/* первое оружие или кулак */
while ( $i < count ( $this -> stats [ 'items' ])) {
if ( $this -> stats [ 'items' ][ $i ][ 'inOdet' ] == 3 && $w1 == 0 && $this -> stats [ 'items' ][ $i ][ 'type' ] >= 18 && $this -> stats [ 'items' ][ $i ][ 'type' ] <= 28 ) {
$w1 = $this -> stats [ 'items' ][ $i ];
} elseif ( $this -> stats [ 'items' ][ $i ][ 'inOdet' ] == 14 && $w2 == 0 && $this -> stats [ 'items' ][ $i ][ 'type' ] >= 18 && $this -> stats [ 'items' ][ $i ][ 'type' ] <= 28 ) {
$w2 = $this -> stats [ 'items' ][ $i ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$i ++ ;
}
if ( isset ( $w1 [ 'id' ]) && $w1 [ 'inOdet' ] != 14 ) {
$tp = 0 ;
$t = 0 ;
$i = 1 ;
2023-08-14 15:15:05 +00:00
$d = Conversion :: dataStringToArray ( $w1 [ 'data' ]);
2023-07-19 15:23:44 +00:00
while ( $i <= 4 ) {
if ( isset ( $d [ 'tya' . $i ]) && $t < $d [ 'tya' . $i ]) {
$t = $d [ 'tya' . $i ];
$tp = $i ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$i ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$y = $this -> weaponAtc ( $w1 , $this -> stats , $tp );
if ( $y [ 0 ] < 1 ) {
$y [ 0 ] = 1 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $y [ 1 ] < 1 ) {
$y [ 1 ] = 1 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$r .= '<span title="' . $w1 [ 'name' ] . '">' . $y [ 0 ] . '-' . $y [ 1 ] . '</span>' ;
} else {
//урон кулаком
$y [ 0 ] = ceil ( $this -> stats [ 's1' ] * 1.4 ) + $this -> stats [ 'minAtack' ] + $this -> stats [ 'yron_min' ];
$y [ 1 ] = ceil ( 0.4 + $y [ 0 ] / 0.9 ) + $this -> stats [ 'maxAtack' ] + $this -> stats [ 'yron_max' ];
if ( $y [ 0 ] < 1 ) {
$y [ 0 ] = 1 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $y [ 1 ] < 1 ) {
$y [ 1 ] = 1 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$r .= $y [ 0 ] . '-' . $y [ 1 ];
}
/* второе оружие */
if ( isset ( $w2 [ 'id' ])) {
$tp = 0 ;
$t = 0 ;
$i = 1 ;
2023-08-14 15:15:05 +00:00
$d = Conversion :: dataStringToArray ( $w2 [ 'data' ]);
2023-07-19 15:23:44 +00:00
while ( $i <= 4 ) {
if ( $t < $d [ 'tya' . $i ]) {
$t = $d [ 'tya' . $i ];
$tp = $i ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$i ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$y = $this -> weaponAtc ( $w2 , $this -> stats , $tp );
if ( $y [ 0 ] < 1 ) {
$y [ 0 ] = 1 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $y [ 1 ] < 1 ) {
$y [ 1 ] = 1 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$r .= ' / <span title="' . $w2 [ 'name' ] . '">' . $y [ 0 ] . '-' . $y [ 1 ] . '</span>' ;
}
} else {
//модификаторы
/* первое оружие или кулак */
$ry = 0 ;
while ( $i < count ( $this -> stats [ 'items' ])) {
if ( $this -> stats [ 'items' ][ $i ][ 'inOdet' ] == 3 && $w1 == 0 && $this -> stats [ 'items' ][ $i ][ 'type' ] >= 18 && $this -> stats [ 'items' ][ $i ][ 'type' ] <= 28 ) {
$w1 = $this -> stats [ 'items' ][ $i ];
} elseif ( $this -> stats [ 'items' ][ $i ][ 'inOdet' ] == 14 && $w2 == 0 && $this -> stats [ 'items' ][ $i ][ 'type' ] >= 18 && $this -> stats [ 'items' ][ $i ][ 'type' ] <= 28 ) {
$w2 = $this -> stats [ 'items' ][ $i ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$i ++ ;
}
if ( isset ( $w1 [ 'id' ]) && $w1 [ 'inOdet' ] != 14 ) {
$tp = 0 ;
$t = 0 ;
$i = 1 ;
2023-08-14 15:15:05 +00:00
$d = Conversion :: dataStringToArray ( $w1 [ 'data' ]);
2023-07-19 15:23:44 +00:00
$y = 0 ;
if ( isset ( $d [ 'sv_' . $v ])) {
$y += $d [ 'sv_' . $v ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $this -> stats [ $v ])) {
$y += $this -> stats [ $v ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$ry = $y ;
$r .= '<span title="' . $w1 [ 'name' ] . '">' . $y . '</span>' ;
} else {
//кулаком
$r .= $this -> stats [ $v ];
$ry = $this -> stats [ $v ];
}
/* второе оружие */
if ( isset ( $w2 [ 'id' ])) {
$tp = 0 ;
$t = 0 ;
$i = 1 ;
2023-08-14 15:15:05 +00:00
$d = Conversion :: dataStringToArray ( $w2 [ 'data' ]);
2023-07-19 15:23:44 +00:00
$y = @ $this -> stats [ $v ] + @ $d [ 'sv_' . $v ];
if ( $y != $ry ) {
$r .= ' / <span title="' . $w2 [ 'name' ] . '">' . $y . '</span>' ;
} else {
$r = str_replace ( 'title="' . $w1 [ 'name' ] . '"' , '' , $r );
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
}
//модификаторы
}
return $r ;
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
private function weaponAtc ( $item , $st , $x )
{
$tp = 0 ;
if ( isset ( $item [ 'id' ])) {
2023-08-14 15:15:05 +00:00
$itm = Conversion :: dataStringToArray ( $item [ 'data' ]);
2023-07-19 15:23:44 +00:00
//начинаем расчет урона
if ( ! isset ( $st [ 'minAtack' ])) {
$st [ 'minAtack' ] = 0 ;
}
if ( ! isset ( $st [ 'maxAtack' ])) {
$st [ 'maxAtack' ] = 0 ;
}
if ( ! isset ( $st [ 'yron_min' ])) {
$st [ 'yron_min' ] = 0 ;
}
if ( ! isset ( $st [ 'yron_max' ])) {
$st [ 'yron_max' ] = 0 ;
}
if ( ! isset ( $itm [ 'yron_min' ])) {
$itm [ 'yron_min' ] = 0 ;
}
if ( ! isset ( $itm [ 'yron_max' ])) {
$itm [ 'yron_max' ] = 0 ;
}
if ( ! isset ( $itm [ 'sv_yron_min' ])) {
$itm [ 'sv_yron_min' ] = 0 ;
}
if ( ! isset ( $itm [ 'sv_yron_max' ])) {
$itm [ 'sv_yron_max' ] = 0 ;
}
$min = $itm [ 'sv_yron_min' ] + $st [ 'minAtack' ] + $itm [ 'yron_min' ] + $st [ 'yron_min' ];
$max = $itm [ 'sv_yron_max' ] + $st [ 'maxAtack' ] + $itm [ 'yron_max' ] + $st [ 'yron_max' ];
//Тип урона: 0 - нет урона, 1 - колющий, 2 - рубящий, 3 - дробящий, 4 - режущий, 5 - огонь, 6 - воздух, 7 - вода, 8 - земля, 9 - свет, 10 - тьма, 11 - серая
if ( $item [ 'type' ] == 18 ) {
//колющий
$sss = ceil ( $st [ 's2' ] * 0.75 );
} elseif ( $item [ 'type' ] == 19 ) {
//рубящий
$sss = ceil ( $st [ 's1' ] * 0.75 );
} elseif ( $item [ 'type' ] == 20 ) {
//дробящий
$sss = ceil ( $st [ 's4' ] * 1.5 );
} elseif ( $item [ 'type' ] == 21 ) {
//режущий
2023-08-12 01:31:29 +00:00
$sss = ceil ( $st [ 's3' ] * 0.75 );
} else {
//без профильного урона
$sss = ceil ( $st [ 's1' ] * 0.1 );
2023-07-31 17:06:51 +00:00
}
2023-08-12 01:31:29 +00:00
//Обычный урон
$p [ 'B' ][ 0 ] = ceil ( $st [ 's1' ] * 1 );
$p [ 'B' ][ 1 ] = ceil ( 0.4 + $p [ 'B' ][ 0 ] / 0.9 );
$p [ 'B' ][ 0 ] = 2 + $st [ 'level' ] + $st [ 's1' ] - round ( $st [ 's1' ] / 5 );
$p [ 'B' ][ 1 ] = $p [ 'B' ][ 0 ] + 3 ;
$p [ 'B' ][ 'rnd' ] = rand ( $p [ 'B' ][ 0 ], $p [ 'B' ][ 1 ]);
//Добавочный минимальный урон
$p [ 'W' ][ 0 ] = $min ;
$p [ 'W' ][ 1 ] = $max ;
$p [ 'W' ][ 'rnd' ] = rand ( $p [ 'W' ][ 0 ], $p [ 'W' ][ 1 ]);
// Коэф. оружия
$p [ 'T' ] = 1 ;
//Владения
$bn = 0 ;
if ( $item [ 'type' ] == 21 ) {
// меч
$p [ 'M' ] = $st [ 'pa4' ];
$bn = $st [ 'a4' ];
//Т У Т $p['M'] = $st['pa'.$x];
} elseif ( $item [ 'type' ] == 20 ) {
// дубина
$p [ 'M' ] = $st [ 'pa3' ];
$bn = $st [ 'a3' ];
} elseif ( $item [ 'type' ] == 19 ) {
// топор
$p [ 'M' ] = $st [ 'pa2' ];
$bn = $st [ 'a2' ];
} elseif ( $item [ 'type' ] == 18 ) {
// нож
$p [ 'M' ] = $st [ 'pa1' ];
$bn = $st [ 'pa1' ];
} elseif ( $item [ 'type' ] == 22 ) {
// посох
$p [ 'M' ] = $st [ 'pa3' ];
$bn = $st [ 'a5' ];
2023-07-31 17:06:51 +00:00
}
2023-08-12 01:31:29 +00:00
//Мощнность
$min = (( $p [ 'B' ][ 0 ] + $sss + $p [ 'W' ][ 0 ]) * $p [ 'T' ] * ( 1 + 0.005 * $bn )) * ( 1 + $p [ 'M' ] / 100 );
$max = (( $p [ 'B' ][ 1 ] + $sss + $p [ 'W' ][ 1 ]) * $p [ 'T' ] * ( 1 + 0.005 * $bn )) * ( 1 + $p [ 'M' ] / 100 );
//
$kmin = ceil (( 2 * ( 1 + $st [ 'm3' ] / 100 )) * $min );
$kmax = ceil (( 2 * ( 1 + $st [ 'm3' ] / 100 )) * $max );
$tp = [ 0 => ceil ( $min ), 1 => ceil ( $max ), 2 => ceil ( $kmin ), 3 => ceil ( $kmax )];
2023-07-19 15:23:44 +00:00
}
2023-08-12 01:31:29 +00:00
return $tp ;
2023-07-19 15:23:44 +00:00
}
2022-12-19 20:22:19 +00:00
2023-12-05 01:01:04 +00:00
//Удаление определенного типа предметов
2023-07-19 15:23:44 +00:00
public function rep_zv ( int $id , int $e ) : string
{
$r = '0 / 0' ;
if ( $id == 1 ) {
//Храм знаний
if ( $e > 9999 ) {
$r = 'Посвященный третьего круга, ' . $e . ' / ??' ;
} elseif ( $e > 999 ) {
$r = 'Посвященный второго круга, ' . $e . ' / 9999' ;
} elseif ( $e > 99 ) {
$r = 'Посвященный первого круга, ' . $e . ' / 999' ;
} else {
$r = $e . ' / 99' ;
}
} elseif ( $id == 2 || $id == 3 || $id == 4 || $id == 6 || $id == 7 || $id == 8 ) {
//Capital city
if ( $e > 24999 ) {
$r = 'Рыцарь второго круга, ' . $e . ' / ??' ;
} elseif ( $e > 9999 ) {
$r = 'Рыцарь первого круга, ' . $e . ' / 24999' ;
} else {
$r = $e . ' / 10000' ;
}
2023-08-12 01:31:29 +00:00
} elseif ( $id == 5 ) {
//Алтарь Крови
if ( $e > 99 ) {
$r = 'Посвященный первого круга ' . $e . ' / 999' ;
} else {
$r = $e . ' / 99' ;
}
2023-07-19 15:23:44 +00:00
} elseif ( $id == 9 ) {
//Dreams city
if ( $e > 9999 ) {
$r = 'Посвященный третьего круга, [' . $e . ']' ;
} elseif ( $e > 4999 ) {
$r = 'Посвященный второго круга,' . $e . ' / 9999' ;
} elseif ( $e > 999 ) {
$r = 'Посвященный первого круга, ' . $e . ' / 4999' ;
} else {
$r = $e . ' / 999' ;
}
} elseif ( $id == 10 ) {
//Гора легиона
if ( $e > 9999 ) {
$r = 'Посвященный второго круга,[' . $e . ']' ;
} elseif ( $e > 999 ) {
$r = 'Посвященный первого круга, ' . $e . ' / 4999' ;
} else {
$r = $e . ' / 999' ;
}
} elseif ( $id == 11 ) {
//Излом Х а о с а
if ( $e > 9999 ) {
$r = 'Легенда Излома Х а о с а , [' . $e . ']' ;
} elseif ( $e > 4999 ) {
$r = 'Чемпион Излома Х а о с а ,' . $e . ' / 9999' ;
} elseif ( $e > 999 ) {
$r = 'Знаток Излома Х а о с а , ' . $e . ' / 4999' ;
} else {
$r = $e . ' / 999' ;
}
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
return $r ;
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
public function getNum ( $v )
{
$plid = $v ;
$pi = iconv_strlen ( $plid );
if ( $pi < 5 ) {
$i = 0 ;
while ( $i <= 5 - $pi ) {
$plid = '0' . $plid ;
$i ++ ;
}
}
return $plid ;
}
2023-12-17 02:32:09 +00:00
public function addNewbot ( $id , $botDate = null , $clon = null , $logins_bot = null , $luser = null , $round = null ) : array | int
2023-07-19 15:23:44 +00:00
{
if ( $clon != null ) {
$r = 0 ;
if ( ! is_array ( $clon )) {
$clon = $this -> getUserInfoById (( int ) $clon );
}
if ( isset ( $clon [ 'id' ])) {
if ( ! isset ( $clon [ 'loclon' ])) {
$clon [ 'login' ] .= ' (Клон)' ;
}
//копируем пользователя
2023-09-30 20:18:09 +00:00
Db :: sql (
2024-01-05 22:14:35 +00:00
" insert into users (align, login, level, pass, city, cityreg, name, sex, timereg, obraz, bot_id, inturnir) values (?,?,?,uuid(),'Неведомые земли','Неведомые земли',?,?,?,?,?,?) " ,
2023-09-30 20:18:09 +00:00
[
2023-11-06 00:40:12 +00:00
$clon [ 'align' ] ? ? 0 ,
2023-09-30 20:18:09 +00:00
$clon [ 'login' ],
$clon [ 'level' ],
$clon [ 'login' ],
$clon [ 'sex' ],
$clon [ 'time_reg' ],
$clon [ 'obraz' ],
$id ,
2023-11-06 00:40:12 +00:00
$clon [ 'inTurnir' ] ? ? 0 ,
2023-09-30 20:18:09 +00:00
]
2023-07-19 15:23:44 +00:00
);
2023-09-30 20:18:09 +00:00
if ( $round > 0 ) {
//Улучшаем мф. и статы и Н Р 1 раунд = +10%
$statss = Conversion :: dataStringToArray ( $clon [ 'stats' ]);
//
$statss [ 's1' ] = ceil ( $statss [ 's1' ] * ( 1 + 0.1 * ( $round )));
$statss [ 's2' ] = ceil ( $statss [ 's2' ] * ( 1 + 0.1 * ( $round )));
$statss [ 's3' ] = ceil ( $statss [ 's3' ] * ( 1 + 0.1 * ( $round )));
$statss [ 's4' ] = ceil ( $statss [ 's4' ] * ( 1 + 0.1 * ( $round )));
//
$statss [ 'hpAll' ] = ceil ( $statss [ 'hpAll' ] * ( 1 + 0.1 * ( $round )));
$statss [ 'mpAll' ] = ceil ( $statss [ 'mpAll' ] * ( 1 + 0.1 * ( $round )));
//
$statss [ 'm1' ] = ceil ( $statss [ 'm1' ] * ( 1 + 0.1 * ( $round )));
$statss [ 'm2' ] = ceil ( $statss [ 'm2' ] * ( 1 + 0.1 * ( $round )));
$statss [ 'm3' ] = ceil ( $statss [ 'm3' ] * ( 1 + 0.1 * ( $round )));
$statss [ 'm4' ] = ceil ( $statss [ 'm4' ] * ( 1 + 0.1 * ( $round )));
$statss [ 'm5' ] = ceil ( $statss [ 'm5' ] * ( 1 + 0.1 * ( $round )));
$statss [ 'za' ] = ceil ( $statss [ 'za' ] * ( 1 + 0.1 * ( $round )));
$statss [ 'zm' ] = ceil ( $statss [ 'zm' ] * ( 1 + 0.1 * ( $round )));
$clon [ 'stats' ] = Conversion :: arrayToDataString ( $statss );
unset ( $statss );
2022-12-19 20:22:19 +00:00
}
2023-09-30 20:18:09 +00:00
2023-12-17 02:32:09 +00:00
$uid = ( int ) Db :: lastInsertId ();
2023-09-30 20:18:09 +00:00
//копируем статы
2024-01-05 22:14:35 +00:00
Db :: sql ( 'insert into stats (clone, id, stats, hpnow, uplevel, bot, priems) values (?,?,?,1000000,?,1,?)' , [ $clon [ 'id' ], $uid , $clon [ 'stats' ], $clon [ 'upLevel' ], $clon [ 'priems' ]]);
2023-09-30 20:18:09 +00:00
//копируем предметы
Db :: sql (
2024-01-05 22:14:35 +00:00
" insert into items_users (uid, item_id, data, inodet, iznosmax, kolvo) select ?, item_id, replace(data, 'toclan', 'to_clan_'), inodet, iznosmax, kolvo from items_users where inodet > 0 and uid = ? " ,
2023-09-30 20:18:09 +00:00
[ $uid , $clon [ 'id' ]]
);
//копируем эффекты
Db :: sql (
2024-01-05 22:14:35 +00:00
" insert into eff_users (uid, id_eff, data, name, overtype, timeuse, x) select ?, id_eff, data, name, overtype, timeuse, x from eff_users where uid = ? and deactivetime < unix_timestamp() and v1 != 'priem' " ,
2023-09-30 20:18:09 +00:00
[ $uid , $clon [ 'id' ]]
);
$r = $uid ;
2023-07-19 15:23:44 +00:00
}
return $r ;
2023-09-30 20:18:09 +00:00
2023-07-19 15:23:44 +00:00
} else {
2023-09-30 20:18:09 +00:00
2024-01-05 22:14:35 +00:00
$bot = Db :: getRow ( 'select id, login, stats, uplevel, itemsuse from test_bot where id = ?' , [ $id ]);
2023-09-30 20:18:09 +00:00
if ( ! isset ( $bot [ 'id' ])) {
return [];
2023-12-17 02:32:09 +00:00
}
if ( isset ( $logins_bot [ $bot [ 'login' ]])) {
$logins_bot [ $bot [ 'login' ]] ++ ;
$bot [ 'login' ] = $bot [ 'login' ] . ' (' . $logins_bot [ $bot [ 'login' ]] . ')' ;
2023-07-19 15:23:44 +00:00
} else {
2023-12-17 02:32:09 +00:00
$logins_bot [ $bot [ 'login' ]] = 1 ;
}
Db :: sql (
" insert into users (align, login, level, pass, city, cityreg, name, sex, hobby, timereg, obraz, bot_id)
2023-09-30 20:18:09 +00:00
select align , ? , level , uuid (), 'Неведомые земли' , 'Неведомые земли' , name , sex , hobby , replace ( time_reg , 100 , unix_timestamp ()), obraz , id
from test_bot where id = ? " ,
2023-12-17 02:32:09 +00:00
[ $bot [ 'login' ], $id ]
);
2023-09-30 20:18:09 +00:00
2023-12-17 02:32:09 +00:00
$uid = Db :: lastInsertId ();
2023-09-30 20:18:09 +00:00
2023-12-17 02:32:09 +00:00
if ( $round > 0 ) { //Улучшаем мф. и статы и Н Р 1 раунд = +20%
$statss = Conversion :: dataStringToArray ( $bot [ 'stats' ]);
2023-09-30 20:18:09 +00:00
2023-12-17 02:32:09 +00:00
$statss [ 's1' ] = ceil ( $statss [ 's1' ] * ( 1 + 0.20 * ( $round )));
$statss [ 's2' ] = ceil ( $statss [ 's2' ] * ( 1 + 0.20 * ( $round )));
$statss [ 's3' ] = ceil ( $statss [ 's3' ] * ( 1 + 0.20 * ( $round )));
$statss [ 's4' ] = ceil ( $statss [ 's4' ] * ( 1 + 0.20 * ( $round )));
2023-09-30 20:18:09 +00:00
2023-12-17 02:32:09 +00:00
$statss [ 'hpAll' ] = ceil ( $statss [ 'hpAll' ] * ( 1 + 0.20 * ( $round )));
$statss [ 'mpAll' ] = ceil ( $statss [ 'mpAll' ] * ( 1 + 0.20 * ( $round )));
2023-09-30 20:18:09 +00:00
2023-12-17 02:32:09 +00:00
$statss [ 'm1' ] = ceil ( $statss [ 'm1' ] * ( 1 + 0.20 * ( $round )));
$statss [ 'm2' ] = ceil ( $statss [ 'm2' ] * ( 1 + 0.20 * ( $round )));
$statss [ 'm3' ] = ceil ( $statss [ 'm3' ] * ( 1 + 0.20 * ( $round )));
$statss [ 'm4' ] = ceil ( $statss [ 'm4' ] * ( 1 + 0.20 * ( $round )));
$statss [ 'm5' ] = ceil ( $statss [ 'm5' ] * ( 1 + 0.20 * ( $round )));
$statss [ 'za' ] = ceil ( $statss [ 'za' ] * ( 1 + 0.20 * ( $round )));
$statss [ 'zm' ] = ceil ( $statss [ 'zm' ] * ( 1 + 0.20 * ( $round )));
$bot [ 'stats' ] = Conversion :: arrayToDataString ( $statss );
unset ( $statss );
}
2024-01-05 22:14:35 +00:00
Db :: sql ( 'insert into stats (id, stats, hpnow, uplevel, bot) values (?,?,1000000,?,1)' , [ $uid , $bot [ 'stats' ], $bot [ 'upLevel' ]]);
2023-09-30 20:18:09 +00:00
2023-12-17 02:32:09 +00:00
$bot [ 'id' ] = $uid ;
$bot [ 'logins_bot' ] = $logins_bot ;
2023-09-30 20:18:09 +00:00
2023-12-17 02:32:09 +00:00
//Выдаем предметы
$iu = explode ( ',' , $bot [ 'itemsUse' ]);
2023-09-30 20:18:09 +00:00
2023-12-17 02:32:09 +00:00
$i = 0 ;
$w3b = 0 ;
foreach ( $iu as $item ) {
$iditem = ItemsModel :: addItem ( $item , $bot [ 'id' ]);
$inslot = Db :: getValue ( 'select inslot from items_main where id = ?' , [ $item ]) ? ? 2000 ;
if ( $inslot === 3 ) {
if ( $w3b === 1 ) {
$inslot = 14 ;
} else {
$w3b = 1 ;
2022-12-19 20:22:19 +00:00
}
}
2024-01-05 22:14:35 +00:00
Db :: sql ( 'update items_users set inodet = ? where id = ?' , [ $inslot , $iditem ]);
2023-07-19 15:23:44 +00:00
}
2023-12-17 02:32:09 +00:00
return $bot ;
2023-07-19 15:23:44 +00:00
}
}
2022-12-19 20:22:19 +00:00
2023-08-15 22:48:29 +00:00
//Расчет урона от оружия
//Расчет защиты
//Расчет защиты (магия)
2023-07-28 22:53:36 +00:00
public function newAct ( $test ) : bool
{
$r = true ;
if ( $test != $this -> info [ 'nextAct' ] && $this -> info [ 'nextAct' ] != '0' ) {
$r = false ;
} else {
$na = md5 ( time () . '_nextAct_' . rand ( 0 , 100 ));
$upd = mysql_query (
'UPDATE `stats` SET `nextAct` = "' . $na . '" WHERE `id` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
if ( ! $upd ) {
$r = false ;
} else {
$this -> info [ 'nextAct' ] = $na ;
}
2023-07-19 15:23:44 +00:00
}
2023-07-28 22:53:36 +00:00
return $r ;
}
2022-12-30 19:03:37 +00:00
2023-07-31 17:06:51 +00:00
2023-11-02 13:57:39 +00:00
public function addKr ( $amount , $uid = 0 ) : void
2023-07-28 22:53:36 +00:00
{
2023-11-02 13:57:39 +00:00
if ( $uid === 0 ) {
$uid = $this -> info [ 'id' ];
$this -> info [ 'money' ] += $amount ;
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
Db :: sql ( 'update users set money = money + ? where id = ?' , [ $amount , $uid ]);
2023-07-28 22:53:36 +00:00
}
2022-12-19 20:22:19 +00:00
2023-07-28 22:53:36 +00:00
public function bronFx ( $br ) : string
{
$r = '' ;
if ( $br [ 0 ] > 0 ) {
$r .= $br [ 0 ] - 1 ;
} else {
$r .= 0 ;
}
$r .= 'd' ;
if ( $br [ 0 ] > 0 ) {
$r .= $br [ 1 ] - $br [ 0 ];
} else {
$r .= 0 ;
2023-07-19 15:23:44 +00:00
}
2023-07-28 22:53:36 +00:00
return $r ;
2023-07-19 15:23:44 +00:00
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
/*
* $iid Уникальный id прдемета и одновремено флаг что
* покупка из комка .
*/
public function price ( $vl ) : string
2023-07-19 15:23:44 +00:00
{
if ( $vl == round ( $vl )) {
$vl = $vl . '.00' ;
}
$vl = explode ( '.' , $vl );
2023-11-02 13:57:39 +00:00
return $vl [ 0 ] . '.<small>' . $vl [ 1 ] . '</small>' ;
2023-07-19 15:23:44 +00:00
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
#[NoReturn] public function __clone()
2023-07-19 15:23:44 +00:00
{
trigger_error ( 'Дублирование не допускается.' , E_USER_ERROR );
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
public function freeStatsMod ( $id , $s , $uid ) : void
2023-07-19 15:23:44 +00:00
{
2024-01-05 22:14:35 +00:00
$itm = Db :: getValue ( 'select data from items_users where id = ? and uid = ? and inshop = 0 and inodet = 0' , [ $id , $uid ]);
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
if ( ! isset ( $itm )) {
return ;
}
$po = Conversion :: dataStringToArray ( $itm );
2023-07-19 15:23:44 +00:00
2023-11-02 13:57:39 +00:00
//статы
if ( $_GET [ 'mf' ] == 's1' || $_GET [ 'mf' ] == 's2' || $_GET [ 'mf' ] == 's3' || $_GET [ 'mf' ] == 's5' ) {
if ( isset ( $po [ 'mf_stats' ]) && $po [ 'mf_stats' ] > 0 && isset ( $po [ 'add_' . $_GET [ 'mf' ]])) {
$po [ 'mf_stats' ] = ( int ) $po [ 'mf_stats' ];
$po [ 'mf_stats' ] -= 1 ;
$po [ 'add_' . $_GET [ 'mf' ]] += 1 ;
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
}
} elseif ( $_GET [ 'mf' ] == 'm1' || $_GET [ 'mf' ] == 'm2' || $_GET [ 'mf' ] == 'm4' || $_GET [ 'mf' ] == 'm5' ) {
if ( isset ( $po [ 'mf_mod' ]) && $po [ 'mf_mod' ] > 0 && isset ( $po [ 'add_' . $_GET [ 'mf' ]])) {
$po [ 'mf_mod' ] = ( int ) $po [ 'mf_mod' ];
$po [ 'mf_mod' ] -= 1 ;
$po [ 'add_' . $_GET [ 'mf' ]] += 1 ;
}
} elseif ( $_GET [ 'mf' ] == 'mib1' || $_GET [ 'mf' ] == 'mib2' || $_GET [ 'mf' ] == 'mib3' || $_GET [ 'mf' ] == 'mib4' ) {
$s = $_GET [ 'mf' ];
$s = str_replace ( 'mib' , '' , $s );
$s = ( int ) $s ;
if ( isset ( $po [ 'mf_mib' ]) && $po [ 'mf_mib' ] > 0 && ( isset ( $po [ 'add_mib' . $s ]) || isset ( $po [ 'add_mab' . $s ]))) {
$po [ 'mf_mib' ] = ( int ) $po [ 'mf_mib' ];
$po [ 'mf_mib' ] -= 1 ;
if ( isset ( $po [ 'add_mab' . $s ])) {
$po [ 'add_mab' . $s ] += 1 ;
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
if ( isset ( $po [ 'add_mib' . $s ])) {
$po [ 'add_mib' . $s ] += 1 ;
}
Db :: sql ( 'update items_users set data = ? where id = ?' , [ Conversion :: arrayToDataString ( $po ), $id ]);
2023-07-19 15:23:44 +00:00
}
}
2023-11-02 13:57:39 +00:00
if ( $_GET [ 'mf' ] == 's1' || $_GET [ 'mf' ] == 's2' || $_GET [ 'mf' ] == 's3' || $_GET [ 'mf' ] == 's5' ||
$_GET [ 'mf' ] == 'm1' || $_GET [ 'mf' ] == 'm2' || $_GET [ 'mf' ] == 'm4' || $_GET [ 'mf' ] == 'm5' ) {
Db :: sql ( 'update items_users set data = ? where id = ?' , [ Conversion :: arrayToDataString ( $po ), $id ]);
}
2023-07-19 15:23:44 +00:00
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
public function freeStatsItem ( int $id , int $s , int $uid ) : void
2023-07-19 15:23:44 +00:00
{
2024-01-05 22:14:35 +00:00
$itm = Db :: getValue ( 'select data from items_users where id = ? and uid = ? and inshop = 0 and inodet = 0' , [ $id , $uid ]);
2023-11-02 13:57:39 +00:00
if ( ! $itm || $s != 1 && $s != 2 && $s != 3 && $s != 5 ) {
return ;
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
$po = Conversion :: dataStringToArray ( $itm );
if ( isset ( $po [ 'free_stats' ]) && $po [ 'free_stats' ] > 0 ) {
$po [ 'free_stats' ] = ( int ) $po [ 'free_stats' ];
$po [ 'free_stats' ] -= 1 ;
$po [ 'add_s' . $s ] += 1 ;
2023-07-19 15:23:44 +00:00
}
2023-11-02 13:57:39 +00:00
$po = Conversion :: arrayToDataString ( $po );
Db :: sql ( 'update items_users set data = ? where id = ?' , [ $po , $id ]);
2023-07-19 15:23:44 +00:00
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
public function freeStats2Item ( int $id , int $s , int $uid , int $tp ) : void
2023-07-19 15:23:44 +00:00
{
2024-01-05 22:14:35 +00:00
$itm = Db :: getRow ( 'select id, data, so from items_users where id = ? and uid = ? and inshop = 0 and inodet = 0' , [ $id , $uid ]);
2023-11-02 13:57:39 +00:00
if ( ! isset ( $itm [ 'id' ]) || $itm [ 'so' ] <= 0 ) {
return ;
}
$po = Conversion :: dataStringToArray ( $itm [ 'data' ]);
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
if ( $tp == 1 ) {
//статы
if ( $s == 1 || $s == 2 || $s == 3 || $s == 5 ) {
if ( 10 + 25 * $po [ 'add_s' . $s ] <= $itm [ 'so' ]) {
$itm [ 'so' ] -= 10 + 25 * $po [ 'add_s' . $s ];
$po [ 'add_s' . $s ] ++ ;
$this -> error = 'Характеристика улучшена...' ;
} else {
$this -> error = 'Н е хватает очков развития...' ;
}
}
} elseif ( $tp == 2 ) {
//мф
if ( $s > 0 && $s < 13 ) {
if ( $s == 1 ) {
$s = 'm1' ;
} elseif ( $s == 2 ) {
$s = 'm2' ;
} elseif ( $s == 3 ) {
$s = 'm4' ;
} elseif ( $s == 4 ) {
$s = 'm5' ;
} elseif ( $s == 5 ) {
$s = 'mab1' ;
} elseif ( $s == 6 ) {
$s = 'mab2' ;
} elseif ( $s == 7 ) {
$s = 'mab3' ;
} elseif ( $s == 8 ) {
$s = 'mab4' ;
} elseif ( $s == 9 ) {
$s = 'm10' ;
} elseif ( $s == 10 ) {
$s = 'za' ;
} elseif ( $s == 11 ) {
$s = 'm11a' ;
} elseif ( $s == 12 ) {
$s = 'zm' ;
}
$s2 = $s == 9 || $s == 12 ? 4 + 4 * $po [ 'add_' . $s ] : 5 + 5 * $po [ 'add_' . $s ];
if ( 4 + 4 * $po [ 'add_' . $s ] <= $itm [ 'so' ]) {
$itm [ 'so' ] -= $s2 ;
if ( $s == 'mab1' ) {
$po [ 'add_mib1' ] ++ ;
} elseif ( $s == 'mab2' ) {
$po [ 'add_mib2' ] ++ ;
} elseif ( $s == 'mab3' ) {
$po [ 'add_mib3' ] ++ ;
} elseif ( $s == 'mab4' ) {
$po [ 'add_mib4' ] ++ ;
}
$po [ 'add_' . $s ] ++ ;
} else {
$this -> error = 'Н е хватает очков развития...' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
}
}
2023-11-02 13:57:39 +00:00
Db :: sql ( 'update items_users set data = ?, so = ? where id = ?' , [ Conversion :: arrayToDataString ( $po ), $itm [ 'so' ], $id ]);
2023-07-19 15:23:44 +00:00
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
public function obj_addItem ( int $id ) : void
2023-07-19 15:23:44 +00:00
{
2024-01-05 22:14:35 +00:00
$itm = Db :: getRow ( 'select id, ingroup, item_id, uid from items_users where uid = ? and inodet = 0 and inshop = 0 and id = ?' , [ $this -> info [ 'id' ], $id ]);
2023-07-19 15:23:44 +00:00
if ( $this -> info [ 'transfers' ] < 1 ) {
$this -> error = 'Н а сегодня лимит передач исчерпан.' ;
2023-11-02 13:57:39 +00:00
return ;
} elseif ( ! isset ( $itm [ 'id' ])) {
2023-07-19 15:23:44 +00:00
$this -> error = 'Предмет не найден в рюкзаке' ;
2023-11-02 13:57:39 +00:00
return ;
}
if ( $itm [ 'inGroup' ] > 0 && $this -> itemsX ( $id ) > 1 ) {
2024-01-05 22:14:35 +00:00
Db :: sql ( 'update items_users set inshop = 1 where inshop != 30 and uid = ? and item_id = ? and ingroup = ?' , [ $this -> info [ 'id' ], $itm [ 'item_id' ], $itm [ 'inGroup' ]]);
2023-11-02 13:57:39 +00:00
} else {
2024-01-05 22:14:35 +00:00
Db :: sql ( 'update items_users set inshop = 1 where inshop != 30 and uid = ? and id = ? and inodet = 0' , [ $this -> info [ 'id' ], $id ]);
2023-07-19 15:23:44 +00:00
}
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
public function itemsX ( int $id , $uid = null , $item_id = null ) : bool | int
2023-07-19 15:23:44 +00:00
{
2023-11-02 13:57:39 +00:00
//fixme какая-то дичь тут.
2024-01-05 22:14:35 +00:00
$item = Db :: getRow ( 'select uid, item_id, ingroup, inshop from items_users where id = ?' , [ $id ]);
2023-12-17 02:32:09 +00:00
return Db :: getValue (
2024-01-05 22:14:35 +00:00
'select count(id) from items_users where inshop = ? and item_id = ? and uid = ? and ingroup = ?' ,
2023-12-17 02:32:09 +00:00
[ $item [ 'inShop' ], $item [ 'item_id' ], $item [ 'uid' ], $item [ 'ingroup' ]]
);
2023-11-02 13:57:39 +00:00
}
public function obj_takeItem ( $id ) : void
{
2024-01-05 22:14:35 +00:00
$itm = Db :: getRow ( 'select id, ingroup from items_users where id = ? and uid = ? and inodet = 0 and inshop = 0' );
2023-07-19 15:23:44 +00:00
if ( $this -> info [ 'transfers' ] < 1 ) {
$this -> error = 'Н а сегодня лимит передач исчерпан.' ;
2023-11-02 13:57:39 +00:00
return ;
} elseif ( ! isset ( $itm [ 'id' ])) {
2023-07-19 15:23:44 +00:00
$this -> error = 'Предмет не найден в сундуке' ;
2023-11-02 13:57:39 +00:00
return ;
}
if ( $itm [ 'inGroup' ] > 0 && $this -> itemsX ( $id ) > 1 ) {
2024-01-05 22:14:35 +00:00
Db :: sql ( 'update items_users set inshop = 0 where inshop != 30 and uid = ? and (id = ? or ingroup = ?) and inodet = 0' , [ $this -> info [ 'id' ], $id , $itm [ 'inGroup' ]]);
2023-11-02 13:57:39 +00:00
} else {
2024-01-05 22:14:35 +00:00
Db :: sql ( 'update items_users set inshop = 0 where inshop != 30 and uid = ? and id = ? and inodet = 0' , [ $this -> info [ 'id' ], $id ]);
2023-07-19 15:23:44 +00:00
}
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
public function itemsSmSave ( int $id , int $s , int $uid ) : void
2023-07-19 15:23:44 +00:00
{
2024-01-05 22:14:35 +00:00
$itm = Db :: getValue ( 'select data from items_users where id = ? and uid = ? and inshop = 0 and inodet = 0' , [ $id , $uid ]);
2023-11-02 13:57:39 +00:00
if ( ! $itm ) {
2023-07-19 15:23:44 +00:00
return ;
}
2023-11-02 13:57:39 +00:00
2023-08-14 15:15:05 +00:00
$po = Conversion :: dataStringToArray ( $itm [ 'data' ]);
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'sudba' ]) && $po [ 'sudba' ] == '0' ) {
return ;
}
2023-11-02 13:57:39 +00:00
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'sm_skill' ]) && $s > 100 ) {
$mx2 = 1 ;
$mx1 = 0 ;
2023-08-14 15:15:05 +00:00
$mx3 = Conversion :: dataStringToArray ( $this -> info [ 'stats' ]);
2023-07-19 15:23:44 +00:00
while ( $mx2 <= 7 ) {
$mx1 += ( $mx3 [ 'a' . $mx2 ] + $mx3 [ 'mg' . $mx2 ]) - ( $po [ 'add_a' . $mx2 ] + $po [ 'add_mg' . $mx2 ]);
$mx2 ++ ;
}
$mx1 += $this -> info [ 'skills' ];
if ( $mx1 > 0 ) {
//умения
$s = $s - 100 ;
if ( $s > 5 && $s <= 12 ) {
//магия
$po [ 'add_mg' . ( $s - 5 )] ++ ;
} elseif ( $s > 0 ) {
//оружие
$po [ 'add_a' . $s ] ++ ;
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
} elseif ( isset ( $po [ 'sm_abil' ]) && $s < 11 && $s > 0 ) {
$mx2 = 1 ;
$mx1 = 0 ;
2023-08-14 15:15:05 +00:00
$mx3 = Conversion :: dataStringToArray ( $this -> info [ 'stats' ]);
2023-07-19 15:23:44 +00:00
while ( $mx2 <= 7 ) {
$mx1 += $mx3 [ 's' . $mx2 ] - $po [ 'add_s' . $mx2 ];
$mx2 ++ ;
}
$mx1 += $this -> info [ 'ability' ];
if ( $mx1 > 0 ) {
$po [ 'add_s' . $s ] ++ ;
}
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
Db :: sql ( 'update items_users set data = ? where id = ?' , [ Conversion :: arrayToDataString ( $po ), $id ]);
2023-07-19 15:23:44 +00:00
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
//Сверяем требования предмета для е г о использования
public function runeItem ( $id , $name = 0 , $ruid = 0 ) : void
2023-07-19 15:23:44 +00:00
{
if ( $id == null ) {
if ( $ruid < 1 && isset ( $_GET [ 'use_rune' ])) {
$ruid = $_GET [ 'use_rune' ];
echo "
< script language = 'JavaScript' >
var elem = document . getElementById ( 'se-pre-con' );
elem . parentNode . removeChild ( elem );
</ script >
" ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$rune = mysql_fetch_array (
mysql_query (
' SELECT
`i` . `id` , `i` . `item_id` , `i` . `1price` , `i` . `2price` , `i` . `uid` , `i` . `use_text` , `i` . `data` , `i` . `inOdet` , `i` . `inShop` , `i` . `delete` , `i` . `iznosNOW` , `i` . `iznosMAX` , `i` . `gift` , `i` . `gtxt1` , `i` . `gtxt2` , `i` . `kolvo` , `i` . `geniration` , `i` . `magic_inc` , `i` . `maidin` , `i` . `lastUPD` , `i` . `timeOver` , `i` . `overType` , `i` . `secret_id` , `i` . `time_create` , `i` . `inGroup` , `i` . `dn_delete` , `i` . `inTransfer` , `i` . `post_delivery` , `i` . `lbtl_` , `i` . `bexp` , `i` . `so` , `i` . `blvl`
, `m` . `name` , `m` . `type` , `m` . `level` FROM `items_users` AS `i` LEFT JOIN `items_main` AS `m` ON `i` . `item_id` = `m` . `id` WHERE
`i` . `id` = " ' . mysql_real_escape_string( $ruid ) . ' "
AND `i` . `uid` = " ' . $this->info ['id'] . ' " AND `i` . `delete` = " 0 " AND `i` . `inShop` = " 0 " LIMIT 1 '
)
);
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
$it_type = 0 ;
if ( isset ( $_GET [ 'item_rune' ])) {
$name = $_GET [ 'item_rune' ];
}
$vi = 0 ;
$vid = '' ;
if ( isset ( $_GET [ 'item_rune_id' ])) {
$sp = mysql_query (
' SELECT
`i` . `id` , `i` . `item_id` , `i` . `1price` , `i` . `2price` , `i` . `uid` , `i` . `use_text` , `i` . `data` , `i` . `inOdet` , `i` . `inShop` , `i` . `delete` , `i` . `iznosNOW` , `i` . `iznosMAX` , `i` . `gift` , `i` . `gtxt1` , `i` . `gtxt2` , `i` . `kolvo` , `i` . `geniration` , `i` . `magic_inc` , `i` . `maidin` , `i` . `lastUPD` , `i` . `timeOver` , `i` . `overType` , `i` . `secret_id` , `i` . `time_create` , `i` . `inGroup` , `i` . `dn_delete` , `i` . `inTransfer` , `i` . `post_delivery` , `i` . `lbtl_` , `i` . `bexp` , `i` . `so` , `i` . `blvl`
, `m` . `type` , `m` . `2h` , `m` . `inslot` , `m` . `name` , `m` . `img` FROM `items_users` AS `i` LEFT JOIN `items_main` AS `m` ON ( `i` . `item_id` = `m` . `id` )
WHERE `i` . `inShop` = " 0 " AND
( ( `m` . `inslot` > 0 AND `m` . `inslot` < 18 ) OR " ' . $rune['type'] . ' " = " 37 " OR `m` . `inslot` = " 51 " )
AND `i` . `delete` = " 0 " AND `i` . `inOdet` = " 0 " AND `i` . `id` = " ' . mysql_real_escape_string(
$_GET [ 'item_rune_id' ]
) . '" AND `i`.`uid` = "' . mysql_real_escape_string ( $this -> info [ 'id' ]) . '"'
);
$vi = - 1 ;
} else {
$sp = mysql_query (
' SELECT
`i` . `id` , `i` . `item_id` , `i` . `1price` , `i` . `2price` , `i` . `uid` , `i` . `use_text` , `i` . `data` , `i` . `inOdet` , `i` . `inShop` , `i` . `delete` , `i` . `iznosNOW` , `i` . `iznosMAX` , `i` . `gift` , `i` . `gtxt1` , `i` . `gtxt2` , `i` . `kolvo` , `i` . `geniration` , `i` . `magic_inc` , `i` . `maidin` , `i` . `lastUPD` , `i` . `timeOver` , `i` . `overType` , `i` . `secret_id` , `i` . `time_create` , `i` . `inGroup` , `i` . `dn_delete` , `i` . `inTransfer` , `i` . `post_delivery` , `i` . `lbtl_` , `i` . `bexp` , `i` . `so` , `i` . `blvl`
, `m` . `type` , `m` . `2h` , `m` . `inslot` , `m` . `name` , `m` . `img` FROM `items_users` AS `i` LEFT JOIN `items_main` AS `m` ON ( `i` . `item_id` = `m` . `id` )
WHERE
( ( `m` . `inslot` > 0 AND `m` . `inslot` < 18 ) OR " ' . $rune['type'] . ' " = " 37 " OR `m` . `inslot` = " 51 " ) AND
`i` . `inShop` = " 0 " AND `i` . `delete` = " 0 " AND `i` . `inOdet` = " 0 " AND `m` . `name` LIKE " %' . mysql_real_escape_string(
str_replace ( '"' , '"' , $name )
) . '%" AND `i`.`uid` = "' . mysql_real_escape_string ( $this -> info [ 'id' ]) . '"'
);
}
while ( $pl = mysql_fetch_array ( $sp )) {
$vibor .= '<img src="' . Config :: img () . '/i/items/' . $pl [ 'img' ] . '"><hr>' ;
if ( ! isset ( $id [ 'id' ])) {
2023-08-14 15:15:05 +00:00
$dt = Conversion :: dataStringToArray ( $pl [ 'data' ]);
2023-07-19 15:23:44 +00:00
$id = [];
$id = $pl ;
$id_type = $pl [ 'type' ];
}
if ( $vi != - 1 ) {
$vi ++ ;
$vid .= '`iu`.`id` = "' . $pl [ 0 ] . '" OR' ;
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( $vi > 0 ) {
$itm_inv = $this -> genInv ( 80 , ' ' . rtrim ( $vid , 'OR' ) . ' ' );
echo '<button style="float:right" class="btn" type="button" onclick="top.frames[\'main\'].location=\'main.php?inv=1&otdel=' . floor (
$_GET [ 'otdel' ]
) . '\'">Вернуться</button><strong>Выберите предмет для использования "' . $rune [ 'name' ] . '":</strong><br><br><table width="100%" border="0" cellspacing="1" align="center" cellpadding="0" bgcolor="#A5A5A5">' . $itm_inv [ 2 ] . '</table>' ;
die ();
} else {
unset ( $rune );
}
if ( $id [ 'id' ] > 0 ) {
if ( $ruid < 1 && isset ( $_GET [ 'use_rune' ])) {
$ruid = $_GET [ 'use_rune' ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$idtrue = false ;
$rune = mysql_fetch_array (
mysql_query (
' SELECT
`i` . `id` , `i` . `item_id` , `i` . `1price` , `i` . `2price` , `i` . `uid` , `i` . `use_text` , `i` . `data` , `i` . `inOdet` , `i` . `inShop` , `i` . `delete` , `i` . `iznosNOW` , `i` . `iznosMAX` , `i` . `gift` , `i` . `gtxt1` , `i` . `gtxt2` , `i` . `kolvo` , `i` . `geniration` , `i` . `magic_inc` , `i` . `maidin` , `i` . `lastUPD` , `i` . `timeOver` , `i` . `overType` , `i` . `secret_id` , `i` . `time_create` , `i` . `inGroup` , `i` . `dn_delete` , `i` . `inTransfer` , `i` . `post_delivery` , `i` . `lbtl_` , `i` . `bexp` , `i` . `so` , `i` . `blvl`
, `m` . `name` , `m` . `type` , `m` . `level` FROM `items_users` AS `i` LEFT JOIN `items_main` AS `m` ON `i` . `item_id` = `m` . `id` WHERE `i` . `id` = " ' . mysql_real_escape_string(
$ruid
) . '" AND `i`.`uid` = "' . $this -> info [ 'id' ] . '" AND `i`.`delete` = "0" AND `i`.`inShop` = "0" LIMIT 1'
)
);
if ( $rune [ 'level' ] > $this -> info [ 'level' ] && $rune [ 'type' ] == 31 ) {
$this -> error = 'У вас слишком маленький уровень чтобы использовать эту руну' ;
} elseif ( $rune [ 'type' ] == 31 ) {
//Встраиваем руну
if ( $idt [ 'type' ] == 7 ) {
$idt [ 'type' ] = 6 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $idt [ 'type' ] == 5 ) {
$idt [ 'type' ] = 6 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $idt [ 'type' ] == 4 ) {
$idt [ 'type' ] = 6 ;
2022-12-19 20:22:19 +00:00
}
2023-08-14 15:15:05 +00:00
$data = Conversion :: dataStringToArray ( $id [ 'data' ]);
2023-07-19 15:23:44 +00:00
$type_rune = [
'хи' => 9 , //Серьги
'хэ' => 10 , //Ожерелье
'ви' => 11 , //Кольцо
'во' => 12 , //Перчатки
'кэ' => 14 , //Поножи
'ки' => 15 , //Обувь
'ми' => 1 , //Шлем
'си' => 3 , //Наручи
'мо' => 6 , //Броня
'с о ' => 8 , //Пояс
];
$type_rune = $type_rune [ substr ( $rune [ 'name' ], - 2 , 2 )];
if ( $type_rune != $id [ 'type' ] && $type_rune != '' ) {
$type_rune2 = [
'хи' => 'серьги' , //Серьги
'хэ' => 'ожерелья' , //Ожерелье
'ви' => 'кольцо' , //Кольцо
'во' => 'перчатки' , //Перчатки
'кэ' => 'поножи' , //Поножи
'ки' => 'обувь' , //Обувь
'ми' => 'шлем' , //Шлем
'си' => 'наручи' , //Наручи
'мо' => 'броню' , //Броня
'с о ' => 'пояс' , //Пояс
];
$this -> error = 'Встроить данную руну возможно только в ' . $type_rune2 [ substr (
$rune [ 'name' ], - 2 , 2
)] . ' (Тип предмета: ' . $id [ 'type' ] . '. Требуемый тип: ' . $type_rune . ')' ;
} elseif ( isset ( $data [ 'nomodif' ])) {
$this -> error = 'Улучшить данный предмет невозможно' ;
} elseif ( isset ( $data [ 'art' ]) && $data [ 'tr_lvl' ] < 0 ) {
$this -> error = 'Встраивание усилений в артефакты ниже 10-г о уровня недоступно' ;
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
if ( isset ( $data [ 'rune' ]) && $data [ 'rune' ] > 0 ) {
$ritm = mysql_fetch_array (
2022-12-30 19:03:37 +00:00
mysql_query (
2023-07-19 15:23:44 +00:00
'SELECT * FROM `items_main_data` WHERE `items_id` = "' . $data [ 'rune_id' ] . '" LIMIT 1'
2022-12-30 19:03:37 +00:00
)
);
2023-07-19 15:23:44 +00:00
$j = 0 ;
2023-08-14 15:15:05 +00:00
$data_r = Conversion :: dataStringToArray ( $ritm [ 'data' ]);
2023-07-19 15:23:44 +00:00
while ( $j < count ( $this -> items [ 'add' ])) {
if ( isset ( $data_r [ 'add_' . $this -> items [ 'add' ][ $j ]])) {
$data [ 'add_' . $this -> items [ 'add' ][ $j ]] -= $data_r [ 'add_' . $this -> items [ 'add' ][ $j ]];
}
$j ++ ;
}
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$data [ 'rune' ] = $rune [ 'id' ];
$data [ 'rune_id' ] = $rune [ 'item_id' ];
$data [ 'rune_name' ] = $rune [ 'name' ];
$data [ 'rune_lvl' ] = $rune [ 'level' ];
//Добавляем характеристики руны
2023-08-14 15:15:05 +00:00
$add = Conversion :: dataStringToArray ( $rune [ 'data' ]);
2023-07-19 15:23:44 +00:00
$i = 0 ;
while ( $i < count ( $this -> items [ 'add' ])) {
if ( isset ( $add [ 'add_' . $this -> items [ 'add' ][ $i ]])) {
$data [ 'add_' . $this -> items [ 'add' ][ $i ]] += $add [ 'add_' . $this -> items [ 'add' ][ $i ]];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$i ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
2023-08-14 15:15:05 +00:00
$data = Conversion :: arrayToDataString ( $data );
2023-07-19 15:23:44 +00:00
mysql_query (
'UPDATE `items_users` SET `delete` = "' . time () . '" WHERE `id` = "' . $rune [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
mysql_query (
'UPDATE `items_users` SET `data` = "' . $data . '" WHERE `id` = "' . $id [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
$this -> error = 'Встраивание руны прошло успешно' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} else {
$rune = mysql_fetch_array (
2022-12-30 19:03:37 +00:00
mysql_query (
2023-07-19 15:23:44 +00:00
' SELECT
`i` . `id` , `i` . `item_id` , `i` . `1price` , `i` . `2price` , `i` . `uid` , `i` . `use_text` , `i` . `data` , `i` . `inOdet` , `i` . `inShop` , `i` . `delete` , `i` . `iznosNOW` , `i` . `iznosMAX` , `i` . `gift` , `i` . `gtxt1` , `i` . `gtxt2` , `i` . `kolvo` , `i` . `geniration` , `i` . `magic_inc` , `i` . `maidin` , `i` . `lastUPD` , `i` . `timeOver` , `i` . `overType` , `i` . `secret_id` , `i` . `time_create` , `i` . `inGroup` , `i` . `dn_delete` , `i` . `inTransfer` , `i` . `post_delivery` , `i` . `lbtl_` , `i` . `bexp` , `i` . `so` , `i` . `blvl`
, `m` . `name` , `m` . `level` , `m` . `type` FROM `items_users` AS `i` LEFT JOIN `items_main` AS `m` ON `i` . `item_id` = `m` . `id` WHERE `i` . `id` = " ' . mysql_real_escape_string(
$ruid
) . '" AND `i`.`uid` = "' . $this -> info [ 'id' ] . '" AND `i`.`delete` = "0" AND `i`.`inShop` = "0" LIMIT 1'
2022-12-30 19:03:37 +00:00
)
);
2023-07-19 15:23:44 +00:00
if ( ! isset ( $rune [ 'id' ])) {
$this -> error = 'Усиление которое вы использовали не найдено' ;
} elseif ( $rune [ 'type' ] == 62 && $rune [ 'item_id' ] == 6167 ) {
//-----------------------------------------------
$idt = mysql_fetch_array (
2022-12-30 19:03:37 +00:00
mysql_query (
2024-01-05 22:14:35 +00:00
'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`ts`,`srok`,`class`,`class_point`,`anti_class`,`anti_class_point`,`max_text`,`useInBattle`,`lbtl`,`lvl_itm`,`lvl_exp`,`lvl_aexp` FROM `items_main` WHERE `id` = "' . $id [ 'item_id' ] . '" LIMIT` 1'
2022-12-30 19:03:37 +00:00
)
);
2023-07-19 15:23:44 +00:00
2023-08-14 15:15:05 +00:00
$data = Conversion :: dataStringToArray ( $id [ 'data' ]);
$add = Conversion :: dataStringToArray ( $rune [ 'data' ]);
2023-07-19 15:23:44 +00:00
if ( isset ( $data [ 'nomodif' ])) {
$this -> error = 'Улучшить данный предмет невозможно' ;
} elseif ( isset ( $data [ 'art' ]) && $data [ 'tr_lvl' ] < 0 ) {
$this -> error = 'Встраивание усилений в артефакты ниже 10-г о уровня недоступно' ;
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
if ( isset ( $data [ 'spell' ]) && $data [ 'spell' ] > 0 ) {
if ( isset ( $data [ 'spell_st_val_hp' ])) {
$data [ 'add_hpAll' ] -= $data [ 'spell_st_val_hp' ];
unset ( $data [ 'spell_st_val_hp' ]);
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $data [ 'addspell_mpAll' ])) {
$data [ 'add_mpAll' ] -= $data [ 'addspell_mpAll' ];
unset ( $data [ 'addspell_mpAll' ]);
}
unset ( $data [ 'spell' ]);
if ( isset ( $data [ 'spell_id' ])) {
unset ( $data [ 'spell_id' ]);
}
if ( isset ( $data [ 'spell_name' ])) {
unset ( $data [ 'spell_name' ]);
}
if ( isset ( $data [ 'spell_lvl' ])) {
unset ( $data [ 'spell_lvl' ]);
}
if ( isset ( $data [ 'spell_st_name' ])) {
$data [ 'add_' . $data [ 'spell_st_name' ]] -= $data [ 'spell_st_val' ];
if ( $data [ 'add_' . $data [ 'spell_st_name' ]] == 0 ) {
unset ( $data [ 'add_' . $data [ 'spell_st_name' ]]);
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
unset ( $data [ 'spell_st_name' ]);
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $data [ 'spell_st_val' ])) {
unset ( $data [ 'spell_st_val' ]);
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
//Новая чарка
2022-12-19 20:22:19 +00:00
2024-01-05 22:14:35 +00:00
$srune = mysql_query ( 'select * from new_charov where 1' );
2023-07-19 15:23:44 +00:00
$irun = 0 ;
while ( $nrune = mysql_fetch_array ( $srune )) {
$irun ++ ;
$ntrune [ $irun ] = $nrune ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $irun > 0 ) {
$addrune = $ntrune [ rand ( 1 , $irun )];
$addrunes = rand ( $addrune [ 'min' ], $addrune [ 'max' ]);
if ( isset ( $data [ 'add_' . $addrune [ 'gname' ]])) {
$data [ 'add_' . $addrune [ 'gname' ]] += $addrunes ;
} else {
$data [ 'add_' . $addrune [ 'gname' ]] = $addrunes ;
}
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$data [ 'spell' ] = $rune [ 'id' ];
if ( ! isset ( $data [ 'sudba' ])) {
$data [ 'sudba' ] = '0' ;
}
$data [ 'spell_name' ] = 'Зачарованно' ; //$info
$data [ 'spell_st_name' ] = $addrune [ 'gname' ];
$data [ 'spell_st_val' ] = $addrunes ;
$data [ 'spell_id' ] = $rune [ 'item_id' ];
$data [ 'spell_lvl' ] = 8 ;
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
//
2023-08-14 15:15:05 +00:00
$data = Conversion :: arrayToDataString ( $data );
2023-07-19 15:23:44 +00:00
unset ( $srune , $irun , $nrune , $ntrune , $addrune , $addrunes );
$tid = mysql_query (
'UPDATE `items_users` SET `delete` = "' . time () . '" WHERE `id` = "' . $rune [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
mysql_query (
'UPDATE `items_users` SET `data` = "' . $data . '" WHERE `id` = "' . $id [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
if ( isset ( $tid )) {
$this -> error = 'Чарование прошло успешно!' ;
} else {
$this -> error = 'Что то пошло не так!' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
unset ( $tid );
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
//-----------------------------------------------
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
} elseif ( $rune [ 'type' ] == 62 ) {
$idt = mysql_fetch_array (
mysql_query (
2024-01-05 22:14:35 +00:00
'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`ts`,`srok`,`class`,`class_point`,`anti_class`,`anti_class_point`,`max_text`,`useInBattle`,`lbtl`,`lvl_itm`,`lvl_exp`,`lvl_aexp` FROM `items_main` WHERE `id` = "' . $id [ 'item_id' ] . '" LIMIT` 1'
2023-07-19 15:23:44 +00:00
)
);
if ( $idt [ 'type' ] == 7 ) {
$idt [ 'type' ] = 6 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $idt [ 'type' ] == 5 ) {
$idt [ 'type' ] = 6 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $idt [ 'type' ] == 4 ) {
$idt [ 'type' ] = 6 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
//$id['type'] = $idt['type'];
//Встраиваем руну
2023-08-14 15:15:05 +00:00
$data = Conversion :: dataStringToArray ( $id [ 'data' ]);
$add = Conversion :: dataStringToArray ( $rune [ 'data' ]);
2023-07-19 15:23:44 +00:00
if ( isset ( $data [ 'nomodif' ])) {
$this -> error = 'Улучшить данный предмет невозможно' ;
} elseif ( isset ( $data [ 'art' ]) && $data [ 'tr_lvl' ] < 0 ) {
$this -> error = 'Встраивание усилений в артефакты ниже 10-г о уровня недоступно' ;
} elseif ( isset ( $add [ 'onimposed' ])) {
//Встраиваем магию
//Новая чарка
$i = 0 ;
$j = 0 ;
$utp = explode ( ',' , $add [ 'onItemType' ]);
while ( $i < count ( $utp )) {
if ( $utp [ $i ] == $id [ 'type' ]) {
$j ++ ;
}
$i ++ ;
}
if ( $j > 0 ) {
unset ( $data [ 'imposed' ], $data [ 'imposed_name' ], $data [ 'bm_a1' ]);
$imposed = [
'imposed' => 1 ,
'imposed_name' => $add [ 'onSpellName' ],
'bm_a1' => $add [ 'onSpellFile' ],
];
if ( ! isset ( $add [ 'onSpellFile' ])) {
unset ( $imposed [ 'bm_a1' ]);
//
if ( isset ( $add [ 'onSpell_mpAll' ])) {
$imposed [ 'addspell_mpAll' ] = $add [ 'onSpell_mpAll' ];
$imposed [ 'add_mpAll' ] = $data [ 'add_mpAll' ] + $add [ 'onSpell_mpAll' ] - $data [ 'addspell_mpAll' ];
}
//
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
$imposed [ 'sudba' ] = 1 ;
$data = array_merge ( $data , $imposed );
2023-08-14 15:15:05 +00:00
$data = Conversion :: arrayToDataString ( $data );
2023-07-19 15:23:44 +00:00
mysql_query (
'UPDATE `items_users` SET `delete` = "' . time () . '" WHERE `id` = "' . $rune [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
mysql_query (
'UPDATE `items_users` SET `data` = "' . $data . '" WHERE `id` = "' . $id [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
$this -> error = 'Наложены чары "' . $add [ 'onSpellName' ] . '" на предмет "' . $id [ 'name' ] . '"' ;
} else {
$this -> error = 'Предмет "' . $id [ 'name' ] . '" не подходит для усиления.,.' ;
2022-12-19 20:22:19 +00:00
}
} else {
2023-07-19 15:23:44 +00:00
if ( isset ( $data [ 'spell' ]) && $data [ 'spell' ] > 0 ) {
//Отнимаем эффект от прошлых чарок
$litm = mysql_fetch_array (
mysql_query (
'SELECT * FROM `items_main_data` WHERE `items_id` = "' . $id [ 'item_id' ] . '" LIMIT 1'
)
);
2022-12-19 20:22:19 +00:00
2023-08-14 15:15:05 +00:00
$data_l = Conversion :: dataStringToArray ( $litm [ 'data' ]);
2023-07-19 15:23:44 +00:00
$pvr = [
'i' => 0 ,
'spell' => [],
'rune' => [],
'atack' => [],
'podgon' => [],
];
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( isset ( $data [ 'podgon' ])) {
if ( $data [ 'tr_lvl' ] > $id [ 'level' ]) {
$id [ 'level' ] = $data [ 'tr_lvl' ];
}
$pvr [ 'podgon' ][ 'hpAll' ] = 6 * $id [ 'level' ] + 6 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $data [ 'addspell_hpAll' ])) {
$pvr [ 'podgon' ][ 'hpAll' ] += $data [ 'addspell_hpAll' ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $data [ 'rune_id' ]) && $data [ 'rune_id' ] > 0 ) {
$ritm = mysql_fetch_array (
mysql_query (
'SELECT * FROM `items_main_data` WHERE `items_id` = "' . $data [ 'rune_id' ] . '" LIMIT 1'
)
);
$j = 0 ;
2023-08-14 15:15:05 +00:00
$data_r = Conversion :: dataStringToArray ( $ritm [ 'data' ]);
2023-07-19 15:23:44 +00:00
while ( $j < count ( $this -> items [ 'add' ])) {
if ( isset ( $data_r [ 'add_' . $this -> items [ 'add' ][ $j ]])) {
$pvr [ 'rune' ][ $this -> items [ 'add' ][ $j ]] = $data_r [ 'add_' . $this -> items [ 'add' ][ $j ]];
}
$j ++ ;
}
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $data [ 'spell_st_val_hp' ])) {
$data [ 'add_hpAll' ] -= $data [ 'spell_st_val_hp' ];
}
//$i = 0;
//while( $i < count($data)) {
if ( ! isset ( $data [ 'spell_st_name' ])) {
$delk = count ( $this -> items [ 'add' ]);
$this -> items [ 'add' ][] = 'mib1' ;
$this -> items [ 'add' ][] = 'mib2' ;
$this -> items [ 'add' ][] = 'mib3' ;
$this -> items [ 'add' ][] = 'mib4' ;
$this -> items [ 'add' ][] = 'mab1' ;
$this -> items [ 'add' ][] = 'mab2' ;
$this -> items [ 'add' ][] = 'mab3' ;
$this -> items [ 'add' ][] = 'mab4' ;
$j = 0 ;
while ( $j < count ( $this -> items [ 'add' ])) {
if ( isset ( $data [ 'add_' . $this -> items [ 'add' ][ $j ]])) {
if ( $data_l [ 'add_' . $this -> items [ 'add' ][ $j ]] != $data [ 'add_' . $this -> items [ 'add' ][ $j ]] - $pvr [ 'rune' ][ $this -> items [ 'add' ][ $j ]] - $pvr [ 'podgon' ][ $this -> items [ 'add' ][ $j ]]) {
//echo ''.$this->items['add'][$j].' -> '.$data_l['add_'.$this->items['add'][$j]].' / '.$data['add_'.$this->items['add'][$j]].'<br>';
if ( ! isset ( $data_l [ 'add_' . $this -> items [ 'add' ][ $j ]])) {
unset ( $data [ 'add_' . $this -> items [ 'add' ][ $j ]]);
} else {
$data [ 'add_' . $this -> items [ 'add' ][ $j ]] = $data_l [ 'add_' . $this -> items [ 'add' ][ $j ]];
}
}
}
$j ++ ;
}
$i = 0 ;
while ( $i < 8 ) {
unset ( $this -> items [ 'add' ][ $delk + $i ]);
$i ++ ;
}
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
//Новая чарка
$i = 0 ;
$utp = explode ( ',' , $add [ 'onItemType' ]);
while ( $i < count ( $utp )) {
if ( $utp [ $i ] == $id [ 'type' ]) {
// Определили нужный тип оружия.
$itm_twohand = mysql_fetch_array (
mysql_query (
'SELECT `2h` FROM `items_main` WHERE `id` = "' . $id [ 'item_id' ] . '" LIMIT 1'
)
);
if ( isset ( $itm_twohand [ '2h' ]) && $itm_twohand [ '2h' ] == 1 ) {
$tw = '2' ;
} else {
$tw = '' ;
}
$j = 0 ;
while ( $j < count ( $this -> items [ 'add' ])) {
if ( isset ( $add [ $tw . 'add' . $utp [ $i ] . '_' . $this -> items [ 'add' ][ $j ]])) {
$rnda [ count ( $rnda )] = $this -> items [ 'add' ][ $j ];
}
$j ++ ;
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( isset ( $add [ 'imposed' ]) && $add [ 'imposed' ] != '' ) {
$imposed = [
'imposed' => '1' , // Активно
'imposed_id' => $rune [ 'id' ], // ID чарки свитка
'imposed_name' => $rune [ 'name' ], // Наименование чар, которое отображается на предмете
'imposed_level' => $rune [ 'level' ], // Цвет подсветки заклинания при отображении. По умолчанию: 0;
'bm_a1' => $add [ 'imposed' ], // Имя файла заклинания.
'sudba' => $this -> info [ 'login' ], // Цвет подсветки заклинания при отображении. По умолчанию: 0;
];
if ( isset ( $add [ 'imposed_name' ])) {
$imposed [ 'imposed_name' ] = $add [ 'imposed_name' ];
}
if ( isset ( $add [ 'imposed_level' ])) {
$imposed [ 'imposed_level' ] = $add [ 'imposed_level' ];
}
$rnda [ 0 ] = 1 ;
}
if ( count ( $rnda ) >= 0 ) {
$rnda = $rnda [ rand ( 0 , count ( $rnda ) - 1 )];
if ( $rnda == 'mib1' || $rnda == 'mib2' || $rnda == 'mib3' || $rnda == 'mib4' ) {
$rnda = str_replace ( 'mib' , 'mab' , $rnda );
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( ! isset ( $this -> is [ $rnda ]) && isset ( $imposed )) {
$data = array_merge ( $data , $imposed );
2023-08-14 15:15:05 +00:00
$data = Conversion :: arrayToDataString ( $data );
2023-04-18 09:21:54 +00:00
2023-07-19 15:23:44 +00:00
mysql_query (
'UPDATE `items_users` SET `delete` = "' . time () . '" WHERE `id` = "' . $rune [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
mysql_query (
'UPDATE `items_users` SET `data` = "' . $data . '" WHERE `id` = "' . $id [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
$this -> error = 'Наложены чары "' . $imposed [ 'imposed_name' ] . '" на предмет "' . $id [ 'name' ] . '"' ;
} elseif ( ! isset ( $this -> is [ $rnda ])
&& $rnda != 'mib1' && $rnda != 'mib2' && $rnda != 'mib3' && $rnda != 'mib4'
&& $rnda != 'mab1' && $rnda != 'mab2' && $rnda != 'mab3' && $rnda != 'mab4'
) {
$this -> error = 'Попробуйте зачарить предмет снова. ( ' . $rnda . ' )' ;
} else {
$data [ 'add_' . $rnda ] += $add [ $tw . 'add' . $utp [ $i ] . '_' . $rnda ];
if ( $rnda == 'mab1' || $rnda == 'mab2' || $rnda == 'mab3' || $rnda == 'mab4' ) {
$data [ 'add_' . str_replace (
'mab' , 'mib' , $rnda
)] += $add [ $tw . 'add' . $utp [ $i ] . '_' . $rnda ];
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
$data [ 'spell' ] = $rune [ 'id' ];
if ( ! isset ( $data [ 'sudba' ])) {
$data [ 'sudba' ] = '0' ;
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( isset ( $data [ 'spell_st_name' ])) {
$data [ 'add_' . $data [ 'spell_st_name' ]] -= $data [ 'spell_st_val' ];
if ( $data [ 'spell_st_name' ] == 'mab1' || $data [ 'spell_st_name' ] == 'mab2' || $data [ 'spell_st_name' ] == 'mab3' || $data [ 'spell_st_name' ] == 'mab4' ) {
$data [ 'add_' . str_replace (
'mab' , 'mib' , $data [ 'spell_st_name' ]
)] -= $data [ 'spell_st_val' ];
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( $data [ 'add_' . $data [ 'spell_st_name' ]] == 0 ) {
unset ( $data [ 'add_' . $data [ 'spell_st_name' ]]);
}
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
$data [ 'spell_id' ] = $rune [ 'item_id' ];
$data [ 'spell_name' ] = $rune [ 'name' ];
$data [ 'spell_lvl' ] = $rune [ 'level' ];
$data [ 'spell_st_name' ] = $rnda ;
$data [ 'spell_st_val' ] = $add [ $tw . 'add' . $utp [ $i ] . '_' . $rnda ];
if ( isset ( $add [ 'addspell_hpAll' ])) {
$data [ 'spell_st_val_hp' ] = $add [ 'addspell_hpAll' ];
$data [ 'add_hpAll' ] += $add [ 'addspell_hpAll' ];
} else {
unset ( $data [ 'spell_st_val_hp' ]);
}
2023-08-14 15:15:05 +00:00
$data = Conversion :: arrayToDataString ( $data );
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
$this -> is [ 'mab1' ] = 'Броня головы' ;
$this -> is [ 'mab2' ] = 'Броня корпуса' ;
$this -> is [ 'mab3' ] = 'Броня пояса' ;
$this -> is [ 'mab4' ] = 'Броня ног' ;
$this -> error = 'Увеличина характеристика предмета "' . $id [ 'name' ] . '", ' . $this -> is [ $rnda ] . ': +' . $add [ $tw . 'add' . $utp [ $i ] . '_' . $rnda ];
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
unset ( $this -> is [ 'mab1' ], $this -> is [ 'mab2' ], $this -> is [ 'mab3' ], $this -> is [ 'mab4' ]);
mysql_query (
'UPDATE `items_users` SET `delete` = "' . time () . '" WHERE `id` = "' . $rune [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
mysql_query (
'UPDATE `items_users` SET `data` = "' . $data . '" WHERE `id` = "' . $id [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
}
} else {
$this -> error = 'Что-то не так, невозможно зачаровать данным свитком' ;
}
$i = 100499 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$i ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $i < 100500 ) {
$this -> error = 'Данный предмет не подходит для зачарования...' ;
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
} elseif ( $rune [ 'type' ] == 47 ) {
2023-08-14 15:15:05 +00:00
$add = Conversion :: dataStringToArray ( $id [ 'data' ]);
$data = Conversion :: dataStringToArray ( $rune [ 'data' ]);
2023-07-19 15:23:44 +00:00
if ( $add [ 'art' ] == 1 ) {
if ( $id [ 'iznosNOW' ] > 0 ) {
$id [ 'iznosNOW' ] -= $data [ 'repairLevel' ];
if ( $id [ 'iznosNOW' ] < 0 ) {
$id [ 'iznosNOW' ] = 0 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
mysql_query (
'UPDATE `items_users` SET `iznosNOW` = "' . $id [ 'iznosNOW' ] . '" WHERE `id` = "' . $id [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
mysql_query (
'UPDATE `items_users` SET `delete` = "' . time () . '" WHERE `id` = "' . $rune [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
$this -> error = 'Предмет ' . $id [ 'name' ] . ' успешно отремонтирован.' ;
} else {
$this -> error = 'Предмет не нуждаеться в ремонте...' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} else {
$this -> error = 'Свиток ремонтирует только артефакты...' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} elseif ( $rune [ 'type' ] == 46 ) {
$idt = mysql_fetch_array (
mysql_query (
2024-01-05 22:14:35 +00:00
'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`ts`,`srok`,`class`,`class_point`,`anti_class`,`anti_class_point`,`max_text`,`useInBattle`,`lbtl`,`lvl_itm`,`lvl_exp`,`lvl_aexp` FROM `items_main` WHERE `id` = ' . $id [ 'item_id' ]
2023-07-19 15:23:44 +00:00
)
);
if ( $idt [ 'type' ] == 5 ) {
$idt [ 'type' ] = 6 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$id [ 'type' ] = $idt [ 'type' ];
if ( $id_type < 18 || $id_type > 24 ) {
2023-08-14 15:15:05 +00:00
$add = Conversion :: dataStringToArray ( $rune [ 'data' ]);
2023-07-19 15:23:44 +00:00
if ( isset ( $add [ 'uptimeitem' ])) {
2023-08-14 15:15:05 +00:00
$data = Conversion :: dataStringToArray ( $id [ 'data' ]);
2023-07-19 15:23:44 +00:00
if ( $data [ 'srok' ] > 0 || $id [ 'srok' ] > 0 ) {
if ( ! isset ( $data [ 'srok' ])) {
$data [ 'srok' ] = $id [ 'srok' ];
}
if ( $data [ 'srok' ] + $id [ 'time_create' ] - time () > 86400 + 30 ) {
$this -> error = 'Нельзя использовать на предметы с сроком годности 30 и более дней.' ;
} elseif ( $id [ 'inslot' ] > 0 && $id [ 'inslot' ] < 20 ) {
2023-12-01 21:27:45 +00:00
$this -> error = 'Срок годности предмета "' . $id [ 'name' ] . '" продлен на ' . Conversion :: secondsToTimeout (
2023-07-19 15:23:44 +00:00
$add [ 'uptimeitem' ]
) . '.' ;
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( isset ( $data [ 'sleep_moroz' ])) {
unset ( $data [ 'sleep_moroz' ]);
}
2022-12-19 20:22:19 +00:00
2023-08-14 15:15:05 +00:00
$data = Conversion :: arrayToDataString ( $data );
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
mysql_query (
'UPDATE `items_users` SET `delete` = "' . time () . '" WHERE `id` = "' . $rune [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
mysql_query (
'UPDATE `items_users` SET `data` = "' . $data . '",`time_create` = `time_create` + ' . floor (
$add [ 'uptimeitem' ]
) . ' WHERE `id` = "' . $id [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
} else {
$this -> error = 'Предмет данного типа нельзя продлить...' ;
}
} else {
$this -> error = 'Это работает только на предметы с сроком годности...' ;
}
} else {
$this -> error = 'Затачивать можно только оружие...' ;
}
} else {
//Заточка
2023-08-14 15:15:05 +00:00
$data = Conversion :: dataStringToArray ( $id [ 'data' ]);
$add = Conversion :: dataStringToArray ( $rune [ 'data' ]);
2023-07-19 15:23:44 +00:00
if ( isset ( $data [ 'upatack_id' ])) {
$this -> error = 'Предмет уже заточен, вытащите заточку в Ремонтной мастерской.' ;
} elseif ( isset ( $data [ 'nomodif' ])) {
$this -> error = 'Улучшить данный предмет невозможно' ;
} elseif ( $add [ 'uptype' ] != $id_type || $add [ 'uptype' ] == 0 ) {
$this -> error = 'Заточка не подходит к данному предмету...' ;
} else {
if ( isset ( $data [ 'upatack_id' ]) && $data [ 'upatack_id' ] > 0 ) {
$ritm = mysql_fetch_array (
mysql_query (
'SELECT * FROM `items_main_data` WHERE `items_id` = "' . $data [ 'upatack_id' ] . '" LIMIT 1'
)
);
2023-08-14 15:15:05 +00:00
$data_r = Conversion :: dataStringToArray ( $ritm [ 'data' ]);
2023-07-19 15:23:44 +00:00
if ( $id_type == 22 ) {
$data [ 'add_m11' ] -= $data_r [ 'upatack' ]; //*2
}
$data [ 'sv_yron_min' ] -= $data_r [ 'upatack' ];
$data [ 'sv_yron_max' ] -= $data_r [ 'upatack' ];
}
$data [ 'upatack' ] = $rune [ 'id' ];
$data [ 'upatack_id' ] = $rune [ 'item_id' ];
$data [ 'upatack_name' ] = $rune [ 'name' ];
$data [ 'upatack_lvl' ] = $add [ 'upatack' ];
$data [ 'upatack_lvl' ] = $add [ 'upatack' ];
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
//Добавляем характеристики руны
$i = 0 ;
while ( $i < count ( $this -> items [ 'add' ])) {
if ( isset ( $add [ 'add_' . $this -> items [ 'add' ][ $i ]])) {
$data [ 'add_' . $this -> items [ 'add' ][ $i ]] += $add [ 'add_' . $this -> items [ 'add' ][ $i ]];
}
$i ++ ;
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
$data [ 'sv_yron_min' ] += $add [ 'upatack' ];
$data [ 'sv_yron_max' ] += $add [ 'upatack' ];
2023-12-01 21:05:11 +00:00
Delo :: add (
2 ,
'System.remont.upatack' ,
$this -> info [ 'id' ],
'"<span style="color: #4863A0; ">System.remont.upatack</span>": Заточка "' . $data [ 'upatack_name' ] . '" была успешно <strong>встроена</strong> в предмет "' . $id [ 'name' ] . '" [itm:' . $id [ 'id' ] . ']' ,
2023-07-19 15:23:44 +00:00
);
2022-12-19 20:22:19 +00:00
2023-08-14 15:15:05 +00:00
$data = Conversion :: arrayToDataString ( $data );
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
mysql_query (
'UPDATE `items_users` SET `delete` = "' . time () . '" WHERE `id` = "' . $rune [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
mysql_query (
'UPDATE `items_users` SET `1price` = "' . $id [ '1price' ] . '",`2price` = "' . $id [ '2price' ] . '",`data` = "' . $data . '" WHERE `id` = "' . $id [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
$this -> error = 'Заточка "' . $id [ 'name' ] . '" прошла успешно' ;
}
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} elseif ( $rune [ 'type' ] == 48 ) {
//Профиль
2023-08-14 15:15:05 +00:00
$data = Conversion :: dataStringToArray ( $id [ 'data' ]);
$add = Conversion :: dataStringToArray ( $rune [ 'data' ]);
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( $data [ 'tya1' ] >= 90 || $data [ 'tya2' ] >= 90 || $data [ 'tya3' ] >= 90 || $data [ 'tya4' ] >= 90 ) {
$this -> error = 'Предмет уже имеет 90 своего профиля' ;
} elseif ( isset ( $data [ 'nomodif' ])) {
$this -> error = 'Улучшить данный предмет невозможно' ;
} elseif ( $add [ 'uptype' ] != $id_type || $add [ 'uptype' ] == 0 ) {
$this -> error = 'Заточка не подходит к данному предмету...' ;
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
if ( $add [ 'tya1' ] == 1 ) {
$data [ 'tya1' ] += $add [ 'tya1' ];
if ( $data [ 'tya3' ] > 10 ) {
$data [ 'tya3' ] -= $add [ 'tya1' ];
}
} elseif ( $add [ 'tya2' ] == 1 ) {
$data [ 'tya2' ] += $add [ 'tya2' ];
if ( $data [ 'tya4' ] > 10 ) {
$data [ 'tya4' ] -= $add [ 'tya2' ];
}
} elseif ( $add [ 'tya3' ] == 1 ) {
$data [ 'tya3' ] += $add [ 'tya3' ];
if ( $data [ 'tya1' ] > 10 ) {
$data [ 'tya1' ] -= $add [ 'tya3' ];
}
} elseif ( $add [ 'tya4' ] == 1 ) {
$data [ 'tya4' ] += $add [ 'tya4' ];
if ( $data [ 'tya2' ] > 10 ) {
$data [ 'tya2' ] -= $add [ 'tya4' ];
}
}
2022-12-19 20:22:19 +00:00
2023-12-01 21:05:11 +00:00
Delo :: add (
2 ,
'System.remont.upatack' ,
$u -> info [ 'id' ],
'"<span style="color: #4863A0; ">System.remont.upatack</span>": Заточка "' . $data [ 'upatack_name' ] . '" была успешно <strong>встроена</strong> в предмет "' . $id [ 'name' ] . '" [itm:' . $id [ 'id' ] . ']' ,
2023-07-19 15:23:44 +00:00
);
2023-12-01 21:05:11 +00:00
2023-07-19 15:23:44 +00:00
$this -> error = 'Заточка "' . $id [ 'name' ] . '" прошла успешно! Колка:' . $data [ 'tya1' ] . ' Р у б :' . $data [ 'tya2' ] . ' Дробь:' . $data [ 'tya3' ] . ' Реж:' . $data [ 'tya4' ] . ' ' ;
2023-08-14 15:15:05 +00:00
$data = Conversion :: arrayToDataString ( $data );
2023-07-19 15:23:44 +00:00
mysql_query (
'UPDATE `items_users` SET `delete` = "' . time () . '" WHERE `id` = "' . $rune [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
mysql_query (
'UPDATE `items_users` SET `1price` = "' . $id [ '1price' ] . '",`2price` = "' . $id [ '2price' ] . '",`data` = "' . $data . '" WHERE `id` = "' . $id [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} elseif ( $rune [ 'type' ] == 50 ) {
//Страничка саныча
if ( $id [ 'item_id' ] == 3196 || $id [ 'item_id' ] == 3197 || $id [ 'item_id' ] == 3198 ) {
if ( $id [ 'iznosNOW' ] > 0 ) {
$id [ 'iznosNOW' ] -- ;
$this -> error = 'Восстановление "' . $id [ 'name' ] . '" прошла успешно! [' . round (
$id [ 'iznosNOW' ]
) . '/' . round ( $id [ 'iznosMAX' ]) . ']' ;
mysql_query (
'UPDATE `items_users` SET `delete` = "' . time () . '" WHERE `id` = "' . $rune [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
mysql_query (
'UPDATE `items_users` SET `iznosNOW` = "' . $id [ 'iznosNOW' ] . '" WHERE `id` = "' . $id [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
$this -> error = 'Предмет "' . $id [ 'name' ] . '" имеет макисмальное значение прочности! [' . round (
$id [ 'iznosNOW' ]
) . '/' . round ( $id [ 'iznosMAX' ]) . ']' ;
2022-12-19 20:22:19 +00:00
}
} else {
2023-07-19 15:23:44 +00:00
$this -> error = 'Данный предмет не подходит для восстановления!!' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} elseif ( $rune [ 'type' ] == 68 ) {
$idt = mysql_fetch_array (
2022-12-30 19:03:37 +00:00
mysql_query (
2024-01-05 22:14:35 +00:00
'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`ts`,`srok`,`class`,`class_point`,`anti_class`,`anti_class_point`,`max_text`,`useInBattle`,`lbtl`,`lvl_itm`,`lvl_exp`,`lvl_aexp` FROM `items_main` WHERE `id` = "' . $id [ 'item_id' ] . '" LIMIT` 1'
2022-12-30 19:03:37 +00:00
)
);
2023-07-19 15:23:44 +00:00
if ( $idt [ 'type' ] == 5 ) {
$idt [ 'type' ] = 6 ;
}
$id [ 'type' ] = $idt [ 'type' ];
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
//Встраиваем руну
2023-08-14 15:15:05 +00:00
$data = Conversion :: dataStringToArray ( $id [ 'data' ]);
$add = Conversion :: dataStringToArray ( $rune [ 'data' ]);
2023-07-19 15:23:44 +00:00
if ( isset ( $data [ 'nomodif' ])) {
$this -> error = 'Улучшить данный предмет невозможно' ;
} elseif ( ! isset ( $data [ 'close' ]) && $data [ 'close' ] != 0 ) {
$this -> error = 'Н е подходит к данному предмету, он не закрыт...' ;
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
$data [ 'unopen' ] = $rune [ 'id' ];
$data [ 'unopen_id' ] = $rune [ 'item_id' ];
$data [ 'unopen_name' ] = $rune [ 'name' ];
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
unset ( $data [ 'close' ]);
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
$data [ 'open' ] = 1 ;
2022-12-19 20:22:19 +00:00
2023-08-14 15:15:05 +00:00
$data = Conversion :: arrayToDataString ( $data );
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
mysql_query (
'UPDATE `items_users` SET `delete` = "' . time () . '" WHERE `id` = "' . $rune [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
mysql_query (
'UPDATE `items_users` SET `data` = "' . $data . '" WHERE `id` = "' . $id [ 'id' ] . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
$this -> error = 'Открытие "' . $id [ 'name' ] . '" прошло успешно' ;
}
} elseif ( $rune [ 'type' ] == 37 ) {
$idt = mysql_fetch_array (
mysql_query ( 'SELECT * FROM `items_main` WHERE `id` = "' . $id [ 'item_id' ] . '" LIMIT 1' )
);
if ( $idt [ 'type' ] != 37 ) {
//
2023-08-14 15:15:05 +00:00
$data = Conversion :: dataStringToArray ( $id [ 'data' ]);
$add = Conversion :: dataStringToArray ( $rune [ 'data' ]);
2023-07-19 15:23:44 +00:00
//
if ( $id [ 'gift' ] == '' || $id [ 'gift' ] == '0' ) {
if ( isset ( $data [ 'notransfer' ])) {
$this -> error = 'Предмет нельзя передавать...' ;
} elseif ( isset ( $data [ 'sudba' ]) && $data [ 'sudba' ] != 0 ) {
$this -> error = 'Предмет связан общей судьбой...' ;
} else {
if ( isset ( $add [ 'item_inbox' ]) && $add [ 'item_inbox' ] > 0 ) {
$this -> error = 'В упаковке уже что-то есть, осталось сделать подарок!' ;
} elseif ( $id [ 'inTransfer' ] > 0 || $id [ 'inShop' ] > 0 || $id [ 'inGroup' ] > 0 ) {
$this -> error = 'Нельзя передать этот предмет, он в передаче, на прилавке или в группе...' ;
} else {
//Закидываем предмет в упаковку
$add [ 'item_inbox' ] = $id [ 'id' ];
$add [ 'open' ] = 1 ;
$add [ 'nosale' ] = 1 ;
2023-08-14 15:15:05 +00:00
$add = Conversion :: arrayToDataString ( $add );
2023-07-19 15:23:44 +00:00
//
mysql_query (
'UPDATE `items_users` SET `inGroup` = 0,`data` = "' . $add . '" WHERE `id` = "' . $rune [ 'id' ] . '" LIMIT 1'
);
mysql_query (
'UPDATE `items_users` SET `uid` = -1 WHERE `id` = "' . $id [ 'id' ] . '" LIMIT 1'
);
//
$this -> error = 'Предмет "' . $idt [ 'name' ] . '" упакован в коробку.' ;
//
}
}
} else {
$this -> error = 'Даренное не дарят...' ;
}
//
} else {
$this -> error = 'Вы не сможете упаковать упаковку...' ;
2022-12-19 20:22:19 +00:00
}
2022-12-30 19:03:37 +00:00
} else {
2023-07-19 15:23:44 +00:00
$this -> error = '(' . $rune [ 'type' ] . ') Усиление которое вы использовали не найдено...' ;
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
} else {
$this -> error = 'Подходящего предмета не нашлось...' ;
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
public function genInv ( $type , $sort ) : array
2022-12-19 20:22:19 +00:00
{
2023-08-14 13:03:45 +00:00
global $code ;
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
$i = 0 ; // счетчик, просто обнуняем.
$j = 0 ; // В с е г о предметов while ++
$k = 1 ; // 0 или 1
$rt = [ 0 => 0 , 1 => 0 , 2 => '' ]; // Количество? Непонятно
$clr = [ 0 => 'c8c8c8' , 1 => 'd4d4d4' ]; // Цвет фона для предметов
$sort = explode ( 'ORDER BY' , $sort );
$where = $sort [ 0 ];
$sort = isset ( $sort [ 0 ], $sort [ 1 ]) ? ( $sort [ 1 ] != '' ? $sort [ 1 ] : '' ) : ' `lastUPD` DESC' ;
$cl = mysql_query (
2023-08-14 13:03:45 +00:00
' SELECT count ( `iu` . item_id ) as inGroupCount , `im` . `id` ,
`im` . `name` ,
`im` . `img` ,
`im` . `type` ,
`im` . `inslot` ,
`im` . `2h` ,
`im` . `2too` ,
`im` . `iznosMAXi` ,
`im` . `inRazdel` ,
`im` . `price1` ,
`im` . `price2` ,
`im` . `pricerep` ,
`im` . `magic_chance` ,
`im` . `info` ,
`im` . `massa` ,
`im` . `level` ,
`im` . `magic_inci` ,
`im` . `overTypei` ,
`im` . `group` ,
`im` . `group_max` ,
`im` . `ts` ,
`im` . `srok` ,
`im` . `class` ,
`im` . `class_point` ,
`im` . `anti_class` ,
`im` . `anti_class_point` ,
`im` . `max_text` ,
`im` . `useInBattle` ,
`im` . `lbtl` ,
`im` . `lvl_itm` ,
`im` . `lvl_exp` ,
`im` . `lvl_aexp` ,
`iu` . `so` ,
`iu` . `id` ,
`iu` . `item_id` ,
`iu` . `1price` ,
`iu` . `2price` ,
`iu` . `uid` ,
`iu` . `use_text` ,
`iu` . `data` ,
`iu` . `inOdet` ,
`iu` . `inShop` ,
`iu` . `delete` ,
`iu` . `iznosNOW` ,
`iu` . `iznosMAX` ,
`iu` . `gift` ,
`iu` . `gtxt1` ,
`iu` . `gtxt2` ,
`iu` . `kolvo` ,
`iu` . `geniration` ,
`iu` . `magic_inc` ,
`iu` . `maidin` ,
`iu` . `lastUPD` ,
`iu` . `timeOver` ,
`iu` . `overType` ,
`iu` . `secret_id` ,
`iu` . `time_create` ,
`iu` . `time_sleep` ,
`iu` . `inGroup` ,
`iu` . `dn_delete` ,
`iu` . `inTransfer` ,
`iu` . `post_delivery` ,
`iu` . `lbtl_` ,
`iu` . `bexp` ,
`iu` . `so` ,
`iu` . `blvl` FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON ( `im` . `id` = `iu` . `item_id` ) WHERE ' . $where . ' GROUP BY `im` . id ,
`iu` . item_id , `iu` . inGroup HAVING `iu` . inGroup > 0 UNION ALL SELECT count ( `iu` . item_id ) as inGroupCount , `im` . `id` ,
`im` . `name` ,
`im` . `img` , `im` . `type` ,
`im` . `inslot` ,
`im` . `2h` ,
`im` . `2too` , `im` . `iznosMAXi` ,
`im` . `inRazdel` , `im` . `price1` ,
`im` . `price2` , `im` . `pricerep` ,
`im` . `magic_chance` , `im` . `info` ,
`im` . `massa` ,
`im` . `level` ,
`im` . `magic_inci` , `im` . `overTypei` ,
`im` . `group` ,
`im` . `group_max` ,
2024-01-05 22:14:35 +00:00
`im` . `ts` ,
2023-08-14 13:03:45 +00:00
`im` . `srok` ,
`im` . `class` , `im` . `class_point` ,
`im` . `anti_class` , `im` . `anti_class_point` ,
`im` . `max_text` ,
`im` . `useInBattle` ,
`im` . `lbtl` , `im` . `lvl_itm` ,
`im` . `lvl_exp` ,
`im` . `lvl_aexp` ,
`iu` . `so` ,
`iu` . `id` ,
`iu` . `item_id` , `iu` . `1price` ,
`iu` . `2price` ,
`iu` . `uid` , `iu` . `use_text` ,
`iu` . `data` ,
`iu` . `inOdet` , `iu` . `inShop` ,
`iu` . `delete` ,
`iu` . `iznosNOW` ,
`iu` . `iznosMAX` , `iu` . `gift` ,
`iu` . `gtxt1` ,
`iu` . `gtxt2` ,
`iu` . `kolvo` ,
`iu` . `geniration` , `iu` . `magic_inc` , `iu` . `maidin` ,
`iu` . `lastUPD` , `iu` . `timeOver` , `iu` . `overType` , `iu` . `secret_id` , `iu` . `time_create` , `iu` . `time_sleep` ,
`iu` . `inGroup` ,
`iu` . `dn_delete` ,
`iu` . `inTransfer` , `iu` . `post_delivery` ,
`iu` . `lbtl_` ,
`iu` . `bexp` ,
`iu` . `so` ,
`iu` . `blvl` FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON ( `im` . `id` = `iu` . `item_id` ) WHERE `iu` . inGroup = 0 AND ' . $where . ' GROUP BY `iu` . id , `iu` . item_id ORDER BY ' . $sort . '
2023-07-19 15:23:44 +00:00
'
);
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( $type == 15 ) {
$anm = mysql_fetch_array (
2022-12-30 19:03:37 +00:00
mysql_query (
2023-07-19 15:23:44 +00:00
'SELECT `id`,`type`,`name`,`uid`,`delete`,`inBattle`,`eda`,`exp`,`obraz`,`stats`,`level`,`sex`,`levelUp`,`pet_in_cage`,`max_exp`,`priems`,`bonus` FROM `users_animal` WHERE `id` = "' . $this -> info [ 'animal' ] . '" AND `pet_in_cage` = 0 AND `delete` = "0" LIMIT 1'
2022-12-30 19:03:37 +00:00
)
);
2023-07-19 15:23:44 +00:00
}
while ( $pl = mysql_fetch_array ( $cl )) {
if ( $type == 30 ) {
2023-08-14 15:15:05 +00:00
$ChSudba = Conversion :: dataStringToArray ( $pl [ 'data' ]);
2023-07-19 15:23:44 +00:00
if ( isset ( $ChSudba [ 'sudba' ]) || $ChSudba [ 'sudba' ] != 0 || $ChSudba [ 'nosale' ] == 1 ) {
continue ;
}
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $pl [ '1price' ] > 0 ) {
$pl [ 'price1' ] = $pl [ '1price' ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$is1 = '' ;
$is2 = '' ;
$d = [];
//тест
$d [ 0 ] = 0 ;
$d [ 1 ] = 1 ;
$d [ 2 ] = 0 ;
2023-08-14 15:15:05 +00:00
$po = Conversion :: dataStringToArray ( $pl [ 'data' ]);
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
$see1 = 1 ;
if ( $type == 15 ) { //кормушка зверя
if ( $anm [ 'type' ] == 3 && substr_count ( $pl [ 'img' ], 'wisp' ) == 0 ) {
$see1 = 0 ; //светляк
} elseif ( $anm [ 'type' ] == 2 && substr_count ( $pl [ 'img' ], 'owl' ) == 0 ) {
$see1 = 0 ; //сова
} elseif ( $anm [ 'type' ] == 1 && substr_count ( $pl [ 'img' ], 'cat' ) == 0 ) {
$see1 = 0 ; //кот
} elseif ( $anm [ 'type' ] == 4 && substr_count ( $pl [ 'img' ], 'chrt' ) == 0 ) {
$see1 = 0 ; //чертяка
} elseif ( $anm [ 'type' ] == 5 && substr_count ( $pl [ 'img' ], 'dog' ) == 0 ) {
$see1 = 0 ; //собака
} elseif ( $anm [ 'type' ] == 6 && substr_count ( $pl [ 'img' ], 'pig' ) == 0 ) {
$see1 = 0 ; //свинья
} elseif ( $anm [ 'type' ] == 7 && substr_count ( $pl [ 'img' ], 'dragon' ) == 0 ) {
$see1 = 0 ; //дракон
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} elseif ( isset ( $po [ 'nosale' ]) && $type == 2 ) {
$see1 = 0 ;
} elseif ( isset ( $po [ 'noremont' ]) && $type == 4 ) {
$see1 = 0 ;
} elseif ( $type == 5 && $pl [ 'gift' ] != '' ) {
$see1 = 0 ;
} elseif (( $type == 9 || $type == 10 ) && $pl [ 'gift' ] == '' ) {
$see1 = 0 ;
} elseif ( $type == 5 && isset ( $po [ 'sudba' ]) && $po [ 'sudba' ] != '0' ) {
$see1 = 0 ;
} elseif ( $type == 5 && $pl [ 'inTransfer' ] > 0 ) {
$see1 = 0 ;
} elseif ( $type == 6 && ! isset ( $po [ 'fshop' ])) {
$see1 = 0 ;
} elseif ( $type == 67 && isset ( $po [ 'art' ])) {
$see1 = 0 ;
} elseif ( $type == 67 && isset ( $po [ 'sudba' ])) {
$see1 = 0 ;
} elseif ( $type == 67 && $pl [ 'gift' ] != '' ) {
$see1 = 0 ;
} elseif ( $type == 11 ) { // Храм Знаний (плавка предметов)
if (
$pl [ 'inTransfer' ] > 0 ||
( ! empty ( $po [ 'sudba' ]) && $po [ 'sudba' ] != $this -> info [ 'login' ]) ||
! in_array ( $pl [ 'type' ], [ 1 , 3 , 5 , 6 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 18 , 19 , 20 , 21 , 22 , 72 , 1035 ]) ||
( $po [ 'tr_lvl' ] < 4 && $pl [ 'item_id' ] != 1035 )
) {
$see1 = 0 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} elseif ( $type == 14 ) { // Храм Знаний (плавка рун)
if ( $pl [ 'inTransfer' ] > 0 || ! in_array ( $pl [ 'type' ], [ 31 , 6001 , 6002 , 6003 ])) {
$see1 = 0 ;
}
} elseif ( $type == 12 ) {
if ( $pl [ 'inslot' ] != 3 && $pl [ 'inslot' ] != 14 && $pl [ 'type' ] != 31 ) {
$see1 = 0 ;
}
if ( ! isset ( $po [ 'frompisher' ]) && $pl [ 'type' ] != 31 ) {
$see1 = 0 ;
}
} elseif ( $type == 56 && ( $pl [ 'inslot' ] != 5 || isset ( $po [ 'podgon' ]))) {
$see1 = 0 ;
} elseif ( isset ( $po [ 'musor' ]) && $po [ 'musor' ] > 0 && $pl [ 'iznosNOW' ] >= $pl [ 'iznosMAX' ]) {
$see1 = 0 ;
} elseif ( $type == 57 ) {
//Подгонка
if ( $pl [ 'type' ] < 18 || $pl [ 'type' ] > 28 || $pl [ 'type' ] == 25 ) {
$see1 = 0 ;
}
} elseif ( $type == 58 ) {
//Вытаскивание рун
if ( ! isset ( $po [ 'rune_id' ])) {
$see1 = 0 ;
}
} elseif ( $type == 65 ) {
if ( isset ( $po [ 'sudba' ]) && $po [ 'sudba' ] != '0' ) {
$see1 = 0 ;
}
if ( isset ( $po [ 'toclan' ])) {
$po [ 'toclan1' ] = explode ( '#' , $po [ 'toclan' ]);
$po [ 'toclan1' ] = $po [ 'toclan1' ][ 0 ];
if ( $po [ 'toclan1' ] != $this -> info [ 'clan' ]) {
$see1 = 0 ;
}
}
} elseif ( $type == 67 ) {
$po [ 'toclan1' ] = explode ( '#' , $po [ 'toclan' ]);
$po [ 'toclan1' ] = $po [ 'toclan1' ][ 0 ];
if ( $po [ 'toclan1' ] > 0 ) {
$see1 = 0 ;
}
if ( $po [ 'frompisher' ] > 0 ) {
$see1 = 0 ;
}
if ( $pl [ 'gift' ] > 0 ) {
$see1 = 0 ;
}
if ( $po [ 'sudba' ] > 0 ) {
$see1 = 0 ;
}
} elseif ( $type == 69 ) {
$po [ 'toclan1' ] = explode ( '#' , $po [ 'toclan' ]);
$po [ 'toclan1' ] = $po [ 'toclan1' ][ 0 ];
if ( $po [ 'toclan1' ] > 0 ) {
$see1 = 0 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $po [ 'frompisher' ] == 0 ) {
$see1 = 0 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $pl [ 'gift' ] > 0 ) {
$see1 = 0 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( $see1 == 1 ) {
if ( $k == 1 ) {
$k = 0 ;
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
$k = 1 ;
}
if (( $pl [ 'type' ] >= 18 && $pl [ 'type' ] <= 24 ) || $pl [ 'type' ] == 26 || $pl [ 'type' ] == 27 ) { //Зоны блока +
if ( ! isset ( $po [ 'zonb' ])) {
$po [ 'zonb' ] = 0 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$po [ 'zonb' ] ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
//правая часть
$mx = '' ;
if ( isset ( $po [ 'upatack_lvl' ])) {
$mx .= ' +' . $po [ 'upatack_lvl' ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'modif' ])) {
$mx .= ' (мф)' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$col = $this -> itemsX ( $pl [ 'id' ]);
if ( $col > 1 && $pl [ 'inGroup' ] != 0 ) {
$pl [ 'kolvo' ] = $col ;
$mx .= ' (x' . $col . ')' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'tr_align' ]) && ! isset ( $po [ 'tr_align_bs' ])) {
$pl [ 'name' ] .= '<img width=12 height=15 src=' . Config :: img () . '/i/align/align' . $po [ 'tr_align' ] . '.gif >' ;
} elseif ( isset ( $po [ 'tr_align_bs' ])) {
if ( $po [ 'tr_align_bs' ] == '1' ) {
$pl [ 'name' ] .= '<img width=12 height=15 src=' . Config :: img () . '/i/align/align1.75.gif >' ;
} elseif ( $po [ 'tr_align_bs' ] == '3' ) {
$pl [ 'name' ] .= '<img width=12 height=15 src=' . Config :: img () . '/i/align/align3.01.gif >' ;
}
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'renameadd' ]) && $po [ 'renameadd' ] != '' ) {
$pl [ 'name' ] .= ' (<small>Предмет: ' . $po [ 'renameadd' ] . '</small>)' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'icos' ])) {
$pl [ 'name' ] = '<span class=icos_' . $po [ 'icos' ] . ' >' . $pl [ 'name' ] . ' <span><small> ' . $po [ 'icos' ] . ' </small></span></span>' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$is2 = '<a oncontextmenu="top.addTo(\'' . $pl [ 'id' ] . '\',\'item\'); return false;" class="inv_name" href="/item/' . $pl [ 'item_id' ] . '" target="_blank">' . $pl [ 'name' ] . '' . $mx . '</a>' ;
$is2 .= ' ' ;
if ( $pl [ 'massa' ] > 0 ) {
$is2 .= ' (М а с с а : ' . ( $pl [ 'massa' ] * $col ) . ')' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $pl [ 'gift' ] != '' ) {
$ttl = '' ;
if ( $pl [ 'gift' ] == 1 ) {
$ttl = 'Вы не можете передать этот предмет кому-либо' ;
} else {
$ttl = 'Этот предмет вам подарил ' . $pl [ 'gift' ] . '. Вы не сможете передать этот предмет кому-либо еще' ;
}
$is2 .= ' <img title="' . $ttl . '" src="' . Config :: img () . '/i/podarok.gif">' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'art' ])) {
$is2 .= ' <img title="Артефакт" src="' . Config :: img () . '/i/artefact.gif">' ;
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'sudba' ])) {
if ( $po [ 'sudba' ] == '0' ) {
$is2 .= ' <img title="Этот предмет будет связан общей судьбой с первым, кто наденет е г о . Никто другой не сможет е г о использовать." src="' . Config :: img () . '/i/destiny0.gif">' ;
} elseif ( $po [ 'sudba' ] == '1' ) {
2023-12-17 02:32:09 +00:00
$is2 .= ' <img title="Этот предмет будет связан общей судьбой с первым, кто возьмет предмет. Никто другой не сможет е г о использовать." src="' . Config :: img (
) . '/i/destiny0.gif">' ;
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
$is2 .= ' <img title="Этот предмет связан общей судьбой с ' . $po [ 'sudba' ] . '. Никто другой не сможет е г о использовать." src="' . Config :: img () . '/i/desteny.gif">' ;
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
if ( $pl [ 'price1' ] > 0 ) { //цена
$pex = explode ( '.' , $pl [ 'price1' ]);
if ( $pex [ 1 ] == '00' ) {
$pl [ 'price1' ] = $pex [ 0 ];
}
if ( $_GET [ 'toRent' ] == 2 ) {
$is2 .= '<br><strong>Цена: ' . ( $pl [ 'price1' ]) . ' кр.</strong>' ;
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
$is2 .= '<br><strong>Цена: ' . ( $pl [ 'price1' ] * $col ) . ' кр.</strong>' ;
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
if ( $pl [ 'pricerep' ] > 0 ) {
$is2 .= ' <small><strong>(' . round (
$pl [ 'pricerep' ] * $col , 2
) . ' Воинственности)</strong></small>' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $pl [ 'iznosMAX' ] > 0 ) { //долговечность
$izcol = '' ;
if ( floor ( $pl [ 'iznosNOW' ]) >= ( floor ( $pl [ 'iznosMAX' ]) - ceil ( $pl [ 'iznosMAX' ]) / 100 * 20 )) {
$izcol = 'brown' ;
}
if ( $pl [ 'iznosMAXi' ] == 999999999 ) {
$is2 .= '<br>Долговечность: <font color="brown">неразрушимо</font >' ;
} else {
$is2 .= '<br>Долговечность: <font color="' . $izcol . '">' . floor (
$pl [ 'iznosNOW' ]
) . '/' . ceil ( $pl [ 'iznosMAX' ]) . '</font>' ;
}
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $po [ 'battleUseZd' ] > 0 ) {
2023-12-01 21:27:45 +00:00
$is2 .= '<br>Задержка использования: ' . Conversion :: secondsToTimeout ( $po [ 'battleUseZd' ]) . '' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'srok' ]) && $po [ 'srok' ] > 0 ) {
$pl [ 'srok' ] = $po [ 'srok' ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $pl [ 'srok' ] > 0 ) { //Срок годности предмета
2023-12-01 21:27:45 +00:00
$is2 .= '<br>Срок годности: ' . Conversion :: secondsToTimeout ( $pl [ 'srok' ]) . ' (до ' . date (
2023-07-19 15:23:44 +00:00
'd.m.Y H:i' , $pl [ 'time_create' ] + $pl [ 'srok' ]
) . ')' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $pl [ 'magic_chance' ] > 0 ) {
$is2 .= '<br>Вероятность срабатывания: ' . min ([ $pl [ 'magic_chance' ], 100 ]) . '%' ;
}
if (( int ) $pl [ 'magic_inci' ] > 0 ) { //Продолжительность действия магии:
$efi = mysql_fetch_array (
mysql_query (
'SELECT `id2`,`mname`,`type1`,`img`,`mdata`,`actionTime`,`type2`,`type3`,`onlyOne`,`oneType`,`noAce`,`see`,`info`,`overch`,`bp`,`noch` FROM `eff_main` WHERE `id2` = "' . (( int ) $pl [ 'magic_inci' ]) . '" LIMIT 1'
)
);
if ( isset ( $efi [ 'id2' ]) && $efi [ 'actionTime' ] > 0 ) {
2023-12-01 21:27:45 +00:00
$is2 .= '<br>Продолжительность действия: ' . Conversion :: secondsToTimeout ( $efi [ 'actionTime' ]);
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
$notr = 0 ;
if ( isset ( $po [ 'sudba' ]) && $po [ 'sudba' ] != '0' && $po [ 'sudba' ] != $this -> info [ 'login' ]) {
$notr ++ ;
}
$tr = '' ;
$t = $this -> items [ 'tr' ];
$x = 0 ;
while ( $x < count ( $t )) {
$n = $t [ $x ];
if ( isset ( $po [ 'tr_' . $n ]) && $po [ 'tr_' . $n ] != 0 ) {
if ( $n == 'sex' ) {
if ( $this -> info [ 'sex' ] != $po [ 'tr_' . $n ]) {
$tr .= '<font color="red">' ;
$notr ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} elseif ( $po [ 'tr_' . $n ] > $this -> stats [ $n ]) {
if ( $n == 'align_bs' && $this -> info [ 'inTurnir' ] > 0 ) {
if ( $po [ 'tr_align_bs' ] == '1' ) {
$pal = ! ( $this -> info [ 'align_real' ] <= 1 || $this -> info [ 'align_real' ] >= 2 );
} elseif ( $po [ 'tr_align_bs' ] == '3' ) {
$tar = ! ( $this -> info [ 'align_real' ] <= 3 || $this -> info [ 'align_real' ] >= 4 );
}
}
if ( $n == 'rep' ) {
$temp = explode ( '::' , $po [ 'tr_' . $n ]);
if ( $this -> rep [ 'rep' . $temp [ 1 ]] < $temp [ 0 ]) {
$tr .= '<font color="red">' ;
$notr ++ ;
}
unset ( $temp );
} elseif ( $n == 'align_bs' && $this -> info [ 'inTurnir' ] > 0 && ( $pal = false || $tar = false )) {
$tr .= '<font color="red">' ;
$notr ++ ;
} elseif ( $n != 'align' && $n != 'align_bs' || floor (
$this -> info [ 'align' ]
) != $po [ 'tr_' . $n ]) {
$tr .= '<font color="red">' ;
$notr ++ ;
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
$tr .= '<br />• ' ;
if ( $n == 'rep' ) {
$temp = explode ( '::' , $po [ 'tr_' . $n ]);
$tr .= $this -> is [ $n ] . ' ' . ucfirst (
str_replace ( 'city' , ' city' , $temp [ 1 ])
) . ': ' . $temp [ 0 ];
unset ( $temp );
} elseif ( $n != 'align' && $n != 'align_bs' ) {
if ( $n == 'sex' ) {
if ( $po [ 'tr_' . $n ] == 1 ) {
$tr .= $this -> is [ $n ] . ': Женский' ;
} else {
$tr .= $this -> is [ $n ] . ': Мужской' ;
}
} else {
$tr .= $this -> is [ $n ] . ': ' . $po [ 'tr_' . $n ];
2022-12-19 20:22:19 +00:00
}
} else {
2023-07-19 15:23:44 +00:00
$tr .= $this -> is [ $n ] . ': ' . $this -> align_nm [ $po [ 'tr_' . $n ]];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $n == 'sex' ) {
if ( $this -> info [ 'sex' ] != $po [ 'tr_' . $n ]) {
$tr .= '</font>' ;
}
} elseif ( $po [ 'tr_' . $n ] > $this -> stats [ $n ]) {
if ( $n == 'align_bs' && $this -> info [ 'inTurnir' ] > 0 && ( $pal = false || $tar = false )) {
$tr .= '</font>' ;
} elseif ( $n != 'align' && $n != 'align_bs' || floor (
$this -> info [ 'align' ]
) != $po [ 'tr_' . $n ]) {
$tr .= '</font>' ;
2022-12-19 20:22:19 +00:00
}
}
}
2023-07-19 15:23:44 +00:00
$x ++ ;
}
if ( $tr != '' ) {
$is2 .= '<br><strong>Требуется минимальное:</strong>' . $tr ;
}
//<strong>Действует на:</strong>
$tr = '' ;
$t = $this -> items [ 'add' ];
if ( isset ( $po [ 'mf_stats' ]) && $po [ 'mf_stats' ] > 0 ) {
$tr .= '<br>Свободные характеристики: ' . $po [ 'mf_stats' ];
}
if ( isset ( $po [ 'mf_mod' ]) && $po [ 'mf_mod' ] > 0 ) {
$tr .= '<br>Свободные модификаторы: ' . $po [ 'mf_mod' ];
}
if ( isset ( $po [ 'mf_mib' ]) && $po [ 'mf_mib' ] > 0 ) {
$tr .= '<br>Свободные улучшения брони: ' . $po [ 'mf_mib' ];
}
2023-01-28 02:24:37 +00:00
2023-07-19 15:23:44 +00:00
$x = 0 ;
while ( $x < count ( $t )) {
$n = $t [ $x ];
if ( isset ( $po [ 'add_' . $n ], $this -> is [ $n ])) {
$z = '+' ;
if ( $po [ 'add_' . $n ] < 0 ) {
$z = '' ;
}
$tr .= '<br>• ' . $this -> is [ $n ] . ': ' . $z . '' . $po [ 'add_' . $n ];
if ( isset ( $po [ 'mf_stats' ]) && $po [ 'mf_stats' ] > 0 && ( $n == 's1' || $n == 's2' || $n == 's3' || $n == 's5' )) {
$tr .= ' <a href="main.php?inv=1&otdel=' . $_GET [ 'otdel' ] . '&rstv=' . $pl [ 'id' ] . '&mf=' . $n . '"><img src="' . Config :: img () . '/i/up.gif" width="11" height="11"></a>' ;
}
if ( isset ( $po [ 'mf_mod' ]) && $po [ 'mf_mod' ] > 0 && ( $n == 'm1' || $n == 'm2' || $n == 'm4' || $n == 'm5' )) {
$tr .= ' <a href="main.php?inv=1&otdel=' . $_GET [ 'otdel' ] . '&rstv=' . $pl [ 'id' ] . '&mf=' . $n . '"><img src="' . Config :: img () . '/i/up.gif" width="11" height="11"></a>' ;
}
}
$x ++ ;
}
//действует на (броня)
$i = 1 ;
$bn = [ 1 => 'головы' , 2 => 'корпуса' , 3 => 'пояса' , 4 => 'ног' ];
while ( $i <= 4 ) {
if ( isset ( $po [ 'add_mab' . $i ])) {
if ( $po [ 'add_mab' . $i ] == $po [ 'add_mib' . $i ] && $pl [ 'geniration' ] == 1 ) {
$z = '+' ;
if ( $po [ 'add_mab' . $i ] < 0 ) {
$z = '' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$tr .= '<br>• Броня ' . $bn [ $i ] . ': ' . $z . '' . $po [ 'add_mab' . $i ];
} else {
$tr .= '<br>• Броня ' . $bn [ $i ] . ': ' . $po [ 'add_mib' . $i ] . '-' . $po [ 'add_mab' . $i ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'mf_mib' ]) && $po [ 'mf_mib' ] > 0 ) {
2023-12-17 02:32:09 +00:00
$tr .= ' <a href="main.php?inv=1&otdel=' . $_GET [ 'otdel' ] . '&rstv=' . $pl [ 'id' ] . '&mf=mib' . $i . '"><img src="' . Config :: img (
) . '/i/up.gif" width="11" height="11"></a>' ;
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
$i ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $tr != '' ) {
$is2 .= '<br><strong>Действует на:</strong>' . $tr ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
//<strong>Свойства предмета:</strong>
$tr = '' ;
$t = $this -> items [ 'sv' ];
if ( isset ( $po [ 'sv_yron_min' ], $po [ 'sv_yron_max' ])) {
$tr .= '<br>• Урон: ' . $po [ 'sv_yron_min' ] . ' - ' . $po [ 'sv_yron_max' ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$x = 0 ;
while ( $x < count ( $t )) {
$n = $t [ $x ];
if ( isset ( $po [ 'sv_' . $n ])) {
$z = '+' ;
if ( $po [ 'sv_' . $n ] < 0 ) {
2022-12-19 20:22:19 +00:00
$z = '' ;
}
2023-07-19 15:23:44 +00:00
$tr .= '<br>• ' . $this -> is [ $n ] . ': ' . $z . '' . $po [ 'sv_' . $n ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$x ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $pl [ '2too' ] == 1 ) {
$tr .= '<br>• Второе оружие' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $pl [ '2h' ] == 1 ) {
$tr .= '<br>• Двуручное оружие' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'zonb' ])) {
$tr .= '<br>• Зоны блокирования: ' ;
if ( $po [ 'zonb' ] > 0 ) {
$x = 1 ;
while ( $x <= $po [ 'zonb' ]) {
$tr .= '+' ;
$x ++ ;
}
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
$tr .= '—' ;
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
if ( $tr != '' ) {
$is2 .= '<br><strong>Свойства предмета:</strong>' . $tr ;
}
2022-12-19 20:22:19 +00:00
2022-12-30 19:03:37 +00:00
2023-07-19 15:23:44 +00:00
if ( $notr == 0 ) {
$d [ 0 ] = 1 ;
if ( $pl [ 'magic_inci' ] != '' || $pl [ 'magic_inc' ] != '' ) {
$d [ 2 ] = 1 ;
2022-12-19 20:22:19 +00:00
}
2022-12-30 19:03:37 +00:00
}
2023-07-19 15:23:44 +00:00
$tr = '' ;
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( floor ( $pl [ 'iznosNOW' ]) >= ceil ( $pl [ 'iznosMAX' ])) {
$d [ 0 ] = 0 ;
$d [ 2 ] = 0 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
//Апгрейды вещей
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
//Встроенная магия
if ( $pl [ 'magic_inci' ] != '' || $pl [ 'magic_inc' ] != '' ) {
if ( $pl [ 'magic_inc' ] == '' ) {
$pl [ 'magic_inc' ] = $pl [ 'magic_inci' ];
}
$mgi = mysql_fetch_array (
mysql_query (
'SELECT * FROM `eff_main` WHERE `id2` = "' . $pl [ 'magic_inc' ] . '" AND `type1` = "12345" LIMIT 1'
)
2022-12-30 19:03:37 +00:00
);
2023-07-19 15:23:44 +00:00
if ( isset ( $mgi [ 'id2' ])) {
$is2 .= '<div> Встроено заклятие <img height=18 title="' . $mgi [ 'mname' ] . '" src="' . Config :: img () . '/i/eff/' . $mgi [ 'img' ] . '"> ' . $mgi [ 'minfo' ] . '</div>' ;
}
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'rune' ]) && $po [ 'rune' ] > 0 ) {
$rnc = explode ( ' ' , $po [ 'rune_name' ]);
if ( $rnc [ 0 ] == 'Игнис' ) {
$rnc = '#9b5d40' ;
} elseif ( $rnc [ 0 ] == 'Аква' ) {
$rnc = '#3a2b64' ;
} elseif ( $rnc [ 0 ] == 'А у р а ' ) {
$rnc = '#20a3b0' ;
} elseif ( $rnc [ 0 ] == 'Т е р а ' ) {
$rnc = '#4c7718' ;
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
$rnc = '#4c4c4c' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$tr .= '<br>• Встроенная руна: <small><font color=green>• <u><strong>' . $po [ 'rune_name' ] . '</strong></u></font></small>' ;
unset ( $rnc );
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'spell' ]) && $po [ 'spell' ] > 0 ) {
$rnc = explode ( ' ' , $po [ 'spell_name' ]);
if ( $rnc [ 2 ] == '[0]' ) {
$rnc = '#282828' ;
} elseif ( $rnc [ 2 ] == '[1]' ) {
$rnc = '#624542' ;
} elseif ( $rnc [ 2 ] == '[2]' ) {
$rnc = '#77090b' ;
} elseif ( $rnc [ 2 ] == '[3]' ) {
$rnc = '#d99800' ;
} else {
$rnc = '#d99800' ;
}
$po [ 'spell_name' ] = str_replace ( 'Зачаровать ' , '' , $po [ 'spell_name' ]);
$this -> is [ 'mab1' ] = 'Броня головы' ;
$this -> is [ 'mab2' ] = 'Броня корпуса' ;
$this -> is [ 'mab3' ] = 'Броня пояса' ;
$this -> is [ 'mab4' ] = 'Броня ног' ;
$tr .= '<br>• Встроенно зачарование: <small><font color=' . $rnc . '><u><strong>' . $po [ 'spell_name' ] . '</strong></u> (' . $this -> is [ $po [ 'spell_st_name' ]] . ': +' . $po [ 'spell_st_val' ] . ')</font></small>' ;
unset ( $this -> is [ 'mab1' ], $this -> is [ 'mab2' ], $this -> is [ 'mab3' ], $this -> is [ 'mab4' ]);
unset ( $rnc );
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'imposed' ]) && $po [ 'imposed' ] > 0 ) {
if ( $po [ 'imposed_lvl' ] == 0 ) {
$rnc = 'maroon' ;
} elseif ( $po [ 'imposed_lvl' ] == 1 ) {
$rnc = '#624542' ;
} elseif ( $po [ 'imposed_lvl' ] == 2 ) {
$rnc = '#77090b' ;
} elseif ( $po [ 'imposed_lvl' ] == 3 ) {
$rnc = '#d99800' ;
} else {
$rnc = '#282828' ;
}
$po [ 'imposed_name' ] = str_replace ( 'Чары ' , '' , $po [ 'imposed_name' ]);
$tr .= '<br>• <font color=' . $rnc . '>Наложены заклятия:</font> ' . $po [ 'imposed_name' ] . ' ' ;
unset ( $rnc );
}
if ( $tr != '' ) {
$is2 .= '<br><strong>Улучшения предмета:</strong>' ;
$is2 .= $tr ;
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'free_stats' ]) && $po [ 'free_stats' ] > 0 ) {
$is2 .= '<br><strong>Распределение статов:</strong>' ;
2023-12-17 02:32:09 +00:00
$is2 .= '<div style="margin-left:20px;"><small>Сила: ' . $po [ 'add_s1' ] . ' <a href="?inv=1&itmid=' . $pl [ 'id' ] . '&otdel=' . (( int ) $_GET [ 'otdel' ]) . '&ufs=1"><img src="' . Config :: img (
) . '/i/plus.gif"></a><br>Ловкость: ' . $po [ 'add_s2' ] . ' <a href="?inv=1&itmid=' . $pl [ 'id' ] . '&otdel=' . (( int ) $_GET [ 'otdel' ]) . '&ufs=2"><img src="' . Config :: img (
) . '/i/plus.gif"></a><br>Интуиция: ' . $po [ 'add_s3' ] . ' <a href="?inv=1&itmid=' . $pl [ 'id' ] . '&otdel=' . (( int ) $_GET [ 'otdel' ]) . '&ufs=3"><img src="' . Config :: img (
) . '/i/plus.gif"></a><br>Интеллект: ' . $po [ 'add_s5' ] . ' <a href="?inv=1&itmid=' . $pl [ 'id' ] . '&otdel=' . (( int ) $_GET [ 'otdel' ]) . '&ufs=5"><img src="' . Config :: img (
) . '/i/plus.gif"></a></small></div>' ;
2023-07-19 15:23:44 +00:00
$is2 .= '• Осталось распределений: ' . $po [ 'free_stats' ] . '' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'sm_abil' ])) {
//Возможно сохранять и распределять скилы
$mx2 = 1 ;
$mx1 = 0 ;
2023-08-14 15:15:05 +00:00
$mx3 = Conversion :: dataStringToArray ( $this -> info [ 'stats' ]);
2023-07-19 15:23:44 +00:00
while ( $mx2 <= 7 ) {
$mx1 += $mx3 [ 's' . $mx2 ] - $po [ 'add_s' . $mx2 ];
$mx2 ++ ;
}
$mx1 += $this -> info [ 'ability' ];
if ( $mx1 > 0 ) {
$is2 .= '<br><strong>Распределение характеристик:</strong>' ;
if ( isset ( $po [ 'sudba' ]) && $po [ 'sudba' ] == '0' ) {
$mx1 = 0 ;
$is2 .= '<div style="margin-left:20px;"><small>• Распределение характеристик будет доступно после первого одевания</small></div>' ;
} else {
$is2 .= ' < div style = " margin-left:20px; " >< small >
Сила : ' . (0 + $po[' add_s1 ']) . ' < a href = " ?inv=1&itmid=' . $pl['id'] . '&otdel=' . ((int) $_GET['otdel'] ) . '&ufsmst=1 " >< img src = " ' . Config::img() . '/i/plus.gif " ></ a >< br >
Ловкость : ' . (0 + $po[' add_s2 ']) . ' < a href = " ?inv=1&itmid=' . $pl['id'] . '&otdel=' . ((int) $_GET['otdel'] ) . '&ufsmst=2 " >< img src = " ' . Config::img() . '/i/plus.gif " ></ a >< br >
Интуиция : ' . (0 + $po[' add_s3 ']) . ' < a href = " ?inv=1&itmid=' . $pl['id'] . '&otdel=' . ((int) $_GET['otdel'] ) . '&ufsmst=3 " >< img src = " ' . Config::img() . '/i/plus.gif " ></ a >< br >
Выносливость : ' . (0 + $po[' add_s4 ']) . ' < a href = " ?inv=1&itmid=' . $pl['id'] . '&otdel=' . ((int) $_GET['otdel'] ) . '&ufsmst=4 " >< img src = " ' . Config::img() . '/i/plus.gif " ></ a >< br >
Интеллект : ' . (0 + $po[' add_s5 ']) . ' < a href = " ?inv=1&itmid=' . $pl['id'] . '&otdel=' . ((int) $_GET['otdel'] ) . '&ufsmst=5 " >< img src = " ' . Config::img() . '/i/plus.gif " ></ a >< br >
Мудрость : ' . (0 + $po[' add_s6 ']) . ' < a href = " ?inv=1&itmid=' . $pl['id'] . '&otdel=' . ((int) $_GET['otdel'] ) . '&ufsmst=6 " >< img src = " ' . Config::img() . '/i/plus.gif " ></ a >< br >
</ small ></ div > ' ;
$is2 .= 'Осталось распределений: ' . $mx1 ;
}
}
unset ( $mx1 , $mx2 , $mx3 );
2022-12-19 20:22:19 +00:00
}
2022-12-30 19:03:37 +00:00
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'sm_skill' ])) {
//Возможно сохранять и распределять скилы
$mx2 = 1 ;
$mx1 = 0 ;
2023-08-14 15:15:05 +00:00
$mx3 = Conversion :: dataStringToArray ( $this -> info [ 'stats' ]);
2023-07-19 15:23:44 +00:00
while ( $mx2 <= 7 ) {
$mx1 += ( $mx3 [ 'a' . $mx2 ] + $mx3 [ 'mg' . $mx2 ]) - ( $po [ 'add_a' . $mx2 ] + $po [ 'add_mg' . $mx2 ]);
$mx2 ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$mx1 += $this -> info [ 'skills' ];
if ( $mx1 > 0 ) {
$is2 .= '<br><strong>Распределение владений оружием и магией:</strong>' ;
if ( isset ( $po [ 'sudba' ]) && $po [ 'sudba' ] == '0' ) {
$mx1 = 0 ;
$is2 .= '<div style="margin-left:20px;"><small>• Распределение владений будет доступно после первого одевания</small></div>' ;
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
$is2 .= ' < div style = " margin-left:20px; " >< small >
Мастерство владения мечами : ' . (0 + $po[' add_a1 ']) . ' < a href = " ?inv=1&itmid=' . $pl['id'] . '&otdel=' . ((int) $_GET['otdel'] ) . '&ufsms=1 " >< img src = " ' . Config::img() . '/i/plus.gif " ></ a >< br >
2023-12-17 02:32:09 +00:00
Мастерство владения дубинами , булавами : ' . (0 + $po[' add_a2 ']) . ' < a href = " ?inv=1&itmid=' . $pl['id'] . '&otdel=' . ((int) $_GET['otdel'] ) . '&ufsms=2 " >< img src = " ' . Config::img(
) . ' / i / plus . gif " ></a><br>
Мастерство владения ножами , кастетами : ' . (0 + $po[' add_a3 ']) . ' < a href = " ?inv=1&itmid=' . $pl['id'] . '&otdel=' . ((int) $_GET['otdel'] ) . '&ufsms=3 " >< img src = " ' . Config::img(
) . ' / i / plus . gif " ></a><br>
Мастерство владения топорами , секирами : ' . (0 + $po[' add_a4 ']) . ' < a href = " ?inv=1&itmid=' . $pl['id'] . '&otdel=' . ((int) $_GET['otdel'] ) . '&ufsms=4 " >< img src = " ' . Config::img(
) . ' / i / plus . gif " ></a><br>
Мастерство владения магическими посохами : ' . (0 + $po[' add_a5 ']) . ' < a href = " ?inv=1&itmid=' . $pl['id'] . '&otdel=' . ((int) $_GET['otdel'] ) . '&ufsms=5 " >< img src = " ' . Config::img(
) . ' / i / plus . gif " ></a><br>
Мастерство владения стихией Огня : ' . (0 + $po[' add_mg1 ']) . ' < a href = " ?inv=1&itmid=' . $pl['id'] . '&otdel=' . ((int) $_GET['otdel'] ) . '&ufsms=6 " >< img src = " ' . Config::img(
) . ' / i / plus . gif " ></a><br>
Мастерство владения стихией Воздуха : ' . (0 + $po[' add_mg2 ']) . ' < a href = " ?inv=1&itmid=' . $pl['id'] . '&otdel=' . ((int) $_GET['otdel'] ) . '&ufsms=7 " >< img src = " ' . Config::img(
) . ' / i / plus . gif " ></a><br>
Мастерство владения стихией Воды : ' . (0 + $po[' add_mg3 ']) . ' < a href = " ?inv=1&itmid=' . $pl['id'] . '&otdel=' . ((int) $_GET['otdel'] ) . '&ufsms=8 " >< img src = " ' . Config::img(
) . ' / i / plus . gif " ></a><br>
Мастерство владения стихией Земли : ' . (0 + $po[' add_mg4 ']) . ' < a href = " ?inv=1&itmid=' . $pl['id'] . '&otdel=' . ((int) $_GET['otdel'] ) . '&ufsms=9 " >< img src = " ' . Config::img(
) . ' / i / plus . gif " ></a><br>
Мастерство владения магией Света : ' . (0 + $po[' add_mg5 ']) . ' < a href = " ?inv=1&itmid=' . $pl['id'] . '&otdel=' . ((int) $_GET['otdel'] ) . '&ufsms=10 " >< img src = " ' . Config::img(
) . ' / i / plus . gif " ></a><br>
Мастерство владения магией Тьмы : ' . (0 + $po[' add_mg6 ']) . ' < a href = " ?inv=1&itmid=' . $pl['id'] . '&otdel=' . ((int) $_GET['otdel'] ) . '&ufsms=11 " >< img src = " ' . Config::img(
) . ' / i / plus . gif " ></a><br>
Мастерство владения серой магией : ' . (0 + $po[' add_mg7 ']) . ' < a href = " ?inv=1&itmid=' . $pl['id'] . '&otdel=' . ((int) $_GET['otdel'] ) . '&ufsms=12 " >< img src = " ' . Config::img(
) . ' / i / plus . gif " ></a><br>
2023-07-19 15:23:44 +00:00
</ small ></ div > ' ;
$is2 .= 'Осталось распределений: ' . $mx1 ;
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
unset ( $mx1 , $mx2 , $mx3 );
}
if ( isset ( $po [ 'complect' ]) || isset ( $po [ 'complect2' ])) {
$is2 .= '<br><i>Дополнительная информация:</i>' ;
}
if ( isset ( $po [ 'complect' ])) {
//не отображается
$com1 = [ 'name' => 'Неизвестный Комплект' , 'x' => 0 , 'text' => '' ];
$spc = mysql_query (
'SELECT `id`,`com`,`name`,`x`,`data` FROM `complects` WHERE `com` = "' . $po [ 'complect' ] . '" ORDER BY `x` ASC LIMIT 20'
2022-12-30 19:03:37 +00:00
);
2023-07-19 15:23:44 +00:00
while ( $plc = mysql_fetch_array ( $spc )) {
$com1 [ 'name' ] = $plc [ 'name' ];
$com1 [ 'text' ] .= ' • <font color="green">' . $plc [ 'x' ] . '</font>: ' ;
//действие комплекта
$i1c = 0 ;
$i2c = 0 ;
2023-08-14 15:15:05 +00:00
$i1e = Conversion :: dataStringToArray ( $plc [ 'data' ]);
2023-07-19 15:23:44 +00:00
while ( $i1c < count ( $this -> items [ 'add' ])) {
if ( isset ( $i1e [ $this -> items [ 'add' ][ $i1c ]])) {
$i3c = $i1e [ $this -> items [ 'add' ][ $i1c ]];
if ( $i3c > 0 ) {
$i3c = '+' . $i3c ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $i2c > 0 ) {
$com1 [ 'text' ] .= ' ' . $this -> is [ $this -> items [ 'add' ][ $i1c ]] . ': ' . $i3c ;
} else {
$com1 [ 'text' ] .= $this -> is [ $this -> items [ 'add' ][ $i1c ]] . ': ' . $i3c ;
}
$com1 [ 'text' ] .= '<br>' ;
$i2c ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$i1c ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
unset ( $i1c , $i2c , $i3c );
$com1 [ 'x' ] ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$is2 .= '<br>• Часть комплекта: <strong>' . $com1 [ 'name' ] . '</strong><br><small>' ;
$is2 .= $com1 [ 'text' ];
$is2 .= '</small>' ;
2022-12-30 19:03:37 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'complect2' ])) {
//не отображается
$com1 = [ 'name' => 'Неизвестный Комплект' , 'x' => 0 , 'text' => '' ];
$spc = mysql_query (
'SELECT `id`,`com`,`name`,`x`,`data` FROM `complects` WHERE `com` = "' . $po [ 'complect2' ] . '" ORDER BY `x` ASC LIMIT 20'
);
while ( $plc = mysql_fetch_array ( $spc )) {
$com1 [ 'name' ] = $plc [ 'name' ];
$com1 [ 'text' ] .= ' • <font color="green">' . $plc [ 'x' ] . '</font>: ' ;
//действие комплекта
$i1c = 0 ;
$i2c = 0 ;
2023-08-14 15:15:05 +00:00
$i1e = Conversion :: dataStringToArray ( $plc [ 'data' ]);
2023-07-19 15:23:44 +00:00
while ( $i1c < count ( $this -> items [ 'add' ])) {
if ( isset ( $i1e [ $this -> items [ 'add' ][ $i1c ]])) {
$i3c = $i1e [ $this -> items [ 'add' ][ $i1c ]];
if ( $i3c > 0 ) {
$i3c = '+' . $i3c ;
}
if ( $i2c > 0 ) {
$com1 [ 'text' ] .= ' ' . $this -> is [ $this -> items [ 'add' ][ $i1c ]] . ': ' . $i3c ;
} else {
$com1 [ 'text' ] .= $this -> is [ $this -> items [ 'add' ][ $i1c ]] . ': ' . $i3c ;
}
$com1 [ 'text' ] .= '<br>' ;
$i2c ++ ;
}
$i1c ++ ;
}
unset ( $i1c , $i2c , $i3c );
$com1 [ 'x' ] ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$is2 .= '<br>• Часть комплекта (подгонка): <strong>' . $com1 [ 'name' ] . '</strong><br><small>' ;
$is2 .= $com1 [ 'text' ];
$is2 .= '</small>' ;
2022-12-30 19:03:37 +00:00
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( $pl [ 'max_text' ] > 0 ) {
//Инвентарь
$sm_sp = mysql_query (
'SELECT `id`,`item_id`,`time`,`login`,`type`,`text`,`city`,`x` FROM `items_text` WHERE `item_id` = "' . $pl [ 'id' ] . '" ORDER BY `id` ASC LIMIT 500'
);
$sma = 0 ;
$smt = '' ;
$ixi = 0 ;
while ( $sm_pl = mysql_fetch_array ( $sm_sp )) {
if ( $sm_pl [ 'type' ] == 0 ) {
$smt .= '<font class="date">' . date (
'd.m.Y H:i' , $sm_pl [ 'time' ]
) . '</font> <strong>' . $sm_pl [ 'login' ] . '</strong>. ' . $sm_pl [ 'text' ] . '<br>' ;
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
$smt .= $sm_pl [ 'text' ] . '<br>' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $ixi == 2 ) {
$smt .= '<div style="display:none" id="close_text_itm' . $pl [ 'id' ] . '">' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$ixi ++ ;
$sma += $sm_pl [ 'x' ];
}
$smt .= '</div>' ;
if ( $pl [ 'max_text' ] - $pl [ 'use_text' ] > 0 ) {
$is2 .= '<div>Количество символов: ' . ( $pl [ 'max_text' ] - $pl [ 'use_text' ]) . '</div>' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $sma > 0 ) {
$is2 .= ' < div > Н а предмете записан текст :< br >
< table width = " 100% " border = " 0 " cellspacing = " 0 " cellpadding = " 0 " >
< tr >
< td >< div style = " background-color:#e8e8e8;padding:5px; " >< CODE > ' . $smt . ' </ CODE ></ div ></ td >
2023-11-02 13:57:39 +00:00
< td width = " 20 " align = " center " valign = " top " >< img style = " cursor:pointer " onClick = " seetext(' . $pl['id'] . ') " src = " ' . Config::img() . '/expand.gif " height = " 35 " width = " 10 " ></ td >
2023-07-19 15:23:44 +00:00
</ tr >
</ table >
2022-12-19 20:22:19 +00:00
</ div > ' ;
}
2023-07-19 15:23:44 +00:00
unset ( $sm_sp , $sma , $sm_pl );
} elseif ( isset ( $po [ 'onitm_text' ])) {
$is2 .= ' < div > Н а предмете записан текст :< br >
< table width = " 100% " border = " 0 " cellspacing = " 0 " cellpadding = " 0 " >
2022-12-19 20:22:19 +00:00
< tr >
2023-07-19 15:23:44 +00:00
< td >< div style = " background-color:#e8e8e8;padding:5px; " >< CODE > ' . $po[' onitm_text '] . ' </ CODE ></ div ></ td >
2022-12-19 20:22:19 +00:00
</ tr >
2023-07-19 15:23:44 +00:00
</ table >
</ div > ' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'gravi' ])) {
$is2 .= '<br>Н а поверхности выгравирована надпись: <strong>' . $po [ 'gravi' ] . '</strong>' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$is2 .= '<small style="">' ;
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( $pl [ 'info' ] != '' ) {
$is2 .= '<div><strong>Рекомендации:</strong></div><div>' . $pl [ 'info' ] . '</div>' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'info' ]) && $po [ 'info' ] != '' ) {
$is2 .= '<div>' . $po [ 'info' ] . '</div>' ;
2022-12-19 20:22:19 +00:00
}
2023-01-28 02:24:37 +00:00
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'toclan' ])) {
$po [ 'toclan1' ] = explode ( '#' , $po [ 'toclan' ]);
$clpo = mysql_fetch_array (
mysql_query ( 'SELECT * FROM `clan` WHERE `id` = "' . $po [ 'toclan1' ][ 0 ] . '" LIMIT 1' )
2022-12-30 19:03:37 +00:00
);
2023-07-19 15:23:44 +00:00
if ( isset ( $clpo [ 'id' ])) {
2023-12-17 02:32:09 +00:00
$is2 .= '<div style="color:brown;">Предмет принадлежит клану <img style="vertical-align:bottom" src="' . Config :: img (
) . '/i/clan/' . $clpo [ 'name_mini' ] . '.gif" width="24" height"15"> <strong>' . $clpo [ 'name' ] . '</strong>' ;
2023-07-19 15:23:44 +00:00
$plpo = mysql_fetch_array (
mysql_query (
'SELECT `id`,`login`,`cityreg` FROM `users` WHERE `id` = "' . $po [ 'toclan1' ][ 1 ] . '" LIMIT 1'
)
2022-12-30 19:03:37 +00:00
);
2023-07-19 15:23:44 +00:00
if ( isset ( $plpo [ 'id' ])) {
2023-12-17 02:32:09 +00:00
$is2 .= ' <font color=grey>(Дар игрока <strong>' . $plpo [ 'login' ] . '</strong><a href="info/' . $plpo [ 'id' ] . '" target="_blank"><img src="' . Config :: img (
) . '/i/inf_' . $plpo [ 'cityreg' ] . '.gif" width="9"></a>)</font>' ;
2023-07-19 15:23:44 +00:00
if ( $plpo [ 'login' ] == $this -> info [ 'login' ]) {
if ( isset ( $_GET [ 'backmyitm' ])) {
$pl [ 'inOdet' ] = 0 ;
$pl [ 'uid' ] = $plpo [ 'id' ];
unset ( $po [ 'toclan1' ], $po [ 'toclan' ]);
2023-08-14 15:15:05 +00:00
$pl [ 'data' ] = Conversion :: arrayToDataString ( $po );
2023-07-19 15:23:44 +00:00
mysql_query (
'UPDATE `items_users` SET `data` = "' . mysql_real_escape_string (
$pl [ 'data' ]
) . '",`inOdet` = 0,`uid` = "' . $pl [ 'uid' ] . '" WHERE `id` = "' . $pl [ 'id' ] . '" LIMIT 1'
);
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$is2 .= '<br>(Вы владелец предмета: <a href="main.php?clan&deposit&backmyitm=' . $pl [ 'id' ] . '">Вернуть предмет с е б е </a>)' ;
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
$is2 .= '</div>' ;
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'noremont' ])) {
$is2 .= '<div style="color:brown;">Предмет не подлежит ремонту</div>' ;
}
if ( isset ( $po [ 'nosale' ])) {
$is2 .= '<div style="color:brown;">Предмет нельзя продать</div>' ;
}
if ( isset ( $po [ 'nomodif' ])) {
$is2 .= '<div style="color:brown;">Предмет нельзя улучшать</div>' ;
}
if ( isset ( $po [ 'nodelete' ])) {
$is2 .= '<div style="color:brown;">Предмет нельзя выбросить</div>' ;
}
if ( isset ( $po [ 'frompisher' ])) {
$is2 .= '<div style="color:brown;">Предмет из подземелья</div>' ;
}
if ( isset ( $po [ 'sleep_moroz' ]) && $po [ 'sleep_moroz' ] > 0 ) {
$is2 .= '<div style="color:brown;">Предмет не портится во время сна</div>' ;
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'fromlaba' ]) && $po [ 'fromlaba' ] > 0 ) {
$is2 .= '<div style="color:brown;">Предмет из лабиринта</div>' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'vip_sale' ]) && $po [ 'vip_sale' ] > 0 ) {
if ( $this -> stats [ 'slvtm' ] > time () && $this -> stats [ 'silver' ] > 1 ) {
if ( $pl [ 'time_create' ] != $this -> stats [ 'slvtm' ]) {
$pl [ 'time_create' ] = $this -> stats [ 'slvtm' ];
mysql_query (
'UPDATE `items_users` SET `time_create` = "' . $pl [ 'time_create' ] . '" WHERE `id` = "' . $pl [ 'id' ] . '" LIMIT 1'
);
}
2023-12-01 21:27:45 +00:00
$is2 .= '<div style="color:brown;">Предмет будет недоступен через ' . Conversion :: secondsToTimeout (
2023-07-19 15:23:44 +00:00
$pl [ 'time_create' ] - time ()
) . '</div>' ;
} else {
$is2 .= '<div style="color:brown;">Предмет недоступен, приобретите конкретный VIP</div>' ;
if (( $pl [ 'time_create' ] - time () + 86400 * 30 ) < 1 ) {
$is2 .= '<div style="color:brown;">Предмет рассыпался у В а с на глазах...</div>' ;
} else {
2023-12-01 21:27:45 +00:00
$is2 .= '<div style="color:brown;">Предмет исчезнет через ' . Conversion :: secondsToTimeout (
2023-07-19 15:23:44 +00:00
$pl [ 'time_create' ] - time () + 86400 * 30
) . '</div>' ;
}
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
if ( $pl [ 'dn_delete' ] > 0 ) {
$is2 .= '<div style="color:brown;">Предмет будет удален при выходе из подземелья</div>' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'zazuby' ]) && $po [ 'zazuby' ] > 0 ) {
$is2 .= '<div style="color:brown;">Предмет куплен за зубы</div>' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$is2 .= '</small>' ;
if ( $col > 1000 ) {
$is1 .= ' < table border = " 0 " cellspacing = " 0 " cellpadding = " 0 " >
< tr >
< td >< img src = " ' . Config::img() . '/i/items/' . $pl['img'] . ' " ></ td >
</ tr >
< tr >
< td align = " right " >< span style = " position:relative;margin-bottom:5px; " >< small style = " position:absolute;background-color:grey;padding:1px;bottom:1px;right:1px;background-color:#E0E0E0; " >< strong > x ' . $col . ' </ strong ></ small ></ span ></ td >
</ tr >
</ table > ' ;
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
$is1 .= '<img src="' . Config :: img () . '/i/items/' . $pl [ 'img' ] . '" style="margin-bottom:5px;">' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$is1 .= '<br>' ;
if ( $type == 81 ) {
$is1 .= '<small><a href="main.php?inv=1&otdel=' . floor ( $_GET [ 'otdel' ]) . '&use_rune=' . floor (
$_GET [ 'use_rune' ]
) . '&item_rune=0&item_rune_id=' . $pl [ 'id' ] . '">Выбрать данный предмет</a></small>' ;
} elseif ( $type == 80 ) {
$itemrun = mysql_fetch_array (
mysql_query ( 'SELECT * FROM `items_users` WHERE `id` ="' . $pl [ 'id' ] . '" LIMIT 1' )
);
2023-08-14 15:15:05 +00:00
$it = Conversion :: dataStringToArray ( $itemrun [ 'data' ]);
2023-07-19 15:23:44 +00:00
if ( ! isset ( $it [ 'rune_name' ]) || $_GET [ 'otdel' ] == 2 ) //отдел 2(заточки)
{
$is1 .= '<small><a href="main.php?inv=1&otdel=' . floor ( $_GET [ 'otdel' ]) . '&use_rune=' . floor (
$_GET [ 'use_rune' ]
) . '&item_rune=0&item_rune_id=' . $pl [ 'id' ] . '">Выбрать данный предмет</a></small>' ;
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
$is1 .= '<small><strong>Установленна:<br>' . $it [ 'rune_name' ] . '</strong></small>' ;
}
unset ( $itemrun , $it );
} elseif ( $type == 69 ) {
if ( ! isset ( $po [ 'hprs' ])) {
$po [ 'hprs' ] = 0.001 ;
}
if ( ! isset ( $po [ 'hprp' ])) {
$po [ 'hprp' ] = 0.0001 ;
}
$prs1 = $this -> floordec ( $po [ 'hprs' ] * $col , 2 );
$rps1 = $this -> floordec ( $po [ 'hprp' ] * $col );
$is1 .= '<small style="font-size:11px;"><a href="?sale1kr=' . $pl [ 'id' ] . '">Обменять на ' . $prs1 . ' кр.</a><br><a href="?sale1rep=' . $pl [ 'id' ] . '">Обменять на ' . $rps1 . ' ед. репутации</a>' ;
$is1 .= '</small>' ;
} elseif ( $type == 68 ) {
$is1 .= '<small style="font-size:11px;"><a href="?r=3&itm_take=' . $pl [ 'id' ] . '">Забрать</a><br><a href="?r=3&itm_cancel=' . $pl [ 'id' ] . '">Отказаться</a>' ;
if ( $pl [ 'lastUPD' ] > 0 ) {
2023-12-01 21:27:45 +00:00
$is1 .= '<br><br>(' . Conversion :: secondsToTimeout (( $pl [ 'lastUPD' ] + 7 * 24 * 60 * 60 ) - time ()) . ')' ;
2023-07-19 15:23:44 +00:00
}
$is1 .= '</small>' ;
} elseif ( $type == 67 ) {
$is1 .= '<small style="font-size:11px;"><a href="javascript:void(0)" onclick="itmToUser(' . $pl [ 'id' ] . ')">передать за ' . ( round (
1 + $pl [ 'price1' ] / 100 * 7
) * $col ) . ' кр.</a></small>' ;
} elseif ( $type == 66 ) {
$pos = explode ( '#' , $po [ 'toclan' ]);
$us_1 = $pos [ 1 ];
if ( $pl [ 'uid' ] < 1 ) {
$is1 .= '<small style=""><a href="?clan&deposit&take_itm=' . $pl [ 'id' ] . '">Взять предмет</a></small>' ;
} else {
$yui = mysql_fetch_array (
mysql_query (
'SELECT `id`,`login`,`cityreg` FROM `users` WHERE `id` = "' . mysql_real_escape_string (
$pl [ 'uid' ]
) . '" LIMIT 1'
)
);
2023-12-17 02:32:09 +00:00
$is1 .= '<small>Предмет у игрока<br><strong>' . $yui [ 'login' ] . '</strong><a href="info/' . $yui [ 'id' ] . '" target="_blank"><img width="10" src="' . Config :: img (
) . '/i/inf_' . $yui [ 'cityreg' ] . '.gif"></a></small>' ;
2023-07-19 15:23:44 +00:00
if ( $this -> info [ 'tt' ][ 14 ][ 0 ] == 1 || ( $this -> info [ 'id' ] == $us_1 )) {
$is1 .= '<br><small style=""><a href="?clan&deposit&ungive_itm=' . $pl [ 'id' ] . '">Изъять предмет</a></small>' ;
}
}
} elseif ( $type == 65 ) {
if ( ! isset ( $po [ 'toclan' ])) {
$is1 .= '<small style=""><a href="?clan&deposit&give_itm=' . $pl [ 'id' ] . '">Пожертвовать</a></small>' ;
} else {
$is1 .= '<small style=""><a href="?clan&deposit&give_itm=' . $pl [ 'id' ] . '">Вернуть</a></small>' ;
}
} elseif ( $type == 62 ) {
$upgitm = mysql_fetch_array (
mysql_query ( 'SELECT * FROM `items_upgrade` WHERE `iid` = "' . $pl [ 'item_id' ] . '" LIMIT 1' )
);
if ( ! isset ( $upgitm [ 'id' ])) {
$is1 .= '<small style="">Улучшение невозможно</small>' ;
} else {
$prcup = '' ;
if ( $upgitm [ 'price1' ] > 0 ) {
$prcup .= $upgitm [ 'price1' ] . ' кр.' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $upgitm [ 'price2' ] > 0 ) {
if ( $prcup != '' ) {
$prcup .= ' и ' ;
}
$prcup .= $upgitm [ 'price2' ] . ' екр.' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$is1 .= '<small style=""><a href="?r=8&upgradelvl=' . $pl [ 'id' ] . '">Улучшить за ' . $prcup . '</a></small>' ;
unset ( $prcup );
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} elseif ( $type == 63 ) {
$prcup = '' ;
$is1 .= '<small style=""><a href="?r=9&upgradelvlcom=' . $pl [ 'id' ] . '">комплект</a></small>' ;
unset ( $prcup );
} elseif ( $type == 64 ) {
$prcup = '' ;
$is1 .= '<small style=""><a href="?r=9">Выбрать другой предмет</a></small>' ;
unset ( $prcup );
} elseif ( $type == 61 ) { //улучшение предмета
if ( $pl [ 'price1' ] > $pl [ '1price' ]) {
$pl [ '1price' ] = $pl [ 'price1' ];
}
$prpod = $pl [ '1price' ] / 2.37 ;
if ( $pl [ 'price2' ] > $pl [ '2price' ]) {
$pl [ '2price' ] = $pl [ 'price2' ];
}
$prpod2 = 30 * ( $pl [ '2price' ] / 2.37 );
if ( $prpod2 > $prpod ) {
$prpod = $prpod2 ;
}
if ( ! isset ( $po [ 'add_s1' ]) && ! isset ( $po [ 'add_s2' ]) && ! isset ( $po [ 'add_s3' ]) && ! isset ( $po [ 'add_s5' ])) {
$prpod = $prpod / 2.37 ;
}
$prpod = round ( $prpod + $prpod / 100 * ( 37.795 * ( $po [ 'upgrade' ] + 1 )));
$is1 .= '<small style=""><a href="?upgrade=' . $pl [ 'id' ] . '&r=6&t=2&rnd=' . $code . '">Усилить за ' . $prpod . ' кр.</a></small>' ;
} elseif ( $type == 60 ) { //модифицирование
if ( $pl [ 'price1' ] > $pl [ '1price' ]) {
$pl [ '1price' ] = $pl [ 'price1' ];
}
$prpod = $pl [ '1price' ] / 2 ;
if ( $pl [ 'price2' ] > $pl [ '2price' ]) {
$pl [ '2price' ] = $pl [ 'price2' ];
}
$prpod2 = 30 * ( $pl [ '2price' ] / 2.37 );
if ( $prpod2 > $prpod ) {
$prpod = $prpod2 ;
}
if ( ! isset ( $po [ 'add_s1' ]) && ! isset ( $po [ 'add_s2' ]) && ! isset ( $po [ 'add_s3' ]) && ! isset ( $po [ 'add_s5' ])) {
$prpod = $prpod / 2 ;
}
$prpod = round ( $prpod );
$is1 .= '<small style=""><a href="?modif=' . $pl [ 'id' ] . '&r=7&t=2&rnd=' . $code . '">Модифицировать за ' . $prpod . ' кр.</a></small>' ;
} elseif ( $type == 59 ) { //дезинтеграция
if ( $po [ 'tr_lvl' ] > $pl [ 'level' ]) {
$pl [ 'level' ] = $po [ 'tr_lvl' ];
}
$prpod = 250 ;
$prpod_ekr = $pl [ 'level' ] * 0.25 ;
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( $this -> stats [ 'repair_z' ] >= 1 ) {
$is1 .= '<small style=""><a href="?ubeff=' . $pl [ 'id' ] . '&r=3&t=2&rnd=' . $code . '">Бесплатная дезинтеграция</a></small>' ;
} else {
$is1 .= '<small style=""><a href="?ubeff=' . $pl [ 'id' ] . '&r=3&t=2&rnd=' . $code . '">Дезинтегрировать за ' . $prpod . ' К р .</ a ></ small >
<!--< br >< small style = " " >< a href = " ?ubeff_ekr=' . $pl['id'] . '&r=3&t=2&rnd=' . $code . ' " > Дезинтегрировать за ' . $prpod_ekr . ' Екр .</ a ></ small >--> ' ;
}
} elseif ( $type == 58 ) { //вытаскивание рун
if ( $po [ 'tr_lvl' ] > $pl [ 'level' ]) {
$pl [ 'level' ] = $po [ 'tr_lvl' ];
}
$prpod = 2500 ;
$prpod_ekr = $pl [ 'level' ] * 0.15 ;
if ( $this -> stats [ 'repair_r' ] >= 1 ) {
$is1 .= '<small style=""><a href="?unrune=' . $pl [ 'id' ] . '&r=4&t=2&rnd=' . $code . '">Бесплатно извлечь руны</a></small>' ;
} else {
$is1 .= '<small style=""><a href="?unrune=' . $pl [ 'id' ] . '&r=4&t=2&rnd=' . $code . '">Извлечь руны за ' . $prpod . ' К р .</ a ></ small >< br >
<!--< small style = " " >< a href = " ?unrune_ekr=' . $pl['id'] . '&r=4&t=2&rnd=' . $code . ' " > Извлечь руны за ' . $prpod_ekr . ' Екр .</ a >
</ small > --> ' ;
}
} elseif ( $type == 57 ) {
$prpod = 30 ;
if ( $pl [ 'type' ] == 22 ) {
$prpod = 35 ;
} elseif ( $pl [ 'type' ] == 18 ) {
$prpod = 15 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'gravi' ])) {
$is1 .= '<small style=""><a onclick="top.un_grava(\'' . $pl [ 'id' ] . '\',\'' . $pl [ 'name' ] . '\',\'' . $prpod . '.00\',\'data\')" href="javascript:void(0)">Изменить надпись за ' . $prpod . ' кр.</a></small>' ;
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
$is1 .= '<small style=""><a onclick="top.grava(\'' . $pl [ 'id' ] . '\',\'' . $pl [ 'name' ] . '\',\'' . $prpod . '.00\',\'data\')" href="javascript:void(0)">Выгравировать надпись за ' . $prpod . ' кр.</a></small>' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} elseif ( $type == 56 ) { //Подгонка
if ( $po [ 'tr_lvl' ] > $pl [ 'level' ]) {
$pl [ 'level' ] = $po [ 'tr_lvl' ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$prpod = 5 * $pl [ 'level' ] + 10 ;
$prhp = 6 * $pl [ 'level' ] + 6 ;
$is1 .= '<small style=""><a href="?podgon=' . $pl [ 'id' ] . '&r=5&t=2&rnd=' . $code . '">Подогнать за ' . $prpod . ' кр.</a></small>' ;
} elseif ( $type == 15 ) { //кормушка зверя
$is1 .= '<a href="main.php?pet=1&obj_corm=' . $pl [ 'id' ] . '&rnd=' . $code . '">Кормить</a>' ;
} elseif ( $type == 11 ) {
$pl [ 'rep' ] = 0 ;
if ( $this -> rep [ 'rep1' ] < 100 ) {
if ( $po [ 'tr_lvl' ] >= 4 && $po [ 'tr_lvl' ] <= 6 ) {
$pl [ 'rep' ] = 1 ;
}
if ( $pl [ 'item_id' ] == 1035 ) {
$pl [ 'rep' ] = 2 ;
}
} elseif ( $this -> rep [ 'rep1' ] > 99 && $this -> rep [ 'rep1' ] < 1000 ) {
if ( $po [ 'tr_lvl' ] >= 7 && $po [ 'tr_lvl' ] <= 8 ) {
$pl [ 'rep' ] = 1 ;
}
if ( $pl [ 'item_id' ] == 1035 ) {
$pl [ 'rep' ] = 1 ;
}
} elseif ( $this -> rep [ 'rep1' ] > 999 ) {
if ( $po [ 'tr_lvl' ] >= 9 && $po [ 'tr_lvl' ] <= 10 ) {
$pl [ 'rep' ] = 1 ;
}
if ( $pl [ 'item_id' ] == 1035 ) {
$pl [ 'rep' ] = 1 ;
}
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
if ( $pl [ 'item_id' ] == 1035 ) {
$pl [ 'rep' ] = 2 ;
}
}
$is1 .= '<a href="javascript:void(0);" onclick="takeItRun(\'' . $pl [ 'img' ] . '\',' . $pl [ 'id' ] . ',' . $pl [ 'rep' ] . ')">Выбрать</a>' ;
} elseif ( $type == 14 ) {
$is1 .= '<a href="javascript:void(0);" onclick="massTakeItRun(\'' . $pl [ 'img' ] . '\',' . $pl [ 'id' ] . ',0)">Выбрать</a>' ;
} elseif ( $type == 12 ) {
$is1 .= '<a href="javascript:void(0);" onclick="takeItRun(\'' . $pl [ 'img' ] . '\',' . $pl [ 'id' ] . ',1)">Выбрать</a>' ;
} elseif ( $type == 10 ) {
//Общага (отображение предметов в общаге (под стеклом))
$is1 .= '<a href="javascript:void(0)" class="obj_take" data-code="' . $code . '" data-room="' . (( int ) $_GET [ 'room' ]) . '" rel="' . $pl [ 'id' ] . '">В рюкзак</a>' ;
} elseif ( $type == 9 ) {
//Общага (отображение предметов в инвентаре (под стеклом))
$is1 .= '<a href="javascript:void(0)" class="obj_add" data-code="' . $code . '" data-room="' . (( int ) $_GET [ 'room' ]) . '" rel="' . $pl [ 'id' ] . '">Под стекло</a>' ;
} elseif ( $type == 8 ) {
//Общага (отображение предметов в инвентаре)
$is1 .= '<a href="javascript:void(0)" class="obj_add" data-code="' . $code . '" data-room="' . (( int ) $_GET [ 'room' ]) . '" rel="' . $pl [ 'id' ] . '">В сундук</a>' ;
} elseif ( $type == 7 ) {
//Общага (отображение предметов в общаге)
$is1 .= '<a href="javascript:void(0)" class="obj_take" data-code="' . $code . '" data-room="' . (( int ) $_GET [ 'room' ]) . '" rel="' . $pl [ 'id' ] . '">В рюкзак</a>' ;
} elseif ( $type == 6 ) {
//Цветочный магазин
$is1 .= '<a href="main.php?otdel=2&add_item_f=' . $pl [ 'id' ] . '&rnd=' . $code . '">Добавить</a>' ;
} elseif ( $type == 5 ) {
//передача
2023-11-02 13:57:39 +00:00
$is1 .= '<a onClick="saleitem(' . $pl [ 'id' ] . ',1) return false;" href="javascript:void(0)">подарить</a><br><a onClick="saleitem(' . $pl [ 'id' ] . ',2) return false;" href="#">передать</a><br><small style="font-size:10px">(налог: 1 кр.)</small>' ;
2023-07-19 15:23:44 +00:00
} elseif ( $type == 12 ) {
//передача почта
$skcd = round ( $col * ( $pl [ 'price1' ] * 0.06 - 0.01 * $this -> stats [ 'os1' ]), 2 );
if ( $skcd < 0.06 ) {
$skcd = 0.06 ;
}
$is1 .= '<a href="main.php?otdel=' . $_GET [ 'otdel' ] . '&setlogin=' . $_REQUEST [ 'setlogin' ] . '&setobject=' . $pl [ 'id' ] . '&room=2&tmp=' . $code . '" onclick="return confirm(\'Передать предмет ' . $pl [ 'name' ] . '?\')">передать за ' . ( 1 + $skcd ) . ' кр.</A>' ;
} elseif ( $type == 13 ) {
//Забираем шмот
if ( $pl [ '1price' ] > 0 ) {
$mess = " Отказаться от предмета? Предмет будет уничтожен! " ;
$pl [ 'name' ] = 'Деньги ' . $pl [ '1price' ] . ' кр.' ;
} else {
$mess = " Отказаться от предмета? Предмет будет возвращен отправителю " ;
}
$date1 = $pl [ 'delete' ] - time ();
$is1 .= '<BR><NOBR><A href="?room=4&to_box=' . $pl [ 'id' ] . '&tmp=' . $code . ' " >Забрать</A></NOBR>
< BR >< NOBR >< A onclick = " return confirm( \ '' . $mess . ' \ ') " href = " ?room=4&del_box=' . $pl['id'] . '&tmp=' . $code . ' " > Отказаться </ A ></ NOBR >< SMALL >< BR >< BR > ( ' . date (
" j дн. H ч. " , $date1
) . ' )</small></TD>' ;
} elseif ( $type == 4 ) {
//ремонт
$r1 = round ( $pl [ 'price1' ] * 0.1 / 100 , 2 );
$r2 = round ( $pl [ 'price1' ] * 0.1 / 10 , 2 );
$r3 = round ( $pl [ 'price1' ] * $pl [ 'iznosNOW' ] * 0.10 / 100 , 2 );
2023-01-10 18:58:20 +00:00
2023-07-19 15:23:44 +00:00
if ( $this -> stats [ 'repair_discount' ] >= 1 ) {
$r1 = round (( $r1 / 100 * 25 ), 2 );
$r2 = round (( $r2 / 100 * 25 ), 2 );
$r3 = round (( $r3 / 100 * 25 ), 2 );
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( $r1 < 0.01 ) {
$r1 = 0.01 ;
}
if ( $r2 < 0.01 ) {
$r2 = 0.01 ;
}
if ( $r3 < 0.01 ) {
$r3 = 0.01 ;
}
$is1 .= '<small style=""><a href="?remon=' . $pl [ 'id' ] . '&t=1&rnd=' . $code . '">Ремонт 1 ед. за ' . $r1 . ' кр.</a><br>' ;
if ( $pl [ 'iznosNOW' ] >= 10 ) {
$is1 .= '<a href="?remon=' . $pl [ 'id' ] . '&t=2&rnd=' . $code . '">Ремонт 10 ед. за ' . $r2 . ' кр.</a><br>' ;
}
$is1 .= '<a href="?remon=' . $pl [ 'id' ] . '&t=3&rnd=' . $code . '">Полный ремонт за ' . $r3 . ' кр.</a></small>' ;
2023-11-02 13:57:39 +00:00
2023-07-19 15:23:44 +00:00
} elseif ( $type == 3 ) {
$is1 .= '<input type="button" onClick="document.getElementById(\'itemgift\').value=' . $pl [ 'id' ] . ';document.F1.submit();" value="Подарить" />' ;
} elseif ( $type == 2 ) {
global $shopProcent ;
$shpCena = $pl [ '1price' ];
if ( $pl [ '1price' ] == 0 ) {
$shpCena = $pl [ 'price1' ];
}
$plmx = 0 ;
if ( $pl [ 'iznosMAXi' ] != $pl [ 'iznosMAX' ] && $pl [ 'iznosMAX' ] != 0 ) {
$plmx = $pl [ 'iznosMAX' ];
} else {
$plmx = $pl [ 'iznosMAXi' ];
}
if ( $pl [ 'iznosNOW' ] > 0 ) {
$prc1 = floor ( $pl [ 'iznosNOW' ]) / ceil ( $plmx ) * 100 ;
} else {
$prc1 = 0 ;
}
$shpCena = $this -> shopSaleM ( $shpCena , $pl );
$shpCena = $shpCena / 100 * ( 100 - $prc1 );
if ( $pl [ 'iznosMAXi' ] < 999999999 ) {
if ( $pl [ 'iznosMAX' ] > 0 && $pl [ 'iznosMAXi' ] > 0 && $pl [ 'iznosMAXi' ] > ceil ( $pl [ 'iznosMAX' ])) {
$shpCena = $shpCena / 100 * ( ceil ( $pl [ 'iznosMAX' ]) / $pl [ 'iznosMAXi' ] * 100 );
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
$shpCena = $this -> round2 ( $shpCena / 100 * ( 100 - $shopProcent ));
if ( $shpCena < 0 ) {
$shpCena = 0 ;
}
if ( $pl [ 'kolvo' ] > 0 ) {
$shpCena = $shpCena * $pl [ 'kolvo' ];
}
if ( isset ( $po [ 'toclan' ])) {
$po [ 'toclan1' ] = explode ( '#' , $po [ 'toclan' ]);
$us_1 = $po [ 'toclan1' ][ 1 ];
if ( $us_1 != $this -> info [ 'id' ]) {
$d_s = false ;
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
$d_s = true ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} else {
$d_s = true ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $d_s ) { // Продать за кр тут
$is1 .= '<a href="javascript:void(0)" onClick="if(confirm(\'Продать предмет "' . $pl [ 'name' ] . '" за ' . $shpCena . ' кр.?\')){ location = \'main.php?sale&sd4=' . $this -> info [ 'nextAct' ] . '&item=' . $pl [ 'id' ] . '&rnd=' . $code . '\'; }">Продать за ' . $shpCena . ' кр.</a>' ;
if ( $pl [ 'pricerep' ] > 0 ) {
$is1 .= '<br><a href="javascript:void(0)" onClick="if(confirm(\'Обменять предмет "' . $pl [ 'name' ] . '" на ' . floor (
$pl [ 'pricerep' ] * $pl [ 'kolvo' ] / 2
) . ' воинственности?\')){ location = \'main.php?sale&sd4=' . $this -> info [ 'nextAct' ] . '&item_rep=' . $pl [ 'id' ] . '&rnd=' . $code . '\'; }">Обменять на ' . floor (
$pl [ 'pricerep' ] * $pl [ 'kolvo' ] / 2
) . ' В о инc. </a>' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} else {
$is1 .= 'Это не ваш предмет.' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} elseif ( $type == 16 ) {
$shpCena = $pl [ 'price2' ];
if ( $pl [ '2price' ] > 0 ) {
$shpCena = $pl [ '2price' ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$shpCena = $this -> shopSaleM ( $shpCena , $pl );
if ( $pl [ 'kolvo' ] > 0 ) {
$shpCena = $shpCena * $pl [ 'kolvo' ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$plmx = 0 ;
if ( $pl [ 'iznosMAXi' ] != $pl [ 'iznosMAX' ] && $pl [ 'iznosMAX' ] != 0 ) {
$plmx = $pl [ 'iznosMAX' ];
} else {
$plmx = $pl [ 'iznosMAXi' ];
}
if ( $pl [ 'iznosNOW' ] > 0 ) {
$prc1 = floor ( $pl [ 'iznosNOW' ]) / ceil ( $plmx ) * 100 ;
} else {
$prc1 = 0 ;
}
$shpCena = $shpCena / 100 * ( 100 - $prc1 );
if ( $pl [ 'iznosMAX' ] > 0 && $pl [ 'iznosMAXi' ] > 0 && $pl [ 'iznosMAXi' ] > $pl [ 'iznosMAX' ]) {
$shpCena = $shpCena / 100 * ( $pl [ 'iznosMAX' ] / $pl [ 'iznosMAXi' ] * 100 );
}
$shpCena = $this -> round2 ( $shpCena * $this -> berezCena ());
if ( $shpCena < 0 ) {
$shpCena = 0 ;
}
if ( isset ( $po [ 'toclan' ])) {
$po [ 'toclan1' ] = explode ( '#' , $po [ 'toclan' ]);
$us_1 = $po [ 'toclan1' ][ 1 ];
if ( $us_1 != $this -> info [ 'id' ]) {
$d_s = false ;
2022-12-30 19:03:37 +00:00
} else {
2023-07-19 15:23:44 +00:00
$d_s = true ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} else {
$d_s = true ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $d_s ) {
$is1 .= '<a href="javascript:void(0)" onClick="if(confirm(\'Продать предмет "' . $pl [ 'name' ] . '" за ' . $shpCena . ' екр.?\')){ location = \'main.php?sale&sd4=' . $this -> info [ 'nextAct' ] . '&item=' . $pl [ 'id' ] . '&rnd=' . $code . '\'; }">Продать за ' . $shpCena . ' екр.</a>' ;
} else {
$is1 .= 'Это не ваш предмет.' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} elseif ( $type == 30 ) {
if ( isset ( $po [ 'toclan' ])) {
$po [ 'toclan1' ] = explode ( '#' , $po [ 'toclan' ]);
$us_1 = $po [ 'toclan1' ][ 1 ];
$d_s = ! ( $us_1 != $this -> info [ 'id' ]);
} else {
$d_s = true ;
}
if ( $d_s ) {
$is1 .= '<form method="POST"><input type="hidden" value="' . $pl [ 'id' ] . '" name="iid"><input type="text" value="" name="summTR"><input type="submit" value="Сдать в магазин" name="PresTR"></form>' ;
} else {
$is1 .= 'Это не ваш предмет.' ;
}
} elseif ( $type == 31 ) {
$is1 .= '<form method="POST"><input type="hidden" value="' . $pl [ 'id' ] . '" name="iid"><input type="submit" value="Забрать" name="PresTR"> </form>' ;
} else {
if ( $d [ 2 ] == 1 ) { //можно использовать
$inv1 = '' ;
if ( isset ( $_GET [ 'inv' ])) {
$inv1 = 'inv=1&' ;
}
if ( $pl [ 'item_id' ] == 74 ) {
$is1 .= '<a onclick="top.addNewSmile(' . $pl [ 'id' ] . ',0) return false;" href="javascript:void(0)" title="Использовать">исп-ть</a>' ;
} else {
$useUrl = '' ;
if ( $pl [ 'magic_inc' ] == '' ) {
$pl [ 'magic_inc' ] = $pl [ 'magic_inci' ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $pl [ 'magic_inc' ] && $pl [ 'type' ] == 30 ) {
//используем эликсир
2023-12-17 02:32:09 +00:00
$pldate = '<table border=\\\'0\\\' width=\\\'100%\\\' cellspacing=\\\'0\\\' cellpadding=\\\'5\\\'><tr><td rowspan=2 width=\\\'80\\\' valign=\\\'middle\\\'><div align=\\\'center\\\'><img src=\\\'' . Config :: img (
) . '/i/items/' . $pl [ 'img' ] . '\\\'></div></td><td valign=\\\'middle\\\' align=\\\'left\\\'>"<strong>' . $pl [ 'name' ] . '</strong>"<br>Использовать сейчас?</td></tr></table>' ;
2023-07-19 15:23:44 +00:00
$useUrl = 'top.useiteminv(\'' . ( 0 + $pl [ 'id' ]) . '\',\'' . $pl [ 'img' ] . '\',\'' . $pl [ 'img' ] . '\',1,\'' . $pldate . '\',\'' . ( 0 + $_GET [ 'otdel' ]) . '\');' ;
} elseif ( $pl [ 'magic_inc' ] && $pl [ 'type' ] == 29 ) { //используем заклятие
if ( isset ( $po [ 'useOnLogin' ]) && ! isset ( $po [ 'zazuby' ])) { //на персонажа
$useUrl = 'top.useMagic(\'' . $pl [ 'name' ] . '\',' . ( 0 + $pl [ 'id' ]) . ',\'' . $pl [ 'img' ] . '\',1,\'main.php?' . $inv1 . 'otdel=' . (( int ) $_GET [ 'otdel' ]) . '&use_pid=' . $pl [ 'id' ] . '&rnd=' . $code . '\');' ;
} else { //просто использование (на себя, либо без указания предмета\логина)
2023-12-17 02:32:09 +00:00
$pldate = '<table border=\\\'0\\\' width=\\\'100%\\\' cellspacing=\\\'0\\\' cellpadding=\\\'5\\\'><tr><td rowspan=2 width=\\\'80\\\' valign=\\\'middle\\\'><div align=\\\'center\\\'><img src=\\\'' . Config :: img (
) . '/i/items/' . $pl [ 'img' ] . '\\\'></div></td><td valign=\\\'middle\\\' align=\\\'left\\\'>"<strong>' . $pl [ 'name' ] . '</strong>"<br>Использовать сейчас?</td></tr></table>' ;
2023-07-19 15:23:44 +00:00
$useUrl = 'top.useiteminv(\'' . ( 0 + $pl [ 'id' ]) . '\',\'' . $pl [ 'img' ] . '\',\'' . $pl [ 'img' ] . '\',1,\'' . $pldate . '\',\'' . ( 0 + $_GET [ 'otdel' ]) . '\',' . ( 0 + $_GET [ 'otdel' ]) . ');' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
//на предмет
}
if ( $useUrl != '' ) {
$is1 .= '<a href="javascript:void(0)" onClick="' . $useUrl . '" title="Использовать">исп-ть</a>' ;
2022-12-19 20:22:19 +00:00
} else {
2023-07-19 15:23:44 +00:00
$d [ 2 ] = 0 ;
2022-12-19 20:22:19 +00:00
}
}
}
2023-07-19 15:23:44 +00:00
if ( $pl [ 'max_text' ] > 0 && $pl [ 'max_text' ] - $pl [ 'use_text' ] > 0 ) {
$is1 .= '<a onclick="top.addNewText(' . $pl [ 'id' ] . ',' . ( $pl [ 'max_text' ] - $pl [ 'use_text' ]) . ',' . $pl [ 'inRazdel' ] . ') return false;" href="javascript:void(0)" title="Записать текст на предмете">Записать</a><br>' ;
}
if ( $pl [ 'type' ] == 31 || $pl [ 'type' ] == 46 || $pl [ 'type' ] == 48 || $pl [ 'type' ] == 50 || $pl [ 'type' ] == 62 || $pl [ 'type' ] == 68 || $pl [ 'type' ] == 37 || $pl [ 'type' ] == 47 ) {
if ( $d [ 2 ] == 1 ) {
$is1 .= '<br>' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if (( $pl [ 'type' ] != 37 || ! isset ( $po [ 'item_inbox' ]) || $po [ 'item_inbox' ] == 0 ) && $pl [ 'item_id' ] != 10038 && $pl [ 'item_id' ] != 10039 && $pl [ 'item_id' ] != 10040 ) {
2023-11-02 13:57:39 +00:00
$is1 .= '<a href="javascript:void(0);" onClick="top.useRune(' . $pl [ 'id' ] . ',\'' . $pl [ 'name' ] . '\',\'' . $pl [ 'img' ] . '\',\'main.php?inv=1&otdel=' . (( int ) $_GET [ 'otdel' ]) . '&use_rune=' . $pl [ 'id' ] . '&rnd=' . $code . " \ ')return false; \" title= \" Использовать \" >исп-ть</a>' " ;
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
//можно одеть
if ( $d [ 0 ] == 1 && $pl [ 'type' ] != 30 && $pl [ 'type' ] != 31 && (( $pl [ 'type' ] != 38 && $pl [ 'type' ] != 39 && $pl [ 'type' ] != 37 ) || $pl [ 'gift' ] != '' ) && ! isset ( $po [ 'noodet' ]) && $pl [ 'inslot' ] > 0 ) {
if ( $d [ 2 ] == 1 ) {
$is1 .= '<br>' ;
}
$is1 .= '<a href="main.php?otdel=' . $pl [ 'inRazdel' ] . '&inv=1&oid=' . $pl [ 'id' ] . '&rnd=' . $code . '" title="Надеть">надеть</a>' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'open' ]) && $d [ 0 ] == 1 ) {
if ( $d [ 2 ] == 1 ) {
$is1 .= '<br>' ;
}
$is1 .= '<a href="main.php?otdel=' . $pl [ 'inRazdel' ] . '&inv=1&open=1&oid=' . $pl [ 'id' ] . '&rnd=' . $code . '" title="Открыть">Открыть</a>' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $po [ 'close' ])) {
if ( $d [ 2 ] == 1 ) {
$is1 .= '<br>' ;
}
$is1 .= '<small><strong>Предмет закрыт</strong></small>' ;
}
if ( $pl [ 'group' ] > 0 ) {
$is1 .= '<br>' ;
if ( $this -> itemsX ( $pl [ 'id' ]) < $pl [ 'group_max' ]) {
2023-12-17 02:32:09 +00:00
$is1 .= '<a href="main.php?inv=1&otdel=' . (( int ) $_GET [ 'otdel' ]) . '&stack=' . $pl [ 'id' ] . '&rnd=' . $code . '" title="Собрать"><img src="' . Config :: img (
) . '/i/stack.gif" /></a>' ;
2023-07-19 15:23:44 +00:00
}
if ( $this -> itemsX ( $pl [ 'id' ]) > 1 ) {
2023-11-02 13:57:39 +00:00
$tbl = ' < table style = " border: 0; width: 100%; " cellspacing = " 0 " cellpadding = " 5 " >< tr >< td style = " text-align: center; width: 70px; " rowspan = " 2 " >
< img src = " ' . Config::img() . '/i/items/' . $pl['img'] . ' " alt = " " ></ td >
< td > Разделить предмет < strong > ' . $pl[' name '] . ' </ strong > ? </ td ></ tr ></ table > ' ;
$link = '/main.php?inv=1otdel=' . ( int ) $_GET [ 'otdel' ] . '&unstack=' . $pl [ 'id' ] . '&rnd=' . $code ;
$onclickStr = sprintf ( " top.unstack('%d','%s','%s',1,'%s','%d'); return false; " , $pl [ 'id' ], $pl [ 'img' ], $pl [ 'name' ], $tbl , ( int ) $_GET [ 'otdel' ]);
$is1 = " <a onclick=' $onclickStr ' href=' $link ' title='Разделить'><img src=' " . Config :: img () . " /i/unstack.gif' alt=''></a> " ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
}
if ( isset ( $po [ 'toclan' ])) {
$po [ 'toclan1' ] = explode ( '#' , $po [ 'toclan' ]);
$us_1 = $po [ 'toclan1' ][ 1 ];
if ( $us_1 != $this -> info [ 'id' ]) {
$d [ 1 ] = 0 ;
2022-12-19 20:22:19 +00:00
}
}
2023-01-10 18:58:20 +00:00
2023-07-19 15:23:44 +00:00
$is1 .= ' <a href="javascript:void(0);" onclick="top.addfastpanel(\'' . $pl [ 'id' ] . '\',\'' . $pl [ 'name' ] . '\',\'' . $pl [ 'type' ] . '\',\'' . $pl [ '1price' ] . '\',\'' . $pl [ '2price' ] . '\',\'' . $this -> city_name [ $pl [ 'maidin' ]] . '\',\'' . $pl [ 'img' ] . '\',\'' . $pl [ 'item_id' ] . '\',\'' . $pl [ 'iznosNOW' ] . '\',\'' . $pl [ 'iznosMAX' ] . '\',\'' . intval (
$_GET [ 'otdel' ]
) . '\',\'' . $d [ 0 ] . '\',\'' . $d [ 2 ] . '\',\'0\');" title="Добавить в избранное"><img width="16" height="15" src="' . Config :: img () . '/add_itm2.gif"></a> ' ;
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
if ( $d [ 1 ] == 1 ) { //можно выкинуть
if ( ! isset ( $po [ 'nodelete' ])) {
2023-12-17 02:32:09 +00:00
$is1 .= ' <a onClick="top.drop(' . $pl [ 'id' ] . ',\'' . $pl [ 'img' ] . '\',\'' . $pl [ 'name' ] . '\',1,\'<table border=\\\'0\\\' width=\\\'100%\\\' cellspacing=\\\'0\\\' cellpadding=\\\'5\\\'><tr><td rowspan=2><img src=\\\'' . Config :: img (
) . '/i/items/' . $pl [ 'img' ] . '\\\'></td><td align=\\\'left\\\'>Предмет <strong>' . $pl [ 'name' ] . '</strong> будет утерян, вы уверены ?</td></tr></table>\',\'' . intval (
2023-07-19 15:23:44 +00:00
$_GET [ 'otdel' ]
2023-09-30 20:18:09 +00:00
) . Config :: img () . ' / i / clear . gif"></a>' ;
2022-12-19 20:22:19 +00:00
}
}
}
2023-07-19 15:23:44 +00:00
//собираем все в одно (:
$rt [ 2 ] .= '<tr class="item"><td align="center" bgcolor="#' . $clr [ $k ] . '"><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td width="100" align="center" style="border-right:#A5A5A5 1px solid; padding:5px;">' . $is1 . '</td><td valign="top" align="left" style="padding-left:3px; padding-bottom:3px; padding-top:7px;"><div align="left">' . $is2 . '</div></td></tr></table></td></tr>' ;
$rt [ 1 ] += $pl [ 'massa' ];
$i ++ ;
}
$j ++ ;
}
$rt [ 0 ] = $i ;
$rt [ 'collich' ] = $j ;
return $rt ;
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
private function floordec ( $zahl , $decimals = 2 ) : float | int
2023-07-19 15:23:44 +00:00
{
return floor ( $zahl * pow ( 10 , $decimals )) / pow ( 10 , $decimals );
}
2023-08-11 15:28:54 +00:00
private function shopSaleM ( $val , $itm ) : float
2023-07-31 17:06:51 +00:00
{
$procs = [
0 , //0
0 , //1
0 , //2
0 , //3
0 , //4
0 , //5
0 , //6
0 , //7
5 ,
30 ,
30 ,
30 ,
30 ,
30 ,
30 ,
30 ,
30 ,
30 ,
30 ,
30 ,
2023-11-02 13:57:39 +00:00
30 ,
30 ,
];
$po = Conversion :: dataStringToArray ( $itm [ 'data' ]);
$proc = $procs [ $po [ 'tr_lvl' ]];
//
if ( $itm [ 'type' ] >= 28 ) {
$proc = 50 ;
}
if ( $itm [ 'type' ] == 46 ) {
$proc = 0 ;
}
if ( Config :: get ( 'shop_all' ) > 0 ) {
$proc = 100 - Config :: get ( 'shop_all' );
} elseif ( Config :: get ( 'shop_all_type1' ) > 0 && ! isset ( $this -> info [ 'inBerezka' ])) {
$proc = 100 - Config :: get ( 'shop_all_type1' );
} elseif ( Config :: get ( 'shop_all_type2' ) > 0 && isset ( $this -> info [ 'inBerezka' ])) {
$proc = 100 - Config :: get ( 'shop_all_type2' );
2023-07-19 15:23:44 +00:00
}
2023-11-02 13:57:39 +00:00
return round (( $val / 100 * ( 100 - $proc )), 2 );
2023-07-19 15:23:44 +00:00
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
public function round2 ( $v ) : float | string
{
$v = explode ( '.' , $v );
$v = doubleval ( $v [ 0 ] . '.' . $v [ 1 ][ 0 ] . $v [ 1 ][ 1 ]);
$f = explode ( '.' , $v );
if ( ! isset ( $f [ 1 ])) {
$v = $v . '.00' ;
}
return $v ;
2023-07-19 15:23:44 +00:00
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
public function berezCena () : float
2023-07-19 15:23:44 +00:00
{
2023-11-02 13:57:39 +00:00
return round (( Config :: get ( 'shop_type2' ) / 100 ), 2 );
}
public function testBattle ( $id ) : bool
{
return ! ( $id == 0 || Db :: getValue ( 'select count(*) from battle where id = ? and team_win > -1' , [ $id ]) > 0 );
}
public function stack ( $id )
{
$where = '' ;
$itm = mysql_fetch_array (
mysql_query (
' SELECT
2023-08-14 13:03:45 +00:00
`im` . `id` ,
`im` . `name` ,
`im` . `img` ,
`im` . `type` ,
`im` . `inslot` ,
`im` . `2h` ,
`im` . `2too` ,
`im` . `iznosMAXi` ,
`im` . `inRazdel` ,
`im` . `price1` ,
`im` . `price2` ,
`im` . `pricerep` ,
`im` . `magic_chance` ,
`im` . `info` ,
`im` . `massa` ,
`im` . `level` ,
`im` . `magic_inci` ,
`im` . `overTypei` ,
`im` . `group` ,
`im` . `group_max` ,
`im` . `ts` ,
`im` . `srok` ,
`im` . `class` ,
`im` . `class_point` ,
`im` . `anti_class` ,
`im` . `anti_class_point` ,
`im` . `max_text` ,
`im` . `useInBattle` ,
`im` . `lbtl` ,
`im` . `lvl_itm` ,
`im` . `lvl_exp` ,
`im` . `lvl_aexp` ,
2023-11-02 13:57:39 +00:00
`iu` . `id` ,
2023-08-14 13:03:45 +00:00
`iu` . `item_id` ,
`iu` . `1price` ,
`iu` . `2price` ,
`iu` . `uid` ,
`iu` . `use_text` ,
`iu` . `data` ,
`iu` . `inOdet` ,
`iu` . `inShop` ,
`iu` . `delete` ,
`iu` . `iznosNOW` ,
`iu` . `iznosMAX` ,
`iu` . `gift` ,
`iu` . `gtxt1` ,
`iu` . `gtxt2` ,
`iu` . `kolvo` ,
`iu` . `geniration` ,
`iu` . `magic_inc` ,
`iu` . `maidin` ,
`iu` . `lastUPD` ,
`iu` . `timeOver` ,
`iu` . `overType` ,
`iu` . `secret_id` ,
`iu` . `time_create` ,
`iu` . `time_sleep` ,
`iu` . `inGroup` ,
`iu` . `dn_delete` ,
`iu` . `inTransfer` ,
`iu` . `post_delivery` ,
`iu` . `lbtl_` ,
`iu` . `bexp` ,
`iu` . `so` ,
2023-11-02 13:57:39 +00:00
`iu` . `blvl` , count ( `iuu` . id ) as inGroupCount
FROM `items_users` AS `iu`
LEFT JOIN `items_main` AS `im` ON ( `im` . `id` = `iu` . `item_id` )
LEFT JOIN `items_users` as `iuu` ON ( `iuu` . inGroup = `iu` . inGroup AND `iuu` . item_id = `im` . id AND `iuu` . inShop = 0 )
WHERE `iu` . `id` = " ' . mysql_real_escape_string(
( int ) $id
) . '" AND `iu`.`uid` = "' . $this -> info [ 'id' ] . '" AND `iuu`.`uid` = "' . $this -> info [ 'id' ] . '" AND `iu`.`delete` = "0" AND `iu`.`inOdet` = "0" AND `iu`.`inShop` = "0" AND `im`.`group` = "1" LIMIT 1'
)
);
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
if ( isset ( $itm [ 'id' ]) && $itm [ 'iznosNOW' ] == 0 ) { //группируем похожие свободные предметы с этим
// создаем группу
if ( $itm [ 'inGroup' ] == 0 ) { // Если предмет не в группе, собираем все похожие предметы по группам.
$items = mysql_num_rows (
mysql_query (
'SELECT `iu`.id, `iu`.inGroup, `iu`.`item_id` FROM `items_users` AS `iu` WHERE `iu`.`uid`="' . $this -> info [ 'id' ] . '" AND `iu`.`delete`="0"AND `iu`.`inGroup`="0" AND `iu`.item_id="' . $itm [ 'item_id' ] . '"'
)
2022-12-30 19:03:37 +00:00
);
2023-11-02 13:57:39 +00:00
$items = ceil ( $items / $itm [ 'group_max' ]);
} else { // Добираем предметы в группу до полного количества, из предметов с inGroup == 0
$curG = mysql_num_rows (
mysql_query (
'SELECT `iu`.id, `iu`.inGroup, `iu`.`item_id` FROM `items_users` AS `iu` WHERE `iu`.`uid`="' . $this -> info [ 'id' ] . '" AND `iu`.`delete`="0"AND `iu`.`inGroup`="' . $itm [ 'inGroup' ] . '" AND `iu`.item_id="' . $itm [ 'item_id' ] . '"'
)
); // Текущее количество предметов в выбранной группе
$curNG = mysql_num_rows (
mysql_query (
'SELECT `iu`.id, `iu`.inGroup, `iu`.`item_id` FROM `items_users` AS `iu` WHERE `iu`.`uid`="' . $this -> info [ 'id' ] . '" AND `iu`.`delete`="0"AND `iu`.`inGroup`="0" AND `iu`.item_id="' . $itm [ 'item_id' ] . '"'
)
); // Текущее количество предметов которые без группы
$needG = $itm [ 'group_max' ] - $curG ; // Задаем требуемое количество для добора, если нужно больше 0 и требуемое количество меньше
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
if ( $needG > 0 && $curNG == 0 ) {
$curItem = mysql_fetch_array (
mysql_query (
'SELECT `iu`.id, `iu`.inGroup, count(`iu`.inGroup) as itemsInGroup, `iu`.`item_id` FROM `items_users` AS `iu` WHERE `iu`.`inGroup`!="' . $itm [ 'inGroup' ] . '" AND `iu`.`uid`="' . $this -> info [ 'id' ] . '" AND `iu`.`delete`="0" AND `iu`.item_id="' . $itm [ 'item_id' ] . '" GROUP BY `iu`.inGroup HAVING itemsInGroup <= "' . $needG . '" ORDER BY itemsInGroup DESC LIMIT 1'
)
);
if ( isset ( $curItem [ 'id' ])) {
$where = ' `iu`.`inGroup` = "' . $curItem [ 'inGroup' ] . '" AND ' ;
}
}
$itm [ 'group_max' ] = $needG ;
$items = 1 ;
}
$s = 0 ;
do {
if ( ! isset ( $curG ) && $curNG == 0 ) {
$itm [ 'inGroup' ] = $this -> stackGroupCheck ( $this -> info [ 'id' ], $itm [ 'inGroup' ], $itm [ 'item_id' ]);
}
$sp = mysql_query (
' SELECT `im` . `id` ,
2023-08-14 13:03:45 +00:00
`im` . `name` ,
`im` . `img` ,
`im` . `type` ,
`im` . `inslot` ,
`im` . `2h` ,
`im` . `2too` ,
`im` . `iznosMAXi` ,
`im` . `inRazdel` ,
`im` . `price1` ,
`im` . `price2` ,
`im` . `pricerep` ,
`im` . `magic_chance` ,
`im` . `info` ,
`im` . `massa` ,
`im` . `level` ,
`im` . `magic_inci` ,
`im` . `overTypei` ,
`im` . `group` ,
`im` . `group_max` ,
`im` . `ts` ,
`im` . `srok` ,
`im` . `class` ,
`im` . `class_point` ,
`im` . `anti_class` ,
`im` . `anti_class_point` ,
`im` . `max_text` ,
`im` . `useInBattle` ,
`im` . `lbtl` ,
`im` . `lvl_itm` ,
`im` . `lvl_exp` ,
`im` . `lvl_aexp` ,
2023-11-02 13:57:39 +00:00
`iu` . `id` ,
2023-08-14 13:03:45 +00:00
`iu` . `item_id` ,
`iu` . `1price` ,
`iu` . `2price` ,
`iu` . `uid` ,
`iu` . `use_text` ,
`iu` . `data` ,
`iu` . `inOdet` ,
`iu` . `inShop` ,
`iu` . `delete` ,
`iu` . `iznosNOW` ,
`iu` . `iznosMAX` ,
`iu` . `gift` ,
`iu` . `gtxt1` ,
`iu` . `gtxt2` ,
`iu` . `kolvo` ,
`iu` . `geniration` ,
`iu` . `magic_inc` ,
`iu` . `maidin` ,
`iu` . `lastUPD` ,
`iu` . `timeOver` ,
`iu` . `overType` ,
`iu` . `secret_id` ,
`iu` . `time_create` ,
`iu` . `time_sleep` ,
`iu` . `inGroup` ,
`iu` . `dn_delete` ,
`iu` . `inTransfer` ,
`iu` . `post_delivery` ,
`iu` . `lbtl_` ,
`iu` . `bexp` ,
`iu` . `so` ,
2023-11-02 13:57:39 +00:00
`iu` . `blvl` FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON ( `im` . `id` = `iu` . `item_id` ) WHERE ' . $where . ' `iu` . `kolvo` = " 1 " AND `iu` . `item_id` = " ' . $itm['item_id'] . ' " AND `iu` . `uid` = " ' . $this->info ['id'] . ' " AND `iu` . `delete` = " 0 " AND `iu` . `inOdet` = " 0 " AND `iu` . `inShop` = " 0 " AND `im` . `group` = " 1 " ORDER BY `iu` . `inGroup` ASC LIMIT ' . $itm[' group_max '] . ' '
2022-12-30 19:03:37 +00:00
);
2023-11-02 13:57:39 +00:00
$i = 0 ;
$j = 0 ;
while ( $pl = mysql_fetch_array ( $sp )) {
$pl [ 'data' ] = Conversion :: dataStringToArray ( $pl [ 'data' ]);
unset ( $pl [ 'data' ][ 'frompisher' ]);
$pl [ 'data' ] = Conversion :: arrayToDataString ( $pl [ 'data' ]);
$itm [ 'data' ] = Conversion :: dataStringToArray ( $itm [ 'data' ]);
unset ( $itm [ 'data' ][ 'frompisher' ]);
$itm [ 'data' ] = Conversion :: arrayToDataString ( $itm [ 'data' ]);
2023-12-17 02:32:09 +00:00
if ( $pl [ 'data' ] == $itm [ 'data' ] && $pl [ 'name' ] == $itm [ 'name' ] && $itm [ 'iznosMAX' ] == $pl [ 'iznosMAX' ] && $pl [ 'iznosNOW' ] == 0 && ( $pl [ 'timeOver' ] == 0 || $pl [ 'timeOver' ] > time (
)) && $pl [ 'gift' ] == $itm [ 'gift' ]) {
2023-11-02 13:57:39 +00:00
$upd = mysql_query (
'UPDATE `items_users` SET `lastUPD` = "' . time () . '", `inGroup` = "' . $itm [ 'inGroup' ] . '" WHERE `id` = "' . $pl [ 'id' ] . '" LIMIT 1'
);
if ( $upd ) {
$j ++ ;
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
$i ++ ;
2022-12-19 20:22:19 +00:00
}
}
2023-11-02 13:57:39 +00:00
mysql_query (
'UPDATE `items_users` SET `lastUPD` = "' . time () . '" WHERE `id` = "' . $itm [ 'id' ] . '" LIMIT 1'
2023-07-19 15:23:44 +00:00
);
2023-11-02 13:57:39 +00:00
$s ++ ;
} while ( $s < $items );
}
}
2023-07-19 15:23:44 +00:00
2023-11-02 13:57:39 +00:00
private function stackGroupCheck ( $uid , $group , $item ) : int
{ // Находит неиспользованный ID группы предметов.
$g = 0 ;
$i = 0 ;
do { //fixme ужасный цикл, ужасный запрос.
$i ++ ;
2024-01-05 22:14:35 +00:00
$gr = Db :: getValue ( 'select ingroup from items_users where uid = ? and ingroup = ? and item_id = ?' , [ $uid , $i , $item ]);
2023-07-19 15:23:44 +00:00
2023-11-02 13:57:39 +00:00
if ( empty ( $gr )) {
$g = 1 ;
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
} while ( $g == 0 );
return $i ;
2023-07-19 15:23:44 +00:00
}
2023-11-02 13:57:39 +00:00
public function testItems ( $uid , $sn , $dt )
2023-07-19 15:23:44 +00:00
{
2023-11-02 13:57:39 +00:00
if ( $uid != $this -> info [ 'id' ]) {
$u = self :: getInfo ( $uid );
if ( $sn == 0 ) {
$sn = $this -> getStats ( $uid );
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
} else {
$u = $this -> info ;
if ( isset ( $this -> stats [ 'hpAll' ])) {
$sn = $this -> stats ;
} elseif ( $sn == 0 ) {
$sn = $this -> getStats ( $uid );
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
}
2023-11-02 13:57:39 +00:00
if ( ! isset ( $u [ 'id' ])) {
return 0 ;
2023-07-19 15:23:44 +00:00
}
2023-11-02 13:57:39 +00:00
$snIt = 0 ;
//Проверяем одетые вещи и вещи с сроком годности
2023-12-17 02:32:09 +00:00
$itm = Db :: getRow (
" select
2023-11-02 13:57:39 +00:00
items_main . id ,
items_users . id as iduid ,
data ,
type ,
price2 ,
2 price ,
srok ,
item_id ,
time_create ,
time_sleep ,
2024-01-05 22:14:35 +00:00
timeover ,
2023-11-02 13:57:39 +00:00
name ,
2024-01-05 22:14:35 +00:00
overtype ,
inodet ,
iznosnow ,
iznosmax ,
iznosmaxi
2023-11-02 13:57:39 +00:00
from items_users
left join items_main on items_main . id = item_id
where
(
2024-01-05 22:14:35 +00:00
inodet != 0 or
2023-11-02 13:57:39 +00:00
data like '%srok%' or
data like '%vip_sale%' or
data like '%sudba=1%' or
2024-01-05 22:14:35 +00:00
iznosnow > 0 or
2023-11-02 13:57:39 +00:00
srok > 0 or
2024-01-05 22:14:35 +00:00
( timeover != 0 and timeover < unix_timestamp ())
2023-11-02 13:57:39 +00:00
) and uid = ? " ,
2023-12-17 02:32:09 +00:00
[ $u [ 'id' ]]
);
2023-11-02 13:57:39 +00:00
2023-11-05 02:46:07 +00:00
2023-11-09 17:24:47 +00:00
$t = $this -> items [ 'tr' ];
$x = 0 ;
$notr = 0 ;
2023-11-05 02:46:07 +00:00
2023-11-09 17:24:47 +00:00
if ( empty ( $itm [ 'data' ])) {
if ( $this -> info [ 'twink' ] > 0 ) {
//Н е дороже 100 екр.
if ( $itm [ 'price2' ] > 1 || $itm [ '2price' ] > 1 ) {
2023-11-05 02:46:07 +00:00
$notr ++ ;
}
2023-11-09 17:24:47 +00:00
}
2024-01-05 22:14:35 +00:00
if ( isset ( $itm [ 'iznosNOW' ], $itm [ 'iznosMAX' ], $itm [ 'iznosMAXi' ]) &&
$itm [ 'iznosNOW' ] >= ceil ( $itm [ 'iznosMAX' ]) &&
$itm [ 'iznosMAXi' ] != 999999999 ) {
2023-11-09 17:24:47 +00:00
$notr ++ ;
}
if ( $notr > 0 && $itm [ 'inOdet' ] != 0 ) {
//снимаем предмет
$this -> snatItem ( $itm [ 'id' ], $u [ 'id' ]);
$snIt ++ ;
}
} else {
2023-11-05 02:46:07 +00:00
2023-11-09 17:24:47 +00:00
$po = Conversion :: dataStringToArray ( $itm [ 'data' ]);
$po [ 'lvl' ] = $u [ 'level' ];
//проверяем требования
$j = 1 ;
while ( $j <= 4 ) {
if ( ! isset ( $po [ 'tr_s' . $j ]) && $itm [ 'type' ] != 26 ) {
$po [ 'tr_s' . $j ] = 0 ;
2023-11-05 02:46:07 +00:00
}
2023-11-09 17:24:47 +00:00
$j ++ ;
}
while ( $x < count ( $t )) {
$n = $t [ $x ];
if ( isset ( $po [ 'tr_' . $n ]) && $n == 'sex' ) {
if ( $po [ 'tr_' . $n ] != $this -> info [ 'sex' ]) {
2023-11-05 02:46:07 +00:00
$notr ++ ;
}
2023-11-09 17:24:47 +00:00
} elseif ( isset ( $po [ 'tr_' . $n ])) {
if ( $po [ 'tr_' . $n ] > $this -> stats [ $n ] && $n != 'align' && $n != 'align_bs' ) {
2023-11-02 13:57:39 +00:00
$notr ++ ;
}
2023-07-19 15:23:44 +00:00
}
2023-11-09 17:24:47 +00:00
$x ++ ;
}
if ( $this -> info [ 'twink' ] > 0 ) {
//Н е дороже 100 екр.
if ( $itm [ 'price2' ] > 1 || $itm [ '2price' ] > 1 ) {
$notr ++ ;
2023-07-19 15:23:44 +00:00
}
2023-11-09 17:24:47 +00:00
//Нельзя руны + чарки
if ( isset ( $po [ 'rune' ]) && $po [ 'rune' ] > 0 ) {
2023-11-02 13:57:39 +00:00
$notr ++ ;
2023-07-19 15:23:44 +00:00
}
2023-11-09 17:24:47 +00:00
if ( isset ( $po [ 'spell_id' ]) && $po [ 'spell_id' ] > 0 ) {
2023-11-05 02:46:07 +00:00
$notr ++ ;
2023-07-19 15:23:44 +00:00
}
2023-11-09 17:24:47 +00:00
}
if ( isset ( $po [ 'sudba' ]) && $po [ 'sudba' ] == 1 ) {
$po [ 'sudba' ] = $u [ 'login' ];
Db :: sql ( 'update items_users set data = ? where id = ? and uid = ?' , [ Conversion :: arrayToDataString ( $po ), $itm [ 'iduid' ], $u [ 'id' ]]);
}
if ( isset ( $po [ 'srok' ]) && $po [ 'srok' ] > 0 ) {
$itm [ 'srok' ] = $po [ 'srok' ];
}
if ( isset ( $po [ 'vip_sale' ]) && $sn [ 'silver' ] < 2 && ( $itm [ 'time_create' ] - time ()) < 0 ) {
if ( $itm [ 'item_id' ] == 4704 ) {
$po [ 'musor2' ] = 4708 ;
}
ItemsModel :: itemDecay ( $itm [ 'id' ], $itm [ 'overType' ], $u [ 'id' ], ( int ) $po [ 'musor2' ], $itm [ 'type' ], $itm [ 'name' ]);
$notr ++ ;
}
if ( $itm [ 'iznosNOW' ] >= ceil ( $itm [ 'iznosMAX' ]) && $itm [ 'iznosMAXi' ] != 999999999 ) {
$notr ++ ;
}
if ( $notr > 0 && $itm [ 'inOdet' ] != 0 ) {
//снимаем предмет
$this -> snatItem ( $itm [ 'id' ], $u [ 'id' ]);
$snIt ++ ;
}
//проверяем срок годности
if ( $itm [ 'iznosNOW' ] >= ceil ( $itm [ 'iznosMAX' ]) && $itm [ 'iznosMAXi' ] != 999999999 && isset ( $po [ 'musor' ]) && $po [ 'musor' ] > 0 ) {
//предмет сломался
$this -> itemDestroy ( $itm [ 'id' ], $u [ 'id' ], ( int ) $po [ 'musor' ]);
}
if ( $itm [ 'time_create' ] + $itm [ 'srok' ] <= time () && $itm [ 'srok' ] > 0 && $itm [ 'time_sleep' ] == 0 ) {
if ( $itm [ 'inOdet' ] != 0 ) {
2023-11-02 13:57:39 +00:00
$this -> snatItem ( $itm [ 'id' ], $u [ 'id' ]);
$snIt ++ ;
2023-07-19 15:23:44 +00:00
}
2023-11-09 17:24:47 +00:00
//удаляем предмет
if ( $itm [ 'item_id' ] == 4704 ) {
$po [ 'musor2' ] = 4708 ;
2023-11-02 13:57:39 +00:00
}
2023-11-09 17:24:47 +00:00
ItemsModel :: itemDecay ( $itm [ 'id' ], $itm [ 'overType' ], $u [ 'id' ], ( int ) $po [ 'musor2' ], $itm [ 'type' ], $itm [ 'name' ]);
2022-12-19 20:22:19 +00:00
}
2023-11-09 17:24:47 +00:00
}
2023-11-02 13:57:39 +00:00
if ( $snIt > 0 ) {
$this -> testItems ( $uid , $sn , 1 );
} elseif ( $dt == 0 ) {
return - 2 ;
2023-07-19 15:23:44 +00:00
}
2023-11-02 13:57:39 +00:00
}
2022-12-19 20:22:19 +00:00
2023-11-02 13:57:39 +00:00
public function snatItem ( ? int $id , int $uid = 0 ) : int
{
if ( empty ( $id )) {
return 0 ;
2023-07-19 15:23:44 +00:00
}
2024-01-05 22:14:35 +00:00
$sql = 'select count(*) from items_users where id = ? and inodet != 0' ;
2023-11-02 13:57:39 +00:00
$args = [ $id ];
if ( $uid > 0 ) {
$sql .= ' and uid = ?' ;
$args [] = $uid ;
2023-07-19 15:23:44 +00:00
}
2023-11-02 13:57:39 +00:00
if ( empty ( Db :: getValue ( $sql , $args ))) {
return 0 ;
}
2024-01-05 22:14:35 +00:00
Db :: sql ( 'update items_users set lastupd = unix_timestamp(), inodet = 0 where id = ?' , [ $id ]);
2023-11-02 13:57:39 +00:00
if ( isset ( $_GET [ 'remitem' ]) || isset ( $_GET [ 'sid' ])) {
$this -> info [ 'autospell' ] = 1 ;
Db :: sql ( 'update users set autospell = 1 where id = ?' , [ $this -> info [ 'id' ]]);
}
return 1 ;
2023-07-19 15:23:44 +00:00
}
2023-11-02 13:57:39 +00:00
private function itemDestroy ( int $id , int $uid = 0 , int $id2 = 0 ) : void
2023-08-15 22:48:29 +00:00
{
2023-11-02 13:57:39 +00:00
if ( $id == 0 ) {
return ;
}
$sql = 'delete from items_users where id = ?' ;
$args = [ $id ];
if ( $uid > 0 ) {
$sql .= ' and uid = ?' ;
$args [] = $uid ;
2023-08-15 22:48:29 +00:00
}
2023-11-02 13:57:39 +00:00
Db :: sql ( $sql , $args );
2023-08-15 22:48:29 +00:00
2023-11-02 13:57:39 +00:00
Delo :: add ( 2 , 'system.inventory' , $uid , " Предмет [id: $id ] был сломан. " );
if ( $id2 > 1 ) {
//Добавляем пустую бутылку
ItemsModel :: addItem ( $id2 , $uid , 'noodet=1|noremont=1' );
}
}
public function btlMagicList () : string
{
2024-01-05 22:14:35 +00:00
$sv = array_fill ( 1 , 12 , '<img class="nopriemuse" title="Пустой слот магия" src="' . Config :: img () . '/i/items/w/w101.gif" alt="">' );
2023-11-02 13:57:39 +00:00
foreach ( $this -> stats [ 'items' ] as $stat ) {
if ( ! in_array ( $stat [ 'inslot' ], [ 40 , 51 ])) {
continue ;
2023-08-15 22:48:29 +00:00
}
2023-11-02 13:57:39 +00:00
if ( empty ( $stat [ 'useInBattle' ]) || $stat [ 'btl_zd' ] > 0 || $stat [ 'iznosNOW' ] >= $stat [ 'iznosMAX' ] || empty ( $stat [ 'magic_inci' ])) {
$vl = ' class="nopriemuse"' ;
} else {
$po = Conversion :: dataStringToArray ( $stat [ 'data' ]);
if ( $po [ 'useOnLogin' ] == 1 ) {
$jsvars = " ' { $stat [ 'name' ] } ',' { $stat [ 'id' ] } ',' { $stat [ 'img' ] } ',1,1,'',' { $stat [ 'useInBattle' ] } ' " ;
2023-08-15 22:48:29 +00:00
} else {
2023-11-02 13:57:39 +00:00
$jsvars = " ' { $stat [ 'name' ] } ',' { $stat [ 'id' ] } ',' { $stat [ 'img' ] } ',1,2 " ;
2023-08-15 22:48:29 +00:00
}
2023-11-02 13:57:39 +00:00
$vl = 'style="cursor:pointer" onclick="top.useMagicBattle(' . $jsvars . ')"' ;
2023-08-15 22:48:29 +00:00
}
2023-11-02 13:57:39 +00:00
$iznos = " Долговечность: { $stat [ 'iznosNOW' ] } / { $stat [ 'iznosMAX' ] } " ;
$img = Config :: img () . '/i/items/' . $stat [ 'img' ];
$sv [ $stat [ 'inOdet' ] - 39 ] = " <img alt='' ' $vl ' title=' $iznos ' src=' $img '> " ;
}
$r = '<table style="border:0;border-spacing:0;border-collapse:collapse;">' .
'<tr>' .
'<td>' . $sv [ 1 ] . '</td>' .
'<td>' . $sv [ 2 ] . '</td>' .
'<td>' . $sv [ 3 ] . '</td>' .
'<td>' . $sv [ 4 ] . '</td>' .
'<td>' . $sv [ 5 ] . '</td>' .
'<td>' . $sv [ 6 ] . '</td>' .
'<td>' . $sv [ 7 ] . '</td>' .
'<td>' . $sv [ 8 ] . '</td>' .
'<td>' . $sv [ 9 ] . '</td>' .
'<td>' . $sv [ 10 ] . '</td>' .
'<td>' . $sv [ 11 ] . '</td>' .
'<td>' . $sv [ 12 ] . '</td>' .
'</tr>' .
'</table>' ;
return str_replace ( '"' , '\"' , $r );
}
/** Отрисовка коробочки персонажа с логином. */
public function getInfoPers ( $uid , $i1 , $sn = 0 , $ivv = 0 ) : array
{
if ( empty ( $this -> infoBox )) {
$this -> infoBox = new InfoBox ( $this ); //fixme почему-то не дружит с конструктором.
}
return $this -> infoBox -> getInfoPers ( $uid , $i1 , $sn , $ivv );
}
public function endEffect ( $id , $u ) : int
{
2024-01-05 22:14:35 +00:00
$e = Db :: getRow ( 'select id, uid, id_eff, name, sleeptime, data, type1 from eff_users left join eff_main on id_eff = id2 where id = ? and deactivetime < unix_timestamp()' , [ $id ]);
2023-11-02 13:57:39 +00:00
if ( ! isset ( $e [ 'id' ])) {
return 0 ;
}
$sleep = $this -> testAction ( '`vars` = "sleep" AND `uid` = "' . $e [ 'uid' ] . '" LIMIT 1' , 1 );
if ( $e [ 'id_eff' ] == 2 ) {
//Проверка
2023-12-17 02:32:09 +00:00
$et = Db :: getRow (
" select id, time from actions where uid = ? and vars like '%read%' and vals = (select id from items_main where name = ? limit 1) " ,
[ $e [ 'uid' ], str_replace ( 'Изучение: ' , '' , $e [ 'name' ])]
);
2023-11-02 13:57:39 +00:00
$et = isset ( $et [ 'id' ]) && $et [ 'time' ] >= time ();
2023-08-15 22:48:29 +00:00
} else {
2023-11-02 13:57:39 +00:00
$et = false ;
}
if ( $et || $e [ 'sleeptime' ] != 0 || $sleep [ 'vars' ] == 'sleep' ) {
2023-08-15 22:48:29 +00:00
return 0 ;
}
2023-11-02 13:57:39 +00:00
Effects :: removeById ( $e [ 'uid' ], $e [ 'id' ]);
$po = Conversion :: dataStringToArray ( $e [ 'data' ]);
if ( isset ( $po [ 'finish_file' ]) && file_exists ( '_incl_data/class/Magic/' . $po [ 'finish_file' ] . '.php' )) {
require_once '_incl_data/class/Magic/' . $po [ 'finish_file' ] . '.php' ;
}
if ( isset ( $u [ 'id' ]) && ( $e [ 'type1' ] < 11 || $e [ 'type1' ] > 16 && $e [ 'type1' ] < 23 ) && $e [ 'noch' ] == 0 ) {
$text = " Закончилось действие эффекта «<strong> { $e [ 'name' ] } </strong>» " ;
$cmsg = new ChatMessage ();
$cmsg -> setRoom ( $u [ 'room' ]);
$cmsg -> setTo ( $u [ 'login' ]);
$cmsg -> setText ( $text );
$cmsg -> setType ( 6 );
( new Chat ()) -> sendMsg ( $cmsg );
if ( $u [ 'battle' ] > 0 ) {
$lastHOD = Db :: getValue ( 'select if(type != 6, id_hod + 1, id_hod) as id_hod from battle_logs where battle = ? order by id_hod desc limit 1' , [ $u [ 'battle' ]]);
if ( ! empty ( $lastHOD )) {
2023-12-17 02:32:09 +00:00
Db :: sql (
" insert into battle_logs (time, battle, id_hod, text, vars, zona1, zonb1, zona2, zonb2, type) values (unix_timestamp(),?,?,?,?,'','','','',6) " ,
[ $u [ 'battle' ], $lastHOD , " { tm1} $text у игрока { u1} " , " login1= { $u [ 'login' ] } ||t1= { $u [ 'team' ] } ||time= " . time ()]
);
2023-11-02 13:57:39 +00:00
}
}
}
return 1 ;
2023-08-15 22:48:29 +00:00
}
2023-07-19 15:23:44 +00:00
public function info_remont () : string
{
$r = '' ;
2023-12-17 02:32:09 +00:00
$sp = Db :: getRows (
2024-01-05 22:14:35 +00:00
'select iznosnow, iznosmax, name from items_users left join items_main on item_id = items_main.id where uid = ? and inshop = 0 and inodet between 1 and 18 limit 18' ,
2023-12-17 02:32:09 +00:00
[ $this -> info [ 'id' ]]
);
2023-11-02 13:57:39 +00:00
foreach ( $sp as $pl ) {
2024-01-05 22:14:35 +00:00
if (
! isset ( $pl [ 'iznosMAX' ]) ||
! isset ( $pl [ 'iznosNOW' ]) ||
$pl [ 'iznosNOW' ] <= ceil ( $pl [ 'iznosMAX' ] * 0.80 )
) {
2023-07-19 15:23:44 +00:00
continue ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$r .= '<strong>' . $pl [ 'name' ] . '</strong> [<span style="color: brown">' . floor ( $pl [ 'iznosNOW' ]) . '/' .
ceil ( $pl [ 'iznosMAX' ]) . '</span>] требуется ремонт<br>' ;
}
2023-11-02 13:57:39 +00:00
return '<div style="font-size: smaller;">' . $r . '</div>' ;
2023-07-19 15:23:44 +00:00
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
public function snatItemAll ( int $uid ) : int
{
2023-11-02 13:57:39 +00:00
if ( $uid < 1 ) {
return 0 ;
}
2024-01-05 22:14:35 +00:00
Db :: sql ( 'update items_users set lastupd = unix_timestamp(), inodet = 0 where inodet != 0 and uid = ?' , [ $uid ]);
2023-11-02 13:57:39 +00:00
return 1 ;
2023-07-19 15:23:44 +00:00
}
public function odetItem ( int $id , int $uid )
{
2024-01-05 22:14:35 +00:00
$sql = " select items_users.id, data, 2price, ingroup, gift, gtxt1, `group`, price2, name, type, inslot, 2too, 2h
2023-11-02 13:57:39 +00:00
from items_users
left join items_main on item_id = items_main . id
2024-01-05 22:14:35 +00:00
where items_users . id = ? and inodet = 0 and inshop = 0 " ;
2023-11-02 13:57:39 +00:00
$args = [ $id ];
if ( $uid ) {
$sql .= ' and items_users.uid = ?' ;
$args [] = $uid ;
2023-07-19 15:23:44 +00:00
}
2023-11-02 13:57:39 +00:00
$itm = Db :: getRow ( $sql , $args );
unset ( $sql , $args );
2023-07-19 15:23:44 +00:00
if ( isset ( $itm [ 'id' ])) {
if ( $itm [ 'group' ] == 1 && $this -> itemsX ( $itm [ 'id' ]) > 1 ) {
$this -> unstack ( $itm [ 'id' ], 1 );
2022-12-19 20:22:19 +00:00
}
2023-08-14 15:15:05 +00:00
$tr = Conversion :: dataStringToArray ( $itm [ 'data' ]);
2023-07-19 15:23:44 +00:00
$notr = $this -> trItem ( $tr );
$msb = '' ;
2023-11-02 13:57:39 +00:00
if (
isset ( $tr [ 'maks_itm_one' ]) &&
$tr [ 'maks_itm_one' ] > 0 &&
2024-01-05 22:14:35 +00:00
Db :: getValue ( 'select true from items_users where uid = ? and inodet > 0 and data like ? limit 1' , [ $this -> info [ 'id' ], " %maks_itm_one= { $tr [ 'maks_itm_one' ] } % " ])
2023-11-02 13:57:39 +00:00
) {
$this -> error = 'Возможное использование максимум одного предмета!' ;
$notr ++ ;
2023-07-19 15:23:44 +00:00
}
if ( $this -> info [ 'twink' ] > 0 ) {
//Н е дороже 100 екр.
if ( $itm [ 'price2' ] > 100 || $itm [ '2price' ] > 100 ) {
$notr ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
//Нельзя руны + чарки
if ( isset ( $tr [ 'rune' ]) && $tr [ 'rune' ] > 0 ) {
$notr ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( isset ( $tr [ 'spell_id' ]) && $tr [ 'spell_id' ] > 0 ) {
$notr ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
}
2023-08-12 01:31:29 +00:00
if ( isset ( $tr [ 'vip_sale' ]) && $this -> stats [ 'silver' ] < 2 ) {
$notr ++ ;
2023-07-19 15:23:44 +00:00
}
if ( isset ( $tr [ 'sudba' ])) {
if ( $tr [ 'sudba' ] != '0' && $tr [ 'sudba' ] != $this -> info [ 'login' ]) {
$notr ++ ;
} elseif ( $tr [ 'sudba' ] == '0' ) {
$tr [ 'sudba' ] = $this -> info [ 'login' ];
2023-08-14 15:15:05 +00:00
$itm [ 'data' ] = Conversion :: arrayToDataString ( $tr );
2023-07-19 15:23:44 +00:00
$msb = ',`data`="' . $itm [ 'data' ] . '"' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
}
if ( isset ( $tr [ 'tr_align_bs' ]) && $this -> info [ 'inTurnir' ] > 0 ) {
if ( $tr [ 'tr_align_bs' ] == '1' ) {
if ( $this -> info [ 'align_real' ] <= 1 || $this -> info [ 'align_real' ] >= 2 ) {
$notr ++ ;
} else {
$notr = 0 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} else {
if ( $this -> info [ 'align_real' ] <= 3 || $this -> info [ 'align_real' ] >= 4 ) {
$notr ++ ;
} else {
$notr = 0 ;
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
}
if ( $notr > 0 ) {
//Н е хватает характеристик или не совпадают условия
2023-11-02 13:57:39 +00:00
$this -> error = isset ( $tr [ 'open' ]) && isset ( $_GET [ 'open' ]) ? 'Вы не можете открыть данный предмет' : 'Нельзя одеть больше одного предмета данного типа' ;
2023-07-19 15:23:44 +00:00
return 0 ;
} elseif ( isset ( $tr [ 'open' ]) && isset ( $_GET [ 'open' ]) && isset ( $tr [ 'items_in_file' ])) {
$io = '' ;
if ( $itm [ 'inGroup' ] > 0 ) {
2024-01-05 22:14:35 +00:00
Db :: sql ( 'update items_users set lastupd = unix_timestamp(), ingroup = 0 where id = ?' , [ $itm [ 'id' ]]);
2022-12-19 20:22:19 +00:00
}
2023-08-11 15:28:54 +00:00
if ( file_exists ( '_incl_data/class/Magic/' . $tr [ 'items_in_file' ] . '.php' )) {
2023-11-02 13:57:39 +00:00
require_once '_incl_data/class/Magic/' . $tr [ 'items_in_file' ] . '.php' ;
2023-07-19 15:23:44 +00:00
if ( ! isset ( $no_open_itm )) {
$this -> deleteItem ( $itm [ 'id' ], $this -> info [ 'id' ]);
$this -> error = 'Вы успешно открыли "' . $itm [ 'name' ] . '":<br>' . $io . '...' ;
} else {
unset ( $no_open_itm );
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} else {
$this -> error = 'Предмет "' . $itm [ 'name' ] . '" невозможно открыть...' ;
}
} elseif ( isset ( $tr [ 'open' ]) && isset ( $_GET [ 'open' ])) {
//открываем предмет
$io = '' ;
$i = 0 ;
$itms = explode ( ',' , $tr [ 'items_in' ]);
if ( $itm [ 'type' ] == 37 ) {
//Распаковываем упаковку
2023-11-02 13:57:39 +00:00
$itmin = Db :: getRow ( 'select * from items_users where id = ?' , [ $tr [ 'item_inbox' ]]);
$itmmn = Db :: getRow ( 'select * from items_main where id = ?' , [ $itmin [ 'item_id' ]]);
2023-07-19 15:23:44 +00:00
//
2023-11-02 13:57:39 +00:00
2023-07-19 15:23:44 +00:00
if ( $itm [ 'gift' ] == '' || $itm [ 'gift' ] == '0' ) {
$this -> error = 'Предмет должен быть подарен, прежде чем е г о открывать!' ;
} elseif ( ! isset ( $itmin [ 'id' ])) {
$this -> error = 'В упаковке ничего нет, скорее всего предмет кто-то вытащил от туда...' ;
} else {
$io .= $itmmn [ 'name' ];
if ( $itmin [ 'item_id' ] == 4867 ) {
//Н е откроешь
$this -> deleteItem ( $itm [ 'id' ], $this -> info [ 'id' ]);
$this -> deleteItem ( $itmin [ 'id' ], $this -> info [ 'id' ]);
$this -> error = 'Н е удалось открыть подарок. Содержимое испорчено.' ;
} elseif ( $itmin [ 'item_id' ] == 4868 ) {
//Летучая мышь
2024-01-05 22:14:35 +00:00
Db :: sql ( 'update stats set hpnow = 1, mpnow = 1 where id = ?' , [ $this -> info [ 'id' ]]);
2023-07-19 15:23:44 +00:00
$this -> deleteItem ( $itm [ 'id' ], $this -> info [ 'id' ]);
$this -> deleteItem ( $itmin [ 'id' ], $this -> info [ 'id' ]);
$this -> error = 'Вы потеряли все HP...' ;
} elseif ( $itmin [ 'item_id' ] == 4870 ) {
//Минута молчания
2023-11-02 13:57:39 +00:00
Db :: sql ( 'update users set molch1 = if(molch1 > unix_timestamp(), molch1 + 3600, unix_timestamp() + 3600) where id = ?' , [ $this -> info [ 'id' ]]);
2023-07-19 15:23:44 +00:00
$this -> deleteItem ( $itm [ 'id' ], $this -> info [ 'id' ]);
$this -> deleteItem ( $itmin [ 'id' ], $this -> info [ 'id' ]);
$this -> error = 'Вы оказались под действие заклятия молчания...' ;
} elseif ( $itmin [ 'item_id' ] == 4873 ) {
//Крысиный яд
2023-11-02 13:57:39 +00:00
$a = Db :: getValue ( 'select name from users_animal where uid = ? and id = ? and pet_in_cage = 0' , [ $this -> info [ 'id' ], $this -> info [ 'animal' ]]);
2023-07-19 15:23:44 +00:00
$this -> deleteItem ( $itm [ 'id' ], $this -> info [ 'id' ]);
$this -> deleteItem ( $itmin [ 'id' ], $this -> info [ 'id' ]);
2023-11-02 13:57:39 +00:00
if ( $a ) {
$this -> error = 'Ваш зверь "' . $a . '" странно позеленел...' ;
Db :: sql ( 'update users_animal set eda = 0, yad = unix_timestamp() + 7 * 86400 where id = ?' , [ $this -> info [ 'animal' ]]);
2023-07-19 15:23:44 +00:00
} else {
$this -> error = 'Кто-то пытался отравить вашего зверя, которого у вас нет :)' ;
}
} elseif ( $itmin [ 'item_id' ] == 4869 ) {
//Неасчастный случай (легкая травма на 1 час)
$this -> deleteItem ( $itm [ 'id' ], $this -> info [ 'id' ]);
$this -> deleteItem ( $itmin [ 'id' ], $this -> info [ 'id' ]);
mysql_query (
' INSERT INTO `eff_users`
( `overType` , `timeUse` , `hod` , `name` , `data` , `uid` , `id_eff` , `img2` , `timeAce` , `v1` ) VALUES (
" 0 " , " ' . (time() + 3600) . ' " , " -1 " ,
" Неверие в человечество " , " add_s' . rand(1, 3) . '=-' . rand(
5 , 15
) . '","' . $this -> info [ 'id' ] . ' " ,
" 4 " , " bad_present_travma1.gif " , " 0 " , " 1 "
) '
);
$this -> error = 'Вы травмированы. В том числе и физически...' ;
} elseif ( $itmin [ 'item_id' ] == 4872 ) {
//Трагедия (средняя травма на 1 час)
$this -> deleteItem ( $itm [ 'id' ], $this -> info [ 'id' ]);
$this -> deleteItem ( $itmin [ 'id' ], $this -> info [ 'id' ]);
mysql_query (
' INSERT INTO `eff_users`
( `overType` , `timeUse` , `hod` , `name` , `data` , `uid` , `id_eff` , `img2` , `timeAce` , `v1` ) VALUES (
" 0 " , " ' . (time() + 3600) . ' " , " -1 " ,
" Неверие в человечество " , " add_s' . rand(1, 3) . '=-' . rand(
16 , 25
) . '","' . $this -> info [ 'id' ] . ' " ,
" 4 " , " bad_present_travma2.gif " , " 0 " , " 2 "
) '
);
$this -> error = 'Вы травмированы. В том числе и физически...' ;
} elseif ( $itmin [ 'item_id' ] == 4876 ) {
//Катастрофа (тяжелая травма на 1 час)
$this -> deleteItem ( $itm [ 'id' ], $this -> info [ 'id' ]);
$this -> deleteItem ( $itmin [ 'id' ], $this -> info [ 'id' ]);
mysql_query (
' INSERT INTO `eff_users`
( `overType` , `timeUse` , `hod` , `name` , `data` , `uid` , `id_eff` , `img2` , `timeAce` , `v1` ) VALUES (
" 0 " , " ' . (time() + 3600) . ' " , " -1 " ,
" Неверие в человечество " , " add_s' . rand(1, 3) . '=-' . rand(
26 , 35
) . '","' . $this -> info [ 'id' ] . ' " ,
" 4 " , " bad_present_travma3.gif " , " 0 " , " 3 "
) '
);
$this -> error = 'Вы травмированы. В том числе и физически...' ;
} elseif ( $itmin [ 'item_id' ] == 4878 ) {
//Недвижимость (add_puti=7200)
$this -> deleteItem ( $itm [ 'id' ], $this -> info [ 'id' ]);
$this -> deleteItem ( $itmin [ 'id' ], $this -> info [ 'id' ]);
mysql_query (
' INSERT INTO `eff_users`
( `overType` , `timeUse` , `hod` , `name` , `data` , `uid` , `id_eff` , `img2` , `timeAce` , `v1` ) VALUES (
" 0 " , " ' . (time() + 7200) . ' " , " -1 " ,
" Недвижимость " , " add_puti=1 " , " ' . $this->info ['id'] . ' " ,
" 4 " , " bad_present_chains.gif " , " 0 " , " 3 "
) '
);
$this -> error = 'Вы не можете передвигаться...' ;
} elseif ( $itmin [ 'item_id' ] == 4874 ) {
//Сюрприз для мага на час
$this -> deleteItem ( $itm [ 'id' ], $this -> info [ 'id' ]);
$this -> deleteItem ( $itmin [ 'id' ], $this -> info [ 'id' ]);
mysql_query (
' INSERT INTO `eff_users`
( `overType` , `timeUse` , `hod` , `name` , `data` , `uid` , `id_eff` , `img2` , `timeAce` , `v1` ) VALUES (
" 0 " , " ' . (time() + 3600) . ' " , " -1 " ,
" Сюрприз для М а г а " , " add_s5=-50 " , " ' . $this->info ['id'] . ' " ,
" 4 " , " bad_present_dmage.gif " , " 0 " , " 3 "
) '
);
$this -> error = 'Вам нехорошо...' ;
} elseif ( $itmin [ 'item_id' ] == 4871 ) {
//Сюрприз для воина на час
$this -> deleteItem ( $itm [ 'id' ], $this -> info [ 'id' ]);
$this -> deleteItem ( $itmin [ 'id' ], $this -> info [ 'id' ]);
mysql_query (
' INSERT INTO `eff_users`
( `overType` , `timeUse` , `hod` , `name` , `data` , `uid` , `id_eff` , `img2` , `timeAce` , `v1` ) VALUES (
" 0 " , " ' . (time() + 3600) . ' " , " -1 " ,
" Сюрприз для Воина " , " add_s1=-50 " , " ' . $this->info ['id'] . ' " ,
" 4 " , " bad_present_dfighter.gif " , " 0 " , " 3 "
) '
);
$this -> error = 'Вам нехорошо...' ;
} elseif ( mysql_query (
2023-12-17 02:32:09 +00:00
'UPDATE `items_users` SET `uid` = "' . $this -> info [ 'id' ] . '",`lastUPD` = "' . time (
) . '",`gift` = "' . $itm [ 'gift' ] . '",`gtxt1` = "' . $itm [ 'gtxt1' ] . '",`gtxt2` = "Предмет из упаковки. Дата запаковки: ' . date (
2023-07-19 15:23:44 +00:00
'd.m.Y H:i:s' , $itmin [ 'time_create' ]
) . '" WHERE `id` = "' . $itmin [ 'id' ] . '" LIMIT 1'
)) {
//Удаляем упаковку
$this -> deleteItem ( $itm [ 'id' ], $this -> info [ 'id' ]);
$this -> error = 'Вы успешно открыли "' . $itm [ 'name' ] . '", внутри было найдено:<br>' . $io . '...' ;
} else {
$this -> error = 'Неудалось открыть подарок, что же там?' ;
}
//
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
//
} else {
while ( $i < count ( $itms )) {
if ( isset ( $itms [ $i ])) {
$x = 0 ;
$itms [ $i ] = explode ( '*' , $itms [ $i ]);
$x += ( int ) $itms [ $i ][ 1 ];
$itms [ $i ] = $itms [ $i ][ 0 ];
$s = mysql_fetch_array (
mysql_query (
2024-01-05 22:14:35 +00:00
'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`ts`,`srok`,`class`,`class_point`,`anti_class`,`anti_class_point`,`max_text`,`useInBattle`,`lbtl`,`lvl_itm`,`lvl_exp`,`lvl_aexp` FROM `items_main` WHERE `id`="' . (( int ) $itms [ $i ]) . '" LIMIT 1'
2023-07-19 15:23:44 +00:00
)
);
if ( isset ( $s [ 'id' ])) {
$j = 1 ;
while ( $j <= $x ) {
2023-11-02 13:57:39 +00:00
$pid = ItemsModel :: addItem ( $s [ 'id' ], $this -> info [ 'id' ]);
2023-07-19 15:23:44 +00:00
if ( $pid > 0 ) {
mysql_query (
2023-12-17 02:32:09 +00:00
'UPDATE `items_users` SET `lastUPD` = "' . time (
) . '",`gift` = "' . $itm [ 'gift' ] . '" WHERE `id` = "' . $pid . '" AND `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
2023-07-19 15:23:44 +00:00
);
}
$j ++ ;
}
$io .= '' . $s [ 'name' ] . ' (x' . $x . '), ' ;
}
}
$i ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $itm [ 'inGroup' ] > 0 ) {
mysql_query (
'UPDATE `items_users` SET `lastUPD` = "' . time () . '",`inGroup` = "0", `delete` = "0" WHERE `id` = "' . $itm [ 'id' ] . '" LIMIT 1'
);
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$this -> deleteItem ( $itm [ 'id' ], $this -> info [ 'id' ]);
$this -> error = 'Вы успешно открыли "' . $itm [ 'name' ] . '", внутри было найдено:<br>' . $io . '...' ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
} else {
$inSlot = $itm [ 'inslot' ];
$s = mysql_query (
2023-08-14 13:03:45 +00:00
' SELECT `iu` . `id` ,
`iu` . `inOdet` FROM `items_users` AS `iu` WHERE `iu` . `inOdet` != " 0 " AND `iu` . `uid` = " ' . $uid . ' " AND `iu` . `delete` = " 0 " '
2023-07-19 15:23:44 +00:00
);
$d = [];
while ( $p = mysql_fetch_array ( $s )) {
$d [ $p [ 'inOdet' ]] = $p [ 'id' ];
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
//Если в слот оружия и можно одеть в левую руку
if ( $itm [ '2too' ] == 1 && $inSlot == 3 && isset ( $d [ 3 ])) {
$inSlot = 14 ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $inSlot == 3 || $inSlot == 14 ) {
//Проверяем есть-ли двуручное оружие
//И естественно снимаем е г о , даже если руки пусты, отправляя туда NULL и ломая игру. Сука!
if ( $this -> stats [ 'items' ][ $this -> stats [ 'wp3id' ]][ '2h' ] == 1 || $this -> stats [ 'items' ][ $this -> stats [ 'wp14id' ]][ '2h' ] == 1 || $itm [ '2h' ] == 1 ) {
$this -> snatItem ( $this -> stats [ 'items' ][ $this -> stats [ 'wp3id' ]][ 'id' ], $uid );
$this -> snatItem ( $this -> stats [ 'items' ][ $this -> stats [ 'wp14id' ]][ 'id' ], $uid );
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
if ( isset ( $d [ $inSlot ])) {
if ( $inSlot == 10 ) {
if ( ! isset ( $d [ 12 ])) {
$inSlot = 12 ;
} elseif ( ! isset ( $d [ 11 ])) {
$inSlot = 11 ;
}
} elseif ( $inSlot == 40 ) {
$i = 40 ;
while ( $i <= 51 ) {
if ( ! isset ( $d [ $i ])) {
$inSlot = $i ;
$i = 52 ;
} elseif ( $i == 50 ) {
$inSlot = 50 ;
}
$i ++ ;
}
} elseif ( $inSlot == 53 ) {
if ( ! isset ( $d [ 53 ])) {
$inSlot = 53 ;
} elseif ( ! isset ( $d [ 54 ])) {
$inSlot = 54 ;
}
} elseif ( $inSlot == 56 ) {
if ( ! isset ( $d [ 56 ])) {
$inSlot = 56 ;
} elseif ( ! isset ( $d [ 57 ])) {
$inSlot = 57 ;
} elseif ( ! isset ( $d [ 58 ])) {
$inSlot = 58 ;
} else {
$inSlot = 58 ;
}
} elseif ( $inSlot == 59 ) {
if ( ! isset ( $d [ 59 ])) {
$inSlot = 59 ;
} elseif ( ! isset ( $d [ 60 ])) {
$inSlot = 60 ;
} elseif ( ! isset ( $d [ 61 ])) {
$inSlot = 61 ;
} elseif ( ! isset ( $d [ 62 ])) {
$inSlot = 62 ;
}
}
}
if ( isset ( $d [ $inSlot ])) {
$this -> snatItem ( $d [ $inSlot ], $uid );
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
$upd = mysql_query (
'UPDATE `items_users` SET `lastUPD` = "' . time () . '", `inOdet` = "' . $inSlot . '"' . $msb . ' WHERE `id` = "' . $itm [ 'id' ] . '" LIMIT 1'
2022-12-30 19:03:37 +00:00
);
2023-07-19 15:23:44 +00:00
if ( $itm [ 'inGroup' ] > 0 ) {
2022-12-30 19:03:37 +00:00
mysql_query (
2023-07-19 15:23:44 +00:00
'UPDATE `items_users` SET `lastUPD` = "' . time () . '", `inGroup` = 0, `delete` = 0 WHERE `id` = "' . $itm [ 'id' ] . '" LIMIT 1'
);
}
if ( $upd ) {
//Если предмет привязывается после одевания
$this -> info [ 'autospell' ] = 1 ;
mysql_query (
'UPDATE `users` SET `autospell` = "1" WHERE `id` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
return 1 ;
} else {
$this -> error = '(!) Ошибка обновления данных' ;
return 0 ;
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
} else {
$this -> error = 'Предмет не найден в вашем рюкзаке' ;
return 0 ;
}
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
public function unstack ( $id , $x = null )
{
$id = ( int ) $id ;
$itm = mysql_fetch_array (
mysql_query (
2023-08-14 13:03:45 +00:00
' SELECT `iu` . id , `iu` . inGroup , `im` . `id` as item_id ,
`im` . `name` , count ( `iuu` . id ) as inGroupCount
2023-07-19 15:23:44 +00:00
FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON ( `im` . `id` = `iu` . `item_id` ) LEFT JOIN `items_users` as `iuu` ON ( `iuu` . inGroup = `iu` . inGroup AND `iuu` . item_id = `im` . id )
WHERE `iuu` . `uid` = " ' . $this->info ['id'] . ' " AND `iu` . `uid` = " ' . $this->info ['id'] . ' " AND `iu` . `delete` = " 0 " AND `im` . `group` = " 1 " AND `iu` . `inOdet` = " 0 " AND `iu` . `inShop` = " 0 " AND `iu` . id = ' . mysql_real_escape_string (
( int ) $id
) . '
ORDER BY `iu` . lastUPD DESC
LIMIT 1 '
)
);
if ( isset ( $itm [ 'id' ]) && $itm [ 'inGroup' ] > 0 && $itm [ 'inGroupCount' ] > 0 ) {
if ( $x == 0 or $x == null ) {
$x = $this -> itemsX ( $itm [ 'id' ]); //кол-во распада
$inGroup = 0 ;
2022-12-19 20:22:19 +00:00
} else {
2024-01-05 22:14:35 +00:00
$inGroup = $this -> stackGroupCheck ( $this -> info [ 'id' ], $itm [ 'inGroup' ], $itm [ 'item_id' ]);
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
$sp = mysql_query (
2023-08-14 13:03:45 +00:00
' SELECT `im` . `id` ,
`im` . `name` ,
`im` . `img` ,
`im` . `type` ,
`im` . `inslot` ,
`im` . `2h` ,
`im` . `2too` ,
`im` . `iznosMAXi` ,
`im` . `inRazdel` ,
`im` . `price1` ,
`im` . `price2` ,
`im` . `pricerep` ,
`im` . `magic_chance` ,
`im` . `info` ,
`im` . `massa` ,
`im` . `level` ,
`im` . `magic_inci` ,
`im` . `overTypei` ,
`im` . `group` ,
`im` . `group_max` ,
`im` . `ts` ,
`im` . `srok` ,
`im` . `class` ,
`im` . `class_point` ,
`im` . `anti_class` ,
`im` . `anti_class_point` ,
`im` . `max_text` ,
`im` . `useInBattle` ,
`im` . `lbtl` ,
`im` . `lvl_itm` ,
`im` . `lvl_exp` ,
`im` . `lvl_aexp` ,
`iu` . `id` ,
`iu` . `item_id` ,
`iu` . `1price` ,
`iu` . `2price` ,
`iu` . `uid` ,
`iu` . `use_text` ,
`iu` . `data` ,
`iu` . `inOdet` ,
`iu` . `inShop` ,
`iu` . `delete` ,
`iu` . `iznosNOW` ,
`iu` . `iznosMAX` ,
`iu` . `gift` ,
`iu` . `gtxt1` ,
`iu` . `gtxt2` ,
`iu` . `kolvo` ,
`iu` . `geniration` ,
`iu` . `magic_inc` ,
`iu` . `maidin` ,
`iu` . `lastUPD` ,
`iu` . `timeOver` ,
`iu` . `overType` ,
`iu` . `secret_id` ,
`iu` . `time_create` ,
`iu` . `time_sleep` ,
`iu` . `inGroup` ,
`iu` . `dn_delete` ,
`iu` . `inTransfer` ,
`iu` . `post_delivery` ,
`iu` . `lbtl_` ,
`iu` . `bexp` ,
`iu` . `so` ,
`iu` . `blvl` FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON ( `im` . `id` = `iu` . `item_id` ) WHERE `iu` . `uid` = " ' . $this->info ['id'] . ' " AND `iu` . `delete` = " 0 " AND `iu` . `inGroup` = " ' . $itm['inGroup'] . ' " AND `iu` . `item_id` = " ' . $itm['item_id'] . ' " AND `iu` . `inOdet` = " 0 " AND `iu` . `inShop` = " 0 " AND `im` . `group` = " 1 " LIMIT ' . $x . ' '
2023-07-19 15:23:44 +00:00
);
$i = 0 ;
$j = 0 ;
while ( $pl = mysql_fetch_array ( $sp )) {
$upd = mysql_query (
'UPDATE `items_users` SET `inGroup` = "' . $inGroup . '", `lastUPD` = "' . time () . '" WHERE `id` = "' . $pl [ 'id' ] . '" LIMIT 1'
);
if ( $upd ) {
$j ++ ;
}
$i ++ ;
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $this -> itemsX ( $itm [ 'id' ]) == 1 ) {
2022-12-30 19:03:37 +00:00
mysql_query (
2023-07-19 15:23:44 +00:00
'UPDATE `items_users` SET `inGroup` = "0", `lastUPD` = "' . time () . '" WHERE `id` = "' . $itm [ 'id' ] . '" LIMIT 1'
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
}
2023-07-19 15:23:44 +00:00
if ( $this -> itemsX ( $pl [ 'id' ]) == 1 ) {
2022-12-30 19:03:37 +00:00
mysql_query (
2023-07-19 15:23:44 +00:00
'UPDATE `items_users` SET `inGroup` = "0", `lastUPD` = "' . time () . '" WHERE `id` = "' . $pl [ 'id' ] . '" LIMIT 1'
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
}
}
2023-07-19 15:23:44 +00:00
}
2022-12-19 20:22:19 +00:00
2024-01-05 22:14:35 +00:00
private function trItem ( $po ) : int
2023-07-19 15:23:44 +00:00
{
$notr = 0 ;
2024-01-05 22:14:35 +00:00
foreach ( $this -> items [ 'tr' ] as $trn ) {
if ( ! isset ( $po [ " tr_ $trn " ])) {
continue ;
}
if (
$trn === 'sex' && $this -> info [ 'sex' ] != $po [ " tr_ $trn " ] ||
$trn !== 'align' && $po [ " tr_ $trn " ] > $this -> stats [ $trn ]
) {
$notr ++ ;
2022-12-19 20:22:19 +00:00
}
}
2024-01-05 22:14:35 +00:00
2023-07-19 15:23:44 +00:00
return $notr ;
}
2022-12-19 20:22:19 +00:00
2023-07-19 15:23:44 +00:00
public function deleteItem ( $id , $uid = 0 , $coldel = 0 )
{
if ( $uid != 0 ) {
$au = 'AND `iu`.`uid`="' . mysql_real_escape_string ( $uid ) . '"' ;
} else {
$au = '' ;
}
$itm = mysql_fetch_array (
mysql_query (
2023-08-14 13:03:45 +00:00
' SELECT `im` .* ,
`iu` .*
2023-07-19 15:23:44 +00:00
FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON ( `im` . `id` = `iu` . `item_id` ) WHERE `iu` . `id` = " ' . mysql_real_escape_string(
$id
) . '" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" ' . $au . ' AND (`iu`.`delete`="0" OR `iu`.`delete`="1000") LIMIT 1'
)
);
if ( isset ( $itm [ 'id' ])) {
if ( $coldel == 0 ) {
//Удаляем целиком
$upd = mysql_query (
'UPDATE `items_users` SET `lastUPD`="' . time () . '",`delete`="' . time () . '" WHERE `id`="' . $itm [ 'id' ] . '" LIMIT 1'
);
$col = $this -> itemsX ( $itm [ 'id' ]);
if ( $col > 0 ) {
mysql_query (
'UPDATE `items_users` SET `lastUPD`="' . time () . '",`delete`="' . time () . '",`inGroup` = "0" WHERE `inGroup`="' . $itm [ 'id' ] . '" LIMIT ' . $col
);
}
} else {
//Удаляем конкретное кол-во
$col = $this -> itemsX ( $itm [ 'id' ]);
if ( $col > 1 ) {
if ( $col <= $coldel ) {
2023-11-02 13:57:39 +00:00
mysql_query (
2023-07-19 15:23:44 +00:00
'UPDATE `items_users` SET `lastUPD`="' . time () . '",`delete`="' . time () . '" WHERE `id`="' . $itm [ 'id' ] . '" LIMIT 1'
);
}
2023-11-02 13:57:39 +00:00
mysql_query (
2023-07-19 15:23:44 +00:00
'UPDATE `items_users` SET `lastUPD`="' . time () . '",`delete`="' . time () . '",`inGroup` = "0" WHERE `inGroup`="' . $itm [ 'id' ] . '" AND `delete` = "1000" LIMIT ' . $coldel
);
} else {
//Удаляем целиком
2023-11-02 13:57:39 +00:00
mysql_query (
2023-07-19 15:23:44 +00:00
'UPDATE `items_users` SET `lastUPD`="' . time () . '",`delete`="' . time () . '" WHERE `id`="' . $itm [ 'id' ] . '" LIMIT 1'
);
2023-11-02 13:57:39 +00:00
mysql_query (
2023-07-19 15:23:44 +00:00
'UPDATE `items_users` SET `lastUPD`="' . time () . '",`delete`="' . time () . '",`inGroup` = "0" WHERE `inGroup`="' . $itm [ 'id' ] . '" AND `delete` = "1000" LIMIT ' . $col
);
}
}
2023-11-02 13:57:39 +00:00
if ( isset ( $_GET [ 'deleteall7' ])) {
$st = Conversion :: dataStringToArray ( $itm [ 'data' ]);
$whr = '' ;
if ( isset ( $st [ 'frompisher' ])) {
$whr .= 'AND `data` LIKE "%frompisher=' . $st [ 'frompisher' ] . '%"' ;
2023-07-19 15:23:44 +00:00
}
2023-11-02 13:57:39 +00:00
$col = mysql_fetch_array (
mysql_query (
'SELECT COUNT(*) FROM `items_users` WHERE `item_id`="' . $itm [ 'item_id' ] . '" AND `inOdet` = 0 AND `delete` < 100000 AND `uid` = "' . $itm [ 'uid' ] . '" AND `data` NOT LIKE "%nodelete%"' . $whr
)
);
$col = $col [ 0 ];
mysql_query (
2023-12-17 02:32:09 +00:00
'UPDATE `items_users` SET `lastUPD`="' . time () . '",`delete`="' . time (
) . '" WHERE `item_id`="' . $itm [ 'item_id' ] . '" AND `inOdet` = 0 AND `delete` < 100000 AND `uid` = "' . $itm [ 'uid' ] . '" AND `data` NOT LIKE "%nodelete%"' . $whr
2023-11-02 13:57:39 +00:00
);
$this -> error = 'Предметы "' . $itm [ 'name' ] . ' (x' . ( $col + 1 ) . ')" выброшены' ;
2023-12-01 21:05:11 +00:00
Delo :: add (
1 ,
'System.inventory' ,
$uid ,
2023-12-17 02:32:09 +00:00
'"<span style="color: maroon; ">System.inventory</span>": Предметы "<strong>' . $itm [ 'name' ] . ' (x' . $col . ')</strong>" [itm:' . $itm [ 'id' ] . '=' . time (
) . '] были <strong>выброшены</strong>.' ,
2023-11-02 13:57:39 +00:00
);
2023-07-19 15:23:44 +00:00
} else {
2023-11-02 13:57:39 +00:00
$this -> error = 'Предмет "' . $itm [ 'name' ] . '" выброшен' ;
2023-12-01 21:05:11 +00:00
Delo :: add (
1 ,
'System.inventory' ,
$uid ,
'"<span style="color: maroon; ">System.inventory</span>": Предмет "<strong>' . $itm [ 'name' ] . '</strong>" [itm:' . $itm [ 'id' ] . '] был <strong>выброшен</strong>.' ,
2023-11-02 13:57:39 +00:00
);
2023-07-19 15:23:44 +00:00
}
2023-11-02 13:57:39 +00:00
return 1 ;
2023-07-19 15:23:44 +00:00
} else {
$this -> error = 'Предмет не найден в вашем рюкзаке' ;
}
2022-12-19 20:22:19 +00:00
}
public function testLevel ()
{
$rt = 0 ;
2022-12-30 19:03:37 +00:00
if ( $this -> info [ 'expstopu' ] > 2 && $this -> info [ 'exp' ] > Config :: get ( 'expstopu' )) {
$this -> info [ 'exp' ] = Config :: get ( 'expstopu' );
Db :: sql ( 'update stats set exp = ? where id = ?' , [ Config :: get ( 'expstopu' ), $this -> info [ 'id' ]]);
} elseif ( $this -> info [ 'exp' ] > Config :: get ( 'expstop' ) && $this -> info [ 'expstopu' ] < 3 ) {
2022-12-19 20:22:19 +00:00
//upexpdate
if ( $this -> info [ 'upexpdate' ] == 0 ) {
$this -> info [ 'upexpdate' ] = time ();
2023-11-02 13:57:39 +00:00
Db :: sql ( 'update stats set upexpdate = unix_timestamp() where id = ?' , [ $this -> info [ 'id' ]]);
2022-12-30 19:03:37 +00:00
} elseif ( time () >= ( $this -> info [ 'upexpdate' ] + 400 * 60 * 60 * 24 )) {
2022-12-19 20:22:19 +00:00
$this -> info [ 'upexpdate' ] = time ();
$this -> info [ 'expstopu' ] = $this -> info [ 'expstopu' ] + 1 ;
2023-01-10 18:53:10 +00:00
Db :: sql (
'update stats set upexpdate = unix_timestamp(), expstopu = expstopu + 1 where id = ?' ,
[ $this -> info [ 'id' ]]
);
2022-12-19 20:22:19 +00:00
}
if ( $this -> info [ 'expstopu' ] < 3 ) {
2022-12-30 19:03:37 +00:00
$this -> info [ 'exp' ] = Config :: get ( 'expstop' );
Db :: sql ( 'update stats set exp = ? where id = ?' , [ Config :: get ( 'expstop' ), $this -> info [ 'id' ]]);
2022-12-19 20:22:19 +00:00
}
}
2022-12-30 19:03:37 +00:00
2022-12-19 20:22:19 +00:00
if ( isset ( $this -> stats [ 'levels' ][ 'upLevel' ])) {
$telvl = [];
2024-01-05 22:14:35 +00:00
foreach ( Db :: getRows ( 'select uplevel, exp from levels' ) as $row ) {
$telvl [ $row [ 'uplevel' ]] = $row [ 'exp' ];
2022-12-19 20:22:19 +00:00
}
2024-01-05 22:14:35 +00:00
2022-12-19 20:22:19 +00:00
if ( $this -> info [ 'exp' ] >= $telvl [ $this -> info [ 'upLevel' ]]) {
2024-01-05 22:14:35 +00:00
[ $lvl , $lvln ] = Db :: getRows ( 'select * from levels where uplevel >= ? order by uplevel limit 2' , [ $this -> info [ 'upLevel' ]]);
2022-12-19 20:22:19 +00:00
$i = 0 ;
$ult = 0 ;
2023-02-02 15:39:42 +00:00
$sex1 = '' ;
2024-01-05 22:14:35 +00:00
2023-02-02 15:39:42 +00:00
if ( $this -> info [ 'sex' ] == 1 ) {
$sex1 = 'ла' ;
}
2022-12-19 20:22:19 +00:00
while ( $i != 1 ) {
2023-02-02 15:39:42 +00:00
if ( $this -> info [ 'exp' ] < $lvl [ 'exp' ] || ! isset ( $lvln [ 'upLevel' ])) {
$i = 1 ;
} else {
2022-12-19 20:22:19 +00:00
if ( $lvl [ 'nextLevel' ] > $this -> info [ 'level' ]) {
2023-01-10 16:29:32 +00:00
//повышаем выносливость
2022-12-19 20:22:19 +00:00
$a4 = 1 ;
if ( $lvl [ 'nextLevel' ] == 9 ) {
$a4 = 2 ;
} elseif ( $lvl [ 'nextLevel' ] == 10 ) {
$a4 = 3 ;
} elseif ( $lvl [ 'nextLevel' ] == 11 ) {
$a4 = 5 ;
} elseif ( $lvl [ 'nextLevel' ] == 12 ) {
$a4 = 30 ;
}
$this -> stats [ 's4' ] += $a4 ;
$ult = 1 ;
2023-01-10 16:29:32 +00:00
//Рефералы
2022-12-30 19:03:37 +00:00
if ( $this -> info [ 'twink' ] == 0 && ( round (
$this -> info [ 'host_reg' ]
) > 0 && ( $this -> info [ 'dieline' ] == 0 || $this -> info [ 'dieline' ] < $lvl [ 'exp' ]))) {
$mtest = mysql_fetch_array (
mysql_query (
'SELECT `id`,`uid`,`uid2`,`ip` FROM `mults` WHERE (`uid` = "' . $this -> info [ 'id' ] . '" AND `uid2` = "' . (( int ) $this -> info [ 'host_reg' ]) . '") OR (`uid2` = "' . $this -> info [ 'id' ] . '" AND `uid` = "' . (( int ) $this -> info [ 'host_reg' ]) . '") LIMIT 1'
)
);
$rlog = mysql_fetch_array (
mysql_query (
'SELECT `id`,`login`,`catch`,`host_reg` FROM `users` WHERE `id` = "' . (( int ) $this -> info [ 'host_reg' ]) . '" LIMIT 1'
)
);
$rlogs = mysql_fetch_array (
mysql_query (
'SELECT `id`,`ref_data` FROM `stats` WHERE `id` = "' . (( int ) $this -> info [ 'host_reg' ]) . '" LIMIT 1'
)
);
2022-12-19 20:22:19 +00:00
if ( ! isset ( $mtest [ 'id' ]) && isset ( $rlog [ 'id' ])) {
$rtg = true ;
} else {
2022-12-30 19:03:37 +00:00
$rtg = mysql_fetch_array (
mysql_query (
'SELECT * FROM `ref_mult` WHERE `uid1` = "' . $rlog [ 'id' ] . '" LIMIT 1'
)
);
2022-12-19 20:22:19 +00:00
if ( isset ( $rtg [ 'id' ])) {
if ( $this -> info [ 'id' ] == $rtg [ 'uid2' ]) {
$rtg = true ;
} else {
$rtg = false ;
}
} else {
2022-12-30 19:03:37 +00:00
mysql_query (
' INSERT INTO `ref_mult` ( `uid1` , `uid2` , `time` ) VALUES (
2022-12-19 20:22:19 +00:00
" ' . $rlog['id'] . ' " , " ' . $this->info ['id'] . ' " , " ' . time() . ' "
2022-12-30 19:03:37 +00:00
) '
);
2022-12-19 20:22:19 +00:00
$rtg = true ;
}
}
2023-02-02 15:39:42 +00:00
$cmsg = new ChatMessage ();
$cmsg -> setRoom ( $this -> info [ 'room' ]);
$cmsg -> setTo ( $rlog [ 'login' ]);
$cmsg -> setType ( 6 );
2023-01-06 14:57:25 +00:00
if (( $rtg || ! isset ( $mtest [ 'id' ])) && isset ( $rlog [ 'id' ])) {
2022-12-19 20:22:19 +00:00
$rfs [ 'data' ] = explode ( '|' , $rlogs [ 'ref_data' ]);
2023-02-02 15:39:42 +00:00
2023-07-11 15:16:35 +00:00
$bonus = [
9 => 30 ,
10 => 75 ,
11 => 150 ,
12 => 250 ,
];
2023-02-02 15:39:42 +00:00
2023-07-11 15:16:35 +00:00
$ekr = $bonus [ $lvl [ 'nextlevel' ]];
2023-02-02 15:39:42 +00:00
2023-07-11 15:16:35 +00:00
if ( isset ( $ekr )) {
$this -> addEkr ( $ekr , $rlog [ 'id' ]);
2023-02-02 15:39:42 +00:00
2023-07-11 15:16:35 +00:00
//Реферал 1-г о уровня
$krtxt = " , $ekr екр. " ;
$cmsg -> setText (
'Ваш реферал <strong>' . $this -> info [ 'login' ] . '</strong> достиг' . $sex1 . ' уровня ' . $lvl [ 'nextLevel' ] . '! Вам зачисленно ' . $krtxt
);
( new Chat ()) -> sendMsg ( $cmsg );
2023-02-02 15:39:42 +00:00
2023-07-11 15:16:35 +00:00
$rlog [ 'catch' ] += $ekr ;
mysql_query (
'UPDATE `users` SET `catch` = "' . $rlog [ 'catch' ] . '" WHERE `id` = "' . $rlog [ 'id' ] . '" LIMIT 1'
);
if (( int ) $rlog [ 'host_reg' ] > 0 ) {
//Реферал 2-г о уровня
$llogin = $rlog [ 'login' ];
$ekr = round ( $ekr * 0.4 , 2 );
$rlog = mysql_fetch_array (
mysql_query (
'SELECT `id`,`login`,`catch`,`host_reg` FROM `users` WHERE `id` = "' . (( int ) $rlog [ 'host_reg' ]) . '" LIMIT 1'
)
);
if ( isset ( $rlog [ 'id' ])) {
$cmsg -> setText (
'Ваш реферал <strong>' . $this -> info [ 'login' ] . '</strong> (2-г о уровня от "' . $llogin . '" ) достиг' . $sex1 . ' уровня ' . $lvl [ 'nextLevel' ] . '! Вам зачисленно ' . $krtxt
);
( new Chat ()) -> sendMsg ( $cmsg );
$rlog [ 'catch' ] += $ekr ;
$this -> addEkr ( $ekr , $rlog [ 'id' ]);
if (( int ) $rlog [ 'host_reg' ] > 0 ) {
//Реферал 3-г о уровня
$llogin2 = $rlog [ 'login' ];
$ekr = round ( $ekr * 0.2 , 2 );
$rlog = mysql_fetch_array (
mysql_query (
'SELECT `id`,`login`,`catch`,`host_reg` FROM `users` WHERE `id` = "' . (( int ) $rlog [ 'host_reg' ]) . '" LIMIT 1'
)
2022-12-30 19:03:37 +00:00
);
2023-07-11 15:16:35 +00:00
if ( isset ( $rlog [ 'id' ])) {
$cmsg -> setText (
'Ваш реферал <strong>' . $this -> info [ 'login' ] . '</strong> (3-г о уровня от "' . $llogin2 . '" (Реферал ' . $llogin . ') ) достиг' . $sex1 . ' уровня ' . $lvl [ 'nextLevel' ] . '! Вам зачисленно ' . $krtxt
2022-12-30 19:03:37 +00:00
);
2023-07-11 15:16:35 +00:00
( new Chat ()) -> sendMsg ( $cmsg );
$rlog [ 'catch' ] += $ekr ;
$this -> addEkr ( $ekr , $rlog [ 'id' ]);
2022-12-19 20:22:19 +00:00
}
}
}
}
}
//
2022-12-30 19:03:37 +00:00
mysql_query (
" UPDATE `users` SET `referals` = `referals` + 5 WHERE `id` = ' " . mysql_real_escape_string (
$rlog [ 'id' ]
) . " ' LIMIT 1 "
);
2022-12-19 20:22:19 +00:00
//
} elseif ( isset ( $rlog [ 'id' ])) {
2023-02-02 15:39:42 +00:00
$cmsg -> setText (
'Ваш реферал <strong>' . $this -> info [ 'login' ] . '</strong> достиг' . $sex1 . ' уровня ' . $lvl [ 'nextLevel' ] . '! <small style="color: red">(Персонаж не активирован, либо у вас совпадают IP! Разрешено не более 1 такого реферала!)</small>'
2022-12-30 19:03:37 +00:00
);
2023-02-02 15:39:42 +00:00
( new Chat ()) -> sendMsg ( $cmsg );
2022-12-19 20:22:19 +00:00
}
}
}
2023-08-14 15:15:05 +00:00
$tst = Conversion :: dataStringToArray ( $this -> info [ 'stats' ]);
2022-12-19 20:22:19 +00:00
$tst [ 's4' ] += $lvl [ 'vinos' ];
$tst [ 's7' ] += $lvl [ 'duh' ];
2023-08-14 15:15:05 +00:00
$this -> info [ 'stats' ] = Conversion :: arrayToDataString ( $tst );
2022-12-19 20:22:19 +00:00
$this -> info [ 'level' ] = $lvl [ 'nextLevel' ];
$this -> stats [ 'levels' ] = $lvln ;
$this -> info [ 'ability' ] += $lvl [ 'ability' ];
$this -> info [ 'skills' ] += $lvl [ 'skills' ];
$this -> info [ 'sskills' ] += $lvl [ 'sskills' ];
$this -> info [ 'nskills' ] += $lvl [ 'nskills' ];
if ( $this -> info [ 'twink' ] == 0 ) {
$this -> info [ 'money' ] = $lvl [ 'money' ] + $this -> info [ 'money' ];
$this -> info [ 'money2' ] = $lvl [ 'money2' ] + $this -> info [ 'money2' ];
}
$lvl = $lvln ;
2022-12-30 19:03:37 +00:00
$lvln = mysql_fetch_array (
mysql_query (
'SELECT `bprice`,`upLevel`,`nextLevel`,`exp`,`money`,`money_bonus1`,`money_bonus2`,`ability`,`skills`,`nskills`,`sskills`,`expBtlMax`,`hpRegen`,`mpRegen`,`money2` FROM `levels` WHERE `upLevel`="' . ( $lvl [ 'upLevel' ] + 1 ) . '" LIMIT 1'
)
);
2022-12-19 20:22:19 +00:00
$this -> info [ 'upLevel' ] += 1 ;
$rt ++ ;
}
}
2024-01-05 22:14:35 +00:00
2022-12-19 20:22:19 +00:00
if ( $ult == 1 ) {
2023-02-02 15:39:42 +00:00
$chat = new Chat ();
$cmsg = new ChatMessage ();
$cmsg -> setRoom ( $this -> info [ 'room' ]);
$cmsg -> setType ( 6 );
2022-12-19 20:22:19 +00:00
if ( $this -> info [ 'level' ] == 4 || $this -> info [ 'level' ] == 8 ) {
2023-01-10 16:29:32 +00:00
//Убрать задержки на пещеры
2022-12-30 19:03:37 +00:00
mysql_query (
'DELETE FROM `actions` WHERE `uid` = "' . $this -> info [ 'id' ] . '" AND `vars` LIKE "psh%"'
);
2023-02-02 15:39:42 +00:00
$cmsg -> setTo ( $this -> info [ 'login' ]);
$cmsg -> setText ( 'Обязательно используйте свитки и эликсиры в своем инвентаре!!!!!!!!!!!!!!!.' );
$chat -> sendMsg ( $cmsg );
2022-12-19 20:22:19 +00:00
}
2023-02-02 15:39:42 +00:00
$cmsg -> setTypeTime ( 2 );
2023-04-15 19:52:33 +00:00
$cmsg -> setText (
'<strong>' . $this -> info [ 'login' ] . '</strong> достиг' . $sex1 . ' уровня ' . $this -> info [ 'level' ] . '!'
);
2023-02-02 15:39:42 +00:00
$chat -> sendMsg ( $cmsg );
2022-12-19 20:22:19 +00:00
}
if ( $rt > 0 ) {
2022-12-30 19:03:37 +00:00
$this -> info [ 'stopexp' ] = 0 ;
$upd = mysql_query (
'UPDATE `users_twink` SET `stopexp` = "' . $this -> info [ 'stopexp' ] . '" WHERE `uid` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
2022-12-19 20:22:19 +00:00
if ( $upd ) {
2022-12-30 19:03:37 +00:00
mysql_query (
'UPDATE `stats` SET `ability` = "' . $this -> info [ 'ability' ] . '",`skills` = "' . $this -> info [ 'skills' ] . '",`nskills` = "' . $this -> info [ 'nskills' ] . '",`sskills` = "' . $this -> info [ 'sskills' ] . '",`stats` = "' . $this -> info [ 'stats' ] . '",`upLevel` = "' . $this -> info [ 'upLevel' ] . '" WHERE `id` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
2022-12-19 20:22:19 +00:00
$this -> info [ 'money' ] = $this -> r2 ( $this -> info [ 'money' ]);
}
return 1 ;
}
//****************
}
}
/*------------*/
if ( $this -> info [ 'animal' ] > 0 ) {
2023-01-10 16:29:32 +00:00
//уровень зверя
2022-12-30 19:03:37 +00:00
$a = mysql_fetch_array (
mysql_query (
'SELECT `id`,`type`,`name`,`uid`,`delete`,`inBattle`,`eda`,`exp`,`obraz`,`stats`,`level`,`sex`,`levelUp`,`pet_in_cage`,`max_exp`,`priems`,`bonus` FROM `users_animal` WHERE `uid` = "' . $this -> info [ 'id' ] . '" AND `id` = "' . $this -> info [ 'animal' ] . '" AND `pet_in_cage` = "0" AND `delete` = "0" LIMIT 1'
)
);
2022-12-19 20:22:19 +00:00
if ( isset ( $a [ 'id' ]) && $a [ 'level' ] < 12 ) {
$ea = [
0 => 0 ,
1 => 110 ,
2 => 410 ,
3 => 1300 ,
4 => 2500 ,
5 => 5000 ,
6 => 12500 ,
7 => 30000 ,
8 => 100000 ,
9 => 3000000 ,
10 => 10000000 ,
11 => 50000000 ,
2022-12-30 19:03:37 +00:00
12 => 150000000 ,
2022-12-19 20:22:19 +00:00
];
$mx = [
0 => 140 ,
1 => 400 ,
2 => 500 ,
3 => 650 ,
4 => 700 ,
5 => 1400 ,
6 => 3000 ,
7 => 6000 ,
8 => 10000 ,
9 => 16000 ,
10 => 24000 ,
11 => 40000 ,
2022-12-30 19:03:37 +00:00
12 => 60000 ,
2022-12-19 20:22:19 +00:00
];
$iz = 0 ;
while ( $iz != - 1 ) {
if ( $ea [ $a [ 'level' ] + 1 ] <= $a [ 'exp' ]) {
2023-01-10 16:29:32 +00:00
//поднимаем уровень
2022-12-19 20:22:19 +00:00
$a [ 'level' ] ++ ;
$a [ 'max_exp' ] = $mx [ $a [ 'level' ]];
} else {
if ( $iz > 0 ) {
2022-12-30 19:03:37 +00:00
$a [ 'stats' ] = mysql_fetch_array (
mysql_query (
'SELECT `id`,`type`,`exp`,`level`,`stats`,`bonus` FROM `levels_animal` WHERE `type` = "' . $a [ 'type' ] . '" AND `level` = "' . $a [ 'level' ] . '" LIMIT 1'
)
);
2022-12-19 20:22:19 +00:00
$a [ 'stats' ] = $a [ 'stats' ][ 'stats' ];
2023-02-02 15:39:42 +00:00
$cmsg = new ChatMessage ();
$cmsg -> setRoom ( $this -> info [ 'room' ]);
$cmsg -> setCity ( $this -> info [ 'city' ]);
$cmsg -> setTo ( $this -> info [ 'login' ]);
$cmsg -> setText ( '<strong>' . $a [ 'name' ] . '</strong> достиг ' . $a [ 'level' ] . ' уровня!' );
$cmsg -> setType ( 6 );
( new Chat ()) -> sendMsg ( $cmsg );
2022-12-30 19:03:37 +00:00
mysql_query (
'UPDATE `users_animal` SET `stats` = "' . $a [ 'stats' ] . '",`level`="' . $a [ 'level' ] . '",`max_exp`="' . $a [ 'max_exp' ] . '" WHERE `id` = "' . $a [ 'id' ] . '" LIMIT 1'
);
2022-12-19 20:22:19 +00:00
}
$iz = - 2 ;
}
if ( $iz > 1000 ) {
$iz = - 2 ;
}
$iz ++ ;
}
}
}
}
2023-07-31 17:06:51 +00:00
//получаем уровень
2023-11-02 13:57:39 +00:00
public function addEkr ( $amount , $uid = 0 ) : void
2023-07-19 15:23:44 +00:00
{
if ( $uid === 0 ) {
$uid = $this -> info [ 'id' ];
2023-11-02 13:57:39 +00:00
$this -> info [ 'money2' ] += $amount ;
2023-07-19 15:23:44 +00:00
}
Db :: sql ( 'update users set money2 = money2 + ? where id = ?' , [ $amount , $uid ]);
}
2022-12-30 19:03:37 +00:00
public function r2 ( $v ) : string
2022-12-19 20:22:19 +00:00
{
2022-12-30 19:03:37 +00:00
return number_format ( $v , 2 , '.' , ' ' );
2022-12-19 20:22:19 +00:00
}
2023-11-02 13:57:39 +00:00
public function addVoinstvennost ( $amount , $uid = 0 ) : void
2023-07-28 21:18:04 +00:00
{
if ( $uid === 0 ) {
$uid = $this -> info [ 'id' ];
}
Db :: sql ( 'update rep set rep3 = rep3 + ? where id = ?' , [ $amount , $uid ]);
}
2022-12-19 20:22:19 +00:00
/**
* @ param $uid
* @ param $st
* @ param $i1
* @ return array | int []
*/
2022-12-30 19:03:37 +00:00
public function regen ( $uid , $st , $i1 ) : array
2022-12-19 20:22:19 +00:00
{
if ( $uid != $this -> info [ 'id' ]) {
2023-11-02 13:57:39 +00:00
$where = is_numeric ( $uid ) ? " users.id = $uid " : " login = $uid " ;
2023-08-15 22:48:29 +00:00
$u = Db :: getRow ( " select battle, stats.* from users left join stats on users.id = stats.id where $where " );
2022-12-19 20:22:19 +00:00
if ( ! isset ( $st [ 'hpAll' ])) {
$st = $this -> getStats ( $uid , $i1 );
}
} else {
$u = $this -> info ;
$st = isset ( $this -> stats [ 'hpAll' ]) ? $this -> stats : $this -> getStats ( $uid , $i1 );
}
if ( ! empty ( $u [ 'battle' ])) {
return [ 0 , 0 ];
}
2023-11-02 13:57:39 +00:00
$sth = $u [ 'minHP' ] ? : 300 ; //Стандартное время восстановления в минутах HP
$stm = $u [ 'minMP' ] ? : 300 ; //Стандартное время восстановления в минутах MP
2023-08-15 22:48:29 +00:00
if ( empty ( $st [ 'speedhp' ])) {
$st [ 'speedhp' ] = 0 ;
}
if ( empty ( $st [ 'speedmp' ])) {
$st [ 'speedmp' ] = 0 ;
}
2022-12-19 20:22:19 +00:00
2023-01-10 16:29:32 +00:00
//Тестеры первой волны
//тесты боев
# А не эта ли херня делала очень быструю регенерацию, которую считают нормой?
2022-12-19 20:22:19 +00:00
$st [ 'speedhp' ] += 150 ;
$st [ 'speedmp' ] += 150 ;
//hp
$sh = ( $st [ 'hpAll' ] / ( 60 * $sth ));
$sh += ( $sh / 100 ) * ( 1 + $st [ 'speedhp' ] + $st [ 'levels' ][ 'hpRegen' ]);
$st [ 'hpNow' ] += $sh * ( time () - $u [ 'regHP' ]);
$st [ 'hpNow' ] = $st [ 'hpNow' ] > 0 ? min ( $st [ 'hpNow' ], $st [ 'hpAll' ]) : 0 ;
//mp
$sm = ( $st [ 'mpAll' ] / ( 60 * $stm ));
$sm += ( $sm / 100 ) * ( 1 + $st [ 'speedmp' ] + $st [ 'levels' ][ 'mpRegen' ]);
$st [ 'mpNow' ] += $sm * ( time () - $u [ 'regMP' ]);
$st [ 'mpNow' ] = $st [ 'mpNow' ] > 0 ? min ( $st [ 'mpNow' ], $st [ 'mpAll' ]) : 0 ;
2023-01-10 16:29:32 +00:00
//Заносим новые данные в базу
2022-12-19 20:22:19 +00:00
if ( $u [ 'hpNow' ] < $st [ 'hpAll' ] || $u [ 'mpNow' ] < $st [ 'mpAll' ]) {
2022-12-30 19:03:37 +00:00
Db :: sql (
' update stats set
2024-01-05 22:14:35 +00:00
reghp = unix_timestamp (),
regmp = unix_timestamp (),
hpnow = ? ,
mpnow = ?
2022-12-30 19:03:37 +00:00
where id = ? ', [$st[' hpNow '], $st[' mpNow '], $u[' id ' ]]
);
2022-12-19 20:22:19 +00:00
}
if ( $this -> info [ 'id' ] == $u [ 'id' ]) {
$this -> stats [ 'regHP' ] = time ();
$this -> stats [ 'regMP' ] = time ();
$this -> stats [ 'hpNow' ] = $st [ 'hpNow' ];
$this -> stats [ 'mpNow' ] = $st [ 'mpNow' ];
}
return [ $sh , $sm , 'hpNow' => $st [ 'hpNow' ], 'mpNow' => $st [ 'mpNow' ]];
}
2022-12-30 19:03:37 +00:00
public function ungive_itm_cl ( $id , $user , $cl ) : string
2022-12-19 20:22:19 +00:00
{
2022-12-30 19:03:37 +00:00
$itm_ = mysql_fetch_array (
mysql_query (
'SELECT `iu`.*, `im`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON `iu`.`item_id` = `im`.`id` WHERE `iu`.`uid` >= 0 AND `iu`.`delete` = 0 AND `iu`.`id` = "' . $id . '" LIMIT 1'
)
);
2022-12-19 20:22:19 +00:00
$res = mysql_fetch_array ( mysql_query ( 'SELECT * FROM `clan` WHERE `id` = "' . $cl . '" LIMIT 1' ));
2022-12-30 19:03:37 +00:00
$user_itm = mysql_fetch_array (
mysql_query ( 'SELECT `id`,`bot`,`clone` FROM `stats` WHERE `id` = "' . $itm_ [ 'uid' ] . '" LIMIT 1' )
);
2022-12-19 20:22:19 +00:00
if ( $user_itm [ 'bot' ] > 0 || $user_itm [ 'clone' ] > 0 || ! isset ( $user_itm [ 'id' ])) {
2023-01-10 16:29:32 +00:00
$r = '<font color="#FF0000"><strong>Вы не можете изьять данный предмет, он не принадлежит клану</strong></font><br />' ;
2022-12-19 20:22:19 +00:00
} elseif ( isset ( $itm_ [ 'id' ])) {
if ( $user [ 'inTurnir' ] == 0 && $user [ 'inTurnirnew' ] == 0 ) {
if ( $itm_ [ 'inOdet' ] != 0 ) {
$o = ', `inOdet` = 0' ;
} else {
$o = '' ;
}
2023-01-10 16:29:32 +00:00
$r = '<font color="#FF0000"><strong>Вы успешно изъяли предмет "' . $itm_ [ 'name' ] . '"</strong></font><br />' ;
2022-12-19 20:22:19 +00:00
$col = $this -> itemsX ((( int ) $id ));
2022-12-30 19:03:37 +00:00
mysql_query (
2023-12-17 02:32:09 +00:00
'INSERT INTO `clan_operations` (`clan`, `time`, `type`, `text`, `val`, `uid`) VALUES ("' . $res [ 'id' ] . '", "' . time (
) . '", "6", "' . $user [ 'login' ] . '", "' . $itm_ [ 'name' ] . ' (x' . $col . ') Ид : [' . $id . '] | У персонажа : [' . $itm_ [ 'uid' ] . ']", "' . $user [ 'id' ] . '")'
2022-12-30 19:03:37 +00:00
);
mysql_query (
2023-07-07 15:36:23 +00:00
'UPDATE `items_users` SET `lastUPD` = "' . time () . '", `uid` = "-21' . $res [ 'id' ] . '" ' . $o . ' WHERE `id` = "' . $id . '" LIMIT 1'
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
} else {
2023-01-10 16:29:32 +00:00
$r = '<font color="#FF0000"><strong>В о время участия в турнире запрещено использовать клановое хранилище.</strong></font><br />' ;
2022-12-19 20:22:19 +00:00
}
} else {
2023-01-10 16:29:32 +00:00
$r = '<font color="#FF0000"><strong>Предмет не найден.</strong></font><br />' ;
2022-12-19 20:22:19 +00:00
}
return $r ;
}
2022-12-30 19:03:37 +00:00
public function take_itm_cl ( $id , $user , $cl ) : string
2022-12-19 20:22:19 +00:00
{
2022-12-30 19:03:37 +00:00
$itm_ = mysql_fetch_array (
mysql_query (
'SELECT `iu`.*, `im`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON `iu`.`item_id` = `im`.`id` WHERE `iu`.`uid` = "-21' . $user [ 'clan' ] . '" AND `iu`.`delete` = 0 AND `iu`.`id` = "' . $id . '" LIMIT 1'
)
);
2022-12-19 20:22:19 +00:00
$res = mysql_fetch_array ( mysql_query ( 'SELECT * FROM `clan` WHERE `id` = "' . $cl . '" LIMIT 1' ));
if ( isset ( $itm_ [ 'id' ])) {
2023-08-14 15:15:05 +00:00
$po = Conversion :: dataStringToArray ( $itm_ [ 'data' ]);
2022-12-19 20:22:19 +00:00
if ( isset ( $po [ 'toclan' ])) {
$cls = explode ( '#' , $po [ 'toclan' ]);
$cls = $cls [ 1 ];
}
if ( $user [ 'inTurnir' ] == 0 && $user [ 'inTurnirnew' ] == 0 ) {
$col = $this -> itemsX ((( int ) $id ));
2022-12-30 19:03:37 +00:00
mysql_query (
2023-12-17 02:32:09 +00:00
'INSERT INTO `clan_operations` (`clan`, `time`, `type`, `text`, `val`, `uid`) VALUES ("' . $res [ 'id' ] . '", "' . time (
) . '", "5", "' . $user [ 'login' ] . '", "' . $itm_ [ 'name' ] . ' (x' . $col . ') Ид : [' . $id . '] Хозяин : [' . $cls . ']", "' . $user [ 'id' ] . '")'
2022-12-30 19:03:37 +00:00
);
mysql_query (
2023-07-07 15:36:23 +00:00
'UPDATE `items_users` SET `lastUPD` = "' . time () . '", `uid` = "' . $user [ 'id' ] . '" WHERE `id` = "' . $id . '" LIMIT 1'
2022-12-30 19:03:37 +00:00
);
2023-01-10 16:29:32 +00:00
$r = '<font color="#FF0000"><strong>Вы успешно взяли предмет "' . $itm_ [ 'name' ] . '" из хранилища</strong></font><br />' ;
2022-12-19 20:22:19 +00:00
} else {
2023-01-10 16:29:32 +00:00
$r = '<font color="#FF0000"><strong>В о время участия в турнире запрещено использовать клановое хранилище.</strong></font><br />' ;
2022-12-19 20:22:19 +00:00
}
} else {
2023-01-10 16:29:32 +00:00
$r = '<font color="#FF0000"><strong>Предмет не найден.</strong></font><br />' . $id ;
2022-12-19 20:22:19 +00:00
}
return $r ;
}
2023-11-02 13:57:39 +00:00
public function rem_itm_cl ( $user , $cl , $type ) : void
2022-12-19 20:22:19 +00:00
{
2022-12-30 19:03:37 +00:00
$itms = mysql_query (
'SELECT * FROM `items_users` WHERE (`uid` = "-21' . $user [ 'clan' ] . '" OR `data` LIKE "%toclan=' . $user [ 'clan' ] . '#%")'
);
2022-12-19 20:22:19 +00:00
while ( $pl = mysql_fetch_array ( $itms )) {
2023-08-14 15:15:05 +00:00
$po = Conversion :: dataStringToArray ( $pl [ 'data' ]);
2022-12-19 20:22:19 +00:00
if ( isset ( $po [ 'toclan' ])) {
$cls = explode ( '#' , $po [ 'toclan' ]);
$cls = $cls [ 1 ];
}
if ( $cls == $user [ 'id' ]) {
if ( $pl [ 'uid' ] != $user [ 'id' ]) {
if ( $pl [ 'inOdet' ] != 0 ) {
mysql_query ( 'UPDATE `items_users` SET `inOdet` = 0 WHERE `id` = "' . $pl [ 'id' ] . '"' );
}
}
unset ( $po [ 'toclan' ]);
2023-08-14 15:15:05 +00:00
$pl [ 'data' ] = Conversion :: arrayToDataString ( $po );
2023-11-02 13:57:39 +00:00
$col = $this -> itemsX (( int ) $pl [ 'id' ]);
2022-12-30 19:03:37 +00:00
$it_n = mysql_fetch_array (
mysql_query ( 'SELECT `name` FROM `items_main` WHERE `id` = "' . $pl [ 'item_id' ] . '"' )
);
mysql_query (
2023-07-07 15:36:23 +00:00
'UPDATE `items_users` SET `lastUPD` = "' . time () . '", `uid` = "' . $user [ 'id' ] . '", `data` = "' . $pl [ 'data' ] . '" WHERE `id` = "' . $pl [ 'id' ] . '"'
2022-12-30 19:03:37 +00:00
);
mysql_query (
2023-12-17 02:32:09 +00:00
'INSERT INTO `clan_operations` (`clan`, `time`, `type`, `text`, `val`, `uid`) VALUES ("' . $res [ 'id' ] . '", "' . time (
) . '", "' . $type . '", "' . $user [ 'login' ] . '", "' . $it_n [ 'name' ] . ' (x' . $col . ') Ид : [' . $pl [ 'id' ] . ']", "' . $user [ 'id' ] . '")'
2022-12-30 19:03:37 +00:00
);
} elseif ( $pl [ 'uid' ] == $user [ 'id' ]) {
2022-12-19 20:22:19 +00:00
$col = $this -> itemsX ((( int ) $pl [ 'id' ]));
2022-12-30 19:03:37 +00:00
$it_n = mysql_fetch_array (
mysql_query ( 'SELECT `name` FROM `items_main` WHERE `id` = "' . $pl [ 'item_id' ] . '"' )
);
mysql_query (
2023-07-07 15:36:23 +00:00
'UPDATE `items_users` SET `lastUPD` = "' . time () . '", `uid` = "-21' . $user [ 'clan' ] . '" WHERE `id` = "' . $pl [ 'id' ] . '"'
2022-12-30 19:03:37 +00:00
);
mysql_query (
2023-12-17 02:32:09 +00:00
'INSERT INTO `clan_operations` (`clan`, `time`, `type`, `text`, `val`, `uid`) VALUES ("' . $res [ 'id' ] . '", "' . time (
) . '", "9", "' . $user [ 'login' ] . '", "' . $it_n [ 'name' ] . ' (x' . $col . ') Ид : [' . $pl [ 'id' ] . ']", "' . $user [ 'id' ] . '")'
2022-12-30 19:03:37 +00:00
);
2022-12-19 20:22:19 +00:00
}
}
}
2023-04-15 19:17:40 +00:00
public function isModerator () : bool
{
return $this -> isAdmin () || $this -> info [ 'align' ] > 3 && $this -> info [ 'align' ] < 4 ;
}
public function isAdmin () : bool
{
return $this -> info [ 'admin' ] > 0 ;
}
/** Игрок имеет меньше 30 % хп .
* @ return bool
*/
public function isWeakened () : bool
{
return $this -> stats [ 'hpNow' ] < ceil ( $this -> stats [ 'hpMax' ] / 100 * 30 );
}
2023-08-15 22:48:29 +00:00
public function isBlocked () : bool
{
return $this -> info [ 'banned' ] > 0 ;
}
2022-12-19 20:22:19 +00:00
}