WIP: перед введенимем класса Fighter.php

This commit is contained in:
Ivor Barhansky 2024-01-06 00:14:35 +02:00
parent 07f905ef64
commit a2c658166d
67 changed files with 5555 additions and 7135 deletions

View File

@ -25,10 +25,6 @@ RewriteRule casino/SWFP.pl casino/SWFP.php [L]
RewriteCond %{ENV:REDIRECT} !^yes$
RewriteRule ^r([0-9]+)/?$ /register.php?ref=$1 [L]
RewriteRule ^adminion/([a-zA-Z0-9]+)/?$ /adminion/index.php?mod=$1 [L]
RewriteRule ^adminion/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ /adminion/index.php?mod=$1 [L]
RewriteRule ^adminion/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ /adminion/index.php?mod=$1 [L]
RewriteRule ^settings/?$ /settings.php [L]
RewriteRule ^info/(.*)/?$ /inf.php?$1 [L]
@ -45,9 +41,6 @@ RewriteRule ^clan/?$ /clans_inf.php [L]
RewriteRule ^ruins/(.*)/?$ /ruins.php?$1 [L]
RewriteRule ^ruins/?$ /ruins.php [L]
RewriteRule ^exp/(.*)/?$ /exp.php?$1 [L]
RewriteRule ^exp/?$ /exp.php [L]
RewriteRule ^news/(.*)/?$ /n/$1 [R=301,L]
RewriteRule ^news/?$ /n [R=301,L]
@ -91,6 +84,3 @@ RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Order Allow,Deny
Allow from all

32
AI.php
View File

@ -484,3 +484,35 @@ foreach ($p as $prow) {
}
echo "<br>";
}
$stats = Db::getRows('select id, stats from stats');
$sarr = [];
foreach ($stats as $stat) {
$data = Conversion::dataStringToArray($stat['stats']);
$arr = [
'uid' => $stat['id'],
's1' => $data['s1'] ?? 0,
's2' => $data['s2'] ?? 0,
's3' => $data['s3'] ?? 0,
's4' => $data['s4'] ?? 0,
's5' => $data['s5'] ?? 0,
's6' => $data['s6'] ?? 0,
's7' => $data['s7'] ?? 0,
'a1' => $data['a1'] ?? 0,
'a2' => $data['a2'] ?? 0,
'a3' => $data['a3'] ?? 0,
'a4' => $data['a4'] ?? 0,
'mg1' => $data['mg1'] ?? 0,
'mg2' => $data['mg2'] ?? 0,
'mg3' => $data['mg3'] ?? 0,
'mg4' => $data['mg4'] ?? 0,
];
unset($data['s1'], $data['s2'], $data['s3'], $data['s4'], $data['s5'], $data['s6'], $data['s7'],
$data['a1'], $data['a2'], $data['a3'], $data['a4'],
$data['mg1'], $data['mg2'], $data['mg3'], $data['mg4']);
$arr['tails'] = Conversion::arrayToDataString($data);
$arr['tails_json'] = json_encode($data);
$sarr[] = $arr;
}
var_dump($sarr);

6
Array
View File

@ -1,6 +0,0 @@
# Netscape HTTP Cookie File
# https://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.
new-combats.com FALSE / FALSE 0 PHPSESSID vt7d2f0tttjoneil7bqsc7org0
new-combats.com FALSE /jx/battle/ FALSE 1517571089 btl 0

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
<?php
namespace Battle;
class Fighter
{
}

View File

@ -24,6 +24,8 @@ class Finish
private int $aBexp = 0; //Добавочный опыт в боях
private Battle $battle;
private array $btlstatus = [];
public function __construct(Battle $battle)
{
$this->battle = $battle;
@ -35,7 +37,6 @@ class Finish
$injuryName = [1 => 'легкую', 2 => 'среднюю', 3 => 'тяжелую', 4 => 'неизлечимую',];
$dnr = 0; //???
$chat = new Chat();
mysql_query('LOCK TABLES users,stats,battle,battle_last,battle_end,chat WRITE');
$test = Db::getRow('select id, team_win, testfinish from battle where id = ? and team_win != -1', [$this->battle->info['id']]);
if ($test['testfinish'] == -1) {
@ -259,7 +260,7 @@ class Finish
);
}
unset($spik, $plik);
//
$usrreal = '';
$usr_real = mysql_fetch_array(
mysql_query(
@ -270,13 +271,9 @@ class Finish
$usr_real = $this->battle->users[$i];
}
if (isset($usr_real['id'])) {
if ($usr_real['align'] > 0) {
$usrreal .= '<img src=//img.new-combats.tech/i/align/align' . $usr_real['align'] . '.gif width=12 height=15 >';
}
if ($usr_real['clan'] > 0) {
$usrreal .= '<img src=//img.new-combats.tech/i/clan/' . $usr_real['clan'] . '.gif width=24 height=15 >';
}
$usrreal .= '<strong>' . $usr_real['login'] . '</strong>[' . $usr_real['level'] . ']<a target=_blank href=/info/' . $usr_real['id'] . ' ><img src=//img.new-combats.tech/i/inf_capitalcity.gif alt=""></a>';
$login = new User\Login($usr_real['align'], $usr_real['clan'], $usr_real['level'], $usr_real['login']);
$usrreal .= $login->fullLogin;
unset($login);
}
$text = str_replace('{u1}', $usrreal, $text);
@ -357,14 +354,14 @@ class Finish
$usrwin = '';
while ($j < count($this->battle->users)) {
if ($this->battle->users[$j]['no_ip'] != 'trupojor' && $this->battle->users[$j]['bot'] == 0 && $this->battle->stats[$j]['hpNow'] > 0) {
$usrwin .= ', ';
if ($this->battle->users[$j]['align'] > 0) {
$usrwin .= '<img width=12 height=15 src=//img.new-combats.tech/i/align/align' . $this->battle->users[$j]['align'] . '.gif >';
}
if ($this->battle->users[$j]['clan'] > 0) {
$usrwin .= '<img width=24 height=15 src=//img.new-combats.tech/i/clan/' . $this->battle->users[$j]['clan'] . '.gif >';
}
$usrwin .= '<strong>' . $this->battle->users[$j]['login'] . '</strong> [' . $this->battle->users[$j]['level'] . ']<a target=_blank href=info/' . $this->battle->users[$j]['id'] . ' ><img alt="" src=//img.new-combats.tech/i/inf_capitalcity.gif ></a>';
$login = new User\Login(
$this->battle->users[$j]['align'],
$this->battle->users[$j]['clan'],
$this->battle->users[$j]['level'],
$this->battle->users[$j]['login']
);
$usrwin .= ', ' . $login->fullLogin;
unset($login);
}
$j++;
}
@ -950,9 +947,11 @@ class Finish
)
);
$btlstatus = $this->typeBattle($prsusers[0]);
$this->btlstatus = Battle::getType($prsusers[0]);
if ($this->battle->info['smert'] == 1) {
$btlstatus = [150, 150, 'Жесточайшее Сражение', 'Жесточайшее Сражение'];
$this->btlstatus = [150, 150, 'Жесточайшее Сражение', 'Жесточайшее Сражение'];
}
//
if ($this->battle->stats[$i]['clanpos'] > 0 && ($this->battle->stats[$i]['clanpos'] == 1 || $this->battle->stats[$i]['clanpos'] == 2 || $this->battle->stats[$i]['clanpos'] == 3)) {
@ -961,11 +960,11 @@ class Finish
unset($r1);
//Статусная битва
if ($btlstatus[0] > 0) {
if ($this->btlstatus[0] > 0) {
if ($this->battle->info['type'] == 99) {
$this->battle->info['addExp'] += $btlstatus[1];
$this->battle->info['addExp'] += $this->btlstatus[1];
} else {
$this->battle->info['addExp'] += $btlstatus[0];
$this->battle->info['addExp'] += $this->btlstatus[0];
}
}
@ -1126,11 +1125,11 @@ class Finish
unset($lime);
if ($btlstatus[0] > 0) {
if ($this->btlstatus[0] > 0) {
if ($this->battle->info['type'] == 99) {
$prc .= ' (' . $btlstatus[3] . ')';
$prc .= ' (' . $this->btlstatus[3] . ')';
} else {
$prc .= ' (' . $btlstatus[2] . ')';
$prc .= ' (' . $this->btlstatus[2] . ')';
}
}
@ -1504,13 +1503,17 @@ class Finish
mysql_query('UPDATE `battle_users` SET `finish` = 1 WHERE `uid` = "' . $this->battle->users[$i]['id'] . '"');
$this->saveLogs();
if ($u->info['battle'] != 0 && !isset($u->info['battle_lsto'])) {
echo '<script>document.getElementById(\'teams\').style.display=\'none\';var battleFinishData = "' . $u->info['battle_text'] . '";</script>';
echo <<<HTML
<script>
document.getElementById('teams').style.display='none';
var battleFinishData = {$u->info['battle_text']}
</script>
HTML;
}
}
}
mysql_query('UPDATE `battle` SET `testfinish` = "0" WHERE `id` = "' . $this->battle->info['id'] . '" LIMIT 1');
mysql_query('UNLOCK TABLES');
}
private function addItemToItemsLocal(int $itemId, int $uid, string $data = ''): void
@ -1597,23 +1600,6 @@ class Finish
Db::sql('delete from battle_actions where btl = ?', [$this->battle->info['id']]);
}
private function typeBattle(int $x): array
{
$r = [0, 0, 'Обычный поединок', 'Кровавый Поединок'];
if ($x >= 50000 && $x < 100000) {
$r = [25, 50, 'Великая Битва', 'Кровавая Битва'];
} elseif ($x < 500000) {
$r = [50, 75, 'Величайшая Битва', 'Кровавая Резня'];
} elseif ($x < 1000000) {
$r = [75, 100, 'Историческая Битва', 'Кровавая Сеча'];
} elseif ($x < 2500000) {
$r = [100, 125, 'Эпохальная Битва', 'Кровавое Побоище'];
} elseif ($x >= 5000000) {
$r = [150, 150, 'Судный День', 'Судный День'];
}
return $r;
}
private function dieInDungeon(int $dnr, int $i, User $u, ChatMessage $cmsg, Chat $chat): void
{
if ($dnr != 1) {
@ -1913,4 +1899,9 @@ class Finish
}
public function getBtlstatus(): array
{
return $this->btlstatus;
}
}

View File

@ -169,7 +169,6 @@ class Log
'<вырезано цензурой> каратисты фиговы',
];
$randomcomment = $comments[array_rand($comments)];
$text = "{tm1} <i>Комментатор: $randomcomment</i>";
self::add(
[
@ -181,4 +180,497 @@ class Log
]
);
}
public static function getAttackTurnText(int $weaponType, int $attackZone): array
{
$w = [
0 => ['грудью', 'ребром руки', 'лбом', 'кулаком', 'ногой', 'левой ногой', 'правой ногой', 'коленом',],
1 => ['ножом', 'тыльной стороной лезвия ножа', 'рукоятью ножа', 'лезвием ножа'],
2 => ['сучковатой палкой', 'поленом', 'тяжелой дубиной', 'дубиной', 'рукоятью молота'],
3 => ['секирой', 'топором', 'лезвием секиры', 'алебардой', 'тяжелым держаком', 'длинной секирой'],
4 => ['ножнами', 'гардой', 'мечом', 'лезвием меча', 'рукоятью меча', 'тупым лезвием', 'острой стороной меча', 'огромным мечом',],
5 => ['сучковатой палкой', 'посохом', 'тяжелой тростью', 'корявым посохом', 'основанием посоха'],
22 => ['костылем'],
100 => ['непонятной хреновиной'],
];
$z = [
1 => ['в нос', 'в глаз', 'в челюсть', 'по переносице', 'в кадык', 'по затылку', 'в правый глаз', 'в левый глаз', 'в скулу',],
2 => ['в грудь', 'в корпус', 'в солнечное сплетение', 'в сердце', 'в область лопаток'],
3 => ['в бок', 'по желудку', 'по левой руке', 'по правой руке'],
4 => ['по <вырезано цензурой>', 'в пах', 'в промежность', 'по левой ягодице', 'по правой ягодице'],
5 => ['по ногам', 'в область правой пятки', 'в область левой пятки', 'по коленной чашечке', 'по икрам'],
100 => ['по непонятному месту'],
];
if (!in_array($weaponType, [0, 1, 2, 3, 4, 5, 22])) {
$weaponType = 100;
}
if (!in_array($attackZone, [1, 2, 3, 4, 5])) {
$attackZone = 100;
}
return [
$w[$weaponType][array_rand($w[$weaponType])],
$z[$attackZone][array_rand($z[$attackZone])],
];
}
public static function addLogLine(int $type, int $gender, bool $count = false): string|int
{
$logtext = [
[ // муж.
[],
[
'вспомнил что-то важное',
'высморкался',
'задумался',
'замешкался',
'засмотрелся на <вырезано цензурой>',
'кашлянул',
'ковырялся в зубах',
'обернулся',
'осмотрелся',
'почесался',
'пошатнулся',
'пришел в себя',
'пытался сконцентрироваться',
'пытался увернуться',
'пытался что-то сказать',
'расплылся в улыбке',
'расстроился',
'растерялся',
'удивился',
'чесал <вырезано цензурой>',
'пытался отойти покурить',
'чесал яйца',
],
[
', и за это ',
', а ',
', но в это время ',
', и тут ',
', но вдруг неожиданно ',
', и вдруг ',
', но ',
', и внезапно ',
', но неожиданно ',
', и в этот момент ',
', и в ту же секунду ',
', и в этот миг ',
],
[
'обезумевший',
'расстроенный',
'неустрашимый',
'продвинутый',
'расстроенный',
'страшный',
'задумчивый',
'небритый',
'бесстрастный',
'разъяренный',
'смелый',
'безумный',
'восхитительный',
'жестокий',
'злобный',
'мужественный',
'непобедимый',
'наглый',
'хитрый',
'храбрый',
'отважный',
'железный',
'могучий',
'сильнейший',
'крепкий',
'великий',
'бесстрашный',
],
[
'случайно ',
'отчаянно ',
'проснувшись ',
'мимоходом ',
'разбежавшись ',
'сдуру ',
'со скуки ',
'не помня себя от испуга ',
'улыбаясь ',
'прослезившись ',
'пошатнувшись ',
'проснувшись ',
'беспричинно ',
'опрометчиво ',
'разбежавшись ',
'зевнув ',
'сделав двойное сальто ',
'не подумав ',
'хихикая ',
'ласково ',
'с испугу ',
],
[
'влепил ',
'вломил ',
'саданул ',
],
[
'грубый',
'наглый',
'красивый',
],
[
'неизвестный удар',
'колющий удар',
'рубящий удар',
'дробящий удар',
'режущий удар',
'обжигающий удар',
'удар электричеством',
'обмораживающий удар',
'удар магией земли',
'удар светлой магией',
'удар тёмной магией',
'удар серой магией',
'обычный удар',
'удар',
],
[
'не контролировал ситуацию',
'обманулся',
'старался провести удар',
'думал о <вырезано цензурой>',
'испугался',
'потерял самоконтроль',
'потерял момент',
'был слишком самоуверен',
'пытался провести удар',
'поскользнулся',
'не думал о бое',
'не рассчитал свои силы',
'промахнулся',
'оступился',
'думал не о том',
],
[
', и потому ',
' и ',
', но ',
', вследствие чего ',
', потому ',
],
[
'остановил',
'поставил блок на',
'блокировал',
'отбил',
],
[
'ушел вправо от удара',
'ушел влево от удара',
'увел удар',
'уклонился от удара',
'увернулся от удара',
],
[
'приняв боевые 100 грамм',
'сказав &quot;БУ!&quot;',
'показав противнику кукиш',
'в отчаянном рывке',
'показав сразу два пальца',
],
[
'о<вырезано цензурой>ный',
'точнейший',
],
[
'погиб!',
'повержен!',
'мертв!',
'убит!',
'проиграл бой!',
],
[
'пропустил свой ход',
'потратил свой ход на магию',
'потратил свой ход на прием',
],
[
'использовал',
],
[
'{u1}, вспомнив слова своего сэнсея, из последних сил применил прием &quot;{pr}&quot;.',
'Кроличья лапка, подкова в перчатке и прием &quot;{pr}&quot; помогли {u1} продержаться ещё немного.',
'{u1}, пораскинув мозгами по земле, сообразил, что его выручат или прием &quot;{pr}&quot; или вмешательство Мусорщика.',
'{u1} выкрикнув: &quot;А ещё я вот так могу!&quot;, применил прием &quot;{pr}&quot;.',
'{u1} понял, пропустив очередной удар в голову, что поможет ему только прием &quot;{pr}&quot;.',
'{u1} сам не поняв зачем, применил прием &quot;{pr}&quot;.',
'{u1} нетрезво оценив положение, решил, что его спасение это прием &quot;{pr}&quot;.',
],
[
'{u1}, вспомнив слова своего сэнсея, из последних сил применил прием &quot;{pr}&quot; на {u2}.',
],
[
'{u1}, победив страх, решил поразить {u2} заклятьем &quot;{pr}&quot;',
'{u1} наконец сфокусировал свое внимание на поединке и наколдовал &quot;{pr}&quot; на {u2}',
'{u1} нарисовав вокруг себя несколько рун, призвал заклятье &quot;{pr}&quot; на {u2}',
'{u1} догадавшись, что пришло время показать себя, произнес заклятье &quot;{pr}&quot; на {u2}',
'{u1} с испугу произнес, первое пришедшее на ум, заклятье &quot;{pr}&quot; на {u2}',
'{u1} впал в транс и начал бормотать заклятие &quot;{pr}&quot; на {u2}',
'{u1} очнулся от медитации, и призвал заклятье &quot;{pr}&quot; на {u2}',
],
[
'{u1} пытался наколдовать ужасающее заклятие &quot;{pr}&quot; на {u2}, но ничего не вышло',
'{u1} не смог сфокусировать и наколдовать &quot;{pr}&quot; на {u2}, но ничего не вышло',
'{u1} с испугу произнес ошибочное заклятие &quot;{pr}&quot; на {u2} и ничего не вышло',
'{u1}, потеряв концентрацию, не смог наколдовать &quot;{pr}&quot; на {u2} и ничего не вышло',
'{u1} <вырезано цензурой> от перенапряжения, вследствие чего не смог наколдовать &quot;{pr}&quot; на {u2}',
'{u1} пытался превратить {u2} в табуретку при помощи заклинания &quot;{pr}&quot;... но ничего не вышло',
],
[
'{u1}, победив страх, решил поразить всех и наколдовал &quot;{pr}&quot;',
'{u1} наконец сфокусировал свое внимание на поединке и наколдовал &quot;{pr}&quot;',
'{u1} нарисовав вокруг себя несколько рун, призвал заклятье &quot;{pr}&quot;',
'{u1} догадавшись, что пришло время показать себя, произнес заклятье &quot;{pr}&quot;',
'{u1} с испугу произнес, первое пришедшее на ум, заклятье &quot;{pr}&quot;',
'{u1} впал в транс и начал бормотать заклятие &quot;{pr}&quot;',
'{u1} очнулся от медитации, и призвал заклятье &quot;{pr}&quot;',
],
],
[ // жен.
[],
[
'вспомнила что-то важное',
'высморкалась',
'задумалась',
'замешкалась',
'засмотрелась на <вырезано цензурой>',
'кашлянула',
'ковырялась в зубах',
'обернулась',
'осмотрелась',
'почесалась',
'пошатнулась',
'пришла в себя',
'пыталась сконцентрироваться',
'пыталась увернуться',
'пыталась что-то сказать',
'расплылалась в улыбке',
'расстроилась',
'растерялась',
'удивилась',
'чесала <вырезано цензурой>',
'пыталась отойти покурить',
'поправляла прическу',
],
[
', и за это ',
', а ',
', но в это время ',
', и тут ',
', но вдруг неожиданно ',
', и вдруг ',
', но ',
', и внезапно ',
', но неожиданно ',
', и в этот момент ',
', и в ту же секунду ',
', и в этот миг ',
],
[
'обезумевшая',
'расстроенная',
'неустрашимая',
'продвинутая',
'расстроенная',
'страшная',
'задумчивая',
'взъерошенная',
'бесстрастная',
'разъяренная',
'смелая',
'безумная',
'восхитительная',
'жестокая',
'злобная',
'мужественная',
'непобедимая',
'наглая',
'хитрая',
'храбрая',
'отважная',
'железная',
'могучая',
'сильнейшая',
'крепкая',
'великая',
'бесстрашная',
],
[
'случайно ',
'отчаянно ',
'проснувшись ',
'мимоходом ',
'разбежавшись ',
'сдуру ',
'со скуки ',
'не помня себя от испуга ',
'улыбаясь ',
'прослезившись ',
'пошатнувшись ',
'проснувшись ',
'беспричинно ',
'опрометчиво ',
'разбежавшись ',
'зевнув ',
'сделав двойное сальто ',
'не подумав ',
'хихикая ',
'ласково ',
'с испугу ',
],
[
'влепила ',
'вломила ',
'саданула ',
],
[
'грубый',
'наглый',
'красивый',
],
[
'тычок',
'тычок',
'рубящий удар',
'разбивающий удар',
'рассекающий удар',
'обжигающий удар',
'удар электричеством',
'обмораживающий удар',
'удар магией земли',
'удар светлой магией',
'удар тёмной магией',
'удар серой магией',
'неизсветный удар',
'удар',
],
[
'не контролировала ситуацию',
'обманулась',
'старалась провести удар',
'думала о <вырезано цензурой>',
'испугалась',
'потеряла самоконтроль',
'потеряла момент',
'была слишком самоуверенна',
'пыталась провести удар',
'поскользнулась',
'не думала о бое',
'не рассчитала свои силы',
'промахнулась',
'оступилась',
'думала не о том',
],
[
', и потому ',
' и ',
', но ',
', вследствие чего ',
', потому ',
],
[
'остановила',
'поставила блок на',
'блокировала',
'отбила',
],
[
'ушла вправо от удара',
'ушла влево от удара',
'увела удар',
'уклонилась от удара',
'увернулась от удара',
],
[
'приняв боевые 100 грамм',
'сказав &quot;БУ!&quot;',
'показав противнику кукиш',
'в отчаянном рывке',
'показав сразу два пальца',
],
[
'о<вырезано цензурой>ный',
'точнейший',
],
[
'погибла!',
'повержена!',
'мертва!',
'убита!',
'проиграла бой!',
],
[
'пропустила свой ход',
'потратила свой ход на магию',
'потратила свой ход на прием',
],
[
'использовала',
],
[
'{u1}, вспомнив слова своего сэнсея, из последних сил применила прием &quot;{pr}&quot;.',
'Кроличья лапка, подкова в перчатке и прием &quot;{pr}&quot; помогли {u1} продержаться ещё немного.',
'{u1}, пораскинув мозгами по земле, сообразила, что её выручат или прием &quot;{pr}&quot; или вмешательство Мусорщика.',
'{u1} выкрикнув: &quot;А ещё я вот так могу!&quot;, применила прием &quot;{pr}&quot;.',
'{u1} поняла, пропустив очередной удар в голову, что поможет ей только прием &quot;{pr}&quot;.',
'{u1} сама не поняв зачем, применила прием &quot;{pr}&quot;.',
'{u1} нетрезво оценив положение, решила, что её спасение это прием &quot;{pr}&quot;.',
],
[
'{u1}, вспомнив слова своего сэнсея, из последних сил применила прием &quot;{pr}&quot; на {u2}.',
],
[
'{u1}, победив страх, решила поразить {u2} заклятьем &quot;{pr}&quot;',
'{u1} наконец сфокусировала свое внимание на поединке и наколдовала &quot;{pr}&quot; на {u2}',
'{u1} нарисовав вокруг себя несколько рун, призвала заклятье &quot;{pr}&quot; на {u2}',
'{u1} догадавшись, что пришло время показать себя, произнесла заклятье &quot;{pr}&quot; на {u2}',
'{u1} с испугу произнесла, первое пришедшее на ум, заклятье &quot;{pr}&quot; на {u2}',
'{u1} впала в транс и начала бормотать заклятие &quot;{pr}&quot; на {u2}',
'{u1} очнулась от медитации, и призвала заклятье &quot;{pr}&quot; на {u2}',
],
[
'{u1} пыталась наколдовать ужасающее заклятие &quot;{pr}&quot; на {u2}, но ничего не вышло',
'{u1} не смогла сфокусировать и наколдовать &quot;{pr}&quot; на {u2}, но ничего не вышло',
'{u1} с испугу произнесла ошибочное заклятие &quot;{pr}&quot; на {u2} и ничего не вышло',
'{u1}, потеряв концентрацию, не смогла наколдовать &quot;{pr}&quot; на {u2} и ничего не вышло',
'{u1} <вырезано цензурой> от перенапряжения, вследствие чего не смогла наколдовать &quot;{pr}&quot; на {u2}',
'{u1} пыталась превратить {u2} в табуретку при помощи заклинания &quot;{pr}&quot;... но ничего не вышло',
],
[
'{u1}, победив страх, решила поразить всех и наколдовала &quot;{pr}&quot;',
'{u1} наконец сфокусировала свое внимание на поединке и наколдовала &quot;{pr}&quot;',
'{u1} нарисовав вокруг себя несколько рун, призвала заклятье &quot;{pr}&quot;',
'{u1} догадавшись, что пришло время показать себя, произнесла заклятье &quot;{pr}&quot;',
'{u1} с испугу произнесла, первое пришедшее на ум, заклятье &quot;{pr}&quot;',
'{u1} впала в транс и начала бормотать заклятие &quot;{pr}&quot;',
'{u1} очнулась от медитации, и призвала заклятье &quot;{pr}&quot;',
],
],
];
if ($count) {
return count($logtext[$gender][$type]);
}
if (!in_array($gender, [0, 1]) || !in_array($type, range(1, 21))) {
return 'произошло нечто непонятное';
}
return $logtext[$gender][$type][array_rand($logtext[$gender][$type])];
}
}

View File

@ -0,0 +1,114 @@
<?php
namespace Battle\Priem;
abstract class AbstractPriem implements PriemInterface
{
protected int $caster;
protected string $name;
protected string $icon;
protected int $power;
/**
* На кого применяем приём. Например:
* self, static_friend, static_enemy, random_friend, random_enemy, random_friend_group, random_enemy_group,
* all_friend, all_enemy, all,...
* @var int
*/
protected int $targetType;
/**
* Массив id союзников
* @var array
*/
protected array $friendTeam;
/** Массив id противников
* @var array
*/
protected array $enemyTeam;
public function __construct(
int $caster,
array $friendTeam,
array $enemyTeam,
int $targetType,
string $name,
string $icon = '',
) {
$this->caster = $caster;
$this->friendTeam = $friendTeam;
$this->enemyTeam = $enemyTeam;
$this->targetType = $targetType;
$this->icon = $icon;
$this->name = $name;
}
protected function getTarget(): array
{
$targets = [];
$allExceptCaster = array_merge($this->friendTeam, $this->enemyTeam);
switch ($this->targetType) {
case self::TAGRET_SELF:
$targets[] = $this->caster;
break;
case self::TARGET_RANDOM_ENEMY:
shuffle($this->enemyTeam);
$targets[] = end($this->enemyTeam);
break;
case self::TARGET_RANDOM_FRIEND:
shuffle($this->friendTeam);
$targets[] = end($this->friendTeam);
break;
case self::TARGET_RANDOM:
shuffle($allExceptCaster);
$targets[] = end($allExceptCaster);
break;
case self::TARGET_RANDOM_ENEMIES:
for ($i = 1; $i <= count($this->enemyTeam); $i++) {
if ($i > 1 && mt_rand(1,2) === 1) {
continue;
}
shuffle($this->enemyTeam);
$targets[] = array_shift($this->enemyTeam);
}
break;
case self::TARGET_RANDOM_FRIENDS:
for ($i = 1; $i <= count($this->friendTeam); $i++) {
if ($i > 1 && mt_rand(1,2) === 1) {
continue;
}
shuffle($this->friendTeam);
$targets[] = array_shift($this->friendTeam);
}
break;
case self::TARGET_RANDOMS:
for ($i = 1; $i <= count($allExceptCaster); $i++) {
if ($i > 1 && mt_rand(1,2) === 1) {
continue;
}
shuffle($allExceptCaster);
$targets[] = array_shift($allExceptCaster);
}
break;
case self::TARGET_ALL_ENEMIES:
$targets = $this->enemyTeam;
break;
case self::TARGET_ALL_FRIENDS:
$targets = $this->friendTeam;
break;
case self::TARGET_ALL:
$targets = $allExceptCaster;
$targets[] = $this->caster;
break;
}
return $targets;
}
/**
* Возвращает иконку приёма. В текущей реализации у каждого приёма должна быть иконка.
* @return string
*/
abstract public function getIcon(): string;
}

View File

@ -0,0 +1,78 @@
<?php
namespace Battle\Priem;
class Priem extends AbstractPriem
{
/*
id, name, image,
damage_type_value: static, +value,
damage_time: now, next_turn, x_turns,
target: self, static_friend, static_enemy, random_friend, random_enemy, random_friend_group, random_enemy_group, all_friend, all_enemy, all,
damage_type: physical (колка, рубка, резка, дробка), magical (water, air, earth, fire,)
physical: {
type: [static, +value,]
time: [now, next_turn, x_turns,]
target: [static_enemy,]
}
*/
protected int $power;
private array $targets;
/**
* @param int $caster
* @param array $friendTeam
* @param array $enemyTeam
* @param int $targetType
* @param int $power
* @param int $powerType static, +value,
* @param string $name
* @param int $activeTurns количество ходов которое будет применяться приём. 0 - выполнить в текущий ход.
* @param string $icon
*/
public function __construct(
int $caster,
array $friendTeam,
array $enemyTeam,
int $targetType,
int $power,
int $powerType,
string $name,
int $activeTurns = 1,
string $icon = '',
) {
parent::__construct($caster, $friendTeam, $enemyTeam, $targetType, $name, $icon);
$this->power = $power;
$this->targets = $this->getTarget();
}
public function getIcon(): string
{
return $this->icon;
}
public function getTargetType(): int
{
return $this->targetType;
}
public function getTarget(): array
{
return $this->targets;
}
public function getPower(): int
{
return $this->power;
}
}
//$pr = new Priem(45,[1,2,3],[4,5,6],5,44,'Kaboom!', 'kaboom.gif');
//$pr->

View File

@ -0,0 +1,36 @@
<?php
namespace Battle\Priem;
interface PriemInterface
{
public const DAMAGE = 1;
public const HEAL = 2;
public const TAGRET_SELF = 1; //Приём на себя
public const TARGET_CUSTOM = 2; //Приём на конкретного персонажа
public const TARGET_RANDOM_ENEMY = 3; //Приём на случайного врага
public const TARGET_RANDOM_FRIEND = 4; //Приём на случайного друга
public const TARGET_RANDOM = 5; //Приём на случайного персонажа
public const TARGET_RANDOM_ENEMIES = 6; //Приём на случайных врагов
public const TARGET_RANDOM_FRIENDS = 7; //Приём на случайных друзей
public const TARGET_RANDOMS = 8; //Приём на случайных персонажей
public const TARGET_ALL_ENEMIES = 9; //Приём на всех врагов
public const TARGET_ALL_FRIENDS = 10; //Приём на всех друзей
public const TARGET_ALL = 11; //Приём на всех персонажей
/**
* Возвращает тип цели к которым применяется приём.
* @return int
*/
public function getTargetType(): int;
/**
* Возвращает силу действия приёма. Параметр на который изменится та или иная характеристика. Урон для боевых,
* количество восстановленого здоровья для лечения, количество процентов для процентных значений.
* @return int
*/
public function getPower(): int;
}

View File

@ -0,0 +1,13 @@
<?php
namespace Battle\Priem;
class UsePriem
{
public function __construct(Priem $priem) {
$damage = $priem->getPower();
$targets = $priem->getTarget();
}
}

View File

@ -0,0 +1,580 @@
<?php
namespace Battle;
use Battle;
use Helper\Comparsion;
use Helper\Conversion;
class Razmen
{
private array $attackerStats;
private array $targetStats;
private int $uid1;
private int $uid2;
/**
* @param Battle $battle
* @param int $id
* @param array $at
*/
public function __construct(private readonly Battle $battle, private readonly int $id, private array $at)
{
$uid1 = $this->battle->atacks[$this->id]['uid1'];
$uid2 = $this->battle->atacks[$this->id]['uid2'];
$stats1 = $this->battle->stats[$this->battle->uids[$uid1]];
$stats2 = $this->battle->stats[$this->battle->uids[$uid2]];
if ($stats1['yhod'] > 0) {
$uid1 = $this->battle->yhod_user($uid2, $uid1, $stats1['yhod']);
} elseif ($stats2['yhod'] > 0) {
$uid2 = $this->battle->yhod_user($uid1, $uid2, $stats2['yhod']);
}
$this->uid1 = $uid1;
$this->uid2 = $uid2;
$this->attackerStats = $this->battle->stats[$this->battle->uids[$uid1]];
$this->targetStats = $this->battle->stats[$this->battle->uids[$uid2]];
# Переменные - Моё почтение!
# $this->stats[$this->uids[$this->yhod_user($this->atacks[$this->id]['uid2'], $this->atacks[$this->id]['uid1'], $this->stats[$this->uids[$this->atacks[$this->id]['uid1']]]['yhod'])]];
# $this->battle->stats[$this->battle->uids[$this->battle->yhod_user($this->battle->atacks[$this->id]['uid2'], $this->battle->atacks[$this->id]['uid1'], $this->battle->stats[$this->battle->uids[$this->battle->atacks[$this->id]['uid1']]]['yhod'])]];
}
private function updateBattleStats(): void
{
$this->battle->stats[$this->battle->uids[$this->uid1]] = $this->attackerStats;
$this->battle->stats[$this->battle->uids[$this->uid2]] = $this->targetStats;
}
/**
* Расчет парирования Цели (uid2) от Атакующего (uid1)
* @param int $counterstrikecheck
* @param bool $pat
* @param int $loopstart
* @return void
*/
public function parry(int $counterstrikecheck = 0, bool $pat = false, int $loopstart = 0): void
{
if ($pat) {
$tempAt = $this->at;
$this->at = $tempAt['p'];
}
if ($loopstart > 0) {
$loopstart--;
}
if (is_array($this->at[1]['atack'])) {
for ($j = $loopstart; $j < count($this->at[1]['atack']) && $j < 8; $j++) {
if (
!empty($this->targetStats['no_pr1']) ||
$this->at[1]['atack'][$j][2] != $counterstrikecheck ||
$this->mfs(__FUNCTION__, [1 => $this->targetStats['m7'], 2 => $this->attackerStats['m7'],]) != 1 ||
$this->battle->atacks[$this->id]['out2'] != 0
) {
continue;
}
if (!empty($this->attackerStats['nopryh']) || $this->attackerStats['nopryh_act'] > 0) {
continue;
}
// Парировал
$this->attackerStats['nopryh'] = (int)floor($this->attackerStats['nopryh']);
$this->at[1]['atack'][$j][1] = 6;
$this->attackerStats['nopryh']--;
$this->attackerStats['nopryh_act']++;
}
}
if (is_array($this->at[2]['atack'])) {
for ($j = $loopstart; $j < count($this->at[2]['atack']) && $j < 8; $j++) {
if (
!empty($this->attackerStats['no_pr1']) ||
$this->at[2]['atack'][$j][2] != $counterstrikecheck ||
$this->mfs(__FUNCTION__, [1 => $this->attackerStats['m7'], 2 => $this->targetStats['m7'],]) != 1 ||
$this->battle->atacks[$this->id]['out1'] != 0
) {
continue;
}
if (!empty($this->targetStats['nopryh']) || $this->targetStats['nopryh_act'] > 0) {
continue;
}
// Парировал
$this->targetStats['nopryh'] = (int)floor($this->targetStats['nopryh']);
$this->at[2]['atack'][$j][1] = 6;
$this->targetStats['nopryh']--;
$this->targetStats['nopryh_act']++;
}
}
if (isset($tempAt)) {
$tempAt['p'] = $this->at;
$this->at = $tempAt;
}
$this->updateBattleStats();
}
/**
* Расчет блока щитом Цели (uid2) от Атакующего (uid1)
* @param int $counterstrikecheck
* @param bool $pat
* @return void
*/
public function blockByShield(int $counterstrikecheck = 0, bool $pat = false): void
{
if ($pat) {
$tempAt = $this->at;
$this->at = $tempAt['p'];
}
//m8 блок щитом, m18 абсолютный блок щитом
if ($this->targetStats['shield1'] > 0) {
for ($j = 0; $j < count($this->at[1]['atack']) && $j < 8; $j++) {
if (
$this->at[1]['atack'][$j][2] != $counterstrikecheck ||
$this->battle->atacks[$this->id]['out2'] != 0 ||
$this->mfs(__FUNCTION__, $this->targetStats['m8'] / 2 + $this->targetStats['m18']) != 1
) {
continue;
}
$this->at[1]['atack'][$j][1] = 7;
}
}
if ($this->attackerStats['shield1'] > 0) {
for ($j = 0; $j < count($this->at[2]['atack']) && $j < 8; $j++) {
if (
$this->at[2]['atack'][$j][2] != $counterstrikecheck ||
$this->battle->atacks[$this->id]['out1'] != 0 ||
$this->mfs(__FUNCTION__, $this->attackerStats['m8'] / 2 + $this->attackerStats['m18']) != 1
) {
continue;
}
$this->at[2]['atack'][$j][1] = 7;
}
}
if (isset($tempAt)) {
$tempAt['p'] = $this->at;
$this->at = $tempAt;
}
$this->updateBattleStats();
}
/**
* Расчет крита Атакующего (uid1) по Цели (uid2)
* @param bool $pat
* @param int $loopstart
* @return void
*/
public function criticalDamage(bool $pat = false, int $loopstart = 0): void
{
if ($pat) {
$tempAt = $this->at;
$this->at = $tempAt['p'];
}
if ($loopstart > 0) {
$loopstart--;
}
$checkhand = false;
if (is_array($this->at[1]['atack'])) {
for ($j = $loopstart; $j < count($this->at[1]['atack']) && $j < 8; $j++) {
[$data, $checkhand] = $this->getDataArrayByHand($checkhand, $this->attackerStats);
if ($this->mfs(__FUNCTION__, ['mf' => $this->attackerStats['m1'] + $data['sv_m1'], 'amf' => $this->attackerStats['m14'], 'smf' => $this->targetStats['m2']]) != 1) {
continue;
}
$this->at[1]['atack'][$j][1] = match (true) {
$this->at[1]['atack'][$j][1] == 3 => 4, //в блок
!in_array($this->at[1]['atack'][$j][1], [2, 6, 7, 8]) => 5, //обычный крит
default => 1 // а ты что такое?
};
}
}
if (is_array($this->at[2]['atack'])) {
for ($j = $loopstart; $j < count($this->at[2]['atack']) && $j < 8; $j++) {
[$data, $checkhand] = $this->getDataArrayByHand($checkhand, $this->targetStats);
if ($this->mfs(__FUNCTION__, ['mf' => $this->targetStats['m1'] + $data['sv_m1'], 'amf' => $this->targetStats['m14'], 'smf' => $this->attackerStats['m2']]) != 1) {
continue;
}
$this->at[2]['atack'][$j][1] = match (true) {
$this->at[2]['atack'][$j][1] == 3 => 4, //в блок
!in_array($this->at[2]['atack'][$j][1], [2, 6, 7, 8]) => 5, //обычный крит
default => 1 // а ты что такое?
};
}
}
if (isset($tempAt)) {
$tempAt['p'] = $this->at;
$this->at = $tempAt;
}
$this->updateBattleStats();
}
/**
* Расчет уворота Цели (uid2) от Атакующего (uid1)
* @param int $counterstrikecheck
* @param bool $pat
* @param int $loopstart
* @return void
*/
public function evasion(int $counterstrikecheck = 0, bool $pat = false, int $loopstart = 0): void
{
if ($pat) {
$tempAt = $this->at;
$this->at = $tempAt['p'];
}
if ($loopstart > 0) {
$loopstart--;
}
$checkhand = false;
if (is_array($this->at[1]['atack'])) {
for ($j = $loopstart; $j < count($this->at[1]['atack']) && $j < 8; $j++) {
[$data, $checkhand] = $this->getDataArrayByHand($checkhand, $this->attackerStats);
if (
$this->at[1]['atack'][$j][2] != $counterstrikecheck ||
$this->battle->atacks[$this->id]['out2'] != 0 ||
$this->mfs(
__FUNCTION__,
[
'mf' => $this->targetStats['m4'],
'amf' => $this->targetStats['m15'],
'smf' => $this->attackerStats['m5'] + $data['sv_m5'],
'asmf' => $this->attackerStats['m21'],
]
) != 1
) {
continue;
}
$this->attackerStats['nopryh'] = (int)floor($this->attackerStats['nopryh']);
if (!isset($this->attackerStats['nopryh']) || $this->attackerStats['nopryh'] < 1) {
$this->at[1]['atack'][$j][1] = 2;
} else {
$this->attackerStats['nopryh']--;
$this->attackerStats['nopryh_act']++;
}
}
}
if (is_array($this->at[2]['atack'])) {
for ($j = $loopstart; $j < count($this->at[2]['atack']) && $j < 8; $j++) {
[$data, $checkhand] = $this->getDataArrayByHand($checkhand, $this->targetStats);
if (
$this->at[2]['atack'][$j][2] != $counterstrikecheck ||
$this->battle->atacks[$this->id]['out1'] != 0 ||
$this->mfs(
__FUNCTION__,
[
'mf' => $this->attackerStats['m4'],
'amf' => $this->attackerStats['m15'],
'smf' => $this->targetStats['m5'] + $data['sv_m5'],
'asmf' => $this->targetStats['m21'],
]
) != 1
) {
continue;
}
$this->targetStats['nopryh'] = (int)floor($this->targetStats['nopryh']);
if (!isset($this->targetStats['nopryh']) || $this->targetStats['nopryh'] < 1) {
$this->at[2]['atack'][$j][1] = 2;
} else {
$this->targetStats['nopryh']--;
$this->targetStats['nopryh_act']++;
}
}
}
if (isset($tempAt)) {
$tempAt['p'] = $this->at;
$this->at = $tempAt;
}
$this->updateBattleStats();
}
/**
* Расчет контрудара Цели (uid2) по Атакующему (uid1)
* @param int $counterstrikecheck
* @return void
*/
public function counterstrike(int $counterstrikecheck = 0): void //terrorists win!
{
if (is_array($this->at[1]['atack'])) {
for ($j = 0; $j < count($this->at[1]['atack']) && $j < 8; $j++) {
if (
$this->at[1]['atack'][$j][1] != 2 ||
$this->at[1]['atack'][$j][2] != $counterstrikecheck ||
$this->mfs(__FUNCTION__, ['a' => $this->targetStats['m6'], 'b' => $this->attackerStats['m6']]) != 1
) {
continue;
}
$this->at[1]['atack'][$j][1] = 8;
$rand = mt_rand(1, 5);
if ($this->battle->testRazmenblock1($this->id, $this->uid2, $this->uid1)) {
$this->at[2]['atack'][] = [$rand, 3, 0, 1];
} else {
$this->at[2]['atack'][] = [$rand, 1, 0, 1]; // 3 , 0 , 1
}
$this->counterstrikehit(count($this->at[2]['atack']));
}
}
if (is_array($this->at[2]['atack'])) {
for ($j = 0; $j < count($this->at[2]['atack']) && $j < 8; $j++) {
if (
$this->at[2]['atack'][$j][1] != 2 ||
$this->at[2]['atack'][$j][2] != $counterstrikecheck ||
$this->mfs(__FUNCTION__, ['a' => $this->attackerStats['m6'], 'b' => $this->targetStats['m6']]) != 1
) {
continue;
}
$this->at[2]['atack'][$j][1] = 8;
$rand = mt_rand(1, 5);
if ($this->battle->testRazmenblock1($this->id, $this->uid1, $this->uid2)) {
$this->at[1]['atack'][] = [$rand, 3, 0, 1];
} else {
$this->at[1]['atack'][] = [$rand, 1, 0, 1]; // 3 , 0 , 1
}
$this->counterstrikehit(count($this->at[1]['atack']));
}
}
$this->updateBattleStats();
}
/**
* Рассчёт урона.
* @param bool $pat
* @param int $loopstart
* @return void
*/
public function damage(bool $pat = false, int $loopstart = 0): void
{
$yhod = [1 => 0, 0];
if ($this->battle->stats[$this->battle->uids[$this->uid1]]['yhod'] > 0) {
$yhod = [1 => 1, 0];
} elseif ($this->battle->stats[$this->battle->uids[$this->uid2]]['yhod'] > 0) {
$yhod = [1 => 0, 1];
}
if ($pat) {
$tempAt = $this->at;
$this->at = $tempAt['p'];
}
if ($loopstart > 0) {
$loopstart--;
}
$checkhand = false;
if (is_array($this->at[1]['atack'])) {
for ($j = $loopstart; $j < count($this->at[1]['atack']) && $j < 8; $j++) {
[$data, $checkhand, $wp, $witm] = $this->getDataArrayByHand($checkhand, $this->attackerStats);
$this->at[1]['atack'][$j]['wt'] = $witm['type'];
$this->at[1]['atack'][$j]['yhod'] = $yhod[1];
if (
!isset($this->at[1]['atack'][$j]['yron']) &&
in_array($this->at[1]['atack'][$j][1], [1, 4, 5])
) {
$type = 'yron';
} else {
$type = 'block';
}
$this->at[1]['atack'][$j][$type] = $this->battle->yronGetrazmen($this->uid2, $this->uid1, $witm);
if ($this->at[1]['atack'][$j][1] == 4) {
$this->at[1]['atack'][$j][$type]['y_old'] = $this->at[1]['atack'][$j][$type]['y'];
$this->at[1]['atack'][$j][$type]['y'] = (int)round($this->at[1]['atack'][$j][$type]['k'] / 2);
} elseif ($this->at[1]['atack'][$j][1] == 5) {
$this->at[1]['atack'][$j][$type]['y_old'] = $this->at[1]['atack'][$j][$type]['y'];
$this->at[1]['atack'][$j][$type]['y'] = $this->at[1]['atack'][$j][$type]['k'];
}
$this->at[1]['atack'][$j][$type]['2h'] = $data['2h'];
$this->at[1]['atack'][$j][$type]['w'] = $wp;
if ($this->at[1]['atack'][$j][$type]['y'] > 0) {
$this->at[1]['atack'][$j][$type]['r'] = '-' . $this->at[1]['atack'][$j][$type]['y'];
} else {
$this->at[1]['atack'][$j][$type]['r'] = '--';
}
}
}
if (is_array($this->at[2]['atack'])) {
for ($j = $loopstart; $j < count($this->at[2]['atack']) && $j < 8; $j++) {
[$data, $checkhand, $wp, $witm] = $this->getDataArrayByHand($checkhand, $this->targetStats);
$this->at[2]['atack'][$j]['wt'] = $witm['type'];
$this->at[2]['atack'][$j]['yhod'] = $yhod[1];
if (
!isset($this->at[2]['atack'][$j]['yron']) &&
in_array($this->at[2]['atack'][$j][1], [1, 4, 5])
) {
$type = 'yron';
} else {
$type = 'block';
}
$this->at[2]['atack'][$j][$type] = $this->battle->yronGetrazmen($this->uid1, $this->uid2, $witm);
if ($this->at[2]['atack'][$j][1] == 4) {
$this->at[2]['atack'][$j][$type]['y_old'] = $this->at[2]['atack'][$j][$type]['y'];
$this->at[2]['atack'][$j][$type]['y'] = (int)round($this->at[2]['atack'][$j][$type]['k'] / 2);
} elseif ($this->at[2]['atack'][$j][1] == 5) {
$this->at[2]['atack'][$j][$type]['y_old'] = $this->at[2]['atack'][$j][$type]['y'];
$this->at[2]['atack'][$j][$type]['y'] = $this->at[2]['atack'][$j][$type]['k'];
}
$this->at[2]['atack'][$j][$type]['2h'] = $data['2h'];
$this->at[2]['atack'][$j][$type]['w'] = $wp;
if ($this->at[2]['atack'][$j][$type]['y'] > 0) {
$this->at[2]['atack'][$j][$type]['r'] = '-' . $this->at[2]['atack'][$j][$type]['y'];
} else {
$this->at[2]['atack'][$j][$type]['r'] = '--';
}
}
}
if (isset($tempAt)) {
$tempAt['p'] = $this->at;
$this->at = $tempAt;
}
$this->updateBattleStats();
}
/**
* Возвращает массив:
*
* 0 => data предмета в зависимости от руки в которой тот находится,
*
* 1 => флажок проверки руки,
*
* 2 => число слота руки(?!),
*
* 3 => массив параметров предмета для Battle::class->yronGetrazmen()
* @param bool $check
* @param array $stats
* @return array{array,bool,int,array}
*/
private function getDataArrayByHand(bool $check, array $stats): array
{
if (!$check && isset($stats['wp3id'])) { //Левая рука
$wp = 3;
$check = true;
} else { //Правая рука
if (isset($stats['wp14id']) && $stats['items'][$stats['wp14id']]['type'] != 13) {
$wp = 14;
} else {
$wp = 3;
}
$check = false;
}
$witm = $stats['items'][$stats["wp{$wp}id"]];
return [Conversion::dataStringToArray($witm['data']), $check, $wp, $witm];
}
private function mfs(int|string $type, array|int $mf): int
{
if (is_array($mf)) {
$mf = array_map(fn($a) => max($a, 0), $mf);
}
$rval = 0;
if ($type == 'criticalDamage') {
//Крит
if ($mf['mf'] > $mf['smf']) {
$rval = 100 - floor(((($mf['smf']) / ($mf['mf'] + 1)) * 100));
}
$rval = Comparsion::minimax($rval, 0, 75);
if ($mf['amf'] > 0) {
$mf['amf'] = min(100, $mf['amf']);
if (($mf['amf'] * 100) >= mt_rand(1, 10000)) {
$rval = 100;
}
}
} elseif ($type == 'evasion') {
if ($mf['mf'] > $mf['smf']) {
$rval = 100 - floor(((($mf['smf']) / ($mf['mf'] + 1)) * 100)); //2.5
}
$rval = Comparsion::minimax($rval, 0, 75);
if ($mf['asmf'] > 0) {
$mf['asmf'] = min(100, $mf['asmf']);
if ($mf['asmf'] >= mt_rand(1, 100)) {
$rval = 0;
}
}
if ($mf['amf'] >= 0) {
$mf['amf'] = min(100, $mf['amf']);
if ($mf['amf'] >= mt_rand(1, 100)) {
$rval = 100;
}
}
} elseif ($type == 'parry') {
$mf[1] = max($mf[1], 1);
$mf[2] = max($mf[2], 1);
$rval = $mf[1] - $mf[2] / 2;
$rval = Comparsion::minimax($rval, 1, 75);
} elseif ($type == 4) {
$mf = round($mf * 0.6);
$mf = Comparsion::minimax($mf, 0, 100);
$rval = min($mf, 100); //пробой брони
} elseif ($type == 'blockByShield') {
$mf = max($mf, 0);
$rval = min($mf, 85); //блок щитом
} elseif ($type == 'counterstrike') {
//Контрудар
if ($mf['a'] > 0) {
if ($mf['b'] > 0) {
$rval = round($mf['a'] - ($mf['b'] / 2));
} else {
$rval = $mf['a'];
}
}
$rval = Comparsion::minimax($rval, 0, 75);
}
return Helper::getChanse($rval) ? 1 : 0;
}
/**
* Повторный просчёт всего для успешного контрудара.
* @param int $loopstart
* @return void
*/
private function counterstrikehit(int $loopstart): void
{
$this->evasion(1, true, $loopstart);
$this->parry(1, true, $loopstart);
$this->blockByShield(1, true);
$this->criticalDamage(true, $loopstart);
$this->damage(true, $loopstart);
}
public function getAt(): array
{
return $this->at;
}
}

View File

@ -512,9 +512,6 @@ ORDER BY `1price`ASC , inGroupCount DESC'
if ($pl['dn_delete'] > 0) {
$is2 .= '<div style="color:brown;">Предмет будет удален при выходе из подземелья</div>';
}
if ($this->pokol > $pl['geni']) {
$is2 .= '<div style="color:brown">Предмет устарел</div>';
}
if (isset($po['zazuby']) && $po['zazuby'] > 0) {
$is2 .= '<div style="color:brown;">Предмет куплен за зубы</div>';
}

View File

@ -75,13 +75,11 @@ class Config
$c['nosanich'] = true; //Странички Саныча не выпадают - true , выпадают - false
$c['zuby'] = false; //зубы
$c['limitedexp'] = false; //лимит опыта
$c['infinity5level'] = false; //вечные 5 уровни
$c['expstop'] = 2999999; //9; //Опыт на котором останавливаемся 11 149999999
$c['expstopu'] = 2999999; //Опыт на котором останавливаемся
$c['noobgade'] = false; //нуб квест (пещера)
$c['level_ransfer'] = 8; //С какого уровня разрешены передачи
$c['nolevel'] = false; //лимитирование уровней
$c['noitembuy'] = false; //Не требует ресурсы для покупки
$c['effz'] = 0; //Скольким секундам равен заряд
$c['money_haot'] = true; //кр за хаоты

View File

@ -0,0 +1,13 @@
<?php
namespace Core;
class Debug
{
public static function x(): void
{
ini_set('xdebug.var_display_max_depth', 10);
ini_set('xdebug.var_display_max_children', 256);
ini_set('xdebug.var_display_max_data', 1024);
}
}

View File

@ -383,10 +383,12 @@ class FightRequest
/**
* Звуковой пинг в чат?
* @param string $to
* @param int $room
* @return void
* @todo убрать колхоз с условиями когда станет ясно как оно работает.
*/
private function sendSysChatSound(string $to = '', int $room = 0)
private function sendSysChatSound(string $to = '', int $room = 0): void
{
$cmsg = new ChatMessage();
if (empty($to)) {
@ -399,9 +401,9 @@ class FightRequest
} else {
$cmsg->setRoom($room);
}
$cmsg->setCity($this->u->info['city']);
$cmsg->setType(11);
$cmsg->setSound(117);
$cmsg->setText('Ваш бой начался!');
(new Chat())->sendMsg($cmsg);
}
@ -621,6 +623,7 @@ class FightRequest
$nz['time_start'] = 600;
}
if (isset($_POST['mut_hidden'])) {
$nz['invise'] = 1;
}
@ -817,19 +820,17 @@ class FightRequest
return isset($symbols[1]) ? $symbols[0] . '.' . $symbols[1] : $symbols[0] . '.0';
}
public function getEndedBattlesList(string $slogin, int $dt)
public function getEndedBattlesList(string $slogin, int $dt): void
{
$code = PassGen::intCode();
$btl = '';
$see = '';
$usr = Db::getRow('select id, login, level, city from users where login = ? limit 1', [$slogin]);
if (isset($usr['id'])) {
$tms = $dt;
$tmf = $dt + 86400;
$uid = Db::getValue('select id from users where login = ? limit 1', [$slogin]);
if ($uid) {
$sp = Db::getRows(
'select * from battle_last where time >= ? and time < ? and uid = ? order by id desc ',
[$tms, $tmf, $usr['id']]
[$dt, $dt + 86400, $uid]
);
$jk = 0;
$btl_lst = [];
@ -840,11 +841,13 @@ class FightRequest
$tms = [];
$ts = [];
$spi = Db::getRows('select * from battle_last where battle_id = ?', [$pl['battle_id']]);
foreach ($spi as $pli) {
if (!isset($tms[$pli['team']])) {
$ts[] = $pli['team'];
}
$tms[$pli['team']][count($tms[$pli['team']])] = $pli;
$tms[$pli['team']][] = $pli;
}
$k = 0;
while ($k < count($ts)) {
@ -859,7 +862,7 @@ class FightRequest
}
$tm2 .= '<b>' . $tms[$g][$h]['login'] . '</b> [' . $tms[$g][$h]['lvl'] . ']
<a href="info/' . $tms[$g][$h]['uid'] . '" target="_blank">
<img src="' . Config::img() . '/i/inf_capitalcity.gif" alt=""></a>, ';
<img src="' . Config::img() . '/i/inf.gif" alt=""></a>, ';
}
$h++;
}
@ -875,20 +878,24 @@ class FightRequest
$k++;
}
}
if (!isset($btl_lst[$b['id']])) {
if (isset($btl_lst[$b['id']])) {
continue;
}
$btl_lst[$b['id']] = true;
if ($tm == '') {
$tm = 'Данные поединка потеряны';
}
$jk++;
$btl .= $jk . '. <span class=date>' . date(
'd.m.y H:i', $pl['time']
) . '</span> ' . $tm . ' <A HREF="logs.php?log=' . $pl['battle_id'] . '&rnd=' . $code . '" target=_blank>»»</A><br>';
$btl .= $jk . '. <span class=date>' . date('d.m.y H:i', $pl['time']) . '</span> ' .
$tm . ' <a href="/logs.php?log=' . $pl['battle_id'] . '&rnd=' . $code . '" target=_blank>»»</a><br>';
}
}
}
$see .= empty($btl) ? '<div style="font-weight: bold;">В этот день не было боев, или же, летописец опять потерял свитки...</div><hr><br>' : $btl;
echo $see;
echo empty($btl) ?
'<div style="font-weight: bold;">В этот день не было боев, или же, летописец опять потерял свитки...</div><hr><br>' :
$btl;
}
public function getCurrentBattlesList(): void

View File

@ -2,7 +2,6 @@
namespace Magic\Elemental;
use Battle;
use DTO\BattleSpell;
use Helper\Math;

View File

@ -14,7 +14,7 @@ class ActionModel
$this->uid = $uid;
}
public static function new(array $user, string $vals, string $vars, int $time = 0)
public static function new(array $user, string $vals, string $vars, int $time = 0): void
{
if (!$time) {
$time = time();
@ -60,7 +60,7 @@ class ActionModel
);
}
public function deleteByVals(string $vals)
public function deleteByVals(string $vals): void
{
Db::sql('delete from actions where uid = ? and vals = ?', [$this->uid, $vals]);
}
@ -83,4 +83,25 @@ class ActionModel
return !empty($arr) ? $arr : [];
}*/
public function getDailyQuest(): array|false
{
return Db::getRow("select * from actions where uid = ? and vars = 'day_quest' limit 1", [$this->uid]);
}
public function getFinishedDailyQuestTasks(int $timeout): array
{
$arr = [];
$counter = Db::getRows(
"select count(*) as c, vars
from actions
where vars in ('end_trup', 'end_xaot', 'psh0', 'trup_sun', 'izlom', 'win') and time > ? and uid = ?
group by vars",
[$timeout, $this->uid]
);
foreach ($counter as $c) {
$arr[$c['vars']] = $c['c'];
}
return $arr;
}
}

View File

@ -0,0 +1,48 @@
<?php
namespace Model;
use Core\Db;
use stdClass;
readonly class BattleModel
{
public stdClass $battle;
public array $battleArray;
private array $all;
public function __construct(int $id) {
$this->all = Db::getRows('select * from battle');
if (empty($id)) {
$this->battle = new stdClass();
$this->battleArray = [];
} else {
foreach ($this->all as $b) {
if ($b['id'] != $id) {
continue;
}
$this->battle = (object)$b;
$this->battleArray = get_object_vars($this->battle);
return;
}
}
}
public static function countClanWars(int $clanid): array
{
$today = (new \DateTimeImmutable('now 00:00:00'))->getTimestamp();
$sql = "select count(id) from battle where
type = 250 and
time_over > ? and
(team_win = ? and clan1 = ?) or (team_win = ? and clan2 = ?)";
$count1 = Db::getValue($sql, [$today, 1, $clanid, 2, $clanid]);
$count2 = Db::getValue($sql, [$today, 2, $clanid, 1, $clanid]);
return [
$count1 ?? 0,
$count2 ?? 0,
];
}
}

View File

@ -84,7 +84,7 @@ class Priems
$mpNow = $this->zeromax($btl->stats[$btl->uids[$uid]]['mpNow'], $btl->stats[$btl->uids[$uid]]['mpAll']);
if ($mpNow > 0) {
Db::sql(
'update stats set mpNow = ? where id = ?',
'update stats set mpnow = ? where id = ?',
[$btl->stats[$btl->uids[$uid]]['mpNow'], $uid]
);
}
@ -113,7 +113,7 @@ class Priems
$u = $this->u; // Для присоедиянемых файлов.
$return_main = true;
$ue = Db::getRow(
'select * from users left join stats on (users.id = stats.id) where users.id = ? and battle = ? and hpNow > 0',
'select * from users left join stats on (users.id = stats.id) where users.id = ? and battle = ? and hpnow > 0',
[$eff['uid'], $btl->info['id']]
);
@ -781,8 +781,7 @@ class Priems
$krituet = true,
$heal = 0,
$namenew = null
)
{
) {
$trawm_off = false;
global $btl;
if ($namenew != null) {
@ -961,7 +960,8 @@ class Priems
);
//заносим в лог боя
$vLog = 'time1=' . time() . '||s1=' . $btl->users[$btl->uids[$usu]]['sex'] . '||t1=' . $btl->users[$btl->uids[$usu]]['team'] . '||login1=' . $btl->users[$btl->uids[$usu]]['login'] . '||s2=' . $btl->users[$btl->uids[$uen]]['sex'] . '||t2=' . $btl->users[$btl->uids[$uen]]['team'] . '||login2=' . $btl->users[$btl->uids[$uen]]['login'] . '';
$vLog = 'time1=' . time(
) . '||s1=' . $btl->users[$btl->uids[$usu]]['sex'] . '||t1=' . $btl->users[$btl->uids[$usu]]['team'] . '||login1=' . $btl->users[$btl->uids[$usu]]['login'] . '||s2=' . $btl->users[$btl->uids[$uen]]['sex'] . '||t2=' . $btl->users[$btl->uids[$uen]]['team'] . '||login2=' . $btl->users[$btl->uids[$uen]]['login'] . '';
$mas1 = [
'time' => time(),
'battle' => $btl->info['id'],
@ -1392,18 +1392,18 @@ class Priems
}
}
if (isset($btl->stats[$btl->uids[$this->u->info['id']]]['nousepriem']) && $btl->stats[$btl->uids[$this->u->info['id']]]['nousepriem'] > 0 && $pl['nosh'] == 0) {
if ($btl->stats[$btl->uids[$this->u->info['id']]]['noshock_voda'] > 0 && substr(
$pl['img'], 0,
10
) == 'wis_water_') {
//вода
} else {
if (
isset($btl->stats[$btl->uids[$this->u->info['id']]]['nousepriem']) &&
$btl->stats[$btl->uids[$this->u->info['id']]]['nousepriem'] > 0 &&
$pl['nosh'] == 0 &&
($btl->stats[$btl->uids[$this->u->info['id']]]['noshock_voda'] <= 0 || !str_starts_with($pl['img'], 'wis_water_'))
) {
$notr++;
}
}
if ($pl['id'] == $btl->stats[$btl->uids[$this->u->info['id']]]['notuse_last_pr']) {
if (isset($btl->stats[$btl->uids[$this->u->info['id']]]['notuse_last_pr']) &&
$pl['id'] == $btl->stats[$btl->uids[$this->u->info['id']]]['notuse_last_pr']) {
$notr++;
}
@ -1423,7 +1423,7 @@ class Priems
if ($pl['xuse'] > 0) {
$xu = $this->u->testAction(
'`vars` = "use_priem_' . $btl->info['id'] . '_' . $this->u->info['id'] . '" AND `vals` = "' . $pl['id'] . '" LIMIT ' . $pl['xuse'] . '',
'`vars` = "use_priem_' . $btl->info['id'] . '_' . $this->u->info['id'] . '" AND `vals` = "' . $pl['id'] . '" LIMIT ' . $pl['xuse'],
2
);
if ($xu[0] >= $pl['xuse']) {
@ -1609,8 +1609,7 @@ class Priems
$noupdatebtl = 0,
$noplus = 0,
$pname = null
)
{
) {
global $btl;
//$pl = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = ' . (int)$pr));
$pl = Db::getRow('select * from priems where id = ?', [$pr]);
@ -1664,7 +1663,7 @@ class Priems
unset($num);
}
if (!isset($num['id'])) {
$q = 'insert into eff_users (tr_life_user, bj, user_use, hod, v2, img2, id_eff, uid, name, data, overType, timeUse, v1) values (?,?,?,?,?,?,?,?,?,?,?,?,?)';
$q = 'insert into eff_users (tr_life_user, bj, user_use, hod, v2, img2, id_eff, uid, name, data, overtype, timeuse, v1) values (?,?,?,?,?,?,?,?,?,?,?,?,?)';
$image = !empty($pl['img']) ? $pl['img'] : $pl['id'];
$name = !empty($pname) ? $pname : $pl['name'];
$image .= '.gif';
@ -1977,7 +1976,8 @@ class Priems
} else {
//бьем противника с пропуском хода
mysql_query(
'INSERT INTO `battle_act` (`battle`,`uid1`,`uid2`,`time`,`out1`,`type`,`tpo1`) VALUES ("' . $btl->info['id'] . '","' . $this->u->info['id'] . '","' . $this->u->info['enemy'] . '","' . time() . '","1","1","2")'
'INSERT INTO `battle_act` (`battle`,`uid1`,`uid2`,`time`,`out1`,`type`,`tpo1`) VALUES ("' . $btl->info['id'] . '","' . $this->u->info['id'] . '","' . $this->u->info['enemy'] . '","' . time(
) . '","1","1","2")'
);
}
}
@ -2081,9 +2081,11 @@ class Priems
);
if ($upd) {
TrainingManager::getInstance()
->addPoint('my_user_fourth_quest', function (TrainingManager $manager) {
->addPoint(
'my_user_fourth_quest', function (TrainingManager $manager) {
$manager->store();
});
}
);
$this->u->info['priems'] = $p;
}
} else {
@ -2097,12 +2099,16 @@ class Priems
public function getTechniquesInfo(?int $id = null): array
{
if (isset($id)) {
return Db::getRow('SELECT * FROM techniques_categories LEFT JOIN priems ON techniques_categories.technique_id = priems.id
WHERE priems.level <= ? AND priems.activ > 0 AND priems.id = ? ORDER BY priems.img,priems.level', [User::start()->info['level'], $id]);
return Db::getRow(
'select * from techniques_categories left join priems on techniques_categories.technique_id = priems.id
where priems.level <= ? and priems.activ > 0 and priems.id = ? order by priems.img,priems.level', [User::start()->info['level'], $id]
);
}
return Db::getRows('SELECT * FROM techniques_categories LEFT JOIN priems ON techniques_categories.technique_id = priems.id
WHERE priems.level <= ? AND priems.activ > 0 ORDER BY priems.img,priems.level', [User::start()->info['level']]);
return Db::getRows(
'select * from techniques_categories left join priems on techniques_categories.technique_id = priems.id
where priems.level <= ? and priems.activ > 0 order by priems.img,priems.level', [User::start()->info['level']]
);
}
public function seeMy($t)
@ -2294,7 +2300,9 @@ class Priems
echo
<<< HTML
<a href="javascript:void(0)" onclick="location.href='main.php?skills=1&rz=4&use_priem=$priem[id]';">
<img class="pwq$priem[category_id] pwqall" onMouseOver="top.popup(this, '(#$priem[id]) <b>$priem[name]</b><Br>{$this->priemInfo($priem, 1)[0]}');" onMouseOut="top.hic();" onMouseDown="top.hic();" style="display:none;margin-top:2px; $cl margin-left:1px;" src="//img.new-combats.tech/i/eff/$priem[img].gif" width="40" height="25" />
<img class="pwq$priem[category_id] pwqall" onMouseOver="top.popup(this, '(#$priem[id]) <b>$priem[name]</b><Br>{$this->priemInfo(
$priem, 1
)[0]}');" onMouseOut="top.hic();" onMouseDown="top.hic();" style="display:none;margin-top:2px; $cl margin-left:1px;" src="//img.new-combats.tech/i/eff/$priem[img].gif" width="40" height="25" />
</a>
HTML;
}
@ -2358,7 +2366,7 @@ class Priems
$btl->stats[$btl->uids[$u1]]['hpNow'] = $pvr['hpNow'];
Db::sql('update stats set hpNow = ? where id = ?', [$btl->stats[$btl->uids[$u1]]['hpNow'], $u1]);
Db::sql('update stats set hpnow = ? where id = ?', [$btl->stats[$btl->uids[$u1]]['hpNow'], $u1]);
$color = $this->logColor[self::FIRE];
$prv['text'] = '{u2} утратил здоровье от &quot;{pr}&quot; ';
@ -2444,7 +2452,7 @@ class Priems
$btl->stats[$btl->uids[$this->ue['id']]]['hpNow'] = $this->ue['hpNow'];
Db::sql('update stats set hpNow = ? where id = ?', [$this->ue['hpNow'], $this->ue['id']]);
Db::sql('update stats set hpnow = ? where id = ?', [$this->ue['hpNow'], $this->ue['id']]);
if ($isMiss) {
$color = $this->logColor['miss'];
@ -2623,7 +2631,7 @@ class Priems
$uu = $pl['id'] === 260 ? '' : $this->u->info['id'];
Db::sql(
'insert into eff_users (hod, v1, v2, img2, id_eff, uid, name, data, overType, timeUse, user_use) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
'insert into eff_users (hod, v1, v2, img2, id_eff, uid, name, data, overtype, timeuse, user_use) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
[$hd1, 'priem', $pl['id'], $pl['img'] . '.gif', 22, $uid, $pl['name'], $data, 0, $tm, $uu]
);
@ -2765,7 +2773,7 @@ class Priems
$q = 'select stats as data from stats where id = ?
union all select stats as data from test_bot where id = ?
union all select data from eff_users where `delete` = 0 and uid = ?
union all select data from items_users where inOdet > 0 and `delete` = 0 and uid = ?';
union all select data from items_users where inodet > 0 and `delete` = 0 and uid = ?';
$datas = Db::getColumn($q, array_fill(0, 3, $this->ue['id']));
$stats = array_fill_keys(['s1', 's2', 's3', 's5', 's6'], 0);
foreach ($datas as $data) {

View File

@ -433,7 +433,7 @@ class Quests
}
if (isset($d['add_rep'])) {
$t .= 'Репутация ' . $u->city_name[$pl['city']] . ': ' . $d['add_rep'] . '<br>';
$t .= 'Репутация ' . $pl['city'] . ': ' . $d['add_rep'] . '<br>';
}
if (isset($d['add_repizlom'])) {
@ -582,7 +582,7 @@ class Quests
return $r;
}
public function testquest()
public function testquest(): void
{
global $u;
if ($u->info['battle'] == 0 && $u->room['name'] != 'Башня Смерти') {
@ -749,12 +749,9 @@ class Quests
}
unset($x, $i, $ii, $ex, $x2, $bot2, $ex2);
if ($pl['city'] != '') {
$t .= '' . $d['add_rep'] . ' ед. репутации ' . $u->city_name[$pl['city']] . ', ';
$t .= '' . $d['add_rep'] . ' ед. репутации ' . $pl['city'] . ', ';
$rep = mysql_fetch_array(mysql_query('SELECT * FROM `rep` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'));
// Рыцарки
/*if($rep['rep'.$pl['city']] < 10000 && $rep['rep'.$pl['city']] + $d['add_rep'] >= 10000 && $pl['kin'] != 1) {
$rep['rep'.$pl['city']] = 9999;
} else*/
if ($rep['rep' . $pl['city']] < 24999 && $rep['rep' . $pl['city']] + $d['add_rep'] >= 24999 && $pl['kin'] != 2) {
$rep['rep' . $pl['city']] = 24999;
} else {
@ -976,7 +973,7 @@ class Quests
if ($this->stats['more_awards'] >= 0) {
$d['add_rep'] += $d['add_rep'] / 100 * 50;
}
$t .= '' . $d['add_rep'] . ' ед. репутации ' . $u->city_name[$quest['city']] . ', ';
$t .= '' . $d['add_rep'] . ' ед. репутации ' . $quest['city'] . ', ';
if (
$rep['rep' . $quest['city']] < 24999 &&
$rep['rep' . $quest['city']] + $d['add_rep'] >= 24999 &&

View File

@ -9,6 +9,7 @@ use Model\ActionModel;
use User\Effects;
use User\InfoBox;
use User\ItemsModel;
use User\Login;
use User\Reputation;
use User\Stats;
use User\UserCalculatedStats;
@ -17,7 +18,6 @@ use User\UserStats;
class User
{
private static ?self $flag_one = null;
public int $pokol = 2; //Акктуальное поколение предметов
public array $aves = ['now' => 0, 'max' => 0];
public array $room = [];
public array $align_nm = [
@ -26,34 +26,6 @@ class User
3 => 'Тьма',
7 => 'Нейтралитет',
];
public array $mod_nm = [
0 => [0 => ''],
1 => [
'1' => 'Свет',
'1.1' => 'Паладин Поднебесья',
'1.4' => 'Таможенный Паладин',
'1.5' => 'Паладин Солнечной Улыбки',
'1.6' => 'Инквизитор',
'1.7' => 'Паладин Огненной Зари',
'1.75' => 'Паладин-Хранитель',
'1.9' => 'Паладин Неба',
'1.91' => 'Старший Паладин Неба',
'1.92' => 'Ветеран Ордена',
'1.99' => 'Верховный Паладин',
],
3 => [
'3' => 'Тьма',
'3.01' => 'Тарман-Служитель',
'3.05' => 'Тарман-Надсмотрщик',
'3.06' => 'Каратель',
'3.07' => 'Тарман-Убийца',
'3.075' => 'Тарман-Хранитель',
'3.09' => 'Тарман-Палач',
'3.091' => 'Тарман-Владыка',
'3.092' => 'Ветеран Армады',
'3.99' => 'Тарман Патриарх',
],
];
public array $rgd = [0 => 0, 1 => 0];
public array $city_name = [
'emeraldscity' => 'Emeralds city',
@ -584,25 +556,35 @@ class User
public string $error = '';
public array $info = [];
public array $rep;
public $tfer;
public $stats;
/** Для переводов персонажа */
public array|false $tfer;
public array $stats;
private InfoBox $infoBox;
private Reputation $reputation;
private Stats $userStats;
private function __construct()
private function __construct(int $uid = 0)
{
if (empty($_SESSION['uid']) && empty($_COOKIE['login'])) {
if (empty($_SESSION['uid']) && empty($_COOKIE['login']) && empty($uid)) {
return;
}
$user = !empty($_SESSION['uid']) ? $_SESSION['uid'] : $_COOKIE['login'];
$user = match (true) {
!empty($uid) => $uid,
!empty($_SESSION['uid']) => $_SESSION['uid'],
default => $_COOKIE['login']
};
$this->info = self::getInfo($user);
unset($user);
Database::init(); // для всяких mysql_*
$this->userStats = new Stats($this);
//$this->getStats($this->info); // Бля, а вдруг?
$this->stats = $this->userStats->getStats($this->info);
$this->infoTasks();
if (Core\Config::get('securetime') > 0) {
@ -813,11 +795,18 @@ class User
}
//Выделяем передачи
$this->tfer = 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'
)
$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']]
);
if ($this->tfer) {
if ($this->tfer['uid1'] == $this->tfer['uid2']) {
$this->tfer = false;
@ -891,11 +880,11 @@ class User
$cmp = Db::getValue('select val from save_com where uid = ? and id = ?', [$this->info['id'], (int)$_GET['usec1']]);
if ($cmp) {
//снимаем все вещи
Db::sql('update items_users set inOdet = 0 where uid = ?', [$this->info['id']]);
Db::sql('update items_users set inodet = 0 where uid = ?', [$this->info['id']]);
//одеваем вещи, если они не удалены
$cm = Conversion::dataStringToArray($cmp);
foreach ($cm as $slot => $itemid) {
Db::sql('update items_users set inOdet = ? where id = ? and uid = ? and inShop = 0', [(int)$slot, (int)$itemid, $this->info['id']]);
Db::sql('update items_users set inodet = ? where id = ? and uid = ? and inshop = 0', [(int)$slot, (int)$itemid, $this->info['id']]);
}
}
@ -1013,7 +1002,7 @@ class User
$j++;
}
if ($tritm != '' && !$tr) {
$this->error = 'Необходимы предметы: ' . $tritm . '';
$this->error = 'Необходимы предметы: ' . $tritm;
}
}
while ($x < count($t)) {
@ -1029,7 +1018,7 @@ class User
mysql_query(
'UPDATE `users` SET `obraz` = "' . $o['img'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'
);
$this->addAction(time(), 'sel_obraz', 'id=' . $o['id'] . '');
$this->addAction(time(), 'sel_obraz', 'id=' . $o['id']);
$this->info['obraz'] = $o['img'];
}
} else {
@ -1044,7 +1033,7 @@ class User
} else {
$this->error = 'Выбирать образ можно не чаще одного раза в сутки, следующая смена ' . date(
'd.m.Y H:i', $sm['time'] + 86400
) . '';
);
unset($_GET['obr_sel']);
$_GET['inv'] = 1;
}
@ -1115,9 +1104,6 @@ class User
return;
}
$this->userStats = new Stats($this);
//$this->getStats($this->info); // Бля, а вдруг?
$this->stats = $this->userStats->getStats($this->info);
$this->info['achiv'] = Db::getRow('select * from users_achiv where id = ?', [$this->info['id']]);
if (!isset($this->info['achiv']['id'])) {
@ -1365,12 +1351,13 @@ class User
//Расчет защиты (магия)
/** Singletone.
* @param int $uid
* @return User
*/
public static function start(): User
public static function start(int $uid = 0): User
{
if (!isset(self::$flag_one)) {
self::$flag_one = new self();
self::$flag_one = new self($uid);
}
return self::$flag_one;
}
@ -1401,13 +1388,10 @@ class User
where users.id = ?',
[$uid]
);
$imgBase = Config::img() . DIRECTORY_SEPARATOR . 'i';
$alignStr = empty($align) ? '' : "<img src='$imgBase/align/align$align.gif' alt=''>";
$clanStr = empty($clanName) ? '' : "<img src='$imgBase/clan/$clanName.gif' alt='$clanName'>";
$spacedLogin = str_replace(' ', '%20', $login);
$loginLink = "<a href='/inf.php?login=$spacedLogin' target='_blank'><img src='img/inf.gif' title='Инф. о $login' alt='Инф. о $login'></a>";
return "$alignStr$clanStr<strong>$login</strong> [$level]$loginLink";
if (!isset($login)) {
return "uid:$uid";
}
return (new Login($align, $clanName, $level, $login))->fullLogin;
}
public function dayquest(int $id): string
@ -1465,11 +1449,11 @@ class User
}
$this->error = 'Вы успешно восстановили ' . round($this->stats['hpAll'] - $this->stats['hpNow']) . ' HP.';
Db::sql(
'insert into vortex (uid, room, time, val, type) VALUES (?,?,unix_timestamp(),?,1)',
'insert into vortex (uid, room, time, val, type) values (?,?,unix_timestamp(),?,1)',
[$this->info['id'], $this->info['room'], round($this->stats['hpAll'] - $this->stats['hpNow'])]
);
$this->stats['hpNow'] = $this->stats['hpAll'];
Db::sql('update stats set hpNow = ? where id = ?', [$this->stats['hpNow'], $this->info['id']]);
Db::sql('update stats set hpnow = ? where id = ?', [$this->stats['hpNow'], $this->info['id']]);
}
} elseif (isset($_GET['vmp'])) {
$v = Db::getValue('select time from vortex where uid = ? and type = 2 order by time desc limit 1');
@ -1482,11 +1466,11 @@ class User
}
$this->error = 'Вы успешно восстановили ' . round($this->stats['mpAll'] - $this->stats['mpNow']) . ' MP.';
Db::sql(
'insert into vortex (uid, room, time, val, type) VALUES (?,?,unix_timestamp(),?,2)',
'insert into vortex (uid, room, time, val, type) values (?,?,unix_timestamp(),?,2)',
[$this->info['id'], $this->info['room'], round($this->stats['mpAll'] - $this->stats['mpNow'])]
);
$this->stats['mpNow'] = $this->stats['mpAll'];
Db::sql('update stats set mpNow = ? where id = ?', [$this->stats['mpNow'], $this->info['id']]);
Db::sql('update stats set mpnow = ? where id = ?', [$this->stats['mpNow'], $this->info['id']]);
}
}
@ -1532,7 +1516,7 @@ class User
if ($an <= 0) {
return;
}
Db::sql('replace into users_align (uid, time, align) VALUES (?,unix_timestamp(),?)', [$uid, floor($an)]);
Db::sql('replace into users_align (uid, time, align) values (?,unix_timestamp(),?)', [$uid, floor($an)]);
}
@ -1987,7 +1971,7 @@ class User
//копируем пользователя
Db::sql(
"insert into users (align, login, level, pass, city, cityreg, name, sex, timereg, obraz, bot_id, inTurnir) values (?,?,?,uuid(),'Неведомые земли','Неведомые земли',?,?,?,?,?,?)",
"insert into users (align, login, level, pass, city, cityreg, name, sex, timereg, obraz, bot_id, inturnir) values (?,?,?,uuid(),'Неведомые земли','Неведомые земли',?,?,?,?,?,?)",
[
$clon['align'] ?? 0,
$clon['login'],
@ -2027,17 +2011,17 @@ class User
$uid = (int)Db::lastInsertId();
//копируем статы
Db::sql('insert into stats (clone, id, stats, hpNow, upLevel, bot, priems) values (?,?,?,1000000,?,1,?)', [$clon['id'], $uid, $clon['stats'], $clon['upLevel'], $clon['priems']]);
Db::sql('insert into stats (clone, id, stats, hpnow, uplevel, bot, priems) values (?,?,?,1000000,?,1,?)', [$clon['id'], $uid, $clon['stats'], $clon['upLevel'], $clon['priems']]);
//копируем предметы
Db::sql(
"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 = ?",
"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 = ?",
[$uid, $clon['id']]
);
//копируем эффекты
Db::sql(
"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'",
"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'",
[$uid, $clon['id']]
);
@ -2047,7 +2031,7 @@ class User
} else {
$bot = Db::getRow('select id, login, stats, upLevel, itemsUse from test_bot where id = ?', [$id]);
$bot = Db::getRow('select id, login, stats, uplevel, itemsuse from test_bot where id = ?', [$id]);
if (!isset($bot['id'])) {
return [];
@ -2088,7 +2072,7 @@ class User
$bot['stats'] = Conversion::arrayToDataString($statss);
unset($statss);
}
Db::sql('insert into stats (id, stats, hpNow, upLevel, bot) values (?,?,1000000,?,1)', [$uid, $bot['stats'], $bot['upLevel']]);
Db::sql('insert into stats (id, stats, hpnow, uplevel, bot) values (?,?,1000000,?,1)', [$uid, $bot['stats'], $bot['upLevel']]);
$bot['id'] = $uid;
$bot['logins_bot'] = $logins_bot;
@ -2109,7 +2093,7 @@ class User
$w3b = 1;
}
}
Db::sql('update items_users set inOdet = ? where id = ?', [$inslot, $iditem]);
Db::sql('update items_users set inodet = ? where id = ?', [$inslot, $iditem]);
}
return $bot;
}
@ -2188,7 +2172,7 @@ class User
public function freeStatsMod($id, $s, $uid): void
{
$itm = Db::getValue('select data from items_users where id = ? and uid = ? and inShop = 0 and inOdet = 0', [$id, $uid]);
$itm = Db::getValue('select data from items_users where id = ? and uid = ? and inshop = 0 and inodet = 0', [$id, $uid]);
if (!isset($itm)) {
return;
@ -2236,7 +2220,7 @@ class User
public function freeStatsItem(int $id, int $s, int $uid): void
{
$itm = Db::getValue('select data from items_users where id = ? and uid = ? and inShop = 0 and inOdet = 0', [$id, $uid]);
$itm = Db::getValue('select data from items_users where id = ? and uid = ? and inshop = 0 and inodet = 0', [$id, $uid]);
if (!$itm || $s != 1 && $s != 2 && $s != 3 && $s != 5) {
return;
}
@ -2253,7 +2237,7 @@ class User
public function freeStats2Item(int $id, int $s, int $uid, int $tp): void
{
$itm = Db::getRow('select id, data, so from items_users where id = ? and uid = ? and inShop = 0 and inOdet = 0', [$id, $uid]);
$itm = Db::getRow('select id, data, so from items_users where id = ? and uid = ? and inshop = 0 and inodet = 0', [$id, $uid]);
if (!isset($itm['id']) || $itm['so'] <= 0) {
return;
}
@ -2323,7 +2307,7 @@ class User
public function obj_addItem(int $id): void
{
$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]);
$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]);
if ($this->info['transfers'] < 1) {
$this->error = 'На сегодня лимит передач исчерпан.';
return;
@ -2332,25 +2316,25 @@ class User
return;
}
if ($itm['inGroup'] > 0 && $this->itemsX($id) > 1) {
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']]);
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']]);
} else {
Db::sql('update items_users set inshop = 1 where inShop != 30 and uid = ? and id = ? and inOdet = 0', [$this->info['id'], $id]);
Db::sql('update items_users set inshop = 1 where inshop != 30 and uid = ? and id = ? and inodet = 0', [$this->info['id'], $id]);
}
}
public function itemsX(int $id, $uid = null, $item_id = null): bool|int
{
//fixme какая-то дичь тут.
$item = Db::getRow('select uid, item_id, inGroup, inShop from items_users where id = ?', [$id]);
$item = Db::getRow('select uid, item_id, ingroup, inshop from items_users where id = ?', [$id]);
return Db::getValue(
'select count(id) from items_users where inShop = ? and item_id = ? and uid = ? and inGroup = ?',
'select count(id) from items_users where inshop = ? and item_id = ? and uid = ? and ingroup = ?',
[$item['inShop'], $item['item_id'], $item['uid'], $item['ingroup']]
);
}
public function obj_takeItem($id): void
{
$itm = Db::getRow('select id, inGroup from items_users where id = ? and uid = ? and inOdet = 0 and inShop = 0');
$itm = Db::getRow('select id, ingroup from items_users where id = ? and uid = ? and inodet = 0 and inshop = 0');
if ($this->info['transfers'] < 1) {
$this->error = 'На сегодня лимит передач исчерпан.';
return;
@ -2359,15 +2343,15 @@ class User
return;
}
if ($itm['inGroup'] > 0 && $this->itemsX($id) > 1) {
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']]);
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']]);
} else {
Db::sql('update items_users set inshop = 0 where inShop != 30 and uid = ? and id = ? and inOdet = 0', [$this->info['id'], $id]);
Db::sql('update items_users set inshop = 0 where inshop != 30 and uid = ? and id = ? and inodet = 0', [$this->info['id'], $id]);
}
}
public function itemsSmSave(int $id, int $s, int $uid): void
{
$itm = Db::getValue('select data from items_users where id = ? and uid = ? and inShop = 0 and inOdet = 0', [$id, $uid]);
$itm = Db::getValue('select data from items_users where id = ? and uid = ? and inshop = 0 and inodet = 0', [$id, $uid]);
if (!$itm) {
return;
}
@ -2619,7 +2603,7 @@ class User
//-----------------------------------------------
$idt = mysql_fetch_array(
mysql_query(
'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`geni`,`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'
'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'
)
);
@ -2664,7 +2648,7 @@ class User
}
//Новая чарка
$srune = mysql_query('SELECT * FROM `new_charov` WHERE 1');
$srune = mysql_query('select * from new_charov where 1');
$irun = 0;
while ($nrune = mysql_fetch_array($srune)) {
$irun++;
@ -2711,7 +2695,7 @@ class User
} elseif ($rune['type'] == 62) {
$idt = mysql_fetch_array(
mysql_query(
'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`geni`,`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'
'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'
)
);
if ($idt['type'] == 7) {
@ -3011,7 +2995,7 @@ class User
} elseif ($rune['type'] == 46) {
$idt = mysql_fetch_array(
mysql_query(
'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`geni`,`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']
'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']
)
);
if ($idt['type'] == 5) {
@ -3190,7 +3174,7 @@ class User
} elseif ($rune['type'] == 68) {
$idt = mysql_fetch_array(
mysql_query(
'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`geni`,`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'
'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'
)
);
if ($idt['type'] == 5) {
@ -3310,7 +3294,6 @@ class User
`im`.`overTypei`,
`im`.`group`,
`im`.`group_max`,
`im`.`geni`,
`im`.`ts`,
`im`.`srok`,
`im`.`class`,
@ -3371,7 +3354,7 @@ class User
`im`.`magic_inci`, `im`.`overTypei`,
`im`.`group`,
`im`.`group_max`,
`im`.`geni`, `im`.`ts`,
`im`.`ts`,
`im`.`srok`,
`im`.`class`, `im`.`class_point`,
`im`.`anti_class`, `im`.`anti_class_point`,
@ -4241,10 +4224,6 @@ class User
$is2 .= '<div style="color:brown;">Предмет будет удален при выходе из подземелья</div>';
}
if ($this->pokol > $pl['geni']) {
$is2 .= '<div style="color:brown">Предмет устарел</div>';
}
if (isset($po['zazuby']) && $po['zazuby'] > 0) {
$is2 .= '<div style="color:brown;">Предмет куплен за зубы</div>';
}
@ -4867,7 +4846,6 @@ class User
`im`.`overTypei`,
`im`.`group`,
`im`.`group_max`,
`im`.`geni`,
`im`.`ts`,
`im`.`srok`,
`im`.`class`,
@ -4983,7 +4961,6 @@ class User
`im`.`overTypei`,
`im`.`group`,
`im`.`group_max`,
`im`.`geni`,
`im`.`ts`,
`im`.`srok`,
`im`.`class`,
@ -5064,7 +5041,7 @@ class User
$i = 0;
do { //fixme ужасный цикл, ужасный запрос.
$i++;
$gr = Db::getValue('select inGroup from items_users where uid = ? and inGroup = ? and item_id = ?', [$uid, $i, $item]);
$gr = Db::getValue('select ingroup from items_users where uid = ? and ingroup = ? and item_id = ?', [$uid, $i, $item]);
if (empty($gr)) {
$g = 1;
@ -5107,24 +5084,24 @@ class User
item_id,
time_create,
time_sleep,
timeOver,
timeover,
name,
overType,
inOdet,
iznosNOW,
iznosMAX,
iznosMAXi
overtype,
inodet,
iznosnow,
iznosmax,
iznosmaxi
from items_users
left join items_main on items_main.id = item_id
where
(
inOdet != 0 or
inodet != 0 or
data like '%srok%' or
data like '%vip_sale%' or
data like '%sudba=1%' or
iznosNOW > 0 or
iznosnow > 0 or
srok > 0 or
(timeOver !=0 and timeOver < unix_timestamp())
(timeover !=0 and timeover < unix_timestamp())
) and uid = ?",
[$u['id']]
);
@ -5141,7 +5118,9 @@ class User
$notr++;
}
}
if ($itm['iznosNOW'] >= ceil($itm['iznosMAX']) && $itm['iznosMAXi'] != 999999999) {
if (isset($itm['iznosNOW'], $itm['iznosMAX'], $itm['iznosMAXi']) &&
$itm['iznosNOW'] >= ceil($itm['iznosMAX']) &&
$itm['iznosMAXi'] != 999999999) {
$notr++;
}
if ($notr > 0 && $itm['inOdet'] != 0) {
@ -5240,7 +5219,7 @@ class User
return 0;
}
$sql = 'select count(*) from items_users where id = ? and inOdet != 0';
$sql = 'select count(*) from items_users where id = ? and inodet != 0';
$args = [$id];
if ($uid > 0) {
$sql .= ' and uid = ?';
@ -5250,7 +5229,7 @@ class User
if (empty(Db::getValue($sql, $args))) {
return 0;
}
Db::sql('update items_users set lastUPD = unix_timestamp(), inOdet = 0 where id = ?', [$id]);
Db::sql('update items_users set lastupd = unix_timestamp(), inodet = 0 where id = ?', [$id]);
if (isset($_GET['remitem']) || isset($_GET['sid'])) {
$this->info['autospell'] = 1;
Db::sql('update users set autospell = 1 where id = ?', [$this->info['id']]);
@ -5282,7 +5261,7 @@ class User
public function btlMagicList(): string
{
$sv = array_fill(1, 10, '<img class="nopriemuse" title="Пустой слот магия" src="' . Config::img() . '/i/items/w/w101.gif" alt="">');
$sv = array_fill(1, 12, '<img class="nopriemuse" title="Пустой слот магия" src="' . Config::img() . '/i/items/w/w101.gif" alt="">');
foreach ($this->stats['items'] as $stat) {
if (!in_array($stat['inslot'], [40, 51])) {
@ -5335,7 +5314,7 @@ class User
public function endEffect($id, $u): int
{
$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]);
$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]);
if (!isset($e['id'])) {
return 0;
@ -5391,11 +5370,15 @@ class User
{
$r = '';
$sp = Db::getRows(
'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',
'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',
[$this->info['id']]
);
foreach ($sp as $pl) {
if ($pl['iznosNOW'] <= ceil($pl['iznosMAX'] * 0.80)) {
if (
!isset($pl['iznosMAX']) ||
!isset($pl['iznosNOW']) ||
$pl['iznosNOW'] <= ceil($pl['iznosMAX'] * 0.80)
) {
continue;
}
$r .= '<strong>' . $pl['name'] . '</strong> [<span style="color: brown">' . floor($pl['iznosNOW']) . '/' .
@ -5409,16 +5392,16 @@ class User
if ($uid < 1) {
return 0;
}
Db::sql('update items_users set lastUPD = unix_timestamp(), inOdet = 0 where inOdet != 0 and uid = ?', [$uid]);
Db::sql('update items_users set lastupd = unix_timestamp(), inodet = 0 where inodet != 0 and uid = ?', [$uid]);
return 1;
}
public function odetItem(int $id, int $uid)
{
$sql = "select items_users.id, data, 2price, inGroup, gift, gtxt1, `group`, price2, name, type, inslot, 2too, 2h
$sql = "select items_users.id, data, 2price, ingroup, gift, gtxt1, `group`, price2, name, type, inslot, 2too, 2h
from items_users
left join items_main on item_id = items_main.id
where items_users.id = ? and inOdet = 0 and inShop = 0";
where items_users.id = ? and inodet = 0 and inshop = 0";
$args = [$id];
if ($uid) {
@ -5439,7 +5422,7 @@ class User
if (
isset($tr['maks_itm_one']) &&
$tr['maks_itm_one'] > 0 &&
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']}%"])
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']}%"])
) {
$this->error = 'Возможное использование максимум одного предмета!';
$notr++;
@ -5491,7 +5474,7 @@ class User
} elseif (isset($tr['open']) && isset($_GET['open']) && isset($tr['items_in_file'])) {
$io = '';
if ($itm['inGroup'] > 0) {
Db::sql('update items_users set lastUPD = unix_timestamp(), inGroup = 0 where id = ?', [$itm['id']]);
Db::sql('update items_users set lastupd = unix_timestamp(), ingroup = 0 where id = ?', [$itm['id']]);
}
if (file_exists('_incl_data/class/Magic/' . $tr['items_in_file'] . '.php')) {
require_once '_incl_data/class/Magic/' . $tr['items_in_file'] . '.php';
@ -5530,7 +5513,7 @@ class User
$this->error = 'Не удалось открыть подарок. Содержимое испорчено.';
} elseif ($itmin['item_id'] == 4868) {
//Летучая мышь
Db::sql('update stats set hpNow = 1, mpNow = 1 where id = ?', [$this->info['id']]);
Db::sql('update stats set hpnow = 1, mpnow = 1 where id = ?', [$this->info['id']]);
$this->deleteItem($itm['id'], $this->info['id']);
$this->deleteItem($itmin['id'], $this->info['id']);
$this->error = 'Вы потеряли все HP...';
@ -5660,7 +5643,7 @@ class User
$itms[$i] = $itms[$i][0];
$s = mysql_fetch_array(
mysql_query(
'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`geni`,`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'
'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'
)
);
if (isset($s['id'])) {
@ -5809,10 +5792,8 @@ LIMIT 1'
if ($x == 0 or $x == null) {
$x = $this->itemsX($itm['id']); //кол-во распада
$inGroup = 0;
} elseif ($x != 0) {
$inGroup = $this->stackGroupCheck($this->info['id'], $itm['inGroup'], $itm['item_id']);
} else {
$inGroup = 0;
$inGroup = $this->stackGroupCheck($this->info['id'], $itm['inGroup'], $itm['item_id']);
}
$sp = mysql_query(
'SELECT `im`.`id`,
@ -5835,7 +5816,6 @@ LIMIT 1'
`im`.`overTypei`,
`im`.`group`,
`im`.`group_max`,
`im`.`geni`,
`im`.`ts`,
`im`.`srok`,
`im`.`class`,
@ -5906,25 +5886,21 @@ LIMIT 1'
}
}
private function trItem($po)
private function trItem($po): int
{
$tr = '';
$t = $this->items['tr'];
$x = 0;
$notr = 0;
while ($x < count($t)) {
$n = $t[$x];
if (isset($po['tr_' . $n])) {
if ($n == 'sex') {
if ($this->info['sex'] != $po['tr_' . $n]) {
$notr++;
foreach ($this->items['tr'] as $trn) {
if (!isset($po["tr_$trn"])) {
continue;
}
} elseif ($po['tr_' . $n] > $this->stats[$n] && $n != 'align') {
if (
$trn === 'sex' && $this->info['sex'] != $po["tr_$trn"] ||
$trn !== 'align' && $po["tr_$trn"] > $this->stats[$trn]
) {
$notr++;
}
}
$x++;
}
return $notr;
}
@ -6046,67 +6022,23 @@ LIMIT 1'
if (isset($this->stats['levels']['upLevel'])) {
$telvl = [];
$sp = mysql_query('SELECT `upLevel`,`exp` FROM `levels`');
while ($pl = mysql_fetch_array($sp)) {
$telvl[$pl['upLevel']] = $pl['exp'];
foreach (Db::getRows('select uplevel, exp from levels') as $row) {
$telvl[$row['uplevel']] = $row['exp'];
}
if ($this->info['exp'] >= $telvl[$this->info['upLevel']]) {
$lvl = mysql_fetch_array(
mysql_query(
'SELECT `duh`,`vinos`,`bprice`,`upLevel`,`nextLevel`,`exp`,`money`,`money_bonus1`,`money_bonus2`,`ability`,`skills`,`nskills`,`sskills`,`expBtlMax`,`hpRegen`,`mpRegen`,`money2` FROM `levels` WHERE `upLevel`="' . $this->info['upLevel'] . '" LIMIT 1'
)
);
$lvln = mysql_fetch_array(
mysql_query(
'SELECT `duh`,`vinos`,`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'
)
);
//Кристал вечности
if ($this->info['exp'] > 12499 && $this->info['level'] <= 5 && Config::get('infinity5level')) {
$itm = mysql_fetch_array(
mysql_query(
'SELECT `id`,`item_id`,`1price`,`2price`,`3price`,`uid`,`use_text`,`data`,`inOdet`,`inShop`,`delete`,`iznosNOW`,`iznosMAX`,`gift`,`gtxt1`,`gtxt2`,`kolvo`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`timeOver`,`overType`,`secret_id`,`time_create`,`inGroup`,`dn_delete`,`inTransfer`,`post_delivery`,`lbtl_`,`bexp`,`so`,`blvl` FROM `items_users` WHERE `item_id` = "1204" AND `delete` = "0" AND `uid` = "' . $this->info['id'] . '" AND `inShop` = "0" AND `inTransfer` = "0" LIMIT 1'
)
);
if (!isset($itm['id']) && $this->info['host_reg'] != 'noinfinity5' && $this->info['twink'] == 0) {
$this->info['exp'] = 12499;
mysql_query(
'UPDATE `stats` SET `exp` = "12499" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'
);
echo '<script>chat.sendMsg(["new","' . time(
) . '","6","","' . $this->info['login'] . '","Для перехода на 6-ой уровень требуется &quot;<strong>Кристалл Вечности [6]</strong>&quot;.","Black","1","1","0"]);</script>';
} else {
mysql_query(
'UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $itm['id'] . '" LIMIT 1'
);
$text = 'Предмет &quot;<strong>Кристалл Вечности [6]</strong>&quot; был успешно использован.';
echo '<script>chat.sendMsg(["new","' . time() . '","6","","' . $this->info['login'] . '","' . $text . '","Black","1","1","0"]);</script>';
}
}
[$lvl, $lvln] = Db::getRows('select * from levels where uplevel >= ? order by uplevel limit 2', [$this->info['upLevel']]);
$i = 0;
$ult = 0;
$sex1 = '';
if ($this->info['sex'] == 1) {
$sex1 = 'ла';
}
while ($i != 1) {
if (Config::get('nolevel') && $this->info['exp'] >= $lvl['exp'] && isset($lvln['upLevel'])) {
$tlus = mysql_fetch_array(
mysql_query(
'SELECT COUNT(*) FROM `users` WHERE `real` = 1 AND `level` = "' . $this->info['level'] . '" LIMIT 1'
)
);
//берем апп или уровень, $lvln
if ($tlus[0] < $this->info['level'] * 5) {
//Нельзя получать лвл/аппы пока не будет 100 персонажей текущего уровня
$this->info['exp'] = $lvl['exp'] - 1;
mysql_query(
'UPDATE `stats` SET `exp` = "' . $this->info['exp'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1'
);
}
}
if ($this->info['exp'] < $lvl['exp'] || !isset($lvln['upLevel'])) {
$i = 1;
} else {
@ -6282,6 +6214,7 @@ LIMIT 1'
$rt++;
}
}
if ($ult == 1) {
$chat = new Chat();
$cmsg = new ChatMessage();
@ -6476,10 +6409,10 @@ LIMIT 1'
if ($u['hpNow'] < $st['hpAll'] || $u['mpNow'] < $st['mpAll']) {
Db::sql(
'update stats set
regHP = unix_timestamp(),
regMP = unix_timestamp(),
hpNow = ?,
mpNow = ?
reghp = unix_timestamp(),
regmp = unix_timestamp(),
hpnow = ?,
mpnow = ?
where id = ?', [$st['hpNow'], $st['mpNow'], $u['id']]
);
}

View File

@ -73,7 +73,7 @@ class ItemsModel
return [
'now' => Db::getValue('select sum(massa) from items_users left join items_main on item_id = items_main.id
where uid = ? and (`delete` = 0 or (`delete` = 1000 and inGroup > 0)) and inShop = 0 and inOdet = 0', [$uid]),
'max' => 40 + ($stats['os7'] * 10) + $stats['s4'] + $stats['maxves'] + $stats['s1'] * 4,
'max' => 40 + (($stats['os7'] ?? 0) * 10) + $stats['s4'] + $stats['maxves'] + $stats['s1'] * 4,
'items' => Db::getValue('select count(*) from items_users where uid = ? and `delete` = 0 and inShop = 0 and inOdet = 0', [$uid]),
];
}

View File

@ -0,0 +1,23 @@
<?php
namespace User;
use Core\Config;
readonly final class Login
{
public string $fullLogin;
public function __construct(
int|string|null $align,
int|string|null $clanName,
int $level,
string $login
) {
$imgBase = Config::img() . DIRECTORY_SEPARATOR . 'i';
$alignStr = empty($align) ? '' : "<img src='$imgBase/align/align$align.gif' alt=''>";
$clanStr = empty($clanName) ? '' : "<img src='$imgBase/clan/$clanName.gif' alt='$clanName'>";
$spacedLogin = str_replace(' ', '%20', $login);
$loginLink = "<a href='/inf.php?login=$spacedLogin' target='_blank'><img src='$imgBase/inf.gif' title='Инф. о $login' alt='Инф. о $login'></a>";
$this->fullLogin = "$alignStr$clanStr<strong>$login</strong> [$level]$loginLink";
}
}

View File

@ -126,17 +126,18 @@ class Stats
public function getStats(int|array|null $uid = null, $i1 = 0, $reimg = false, $btl_cache = false): array
{
$u = match (true) {
empty($uid) => User::getInfo($this->u->info['id']),
empty($uid) => $this->u->info,
is_array($uid) => $uid,
default => User::getInfo($uid),
};
if (!isset($u['id'])) {
return [];
}
// Как? Нахуя 4 переменные разные для одного и того же?
$st = array_fill_keys($this->sysNames, 0);
$st = array_fill_keys(array_keys($this->sysNames), 0);
$sti = $st;
$s_v = $st;
$s_vi = $st;
@ -168,9 +169,12 @@ class Stats
$st['items'] = [];
$st['effects'] = [];
$st['vip'] = $u['vip'];
foreach (Conversion::dataStringToArray($u['stats']) as $stat => $value) {
//fixme несуществующие статы mg5 mg6 a6 s8-s15
$this->addKeyIfNotExist($stat, (int)$value, $st);
}
@ -282,13 +286,13 @@ class Stats
// мф.анти-уворот = 2.5
$st['m5'] += $st['s2'] * 5;
$st['za'] += $st['s4'] * 1.0;
$st['za'] += $st['s4'];
$st['m19'] += (int)($st['s3'] * 0.03);
$st['m19'] += round($st['s3'] * 0.03);
//Мощности
//Мощность против "Мощность крит. урона". Гамс
$st['antm3'] += $st['s5'] * 0.5;
//Бонусы комплектов
if (is_iterable($coms['new'])) {
@ -321,33 +325,19 @@ class Stats
//Бонусы статов
$this->addStatBonuses($st);
//если второе оружие одето
if ($hnd2 == 1 && $hnd1 == 1) {
$st['zona']++;
}
if ($sht1 == 1) {
$st['zonb']++;
}/* Владения */
/* Владения */
//mib1-mib4, mab1-mab4 armor??
if (isset($st['s5'])) {
$st['pm1'] += $st['s5'] * 0.5;
$st['pm2'] += $st['s5'] * 0.5;
$st['pm3'] += $st['s5'] * 0.5;
$st['pm4'] += $st['s5'] * 0.5;
$st['pm7'] += $st['s5'] * 0.5;
if (!empty($st['s5'])) {
$st['pm1'] += (int)($st['s5'] * 0.5);
$st['pm2'] += (int)($st['s5'] * 0.5);
$st['pm3'] += (int)($st['s5'] * 0.5);
$st['pm4'] += (int)($st['s5'] * 0.5);
$st['pm7'] += (int)($st['s5'] * 0.5);
}
if (isset($st['m11a'])) {
$st['pm1'] += $st['m11a'] * 0.5;
$st['pm2'] += $st['m11a'] * 0.5;
$st['pm3'] += $st['m11a'] * 0.5;
$st['pm4'] += $st['m11a'] * 0.5;
$st['pm7'] += $st['m11a'] * 0.5;
}
if (isset($st['aall'])) {
if (!empty($st['aall'])) {
$st['a1'] += $st['aall'];
$st['a2'] += $st['aall'];
$st['a3'] += $st['aall'];
@ -355,56 +345,35 @@ class Stats
$st['a5'] += $st['aall'];
}
if (isset($st['m2all'])) {
$st['mg1'] += $st['m2all'];
$st['mg2'] += $st['m2all'];
$st['mg3'] += $st['m2all'];
$st['mg4'] += $st['m2all'];
$st['mg7'] += $st['m2all'];
}
if (isset($st['zm'])) {
if (!empty($st['zm'])) {
$st['zm1'] += $st['zm'];
$st['zm2'] += $st['zm'];
$st['zm3'] += $st['zm'];
$st['zm4'] += $st['zm'];
$st['zm5'] += $st['zm'];
$st['zm6'] += $st['zm'];
$st['zm7'] += $st['zm'];
}
if (isset($st['zma'])) {
$st['zm1'] += $st['zma'];
$st['zm2'] += $st['zma'];
$st['zm3'] += $st['zma'];
$st['zm4'] += $st['zma'];
$st['zm5'] += $st['zma'];
$st['zm6'] += $st['zma'];
$st['zm7'] += $st['zma'];
}
if (isset($st['mall'])) {
if (!empty($st['mall'])) {
$st['mg1'] += $st['mall'];
$st['mg2'] += $st['mall'];
$st['mg3'] += $st['mall'];
$st['mg4'] += $st['mall'];
}
if (isset($st['m11'])) {
if (!empty($st['m11'])) {
$st['pm1'] += $st['m11'];
$st['pm2'] += $st['m11'];
$st['pm3'] += $st['m11'];
$st['pm4'] += $st['m11'];
}
if (isset($st['m10'])) {
if (!empty($st['m10'])) {
$st['pa1'] += $st['m10'];
$st['pa2'] += $st['m10'];
$st['pa3'] += $st['m10'];
$st['pa4'] += $st['m10'];
}
if (isset($st['za'])) {
if (!empty($st['za'])) {
$st['za1'] += $st['za'];
$st['za2'] += $st['za'];
$st['za3'] += $st['za'];
@ -412,16 +381,16 @@ class Stats
}
if (!empty($st['hpVinos'])) {
$st['hpall'] += round($st['hpVinos'] * $st['s4']);
$st['hpall'] += (int)($st['hpVinos'] * $st['s4']);
}
if (!empty($st['mpVinos'])) {
$st['mpall'] += round($st['mpVinos'] * $st['s6']);
$st['mpall'] += (int)($st['mpVinos'] * $st['s6']);
}
if (!empty($st['hpProc'])) {
$st['hpall'] += round($st['hpall'] / 100 * $st['hpProc']);
$st['hpall'] += (int)($st['hpall'] / 100 * $st['hpProc']);
}
if (!empty($st['mpProc'])) {
$st['mpall'] += round($st['mpall'] / 100 * $st['mpProc']);
$st['mpall'] += (int)($st['mpall'] / 100 * $st['mpProc']);
}
//Реген. - 250 ед.
@ -430,6 +399,15 @@ class Stats
$st['mpNow'] = Comparsion::minimax($st['mpNow'], 0, $st['mpall']);
//зоны блока и удара
//если второе оружие одето
if ($hnd2 == 1 && $hnd1 == 1) {
$st['zona']++;
}
if ($sht1 == 1) {
$st['zonb']++;
}
if ($st['zona'] < 1) {
$st['zona'] = 1;
}
@ -473,12 +451,9 @@ class Stats
$st['btl_cof'] = $st['prckr'];
Db::sql('update stats set btl_cof = ? where id = ?', [$st['prckr'], $st['id']]);
}
if ($st['hpall'] < 1) {
$st['hpall'] = 1;
}
if ($st['mpall'] < 0) {
$st['mpall'] = 0;
}
$st['hpall'] = max($st['hpall'], 1);
$st['mpall'] = max($st['mpall'], 0);
if (stristr($u['login'], '(зверь ') || (stristr($u['login'], 'Каменный страж') && $u['ip'] == '0')) {
$st['this_animal'] = 1;
@ -495,8 +470,8 @@ class Stats
} else {
$rt = $st;
}
if ($u['hpAll'] != $st['hpall'] || $u['mpAll'] != $st['mpall']) {
Db::sql('update stats set hpAll = ?, mpAll = ? where id = ?', [$st['hpall'], $st['mpall'], $u['id']]);
if ($u['hpAll'] != $st['hpAll'] || $u['mpAll'] != $st['mpAll']) {
Db::sql('update stats set hpAll = ?, mpAll = ? where id = ?', [$st['hpAll'], $st['mpAll'], $u['id']]);
}
if ($btl_cache) {
$dataca = [
@ -564,6 +539,7 @@ class Stats
5 => [70, 89,],//Великолепная
];
foreach ($wearedItems as $wearedItem) {
$this->addKeyIfNotExist('wp' . $wearedItem['inOdet'] . 'id', $h, $st);
@ -591,48 +567,37 @@ class Stats
$this->addKeyIfNotExist('reting', 1, $st);
}
if (isset($data['add_oza'])) {
$oza = array_fill_keys($oza, $ozaozmtypes[$data['add_oza']]);
# Пришлось зацикливать, уж больно однотипное.
# oza[X][0,1] = add_ozaX[0,1] + add_oza[0,1]
# ozm[X][0,1] = add_ozmX[0,1] + add_ozm[0,1]
for ($i = 1; $i <= 4; $i++) {
if (!isset($data["add_oza$i"])) {
continue;
}
if (isset($data['add_ozm'])) {
$ozm = array_fill_keys($ozm, $ozaozmtypes[$data['add_ozm']]);
if (isset($data['add_oza']) && in_array($data['add_oza'], range(1, 5))) {
$oza[$i][0] += $ozaozmtypes[$data['add_oza']][0];
$oza[$i][1] += $ozaozmtypes[$data['add_oza']][1];
}
if (isset($data['add_ozm']) && in_array($data['add_ozm'], range(1, 5))) {
$ozm[$i][0] += $ozaozmtypes[$data['add_ozm']][0];
$ozm[$i][1] += $ozaozmtypes[$data['add_ozm']][1];
} else {
$ozm = array_fill_keys($ozm, $ozaozmtypes[1]);
$ozm[$i][0] += $ozaozmtypes[1][0];
$ozm[$i][1] += $ozaozmtypes[1][1];
}
if (in_array($data['add_oza1'], range(1, 5))) {
$oza[1] = $ozaozmtypes[$data['add_oza1']];
if (in_array($data["add_oza$i"], range(1, 5))) {
$oza[$i][0] += $ozaozmtypes[$data["add_oza$i"]][0];
$oza[$i][1] += $ozaozmtypes[$data["add_oza$i"]][1];
}
if (in_array($data['add_oza2'], range(1, 5))) {
$oza[2] = $ozaozmtypes[$data['add_oza2']];
}
if (in_array($data['add_oza3'], range(1, 5))) {
$oza[3] = $ozaozmtypes[$data['add_oza3']];
}
if (in_array($data['add_oza4'], range(1, 5))) {
$oza[4] = $ozaozmtypes[$data['add_oza4']];
}
if (in_array($data['add_ozm1'], range(1, 5))) {
$ozm[1] = $ozaozmtypes[$data['add_ozm1']];
if (isset($data["add_ozm$i"]) && in_array($data["add_ozm$i"], range(1, 5))) {
$ozm[$i][0] += $ozaozmtypes[$data["add_ozm$i"]][0];
$ozm[$i][1] += $ozaozmtypes[$data["add_ozm$i"]][1];
} else {
$ozm[1] = $ozaozmtypes[1];
$ozm[$i][0] += $ozaozmtypes[1][0];
$ozm[$i][1] += $ozaozmtypes[1][1];
}
if (in_array($data['add_ozm2'], range(1, 5))) {
$ozm[2] = $ozaozmtypes[$data['add_ozm2']];
} else {
$ozm[2] = $ozaozmtypes[1];
}
if (in_array($data['add_ozm3'], range(1, 5))) {
$ozm[3] = $ozaozmtypes[$data['add_ozm3']];
} else {
$ozm[3] = $ozaozmtypes[1];
}
if (in_array($data['add_ozm4'], range(1, 5))) {
$ozm[4] = $ozaozmtypes[$data['add_ozm4']];
} else {
$ozm[4] = $ozaozmtypes[1];
}
if (isset($data['art'])) {
@ -1167,7 +1132,11 @@ class Stats
);
//Бонус за количество полностью вырытых пещер.
if (isset($st['m10'])) {
$st['m10'] += 10 * $finishedDungeons;
} else {
$st['m10'] = 10 * $finishedDungeons;
}
}
private function addAdminBonuses(array $u, array &$st): void
@ -1197,11 +1166,22 @@ class Stats
*/
private function renameArrayKeys(array &$st): void
{
if (isset($st['level'])) {
$st['lvl'] = $st['level'];
}
if (isset($st['hpall'])) {
$st['hpAll'] = $st['hpall'];
}
if (isset($st['mpall'])) {
$st['mpAll'] = $st['mpall'];
}
if (isset($st['hpnow'])) {
$st['hpNow'] = $st['hpnow'];
}
if (isset($st['mpnow'])) {
$st['mpNow'] = $st['mpnow'];
unset($st['level'], $st['hpnow'], $st['mpnow']);
}
unset($st['level'], $st['hpnow'], $st['mpnow'], $st['hpall'], $st['mpall']);
}
public static function saveBattleStats(array $stats, int $id): void

View File

@ -8,7 +8,7 @@ if(!defined('GAME')) {
Цена: 2 маны - 1 ед.
Процент поглощения: 50%
*/
$pvr = array();
$pvr = [];
//Действие при клике
if (isset($pr_momental_this)) {
@ -51,10 +51,7 @@ if( isset($pr_momental_this)) {
$u1 = $uid2;
$u2 = $uid1;
}
if( isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) {
//mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3].'" AND `uid` = "'.$uid.'" LIMIT 1');
//unset($btl->stats[$btl->uids[$uid]]['u_priem'][$j_id]);
}
//
// -- конец приема
return $at;
@ -82,12 +79,17 @@ if( isset($pr_momental_this)) {
$u2 = $uid1;
}
if ($a > 0) {
$j = 0; $k = 0; $wp = 3;
$checktuman=mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$uid.'"
$j = 0;
$k = 0;
$wp = 3;
$checktuman = mysql_fetch_array(
mysql_query(
'SELECT * FROM `eff_users` WHERE `uid` = "' . $uid . '"
AND (`v2` = 273 OR `v2` = 286 OR `v2` = 287 OR `v2` = 288)
AND `delete` =0 LIMIT 1')); //проверка на туманный образ
if(!isset($checktuman['id']))
{
AND `delete` =0 LIMIT 1'
)
); //проверка на туманный образ
if (!isset($checktuman['id'])) {
while ($j < count($at['p'][$a]['atack'])) {
if (isset($at['p'][$a]['atack'][$j]['yron']) && (
$at['p'][$a]['atack'][$j][1] == 1 ||
@ -99,23 +101,35 @@ if( isset($pr_momental_this)) {
$prv['priem_th'] = $btl->stats[$btl->uids[$uid]]['effects'][$prv['j_priem']]['id'];
//
$attest = round($btl->testPogB($uid, $at['p'][$a]['atack'][$j]['yron']['y'], $btl->stats[$btl->uids[$uid]]['effects'][$prv['j_priem']]['id']));
if( $at['p'][$a]['atack'][$j]['yron']['y'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['y'] = 0; }
if ($at['p'][$a]['atack'][$j]['yron']['y'] < 1) {
$at['p'][$a]['atack'][$j]['yron']['y'] = 0;
}
$at['p'][$a]['atack'][$j]['yron']['y'] = round($at['p'][$a]['atack'][$j]['yron']['y'] / 2);
$at['p'][$a]['atack'][$j]['yron']['r'] = round($at['p'][$a]['atack'][$j]['yron']['r'] / 2);
$at['p'][$a]['atack'][$j]['yron']['k'] = round($at['p'][$a]['atack'][$j]['yron']['k'] / 2);
$at['p'][$a]['atack'][$j]['yron']['m_k'] = round($at['p'][$a]['atack'][$j]['yron']['m_k']1.2);
$at['p'][$a]['atack'][$j]['yron']['m_k'] = round($at['p'][$a]['atack'][$j]['yron']['m_k'] / 1.2);
$at['p'][$a]['atack'][$j]['yron']['m_y'] = round($at['p'][$a]['atack'][$j]['yron']['m_y'] / 2);
if( $at['p'][$a]['atack'][$j]['yron']['y'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['y'] = 1; }
if( $at['p'][$a]['atack'][$j]['yron']['r'] >= 0 ) { $at['p'][$a]['atack'][$j]['yron']['r'] = -1; }
if( $at['p'][$a]['atack'][$j]['yron']['k'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['k'] = 1; }
if( $at['p'][$a]['atack'][$j]['yron']['m_k'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['m_k'] = 1; }
if( $at['p'][$a]['atack'][$j]['yron']['m_y'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['m_y'] = 1; }
if ($at['p'][$a]['atack'][$j]['yron']['y'] < 1) {
$at['p'][$a]['atack'][$j]['yron']['y'] = 1;
}
if ($at['p'][$a]['atack'][$j]['yron']['r'] >= 0) {
$at['p'][$a]['atack'][$j]['yron']['r'] = -1;
}
if ($at['p'][$a]['atack'][$j]['yron']['k'] < 1) {
$at['p'][$a]['atack'][$j]['yron']['k'] = 1;
}
if ($at['p'][$a]['atack'][$j]['yron']['m_k'] < 1) {
$at['p'][$a]['atack'][$j]['yron']['m_k'] = 1;
}
if ($at['p'][$a]['atack'][$j]['yron']['m_y'] < 1) {
$at['p'][$a]['atack'][$j]['yron']['m_y'] = 1;
}
//
$at['p'][$a]['atack'][$j]['yron']['used'][] = array($j_id,$uid,$pvr['used']);
$at['p'][$a]['atack'][$j]['yron']['kill'][] = array($j_id,$uid,$pvr['kill']);
$at['p'][$a]['atack'][$j]['yron']['used'][] = [$j_id, $uid, $pvr['used']];
$at['p'][$a]['atack'][$j]['yron']['kill'][] = [$j_id, $uid, $pvr['kill']];
//
$at['p'][$a]['priems']['kill'][$uid][$j_id] = true;
//}
@ -130,9 +144,10 @@ if( isset($pr_momental_this)) {
unset($pr_used_this);
} else {
//Действие при клике
$btl->priemAddLog( $id, 1, 2, $u->info['id'], $u->info['enemy'],
$btl->priemAddLog(
$id, 1, 2, $u->info['id'], $u->info['enemy'],
'Магический Барьер [4]',
'{tm1} '.$btl->addlt(1 , 21 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL).'',
'{tm1} ' . $btl->addlt(1, 21, $btl->users[$btl->uids[$u->info['id']]]['sex'], null) . '',
($btl->hodID + 1)
);
echo '<font color=red><b>Вы успешно использовали прием &quot;Магический Барьер [4]&quot;</b></font>';
@ -140,4 +155,3 @@ if( isset($pr_momental_this)) {
}
unset($pvr);
?>

View File

@ -6,7 +6,7 @@ if(!defined('GAME')) {
Прием: Скрытая ловкость
Уворот от 1-го удара и наносите контрудар
*/
$pvr = array();
$pvr = [];
if (isset($pr_tested_this)) {
$fx_priem = function ($id, $at, $uid, $j_id) {
// -- начало приема
@ -59,7 +59,9 @@ if( isset($pr_tested_this) ) {
$u2 = $uid1;
}
if ($a > 0) {
$j = 0; $k = 0; $wp = 3;
$j = 0;
$k = 0;
$wp = 3;
while ($j < count($at['p'][$a]['atack'])) {
if (
!isset($at['p'][$a]['atack'][$j]['priem_used']) &&
@ -71,34 +73,22 @@ if( isset($pr_tested_this) ) {
unset($at['p'][$a]['atack'][$j]['yron']);
$at['p'][$a]['atack'][$j][1] = 8;
$pvr['rnd_a'] = rand(1, 5);
if( $btl->testRazmenblock1($id,$u2,$u1,$pvr['rnd_a']) == false ) {
if (!$btl->testRazmenblock1($id, $u2, $u1)) {
//Попал
$at['p'][$b]['atack'][] = array( $pvr['rnd_a'] , 1 , 0 , 1 ); // 1 1 1
$at['p'][$b]['atack'][] = [$pvr['rnd_a'], 1, 0, 1]; // 1 1 1
} else {
//В блок
$at['p'][$b]['atack'][] = array( $pvr['rnd_a'] , 3 , 0 , 1 ); // 2 1 1
$at['p'][$b]['atack'][] = [$pvr['rnd_a'], 3, 0, 1]; // 2 1 1
}
//$at = $btl->contrRestart($id,$at,true);
//$at = $btl->priemsTestRazmen($id,$at);
//
/*$at['p'][$a]['atack'][$j]['yron']['plog'][] = '$this->deleffm(215,'.(0+$uid).','.$btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3].');
$this->priemAddLog( '.$id.', '.$b.', '.$a.', '.$u2.', '.$u1.',
"Скрытая ловкость",
"{tm1} '.$btl->addlt($b , 17 , $btl->users[$btl->uids[$u2]]['sex'] , NULL).'",
'.($btl->hodID + 1).' );';*/
//
$at['p'][$a]['atack'][$j]['yron']['used'][] = array($j_id,$uid,$pvr['used']);
$at['p'][$a]['atack'][$j]['yron']['kill'][] = array($j_id,$uid,$pvr['kill']);
//
$at['p'][$a]['atack'][$j]['yron']['used'][] = [$j_id, $uid, $pvr['used']];
$at['p'][$a]['atack'][$j]['yron']['kill'][] = [$j_id, $uid, $pvr['kill']];
$at['p'][$a]['priems']['kill'][$uid][$j_id] = true;
$at['p'][$a]['atack'][$j]['priem_used'] = $id;
//
if( $btl->testRazmenblock1($id,$u2,$u1,$pvr['rnd_a']) == false ) {
if (!$btl->testRazmenblock1($id, $u2, $u1)) {
$at = $this->yronRazmen($id, $at, true);
}
//
}
//
}
$j++;
}
@ -112,4 +102,3 @@ if( isset($pr_tested_this) ) {
$this->addEffPr($pl, $id);
}
unset($pvr);
?>

View File

@ -119,7 +119,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) {
($btl->hodID)
);
// спасение
$btl->spaCheck($u1]);
$btl->spaCheck($u1);
// спасение
}
// -- конец приема

View File

@ -158,7 +158,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) {
($btl->hodID)
);
// спасение
$btl->spaCheck($u1]);
$btl->spaCheck($u1);
// спасение
$pvr['ijk']++;
}

View File

@ -161,7 +161,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) {
($btl->hodID)
);
// спасение
$btl->spaCheck($u1]);
$btl->spaCheck($u1);
// спасение
//

View File

@ -35,7 +35,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) {
$prv['priem_th'] = $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id'];
//действия
$pvr['hp'] = 20);
$pvr['hp'] = 20;
$pvr['hp'] = $priem->magatack( $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'], $u1, $pvr['hp'], 'тьма', 1 );
$pvr['promah_type'] = $pvr['hp'][3];
$pvr['promah'] = $pvr['hp'][2];
@ -57,7 +57,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) {
}
//
$pvr['hp'] = 20;
$pvr['hp'] = $btl->testYronPriem( $btl->stats[$btl->uids[$rand_user]]['effects'][$prv['j_priem']]['user_use'], $rand_user, 12, $pvr['hp'], -1, true , false , 0);
$pvr['hp'] = $btl->testYronPriem( $btl->stats[$btl->uids[$rand_user[array_rand($rand_user)]]]['effects'][$prv['j_priem']]['user_use'], $rand_user, 12, $pvr['hp'], -1, true , false , 0);
//
$pvr['rndu']['id'] = $rand_user;
$pvr['color'] = '006699';

View File

@ -6,7 +6,7 @@ if(!defined('GAME')) {
Прием: Танец лезвий
Уворот от 1-го удара и наносите контрудар
*/
$pvr = array();
$pvr = [];
if (isset($pr_tested_this)) {
$fx_priem = function ($id, $at, $uid, $j_id) {
// -- начало приема
@ -59,41 +59,39 @@ if( isset($pr_tested_this) ) {
$u2 = $uid1;
}
if ($a > 0) {
$j = 0; $k = 0; $wp = 3;
$j = 0;
$k = 0;
$wp = 3;
while ($j < count($at['p'][$a]['atack'])) {
if (
!isset($at['p'][$a]['atack'][$j]['priem_used']) &&
($at['p'][$a]['atack'][$j][1] > 0)
) {
if(/* $btl->stats[$btl->uids[$u1]]['nopryh_act'] < 1 хуй знает для чего &&*/ $pvr['used'] == 0 && !isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) {
if ($btl->stats[$btl->uids[$u1]]['nopryh_act'] < 1 && $pvr['used'] == 0 && !isset($at['p'][$a]['priems']['kill'][$uid][$j_id])) {
//
//Уворот от удара выставляем
unset($at['p'][$a]['atack'][$j]['yron']);
$at['p'][$a]['atack'][$j][1] = 8;
$pvr['rnd_a'] = rand(1, 5);
if( $btl->testRazmenblock1($id,$u2,$u1,$pvr['rnd_a']) == false ) {
if (!$btl->testRazmenblock1($id, $u2, $u1)) {
//Попал
$at['p'][$b]['atack'][] = array( $pvr['rnd_a'] , 1 , 0 , 1 );
$at['p'][$b]['atack'][] = [$pvr['rnd_a'], 1, 0, 1];
} else {
//В блок
$at['p'][$b]['atack'][] = array( $pvr['rnd_a'] , 3 , 0 , 1 );
$at['p'][$b]['atack'][] = [$pvr['rnd_a'], 3, 0, 1];
}
//$at = $btl->contrRestart($id,$at,true);
//$at = $btl->priemsTestRazmen($id,$at);
//
$at['p'][$a]['atack'][$j]['yron']['plog'][] = '$this->deleffm(48,' . (0 + $uid) . ',' . $btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3] . ');
$this->priemAddLog( ' . $id . ', ' . $b . ', ' . $a . ', ' . $u2 . ', ' . $u1 . ',
"Танец лезвий",
"{tm1} '.$btl->addlt($b , 17 , $btl->users[$btl->uids[$u2]]['sex'] , NULL).'",
"{tm1} ' . $btl->addlt($b, 17, $btl->users[$btl->uids[$u2]]['sex'], null) . '",
' . ($btl->hodID + 1) . ' );';
//
$at['p'][$a]['atack'][$j]['yron']['used'][] = array($j_id,$uid,$pvr['used']);
$at['p'][$a]['atack'][$j]['yron']['kill'][] = array($j_id,$uid,$pvr['kill']);
$at['p'][$a]['atack'][$j]['yron']['used'][] = [$j_id, $uid, $pvr['used']];
$at['p'][$a]['atack'][$j]['yron']['kill'][] = [$j_id, $uid, $pvr['kill']];
//
$at['p'][$a]['priems']['kill'][$uid][$j_id] = true;
$at['p'][$a]['atack'][$j]['priem_used'] = $id;
//
if( $btl->testRazmenblock1($id,$u2,$u1,$pvr['rnd_a']) == false ) {
if (!$btl->testRazmenblock1($id, $u2, $u1)) {
$at = $this->yronRazmen($id, $at, true);
}
//
@ -112,4 +110,3 @@ if( isset($pr_tested_this) ) {
$this->addEffPr($pl, $id);
}
unset($pvr);
?>

View File

@ -307,7 +307,7 @@ if ($pl['id'] == 189) {
$hpmin = $u->info['level'] * 5;
} elseif ($pl['id'] == 271) {
//прием Прорыв 1\3 урона оружием
$tp_atk = $btl->weaponTx($btl->stats[$btl->uids[$u->info['id']]]['items'][$btl->stats[$btl->uids[$u->info['id']]]['wp3id']]);
$tp_atk = $btl->weaponTx($btl->stats[$btl->uids[$u->info['id']]]['items'][$btl->stats[$btl->uids[$u->info['id']]]['wp3id']]['data']);
$yi_atk = $btl->weaponAt22($btl->stats[$btl->uids[$u->info['id']]]['items'][$btl->stats[$btl->uids[$u->info['id']]]['wp3id']], $btl->stats[$btl->uids[$u->info['id']]], $tp_atk);

View File

@ -458,7 +458,7 @@ if(isset($hod))
if($dell){
$dell['priem']['id']=$dell['id'];
$btl->delPriem($dell,$u->info,99,false,$pl['name']);
$btl->delPriem($dell, $u->info, 99, 0, $pl['name']);
}
}

View File

@ -1,3 +0,0 @@
Sign successfully
IK sing :RpNOBfN+zusMfjQHDqp6UQ==
locally formed :RpNOBfN+zusMfjQHDqp6UQ==

View File

@ -67,6 +67,7 @@ if (!isset($_COOKIE['d1c'])) {
}
?>
<!DOCTYPE html>
<html lang="ru-RU">
<head>

View File

@ -116,24 +116,11 @@ if (isset($r2['pos'])) {
}
}
$timday = strtotime('now 00:00:00');
$clanw = mysql_fetch_array(
mysql_query(
'SELECT COUNT(`id`) FROM `battle` WHERE `type` = 250 AND `time_over` > "' . $timday . '" AND ((`team_win`=1 AND `clan1` = "' . $clan['id'] . '") OR (`team_win`=2 AND `clan2` = "' . $clan['id'] . '")) LIMIT 1'
)
);
$clanw = $clanw[0];
[$clanw, $clanl] = \Model\BattleModel::countClanWars($clan['id']);
$clanl = mysql_fetch_array(
mysql_query(
'SELECT COUNT(`id`) FROM `battle` WHERE `type` = 250 AND `time_over` > "' . $timday . '" AND ((`team_win`=2 AND `clan1` = "' . $clan['id'] . '") OR (`team_win`=1 AND `clan2` = "' . $clan['id'] . '")) LIMIT 1'
)
);
$clanl = $clanl[0];
$clanwar = mysql_query(
'SELECT * FROM `clan_wars` WHERE (`clan1`="' . $clan['id'] . '" OR `clan2`="' . $clan['id'] . '") AND `time_finish` > "' . time(
) . '"'
'SELECT * FROM `clan_wars` WHERE (`clan1`="' . $clan['id'] . '" OR `clan2`="' . $clan['id'] . '") AND `time_finish` > "' . time() . '"'
);
$clwe = "";
while ($clanwa = mysql_fetch_array($clanwar)) {
@ -304,8 +291,7 @@ while ($clanwa = mysql_fetch_array($clanwar)) {
$html .= '<br>';
$sp = mysql_query(
'SELECT * FROM `users` WHERE `clan` = "' . $clan['id'] . '" AND `clan_prava` != "glava" AND `online` > "' . (time(
) - 520) . '" ORDER BY `login` ASC'
'SELECT * FROM `users` WHERE `clan` = "' . $clan['id'] . '" AND `clan_prava` != "glava" AND `online` > "' . (time() - 520) . '" ORDER BY `login` ASC'
);
while ($pl = mysql_fetch_array($sp)) {
$html .= '<div>';
@ -320,8 +306,7 @@ while ($clanwa = mysql_fetch_array($clanwar)) {
$html .= '</div>';
}
$sp = mysql_query(
'SELECT * FROM `users` WHERE `clan` = "' . $clan['id'] . '" AND `clan_prava` != "glava" AND `online` <= "' . (time(
) - 520) . '" ORDER BY `login` ASC'
'SELECT * FROM `users` WHERE `clan` = "' . $clan['id'] . '" AND `clan_prava` != "glava" AND `online` <= "' . (time() - 520) . '" ORDER BY `login` ASC'
);
while ($pl = mysql_fetch_array($sp)) {
$html .= '<div style="color:grey">';

1941
exp.php

File diff suppressed because it is too large Load Diff

View File

@ -7,21 +7,20 @@ require_once('_incl_data/__config.php');
require_once('_incl_data/class/__db_connect.php');
define('IP', UserIp::get());
class battleNew {
}
$user = mysql_fetch_array(mysql_query('SELECT `id`,`battle` FROM `users` WHERE `login` = "' . mysql_real_escape_string($_COOKIE['login']) . '"'));
if (isset($user['id']) && $user['battle'] > 0) {
$stats = mysql_fetch_array(mysql_query('SELECT
$stats = mysql_fetch_array(
mysql_query(
'SELECT
`id`,`team`,`enemy`,
`tactic1`,`tactic2`,`tactic3`,`tactic4`,`tactic5`,`tactic6`,`tactic7`,
`battle_yron`,`priems`,`priems_z`,`priemslot`
FROM `stats` WHERE `id` = "'.$user['id'].'" LIMIT 1'));
FROM `stats` WHERE `id` = "' . $user['id'] . '" LIMIT 1'
)
);
if ($stats['hpNow'] > $stats['hpAll']) {
$stats['hpNow'] = $stats['hpAll'];
@ -36,7 +35,9 @@ if(isset($user['id']) && $user['battle'] > 0) {
//Проверяем размен с текущим противником
$bot_go = false;
$rd = '';
$sp = mysql_query('SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE ( `uid1` = "'.$user['id'].'" OR `uid2` = "'.$user['id'].'" ) AND `battle` = "'.$user['battle'].'" ORDER BY `time` ASC');
$sp = mysql_query(
'SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE ( `uid1` = "' . $user['id'] . '" OR `uid2` = "' . $user['id'] . '" ) AND `battle` = "' . $user['battle'] . '" ORDER BY `time` ASC'
);
while ($pl = mysql_fetch_array($sp)) {
$rd .= ',[' . $pl['id'] . ',' . $pl['uid1'] . ',' . $pl['uid2'] . ',' . ($pl['time'] - time() + $bt['timeout']) . ']';
//
@ -58,8 +59,9 @@ if(isset($user['id']) && $user['battle'] > 0) {
}
if (isset($_GET['global'])) {
$btl = new \Model\BattleModel($user['battle']);
$bt = $btl->battleArray;
$bt = mysql_fetch_array(mysql_query('SELECT `id`,`timeout`,`hod` FROM `battle` WHERE `id` = "'.$user['battle'].'" LIMIT 1'));
if (isset($bt['id'])) {
//Получение инф. о пользователях в бою
@ -117,17 +119,25 @@ if(isset($user['id']) && $user['battle'] > 0) {
while ($i < count($ex)) {
if ($ex[$i] > 0) {
//
$us = mysql_fetch_array(mysql_query('SELECT
$us = mysql_fetch_array(
mysql_query(
'SELECT
`id`,`login`,`level`,`clan`,`align`,`obraz`
FROM `users` WHERE `battle` = "'.$user['battle'].'" AND `id` = "'.mysql_real_escape_string($ex[$i]).'" LIMIT 1'));
FROM `users` WHERE `battle` = "' . $user['battle'] . '" AND `id` = "' . mysql_real_escape_string($ex[$i]) . '" LIMIT 1'
)
);
if (isset($us['id'])) {
$ss = mysql_fetch_array(mysql_query('SELECT
$ss = mysql_fetch_array(
mysql_query(
'SELECT
`hpNow`,`mpNow`,`hpAll`,`mpAll`,`team`
FROM `stats` WHERE `id` = "'.$us['id'].'" LIMIT 1'));
FROM `stats` WHERE `id` = "' . $us['id'] . '" LIMIT 1'
)
);
if ($ss['hpNow'] > $ss['hpAll']) {
$ss['hpNow'] = $ss['hpAll'];
@ -145,11 +155,11 @@ if(isset($user['id']) && $user['battle'] > 0) {
$rd .= ',"align":"' . $us['align'] . '"';
$rd .= ',"clan":"' . $us['clan'] . '"';
$rd .= ',"team":"' . $ss['team'] . '"';
$rd .= ',"hp":'.( 0 + $ss['hpNow'] ).'';
$rd .= ',"mp":'.( 0 + $ss['mpNow'] ).'';
$rd .= ',"hpAll":'.( 0 + $ss['hpAll'] ).'';
$rd .= ',"mpAll":'.( 0 + $ss['mpAll'] ).'';
$rd .= ',"sex":'.( 0 + $us['sex'] ).'';
$rd .= ',"hp":' . (0 + $ss['hpNow']);
$rd .= ',"mp":' . (0 + $ss['mpNow']);
$rd .= ',"hpAll":' . (0 + $ss['hpAll']);
$rd .= ',"mpAll":' . (0 + $ss['mpAll']);
$rd .= ',"sex":' . (0 + $us['sex']);
$rd .= ',"obraz":"' . $us['obraz'] . '"';
//
//Предметы
@ -201,11 +211,15 @@ if(isset($user['id']) && $user['battle'] > 0) {
while ($i < count($ex)) {
if ($ex[$i] > 0) {
//
$pl = mysql_fetch_array(mysql_query('SELECT
$pl = mysql_fetch_array(
mysql_query(
'SELECT
`id`,`name`,`img`,`type`,`onUser`,`team`
FROM `priems` WHERE `id` = "'.mysql_real_escape_string($ex[$i]).'" LIMIT 1'));
FROM `priems` WHERE `id` = "' . mysql_real_escape_string($ex[$i]) . '" LIMIT 1'
)
);
if (isset($pl['id'])) {
//
$rd .= ',{';
@ -235,5 +249,9 @@ if(isset($user['id']) && $user['battle'] > 0) {
$error = 'Пользователь в бою не найден...';
}
echo '{ "btl":"'.(0+$bt['id']).'" , "hod":"'.(0+$bt['hod']).'" , "you":"'.(0+$user['id']).'" , "enemy":"'.(0+$stats['enemy']).'" , "pr": [ "'.$stats['priems'].'" , "'.$stats['priems_z'].'" , '.(0+$stats['priemslot']).' ] , "dm":"'.floor($stats['battle_yron']).'" , "to":"'.round($bt['timeout']/60,2).'" , "r":{ '.ltrim($r,',').' } , "e":"'.$error.'" , "t1":"'.$stats['tactic1'].'" , "t2":"'.$stats['tactic2'].'" , "t3":"'.$stats['tactic3'].'" , "t4":"'.$stats['tactic4'].'" , "t5":"'.$stats['tactic5'].'" , "t6":"'.$stats['tactic6'].'" , "t7":"'.$stats['tactic7'].'" }';
echo '{ "btl":"' . (0 + $bt['id']) . '" , "hod":"' . (0 + $bt['hod']) . '" , "you":"' . (0 + $user['id']) . '" , "enemy":"' . (0 + $stats['enemy']) . '" , "pr": [ "' . $stats['priems'] . '" , "' . $stats['priems_z'] . '" , ' . (0 + $stats['priemslot']) . ' ] , "dm":"' . floor(
$stats['battle_yron']
) . '" , "to":"' . round($bt['timeout'] / 60, 2) . '" , "r":{ ' . ltrim(
$r, ','
) . ' } , "e":"' . $error . '" , "t1":"' . $stats['tactic1'] . '" , "t2":"' . $stats['tactic2'] . '" , "t3":"' . $stats['tactic3'] . '" , "t4":"' . $stats['tactic4'] . '" , "t5":"' . $stats['tactic5'] . '" , "t6":"' . $stats['tactic6'] . '" , "t7":"' . $stats['tactic7'] . '" }';

View File

@ -53,7 +53,6 @@ while ($pl = mysql_fetch_array($sp)) {
}
//
$html .= $i . '. <span class="date">' . date('H:i', $pl['time']) . '</span> ';
$html .= ' <img title="' . $u->city_name[$pl['city']] . '" src="//img.new-combats.tech/i/city_ico/' . $pl['city'] . '.gif">';
$html .= ' (' . $users . ') (' . $pl['min_lvl_1'] . '-' . $pl['max_lvl_1'] . ') Тип боя: <img src="//img.new-combats.tech/i/fighttype' . $pl['type'] . '.gif"> ';
if ($pl['noinc'] > 0) {
$html .= '<img src="//img.new-combats.tech/closefight.gif" title="В поединок нельзя вмешаться">';
@ -113,7 +112,6 @@ while ($pl = mysql_fetch_array($sp)) {
//
$html .= $i . '. <span class="date">' . date('d.m.Y H:i', $pl['time_start']) . '</span> ';
$html .= ' <img title="' . $u->city_name[$pl['city']] . '" src="//img.new-combats.tech/i/city_ico/' . $pl['city'] . '.gif">';
$html .= ' (' . $users . ') Тип боя: <img src="//img.new-combats.tech/i/fighttype' . $pl['type'] . '.gif"> ';
if ($pl['noinc'] > 0) {
$html .= '<img src="//img.new-combats.tech/closefight.gif" title="В поединок нельзя вмешаться">';
@ -145,9 +143,6 @@ $sp = mysql_query('SELECT * FROM `bs_turnirs`');
$i = 0;
while ($pl = mysql_fetch_array($sp)) {
$i++;
//
$html .= $i . '. <img title="' . $u->city_name[$pl['city']] . '" src="//img.new-combats.tech/i/city_ico/' . $pl['city'] . '.gif">';
//
$html .= ' [' . $pl['level'] . ']';
if ($pl['status'] == 0) {
//Ожидаем начала нового турнира

View File

@ -266,7 +266,11 @@ if (isset($uer)) {
<!-- pos1 -->
<?php
//Персонаж онлайн
$battleid = Db::getValue('select id from battle where id = ? and time_over = 0', [$inf['battle']]);
if ($inf['battle']) {
$b = new \Model\BattleModel($inf['battle']);
$battleid = $b->battle->time_over == 0 ? $b->battle->id : false;
unset($b);
}
if ($inf['room'] != 303) {
if ($inf['online'] > time() - 520 && $inf['banned'] == 0 && $inf['invis'] != 1 && $inf['invis'] < time()) {

View File

@ -596,7 +596,7 @@ $rz[$rt[$itm['type']]][1] ??= 'Прочие предметы';
?>
<BR>
</td>
<td align="center" valign="top" style='padding: 0,2,0,5'>
<td align="center" valign="top" style='padding: 0 2px 0 5px'>
<a title="<?= $itm['name'] ?>" href="/item/<?= $itm['id'] ?>">
<SPAN style='background-color: #E0E0E0'>
<img src="//img.new-combats.tech/i/items/<?= $itm['img'] ?>"
@ -612,7 +612,7 @@ $rz[$rt[$itm['type']]][1] ??= 'Прочие предметы';
<p>
</td>
<!-- End of text -->
<td style='padding-left: 3' align=right>
<td style='padding-left: 3px' align=right>
<img id="imright" height=144
src="//img.new-combats.tech/i/encicl/pict_<?= $rz[$rt[$itm['type']]][0] ?>.jpg" width=139
border=0>
@ -621,7 +621,7 @@ $rz[$rt[$itm['type']]][1] ??= 'Прочие предметы';
</tr>
<tr valign=top>
<td></td>
<td valign=center style="padding-bottom:50" align="right"><IMG height=236
<td valign=center style="padding-bottom:50px" align="right"><IMG height=236
src="//img.new-combats.tech/i/encicl/pictr_<?= $rz[$rt[$itm['type']]][0] ?>.jpg"
width=128 border=0>
</td>
@ -643,7 +643,7 @@ $rz[$rt[$itm['type']]][1] ??= 'Прочие предметы';
$sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 26');
} elseif ($rv == 3) {
//Свитки
$sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 29 AND `name` NOT LIKE "%Кристаллизатор%"');
$sp = mysql_query("SELECT * FROM `items_main` WHERE `type` = 29 AND `name` NOT LIKE '%Кристаллизатор%'");
} elseif ($rv == 2) {
//Эликсиры
$sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 30');
@ -682,7 +682,7 @@ $rz[$rt[$itm['type']]][1] ??= 'Прочие предметы';
$sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 1');
} elseif ($rv == 16) {
//Елки
$sp = mysql_query('SELECT * FROM `items_main` WHERE `name` LIKE "%Елка%"');
$sp = mysql_query("SELECT * FROM `items_main` WHERE `name` LIKE '%Елка%'");
} elseif ($rv == 17) {
//Дубины
$sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 20');
@ -700,7 +700,7 @@ $rz[$rt[$itm['type']]][1] ??= 'Прочие предметы';
$sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 22');
} elseif ($rv == 22) {
//Цветы
$sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 32 AND `img` LIKE "f_%"');
$sp = mysql_query("SELECT * FROM `items_main` WHERE `type` = 32 AND `img` LIKE 'f_%'");
} elseif ($rv == 25) {
//Подарки
$sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 38 OR `type` = 63');
@ -1074,7 +1074,7 @@ $rz[$rt[$itm['type']]][1] ??= 'Прочие предметы';
?>
<BR>
</td>
<td align="center" valign="top" style='padding: 0,2,0,5'>
<td align="center" valign="top" style='padding: 0 2px 0 5px'>
<a title="<?= $itm['name'] ?>" href="/item/<?= $itm['id'] ?>">
<SPAN style='background-color: #E0E0E0'>
<img src="//img.new-combats.tech/i/items/<?= $itm['img'] ?>"
@ -1096,7 +1096,9 @@ $rz[$rt[$itm['type']]][1] ??= 'Прочие предметы';
<BR>
<p>
<!-- End of text -->
<td style='padding-left: 3' align=right>
</p>
</td>
<td style='padding-left: 3px' align=right>
<img id="imright2" height=144 src="//img.new-combats.tech/i/encicl/pict_subject.jpg" width=139>
</td>
<td valign=top background="/forum_script/img/rightground.jpg">&nbsp;&nbsp;&nbsp;&nbsp;</td>
@ -1158,7 +1160,7 @@ $rz[$rt[$itm['type']]][1] ??= 'Прочие предметы';
<!-- -->
</td>
<td valign="bottom" style="padding-bottom:50" align="right">
<td valign="bottom" style="padding-bottom:50px" align="right">
<IMG height=236 src="//img.new-combats.tech/i/encicl/pictr_subject.jpg" width=128 border=0>
</td>
<td width="23" valign=top background="/forum_script/img/rightground.jpg">&nbsp;</td>

View File

@ -5,7 +5,7 @@ function info_reflesh(id_info,uid,up_info,obraz,hp,hpAll,mp,mpAll,invis,sex,eff,
{
stl4[id_info] = { 4:'',5:'',6:'' }; img4 = ''; lst4 = 0;
var d = document.getElementById(`player${id_info}`);
if(d!=undefined)
if(d)
{
var mbmp = '';
var nomp = 0;
@ -30,7 +30,7 @@ function info_reflesh(id_info,uid,up_info,obraz,hp,hpAll,mp,mpAll,invis,sex,eff,
hpAll = '100%';
}
var zaggg = '',zggg1 = '',zggg2 = '',zggg3,zggg4 = '';
if( zag != undefined && zag != 0 && zag != '' ) {
if(zag) {
zggg1 = 'class="inf2s"';
zggg2 = 'position:relative;height:280px;';
zggg3 = 'position:absolute;top:3px;left:3px;z-index:102;';

View File

@ -42,6 +42,7 @@ const chat = {
efftxt: function (id, txt) {
return txt;
},
ignore: function (login) {
if (this.ignoreList[login] !== undefined) {
if ($('#ignr_alu').attr('id') !== undefined) {
@ -63,10 +64,13 @@ const chat = {
ingr_alu.html(`${ingr_alu.html()}<div id="ignr_u_${this.ignoreList.x}"><b>${login}</b> <a target="_blank" href="/info/${login}"><img alt="Инф. о ${login}" src="${c.img2}/i/inf_capitalcity.gif" onMouseOver="top.hi(this,\'<b>Инф. о ${login}</b>\',event,5,-2,2,2,\'\');" onMouseOut="top.hic();" onMouseDown="top.hic();"></a> <small><a href="javascript:void(0)" onclick="chat.ignorUn(${this.ignoreList.x})">Clear</a></small></div>`);
}
},
getRandom: function (a, b) {
return a + ((b - a) * Math.random());
},
feerverk_id: 0,
feerverk: function (name) {
const frc = {
'name': 'fw04',
@ -82,7 +86,7 @@ const chat = {
frc.left -= 35;
}
if (frc.name !== undefined) {
if (frc.name) {
this.sendSound(frc.sound);
const obj = top.frames.main.document.getElementById('frvrks');
if (obj !== undefined) {
@ -103,6 +107,7 @@ const chat = {
if (zad > 0) {
setTimeout(`chat.feerverk_go(${id}, ${time_back}, "${img}", ${x}, 0);`, 500 * zad);
} else {
time_back--;
top.frames.main.document.getElementById(`frvanim_${id}`);
if (time_back > 0) {
@ -258,10 +263,12 @@ const chat = {
clearText: function () {
$('#textmsg').val('');
},
reflesh: function () {
this.time = 0;
this.testTimer(true);
},
reMoney: function () {
$('#moneyGM').html(`${c.money} кр.`);
},

View File

@ -1,4 +1,9 @@
<?php
// я ебу, архивы поединков используют динамически-генерируемые логи из шаблона на лету
// вместо того чтобы хранить тупо статический текст
// сколько ещё открытий чудных?
// мораль: перед удалением проверить кто и где вызывает файл.
$log_text = [];
$log_text[0] = []; //для муж.

View File

@ -78,13 +78,11 @@ if (!isset($CRON_CORE) && $u->info['online'] < time() - 30) {
$error = fn(string $str): string => '<div style="color: red; text-align: center; font-weight: bold;">' . $str . '</div>';
require_once 'log_text.php';
$btl = new Battle();
require_once('log_text.php');
$btl->is = $u->is;
$btl->items = $u->items;
$btl->info = $btl->battleInfo($u->info['battle']);
$isBattle = $btl->initRefresh($u);
if (!isset($btl->info['id'])) {
if (!$isBattle) {
if ($u->info['battle'] == -1) {
//завершаем поединок
Db::sql('update users set battle = 0, online = unix_timestamp() where id = ?', [$u->info['id']]);

View File

@ -86,12 +86,11 @@ if (isset($CRON_CORE) && (isset($_POST['atack'], $_POST['block']) || (isset($_PO
) . "' WHERE `id`='" . $u->info['id'] . "' LIMIT 1"
);
}
$btl = new Battle();
require_once('log_text.php');
$btl->is = $u->is;
$btl->items = $u->items;
$btl->info = $btl->battleInfo($u->info['battle']);
if (!isset($btl->info['id'])) {
$btl = new Battle();
$isBattle = $btl->initRefresh($u);
if (!$isBattle) {
if ($u->info['battle'] == -1) {
//завершаем поединок
$upd = mysql_query(

982
logs.php

File diff suppressed because it is too large Load Diff

414
main.php
View File

@ -7,49 +7,7 @@ use Core\{Config, Database, Db};
use User\ItemsModel;
use User\UserIp;
?>
<style>
/* Paste this css to your style sheet file or under head tag */
/* This only works with JavaScript,
if it's not present, don't show loader */
.no-js #loader {
display: none;
}
.js #loader {
display: block;
position: absolute;
left: 100px;
top: 0;
}
.se-pre-con {
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
z-index: 9999;
background: url(default.gif) center no-repeat #e2e0e1;
}
pre {
border: 1px solid gray;
border-radius: 5px;
padding: 3px 6px;
background: #cecece;
color: black;
font-family: Arial, sans-serif;
font-size: 12px;
}
</style>
<link href="<?= Config::img() ?>/css/main.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="/css/training/modal.css">
<div class="se-pre-con" id="se-pre-con"></div>
<?php
function var_info($vars, $d = false)
function var_info($vars, $d = false): void
{
echo "<pre>\n";
var_dump($vars);
@ -72,7 +30,7 @@ $code = PassGen::intCode(); //для ссылок вида ?rnd=XXXXXX, врод
/** Восстанавливаем всем ботам, которые не в бою здоровье до максимума. */
Db::sql(
'update stats set hpNow = hpAll, mpNow = mpAll where id in (select id from users where bot = 2 and battle = 0)'
'update stats set hpnow = hpall, mpnow = mpall where id in (select id from users where bot = 2 and battle = 0)'
);
if ($u->info['banned'] > 0) {
@ -99,12 +57,12 @@ if ($u->room['file'] == "room_hostel" || $u->room['file'] == "post") {
if (($u->info['online'] < time() - 60 || $u->info['afk'] != '')) {
$filter->setOnline(0, $u->info['id']);
Db::sql(
'update users set online = unix_timestamp(), timeMain = unix_timestamp(), afk = ? where id = ?',
'update users set online = unix_timestamp(), timemain = unix_timestamp(), afk = ? where id = ?',
['', $u->info['id']]
);
} elseif ($u->info['timeMain'] < time() - 60 || $u->info['afk'] != '') {
Db::sql(
'update users set online = unix_timestamp(), timeMain = unix_timestamp(), afk = ? where id = ?',
'update users set online = unix_timestamp(), timemain = unix_timestamp(), afk = ? where id = ?',
['', $u->info['id']]
);
}
@ -129,10 +87,6 @@ if ($u->info['battle_text'] != '' && $u->info['last_b'] > 0) {
);
}
if (!isset($_GET['mAjax']) && !isset($_GET['ajaxHostel'])) {
echo '<!DOCTYPE html>
<div style="padding-top:0; margin-top:17px; /*height:100%;*/ background-color:#e2e0e1;">';
}
$act = -2;
$act2 = 0;
$u->stats = $u->getStats($u->info['id'], 0);
@ -176,11 +130,11 @@ if (isset($_GET['atak_user']) && $u->info['battle'] == 0 && $_GET['atak_user'] !
]
);
$check = Db::getValue(
'select id from eff_users where id_eff = 478 and uid = ? and `delete` = 0 order by overType desc limit 1',
'select id from eff_users where id_eff = 478 and uid = ? and `delete` = 0 order by overtype desc limit 1',
[$u->info['id']]
);
$check2 = Db::getValue(
'select id from eff_users where id_eff = 479 and uid = ? and `delete` = 0 order by overType desc limit 1',
'select id from eff_users where id_eff = 479 and uid = ? and `delete` = 0 order by overtype desc limit 1',
[$ua['id']]
);
$check3 = Db::getValue(
@ -234,7 +188,8 @@ if (isset($_GET['atak_user']) && $u->info['battle'] == 0 && $_GET['atak_user'] !
}
Db::sql(
'update stats set hpNow = ?, mpNow = ? where id = ?', [
'update stats set hpnow = ?, mpnow = ? where id = ?',
[
$usta['hpNow'],
$usta['mpNow'],
$usta['id'],
@ -292,70 +247,6 @@ if ($u->info['battle'] == 0) {
'select id, battle from battle_users where uid = ? and finish = 0 limit 1', [$u->info['id']]
);
}
if (isset($btl_last['id']) && $u->info['battle'] == 0) {
require_once('modules_data/btl_.php');
$u->info['battle_lsto'] = true;
} elseif ($u->info['battle'] == 0) {
//Проверка/Снятие предметов
if (!isset($sleep['id'])) {
$act2 = $u->testItems($u->info['id'], $u->stats, 0);
}
if ($act2 != -2 && $act == -2) {
$act = $act2;
}
if ($u->room['block_all'] != 0) {
unset($_GET['inv'], $_GET['skills'], $_GET['anketa']);
}
if (!isset($u->tfer['id']) && $u->room['block_all'] == 0) {
//Одеть/снять предмет
if (isset($_GET['rstv']) && isset($_GET['inv'])) {
$u->freeStatsMod($_GET['rstv'], $_GET['mf'], $u->info['id']);
} elseif (isset($_GET['ufs2']) && isset($_GET['inv'])) {
$u->freeStats2Item($_GET['itmid'], $_GET['ufs2'], $u->info['id'], 1);
} elseif (isset($_GET['ufs2mf']) && isset($_GET['inv'])) {
$u->freeStats2Item($_GET['itmid'], $_GET['ufs2mf'], $u->info['id'], 2);
} elseif (isset($_GET['ufsmst']) && isset($_GET['inv'])) {
$u->itemsSmSave($_GET['itmid'], $_GET['ufsmst'], $u->info['id']);
} elseif (isset($_GET['ufsms']) && isset($_GET['inv'])) {
$u->itemsSmSave($_GET['itmid'], $_GET['ufsms'] + 100, $u->info['id']);
} elseif (isset($_GET['ufs']) && isset($_GET['inv'])) {
$u->freeStatsItem($_GET['itmid'], $_GET['ufs'], $u->info['id']);
} elseif (isset($_GET['sid']) && isset($_GET['inv'])) {
$act = $u->snatItem($_GET['sid'], $u->info['id']);
} elseif (isset($_GET['oid']) && isset($_GET['inv'])) {
$act = $u->odetItem($_GET['oid'], $u->info['id']);
} elseif (isset($_GET['item_rune']) && isset($_GET['inv'])) {
$u->runeItem(null);
} elseif (isset($_GET['remitem'], $_GET['inv'])) {
$act = $u->snatItemAll($u->info['id']);
} elseif (isset($_GET['delete']) && isset($_GET['inv']) && $u->newAct($_GET['sd4'])) {
if ($u->info['allLock'] < time()) {
$u->deleteItem(intval($_GET['delete']), $u->info['id']);
} else {
echo '<script>setTimeout(function(){alert("Вам запрещено удалять предметы до ' . date(
'd.m.y H:i', $u->info['allLock']
) . '")},250);</script>';
}
} elseif (isset($_GET['unstack']) && isset($_GET['inv']) && $u->newAct($_GET['sd4'])) {
$u->unstack(intval($_GET['unstack']), intval($_GET['unstackCount']));
} elseif (isset($_GET['stack']) && isset($_GET['inv'])) {
$u->stack($_GET['stack']);
} elseif (isset($_GET['end_qst_now'])) {
$q->endq((int)$_GET['end_qst_now'], 'end');
}
//Использовать эффект
if (isset($_GET['use_pid'])) {
$magic->useItems((int)$_GET['use_pid']);
}
} else {
if ($u->room['block_all'] > 0) {
$u->error = 'В данной локации запрещено пользоваться чем-либо...';
}
}
}
if ($magic->youuse > 0) {
$act = 1;
@ -372,90 +263,6 @@ if ($act != -2) {
}
}
/*-----------------------*/
if (isset($_GET['security']) && !isset($u->tfer['id']) && $trololo == 1) {
require_once('modules_data/_changepass.php');
} elseif (isset($_GET['friends']) && !isset($u->tfer['id'])) {
require_once('modules_data/_friends.php');
} elseif (($u->info['admin'] > 0 || $u->info['level'] > 7 || $u->info['align'] == 50) && isset($_GET['notepad']) && !isset($u->tfer['id'])) {
require_once('modules_data/notepad.php');
} elseif (isset($_GET['moderation'])) {
require_once('modules_data/_mod.php');
} elseif (isset($_GET['vip']) && !isset($u->tfer['id'])) {
require_once('modules_data/vip.php');
} elseif (
(
isset($_GET['zayvka']) &&
$u->info['battle'] == 0
) ||
(
isset($_GET['zayvka']) &&
(
$_GET['r'] == 6 ||
$_GET['r'] == 7 ||
!isset($_GET['r'])
) &&
$u->info['battle'] > 0
) &&
!isset($u->tfer['id'])
) {
require_once('modules_data/_zv.php');
} elseif (isset($_GET['alh']) && !isset($u->tfer['id'])) {
require_once('modules_data/_alh.php');
} elseif (isset($_GET['clan']) && !isset($u->tfer['id'])) {
require_once('modules_data/_clan.php'); //Панель кланов
} elseif (isset($_GET['alhp']) && ($u->info['admin'] == 1 || $u->info['align'] == 50) && !isset($u->tfer['id'])) {
require_once('modules_data/_alhp.php'); //Панель алхимиков
} elseif ($u->info['align'] > 0 && !isset($u->tfer['id']) && !empty($_GET['ap'])) {
require_once('modules_data/alignPanel.php'); //Панель склонностей, GET чтобы вызывать по ссылке.
} elseif ($u->info['battle'] != 0) {
//поединок
if ((!isset($btl_last['id']) || $u->info['battle'] > 0) && !isset($u->info['battle_lsto'])) {
require_once('modules_data/btl_.php');
echo '<script type="text/javascript" src="js/onlineList.js"></script>';
}
} else {
if (isset($_GET['talk']) && !isset($u->tfer['id'])) {
echo "<script>document.getElementById('se-pre-con').parentNode.removeChild(document.getElementById('se-pre-con'));</script>";
if ($u->info['dnow'] > 0) {
$d = new Dungeon;
}
require_once('modules_data/_dialog.php');
} elseif (isset($_GET['inv']) && !isset($u->tfer['id']) && $trololo == 1) {
require_once('modules_data/_inv.php');
} elseif (isset($_GET['add_eff']) && !isset($u->tfer['id']) && $trololo == 1) {
require_once('modules_data/add_eff.php');
} elseif (isset($_GET['referals']) && $trololo == 1 && !isset($u->tfer['id'])) {
require_once('modules_data/_ref.php');
} elseif (isset($_GET['obraz']) && !isset($u->tfer['id']) && $trololo == 1) {
require_once('modules_data/_obraz.php');
} elseif (isset($_GET['skills']) && !isset($u->tfer['id']) && $trololo == 1) {
require_once('modules_data/_umenie.php');
} elseif ((isset($_GET['transfer']) || isset($u->tfer['id'])) && $u->info['level'] >= Config::get(
'level_ransfer'
) && $trololo == 1 && $u->info['inTurnir'] == 0 && $u->info['inTurnirnew'] == 0) {
if ($u->info['allLock'] > time()) {
require_once('modules_data/_locations.php');
echo '<script>setTimeout(function(){alert("Вам запрещены передачи до ' . date(
'd.m.y H:i', $u->info['allLock']
) . '")},250);</script>';
} else {
require_once('modules_data/_transfers.php');
}
} elseif (isset($_GET['anketa']) && !isset($u->tfer['id']) && $trololo == 1) {
require_once('settings.php');
} elseif (isset($_GET['newanimal']) && $trololo == 1) {
require_once('modules_data/_newanimal.php');
} elseif (isset($_GET['act_trf']) && $u->room['block_all'] == 0) {
require_once('modules_data/act_trf.php');
} elseif (isset($_GET['titul']) && $u->room['block_all'] == 0) {
require_once('modules_data/titul.php');
} elseif (!isset($u->tfer['id'])) {
require_once('modules_data/_locations.php');
}
}
//Проверяем квесты на готовность
if (in_array(
$u->room['file'],
@ -547,12 +354,209 @@ foreach ($sp as $pl) {
</a>
HTML;
}
} else {
echo '[!]';
}
unset($tk, $itmo);
}
$spl = Db::getValue('select exp from levels where nextlevel = ? order by exp limit 1', [$u->info['level'] + 1]);
?>
<style>
/* Paste this css to your style sheet file or under head tag */
/* This only works with JavaScript,
if it's not present, don't show loader */
.no-js #loader {
display: none;
}
.js #loader {
display: block;
position: absolute;
left: 100px;
top: 0;
}
.se-pre-con {
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
z-index: 9999;
background: url(default.gif) center no-repeat #e2e0e1;
}
pre {
border: 1px solid gray;
border-radius: 5px;
padding: 3px 6px;
background: #cecece;
color: black;
font-family: Arial, sans-serif;
font-size: 12px;
}
</style>
<link href="<?= Config::img() ?>/css/main.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="/css/training/modal.css">
<div class="se-pre-con" id="se-pre-con"></div>
<?php
if (!isset($_GET['mAjax']) && !isset($_GET['ajaxHostel'])) {
echo '<!DOCTYPE html>
<div style="padding-top:0; margin-top:17px; /*height:100%;*/ background-color:#e2e0e1;">';
}
if (isset($btl_last['id']) && $u->info['battle'] == 0) {
require_once('modules_data/btl_.php');
$u->info['battle_lsto'] = true;
} elseif ($u->info['battle'] == 0) {
//Проверка/Снятие предметов
if (!isset($sleep['id'])) {
$act2 = $u->testItems($u->info['id'], $u->stats, 0);
}
if ($act2 != -2 && $act == -2) {
$act = $act2;
}
if ($u->room['block_all'] != 0) {
unset($_GET['inv'], $_GET['skills'], $_GET['anketa']);
}
if (!isset($u->tfer['id']) && $u->room['block_all'] == 0) {
//Одеть/снять предмет
if (isset($_GET['rstv']) && isset($_GET['inv'])) {
$u->freeStatsMod($_GET['rstv'], $_GET['mf'], $u->info['id']);
} elseif (isset($_GET['ufs2']) && isset($_GET['inv'])) {
$u->freeStats2Item($_GET['itmid'], $_GET['ufs2'], $u->info['id'], 1);
} elseif (isset($_GET['ufs2mf']) && isset($_GET['inv'])) {
$u->freeStats2Item($_GET['itmid'], $_GET['ufs2mf'], $u->info['id'], 2);
} elseif (isset($_GET['ufsmst']) && isset($_GET['inv'])) {
$u->itemsSmSave($_GET['itmid'], $_GET['ufsmst'], $u->info['id']);
} elseif (isset($_GET['ufsms']) && isset($_GET['inv'])) {
$u->itemsSmSave($_GET['itmid'], $_GET['ufsms'] + 100, $u->info['id']);
} elseif (isset($_GET['ufs']) && isset($_GET['inv'])) {
$u->freeStatsItem($_GET['itmid'], $_GET['ufs'], $u->info['id']);
} elseif (isset($_GET['sid']) && isset($_GET['inv'])) {
$act = $u->snatItem($_GET['sid'], $u->info['id']);
} elseif (isset($_GET['oid']) && isset($_GET['inv'])) {
$act = $u->odetItem($_GET['oid'], $u->info['id']);
} elseif (isset($_GET['item_rune']) && isset($_GET['inv'])) {
$u->runeItem(null);
} elseif (isset($_GET['remitem'], $_GET['inv'])) {
$act = $u->snatItemAll($u->info['id']);
} elseif (isset($_GET['delete']) && isset($_GET['inv']) && $u->newAct($_GET['sd4'])) {
if ($u->info['allLock'] < time()) {
$u->deleteItem(intval($_GET['delete']), $u->info['id']);
} else {
echo '<script>setTimeout(function(){alert("Вам запрещено удалять предметы до ' . date(
'd.m.y H:i', $u->info['allLock']
) . '")},250);</script>';
}
} elseif (isset($_GET['unstack']) && isset($_GET['inv']) && $u->newAct($_GET['sd4'])) {
$u->unstack(intval($_GET['unstack']), intval($_GET['unstackCount']));
} elseif (isset($_GET['stack']) && isset($_GET['inv'])) {
$u->stack($_GET['stack']);
} elseif (isset($_GET['end_qst_now'])) {
$q->endq((int)$_GET['end_qst_now'], 'end');
}
//Использовать эффект
if (isset($_GET['use_pid'])) {
$magic->useItems((int)$_GET['use_pid']);
}
} else {
if ($u->room['block_all'] > 0) {
$u->error = 'В данной локации запрещено пользоваться чем-либо...';
}
}
}
/*-----------------------*/
if (isset($_GET['security']) && !isset($u->tfer['id']) && $trololo == 1) {
require_once('modules_data/_changepass.php');
} elseif (isset($_GET['friends']) && !isset($u->tfer['id'])) {
require_once('modules_data/_friends.php');
} elseif (($u->info['admin'] > 0 || $u->info['level'] > 7 || $u->info['align'] == 50) && isset($_GET['notepad']) && !isset($u->tfer['id'])) {
require_once('modules_data/notepad.php');
} elseif (isset($_GET['moderation'])) {
require_once('modules_data/_mod.php');
} elseif (isset($_GET['vip']) && !isset($u->tfer['id'])) {
require_once('modules_data/vip.php');
} elseif (
(
isset($_GET['zayvka']) &&
$u->info['battle'] == 0
) ||
(
isset($_GET['zayvka']) &&
(
$_GET['r'] == 6 ||
$_GET['r'] == 7 ||
!isset($_GET['r'])
) &&
$u->info['battle'] > 0
) &&
!isset($u->tfer['id'])
) {
require_once('modules_data/_zv.php');
} elseif (isset($_GET['alh']) && !isset($u->tfer['id'])) {
require_once('modules_data/_alh.php');
} elseif (isset($_GET['clan']) && !isset($u->tfer['id'])) {
require_once('modules_data/_clan.php'); //Панель кланов
} elseif (isset($_GET['alhp']) && ($u->info['admin'] == 1 || $u->info['align'] == 50) && !isset($u->tfer['id'])) {
require_once('modules_data/_alhp.php'); //Панель алхимиков
} elseif ($u->info['align'] > 0 && !isset($u->tfer['id']) && !empty($_GET['ap'])) {
require_once('modules_data/alignPanel.php'); //Панель склонностей, GET чтобы вызывать по ссылке.
} elseif ($u->info['battle'] != 0) {
//поединок
if ((!isset($btl_last['id']) || $u->info['battle'] > 0) && !isset($u->info['battle_lsto'])) {
require_once('modules_data/btl_.php');
echo '<script type="text/javascript" src="js/onlineList.js"></script>';
}
} else {
if (isset($_GET['talk']) && !isset($u->tfer['id'])) {
echo "<script>document.getElementById('se-pre-con').parentNode.removeChild(document.getElementById('se-pre-con'));</script>";
if ($u->info['dnow'] > 0) {
$d = new Dungeon;
}
require_once('modules_data/_dialog.php');
} elseif (isset($_GET['inv']) && !isset($u->tfer['id']) && $trololo == 1) {
require_once('modules_data/_inv.php');
} elseif (isset($_GET['add_eff']) && !isset($u->tfer['id']) && $trololo == 1) {
require_once('modules_data/add_eff.php');
} elseif (isset($_GET['referals']) && $trololo == 1 && !isset($u->tfer['id'])) {
require_once('modules_data/_ref.php');
} elseif (isset($_GET['obraz']) && !isset($u->tfer['id']) && $trololo == 1) {
require_once('modules_data/_obraz.php');
} elseif (isset($_GET['skills']) && !isset($u->tfer['id']) && $trololo == 1) {
require_once('modules_data/_umenie.php');
} elseif ((isset($_GET['transfer']) || isset($u->tfer['id'])) && $u->info['level'] >= Config::get(
'level_ransfer'
) && $trololo == 1 && $u->info['inTurnir'] == 0 && $u->info['inTurnirnew'] == 0) {
if ($u->info['allLock'] > time()) {
require_once('modules_data/_locations.php');
echo '<script>setTimeout(function(){alert("Вам запрещены передачи до ' . date(
'd.m.y H:i', $u->info['allLock']
) . '")},250);</script>';
} else {
require_once('modules_data/_transfers.php');
}
} elseif (isset($_GET['anketa']) && !isset($u->tfer['id']) && $trololo == 1) {
require_once('settings.php');
} elseif (isset($_GET['newanimal']) && $trololo == 1) {
require_once('modules_data/_newanimal.php');
} elseif (isset($_GET['act_trf']) && $u->room['block_all'] == 0) {
require_once('modules_data/act_trf.php');
} elseif (isset($_GET['titul']) && $u->room['block_all'] == 0) {
require_once('modules_data/titul.php');
} elseif (!isset($u->tfer['id'])) {
require_once('modules_data/_locations.php');
}
}
if ($iloc != '') {
if ($iloce != '') {
$iloc = '<div style="padding:10px; color: red;">' . $iloce . '</div>' . $iloc;
@ -617,10 +621,8 @@ if ($iloc != '') {
}
unset($iloc, $iloce);
/*-----------------------*/
$spl = Db::getValue('select exp from levels where nextLevel = ? order by exp limit 1', [$u->info['level'] + 1]);
//Сломаное обучение. Как оно достало! Ins. 🤬
//$training_manager->render();
?>

View File

@ -52,7 +52,7 @@ if ($r === FightRequest::BATTLE_RAZDEL_ENDED) {
IntlDateFormatter::LONG,
IntlDateFormatter::NONE
);
$dt = $_GET['logs2'] ??= time();
$dt = $_GET['logs2'] ??= (new DateTime('now midnight'))->gettimestamp();
$slogin = $_GET['filter'] ?? $_POST['filter'] ?? $u->info['login'];
$slogin = str_replace('"', '', $slogin);
$slogin = str_replace("'", '', $slogin);
@ -190,10 +190,10 @@ if ($r === FightRequest::BATTLE_RAZDEL_ENDED) {
<a href="/main.php?zayvka=1&r=<?= FightRequest::BATTLE_RAZDEL_TOURNAMENTS ?>&rnd=<?= $code ?>">Турниры</a>
</td>
<td class="<?= $r == FightRequest::BATTLE_RAZDEL_GROUP ? 's' : 'm' ?>">
<a href="main.php?zayvka=1&r=<?= FightRequest::BATTLE_RAZDEL_GROUP ?>&rnd=<?= $code ?>">Групповые</a>
<a href="/main.php?zayvka=1&r=<?= FightRequest::BATTLE_RAZDEL_GROUP ?>&rnd=<?= $code ?>">Групповые</a>
</td>
<td class="<?= $r == FightRequest::BATTLE_RAZDEL_CHAOTIC ? 's' : 'm' ?>">
<a href="main.php?zayvka=1&r=<?= FightRequest::BATTLE_RAZDEL_CHAOTIC ?>&rnd=<?= $code ?>">Хаотичные</a>
<a href="/main.php?zayvka=1&r=<?= FightRequest::BATTLE_RAZDEL_CHAOTIC ?>&rnd=<?= $code ?>">Хаотичные</a>
</td>
<td class="<?= $r == FightRequest::BATTLE_RAZDEL_CURRENT ? 's' : 'm' ?>">
<a href="/main.php?zayvka=1&r=<?= FightRequest::BATTLE_RAZDEL_CURRENT ?>&rnd=<?= $code ?>">Текущие</a>

View File

@ -19,21 +19,9 @@ if ($u->info['battle'] == 0 || isset($_GET['bend'])) {
die('<script>top.frames[\'main\'].location = "main.php";</script>');
}
$thisBattle = Db::getRow('select * from battle where id = ?', [$u->info['battle']]);
$thisBattle = Battle::get($u->info['battle']);
$allprice = Db::getValue('select sum(price1) from battle_users where battle = ?', [$u->info['battle']]);
function typeBattle($x): array
{
return match (true) {
$x >= 5000000 => [150, 150, 'Судный День', 'Судный День'],
$x >= 2500000 => [100, 125, 'Эпохальная Битва', 'Кровавое Побоище'],
$x >= 1000000 => [75, 100, 'Историческая Битва', 'Кровавая Сеча'],
$x >= 500000 => [50, 75, 'Величайшая Битва', 'Кровавая Резня'],
$x >= 100000 => [25, 50, 'Великая Битва', 'Кровавая Битва'],
default => [0, 0, 'Поединок', 'Кровавый Поединок'],
};
}
function finish(User $u): void
{
if (!isset($_GET['finish'])) {
@ -72,11 +60,9 @@ function normJsonStr($str)
);
}
$allprice = typeBattle($allprice);
$allprice = Battle::getType($allprice, $thisBattle['smert'] == 1);
if ($thisBattle['smert'] == 1) {
$allprice = [150, 150, 'Жесточайшее Сражение', 'Жесточайшее Сражение'];
}
?>
<script src="/js/jquery.js"></script>

View File

@ -263,7 +263,7 @@ if ($u->room['file'] == 'bsenter') {
<BR>
</fieldset>
</form>
<h4>Топ 10 игроков (новая статистиика) турнир 5<? //=$t['level']?> уровней</h4>
<h4>Топ 10 игроков (новая статистиика) турнир 5 уровней</h4>
<?php
$sp = mysql_query('SELECT * FROM `users` WHERE `win_bs`>0 ORDER BY `win_bs` DESC LIMIT 10');
$i = 1;
@ -279,7 +279,7 @@ if ($u->room['file'] == 'bsenter') {
$i++;
}
?>
<h4>Победители 10-ти предыдущих турниров для 5<? //=$t['level']?> уровней</h4>
<h4>Победители 10-ти предыдущих турниров для 5 уровней</h4>
<?php
$sp = mysql_query('SELECT * FROM `bs_statistic` WHERE `wuid` > 0 ORDER BY `id` DESC LIMIT 10');
$i = 1;
@ -317,7 +317,7 @@ if ($u->room['file'] == 'bsenter') {
$i++;
}
?>
<h4>Самый продолжительный турнир для 5<? //=$t['level']?> уровней</h4>
<h4>Самый продолжительный турнир для 5 уровней</h4>
<?php
$sp = mysql_query('SELECT * FROM `bs_statistic` WHERE `wuid` > 0 ORDER BY `time_sf` DESC LIMIT 1');
$i = 1;

View File

@ -1,82 +1,74 @@
<?php
if(!defined('GAME'))
{
if (!defined('GAME')) {
die();
}
//id Новогоднего подарка
$pidid = 4008;
$dy = 1;
if((date('n',time())==2 && date('j',time())<=14))
{
if ((date('n', time()) == 2 && date('j', time()) <= 14)) {
$dy = 0;
}
$dt = date('Y', time()) + $dy;
$dt = 2023;
if($u->room['file']=='elka')
{
if ($u->room['file'] != 'elka') {
return;
}
if (isset($_GET['elka_shar']) && isset($_GET['shar_name'])) //Украшение Ёлки
{
$itd = mysql_fetch_array(mysql_query(' SELECT * FROM `items_users` WHERE `item_id` > 2723 AND `item_id` < 2741 AND `uid`= "'.$u->info['id'].'" AND `delete` = 0 AND `id`= "'.$_GET['elka_shar'].'" LIMIT 1 '));
$itd = mysql_fetch_array(
mysql_query(' SELECT * FROM `items_users` WHERE `item_id` > 2723 AND `item_id` < 2741 AND `uid`= "' . $u->info['id'] . '" AND `delete` = 0 AND `id`= "' . $_GET['elka_shar'] . '" LIMIT 1 ')
);
if (isset($itd['id'])) {
$itdu = mysql_query('UPDATE `items_users` SET `delete` ="' . time() . '" WHERE `id` ="' . $_GET['elka_shar'] . '" LIMIT 1 ');
if (isset($itdu))
{
if (isset($itdu)) {
//eff Благословение Ёлки X
$effe = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid`= "' . $u->info['id'] . '" AND `delete` = 0 AND `id_eff`= 477 LIMIT 1'));
if (isset($effe['id']))
{
if (isset($effe['id'])) {
$tdata = str_replace("add_hpAll=", "", $effe['data']);
$tdata = $tdata + 5;
if ($tdata>500){$tdata=500;}
if ($tdata > 500) {
$tdata = 500;
}
$newdata = 'add_hpAll=' . $tdata;
$newname = 'Благословение Ёлки x' . ($tdata / 5);
$effeadd = mysql_query('UPDATE `eff_users` SET `name` = "' . $newname . '",`data`="' . $newdata . '", `timeUse` = "' . time() . '"WHERE `id` ="' . $effe['id'] . '" ');
if (isset($effeadd))
{
if (isset($effeadd)) {
echo "Вы получили <b><font color=red>Благословение Ёлки x" . round($tdata / 5) . "</font></b> ";
}
}
else
{
$effeadd=mysql_query('INSERT INTO `eff_users`
} else {
$effeadd = mysql_query(
'INSERT INTO `eff_users`
(`id`,`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`)
VALUES
(NULL, "477", "'.$u->info['id'].'", "Благословение Ёлки x1", "add_hpAll=5", "110", "'.time().'", "0", "", "0", "0", "0", "", "1", "-1", "0", "0", "0", "", "0", "0", "0", "0", "0")');
(NULL, "477", "' . $u->info['id'] . '", "Благословение Ёлки x1", "add_hpAll=5", "110", "' . time(
) . '", "0", "", "0", "0", "0", "", "1", "-1", "0", "0", "0", "", "0", "0", "0", "0", "0")'
);
if (isset($effeadd))
{
if (isset($effeadd)) {
echo "Вы получили <b><font color=red>Благословение Ёлки x1</font></b> ";
}
}
echo "Использовал: <b><font color=red>" . $_GET['shar_name'] . "</font><b>";
}
else
{
} else {
echo "<b><font color=red>Ошибка</font></b>";
}
}
}
if(isset($_GET['take_gift']) && (date('m') == 12 || (date('m') == 1 && date('d') <= 8)))
{
if (isset($_GET['take_gift']) && (date('m') == 12 || (date('m') == 1 && date('d') <= 8))) {
//получаем свой новогодний подарок за текущий год addItem($id,$uid)
$smt = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `vars` = "take_gift_' . $dt . '" LIMIT 1', 1);
if(!isset($smt['id']))
{
if (!isset($smt['id'])) {
$pid = \User\ItemsModel::addItem($pidid, $u->info['id']);
if($pid>0)
{
if ($pid > 0) {
mysql_query('UPDATE `items_users` SET `gift` = "Администрация",`gtxt1` = "Поздравляем Вас с Новым Годом!" WHERE `id` = "' . $pid . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1');
$u->addAction(time(), 'take_gift_' . $dt . '', $u->info['city']);
echo '<font color=red>Предмет находится у Вас в инвентаре, в разделе "прочее"</font>';
@ -86,44 +78,39 @@ if($u->room['file']=='elka')
} else {
echo '<font color=red>Вы уже получили свой подарок ;)</font>';
}
}elseif(isset($_GET['del']))
{
if($u->info['admin']>0 || ($u->info['align']>1 && $u->info['align']<2) || ($u->info['align']>3 && $u->info['align']<4))
{
if($u->info['admin']==0)
{
} elseif (isset($_GET['del'])) {
if ($u->info['admin'] > 0 || ($u->info['align'] > 1 && $u->info['align'] < 2) || ($u->info['align'] > 3 && $u->info['align'] < 4)) {
if ($u->info['admin'] == 0) {
$pInfo = '' . $u->info['align'] . '|' . $u->info['clan'] . '|' . $u->info['login'] . '|' . $u->info['level'] . '|' . $u->info['cityreg'] . '';
} else {
$pInfo = '1';
}
mysql_query("UPDATE `elka` SET `delete`='" . $pInfo . "' WHERE `id`='" . mysql_real_escape_string($_GET['del']) . "'");
}
}elseif(isset($_GET['use_cup']))
{
} elseif (isset($_GET['use_cup'])) {
$smt = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `time` > ' . (time() - 600) . ' AND `vars` = "use_cupNewYear" LIMIT 1', 1);
if(!isset($smt['id']))
{
if (!isset($smt['id'])) {
$u->addAction(time(), 'use_cupNewYear', '');
mysql_query('UPDATE `stats` SET `hpNow` = "' . $u->stats['hpAll'] . '",`mpNow` = "' . $u->stats['mpAll'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1');
echo '<font color=red>Успешно использован эликсир "Полное восстановление"</font>';
}
}elseif(isset($_POST['message']))
{
$_POST['message'] = htmlspecialchars($_POST['message'],NULL);
if($_POST['message']!='')
{
} elseif (isset($_POST['message'])) {
$_POST['message'] = htmlspecialchars($_POST['message'], null);
if ($_POST['message'] != '') {
$dy = 1;
if((date('n',time())==1 && date('j',time())<=15))
{
if ((date('n', time()) == 1 && date('j', time()) <= 15)) {
$dy = 0;
}
$u->info['ET'] = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `time` > ' . (time() - 600) . ' AND `vars` = "send_elka" LIMIT 1', 1);
if(isset($u->info['ET']['id']))
{
if (isset($u->info['ET']['id'])) {
echo '<font color=red>Оставлять надписи на стволе ёлки можно не чаще одного раза в 10 минут</font>';
} else {
$pInfo = '' . $u->info['align'] . '|' . $u->info['clan'] . '|' . $u->info['login'] . '|' . $u->info['level'] . '|' . $u->info['cityreg'] . '|' . $u->info['id'] . '';
mysql_query("INSERT INTO `elka` (`year`,`time`,`pers`,`text`,`city`) VALUES (".(date('Y',time())+$dy).",".time().",'".$pInfo."','".mysql_real_escape_string($_POST['message'])."','".$u->info['city']."'); ");
mysql_query(
"INSERT INTO `elka` (`year`,`time`,`pers`,`text`,`city`) VALUES (" . (date('Y', time()) + $dy) . "," . time() . ",'" . $pInfo . "','" . mysql_real_escape_string(
$_POST['message']
) . "','" . $u->info['city'] . "'); "
);
$u->addAction(time(), 'send_elka', '');
}
}
@ -132,23 +119,32 @@ if($u->room['file']=='elka')
?>
<style type="text/css">
.pH3 { COLOR: #8f0000; FONT-FAMILY: Arial; FONT-SIZE: 12pt; FONT-WEIGHT: bold; }
.pH3 {
COLOR: #8f0000;
FONT-FAMILY: Arial;
FONT-SIZE: 12pt;
FONT-WEIGHT: bold;
}
.class_ {
font-weight: bold;
color: #C5C5C5;
cursor: pointer;
}
.class_st {
font-weight: bold;
color: #659BA3;
cursor: pointer;
}
.class__ {
font-weight: bold;
color: #FFFFFF;
cursor: pointer;
background-color: #659BA3;
}
.class__st {
font-weight: bold;
color: #FFFFFF;
@ -156,11 +152,13 @@ if($u->room['file']=='elka')
background-color: #659BA3;
font-size: 10px;
}
.class_old {
font-weight: bold;
color: #919191;
cursor: pointer;
}
.class__old {
font-weight: bold;
color: #FFFFFF;
@ -170,18 +168,22 @@ if($u->room['file']=='elka')
}
</style>
<div align="right"><?php if($re!=''){ echo '<font color="red"><b>'.$re.'</b></font>'; } ?></div>
<div align="right"><?php if ($re != '') {
echo '<font color="red"><b>' . $re . '</b></font>';
} ?></div>
<div id="hint3" style="visibility:hidden"></div>
<TABLE width="100%" cellspacing="0" cellpadding="0">
<tr><td valign="top"><div align="center" class="pH3">Новогодняя елка <?php
echo $dt; ?>!</div>
<tr>
<td valign="top">
<div align="center" class="pH3">Новогодняя елка <?php
echo $dt; ?>!
</div>
<br/>
<!-- Подарки -->
<?php
$sg = 1;
//Если есть подарки
if((date('n',time())==12 || date('n',time())<=2) && $sg==1)
{
if ((date('n', time()) == 12 || date('n', time()) <= 2) && $sg == 1) {
?>
<div style="padding-left:10px;">
<span class="pH3"><small>Подарки:</small></span>
@ -189,12 +191,20 @@ if($u->room['file']=='elka')
<?php
$smt = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `time` > ' . (time() - 600) . ' AND `vars` = "use_cupNewYear" LIMIT 1', 1);
?>
<a href="?use_cup=<?= $code; ?>" <?php if(isset($smt['id'])){ echo 'onClick="alert(\'Использовать "Чаша жизненных сил" можно не чаще одного раза в 10 минут\');return false;"'; } ?> /><img src="//img.new-combats.tech/cup2012.gif" style="padding:10px;<?php if(isset($smt['id'])){ echo 'filter: alpha(opacity=35); -moz-opacity: 0.35; -khtml-opacity: 0.35; opacity: 0.35;'; } ?>" title="Выпить из`Чаши жизненных сил`"></a>
<a href="?use_cup=<?= $code; ?>" <?php if (isset($smt['id'])) {
echo 'onClick="alert(\'Использовать "Чаша жизненных сил" можно не чаще одного раза в 10 минут\');return false;"';
} ?> /><img src="//img.new-combats.tech/cup2012.gif" style="padding:10px;<?php if (isset($smt['id'])) {
echo 'filter: alpha(opacity=35); -moz-opacity: 0.35; -khtml-opacity: 0.35; opacity: 0.35;';
} ?>" title="Выпить из`Чаши жизненных сил`"></a>
<?php
if (date('m') == 12 || (date('m') == 1 && date('d') <= 8)) {
$pd = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `time` > ' . (time() - 600) . ' AND `vars` = "take_gift' . $dt . '" LIMIT 1', 1);
?>
<a href="?take_gift=<?= $code; ?>" <?php if(isset($pd['id'])){ echo 'onClick="return false;"'; } ?> /><img src="//img.new-combats.tech/i/items/<?= 'podarok'.($dt-1); ?>.gif" style="padding:10px;<?php if(isset($pd['id'])){ echo 'filter: alpha(opacity=35); -moz-opacity: 0.35; -khtml-opacity: 0.35; opacity: 0.35;'; } ?>" title="Взять `Новогодний подарок 2023`"></a>
<a href="?take_gift=<?= $code; ?>" <?php if (isset($pd['id'])) {
echo 'onClick="return false;"';
} ?> /><img src="//img.new-combats.tech/i/items/<?= 'podarok' . ($dt - 1); ?>.gif" style="padding:10px;<?php if (isset($pd['id'])) {
echo 'filter: alpha(opacity=35); -moz-opacity: 0.35; -khtml-opacity: 0.35; opacity: 0.35;';
} ?>" title="Взять `Новогодний подарок 2023`"></a>
<?php } ?>
</div>
</div>
@ -210,24 +220,27 @@ if($u->room['file']=='elka')
<div>
<?php
$it = mysql_fetch_array(mysql_query(' SELECT * FROM `items_users` WHERE `item_id` > 2723 AND `item_id` < 2741 AND `uid`= "' . $u->info['id'] . '" AND `delete` = 0 LIMIT 1 '));
if (isset($it['item_id']))
{
if (isset($it['item_id'])) {
$itt = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $it['item_id'] . '" LIMIT 1'));
?>
<a href="?elka_shar=<?echo $it['id'];?>&shar_name=<?echo $itt['name'];?>" <?php if(!isset($itt['id'])){ echo 'onClick="return false;"'; } ?> /><img src="//img.new-combats.tech/i/items/<?= $itt['img']; ?>" style="padding:10px;<?php if(!isset($it['id'])){ echo 'filter: alpha(opacity=35); -moz-opacity: 0.35; -khtml-opacity: 0.35; opacity: 0.35;'; } ?>" title="Повесить `Шар`"></a>
<?}
else { echo "У Вас нет шаров для украшения Ёлки!";}
<a href="?elka_shar=<?php echo $it['id']; ?>&shar_name=<?php echo $itt['name']; ?>" <?php if (!isset($itt['id'])) {
echo 'onClick="return false;"';
} ?> /><img src="//img.new-combats.tech/i/items/<?= $itt['img']; ?>" style="padding:10px;<?php if (!isset($it['id'])) {
echo 'filter: alpha(opacity=35); -moz-opacity: 0.35; -khtml-opacity: 0.35; opacity: 0.35;';
} ?>" title="Повесить `Шар`"></a>
<?php
} else {
echo "У Вас нет шаров для украшения Ёлки!";
}
?>
</div>
</div>
<hr>
<?php
// }
if(isset($_GET['page']))
{
if (isset($_GET['page'])) {
$fpage = round($_GET['page']);
if($fpage<=0)
{
if ($fpage <= 0) {
$fpage = 1;
}
} else {
@ -239,28 +252,21 @@ if(isset($_GET['page']))
$i = mysql_fetch_array(mysql_query('SELECT COUNT(`year`) FROM `elka` WHERE `year` = "' . $dt . '" AND (`delete` = "0" OR ' . $u->info['admin'] . ' > 0) ORDER BY `id` DESC'));
$i = $i[0];
$d = ceil($i / 21);
if($i>0)
{
if($d<13)
{
if ($i > 0) {
if ($d < 13) {
$j = 0;
$pagesN = '';
while($i>=0)
{
while ($i >= 0) {
$i -= 21;
if($i!=0)
{
if ($i != 0) {
$j++;
$r2 = '';
if($j<=$d)
{
if(isset($r))
{
if ($j <= $d) {
if (isset($r)) {
$r2 = '&r=' . $r;
}
$jt = $j;
if($fpage==$j)
{
if ($fpage == $j) {
$jt = '<span class="number">' . $j . '</span>';
}
$pagesN .= ' <a href="?id=' . $post['id'] . '&d=' . $_GET['d'] . '&page=' . $j . '" title="Перейти на страницу №' . $j . '">' . $jt . '</a> ';
@ -272,15 +278,11 @@ if(isset($_GET['page']))
$j = $fpage - 6;
$i = 0;
$pagesN = '';
while($k<13)
{
if($j>0)
{
if($j<=$d)
{
while ($k < 13) {
if ($j > 0) {
if ($j <= $d) {
$jt = $j;
if($fpage==$j)
{
if ($fpage == $j) {
$jt = '<span class="number">' . $j . '</span>';
}
$pagesN .= ' <a href="?id=' . $post['id'] . '&d=' . $_GET['d'] . '&page=' . $j . '" title="Перейти на страницу №' . $j . '">' . $jt . '</a> ';
@ -291,22 +293,18 @@ if(isset($_GET['page']))
}
$prpage = $fpage - 12;
$nxpage = $fpage + 12;
if($prpage<=0)
{
if ($prpage <= 0) {
$prpage = 1;
}
if($nxpage>$d)
{
if ($nxpage > $d) {
$nxpage = $d;
}
$_GET['d'] = (int)$_GET['d'];
if($fpage-7>0)
{
if ($fpage - 7 > 0) {
$pages .= '<a href="?id=' . $post['id'] . '&d=' . $_GET['d'] . '&page=1" title="Первая страница">«</a> <a href="?id=' . $post['id'] . '&d=' . $_GET['d'] . '&page=' . $prpage . '" title="Показать предыдущие страницы">...</a> ';
}
$pages .= ' ' . $pagesN . ' ';
if($fpage<$d-5)
{
if ($fpage < $d - 5) {
$pages .= '<a href="?id=' . $post['id'] . '&d=' . $_GET['d'] . '&page=' . $nxpage . '" title="Показать следующие страницы">...</a> <a href="?id=' . $post['id'] . '&d=' . $_GET['d'] . '&page=' . $d . '" title="Последняя страница">»</a>';
}
}
@ -317,55 +315,53 @@ if(isset($_GET['page']))
<U>Посетители оставили надписи на стволе елки:</U> <?= $pages; ?><br>
<div style="padding:5px;">
<?php
$sp = mysql_query('SELECT * FROM `elka` WHERE `year`="'.$dt.'" AND `city`="'.$u->info['city'].'" AND (`delete` = "0" OR '.$u->info['admin'].' > 0) ORDER BY `time` DESC LIMIT '.$limit1.','.$limit2.'');
$sp = mysql_query(
'SELECT * FROM `elka` WHERE `year`="' . $dt . '" AND `city`="' . $u->info['city'] . '" AND (`delete` = "0" OR ' . $u->info['admin'] . ' > 0) ORDER BY `time` DESC LIMIT ' . $limit1 . ',' . $limit2 . ''
);
$page = floor((int)$_POST['page']);
if($page<1){ $page = 1; }elseif($page>300){ $page==300; }
while($pl = mysql_fetch_array($sp))
{
$prs = explode('|',$pl['pers']); $pers = '';
if($prs[0]!=0)
{
if ($page < 1) {
$page = 1;
} elseif ($page > 300) {
$page == 300;
}
while ($pl = mysql_fetch_array($sp)) {
$prs = explode('|', $pl['pers']);
$pers = '';
if ($prs[0] != 0) {
$pers .= '<img src="//img.new-combats.tech/i/align/align' . $prs[0] . '.gif">';
}
if($prs[1]!=0)
{
if ($prs[1] != 0) {
$clanPrs = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id`="' . $prs[1] . '" LIMIT 1'));
$pers .= '<img src="//img.new-combats.tech/i/clan/' . $clanPrs['name_mini'] . '.gif">';
}
$pers .= '<b>' . $prs[2] . '</b>[' . $prs[3] . ']<a href="/info/' . $prs[5] . '" title="Инф. о ' . $prs[2] . '" target="blank"><img src="//img.new-combats.tech/i/inf_' . $prs[4] . '.gif"></a>';
if($pl['delete']!='0')
{
if($pl['delete']=='1')
{
if($u->info['admin']>0)
{
if ($pl['delete'] != '0') {
if ($pl['delete'] == '1') {
if ($u->info['admin'] > 0) {
$pl['text'] = '<font color=red><i>Сообщение стерто</i></font> <font color=grey><small>(' . $pl['text'] . ')</small></font>';
} else {
$pl['text'] = '<font color=red><i>Сообщение стерто</i></font>';
}
} else {
$prs = explode('|',$pl['delete']); $pers2 = '';
if($prs[0]!=0)
{
$prs = explode('|', $pl['delete']);
$pers2 = '';
if ($prs[0] != 0) {
$pers2 .= '<img src="//img.new-combats.tech/i/align/align' . $prs[0] . '.gif">';
}
if($prs[1]!=0)
{
if ($prs[1] != 0) {
$clanPrs = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id`="' . $prs[1] . '" LIMIT 1'));
$pers2 .= '<img src="//img.new-combats.tech/i/clan/' . $clanPrs['img'] . '.gif">';
}
$pers2 .= '<a href="javascript:top.toUser(\'' . $prs[2] . '\',\'private\');"><b>' . $prs[2] . '</b></a>[' . $prs[3] . ']<a href="/info/' . $prs[2] . '" title="Инф. о ' . $prs[2] . '" target="blank"><img src="//img.new-combats.tech/i/inf_' . $prs[4] . '.gif"></a>';
if($u->info['admin']>0 || ($u->info['align']>1 && $u->info['align']<2) || ($u->info['align']>3 && $u->info['align']<4))
{
if ($u->info['admin'] > 0 || ($u->info['align'] > 1 && $u->info['align'] < 2) || ($u->info['align'] > 3 && $u->info['align'] < 4)) {
$pl['text'] = '<i><font color=red>Сообщение стерто персонажем</font> ' . $pers2 . '</i> <font color=grey><small>(' . $pl['text'] . ')</small></font>';
} else {
$pl['text'] = '<i><font color=red>Сообщение стерто персонажем</font> ' . $pers2 . '</i>';
}
}
}
if(($u->info['admin']>0 || ($u->info['align']>1 && $u->info['align']<2) || ($u->info['align']>3 && $u->info['align']<4)) && $pl['delete']=='0')
{
if (($u->info['admin'] > 0 || ($u->info['align'] > 1 && $u->info['align'] < 2) || ($u->info['align'] > 3 && $u->info['align'] < 4)) && $pl['delete'] == '0') {
$dl = ' <a href="main.php?page=' . $_POST['page'] . '&del=' . $pl['id'] . '"><small>Стереть</small></a>';
} else {
$dl = '';
@ -378,39 +374,56 @@ if(isset($_GET['page']))
<FORM method="post" action="main.php">
Оставить сообщение: <INPUT type=text name=message maxlength=150 size=50>&nbsp;<INPUT type=submit name=addmessage value='Добавить'>
</FORM>
<td width="280" valign="top"><table cellspacing="0" cellpadding="0">
<td width="280" valign="top">
<table cellspacing="0" cellpadding="0">
<tr>
<td width="100%">&nbsp;</td>
<td><table border="0" cellpadding="0" cellspacing="0">
<td>
<table border="0" cellpadding="0" cellspacing="0">
<tr align="right" valign="top">
<td><!-- -->
<?= $goLis; ?>
<!-- -->
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td nowrap="nowrap"><table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#DEDEDE">
<td nowrap="nowrap">
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#DEDEDE">
<tr>
<td bgcolor="#D3D3D3"><img src="//img.new-combats.tech/i/move/links.gif" width="9" height="7"/></td>
<td bgcolor="#D3D3D3" nowrap="nowrap"><a href="#" id="greyText" class="menutop" onclick="location='main.php?loc=1.180.0.9&amp;rnd=<?= $code; ?>';" title="<?php thisInfRm('1.180.0.9',1); ?>">Центральная Площадь</a></td>
<td bgcolor="#D3D3D3" nowrap="nowrap">
<a href="#" id="greyText" class="menutop" onclick="location='main.php?loc=1.180.0.9&amp;rnd=<?= $code; ?>';" title="<?php thisInfRm(
'1.180.0.9', 1
); ?>">Центральная Площадь</a></td>
</tr>
</table></td>
</tr> <tr>
<td nowrap="nowrap"><table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#DEDEDE">
</table>
</td>
</tr>
<tr>
<td nowrap="nowrap">
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#DEDEDE">
<tr>
<td bgcolor="#D3D3D3"><img src="//img.new-combats.tech/i/move/links.gif" width="9" height="7"/></td>
<td bgcolor="#D3D3D3" nowrap="nowrap"><div align="left"><a href="#" id="greyText" class="menutop" onclick="location='main.php?loc=1.180.0.209&amp;rnd=<?= $code; ?>';" title="<?php thisInfRm('1.180.0.209',1); ?>">Ледяная пещера</a></div></td>
<td bgcolor="#D3D3D3" nowrap="nowrap">
<div align="left">
<a href="#" id="greyText" class="menutop" onclick="location='main.php?loc=1.180.0.209&amp;rnd=<?= $code; ?>';" title="<?php thisInfRm(
'1.180.0.209', 1
); ?>">Ледяная пещера</a></div>
</td>
</tr>
</table></td>
</table>
</td>
</tr>
</table></td>
</table>
</td>
</tr>
</table></td>
</table>
</td>
</tr>
</table>
<br/>
<center></center></td>
<center></center>
</td>
</table>
<div id="textgo" style="visibility:hidden;"></div>
<?php
}
?>

View File

@ -22,7 +22,7 @@ if($u->room['file']=='novich')
$ids = '';
$map_locs = array();
$spm2 = mysql_query('SELECT `id`,`x`,`y` FROM `dungeon_map` WHERE `id_dng` = "106"');
$spm2 = mysql_query('SELECT `id`,`x`,`y` FROM `dungeon_map` WHERE `id_dng` = 106');
while( $plm2 = mysql_fetch_array( $spm2 ) ) {
$map_locs[] = array($plm2['x'],$plm2['y']);
}
@ -41,7 +41,7 @@ if($u->room['file']=='novich')
//Добавляем ботов и обьекты в пещеру $zid с for_dn = $dungeon['id']
//Добавляем ботов
$vls = '';
$sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "106"');
$sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = 106');
while( $pl = mysql_fetch_array( $sp ) ) {
if( $pl['id_bot'] == 0 && $pl['bot_group'] !=''){
$bots = explode( ',', $pl['bot_group'] );
@ -54,7 +54,7 @@ if($u->room['file']=='novich')
$ins1 = mysql_query('INSERT INTO `dungeon_bots` (`dn`,`id_bot`,`colvo`,`items`,`x`,`y`,`dialog`,`atack`,`go_bot`,`noatack`) VALUES '.$vls.'');
//Добавляем обьекты
$vls = '';
$sp = mysql_query('SELECT * FROM `dungeon_obj` WHERE `for_dn` = "106"');
$sp = mysql_query('SELECT * FROM `dungeon_obj` WHERE `for_dn` = 106');
while($pl = mysql_fetch_array($sp))
{
$vls .= '("'.$zid.'","'.$pl['name'].'","'.$pl['img'].'","'.$pl['x'].'","'.$pl['y'].'","'.$pl['action'].'","'.$pl['type'].'","'.$pl['w'].'","'.$pl['h'].'","'.$pl['s'].'","'.$pl['s2'].'","'.$pl['os1'].'","'.$pl['os2'].'","'.$pl['os3'].'","'.$pl['os4'].'","'.$pl['type2'].'","'.$pl['top'].'","'.$pl['left'].'","'.$pl['date'].'"),';

View File

@ -417,7 +417,7 @@ if ($u->info['admin'] > 0) {
</tr>
</table>
<?= $err ?>
<? switch ($level){
<?php switch ($level){
case 1:#-----Вход
?>
<TABLE cellpadding=0 cellspacing=0>
@ -458,7 +458,7 @@ if ($u->info['admin'] > 0) {
<A href="?arenda=advanced2&sd4=<?= $u->info['id']; ?>" onClick="return confirm('Вы уверены, что хотите заплатить 10 кр.?')">Арендовать</A>
<HR>
<?
<?php
break;
case 2:#-----Арендованная койка
?>
@ -479,7 +479,7 @@ if ($u->info['admin'] > 0) {
&nbsp;&bull; Размер сундука: <?= $maxbox; ?> вещей<BR>
&nbsp;&bull; Сувениры: <?= $max_p_box; ?> шт.<BR>
<? if ($objaga['type'] == "advanced2") {
<?php if ($objaga['type'] == "advanced2") {
echo '&nbsp;&bull; Мест для животных: 2 <BR>';
} ?>
&nbsp&bull; Койка<BR>
@ -498,7 +498,7 @@ if ($u->info['admin'] > 0) {
Смена аренды, оплаченной зубами на кредитную аренду запрещена.<BR>
Количество вещей, сувениров и животных на вашем складе не должно превышать допустимое значение для выбранного арендуемого помещения.<BR>
</SMALL>
<?
<?php
break;
case 3:#-----Комната
switch ($room){
@ -509,7 +509,7 @@ if ($u->info['admin'] > 0) {
<TEXTAREA rows=15 style='width: 90%;' name='notes'><?= $objaga['notes']; ?></TEXTAREA><BR>
<INPUT type='hidden' name='room' value='1'>
<INPUT type='submit' name='savenotes' value='Сохранить текст'>
<?
<?php
break;
case 2:#-----Сундук
@ -693,7 +693,7 @@ if ($u->info['admin'] > 0) {
</TD>
</TR>
</TABLE>
<? break;
<?php break;
case 7:#-----Персонажи
?>
@ -832,7 +832,7 @@ if ($u->info['admin'] > 0) {
echo $r;
?>
<?
<?php
break;
case 3:#-----Животные
?>
@ -851,7 +851,7 @@ if ($u->info['admin'] > 0) {
}
?></A>
</TD>
<? if ($cage2['pet_in_cage'] == 2) {
<?php if ($cage2['pet_in_cage'] == 2) {
echo '<TD width=150 align=center><nobr><B>' . $cage2['name'] . '</B> [' . $cage2['level'] . ']</nobr>
<A href="/main.php?pet_id=' . $cage2['id'] . '&sd4=' . $u->info['id'] . '&room=3&0.' . rand(0, 9999999999999999) . '" alt="Оставить"><IMG src="//img.new-combats.tech/i/obraz/' . $cage2['sex'] . '/' . $cage2['obraz'] . '.gif" width=120 height=220>';
} else {
@ -875,7 +875,7 @@ if ($u->info['admin'] > 0) {
</A>
</TD>
</TR></TABLE>
<?
<?php
break;
case 4:#-----Сон
?>
@ -892,7 +892,7 @@ if ($u->info['admin'] > 0) {
<A href="?to_<?= $link; ?>=1&sd4=<?= $u->info['id']; ?>&room=4&0.<?= rand(0, 9999999999999999); ?>"><?= $button; ?></A><BR>
<?= $div1 ?>
</SMALL>
<?
<?php
}#--Конец свича $room
break;
case 4:#-----------------------------------------------смена аренды----------------------------------------
@ -915,7 +915,7 @@ if ($u->info['admin'] > 0) {
&bull; Койка<BR>
<A href="?changearenda=base&sd4=<?= $u->info['id']; ?>" onClick="return confirm('Вы уверены, что хотите заплатить 1 кр. за смену помещения?')">Сменить помещение</A>
<?
<?php
}
if ($objaga['type'] != "advanced"){
?>
@ -929,7 +929,7 @@ if ($u->info['admin'] > 0) {
<A href="?changearenda=advanced&sd4=<?= $u->info['id']; ?>" onClick="return confirm('Вы уверены, что хотите заплатить 3 кр. за смену помещения?')">Сменить помещение</A>
<?
<?php
}
if ($objaga['type'] != "advanced2"){
?>
@ -944,7 +944,7 @@ if ($u->info['admin'] > 0) {
<A href="?changearenda=advanced2&sd4=<?= $u->info['id']; ?>" onClick="return confirm('Вы уверены, что хотите заплатить 10 кр. за смену помещения?')">Сменить помещение</A>
<?
<?php
}
echo '<HR>';
}
@ -998,8 +998,8 @@ if ($u->info['admin'] > 0) {
<td bgcolor="#D3D3D3" nowrap><a href="#" id="greyText" class="menutop" onClick="location='main.php?loc=1.180.0.218&rnd=<?= $code; ?>';"
title="<?php thisInfRm('1.180.0.218', 1); ?>">Общ. Этаж 2</a></td>
</tr>
<? } ?>
<? if ($u->info['room'] == '218' and $ar_lvl >= 2 and $sleep_mod == 0) { ?>
<?php } ?>
<?php if ($u->info['room'] == '218' and $ar_lvl >= 2 and $sleep_mod == 0) { ?>
<tr>
<td bgcolor="#D3D3D3"><img src="//img.new-combats.tech/i/move/links.gif" width="9" height="7"/></td>
<td bgcolor="#D3D3D3" nowrap><a href="#" id="greyText" class="menutop" onClick="location='main.php?loc=1.180.0.217&rnd=<?= $code; ?>';"

View File

@ -2,7 +2,9 @@
if (!defined('GAME')) {
die();
}
if ($u->room['file'] == 'znahar') {
if ($u->room['file'] != 'znahar') {
return;
}
?>
<STYLE>
.H3 {
@ -40,7 +42,7 @@ if ($u->room['file'] == 'znahar') {
</TD>
<TD width=1 valign=top>
<?php
if ($c['znahar'] == 1) {
if (\Core\Config::get('znahar') == 1) {
$raspst = 99999;
} else {
$raspst = 0;
@ -111,28 +113,22 @@ if ($u->room['file'] == 'znahar') {
<TD width=270 valign=top>
<SCRIPT>
//////////////Название,параметр,всего, +сколько, до скольки сбросить(макс возможное),сколько сбрасывать/прибавлять
var pr = new Array(
const pr = [
'Сила', 's1', <?= $st['s1'];?>, <?= $u->stats['s1'] - $st['s1'];?>, 3, 0,
'Ловкость', 's2', <?= $st['s2'];?>, <?= $u->stats['s2'] - $st['s2'];?>, 3, 0,
'Интуиция', 's3', <?= $st['s3'];?>, <?= $u->stats['s3'] - $st['s3'];?>, 3, 0,
'Выносливость', 's4', <?= $st['s4'];?>, 0, <?= $vinos[$u->info['level']]?>, 0
<?if ($u->info['level'] > 3) {?>
<?php if($u->info['level'] > 3){?>
, 'Интеллект', 's5', <?=$st['s5'];?>, <?=$u->stats['s5'] - $st['s5'];?>, 0, 0
<?}if ($u->info['level'] > 6) {?>
<?php } if ($u->info['level'] > 6) {?>
, 'Мудрость', 's6', <?=$st['s6'];?>, 0, 0, 0
<?}if ($u->info['level'] > 9) {?>
<?php } if ($u->info['level'] > 9) {?>
, 'Духовность', 's7', <?=$st['s7'];?>, 0, 0, 0
<?}if ($u->info['level'] > 12) {?>
, 'Воля', 's8', <?=$st['s8'];?>, 0, 0, 0
<?}if ($u->info['level'] > 15) {?>
, 'Свобода Духа', 's9', <?=$st['s9'];?>, 0, 0, 0
<?}if ($u->info['level'] > 18) {?>
, 'Божественность', 's10', <?=$st['s10'];?>, 0, 0, 0
<?}?>
);
<?php } ?>
];
function getprstr(i) {
var ss = pr[i] + ": " + (pr[i + 2] + pr[i + 3] + pr[i + 5]);
let ss = pr[i] + ": " + (pr[i + 2] + pr[i + 3] + pr[i + 5]);
if (pr[i + 3] || pr[i + 5]) {
ss += " (" + pr[i + 2];
if (pr[i + 3]) {
@ -151,9 +147,9 @@ if ($u->room['file'] == 'znahar') {
return ss;
}
var freepr = 0;
var freemoves = <?=$raspst;?>;
var movecost = 5;
let freepr = 0;
const freemoves = <?=$raspst;?>;
const movecost = 5;
function modpr(i, to) {
if (to == 1 && freepr == 0) {
@ -166,14 +162,13 @@ if ($u->room['file'] == 'znahar') {
freepr -= to;
document.all["pr" + i].innerHTML = getprstr(i);
document.all["prfree"].innerHTML = freepr;
var moves = 0;
for (j = 0; j < pr.length; j += 6) {
let moves = 0;
for (let j = 0; j < pr.length; j += 6) {
if (pr[j + 5] > 0) {
moves += pr[j + 5]
}
;
}
movedonebutton.disabled = (freepr || moves == 0 ? true : false);
movedonebutton.disabled = (!!(freepr || moves == 0));
document.all["prmoves"].innerHTML = moves + ((freemoves < moves) ? " за " + (movecost * (moves - freemoves)) + " кр." : (moves ? " / бесплатно" : ""));
}
@ -181,22 +176,20 @@ if ($u->room['file'] == 'znahar') {
if (freepr) {
return;
}
var s = "";
for (j = 0; j < pr.length; j += 6) {
let s = "";
for (let j = 0; j < pr.length; j += 6) {
if (pr[j + 5]) {
s += "&" + pr[j + 1] + "=" + pr[j + 5];
}
;
}
if (!s) {
return
}
;
location = "?movestat=0.<?=$code;?>&sd4=<?=$u->info['id']?>" + s;
}
var s = "<TABLE>";
for (i = 0; i < pr.length; i += 6) {
let s = "<TABLE>";
for (let i = 0; i < pr.length; i += 6) {
if (pr[i + 2] != -1) {
s += "<TR><TD width=200 id=pr" + i + ">" + getprstr(i) + "</TD>";
s += '<TD><img src=https://img.combats.com/i/minus.gif border=0 onclick="modpr(' + i + ',-1)" style="cursor: hand"> '
@ -217,18 +210,23 @@ if ($u->room['file'] == 'znahar') {
</TD>
<TD valign=top><BR>
Навыки владения оружием и магией<BR>
<form method=post><input type=hidden value='<?= $u->info['id']; ?>' name='dropmastery'><INPUT type=submit value='Сбросить <? echo $c['znahar'] == 1 ? "бесплатно" : "(32кр.)" ?>'
<form method=post>
<input type=hidden value='<?= $u->info['id']; ?>' name='dropmastery'>
<INPUT type=submit value='Сбросить <?php echo $c['znahar'] == 1 ? "бесплатно" : "(32кр.)" ?>'
onclick="return confirm('Вы действительно хотите сбросить умения?')">
<HR color=black>
</form>
Особенности персонажа<BR>
<form method=post><input type=hidden value='<?= $u->info['id']; ?>' name='dropperks'> <INPUT type=submit value='Сбросить <? echo $c['znahar'] == 1 ? "бесплатно" : "(300кр.)" ?>'
<form method=post>
<input type=hidden value='<?= $u->info['id']; ?>' name='dropperks'>
<INPUT type=submit value='Сбросить <?php echo $c['znahar'] == 1 ? "бесплатно" : "(300кр.)" ?>'
onclick="return confirm('Вы действительно хотите сбросить особенности?')">
<HR color=black>
</form>
Характеристики<BR>
<form method=post><input type=hidden value='<?= $u->info['id']; ?>' name='dropstats'><INPUT type=submit value='Сбросить <? echo $c['znahar'] == 1 ? "бесплатно" : "(500кр.)" ?>'
<form method=post>
<input type=hidden value='<?= $u->info['id']; ?>' name='dropstats'>
<INPUT type=submit value='Сбросить <?php echo $c['znahar'] == 1 ? "бесплатно" : "(500кр.)" ?>'
onclick="return confirm('Вы действительно хотите сбросить все характеристики до минимального уровня?')">
</form>
</TABLE>
@ -238,10 +236,6 @@ if ($u->room['file'] == 'znahar') {
</small>
<BR>
</TABLE>
<div>
<? //рейтинг
?>
</div>
<div></div>
</BODY>
</HTML>
<? } ?>

View File

@ -19,8 +19,20 @@ if (isset($_GET['showmenu'])) {
mysql_query('UPDATE `stats` SET `showmenu`="' . $u->info['showmenu'] . '" WHERE `id`="' . $u->info['id'] . '"');
}
}
$rz0 = '';
$rz1 = '';
$rz2 = '';
$rz3 = '';
$rz4 = '';
$rz5 = '';
$expbase = number_format($u->stats['levels']['exp'], 0, ",", " ");
$expbase = '(<a href="/exp" target="_blank">' . $expbase . '</a>)';
$repovo = $u->rep['rep3'] - $u->rep['rep3_buy'];
?>
<style type="text/css">
<style>
.linestl1 {
background-color: #ececec;
font-size: 11px;
@ -31,66 +43,7 @@ if (isset($_GET['showmenu'])) {
padding-right: 4px;
padding-bottom: 1px;
}
</style>
<script>
function getLine(id, name, a, b, o, id2) {
var tss = '<td width="20"><img src="//img.new-combats.tech/i/minus.gif" style="display:block;cursor:pointer;margin-bottom:3px;" title="Скрыть" class="btn-slide" onClick="location=\'main.php?inv=1&otdel=<?= $_GET['otdel']; ?>&showmenu=' + id2 + '&rnd=<?= $code; ?>\';"></td>';
if (o == 0) {
tss = '<td width="20"><img src="//img.new-combats.tech/i/plus.gif" style="display:block;cursor:pointer;margin-bottom:3px;" title="Показать" class="btn-slide" onClick="location=\'main.php?inv=1&otdel=<?= $_GET['otdel']; ?>&showmenu=' + id2 + '&rnd=<?= $code; ?>\';"></td>';
}
var sts01 = '<a href="main.php?inv=1&otdel=<?= $_GET['otdel']; ?>&up=' + id + '&rnd=<?= $code; ?>"><img style="display:block;float:right; margin-bottom:3px;" src="//img.new-combats.tech/i/3.gif"></a>';
if (id == 0) {
sts01 = '<img style="display:block;float:right;margin-bottom:3px;" src="//img.new-combats.tech/i/4.gif">';
}
var sts02 = '<a href="main.php?inv=1&otdel=<?= $_GET['otdel']; ?>&down=' + id + '&rnd=<?= $code; ?>"><img style="display:block; margin-bottom:3px; float:right;" src="//img.new-combats.tech/i/1.gif"></a>';
if (id == 6) {
sts02 = '<img style="display:block;float:right;margin-bottom:3px;" src="//img.new-combats.tech/i/2.gif">';
}
var sts2 = '<td width="40"><div style="float:right;">' + sts01 + '' + sts02 + '</div></td>';
document.write('<table class="mroinv" width="100%" border="0" cellspacing="2" cellpadding="0">' +
'<tr>' + tss +
'<td style="font-size:9px;"><span class="linestl1">&nbsp;' + name + '</span></td>' + sts2 + '</tr>' +
'</table>');
}
function showDiv(id) {
var block = document.getElementById('block_' + id);
block.style.display = 'block';
}
function hiddenDiv(id) {
var block = document.getElementById('block_' + id);
block.style.display = 'none';
}
function save_com_can() {
var ddtpsBankDiv = document.getElementById('chpassbank');
if (ddtpsBankDiv != undefined) {
ddtpsBankDiv.style.display = 'none';
ddtpsBankDiv.innerHTML = '';
}
}
function save_compl() {
var ddtpswBank = '<div><form action="main.php?inv=1&otdel=<?= $_GET['otdel']; ?>&rnd=<?= $code; ?>" method="post">' +
'<table style="border:1px solid #B1A996;" width="250" border="0" cellspacing="0" cellpadding="0"><tr><td bgcolor="#B1A996"><div align="center"><strong>Сохранить комплект</strong></div></td></tr><tr><td bgcolor="#DDD5C2" style="padding:5px;"><div align="center"><small>Введите название боевого комплекта:<br />' +
'<input style="width:90%;" type="text" name="compname" value="" id="compname" /><label></label></small><br><input style="margin-left:3px;cursor:pointer;" type="submit" name="button" id="button" value=" Сохранить " /><input style="margin-left:3px;cursor:pointer;" onClick="save_com_can();" type="button" value=" Отмена " /></div></td></tr></table></form></div>';
var ddtpsBankDiv = document.getElementById('chpassbank');
if (ddtpsBankDiv != undefined) {
ddtpsBankDiv.style.display = '';
ddtpsBankDiv.innerHTML = ddtpswBank;
}
}
function za_block(id) {
if ($('#za_block_' + id).css('display') == 'none') {
$('#za_block_' + id).css('display', '');
} else {
$('#za_block_' + id).css('display', 'none');
}
}
</script>
<style>
.mroinv {
/*background-color:#e2e2e2;border-top:1px solid #eeeeee;border-left:1px solid #eeeeee;border-right:1px solid #a0a0a0;border-bottom:1px solid #a0a0a0;*/
background: url(//img.new-combats.tech/i/back.gif) 0 2px;
@ -116,57 +69,90 @@ if (isset($_GET['showmenu'])) {
background-color: #BEBEBE;
}
</style>
<div id="chpassbank" style="display:none; position:absolute; top:50px; left:250px;"></div>
<?php
<script>
function getLine(id, name, a, b, o, id2) {
var tss = '<td width="20">' +
'<img src="//img.new-combats.tech/i/minus.gif" style="display:block;cursor:pointer;margin-bottom:3px;" title="Скрыть" class="btn-slide" onClick="location=\'main.php?inv=1&otdel=<?= $_GET['otdel']; ?>&showmenu=' + id2 + '&rnd=<?= $code; ?>\';"></td>';
if (o === 0 || o === '0') {
tss = '<td width="20"><img src="//img.new-combats.tech/i/plus.gif" style="display:block;cursor:pointer;margin-bottom:3px;" title="Показать" class="btn-slide" onClick="location=\'main.php?inv=1&otdel=<?= $_GET['otdel']; ?>&showmenu=' + id2 + '&rnd=<?= $code; ?>\';"></td>';
}
var sts01 = '<a href="main.php?inv=1&otdel=<?= $_GET['otdel']; ?>&up=' + id + '&rnd=<?= $code; ?>"><img style="display:block;float:right; margin-bottom:3px;" src="//img.new-combats.tech/i/3.gif"></a>';
if (id === 0 || id === '0') {
sts01 = '<img style="display:block;float:right;margin-bottom:3px;" src="//img.new-combats.tech/i/4.gif">';
}
var sts02 = '<a href="main.php?inv=1&otdel=<?= $_GET['otdel']; ?>&down=' + id + '&rnd=<?= $code; ?>"><img style="display:block; margin-bottom:3px; float:right;" src="//img.new-combats.tech/i/1.gif"></a>';
if (id === 6 || id === '6') {
sts02 = '<img style="display:block;float:right;margin-bottom:3px;" src="//img.new-combats.tech/i/2.gif">';
}
var sts2 = '<td width="40"><div style="float:right;">' + sts01 + '' + sts02 + '</div></td>';
document.write('<table class="mroinv" width="100%" border="0" cellspacing="2" cellpadding="0">' +
'<tr>' + tss +
'<td style="font-size:9px;"><span class="linestl1">&nbsp;' + name + '</span></td>' + sts2 + '</tr>' +
'</table>');
}
$rz0 = '';
$rz1 = '';
$rz2 = '';
$rz3 = '';
$rz4 = '';
$rz5 = '';
$expbase = number_format($u->stats['levels']['exp'], 0, ",", " ");
if ($expbase - 1 == $u->info['exp'] && $c['nolevel']) {
//Проверяем блок опыта
$tlus = mysql_fetch_array(
mysql_query('SELECT COUNT(*) FROM `users` WHERE `real` = 1 AND `level` = "' . $u->info['level'] . '" LIMIT 1')
);
if ($tlus[0] < $u->info['level'] * 10) {
$expbase = '<strike>' . $expbase . '</strike>';
function showDiv(id) {
const block = document.getElementById('block_' + id);
block.style.display = 'block';
}
$expbase = '(<a href="/exp" target="_blank">' . $expbase . '</a>)';
if (((1 + $u->info['level'] * 10) - $tlus[0]) > 0) {
$expbase .= ' <u><a onMouseOver="top.hi(this,\'<b>Персонажи ' . $u->info['level'] . ' уровня не получают опыт.</b><br>Для разблокировки не хватает <u>' . ((1 + $u->info['level'] * 10) - $tlus[0]) . ' персонажей</u> данного уровня.\',event,0,1,1,1,\'\');" onMouseOut="top.hic();" onMouseDown="top.hic();" style="cursor:help">[?]</a></u>';
function hiddenDiv(id) {
const block = document.getElementById('block_' + id);
block.style.display = 'none';
}
function save_com_can() {
const ddtpsBankDiv = document.getElementById('chpassbank');
if (ddtpsBankDiv) {
ddtpsBankDiv.style.display = 'none';
ddtpsBankDiv.innerHTML = '';
}
}
function save_compl() {
const ddtpswBank = '<div><form action="main.php?inv=1&otdel=<?= $_GET['otdel']; ?>&rnd=<?= $code; ?>" method="post">' +
'<table style="border:1px solid #B1A996;" width="250" border="0" cellspacing="0" cellpadding="0"><tr><td bgcolor="#B1A996"><div align="center"><strong>Сохранить комплект</strong></div></td></tr><tr><td bgcolor="#DDD5C2" style="padding:5px;"><div align="center"><small>Введите название боевого комплекта:<br />' +
'<input style="width:90%;" type="text" name="compname" value="" id="compname" /><label></label></small><br><input style="margin-left:3px;cursor:pointer;" type="submit" name="button" id="button" value=" Сохранить " /><input style="margin-left:3px;cursor:pointer;" onClick="save_com_can();" type="button" value=" Отмена " /></div></td></tr></table></form></div>';
const ddtpsBankDiv = document.getElementById('chpassbank');
if (ddtpsBankDiv) {
ddtpsBankDiv.style.display = '';
ddtpsBankDiv.innerHTML = ddtpswBank;
}
}
function za_block(id) {
if ($('#za_block_' + id).css('display') === 'none') {
$('#za_block_' + id).css('display', '');
} else {
$expbase = '(<a href="/exp" target="_blank">' . $expbase . '</a>)';
$('#za_block_' + id).css('display', 'none');
}
if ($u->info['exp'] == 12499 && $c['infinity5level']) {
$trks5 = '<div align="center"><hr><font color=red>Для получения следующего уровня вам необходим <a target="_blank" href="/item/1204">Кристалл Вечности</a></font><hr></div>';
}
$repovo = $u->rep['rep3'] - $u->rep['rep3_buy'];
</script>
echo '
<div id="chpassbank" style="display:none; position:absolute; top:50px; left:250px;"></div>
<table width="100%" border="0" cellspacing="3" cellpadding="0">
<tr><td>&nbsp;</td></tr>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td height="15">
<small style="font-size:12px;">
<div style="padding:5px 5px 0px 5px;">
Опыт:&nbsp;<span style="float0:right"><a href="/exp" target="_blank">' . number_format(
$u->info['exp'], 0, ",", " "
) . '</a></span><br>' . $trks5 . '
';
<div style="padding:5px 5px 0 5px;">
Опыт:&nbsp;
<span style="float:right">
<a href="/exp" target="_blank">
<?= number_format($u->info['exp'], 0, ",", " ") ?>
</a>
</span><br> <?= $trks5 ?>
<?php
if ($u->info['expstopu'] < 3 && $u->info['exp'] == $c['expstop']) {
echo '
Квест <b>12</b>й:&nbsp;<span style="float0:right">
<a href="/quest" target="_blank"><b>' . ($u->info['expstopu'] + 1) . '/3 </b></a> статия';
echo '<button style="width:224px;margin-top:5px;" class="btnnew" onclick="location.href=\'/main.php?inv&propusk=1\';">
Стоимость пропуска 600 Екр</button> <br>';
/*
takelevelplease
*/
}
echo '
Бои:&nbsp;<span style="float0:right"><span title="Побед: ' . number_format(
@ -238,7 +224,7 @@ if ($u->info['level'] >= 0 && $u->info['inTurnir'] == 0 && $c['bonuslevel'] && !
*/
$mxlvl = mysql_fetch_array(
mysql_query(
'SELECT `id`,`level` FROM `users` WHERE `real` = 1 AND `admin` = 0 AND `banned` = 0 ORDER BY `level` DESC LIMIT 1'
'select id,level from users where `real` = 1 and admin = 0 and banned = 0 order by level desc limit 1'
)
);
if (isset($mxlvl['id']) && $mxlvl['level'] > $u->info['level'] + 1) {
@ -291,22 +277,16 @@ if ($u->info['level'] >= 0 && $u->info['inTurnir'] == 0 && $c['bonuslevel'] && !
} elseif ($ml == 6) {
mysql_query('UPDATE `stats` SET `exp` = 12500 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1');
}
if ($ml == 6 && !isset($itmsv['id']) && $c['infinity5level'] == true) {
$er8 = 'Требуется Кристалл Вечности!';
} else {
if ($ml == 6) {
mysql_query(
'INSERT INTO `mini_actions` (
`uid`,`time`,`val`,`var`
) VALUES (
"' . $u->info['id'] . '","' . time() . '","mbtnlvl6","0"
)'
'INSERT INTO `mini_actions` (`uid`,`time`,`val`,`var`) VALUES ("' . $u->info['id'] . '","' . time() . '","mbtnlvl6","0")'
);
}
$er8 = 'Вы успешно получили ' . $ml . ' уровень!';
$u->info['level']++;
$ml++;
}
}
} elseif ($ml <= 7) {
$tstlvl = mysql_fetch_array(
@ -735,7 +715,8 @@ if ($uShow[5] == 1) {
$rz5 .= '<div style="display:none" id="lnk5">';
$sp = mysql_query('SELECT * FROM `save_com` WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = "0" LIMIT 10');
while ($pl = mysql_fetch_array($sp)) {
$rz5 .= '<a href="?inv=1&delc1=' . $pl['id'] . '&otdel=' . ((int)$_GET['otdel']) . '&rnd=' . $code . '"><img src="'.\Core\Config::img().'/i/close2.gif" title="Удалить комплект" width="9" height="9"></a> <small><a href="?inv=1&usec1=' . $pl['id'] . '&otdel=' . ((int)$_GET['otdel']) . '&rnd=' . $code . '">Надеть &quot;' . $pl['name'] . '&quot;</a></small><br>';
$rz5 .= '<a href="?inv=1&delc1=' . $pl['id'] . '&otdel=' . ((int)$_GET['otdel']) . '&rnd=' . $code . '"><img src="' . \Core\Config::img(
) . '/i/close2.gif" title="Удалить комплект" width="9" height="9"></a> <small><a href="?inv=1&usec1=' . $pl['id'] . '&otdel=' . ((int)$_GET['otdel']) . '&rnd=' . $code . '">Надеть &quot;' . $pl['name'] . '&quot;</a></small><br>';
}
$rz5 .= '</div>';
}
@ -748,7 +729,8 @@ if ($uShow[6] == 1) {
while ($pl = mysql_fetch_array($sp)) {
$rz6 .= '<a onclick="if(confirm(\'Удалить набор ?\')){location=\'main.php?inv=1&otdel=' . round(
(int)$_GET['otdel']
) . '&delcop=' . $pl['id'] . '\'}" href="javascript:void(0)"><img src="' . \Core\Config::img() . '/i/close2.gif" width="9" height="9"></a> <a href="main.php?inv=1&otdel=' . round(
) . '&delcop=' . $pl['id'] . '\'}" href="javascript:void(0)"><img src="' . \Core\Config::img(
) . '/i/close2.gif" width="9" height="9"></a> <a href="main.php?inv=1&otdel=' . round(
(int)$_GET['otdel']
) . '&usecopr=' . $pl['id'] . '">Использовать &quot;' . $pl['name'] . '&quot;</a><br>';
}

View File

@ -1,6 +1,7 @@
<?php
use Core\Db;
use Model\ActionModel;
use User\ItemsModel;
use User\StatsModel;
@ -10,58 +11,34 @@ if (!defined('GAME')) {
die();
}
$am = new ActionModel($u->info['id']);
$txt ??= '';
if (isset($_GET['getq'])) {
$test = mysql_fetch_array(
mysql_query('SELECT * FROM `actions` WHERE `uid` = ' . $u->info['id'] . ' AND `vars`= \'day_quest\'')
);
if (!isset($test['id'])) {
$zadID = rand(1, 7);
if ($u->info['level'] == 8 && $zadID == 6) {
$zadID = 2;
}
if ($u->info['level'] > 11 && $zadID == 4) {
$zadID = 2;
}
if ($u->info['level'] > 11 && $zadID == 1) {
$zadID = 2;
}
} else {
$zadID = 0;
}
if ($zadID == 1) {
$txt .= '<b>Говорят в Capital City завелись всякие Трупожоры. Пойди да убей их дважды, порадуй бабушку</b>';
} elseif ($zadID == 2) {
$txt .= '<b>Покажи на что способен! Поучаствуй в 10 хаотических поединках!</b>';
} elseif ($zadID == 3) {
$txt .= '<b>Необходимо исследовать для бабушки два любых подземелия, ей очень интересно что там внутри! Только гляди милок, пропуски не используй!</b>';
} elseif ($zadID == 4) {
$txt .= '<b>Сразись в хаотических поединках и получи 100 000 опыта!</b>';
} elseif ($zadID == 5) {
$txt .= '<b>Открой сундук Трупожора, порадуй бабушку!</b>';
} elseif ($zadID == 6) {
$txt .= '<b>Посети Излом Хаоса!</b>';
} elseif ($zadID == 7) {
$txt .= '<b>Выполни 3 любых задания в подземелиях!Бабушка будет очень довольна!</b>';
} elseif ($zadID == 8) {
$txt .= '<b>Сходи ка милок в Башню Смерти! Да попробуй как там свои силенки.</b>';
} else {
$txt .= '<b>Эх шустрый малец, получал задание уже сегодня! Завтра приходи, накормлю чем нибудь вкусным ну и задание дам!</b>';
}
$zadID = !$am->getDailyQuest() ? mt_rand(1, 7) : 0;
$txt .= match ($zadID) {
1 => 'Говорят в городе завелись всякие Трупожоры. Пойди да убей двоих, порадуй бабушку.',
2 => 'Покажи на что способен! Поучаствуй в 10 хаотических поединках!',
3 => 'Необходимо исследовать для бабушки два любых подземелия, ей очень интересно что там внутри! Только гляди милок, пропуски не используй!',
4 => 'Сразись в хаотических поединках и получи 100 000 опыта!',
5 => 'Открой сундук Трупожора, порадуй бабушку!',
6 => 'Посети Излом Хаоса!',
7 => 'Выполни 3 любых задания в подземелиях! Бабушка будет очень довольна!',
8 => 'Сходи-ка милок в Башню Смерти! Да попробуй там свои силенки.',
default => 'Эх шустрый малец, получал задание уже сегодня! Завтра приходи, накормлю чем нибудь вкусным ну и задание дам!'
};
$txt = "<b>$txt</b>";
if ($zadID > 0) {
mysql_query(
'INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES (' . $u->info['id'] . ',unix_timestamp(),\'capitalcity\',421,\'day_quest\',\'\',' . $zadID . ',' . $u->info['exp'] . ')'
);
ActionModel::new($u->info, $zadID, 'day_quest');
sendSysChat($txt);
}
}
function sendSysChat($message)
function sendSysChat($message): void
{
global $u;
$cmsg = new ChatMessage();
$cmsg->setCity($u->info['city']);
$cmsg->setRoom($u->info['room']);
$cmsg->setTo($u->info['login']);
$cmsg->setType(6);
@ -69,132 +46,76 @@ function sendSysChat($message)
(new Chat())->sendMsg($cmsg);
}
function giveDailyQuestPrize()
function giveDailyQuestPrize(): void
{
global $u;
Db::sql('update actions set vals = 0 where vars = ? and uid = ?', ['day_quest', $u->info['id']]);
Db::sql('update users_achiv set zb = zb + 1 where id = ?', [$u->info['id']]);
if ($u->info['level'] < 12) {
ItemsModel::addItem(10020, $u->info['id'], '|sudba=' . $u->info['login']);
} else {
ItemsModel::addItem(6470, $u->info['id'], '|sudba=' . $u->info['login']);
}
StatsModel::addRepexpById($u->info['id'], 50); //Репутация +20
}
if (isset($_GET['putq'])) {
$test = mysql_fetch_array(
mysql_query('SELECT * FROM `actions` WHERE `uid` = ' . $u->info['id'] . ' AND `vars`= \'day_quest\'')
);
if (!isset($test['id'])) {
$txt .= '<b style="color: red">У тебя нет задания милок, не юли! Хоть бабушка плохо видит но бабушка хорошо помнит.</b>';
$test = $am->getDailyQuest();
if (!$test) {
$txt .= 'У тебя нет задания милок, не юли! Хоть бабушка плохо видит но бабушка хорошо помнит.';
} else {
$zadID = $test['vals'];
$finishedTasks = $am->getFinishedDailyQuestTasks($test['time']);
if ($zadID == 1) {
$check = mysql_query(
'SELECT * FROM `actions` WHERE `uid` = ' . $u->info['id'] . ' AND `vars`= \'end_trup\' AND `time` > ' . $test['time']
);
$i = 0;
while ($pl = mysql_fetch_array($check)) {
$i++;
}
if ($i > 1) {
$txt .= '<b>Порадовал бабушку! Убил ипостата! Может на печи полежим? - Нет, ну держи жетончик!</b>';
if ($finishedTasks['end_trup'] > 1) {
$txt .= 'Порадовал бабушку! Убил ипостата! Может на печи полежим? - Нет, ну держи жетончик!';
giveDailyQuestPrize();
} else {
$txt .= '<b>Победи в боях с Трупожором ' . $i . '/2</b>';
$txt .= 'Победи в боях с Трупожором ' . $finishedTasks['end_trup'] . '/2.';
}
} elseif ($zadID == 2) {
$check = mysql_query(
'SELECT * FROM `actions` WHERE `uid` = ' . $u->info['id'] . ' AND `vars`= \'end_xaot\' AND `time` > ' . $test['time']
);
$i = 0;
while ($pl = mysql_fetch_array($check)) {
$i++;
}
if ($i > 9) {
$txt .= '<b>Порадовал бабушку! Поучаствовал в боях! А точно покушать не хочешь? - Нет, ну держи жетончик!</b>';
if ($finishedTasks['end_xaot'] > 9) {
$txt .= 'Порадовал бабушку! Поучаствовал в боях! А точно покушать не хочешь? - Нет, ну держи жетончик!';
giveDailyQuestPrize();
} else {
$txt .= '<b>Участия в хаотах ' . $i . '/10</b>';
$txt .= 'Участия в хаотах ' . $finishedTasks['end_xaot'] . '/10.';
}
} elseif ($zadID == 3) {
$check = mysql_query(
'SELECT * FROM `actions` WHERE `uid` = ' . $u->info['id'] . ' AND `vars`= \'psh0\' AND `time` > ' . $test['time']
);
$i = 0;
while ($pl = mysql_fetch_array($check)) {
$i++;
}
if ($i > 1) {
$txt .= '<b>Порадовал бабушку! Хороший запах! А точно покушать не хочешь? - Нет, ну держи жетончик!</b>';
if ($finishedTasks['psh0'] > 1) {
$txt .= 'Порадовал бабушку! Хороший запах! А точно покушать не хочешь? - Нет, ну держи жетончик!';
giveDailyQuestPrize();
} else {
$txt .= '<b>Посещение Подземелий ' . $i . '/2</b>';
$txt .= 'Посещение Подземелий ' . $finishedTasks['psh0'] . '/2.';
}
} elseif ($zadID == 4) {
if (($u->info['exp'] - $test['val']) > 100000) {
$txt .= '<b>Порадовал бабушку! Подрос,Подрос! держи жетончик!</b>';
$txt .= 'Порадовал бабушку! Подрос, подрос! держи жетончик!';
giveDailyQuestPrize();
} else {
$txt .= '<b>Получение ' . ($u->info['exp'] - $test['val']) . '/100 000 опыта</b>';
$txt .= 'Получение ' . ($u->info['exp'] - $test['val']) . '/100 000 опыта.';
}
} elseif ($zadID == 5) {
$check = mysql_query(
'SELECT * FROM `actions` WHERE `uid` = ' . $u->info['id'] . ' AND `vars`= \'trup_sun\' AND `time` > ' . $test['time']
);
$i = 0;
while ($pl = mysql_fetch_array($check)) {
$i++;
}
if ($i > 0) {
$txt .= '<b>Порадовал бабушку! Сундучек удачу принес? Нет? Ну держи жетончик!</b>';
if ($finishedTasks['trup_sun'] > 0) {
$txt .= 'Порадовал бабушку! Сундучек удачу принес? Нет? Ну держи жетончик!';
giveDailyQuestPrize();
} else {
$txt .= '<b>Открытие сундуков Трупожора 0/1</b>';
$txt .= 'Открытие сундуков Трупожора 0/1';
}
} elseif ($zadID == 6) {
$check = mysql_query(
'SELECT * FROM `actions` WHERE `uid` = ' . $u->info['id'] . ' AND `vars`= \'izlom\' AND `time` > ' . $test['time']
);
$i = 0;
while ($pl = mysql_fetch_array($check)) {
$i++;
}
if ($i > 0) {
$txt .= '<b>Порадовал бабушку! Так пахнет гарью и смертью Ммммм ... За это тебе жетончик!</b>';
if ($finishedTasks['izlom'] > 0) {
$txt .= 'Порадовал бабушку! Так пахнет гарью и смертью Ммммм ... За это тебе жетончик!';
giveDailyQuestPrize();
} else {
$txt .= '<b>Посещение Излома Хаоса 0/1</b>';
$txt .= 'Посещение Излома Хаоса 0/1';
}
} elseif ($zadID == 7) {
if ($finishedTasks['win'] > 2) {
$txt .= 'Порадовал бабушку! Стало в мире светлее, но бабка как была слепая так и осталась... <br> Чуть не забыла жетончик!';
giveDailyQuestPrize();
} else {
$txt .= 'Выполни 3 задания в подземелиях. ' . $finishedTasks['win'] . '/3.';
}
}
} elseif ($zadID == 7) {
$check = mysql_query(
'SELECT * FROM `actions` WHERE `uid` = ' . $u->info['id'] . ' AND `vals`= \'win\' AND `time` > ' . $test['time']
);
$i = 0;
while ($pl = mysql_fetch_array($check)) {
$i++;
}
if ($i > 2) {
$txt .= '<b>Порадовал бабушку! Стало в мире светлее, но бабка как была слепая так и осталась... <br> Чуть не забыла жетончик!</b>';
giveDailyQuestPrize();
} else {
$txt .= '<b>Выполни 3 задания в подземелиях. ' . $i . '/3 </b>';
}
} elseif ($zadID == 8) {
$txt .= '<b>Участие в башне смерти 0.1</b>';
} else {
$txt .= '<b style="color: red">Эх шустрый малец, получал задание уже сегодня! Завтра приходи накормлю чем нибудь вкусным ну и задание дам!</b>';
}
sendSysChat($txt);
sendSysChat("<b>$txt</b>");
}
}
@ -213,7 +134,7 @@ $repovo = $u->rep['rep3'] - $u->rep['rep3_buy'];
Духовность:&nbsp;<b><?= $u->stats['s7']; ?></b><br>
<?php endif; ?>
<?php if ($u->info['ability'] > 0 || $u->info['skills'] > 0): ?>
<a href="main.php?skills=1&side=1">+ Способности</a><br>
<a href="/main.php?skills=1&side=1">+ Способности</a><br>
<?php endif; ?>
&nbsp;<br>
@ -225,7 +146,7 @@ $repovo = $u->rep['rep3'] - $u->rep['rep3_buy'];
Деньги:&nbsp;<b><?= $u->info['money'] ?> кр.</b>&nbsp;</br>
Деньги:&nbsp;<b style="color:green"><?= $u->info['money2'] ?> екр.</b><br>
<?php if ($u->stats['pbe'] > 0): ?>
<?php if (isset($u->stats['pbe']) && $u->stats['pbe'] > 0): ?>
<a href="/news/268/" target="_blank">Бонус покупателя:&nbsp;<?= $u->stats['pbe'] ?>&nbsp;уровень</a>
<?php if (date('d.m.Y') != date('d.m.Y', $nowby)): ?>
<span style="color: red"><br>(Совершите покупку ЕКР чтобы сохранить и увеличить бонус покупателя)</span>

View File

@ -110,7 +110,7 @@ $vi = [
<td width="75" align="center" valign="middle" bgcolor="#DADADA" style="border-bottom:1px solid #CCCCCC;"><b>Вечно</b></td>
<td style="border-bottom:1px solid #CCCCCC;"><font color=darkgreen><b>1 Выносливость = 1 ХП</b></font></td>
</tr>
<? } ?>
<?php } ?>
<?php if ($account == 'silvers'){ ?>
<table width="100%" border="0" cellpadding="5" cellspacing="0" bgcolor="#E1E1E1">
<td style="border-bottom:1px solid #CCCCCC;">&bull; Восстановление жизни и манны +10%</td>
@ -141,7 +141,7 @@ $vi = [
<td width="75" align="center" valign="middle" bgcolor="#DADADA" style="border-bottom:1px solid #CCCCCC;"><b>Вечно</b></td>
<td style="border-bottom:1px solid #CCCCCC;"><font color=darkgreen><b>1 Выносливость = 2 ХП</b></font></td>
</tr>
<? } ?>
<?php } ?>
<?php if ($account == 'gold'){ ?>
<table width="100%" border="0" cellpadding="5" cellspacing="0" bgcolor="#E1E1E1">
<td style="border-bottom:1px solid #CCCCCC;">&bull; Восстановление жизни и манны +50%</td>
@ -173,7 +173,7 @@ $vi = [
<td width="75" align="center" valign="middle" bgcolor="#DADADA" style="border-bottom:1px solid #CCCCCC;"><b>На время действия Благодати</b></td>
<td style="border-bottom:1px solid #CCCCCC;"><font color=darkgreen><b>Увеличивает защиту от урона и магии на 50 едениц.</b></font></td>
</tr>
<? } ?>
<?php } ?>
</table>
<fieldset><p><b>Доступные предметы:</b><br/><small>(Чтобы забрать предмет просто кликните на его изображение)</small></p>
<p>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ - пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ</title>

View File

@ -1,12 +0,0 @@
User-agent: DuplexWeb-Google
User-agent: AdsBot-Google-Mobile-Apps
User-agent: AdsBot-Google
User-agent: AdsBot-Google-Mobile
User-agent: *
Disallow: /
User-agent: *
Allow: /*.html$
Sitemap: /sitemap.xml
Host: https://new-combats.com