Compare commits

...

4 Commits

86 changed files with 9053 additions and 11165 deletions

View File

@ -5,7 +5,7 @@ DefaultLanguage ru
Options -Indexes
Options -MultiViews
RewriteEngine On
RewriteCond %{HTTP:VIA} !^$ [OR]
RewriteCond %{HTTP:FORWARDED} !^$ [OR]
RewriteCond %{HTTP:USERAGENT_VIA} !^$ [OR]
@ -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

34
AI.php
View File

@ -483,4 +483,36 @@ foreach ($p as $prow) {
echo " <span style='background-color: lightgreen;'>[даёт]</span> ";
}
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

View File

@ -0,0 +1,39 @@
<?php
use Core\Db;
class Actions
{
public static function addDungeon(
int $dungeonid,
int $userid,
int $x,
int $y,
string $vars = '',
string $vals = '',
): void {
Db::sql(
'insert into dungeon_actions (dn, x, y, time, uid, vars, vals) values (?,?,?,unix_timestamp(),?,?,?)',
[
$dungeonid,
$x,
$y,
$userid,
$vars,
$vals,
]
);
}
public static function countDungeon(int $dungeonid, int $userid, string $vars = ''): int
{
return Db::getValue(
'select count(id) from dungeon_actions where dn = ? and uid = ? and vars = ?',
[
$dungeonid,
$userid,
$vars,
]
);
}
}

File diff suppressed because it is too large Load Diff

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,11 @@
<?php
namespace Battle;
class Helper
{
public static function getChanse(int $percent): bool
{
return mt_rand(0, 100) <= $percent;
}
}

View File

@ -0,0 +1,676 @@
<?php
namespace Battle;
use Battle;
use Core\Db;
class Log
{
/**
* @param array $data [text,battle,id_hod,vars,type]
* @return void
*/
public static function add(array $data): void
{
if (
empty($data['text']) ||
empty($data['battle']) ||
empty($data['id_hod']) ||
!isset($data['vars']) ||
!isset($data['type'])
) {
return;
}
if (empty($data['type'])) {
$data['type'] = 0;
}
Db::sql(
"insert into battle_logs (time, battle, id_hod, text, vars, type, zona1, zona2, zonb1, zonb2)
values (unix_timestamp(),?,?,?,?,?,'','','','')",
[
$data['battle'],
$data['id_hod'],
$data['text'],
$data['vars'],
$data['type'],
]
);
}
public static function addComment(Battle $battle): void
{
$comments = [
'А танцуешь ты лучше.',
'А мы что, в прятки тут играем?',
'А вы разве пингвинов никогда не видели?',
'А, ведь когда-то, вы были красивыми… А теперь? Ну и рожи! Жуть!',
'А потом еще труп пинать будут.',
'А я вчера ночью за соседями подглядывал. Они точно так же кувыркались',
'А ведь вы живых людей дубасите...',
'А вот я вчера в зоопарке был...',
'А вы в стройбате не служили?',
'А вы видели, чтобы так на улице делали!?',
'А вы знали что ёжики размножаются в интернете?',
'А жить-то, как хочется:',
'А из-за чего вы собственно дерётесь?',
'А чего ржёте, вы ещё остальных не видели',
'А что произойдёт если ты испугаешся до полусмерти дважды?!',
'Больше так не делай. Ты же не садист?',
'Без комментариев...',
'Больно ведь!',
'Быстро ты за монитор спрятался!',
'Все хотят попасть в рай, но никто не хочет умирать!',
'Вчера с такой девчонкой познакомился.',
'Всего 5 минут знакомы, а дерутся, словно супруги с 20-ти летним стажем...',
'Все. Я так больше не могу.',
'В конце концов, кто-то победит?',
'Вы чего, с дерева упали?',
'Возятся как сонные мухи... давайте я вам лучше анекдот расскажу: ...',
'Вот видишь, как полезно чистить зубы на ночь?',
'Вот вы все руками махаете, а за вами уже очередь',
'Вот попадёте вы в плен и вас там будут долго бить. Но вы ничего не расскажете... и не потому, что вы такой стойкий, просто вы ничего не знаете',
'Вы бы лучше пошли потренировались!',
'Вы все еще разминаетесь? Позовите, когда кости в муку друг другу разминать будете.',
'Вы же бойцы! Имейте совесть!',
'Гаси недоумка!',
'Да, если бы я смог это остановить, то получил бы нобелевскую премию `За мир` ',
'Да куда они бьют?!',
'Давайте быстрее! За вами уже очередь образовалась.',
'Давайте обойдемся сегодня таймаутом. А? А то мне уже кошмары скоро будут сниться.',
'Дерутся как девчонки!',
'Дети, посмотрите налево... Ой!.. Нет, туда лучше не смотреть.',
'Если так будет продолжаться, то скоро мы заснем!',
'Если бы у меня было кресло-качалка, я бы в нём качался...',
'Если вы что-то сказать хотите, то лучше молчите :)',
'Жестокость не порок.',
'Жизнь вне нашего клуба - это пустая трата кислорода!!!',
'Жми! Дави! Кусай! Царапай!',
'За такие бои надо в хаос отправлять!',
'Знаете откуда в комиссионном магазине столько вещей? Это я после ваших гулянок собираю и сдаю туда. Иногда вместе с частями тела, застрявшими в них.',
'Здесь люди так близки друг к другу. Просто иначе ударить нельзя.',
'И пролитая кровь еще пульсирует...',
'Инвалидов развелось...',
'Какой бой!!!',
'Кто!? Кто здесь?!',
'Кто вас этому научил?',
'Кузнечик, блин...',
'Куплю импортный проигрыватель грампластинок.',
'Лошадью ходи!',
'Лучше враг, чем друг - враг.',
'Ладно, вы тут пока друг друга за волосы таскайте, а я пойду, пообедаю.',
'Мне ваш балет уже надоел!',
'Может, начнется-таки настоящий бой???',
'Мысли лезут в голову изнутри, а удары снаружи.',
'Ну и где ваши коронные удары? Где живописные падения я спрашиваю!',
'Ну, нельзя же так наотмашь лупить!',
'Надо раньше было думать, теперь смертельно поздно...',
'На такое зрелище билеты продавать можно. Народ ухохочется!',
'Нет! Не надо драки! А... ладно деритесь, все равно не умеете.',
'Нет, ну должен быть повод, должен же быть повод?',
'Нет, я отказываюсь это комментировать!',
'Не таких обламывали!',
'Ну выпили вы рюмку, ну две... ну литр, ну два... так зачем же после этого драку затевать?!',
'Ну и кто за этот погром платить будет?',
'Ну и оскал у вас. Из вашей улыбки кастеты делать можно.',
'Ну, что же ты..? Не печалься. Выше голову, так по ней удобней попасть.',
'Ничего... Блок тоже удар.',
'Обернись!!!.... Поздно...',
'Ого! Научите меня так не делать.',
'Осторожно! Сделаешь дырочку, уже не запломбируешь!',
'Оно вам надо???',
'Обычное дело...там что-то отклеилось.',
'Ой, и заболтался я с вами...',
'Он же не промахнётся если ты не отойдёшь!',
'По-моему, кому-то светит инвалидность.',
'Подкинь ему грабли, на которые он еще не наступал.',
'Прав был кот Леопольд, давайте жить дружно?',
'При ударе в живот нарушается кислотно-щелочной баланс.',
'Проверь, не торчит ли у тебя нож из живота.',
'Перестаньте мне орать!',
'Подкинь ему грабли, на которые он еще не наступал.',
'Прыгают тут как блохи... Все, я пошел за дихлофосом!',
'Разбудите меня когда эта порнография закончится...',
'Ребенок сильнее ударил бы!',
'Славно вмазал!',
'Славно они веселятся',
'Смотрю вот на вас, и слезы наворачиваются.',
'Сначала учатся ходить, а потом только в драку лезут.',
'Так они друг другу что-нибудь сломают.',
'Так ты ему все кости переломаешь!',
'У меня в подъезде точно так же соседа отмудохали',
'Убогих развелось...',
'Ух ты, какой прыткий!',
'Фашист!! Надо ж, так по больному месту врезать...',
'Хватит бить его об угол моей кабинки! Мне же потом ее чинить.',
'Хулиганы, прекратите немедленно!',
'Хочешь, подскажу, куда он ударит?',
'Хорошо, что у меня ловкости больше чем у вас всех, а то б вы и меня в инвалидную коляску посадили бы.',
'Хороший бой!',
'Хороший удар!',
'Хиляк-разрядник!',
'Что ты его за волосы схватил?! Отпусти немедленно!',
'Щас я вас настигну, вот тогда мы и похохочем',
'Это была какая-то неизвестная мне техника...',
'Это же противник, а не глина! Хватит мяться!',
'Это не бой, это издевательское избиение.',
'Это поубавит спеси',
'Это и был твой план `Б` ?',
'Это была какая-то неизвестная мне техника...',
'Я же предупреждал, - будет больно.',
'Я не страдаю безумием. Я наслаждаюсь им каждую минуту :)',
'Я красивый, я сильный, я умный, я добрый. А вот вы? Вы себя-то видели?!',
'Я тоже умею драться, но не буду...',
'(тревожно озираясь) я вам по секрету скажу... за вами наблюдают!',
'<вырезано цензурой> после боя я этих <вырезано цензурой> обоих в <вырезано цензурой> и <вырезано цензурой>',
'<вырезано цензурой> каратисты фиговы',
];
$randomcomment = $comments[array_rand($comments)];
self::add(
[
'battle' => $battle->info['id'],
'id_hod' => $battle->hodID,
'text' => "{tm1} <i>Комментатор: $randomcomment</i>",
'vars' => 'time1=' . time(),
'type' => 1,
]
);
}
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

@ -12,7 +12,6 @@ enum ShopId: int
case ANIMALS = 8; // магазин новичка
case TAVERN = 9; // наковальня
case IZLOM = 10;
case BLOOD_ALTAR = 11; //алтарь крови
case TEMPLE = 14;
case MUSHROOMS = 17; // общий рыцарский
case REFERALS = 27;

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']])) {
$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>';
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>';
}
}
$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

@ -4,9 +4,9 @@ namespace FightRequest;
class FRHelper
{
/** Считает разрешенные уровни игроков в групповых заявках.
* @param int $type тип фильтра.
* @param int $userLevel уровень игрока подающего заявку.
/** Считает разрешенные уровни игроков в групповых заявках.
* @param int $type тип фильтра.
* @param int $userLevel уровень игрока подающего заявку.
* @return object
*/
public static function getTeammatesLevel(int $type, int $userLevel): object
@ -16,25 +16,25 @@ class FRHelper
switch ($type) {
default:
break;
case 1: // только моего и ниже
case 1: // только моего и ниже
$max = $userLevel;
break;
case 2: // только ниже моего
case 2: // только ниже моего
$max = $userLevel - 1;
break;
case 3: // только моего
case 3: // только моего
$min = $userLevel;
$max = $userLevel;
break;
case 4: // не выше меня на 1 уровень
case 4: // не выше меня на 1 уровень
$min = $userLevel;
$max = $userLevel + 1;
break;
case 5: // не ниже меня на 1 уровень
case 5: // не ниже меня на 1 уровень
$min = $userLevel - 1;
$max = $userLevel;
break;
case 6: // мой уровень +- 1
case 6: // мой уровень +- 1
$min = $userLevel - 1;
$max = $userLevel + 1;
break;
@ -45,9 +45,9 @@ class FRHelper
];
}
/** Считает разрешенные уровни игроков в хаотических заявках.
* @param int $type тип фильтра.
* @param int $userLevel уровень игрока подающего заявку.
/** Считает разрешенные уровни игроков в хаотических заявках.
* @param int $type тип фильтра.
* @param int $userLevel уровень игрока подающего заявку.
* @return object
*/
public static function getChaoticTeammatesLevel(int $type, int $userLevel): object

View File

@ -4,7 +4,7 @@ namespace Helper;
class Comparsion
{
/** Не даёт значению выйти за пределы.
/** Не даёт значению выйти за пределы.
* @param $value
* @param $minimum
* @param $maximum

View File

@ -25,4 +25,10 @@ class ItemModel
{
return $this->item['img'];
}
public static function getNameById(int $id): string
{
$name = Db::getValue('select name from items_main where id = ?', [$id]);
return $name ?: '';
}
}

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

@ -25,7 +25,7 @@ class AdmFactory
10,
'moderation.addmoderator',
$this->targetUser['id'],
'Назначен на пост модератора.'
'Назначен на пост модератора.'
);
}
@ -36,7 +36,7 @@ class AdmFactory
10,
'moderation.removemoderator',
$this->targetUser['id'],
'Уволен с поста модератора.'
'Уволен с поста модератора.'
);
}
@ -48,7 +48,7 @@ class AdmFactory
10,
'moderation.changegender',
$this->targetUser['id'],
'Изменен пол персонажа.'
'Изменен пол персонажа.'
);
}
@ -63,7 +63,7 @@ class AdmFactory
10,
'moderation.changelogin',
$this->targetUser['id'],
"Изменен логин персонажа. $this->targetLogin => " . strip_tags($login)
"Изменен логин персонажа. $this->targetLogin => " . strip_tags($login)
);
}
@ -84,7 +84,7 @@ class AdmFactory
public function kickfrombattle(): void
{
if (empty($this->targetUser['battle'])) {
$this->status = 'Персонаж не в поединке.';
$this->status = 'Персонаж не в поединке.';
return;
}
Db::sql('update users left join stats on users.id = stats.id
@ -94,6 +94,6 @@ class AdmFactory
battle_yron = default,
battle_exp = default
where id = ?', [$this->targetUser['id']]);
// В оригинале тут ещё писалась запись в лог боя, но нужна ли она?
// В оригинале тут ещё писалась запись в лог боя, но нужна ли она?
}
}

View File

@ -17,13 +17,13 @@ class Announcement
{
echo <<<HTML
<div style="padding:0 10px 5px 10px; margin:5px; border-bottom:1px solid #cac9c7;">
<h4>Ìåãàôîí</h4>
<h4>Мегафон</h4>
<form method="post"></form>
<label for="announcementText">Ñîîáùåíèå</label>
<label for="announcementText">Сообщение</label>
<input name="announcementText" type="text" id="announcementText" size="70" maxlength="1000">
<input type="submit" name="announcementModeration" id="announcementModeration" class="btn" value="Íàïèñàòü"><br>
<input type="submit" name="announcementModeration" id="announcementModeration" class="btn" value="Написать"><br>
<input name="announcementIsSigned" type="checkbox" id="announcementIsSigned" value="1">
<label for="announcementIsSigned">îò ñâîåãî èìåíè</label>
<label for="announcementIsSigned">от своего имени</label>
</form>
</div>
HTML;
@ -41,9 +41,9 @@ HTML;
return;
}
$sender = empty($_POST['announcementIsSigned']) ? '<b>Àäìèíèñòðàöèÿ</b>' : User::getLogin(User::start()->info['id']);
$sender = empty($_POST['announcementIsSigned']) ? '<b>Администрация</b>' : User::getLogin(User::start()->info['id']);
(new Chat())->sendsys("$sender: $strippedMessage");
echo '<span style="color: red; "><b>Ñîîáùåíèå óñïåøíî îòïðàâëåíî</b></span>';
echo '<span style="color: red; "><b>Сообщение успешно отправлено</b></span>';
}
}

View File

@ -10,7 +10,7 @@ use User;
class ModFactory
{
private const ERROR_WRONG_DURATION = 'Íåâåðíî óêàçàí ñðîê íàêàçàíèÿ';
private const ERROR_WRONG_DURATION = 'Неверно указан срок наказания';
public readonly string $status;
private DateTime $time;
private ChatMessage $msg;
@ -21,12 +21,12 @@ class ModFactory
public function __construct(
private readonly string $targetLogin,
private readonly string $reason,
int $moderatorsRoom // Êîìíàòà ãäå ñèäèò ìîäåðàòîð.
int $moderatorsRoom // Комната где сидит модератор.
)
{
$this->targetUser = User::getInfo($this->targetLogin);
if (empty($this->targetUser)) {
$this->status = 'Ïåðñîíàæ íå íàéäåí!';
$this->status = 'Персонаж не найден!';
return;
}
$this->chat = new Chat();
@ -46,7 +46,7 @@ class ModFactory
}
$this->time->modify("+ $minutes minute");
$this->moderation->silence($this->time, $this->reason);
$this->status = "Ïåðñîíàæó $this->targetLogin çàïðåùåíî îáùàòüñÿ â ÷àòå äî {$this->time->format(Moderation::EXPIRATION_DATETIME_FORMAT)}.";
$this->status = "Персонажу $this->targetLogin запрещено общаться в чате до {$this->time->format(Moderation::EXPIRATION_DATETIME_FORMAT)}.";
$this->msg->setText("[img[items/silence.gif]] $this->status");
$this->chat->sendMsg($this->msg);
}
@ -54,11 +54,11 @@ class ModFactory
public function unsilence(): void
{
if ($this->targetUser['molch1'] < $this->time->getTimestamp()) {
$this->status = 'Ïåðñîíàæ íå ìîë÷èò!';
$this->status = 'Персонаж не молчит!';
return;
}
$this->moderation->unsilence();
$this->status = "Ñ ïåðñîíàæà $this->targetLogin ñíÿò çàïðåò íà îáùåíèå â ÷àòå.";
$this->status = "С персонажа $this->targetLogin снят запрет на общение в чате.";
$this->msg->setText("[img[items/pal_button3.gif]] $this->status");
$this->chat->sendMsg($this->msg);
}
@ -71,8 +71,8 @@ class ModFactory
}
$this->time->modify("+ $days day");
$this->moderation->prison($this->time, $this->reason);
Db::sql('delete from dungeon_zv where uid = ?', [$this->targetUser['id']]); // Óäàëÿåì çàÿâêè â ïåùåðû.
$this->status = "Ïåðñîíàæ $this->targetLogin áûë îòïðàâëåí â òþðüìó äî {$this->time->format(Moderation::EXPIRATION_DATETIME_FORMAT)}.";
Db::sql('delete from dungeon_zv where uid = ?', [$this->targetUser['id']]); // Удаляем заявки в пещеры.
$this->status = "Персонаж $this->targetLogin был отправлен в тюрьму до {$this->time->format(Moderation::EXPIRATION_DATETIME_FORMAT)}.";
$this->msg->setText("[img[items/jail.gif]] $this->status");
$this->chat->sendMsg($this->msg);
}
@ -80,7 +80,7 @@ class ModFactory
public function unprison(): void
{
$this->moderation->unprison();
$this->status = "Ïåðñîíàæ $this->targetLogin áûë âûïóùåí èç òþðüìû.";
$this->status = "Персонаж $this->targetLogin был выпущен из тюрьмы.";
$this->msg->setText("[img[items/jail_off.gif]] $this->status");
$this->chat->sendMsg($this->msg);
}
@ -92,12 +92,12 @@ class ModFactory
return;
}
if ($this->targetUser['info_delete'] === 1 || $this->targetUser['info_delete'] >= $this->time->getTimestamp()) {
$this->status = 'Ïåðñîíàæ óæå ïîä ïîäîçðåíèåì.';
$this->status = 'Персонаж уже под подозрением.';
return;
}
$this->time->modify("+ $days day");
$this->moderation->depersonalize($this->time, $this->reason);
$this->status = "Ïåðñîíàæ $this->targetLogin ïîä ïîäîçðåíèåì äî {$this->time->format(Moderation::EXPIRATION_DATETIME_FORMAT)}";
$this->status = "Персонаж $this->targetLogin под подозрением до {$this->time->format(Moderation::EXPIRATION_DATETIME_FORMAT)}";
$this->msg->setText("[img[items/cui.gif]] $this->status");
$this->chat->sendMsg($this->msg);
}
@ -105,11 +105,11 @@ class ModFactory
public function undepersonalize(): void
{
if ($this->targetUser['info_delete'] <= $this->time->getTimestamp()) {
$this->status = 'Ïåðñîíàæ íå ïîä ïîäîçðåíèåì.';
$this->status = 'Персонаж не под подозрением.';
return;
}
$this->moderation->undepersonalize();
$this->status = "Ïåðñîíàæ $this->targetLogin áîëüøå íå ïîä ïîäîçðåíèåì";
$this->status = "Персонаж $this->targetLogin больше не под подозрением";
$this->msg->setText("[img[items/uncui.gif]] $this->status");
$this->chat->sendMsg($this->msg);
}
@ -119,15 +119,15 @@ class ModFactory
$this->moderation->ban($this->reason);
Db::sql('delete from chat where login = ?', [$this->targetLogin]);
Db::sql('insert into ban_email (email, uid, nick_name) values (?,?,?)', [$this->targetUser['mail'], $this->targetUser['id'], $this->targetLogin]);
Db::sql('delete from zayvki where creator = ?', [$this->targetUser['id']]); // Óäàëÿåì çàÿâêè íà áîé.
Db::sql('delete from dungeon_zv where uid = ?', [$this->targetUser['id']]); // Óäàëÿåì çàÿâêè â ïåùåðû.
Db::sql('delete from zayvki where creator = ?', [$this->targetUser['id']]); // Удаляем заявки на бой.
Db::sql('delete from dungeon_zv where uid = ?', [$this->targetUser['id']]); // Удаляем заявки в пещеры.
if (!empty($this->targetUser['battle'])) {
Db::sql(
'update users left join stats on users.id = stats.id set battle = default, regHP = unix_timestamp(), team = 0, battle_yron = 0, battle_exp = 0 where users.id = ?',
[$this->targetUser['id']]
);
}
$this->status = "Ïåðñîíàæ $this->targetLogin çàáëîêèðîâàí";
$this->status = "Персонаж $this->targetLogin заблокирован";
$this->msg->setText("[img[items/pal_button6.gif]] $this->status");
$this->chat->sendMsg($this->msg);
}
@ -135,12 +135,12 @@ class ModFactory
public function unban(): void
{
if (empty($this->targetUser['banned'])) {
$this->status = 'Ïåðñîíàæ íå â áëîêå.';
$this->status = 'Персонаж не в блоке.';
return;
}
$this->moderation->unban();
Db::sql('delete from ban_email where email = ?', [$this->targetUser['mail']]);
$this->status = "Ïåðñîíàæ $this->targetLogin ðàçáëîêèðîâàí";
$this->status = "Персонаж $this->targetLogin разблокирован";
$this->msg->setText("[img[items/pal_button7.gif]] $this->status");
$this->chat->sendMsg($this->msg);
}

View File

@ -7,7 +7,7 @@ use User;
class UserRegistrationList
{
/** Ðåãèñòðàöèè ïåðñîíàæåé: òîëüêî äëÿ àäìèíèñòðàòîðîâ.
/** Регистрации персонажей: только для администраторов.
* @return void
*/
public static function get(): void
@ -35,14 +35,14 @@ class UserRegistrationList
</script>
<div style="padding:0 10px 5px 10px; margin:5px; border-bottom:1px solid #cac9c7;">
<h4>Ðåãèñòðàöèè ïåðñîíàæåé</h4>
<label for="loginLD520">Äàòà ðåãèñòðàöèè</label>
<h4>Регистрации персонажей</h4>
<label for="loginLD520">Дата регистрации</label>
<input name="pometka520" class="btn btn-success" onclick="regprev()" type="submit" value="&laquo;"/>
<input value="<?= $pld520 ?>" name="loginLD520" type="text" id="loginLD520" size="20" maxlength="10"/>
<input name="pometka520" class="btn btn-success" onclick="regnext()" type="submit" value="&raquo;"/>
<input type="submit" name="pometka520" id="pometka520" class="btn" value="Ïîêàçàòü"/>
<input type="submit" name="pometka520" id="pometka520" class="btn" value="Показать"/>
<?php if (isset($_POST['pometka520'])): ?>
<br><b style="color: red;">Ïåðñîíàæè çàðåãèñòðèðîâàííûå <?= $pld520 ?></b>
<br><b style="color: red;">Персонажи зарегистрированные <?= $pld520 ?></b>
<ol>
<?php foreach (Db::getRows($query, [$pld520TS, $pld520TS + 86400]) as $pl):
$logincolor = match (true) {
@ -55,13 +55,13 @@ class UserRegistrationList
<li>
<span style="color: <?= $logincolor ?>"> <?= User::getLogin($pl['id']) ?> </span>
<?php if ($pl['molch1'] > time()): ?>
<i>(ìîë÷èò)</i>
<i>(молчит)</i>
<?php endif; ?>
<?php if ($pl['battle'] > 0): ?>
<a href="/logs.php?log=<?= $pl['battle'] ?>" target="_blank">(â áîþ)</a>
<a href="/logs.php?log=<?= $pl['battle'] ?>" target="_blank">(в бою)</a>
<?php endif; ?>
<?php if ($pl['host_reg'] > 0): ?>
<small>(ðåôåðàë ïåðñîíàæà <?= User::getLogin($pl['host_reg']) ?>)</small>
<small>(реферал персонажа <?= User::getLogin($pl['host_reg']) ?>)</small>
<?php endif; ?>
</li>
<?php endforeach; ?>

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']]
);
@ -461,11 +461,11 @@ class Priems
/**
* Новая функция магического заклинания с приёма.
* Работает с числовыми приёмами в папке [priem].
* @param int $attackerId кто использует приём
* @param int $defenderId на кого использует приём
* @param float $damage базовый урон приёма
* @param string $damageType тип урона (стихия?) приходит строкой, и конвертируется функцией.
* @param bool $hasCritical флаг, что приём МОЖЕТ критовать
* @param int $attackerId кто использует приём
* @param int $defenderId на кого использует приём
* @param float $damage базовый урон приёма
* @param string $damageType тип урона (стихия?) приходит строкой, и конвертируется функцией.
* @param bool $hasCritical флаг, что приём МОЖЕТ критовать
* @return array [0|damage] int урон, [1|crit] bool был ли крит, [2|miss] bool был ли промах, [3|miss_type] int тип промаха (всегда = 2).
* @author Insallah
*/
@ -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 {
$notr++;
}
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']) {
@ -1574,13 +1574,13 @@ class Priems
}
/**
* @param int $uid на кого кастуем
* @param int $pr id приема
* @param int $uid на кого кастуем
* @param int $pr id приема
* @param int|string $data дата, если -1, то добавляем дату3
* @param int $d2
* @param int $d2
* @param $tm
* @param int $h ход
* @param int $uu id юзера который использовал
* @param int $h ход
* @param int $uu id юзера который использовал
* @param $max
* @param $bj
* @param $tp
@ -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';
@ -1728,8 +1727,8 @@ class Priems
/** Получает строку data c шаблонной записью типа add_m11=2*{lvl1} и конвертирует в реальную строку.
* <br>Шаблон: <br>lvl1 = $uid[level] <br>ts5 = $uid[s5] <br>mpAll = $uid[mpAll]
* @param string $pl строка в формате data
* @param int $uid пользователь, параметры которого используются для подставки в шаблон.
* @param string $pl строка в формате data
* @param int $uid пользователь, параметры которого используются для подставки в шаблон.
* @return string строка в формате data с развёрнутыми шаблонами.
*/
public function redate($pl, $uid)
@ -1740,13 +1739,13 @@ class Priems
$e = explode('|', $pl);
while ($i < count($e)) {
$f = explode('=', $e[$i]);
// $f[1] = $this->getdr(
// $f[1], [0 => 'lvl1', 1 => 'ts5', 2 => 'mpAll'], [
// 0 => $btl->users[$btl->uids[$uid]]['level'],
// 1 => $btl->stats[$btl->uids[$uid]]['s5'],
// 2 => $btl->stats[$btl->uids[$uid]]['mpAll'],
// ]
// );
// $f[1] = $this->getdr(
// $f[1], [0 => 'lvl1', 1 => 'ts5', 2 => 'mpAll'], [
// 0 => $btl->users[$btl->uids[$uid]]['level'],
// 1 => $btl->stats[$btl->uids[$uid]]['s5'],
// 2 => $btl->stats[$btl->uids[$uid]]['mpAll'],
// ]
// );
$f[1] = $this->getDynamicInfo($f[1]);
if ($f[0] != '' && $f[1] != '') {
$e[$i] = implode('=', $f);
@ -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) {
$manager->store();
});
->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]
);
@ -2724,7 +2732,7 @@ class Priems
* Конечный damage после множителей делится на 5 и пишется в БД (atgm=).
* Файлы: 33, 56, 57, 58, 59, 60.
* @param $id
* @param array $pl массив значений из БД priems.
* @param array $pl массив значений из БД priems.
* @param Battle $btl
* @return void
*/
@ -2756,7 +2764,7 @@ class Priems
* Если есть одинаковые статы из них выбирается случайный.
* Файл:267, приём 268. Понимай как хочешь.
* @param $id
* @param array $pl
* @param array $pl
* @param Battle $btl
* @return void
*/
@ -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 &&

File diff suppressed because it is too large Load Diff

View File

@ -31,7 +31,7 @@ class Clan
}
}
private function join(string $clanname)
private function join(string $clanname): void
{
Db::sql('update users set clan = (select id from clan where clan.name = ?) where id = ?', [$clanname, $this->userid]);
}
@ -46,7 +46,7 @@ class Clan
return $this->status;
}
public function printClan()
public function printClan(): void
{
echo '<img style="vertical-align:text-bottom;" src="' . Config::img() . '/i/align/align' . $this->getAlign() . '.gif" alt="Склонность">' . $this->printLogoImage() . $this->getName();
}
@ -88,4 +88,9 @@ class Clan
{
return !empty($this->id) && $this->status === 0;
}
public static function addExp(int $value, int $clanid): void
{
Db::sql('update clan set exp = exp + ? where id = ?',[max($value,0), $clanid]);
}
}

View File

@ -148,6 +148,11 @@ insert into eff_users
Db::sql('delete from eff_users where id in (?) and uid = ?', [implode(',', $ids), $userId]);
}
public static function removePriems(int $userid): void
{
Db::sql("delete from eff_users where v1 = 'priem' and uid = ?", [$userid]);
}
public static function hasAttackTimeLimit(int $attackerId): bool
{
return Db::getValue('select count(*) from eff_users where id_eff = 478 and `delete` = 0 and uid = ?', [$attackerId]) > 0;
@ -166,14 +171,14 @@ insert into eff_users
/**
* Духовность. Спасение.
* Из свитка нападения.
* @param $id
* @param $uid
* @return void
*/
public static function addSpasenie($id): void
public static function addSpasenie($uid): void
{
Db::sql('delete from eff_users where uid = ? and overType = 101');
self::removeByOverType($uid, 101);
Db::sql("insert into eff_users (id_eff, uid, name, data, overType, timeUse, user_use, v1, v2, img2, bj, mark)
values (22,?,'Спасение','add_spasenie=1',101,77,?,'priem',324,'preservation.gif','спасение',1)", [$id, $id]);
values (22,?,'Спасение','add_spasenie=1',101,77,?,'priem',324,'preservation.gif','спасение',1)", [$uid, $uid]);
}

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

@ -12,21 +12,11 @@ class Reputation
public function __construct(int $userid)
{
$this->uid = $userid;
$this->r = Db::getRow(
'select *,
(repcapitalcity+repdemonscity+repangelscity+repsuncity+repdreamscity+repabandonedplain+repsandcity+repemeraldscity+repdevilscity) as allrep,
(nu_capitalcity+nu_demonscity+nu_angelscity+nu_suncity+nu_dreamscity+nu_abandonedplain+nu_sandcity+nu_emeraldscity+nu_devilscity) as allnurep
from rep where id = ?', [$this->uid]
);
$this->r = $this->getr();
if (empty($this->r)) {
Db::sql('insert into rep (id) value (?)', [$this->uid]);
$this->r = Db::getRow(
'select *,
(repcapitalcity+repdemonscity+repangelscity+repsuncity+repdreamscity+repabandonedplain+repsandcity+repemeraldscity+repdevilscity) as allrep,
(nu_capitalcity+nu_demonscity+nu_angelscity+nu_suncity+nu_dreamscity+nu_abandonedplain+nu_sandcity+nu_emeraldscity+nu_devilscity) as allnurep
from rep where id = ?', [$this->uid]
);
$this->r = $this->getr();
}
}
@ -35,7 +25,7 @@ class Reputation
return $this->r;
}
public function addRep(string $dungeonName, int $value): int
public function addRep(string $dungeonName, int $value): mixed
{
if (!isset($this->r[$dungeonName]) || $value <= 0) {
return 0;
@ -44,4 +34,14 @@ class Reputation
Db::sql("update rep set $dungeonName = ? where id = ?", [$value, $this->uid]);
return $this->r[$dungeonName];
}
private function getr()
{
return Db::getRow(
'select *,
(repcapitalcity+repdemonscity+repangelscity+repsuncity+repdreamscity+repabandonedplain+repsandcity+repemeraldscity+repdevilscity) as allrep,
(nu_capitalcity+nu_demonscity+nu_angelscity+nu_suncity+nu_dreamscity+nu_abandonedplain+nu_sandcity+nu_emeraldscity+nu_devilscity) as allnurep
from rep where id = ?', [$this->uid]
);
}
}

View File

@ -123,23 +123,21 @@ class Stats
];
}
public function getStats(int|array|null $uid = null, $i1 = 0, $res = 0, $reimg = false, $btl_cache = false): array
public function getStats(int|array|null $uid = null, $i1 = 0, $reimg = false, $btl_cache = false): array
{
if (empty($uid) || $uid == $this->u->info['id'] && $res != 1) {
//$u = $this->u->info;
$u = User::getInfo($uid);
} elseif (is_array($uid)) {
$u = $uid;
} else {
$u = User::getInfo($uid);
}
$u = match (true) {
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;
@ -171,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);
}
@ -285,22 +286,24 @@ 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'])) {
foreach ($coms['new'] as $complect) {
$com = Db::getValue('select data from complects where com = ? and x <= ? order by x desc limit 1',
$com = Db::getValue(
'select data from complects where com = ? and x <= ? order by x desc limit 1',
[
(int)$complect,
(int)$coms['com'][$complect], // кол-во предметов данного комплекта
]);
]
);
if (!$com) {
continue;
@ -322,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'];
@ -356,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'];
@ -413,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 ед.
@ -431,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;
}
@ -474,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;
@ -496,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 = [
@ -513,8 +487,8 @@ class Stats
/** Собираем динамически создаваемые параметры. Если ключа нет - создаём.
* @param string $key
* @param int $value
* @param array $st
* @param int $value
* @param array $st
* @return void
*/
private function addKeyIfNotExist(string $key, int $value, array &$st): void
@ -530,9 +504,11 @@ class Stats
{
//Характеристики от предметов //ТУТ tr_lvl
// Вся вторая строчка - спасибо Users.
$wearedItems = Db::getRows('select type, data, inOdet,
$wearedItems = Db::getRows(
'select type, data, inOdet,
item_id, inslot, useInBattle, btl_zd, iznosNOW, iznosMAX, magic_inci, name, items_users.id, img, `2h`
from items_users left join items_main on items_main.id = item_id where inOdet != 0 and uid = ?', [$uid]);
from items_users left join items_main on items_main.id = item_id where inOdet != 0 and uid = ?', [$uid]
);
$h = 0;
$hnd1 = 0;
@ -563,6 +539,7 @@ class Stats
5 => [70, 89,],//Великолепная
];
foreach ($wearedItems as $wearedItem) {
$this->addKeyIfNotExist('wp' . $wearedItem['inOdet'] . 'id', $h, $st);
@ -590,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']]);
} else {
$ozm = array_fill_keys($ozm, $ozaozmtypes[1]);
}
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[$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_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']];
} else {
$ozm[1] = $ozaozmtypes[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 (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 (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[$i][0] += $ozaozmtypes[1][0];
$ozm[$i][1] += $ozaozmtypes[1][1];
}
}
if (isset($data['art'])) {
@ -1080,7 +1046,7 @@ class Stats
private function addIntelligenceBonuses(array &$st): void
{
//интелект
//интелект
if ($st['s5'] > 24 && $st['s5'] < 50) {
$st['m11'] += 10;
}
@ -1110,7 +1076,7 @@ class Stats
private function addWisdomBonuses(array &$st): void
{
//мудрость
//мудрость
if ($st['s6'] > 24 && $st['s6'] < 50) {
$st['mpall'] += 150;
$st['speedmp'] += 100;
@ -1151,7 +1117,8 @@ class Stats
private function addDungeonsBonuses(int $id, array &$st): void
{
$finishedDungeons = Db::getValue('select
$finishedDungeons = Db::getValue(
'select
if(repcapitalcity > 24999, 1, 0) +
if(repdemonscity > 24999, 1, 0) +
if(repangelscity > 24999, 1, 0) +
@ -1161,10 +1128,15 @@ class Stats
if(repsandcity > 24999, 1, 0) +
if(repemeraldscity > 24999, 1, 0) +
if(repizlom > 24999, 1, 0) +
0 as finished from rep where id = ?', [$id]);
0 as finished from rep where id = ?', [$id]
);
//Бонус за количество полностью вырытых пещер.
$st['m10'] += 10 * $finishedDungeons;
if (isset($st['m10'])) {
$st['m10'] += 10 * $finishedDungeons;
} else {
$st['m10'] = 10 * $finishedDungeons;
}
}
private function addAdminBonuses(array $u, array &$st): void
@ -1180,10 +1152,12 @@ class Stats
return;
}
Db::sql("update stats set
Db::sql(
"update stats set
tactic1 = tactic2 = tactic3 = tactic4 = tactic5 = tactic6 = tactic7 = 25,
priems_z = '0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|'
where id = ?", [$u['id']]);
where id = ?", [$u['id']]
);
}
/** Переименовывает элементы массива с несовпадающими с остальным скриптом именами полей.
@ -1192,11 +1166,69 @@ class Stats
*/
private function renameArrayKeys(array &$st): void
{
$st['lvl'] = $st['level'];
$st['hpNow'] = $st['hpnow'];
$st['mpNow'] = $st['mpnow'];
unset($st['level'], $st['hpnow'], $st['mpnow']);
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'], $st['hpall'], $st['mpall']);
}
public static function saveBattleStats(array $stats, int $id): void
{
if (!isset(
$stats['hpnow'],
$stats['mpNow'],
$stats['tactic1'],
$stats['tactic2'],
$stats['tactic3'],
$stats['tactic4'],
$stats['tactic5'],
$stats['tactic6'],
$stats['tactic7'],
$stats['enemy'],
$stats['battle_yron'],
$stats['battle_exp'],
$stats['last_hp'],
$stats['priems_z'],
)
) {
return;
}
Db::sql(
'update stats set hpNow = ?,mpNow = ?,
tactic1 = ?,tactic2 = ?,tactic3 = ?,tactic4 = ?,tactic5 = ?,tactic6 = ?,tactic7 = ?,
enemy = ?,battle_yron = ?,last_hp = ?,battle_exp = ?,priems_z = ?
where id = ?',
[
$stats['hpnow'],
$stats['mpNow'],
$stats['tactic1'],
$stats['tactic2'],
$stats['tactic3'],
$stats['tactic4'],
$stats['tactic5'],
$stats['tactic6'],
$stats['tactic7'],
$stats['enemy'],
$stats['battle_yron'],
$stats['battle_exp'],
$stats['last_hp'],
$stats['priems_z'],
$id,
]
);
}
}

View File

@ -107,7 +107,7 @@ $pvr = array();
}
//
$pvr['x5']['priem']['id'] = $pvr['x5']['v2'];
$btl->delPriem($pvr['x5'],$btl->users[$btl->uids[$this->ue['id']]],2);
$btl->delPriem($pvr['x5'], $btl->users[$btl->uids[$this->ue['id']]], 2);
//
//Добавляем прием

View File

@ -107,7 +107,7 @@ $pvr = array();
}
//
$pvr['x5']['priem']['id'] = $pvr['x5']['v2'];
$btl->delPriem($pvr['x5'],$btl->users[$btl->uids[$this->ue['id']]],2);
$btl->delPriem($pvr['x5'], $btl->users[$btl->uids[$this->ue['id']]], 2);
//
//Добавляем прием

View File

@ -107,7 +107,7 @@ $pvr = array();
}
//
$pvr['x5']['priem']['id'] = $pvr['x5']['v2'];
$btl->delPriem($pvr['x5'],$btl->users[$btl->uids[$this->ue['id']]],2);
$btl->delPriem($pvr['x5'], $btl->users[$btl->uids[$this->ue['id']]], 2);
//
//Добавляем прием

View File

@ -1,118 +1,114 @@
<?php
if(!defined('GAME')) {
die();
if (!defined('GAME')) {
die();
}
/*
Прием: Вломить
Следующий удар по противнику наносит на 4 ед. больше
Прием: Вломить
Следующий удар по противнику наносит на 4 ед. больше
*/
$pvr = array();
if( isset($pr_tested_this) ) {
$fx_priem = function( $id , $at , $uid, $j_id ) {
// -- начало приема
global $u, $btl;
//
//Параметры приема
$pvr['used'] = 0;
//
$uid1 = $btl->atacks[$id]['uid1'];
$uid2 = $btl->atacks[$id]['uid2'];
if( $uid == $uid1 ) {
$a = 1;
$b = 2;
$u1 = $uid1;
$u2 = $uid2;
}elseif( $uid == $uid2 ) {
$a = 2;
$b = 1;
$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;
};
unset( $pr_used_this );
}elseif( isset($pr_used_this) ) {
$fx_priem = function( $id , $at , $uid, $j_id ) {
// -- начало приема
global $u, $btl;
//
//Параметры приема
$pvr['used'] = 0;
//
$uid1 = $btl->atacks[$id]['uid1'];
$uid2 = $btl->atacks[$id]['uid2'];
if( $uid == $uid1 ) {
$a = 1;
$b = 2;
$u1 = $uid1;
$u2 = $uid2;
}elseif( $uid == $uid2 ) {
$a = 2;
$b = 1;
$u1 = $uid2;
$u2 = $uid1;
}
if( $a > 0 ) {
$j = 0; $k = 0; $wp = 3;
while($j < count($at['p'][$a]['atack'])) {
if( isset($at['p'][$a]['atack'][$j]['yron']) && (
$at['p'][$a]['atack'][$j][1] == 1 ||
$at['p'][$a]['atack'][$j][1] == 4 ||
$at['p'][$a]['atack'][$j][1] == 5 )) {
if( $pvr['used'] == 0 && !isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) {
//
$pvr['hp'] = 4;
$pvr['hp'] = $btl->testYronPriem( $u1, $u2, 12, $pvr['hp'], -1, true, false, 0 );
$pvr['mg'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$u2.'" AND `v2` = "249" AND `delete` = 0 LIMIT 1'));
if( $pvr['hp'] <= 1 && isset($pvr['mg'])) {
$pvr['hp'] = 0;
$at['p'][$a]['atack'][$j]['yron']['y'] = 1;
$at['p'][$a]['atack'][$j]['yron']['r'] = -1;
$at['p'][$a]['atack'][$j]['yron']['k'] = 1;
$at['p'][$a]['atack'][$j]['yron']['m_k'] = 1;
$at['p'][$a]['atack'][$j]['yron']['m_y'] = 1;
}
else
//
{
$at['p'][$a]['atack'][$j]['yron']['y'] += $pvr['hp'];
$at['p'][$a]['atack'][$j]['yron']['r'] -= $pvr['hp'];
$at['p'][$a]['atack'][$j]['yron']['k'] += $pvr['hp'];
$at['p'][$a]['atack'][$j]['yron']['m_y'] += $pvr['hp'];
$at['p'][$a]['atack'][$j]['yron']['m_k'] += $pvr['hp'];
}
//$at['p'][$a]['atack'][$j]['yron'] = $btl->testYronPriemAttack( 2 , $u1 , $u2 , $at['p'][$a]['atack'][$j]['yron'] );
//
$at['p'][$a]['atack'][$j]['yron']['plog'][] = '$this->deleffm(2,'.(0+$uid).','.$btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3].');
$this->priemAddLog( '.$id.', '.$a.', '.$b.', '.$u1.', '.$u2.',
"'.$btl->stats[$btl->uids[$u1]]['effects'][$btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][0]]['name'].'",
"{tm1} '.$btl->addlt($a , 17 , $btl->users[$btl->uids[$u1]]['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]['priems']['kill'][$uid][$j_id] = true;
}
}
$j++;
}
}
// -- конец приема
return $at;
};
unset( $pr_used_this );
}else{
//Действие при клике
$this->addEffPr($pl,$id);
$pvr = [];
if (isset($pr_tested_this)) {
$fx_priem = function ($id, $at, $uid, $j_id) {
// -- начало приема
global $btl;
//Параметры приема
$pvr['used'] = 0;
$uid1 = $btl->atacks[$id]['uid1'];
$uid2 = $btl->atacks[$id]['uid2'];
if ($uid == $uid1) {
$a = 1;
$b = 2;
$u1 = $uid1;
$u2 = $uid2;
} elseif ($uid == $uid2) {
$a = 2;
$b = 1;
$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;
};
unset($pr_used_this);
} elseif (isset($pr_used_this)) {
$fx_priem = function ($id, $at, $uid, $j_id) {
// -- начало приема
global $btl;
//Параметры приема
$pvr['used'] = 0;
$uid1 = $btl->atacks[$id]['uid1'];
$uid2 = $btl->atacks[$id]['uid2'];
if ($uid == $uid1) {
$a = 1;
$b = 2;
$u1 = $uid1;
$u2 = $uid2;
} elseif ($uid == $uid2) {
$a = 2;
$b = 1;
$u1 = $uid2;
$u2 = $uid1;
}
if ($a > 0) {
$j = 0;
$k = 0;
$wp = 3;
while ($j < count($at['p'][$a]['atack'])) {
if (isset($at['p'][$a]['atack'][$j]['yron']) && (
$at['p'][$a]['atack'][$j][1] == 1 ||
$at['p'][$a]['atack'][$j][1] == 4 ||
$at['p'][$a]['atack'][$j][1] == 5)) {
if ($pvr['used'] == 0 && !isset($at['p'][$a]['priems']['kill'][$uid][$j_id])) {
//
$pvr['hp'] = 4;
$pvr['hp'] = $btl->testYronPriem($u1, $u2, 12, $pvr['hp'], -1, true, false, 0);
$pvr['mg'] = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "' . $u2 . '" AND `v2` = "249" AND `delete` = 0 LIMIT 1'));
if ($pvr['hp'] <= 1 && isset($pvr['mg'])) {
$pvr['hp'] = 0;
$at['p'][$a]['atack'][$j]['yron']['y'] = 1;
$at['p'][$a]['atack'][$j]['yron']['r'] = -1;
$at['p'][$a]['atack'][$j]['yron']['k'] = 1;
$at['p'][$a]['atack'][$j]['yron']['m_k'] = 1;
$at['p'][$a]['atack'][$j]['yron']['m_y'] = 1;
} else {
$at['p'][$a]['atack'][$j]['yron']['y'] += $pvr['hp'];
$at['p'][$a]['atack'][$j]['yron']['r'] -= $pvr['hp'];
$at['p'][$a]['atack'][$j]['yron']['k'] += $pvr['hp'];
$at['p'][$a]['atack'][$j]['yron']['m_y'] += $pvr['hp'];
$at['p'][$a]['atack'][$j]['yron']['m_k'] += $pvr['hp'];
}
$at['p'][$a]['atack'][$j]['yron']['plog'][] = '$this->deleffm(2,' . (0 + $uid) . ',' . $btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3] . ');
$this->priemAddLog( ' . $id . ', ' . $a . ', ' . $b . ', ' . $u1 . ', ' . $u2 . ',
"' . $btl->stats[$btl->uids[$u1]]['effects'][$btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][0]]['name'] . '",
"{tm1} ' . $btl->addlt($a, 17, $btl->users[$btl->uids[$u1]]['sex'], null) . '",
' . ($btl->hodID + 1) . ' );';
$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;
}
}
$j++;
}
}
// -- конец приема
return $at;
};
unset($pr_used_this);
} else {
//Действие при клике
$this->addEffPr($pl, $id);
}
unset($pvr);
?>

View File

@ -1,6 +1,6 @@
<?php
if(!defined('GAME')) {
die();
if (!defined('GAME')) {
die();
}
/*
Прием: Магический барьер [4]
@ -8,136 +8,150 @@ if(!defined('GAME')) {
Цена: 2 маны - 1 ед.
Процент поглощения: 50%
*/
$pvr = array();
$pvr = [];
//Действие при клике
if( isset($pr_momental_this)) {
$fx_moment = function( $uid, $enemy, $j_id, $yron, $profil ) {
if(!isset($btl->stats[$btl->uids[$uid]]['um_priem'][$j_id])) {
global $u, $btl;
$prv['j_priem'] = $btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][0];
$prv['priem_th'] = $btl->stats[$btl->uids[$uid]]['effects'][$prv['j_priem']]['id'];
$yron = $btl->testPogB($uid,$yron,$btl->stats[$btl->uids[$uid]]['effects'][$prv['j_priem']]['id']);
$btl->testPogB($uid,1,$btl->stats[$btl->uids[$uid]]['effects'][$prv['j_priem']]['id'],1);
//$btl->stats[$btl->uids[$uid]]['um_priem'][$j_id]
/*$btl->priemAddLogFast( $uid, 0, "Призрачная защита",
'{tm1} '.$btl->addlt(1 , 17 , $btl->users[$btl->uids[$uid]]['sex'] , NULL).'',
0, time() );*/
if( $yron < 0 ) {
$yron = 0;
}
$btl->stats[$btl->uids[$uid]]['um_priem'][$j_id] = true;
}
return round($yron);
};
}elseif( isset($pr_tested_this) ) {
$fx_priem = function( $id , $at , $uid, $j_id ) {
// -- начало приема
global $u, $btl;
//
//Параметры приема
$pvr['used'] = 0;
//
$uid1 = $btl->atacks[$id]['uid1'];
$uid2 = $btl->atacks[$id]['uid2'];
if( $uid == $uid2 ) {
$a = 1;
$b = 2;
$u1 = $uid1;
$u2 = $uid2;
}elseif( $uid == $uid1 ) {
$a = 2;
$b = 1;
$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;
};
unset( $pr_used_this );
}elseif( isset($pr_used_this) ) {
$fx_priem = function( $id , $at , $uid, $j_id ) {
// -- начало приема
global $u, $btl;
//
//Параметры приема
$pvr['used'] = 0;
//
$uid1 = $btl->atacks[$id]['uid1'];
$uid2 = $btl->atacks[$id]['uid2'];
if( $uid == $uid2 ) {
$a = 1;
$b = 2;
$u1 = $uid1;
$u2 = $uid2;
}elseif( $uid == $uid1 ) {
$a = 2;
$b = 1;
$u1 = $uid2;
$u2 = $uid1;
}
if( $a > 0 ) {
$j = 0; $k = 0; $wp = 3;
$checktuman=mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$uid.'"
if (isset($pr_momental_this)) {
$fx_moment = function ($uid, $enemy, $j_id, $yron, $profil) {
if (!isset($btl->stats[$btl->uids[$uid]]['um_priem'][$j_id])) {
global $u, $btl;
$prv['j_priem'] = $btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][0];
$prv['priem_th'] = $btl->stats[$btl->uids[$uid]]['effects'][$prv['j_priem']]['id'];
$yron = $btl->testPogB($uid, $yron, $btl->stats[$btl->uids[$uid]]['effects'][$prv['j_priem']]['id']);
$btl->testPogB($uid, 1, $btl->stats[$btl->uids[$uid]]['effects'][$prv['j_priem']]['id'], 1);
//$btl->stats[$btl->uids[$uid]]['um_priem'][$j_id]
/*$btl->priemAddLogFast( $uid, 0, "Призрачная защита",
'{tm1} '.$btl->addlt(1 , 17 , $btl->users[$btl->uids[$uid]]['sex'] , NULL).'',
0, time() );*/
if ($yron < 0) {
$yron = 0;
}
$btl->stats[$btl->uids[$uid]]['um_priem'][$j_id] = true;
}
return round($yron);
};
} elseif (isset($pr_tested_this)) {
$fx_priem = function ($id, $at, $uid, $j_id) {
// -- начало приема
global $u, $btl;
//
//Параметры приема
$pvr['used'] = 0;
//
$uid1 = $btl->atacks[$id]['uid1'];
$uid2 = $btl->atacks[$id]['uid2'];
if ($uid == $uid2) {
$a = 1;
$b = 2;
$u1 = $uid1;
$u2 = $uid2;
} elseif ($uid == $uid1) {
$a = 2;
$b = 1;
$u1 = $uid2;
$u2 = $uid1;
}
//
// -- конец приема
return $at;
};
unset($pr_used_this);
} elseif (isset($pr_used_this)) {
$fx_priem = function ($id, $at, $uid, $j_id) {
// -- начало приема
global $u, $btl;
//
//Параметры приема
$pvr['used'] = 0;
//
$uid1 = $btl->atacks[$id]['uid1'];
$uid2 = $btl->atacks[$id]['uid2'];
if ($uid == $uid2) {
$a = 1;
$b = 2;
$u1 = $uid1;
$u2 = $uid2;
} elseif ($uid == $uid1) {
$a = 2;
$b = 1;
$u1 = $uid2;
$u2 = $uid1;
}
if ($a > 0) {
$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']))
{
while($j < count($at['p'][$a]['atack'])) {
if( isset($at['p'][$a]['atack'][$j]['yron']) && (
$at['p'][$a]['atack'][$j][1] == 1 ||
$at['p'][$a]['atack'][$j][1] == 4 ||
$at['p'][$a]['atack'][$j][1] == 5 )) {
//if( !isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) {
//
$prv['j_priem'] = $btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][0];
$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; }
$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_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; }
//
$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]['priems']['kill'][$uid][$j_id] = true;
//}
}
$j++;
}
}
}
// -- конец приема
return $at;
};
unset( $pr_used_this );
}else{
//Действие при клике
$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).'',
($btl->hodID+1)
);
echo '<font color=red><b>Вы успешно использовали прием &quot;Магический Барьер [4]&quot;</b></font>';
$this->addEffPr($pl,$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 ||
$at['p'][$a]['atack'][$j][1] == 4 ||
$at['p'][$a]['atack'][$j][1] == 5)) {
//if( !isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) {
//
$prv['j_priem'] = $btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][0];
$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;
}
$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_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;
}
//
$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;
//}
}
$j++;
}
}
}
// -- конец приема
return $at;
};
unset($pr_used_this);
} else {
//Действие при клике
$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) . '',
($btl->hodID + 1)
);
echo '<font color=red><b>Вы успешно использовали прием &quot;Магический Барьер [4]&quot;</b></font>';
$this->addEffPr($pl, $id);
}
unset($pvr);
?>

View File

@ -1,115 +1,104 @@
<?php
if(!defined('GAME')) {
die();
if (!defined('GAME')) {
die();
}
/*
Прием: Скрытая ловкость
Уворот от 1-го удара и наносите контрудар
*/
$pvr = array();
if( isset($pr_tested_this) ) {
$fx_priem = function( $id , $at , $uid, $j_id ) {
// -- начало приема
global $u, $btl;
//
//Параметры приема
$pvr['used'] = 0;
//
$uid1 = $btl->atacks[$id]['uid1'];
$uid2 = $btl->atacks[$id]['uid2'];
if( $uid == $uid2 ) {
$a = 1;
$b = 2;
$u1 = $uid1;
$u2 = $uid2;
}elseif( $uid == $uid1 ) {
$a = 2;
$b = 1;
$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;
};
unset( $pr_used_this );
}elseif( isset($pr_used_this) ) {
$fx_priem = function( $id , $at , $uid, $j_id ) {
// -- начало приема
global $u, $btl;
//
//Параметры приема
$pvr['used'] = 0;
//
$uid1 = $btl->atacks[$id]['uid1'];
$uid2 = $btl->atacks[$id]['uid2'];
if( $uid == $uid2 ) {
$a = 1;
$b = 2;
$u1 = $uid1;
$u2 = $uid2;
}elseif( $uid == $uid1 ) {
$a = 2;
$b = 1;
$u1 = $uid2;
$u2 = $uid1;
}
if( $a > 0 ) {
$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]) ) {
//
//Уворот от удара выставляем
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 ) {
//Попал
$at['p'][$b]['atack'][] = array( $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 = $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]['priems']['kill'][$uid][$j_id] = true;
$at['p'][$a]['atack'][$j]['priem_used'] = $id;
//
if( $btl->testRazmenblock1($id,$u2,$u1,$pvr['rnd_a']) == false ) {
$at = $this->yronRazmen($id,$at,true);
}
//
}
//
}
$j++;
}
}
// -- конец приема
return $at;
};
unset( $pr_used_this );
}else{
//Действие при клике
$this->addEffPr($pl,$id);
$pvr = [];
if (isset($pr_tested_this)) {
$fx_priem = function ($id, $at, $uid, $j_id) {
// -- начало приема
global $u, $btl;
//
//Параметры приема
$pvr['used'] = 0;
//
$uid1 = $btl->atacks[$id]['uid1'];
$uid2 = $btl->atacks[$id]['uid2'];
if ($uid == $uid2) {
$a = 1;
$b = 2;
$u1 = $uid1;
$u2 = $uid2;
} elseif ($uid == $uid1) {
$a = 2;
$b = 1;
$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;
};
unset($pr_used_this);
} elseif (isset($pr_used_this)) {
$fx_priem = function ($id, $at, $uid, $j_id) {
// -- начало приема
global $u, $btl;
//
//Параметры приема
$pvr['used'] = 0;
//
$uid1 = $btl->atacks[$id]['uid1'];
$uid2 = $btl->atacks[$id]['uid2'];
if ($uid == $uid2) {
$a = 1;
$b = 2;
$u1 = $uid1;
$u2 = $uid2;
} elseif ($uid == $uid1) {
$a = 2;
$b = 1;
$u1 = $uid2;
$u2 = $uid1;
}
if ($a > 0) {
$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])) {
//
//Уворот от удара выставляем
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)) {
//Попал
$at['p'][$b]['atack'][] = [$pvr['rnd_a'], 1, 0, 1]; // 1 1 1
} else {
//В блок
$at['p'][$b]['atack'][] = [$pvr['rnd_a'], 3, 0, 1]; // 2 1 1
}
$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)) {
$at = $this->yronRazmen($id, $at, true);
}
}
}
$j++;
}
}
// -- конец приема
return $at;
};
unset($pr_used_this);
} else {
//Действие при клике
$this->addEffPr($pl, $id);
}
unset($pvr);
?>

View File

@ -114,7 +114,7 @@ if( isset($pr_tested_this) ) {
}else{mysql_query('UPDATE `eff_users` SET `uid` = "'.$u1.'" WHERE `id` = "'.$pvr['pl']['id'].'" LIMIT 1');}*/
$btl->delPriem($pvr['pl'],$btl->users[$btl->uids[$u2]],100,0,$pvr['pl']['name']);
$btl->delPriem($pvr['pl'], $btl->users[$btl->uids[$u2]], 100, 0, $pvr['pl']['name']);
//$this->addPriem($u1,$pvr['pl']['priem']['id'],''.$pvr['pl']['priem']['data2'].'',''.$pvr['pl']['priem']['data3'].'',77,5,$u1,1,''.$pvr['pl']['priem']['name'].'',0,0,1);

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

@ -1,115 +1,112 @@
<?php
if(!defined('GAME')) {
die();
if (!defined('GAME')) {
die();
}
/*
Прием: Танец лезвий
Уворот от 1-го удара и наносите контрудар
*/
$pvr = array();
if( isset($pr_tested_this) ) {
$fx_priem = function( $id , $at , $uid, $j_id ) {
// -- начало приема
global $u, $btl;
//
//Параметры приема
$pvr['used'] = 0;
//
$uid1 = $btl->atacks[$id]['uid1'];
$uid2 = $btl->atacks[$id]['uid2'];
if( $uid == $uid2 ) {
$a = 1;
$b = 2;
$u1 = $uid1;
$u2 = $uid2;
}elseif( $uid == $uid1 ) {
$a = 2;
$b = 1;
$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;
};
unset( $pr_used_this );
}elseif( isset($pr_used_this) ) {
$fx_priem = function( $id , $at , $uid, $j_id ) {
// -- начало приема
global $u, $btl;
//
//Параметры приема
$pvr['used'] = 0;
//
$uid1 = $btl->atacks[$id]['uid1'];
$uid2 = $btl->atacks[$id]['uid2'];
if( $uid == $uid2 ) {
$a = 1;
$b = 2;
$u1 = $uid1;
$u2 = $uid2;
}elseif( $uid == $uid1 ) {
$a = 2;
$b = 1;
$u1 = $uid2;
$u2 = $uid1;
}
if( $a > 0 ) {
$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]) ) {
//
//Уворот от удара выставляем
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 ) {
//Попал
$at['p'][$b]['atack'][] = array( $pvr['rnd_a'] , 1 , 0 , 1 );
}else{
//В блок
$at['p'][$b]['atack'][] = array( $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.',
$pvr = [];
if (isset($pr_tested_this)) {
$fx_priem = function ($id, $at, $uid, $j_id) {
// -- начало приема
global $u, $btl;
//
//Параметры приема
$pvr['used'] = 0;
//
$uid1 = $btl->atacks[$id]['uid1'];
$uid2 = $btl->atacks[$id]['uid2'];
if ($uid == $uid2) {
$a = 1;
$b = 2;
$u1 = $uid1;
$u2 = $uid2;
} elseif ($uid == $uid1) {
$a = 2;
$b = 1;
$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;
};
unset($pr_used_this);
} elseif (isset($pr_used_this)) {
$fx_priem = function ($id, $at, $uid, $j_id) {
// -- начало приема
global $u, $btl;
//
//Параметры приема
$pvr['used'] = 0;
//
$uid1 = $btl->atacks[$id]['uid1'];
$uid2 = $btl->atacks[$id]['uid2'];
if ($uid == $uid2) {
$a = 1;
$b = 2;
$u1 = $uid1;
$u2 = $uid2;
} elseif ($uid == $uid1) {
$a = 2;
$b = 1;
$u1 = $uid2;
$u2 = $uid1;
}
if ($a > 0) {
$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])) {
//
//Уворот от удара выставляем
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)) {
//Попал
$at['p'][$b]['atack'][] = [$pvr['rnd_a'], 1, 0, 1];
} else {
//В блок
$at['p'][$b]['atack'][] = [$pvr['rnd_a'], 3, 0, 1];
}
$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).'",
'.($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]['priems']['kill'][$uid][$j_id] = true;
$at['p'][$a]['atack'][$j]['priem_used'] = $id;
//
if( $btl->testRazmenblock1($id,$u2,$u1,$pvr['rnd_a']) == false ) {
$at = $this->yronRazmen($id,$at,true);
}
//
}
//
}
$j++;
}
}
// -- конец приема
return $at;
};
unset( $pr_used_this );
}else{
//Действие при клике
$this->addEffPr($pl,$id);
"{tm1} ' . $btl->addlt($b, 17, $btl->users[$btl->uids[$u2]]['sex'], null) . '",
' . ($btl->hodID + 1) . ' );';
$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)) {
$at = $this->yronRazmen($id, $at, true);
}
//
}
//
}
$j++;
}
}
// -- конец приема
return $at;
};
unset($pr_used_this);
} else {
//Действие при клике
$this->addEffPr($pl, $id);
}
unset($pvr);
?>

View File

@ -1,44 +0,0 @@
<?php
if(!defined('GAME'))
{
die();
}
if($st['usefromfile']=='bloodring' && $u->info['battle'] > 0 && $u->info['hpNow'] >= 1)
{
if($btl->info['team_win'] != -1 ) {
$u->error = 'Использовать кольцо возможно только во время боя';
}elseif($btl->info['razdel'] != 5) {
$u->error = 'Использование кольца возможно только в хаотичных поединках!';
}elseif(ceil($u->info['tactic6']) < 15) {
$u->error = 'Не хватает '.(15-ceil($u->info['tactic6'])).' <img width=8 height=8 src=//img.new-combats.tech/i/micro/hp.gif> для &quot;Кровавый сбор&quot;';
}else{
$bu = mysql_fetch_array(mysql_query('SELECT `id` FROM `eff_users` WHERE `v1` = "priem" AND `v2` = "228" AND `delete` = "0" LIMIT 1'));
if(isset($bu['id'])) {
$u->error = 'Использование кольца возможно 1 раз за бой!';
}else{
mysql_query('UPDATE `stats` SET `tactic6` = `tactic6` - 15 WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
$u->info['tactic6'] -= 15;
\User\ItemsModel::addItem(3134,$u->info['id'],'|sudba='.$u->info['login']);
$ins = mysql_query('INSERT INTO `eff_users` (`hod`,`v2`,`img2`,`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`v1`) VALUES
("-1",228,"invoke_create_lesserbloodstone.gif",22,"'.$u->info['id'].'","Кровавый Сбор","","30","77","priem")');
$u->error = 'Вы успешно использовали заклинание &quot;Кровавый сбор&quot;';
//Лог боя
$lastHOD = mysql_fetch_array(mysql_query('SELECT * FROM `battle_logs` WHERE `battle` = "'.$u->info['battle'].'" ORDER BY `id_hod` DESC LIMIT 1'));
$id_hod = $lastHOD['id_hod'];
if($lastHOD['type']!=6) {
$id_hod++;
}
$txt = '<font color=#006699>'.$txt.'</font>';
if($u->info['sex']==1) {
$txt = '{u1} применила заклинание &quot;<b>Кровавый сбор</b>&quot;.';
}else{
$txt = '{u1} применил заклинание &quot;<b>Кровавый сбор</b>&quot;.';
}
mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("'.time().'","'.$u->info['battle'].'","'.($id_hod).'","{tm1} '.$txt.'","login1='.$u->info['login'].'||t1='.$u->info['team'].'||time1='.time().'","","","","","6")');
}
}
}
?>

View File

@ -1,63 +0,0 @@
<?php
if (!defined('GAME')) {
die();
}
if ($st['usefromfile'] == 'bloodring2' && $u->info['battle'] > 0 && $u->info['hpNow'] >= 1) {
if ($btl->info['team_win'] != -1) {
$u->error = 'Использовать кольцо возможно только во время боя';
} elseif ($btl->info['razdel'] != 5) {
$u->error = 'Использование кольца возможно только в хаотичных поединках!';
} elseif (ceil($u->info['tactic6']) < 5) {
$u->error = 'Не хватает ' . (5 - ceil($u->info['tactic6'])) . ' <img width=8 height=8 src=//img.new-combats.tech/i/micro/hp.gif> для &quot;Поглотить Кровь&quot;';
} else {
if ($st['td_cast_data'] != date('d.m.Y')) {
$st['td_cast_data'] = date('d.m.Y');
$st['td_cast'] = 0;
}
if ($st['td_cast'] > 5) {
$u->error = 'Использование кольца возможно не более 6 раз в сутки!';
} else {
$bu = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `v1` = "priem" AND `v2` = "229" AND `delete` = "0" LIMIT 1'));
$st['td_cast']++;
$stimp = Helper\Conversion::arrayToDataString($st);
mysql_query('UPDATE `items_users` SET `data` = "' . mysql_real_escape_string($stimp) . '" WHERE `id` = "' . $itm['id'] . '" LIMIT 1');
mysql_query('UPDATE `stats` SET `tactic6` = `tactic6` - 5 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1');
$u->info['tactic6'] -= 5;
//\User\ItemsModel::addItem(3136,$u->info['id'],'|sudba='.$u->info['login']);
//Если эффект есть, тогда добавляем к нему +1 каст (Максимум 6)
if (isset($bu['id'])) {
if ($bu['x'] < 6) {
mysql_query('UPDATE `eff_users` SET `x` = `x` + 1 WHERE `id` = "' . $bu['id'] . '" LIMIT 1');
}
} else {
$ins = mysql_query('INSERT INTO `eff_users` (`file_finish`,`hod`,`v2`,`img2`,`id_eff`,`uid`,`name`,`data`,`overType`,`timeUse`,`v1`) VALUES
("bloodring2_end","-1",229,"invoke_create_bloodstone.gif",22,"' . $u->info['id'] . '","Поглотить Кровь","","30","77","priem")');
}
$u->error = 'Вы успешно использовали заклинание &quot;Поглотить Кровь&quot;<br>В случаи победы Вы получите &quot;Кровавый Рубин&quot;';
//Лог боя
$lastHOD = mysql_fetch_array(mysql_query('SELECT * FROM `battle_logs` WHERE `battle` = "' . $u->info['battle'] . '" ORDER BY `id_hod` DESC LIMIT 1'));
$id_hod = $lastHOD['id_hod'];
if ($lastHOD['type'] != 6) {
$id_hod++;
}
$txt = '<font color=#006699>' . $txt . '</font>';
if ($u->info['sex'] == 1) {
$txt = '{u1} применила заклинание &quot;<b>Поглотить Кровь</b>&quot;.';
} else {
$txt = '{u1} применил заклинание &quot;<b>Поглотить Кровь</b>&quot;.';
}
mysql_query('INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . time() . '","' . $u->info['battle'] . '","' . ($id_hod) . '","{tm1} ' . $txt . '","login1=' . $u->info['login'] . '||t1=' . $u->info['team'] . '||time1=' . time() . '","","","","","6")');
}
}
}
?>

View File

@ -1,28 +0,0 @@
<?php
if (!defined('GAME')) {
die();
}
if ($ple['file_finish'] == 'bloodring2_end' && $this->users[$i]['team'] == $this->info['team_win']) {
if ($this->info['razdel'] == 5) {
$i1k = 0;
if ($ple['x'] > 6) {
$ple['x'] = 6;
}
while ($i1k < $ple['x']) {
\User\ItemsModel::addItem(3136, $this->users[$i]['id'], '|sudba=' . $this->users[$i]['login']);
$i1k++;
}
if ($ple['x'] > 1) {
$ple['xz'] = ' (x' . $ple['x'] . ')';
} else {
$ple['xz'] = '';
}
$cmsg = new ChatMessage();
$cmsg->setCity($this->users[$i]['city']);
$cmsg->setTo($this->users[$i]['login']);
$cmsg->setText("Вы получили предмет &quot;<b>Кровавый Рубин</b>{$ple['xz']}&quot;.");
$cmsg->setType(6);
(new Chat())->sendMsg($cmsg);
}
}

View File

@ -95,7 +95,7 @@ if(isset($hod))
if($this->minMana($eff['user_use'],$minmp,4)==false)
{
//снимаем эффект, мана закончилась
$btl->delPriem($eff,$btl->users[$btl->uids[$eff['uid']]],2);
$btl->delPriem($eff, $btl->users[$btl->uids[$eff['uid']]], 2);
}
}
}else{
@ -236,7 +236,7 @@ if(isset($hod))
if($dell) {
$dell['priem']['id']=$dell['id'];
//if($dell['x']==1){
$btl->delPriem($dell,$u->info,99);
$btl->delPriem($dell, $u->info, 99);
/*}else{
$i=0;
$e = explode('|',$dell['data']);

View File

@ -53,7 +53,7 @@ if(isset($hod))
if($this->minMana($eff['user_use'],$minmp,1)==false)
{
//снимаем эффект, мана закончилась
$btl->delPriem($eff,$btl->users[$btl->uids[$eff['uid']]],2);
$btl->delPriem($eff, $btl->users[$btl->uids[$eff['uid']]], 2);
}
}
}else{
@ -479,7 +479,7 @@ if(isset($hod))
$pwi['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "26" LIMIT 1'));
if(isset($pwi['id']))
{
$btl->delPriem($pwi,$btl->users[$btl->uids[$ue['id']]],2);
$btl->delPriem($pwi, $btl->users[$btl->uids[$ue['id']]], 2);
}
$this->magicAtack($ue,$hpmin,1,$pl,$eff,2,$hpmxx[$pl['id']]);
unset($pwx,$pwi,$hpmin,$hpmxx);

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

@ -217,7 +217,7 @@ if(isset($hod))
if($this->minMana($eff['user_use'],$minmp,3)==false)
{
//снимаем эффект, мана закончилась
$btl->delPriem($eff,$btl->users[$btl->uids[$eff['uid']]],2);
$btl->delPriem($eff, $btl->users[$btl->uids[$eff['uid']]], 2);
}
}
}else{
@ -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)) {
@ -154,7 +141,7 @@ while ($clanwa = mysql_fetch_array($clanwar)) {
<HEAD>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8"/>
<title>Информация о клане <?= $clan['name'] ?></title>
<link href="//img.new-combats.tech/i/move/design3.css" rel="stylesheet" type="text/css">
<link href="//img.new-combats.tech/css/main.css" rel="stylesheet" type="text/css">
<link href="/res/css/style.css" rel="stylesheet" type="text/css" media="all"/>
@ -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,233 +7,251 @@ 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
$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
`id`,`team`,`enemy`,
`tactic1`,`tactic2`,`tactic3`,`tactic4`,`tactic5`,`tactic6`,`tactic7`,
`battle_yron`,`priems`,`priems_z`,`priemslot`
FROM `stats` WHERE `id` = "'.$user['id'].'" LIMIT 1'));
if( $stats['hpNow'] > $stats['hpAll'] ) {
$stats['hpNow'] = $stats['hpAll'];
}
if( $stats['mpNow'] > $stats['mpAll'] ) {
$stats['mpNow'] = $stats['mpAll'];
}
//Получаем данные о поединке
$r = '';
//Проверяем размен с текущим противником
$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');
while( $pl = mysql_fetch_array($sp) ) {
$rd .= ',['.$pl['id'].','.$pl['uid1'].','.$pl['uid2'].','.($pl['time']-time()+$bt['timeout']).']';
//
if( $pl['uid1'] == $user['id'] && $bot_go == false ) {
$bot_test = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `id` = "'.$pl['uid2'].'" LIMIT 1'));
if(isset($bot_test['id'])) {
$bot_go = true;
}
}
//
}
$rd = ltrim($rd,',');
$r .= ',"act":['.$rd.']';
unset($sp,$pl,$rd);
//Удары ботов
if( $bot_go == true ) {
$error = 'Обычное обновление!';
}
if(isset($_GET['global'])) {
$bt = mysql_fetch_array(mysql_query('SELECT `id`,`timeout`,`hod` FROM `battle` WHERE `id` = "'.$user['battle'].'" LIMIT 1'));
if(isset($bt['id'])) {
//Получение инф. о пользователях в бою
$rd = '';
$sp = mysql_query('SELECT `id`,`login`,`level`,`align`,`clan` FROM `users` WHERE `battle` = "'.$bt['id'].'"');
while( $pl = mysql_fetch_array($sp) ) {
$st = mysql_fetch_array(mysql_query('SELECT `hpNow`,`mpNow`,`hpAll`,`mpAll`,`team` FROM `stats` WHERE `id` = "'.$pl['id'].'" LIMIT 1'));
$rd .= '['.(0+$pl['id']).','.(0+$st['hpNow']).','.(0+$st['mpNow']).','.(0+$st['hpAll']).','.(0+$st['mpAll']).'],';
}
$rd = rtrim($rd,',');
$r .= ',"u":['.$rd.']';
}else{
$error = 'Поединок не найден...';
}
//Эффекты текущего персонажа и противника
$r .= ',"eff_me":[';
$i = 0;
$sp = mysql_query('SELECT * FROM `eff_users` WHERE ( `uid` = "'.$user['id'].'" OR `uid` = "'.$stats['enemy'].'" ) AND `delete` = "0" ORDER BY `id` DESC');
while( $pl = mysql_fetch_array($sp) ) {
if( $pl['v1'] == 'priem' ) {
$prm = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "'.$pl['v2'].'" LIMIT 1'));
if( $user['id'] == $pl['uid'] || $prm['neg'] > 0 ) {
if( $i == 0 ) {
$i++;
}else{
$r .= ',';
}
$r .= '['.$pl['uid'].','.$pl['id'].','.$pl['id_eff'].',"'.$pl['name'].'","'.$prm['img'].'.gif","14"]';
}
}else{
if( $user['id'] == $pl['uid'] ) {
if( $i == 0 ) {
$i++;
}else{
$r .= ',';
}
$eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "'.$pl['id_eff'].'" LIMIT 1'));
$r .= '['.$pl['uid'].','.$pl['id'].','.$pl['id_eff'].',"'.$pl['name'].'","'.$eff['img'].'","'.$eff['type1'].'"]';
}
}
}
$r .= ']';
//
}elseif(isset($_GET['loading'])) {
//Загрузда дополнительных данных
if(isset($_GET['uload']) && $_GET['uload'] != '0') {
//Загрузка пользователей
$ex = explode(',',$_GET['uload']);
$i = 1;
$rd = '';
while( $i < count($ex) ) {
if( $ex[$i] > 0 ) {
//
$us = mysql_fetch_array(mysql_query('SELECT
FROM `stats` WHERE `id` = "' . $user['id'] . '" LIMIT 1'
)
);
if ($stats['hpNow'] > $stats['hpAll']) {
$stats['hpNow'] = $stats['hpAll'];
}
if ($stats['mpNow'] > $stats['mpAll']) {
$stats['mpNow'] = $stats['mpAll'];
}
//Получаем данные о поединке
$r = '';
//Проверяем размен с текущим противником
$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'
);
while ($pl = mysql_fetch_array($sp)) {
$rd .= ',[' . $pl['id'] . ',' . $pl['uid1'] . ',' . $pl['uid2'] . ',' . ($pl['time'] - time() + $bt['timeout']) . ']';
//
if ($pl['uid1'] == $user['id'] && $bot_go == false) {
$bot_test = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `id` = "' . $pl['uid2'] . '" LIMIT 1'));
if (isset($bot_test['id'])) {
$bot_go = true;
}
}
//
}
$rd = ltrim($rd, ',');
$r .= ',"act":[' . $rd . ']';
unset($sp, $pl, $rd);
//Удары ботов
if ($bot_go == true) {
$error = 'Обычное обновление!';
}
if (isset($_GET['global'])) {
$btl = new \Model\BattleModel($user['battle']);
$bt = $btl->battleArray;
if (isset($bt['id'])) {
//Получение инф. о пользователях в бою
$rd = '';
$sp = mysql_query('SELECT `id`,`login`,`level`,`align`,`clan` FROM `users` WHERE `battle` = "' . $bt['id'] . '"');
while ($pl = mysql_fetch_array($sp)) {
$st = mysql_fetch_array(mysql_query('SELECT `hpNow`,`mpNow`,`hpAll`,`mpAll`,`team` FROM `stats` WHERE `id` = "' . $pl['id'] . '" LIMIT 1'));
$rd .= '[' . (0 + $pl['id']) . ',' . (0 + $st['hpNow']) . ',' . (0 + $st['mpNow']) . ',' . (0 + $st['hpAll']) . ',' . (0 + $st['mpAll']) . '],';
}
$rd = rtrim($rd, ',');
$r .= ',"u":[' . $rd . ']';
} else {
$error = 'Поединок не найден...';
}
//Эффекты текущего персонажа и противника
$r .= ',"eff_me":[';
$i = 0;
$sp = mysql_query('SELECT * FROM `eff_users` WHERE ( `uid` = "' . $user['id'] . '" OR `uid` = "' . $stats['enemy'] . '" ) AND `delete` = "0" ORDER BY `id` DESC');
while ($pl = mysql_fetch_array($sp)) {
if ($pl['v1'] == 'priem') {
$prm = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $pl['v2'] . '" LIMIT 1'));
if ($user['id'] == $pl['uid'] || $prm['neg'] > 0) {
if ($i == 0) {
$i++;
} else {
$r .= ',';
}
$r .= '[' . $pl['uid'] . ',' . $pl['id'] . ',' . $pl['id_eff'] . ',"' . $pl['name'] . '","' . $prm['img'] . '.gif","14"]';
}
} else {
if ($user['id'] == $pl['uid']) {
if ($i == 0) {
$i++;
} else {
$r .= ',';
}
$eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $pl['id_eff'] . '" LIMIT 1'));
$r .= '[' . $pl['uid'] . ',' . $pl['id'] . ',' . $pl['id_eff'] . ',"' . $pl['name'] . '","' . $eff['img'] . '","' . $eff['type1'] . '"]';
}
}
}
$r .= ']';
//
} elseif (isset($_GET['loading'])) {
//Загрузда дополнительных данных
if (isset($_GET['uload']) && $_GET['uload'] != '0') {
//Загрузка пользователей
$ex = explode(',', $_GET['uload']);
$i = 1;
$rd = '';
while ($i < count($ex)) {
if ($ex[$i] > 0) {
//
$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'));
if(isset($us['id'])) {
$ss = mysql_fetch_array(mysql_query('SELECT
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
`hpNow`,`mpNow`,`hpAll`,`mpAll`,`team`
FROM `stats` WHERE `id` = "'.$us['id'].'" LIMIT 1'));
if( $ss['hpNow'] > $ss['hpAll'] ) {
$ss['hpNow'] = $ss['hpAll'];
}
if( $ss['mpNow'] > $ss['mpAll'] ) {
$ss['mpNow'] = $ss['mpAll'];
}
$rd .= ',{';
//
$rd .= ' "id":'.( 0 + (int)$ex[$i] );
$rd .= ',"login":"'.$us['login'].'"';
$rd .= ',"level":"'.$us['level'].'"';
$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 .= ',"obraz":"'.$us['obraz'].'"';
//
//Предметы
$ri = '';
$sp = mysql_query('SELECT `id`,`item_id`,`inOdet`,`magic_inc` FROM `items_users` WHERE `uid` = "'.$us['id'].'" AND `delete` = 0 AND `inOdet` > 0');
while( $pl = mysql_fetch_array($sp) ) {
//
$im = mysql_fetch_array(mysql_query('SELECT `id`,`name`,`img`,`magic_inci` FROM `items_main` WHERE `id` = "'.$pl['item_id'].'" LIMIT 1'));
//
$ccv = '';
if( $pl['magic_inc'] == '' ) {
$pl['magic_inc'] = $im['magic_inci'];
}
if( $pl['magic_inc'] != '' ) {
$mgi = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "'.$pl['magic_inc'].'" AND `type1` = "12345" LIMIT 1'));
if(isset($mgi['id2'])) {
$ccv .= 'top.useMagicBattle(\''.$mgi['mname'].'\','.$pl['id'].',\''.$mgi['img'].'\',1,2);';
}
}
//
$ri .= ',['.$pl['id'].','.$pl['item_id'].','.$pl['inOdet'].',"'.$im['name'].'","'.$im['img'].'","'.$ccv.'"]';
}
$ri = ltrim($ri,',');
$rd .= ',"itm":['.$ri.']';
//
//Эффекты (не требуется кэширование)
$ri = '';
FROM `stats` WHERE `id` = "' . $us['id'] . '" LIMIT 1'
)
);
$ri = ltrim($ri,',');
$rd .= ',"eff":['.$ri.']';
//
//
$rd .= ' }';
}
}
$i++;
}
$rd = ltrim($rd,',');
$r .= ',"ul":['.$rd.']';
unset($rd,$ri);
//
}
//
if(isset($_GET['pload']) && $_GET['pload'] != '0') {
//Загрузка приемов
$ex = explode(',',$_GET['pload']);
$i = 1;
$rd = '';
while( $i < count($ex) ) {
if( $ex[$i] > 0 ) {
//
$pl = mysql_fetch_array(mysql_query('SELECT
if ($ss['hpNow'] > $ss['hpAll']) {
$ss['hpNow'] = $ss['hpAll'];
}
if ($ss['mpNow'] > $ss['mpAll']) {
$ss['mpNow'] = $ss['mpAll'];
}
$rd .= ',{';
//
$rd .= ' "id":' . (0 + (int)$ex[$i]);
$rd .= ',"login":"' . $us['login'] . '"';
$rd .= ',"level":"' . $us['level'] . '"';
$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 .= ',"obraz":"' . $us['obraz'] . '"';
//
//Предметы
$ri = '';
$sp = mysql_query('SELECT `id`,`item_id`,`inOdet`,`magic_inc` FROM `items_users` WHERE `uid` = "' . $us['id'] . '" AND `delete` = 0 AND `inOdet` > 0');
while ($pl = mysql_fetch_array($sp)) {
//
$im = mysql_fetch_array(mysql_query('SELECT `id`,`name`,`img`,`magic_inci` FROM `items_main` WHERE `id` = "' . $pl['item_id'] . '" LIMIT 1'));
//
$ccv = '';
if ($pl['magic_inc'] == '') {
$pl['magic_inc'] = $im['magic_inci'];
}
if ($pl['magic_inc'] != '') {
$mgi = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $pl['magic_inc'] . '" AND `type1` = "12345" LIMIT 1'));
if (isset($mgi['id2'])) {
$ccv .= 'top.useMagicBattle(\'' . $mgi['mname'] . '\',' . $pl['id'] . ',\'' . $mgi['img'] . '\',1,2);';
}
}
//
$ri .= ',[' . $pl['id'] . ',' . $pl['item_id'] . ',' . $pl['inOdet'] . ',"' . $im['name'] . '","' . $im['img'] . '","' . $ccv . '"]';
}
$ri = ltrim($ri, ',');
$rd .= ',"itm":[' . $ri . ']';
//
//Эффекты (не требуется кэширование)
$ri = '';
$ri = ltrim($ri, ',');
$rd .= ',"eff":[' . $ri . ']';
//
//
$rd .= ' }';
}
}
$i++;
}
$rd = ltrim($rd, ',');
$r .= ',"ul":[' . $rd . ']';
unset($rd, $ri);
//
}
//
if (isset($_GET['pload']) && $_GET['pload'] != '0') {
//Загрузка приемов
$ex = explode(',', $_GET['pload']);
$i = 1;
$rd = '';
while ($i < count($ex)) {
if ($ex[$i] > 0) {
//
$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'));
if(isset($pl['id'])) {
//
$rd .= ',{';
//
$rd .= ' "id":'.( 0 + (int)$ex[$i] );
$rd .= ',"name":"'.$pl['name'].'"';
$rd .= ',"img":"'.$pl['img'].'"';
$rd .= ',"type":"'.$pl['type'].'"';
$rd .= ',"onUser":"'.$pl['onUser'].'"';
$rd .= ',"team":"'.$pl['team'].'"';
//
$rd .= ' }';
//
}
}
$i++;
}
$rd = ltrim($rd,',');
$r .= ',"pl":['.$rd.']';
unset($sp,$pl,$rd);
//
}
//
}
}else{
$error = 'Пользователь в бою не найден...';
FROM `priems` WHERE `id` = "' . mysql_real_escape_string($ex[$i]) . '" LIMIT 1'
)
);
if (isset($pl['id'])) {
//
$rd .= ',{';
//
$rd .= ' "id":' . (0 + (int)$ex[$i]);
$rd .= ',"name":"' . $pl['name'] . '"';
$rd .= ',"img":"' . $pl['img'] . '"';
$rd .= ',"type":"' . $pl['type'] . '"';
$rd .= ',"onUser":"' . $pl['onUser'] . '"';
$rd .= ',"team":"' . $pl['team'] . '"';
//
$rd .= ' }';
//
}
}
$i++;
}
$rd = ltrim($rd, ',');
$r .= ',"pl":[' . $rd . ']';
unset($sp, $pl, $rd);
//
}
//
}
} else {
$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']]);
@ -97,7 +95,7 @@ if (!isset($btl->info['id'])) {
}
} else {
//получаем массив с игроками в бою
$btl->teamsTake();
$btl->teamsTake($u);
if (isset($_POST['useitem']) && $btl->testUsersLive()) {
$magic->useItems((int)$_POST['useitem']);

View File

@ -82,7 +82,7 @@ if (!isset($btl->info['id'])) {
}
} else {
//получаем массив с игроками в бою
$btl->teamsTake();
$btl->teamsTake($u);
if (isset($_POST['useitem']) && $btl->testUsersLive() == true) {
$magic->useItems((int)$_POST['useitem']);

View File

@ -79,7 +79,7 @@ if (isset($_POST['atack'], $_POST['block']) || (isset($_POST['id']) && $_POST['i
}
} else {
//получаем массив с игроками в бою
$btl->teamsTake();
$btl->teamsTake($u);
if (isset($_POST['useitem']) && $btl->testUsersLive() == true) {
$magic->useItems((int)$_POST['useitem']);

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(
@ -115,7 +114,7 @@ if (isset($CRON_CORE) && (isset($_POST['atack'], $_POST['block']) || (isset($_PO
}
} else {
//получаем массив с игроками в бою
$btl->teamsTake();
$btl->teamsTake($u);
if (isset($_POST['useitem'])) {
$magic->useItems((int)$_POST['useitem']);

1214
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,416 +1,429 @@
<?php
if(!defined('GAME'))
{
die();
if (!defined('GAME')) {
die();
}
//id Новогоднего подарка
$pidid = 4008;
$dy = 1;
if((date('n',time())==2 && date('j',time())<=14))
{
$dy = 0;
if ((date('n', time()) == 2 && date('j', time()) <= 14)) {
$dy = 0;
}
$dt = date('Y',time())+$dy;
$dt = date('Y', time()) + $dy;
$dt = 2023;
if($u->room['file']=='elka')
{
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 '));
if (isset($itd['id'])){
$itdu=mysql_query('UPDATE `items_users` SET `delete` ="'.time().'" WHERE `id` ="'.$_GET['elka_shar'].'" LIMIT 1 ');
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']))
{
$tdata=str_replace("add_hpAll=", "", $effe['data']);
$tdata=$tdata+5;
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))
{
echo "Вы получили <b><font color=red>Благословение Ёлки x".round($tdata/5)."</font></b> " ;
}
}
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")');
if (isset($effeadd))
{
echo "Вы получили <b><font color=red>Благословение Ёлки x1</font></b> " ;
}
}
echo "Использовал: <b><font color=red>".$_GET['shar_name']."</font><b>" ;
}
else
{
echo "<b><font color=red>Ошибка</font></b>" ;
}
}
}
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']))
{
$pid = \User\ItemsModel::addItem($pidid,$u->info['id']);
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>';
}else{
echo '<font color=red>Не удалось получить подарок...</font>';
}
}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)
{
$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']))
{
$smt = $u->testAction('`uid` = "'.$u->info['id'].'" AND `time` > '.(time()-600).' AND `vars` = "use_cupNewYear" LIMIT 1',1);
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']!='')
{
$dy = 1;
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']))
{
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']."'); ");
$u->addAction(time(),'send_elka','');
}
}
}
?>
<style type="text/css">
.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;
cursor:pointer;
background-color: #659BA3;
font-size: 10px;
}
.class_old {
font-weight: bold;
color: #919191;
cursor:pointer;
}
.class__old {
font-weight: bold;
color: #FFFFFF;
cursor:pointer;
background-color: #838383;
font-size: 10px;
}
</style>
<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>
<br />
<!-- Подарки -->
<?php
$sg = 1;
//Если есть подарки
if((date('n',time())==12 || date('n',time())<=2) && $sg==1)
{
?>
<div style="padding-left:10px;">
<span class="pH3"><small>Подарки:</small></span>
<div>
<?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>
<?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>
<?php } ?>
</div>
</div>
<hr>
<?php
}
//ТУТ Елка
// if($u->info['admin']>0)
// {
?>
<div style="padding-left:10px;">
<span class="pH3"><small>Наряжаем Ёлку:</small></span>
<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']))
{
$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 "У Вас нет шаров для украшения Ёлки!";}
?>
</div>
</div>
<hr>
<?php
// }
if(isset($_GET['page']))
{
$fpage = round($_GET['page']);
if($fpage<=0)
{
$fpage = 1;
}
}else{
$fpage = 1;
}
$limit1 = ($fpage-1)*20+$fpage-1;
$limit2 = 21;
$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)
{
$j=0;
$pagesN = '';
while($i>=0)
{
$i -= 21;
if($i!=0)
{
$j++;
$r2 = '';
if($j<=$d)
{
if(isset($r))
{
$r2 = '&r='.$r;
}
$jt = $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> ';
}
}
}
$pages .= ' '.$pagesN.' ';
}else{
$j = $fpage-6;
$i = 0;
$pagesN = '';
while($k<13)
{
if($j>0)
{
if($j<=$d)
{
$jt = $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> ';
}
$k++;
}
$j++;
}
$prpage = $fpage-12;
$nxpage = $fpage+12;
if($prpage<=0)
{
$prpage = 1;
}
if($nxpage>$d)
{
$nxpage = $d;
}
$_GET['d'] = (int)$_GET['d'];
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)
{
$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>';
}
}
}else{
$pages = '';
}
?>
<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.'');
$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)
{
$pers .= '<img src="//img.new-combats.tech/i/align/align'.$prs[0].'.gif">';
}
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)
{
$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)
{
$pers2 .= '<img src="//img.new-combats.tech/i/align/align'.$prs[0].'.gif">';
}
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))
{
$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')
{
$dl = ' <a href="main.php?page='.$_POST['page'].'&del='.$pl['id'].'"><small>Стереть</small></a>';
}else{
$dl = '';
}
echo '<font class=date>'.date('d.m.Y H:i',$pl['time']).'</font> '.$pers.' - '.$pl['text'].''.$dl.'<BR>';
}
?>
</div>
Страницы: <?= $pages; ?><br>
<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">
<tr>
<td width="100%">&nbsp;</td>
<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">
<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>
</tr>
</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>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table>
<br />
<center></center></td>
</table>
<div id="textgo" style="visibility:hidden;"></div>
<?php
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 ')
);
if (isset($itd['id'])) {
$itdu = mysql_query('UPDATE `items_users` SET `delete` ="' . time() . '" WHERE `id` ="' . $_GET['elka_shar'] . '" LIMIT 1 ');
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'])) {
$tdata = str_replace("add_hpAll=", "", $effe['data']);
$tdata = $tdata + 5;
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)) {
echo "Вы получили <b><font color=red>Благословение Ёлки x" . round($tdata / 5) . "</font></b> ";
}
} 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")'
);
if (isset($effeadd)) {
echo "Вы получили <b><font color=red>Благословение Ёлки x1</font></b> ";
}
}
echo "Использовал: <b><font color=red>" . $_GET['shar_name'] . "</font><b>";
} else {
echo "<b><font color=red>Ошибка</font></b>";
}
}
}
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'])) {
$pid = \User\ItemsModel::addItem($pidid, $u->info['id']);
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>';
} else {
echo '<font color=red>Не удалось получить подарок...</font>';
}
} 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) {
$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'])) {
$smt = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `time` > ' . (time() - 600) . ' AND `vars` = "use_cupNewYear" LIMIT 1', 1);
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'] != '') {
$dy = 1;
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'])) {
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'] . "'); "
);
$u->addAction(time(), 'send_elka', '');
}
}
}
?>
<style type="text/css">
.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;
cursor: pointer;
background-color: #659BA3;
font-size: 10px;
}
.class_old {
font-weight: bold;
color: #919191;
cursor: pointer;
}
.class__old {
font-weight: bold;
color: #FFFFFF;
cursor: pointer;
background-color: #838383;
font-size: 10px;
}
</style>
<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>
<br/>
<!-- Подарки -->
<?php
$sg = 1;
//Если есть подарки
if ((date('n', time()) == 12 || date('n', time()) <= 2) && $sg == 1) {
?>
<div style="padding-left:10px;">
<span class="pH3"><small>Подарки:</small></span>
<div>
<?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>
<?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>
<?php } ?>
</div>
</div>
<hr>
<?php
}
//ТУТ Елка
// if($u->info['admin']>0)
// {
?>
<div style="padding-left:10px;">
<span class="pH3"><small>Наряжаем Ёлку:</small></span>
<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'])) {
$itt = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $it['item_id'] . '" LIMIT 1'));
?>
<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'])) {
$fpage = round($_GET['page']);
if ($fpage <= 0) {
$fpage = 1;
}
} else {
$fpage = 1;
}
$limit1 = ($fpage - 1) * 20 + $fpage - 1;
$limit2 = 21;
$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) {
$j = 0;
$pagesN = '';
while ($i >= 0) {
$i -= 21;
if ($i != 0) {
$j++;
$r2 = '';
if ($j <= $d) {
if (isset($r)) {
$r2 = '&r=' . $r;
}
$jt = $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> ';
}
}
}
$pages .= ' ' . $pagesN . ' ';
} else {
$j = $fpage - 6;
$i = 0;
$pagesN = '';
while ($k < 13) {
if ($j > 0) {
if ($j <= $d) {
$jt = $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> ';
}
$k++;
}
$j++;
}
$prpage = $fpage - 12;
$nxpage = $fpage + 12;
if ($prpage <= 0) {
$prpage = 1;
}
if ($nxpage > $d) {
$nxpage = $d;
}
$_GET['d'] = (int)$_GET['d'];
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) {
$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>';
}
}
} else {
$pages = '';
}
?>
<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 . ''
);
$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) {
$pers .= '<img src="//img.new-combats.tech/i/align/align' . $prs[0] . '.gif">';
}
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) {
$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) {
$pers2 .= '<img src="//img.new-combats.tech/i/align/align' . $prs[0] . '.gif">';
}
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)) {
$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') {
$dl = ' <a href="main.php?page=' . $_POST['page'] . '&del=' . $pl['id'] . '"><small>Стереть</small></a>';
} else {
$dl = '';
}
echo '<font class=date>' . date('d.m.Y H:i', $pl['time']) . '</font> ' . $pers . ' - ' . $pl['text'] . '' . $dl . '<BR>';
}
?>
</div>
Страницы: <?= $pages; ?><br>
<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">
<tr>
<td width="100%">&nbsp;</td>
<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">
<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>
</tr>
</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>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<br/>
<center></center>
</td>
</table>
<div id="textgo" style="visibility:hidden;"></div>

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,246 +2,240 @@
if (!defined('GAME')) {
die();
}
if ($u->room['file'] == 'znahar') {
?>
<STYLE>
.H3 {
COLOR: #8f0000;
FONT-FAMILY: Arial;
FONT-SIZE: 12pt;
FONT-WEIGHT: bold;
}
</STYLE>
<SCRIPT>
function gfastshow(dsc, dx, dy) {
top.fullfastshow(document, mmoves3, window.event, dsc, dx, dy);
}
if ($u->room['file'] != 'znahar') {
return;
}
?>
<STYLE>
.H3 {
COLOR: #8f0000;
FONT-FAMILY: Arial;
FONT-SIZE: 12pt;
FONT-WEIGHT: bold;
}
</STYLE>
<SCRIPT>
function gfastshow(dsc, dx, dy) {
top.fullfastshow(document, mmoves3, window.event, dsc, dx, dy);
}
function ghideshow() {
top.fullhideshow(mmoves3);
}
</SCRIPT>
</HEAD>
<body leftmargin=5 topmargin=5 marginwidth=5 marginheight=5 bgcolor=e2e0e0>
<div id="mmoves3"
style="background-color:#FFFFCC; visibility:hidden; z-index: 101; overflow:visible; position:absolute; border-color:#666666; border-style:solid; border-width: 1px; padding: 2px;"></div>
<SCRIPT src='//img.new-combats.tech/i/commoninf.js'></SCRIPT>
<TABLE width=100%>
<TR>
<TD>
<DIV class='H3' align=center>Комната Знахаря</DIV>
<BR>
<BR>
<b><i>Запахи трав наполняют помещение, непонятные и пугающие предметы скрываются в пляшущих тенях...<BR>
Говорят, здесь можно изменить свою судьбу.
Стать кем-то иным... кем раньше был лишь в мечтах...</i></b><BR><BR>
Деньги: <B><?= $u->info['money']; ?></B> кр.<BR>
Бесплатных перераспределений: Сегодня - неограничено!<BR>
</TD>
<TD width=1 valign=top>
<?php
if ($c['znahar'] == 1) {
$raspst = 99999;
} else {
$raspst = 0;
}
#------------------Запросы и прочее
$st = Helper\Conversion::dataStringToArray($u->info['stats']);
$vinos = [
/* level,summvinos*/
"0" => 3,
"1" => 4,
"2" => 5,
"3" => 6,
"4" => 7,
"5" => 8,
"6" => 9,
"7" => 10,
"8" => 11,
"9" => 13,
"10" => 16,
"11" => 21,
"12" => 41,
"21" => 41,
];
#------------------Запросы и прочее
?>
<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" id="moveto">
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#DEDEDE">
function ghideshow() {
top.fullhideshow(mmoves3);
}
</SCRIPT>
</HEAD>
<body leftmargin=5 topmargin=5 marginwidth=5 marginheight=5 bgcolor=e2e0e0>
<div id="mmoves3"
style="background-color:#FFFFCC; visibility:hidden; z-index: 101; overflow:visible; position:absolute; border-color:#666666; border-style:solid; border-width: 1px; padding: 2px;"></div>
<SCRIPT src='//img.new-combats.tech/i/commoninf.js'></SCRIPT>
<TABLE width=100%>
<TR>
<TD>
<DIV class='H3' align=center>Комната Знахаря</DIV>
<BR>
<BR>
<b><i>Запахи трав наполняют помещение, непонятные и пугающие предметы скрываются в пляшущих тенях...<BR>
Говорят, здесь можно изменить свою судьбу.
Стать кем-то иным... кем раньше был лишь в мечтах...</i></b><BR><BR>
Деньги: <B><?= $u->info['money']; ?></B> кр.<BR>
Бесплатных перераспределений: Сегодня - неограничено!<BR>
</TD>
<TD width=1 valign=top>
<?php
if (\Core\Config::get('znahar') == 1) {
$raspst = 99999;
} else {
$raspst = 0;
}
#------------------Запросы и прочее
$st = Helper\Conversion::dataStringToArray($u->info['stats']);
$vinos = [
/* level,summvinos*/
"0" => 3,
"1" => 4,
"2" => 5,
"3" => 6,
"4" => 7,
"5" => 8,
"6" => 9,
"7" => 10,
"8" => 11,
"9" => 13,
"10" => 16,
"11" => 21,
"12" => 41,
"21" => 41,
];
#------------------Запросы и прочее
?>
<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" id="moveto">
<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><a href="?rnd=0.454008319854562&path=1.100.1.6.5" onclick="return check_access();" class="menutop" title="Время перехода: 20 сек.
<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="?rnd=0.454008319854562&path=1.100.1.6.5" onclick="return check_access();" class="menutop" title="Время перехода: 20 сек.
Сейчас в комнате 0 чел.">Этаж 2</a></td>
</tr>
</tr>
<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.221&rnd=<?= $code; ?>';"
title="<?php thisInfRm('1.180.0.221', 1); ?>">Торговый Зал</a></td>
</tr>
</table>
</td>
</tr>
</table>
<!-- <br /><span class="menutop"><nobr>Комната Знахаря</nobr></span>-->
</td>
</tr>
</table>
<div id="mmoves"
style="background-color:#FFFFCC; visibility:hidden; overflow:visible; position:absolute; border-color:#666666; border-style:solid; border-width: 1px; padding: 2px; white-space: nowrap;"></div>
</HTML>
</TD>
</TR>
</TABLE>
<TABLE>
<TR bgcolor=#D8D8D8>
<TD><IMG width=20 height=20 src='//img.new-combats.tech/i/misc/strsmall.gif'> Характеристики</TD>
<TD><IMG width=20 height=20 src='//img.new-combats.tech/i/misc/cureelixirsmall.gif'> Пристрастия</TD>
<TD><IMG width=20 height=20 src='//img.new-combats.tech/i/misc/weaponsmall.gif'> Прочее</TD>
<TR>
<TD width=270 valign=top>
<SCRIPT>
//////////////Название,параметр,всего, +сколько, до скольки сбросить(макс возможное),сколько сбрасывать/прибавлять
var pr = new Array(
'Сила', '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) {?>
, 'Интеллект', 's5', <?=$st['s5'];?>, <?=$u->stats['s5'] - $st['s5'];?>, 0, 0
<?}if ($u->info['level'] > 6) {?>
, 'Мудрость', 's6', <?=$st['s6'];?>, 0, 0, 0
<?}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
<?}?>
);
<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.221&rnd=<?= $code; ?>';"
title="<?php thisInfRm('1.180.0.221', 1); ?>">Торговый Зал</a></td>
</tr>
</table>
</td>
</tr>
</table>
<!-- <br /><span class="menutop"><nobr>Комната Знахаря</nobr></span>-->
</td>
</tr>
</table>
<div id="mmoves"
style="background-color:#FFFFCC; visibility:hidden; overflow:visible; position:absolute; border-color:#666666; border-style:solid; border-width: 1px; padding: 2px; white-space: nowrap;"></div>
</HTML>
</TD>
</TR>
</TABLE>
<TABLE>
<TR bgcolor=#D8D8D8>
<TD><IMG width=20 height=20 src='//img.new-combats.tech/i/misc/strsmall.gif'> Характеристики</TD>
<TD><IMG width=20 height=20 src='//img.new-combats.tech/i/misc/cureelixirsmall.gif'> Пристрастия</TD>
<TD><IMG width=20 height=20 src='//img.new-combats.tech/i/misc/weaponsmall.gif'> Прочее</TD>
<TR>
<TD width=270 valign=top>
<SCRIPT>
//////////////Название,параметр,всего, +сколько, до скольки сбросить(макс возможное),сколько сбрасывать/прибавлять
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
<?php if($u->info['level'] > 3){?>
, 'Интеллект', 's5', <?=$st['s5'];?>, <?=$u->stats['s5'] - $st['s5'];?>, 0, 0
<?php } if ($u->info['level'] > 6) {?>
, 'Мудрость', 's6', <?=$st['s6'];?>, 0, 0, 0
<?php } if ($u->info['level'] > 9) {?>
, 'Духовность', 's7', <?=$st['s7'];?>, 0, 0, 0
<?php } ?>
];
function getprstr(i) {
var 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]) {
ss += (pr[i + 3] < 0 ? "" : "+") + pr[i + 3]
}
if (pr[i + 5]) {
if (pr[i + 5] > 0) {
ss += " <font color=green>+" + pr[i + 5];
} else {
ss += " <font color=#8f0000>" + pr[i + 5];
}
ss += "</font>";
}
ss += ")";
function getprstr(i) {
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]) {
ss += (pr[i + 3] < 0 ? "" : "+") + pr[i + 3]
}
return ss;
if (pr[i + 5]) {
if (pr[i + 5] > 0) {
ss += " <font color=green>+" + pr[i + 5];
} else {
ss += " <font color=#8f0000>" + pr[i + 5];
}
ss += "</font>";
}
ss += ")";
}
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) {
return;
}
if (to == -1 && pr[i + 2] + pr[i + 5] <= pr[i + 4]) {
return;
}
pr[i + 5] += to;
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) {
if (pr[j + 5] > 0) {
moves += pr[j + 5]
}
;
}
movedonebutton.disabled = (freepr || moves == 0 ? true : false);
document.all["prmoves"].innerHTML = moves + ((freemoves < moves) ? " за " + (movecost * (moves - freemoves)) + " кр." : (moves ? " / бесплатно" : ""));
function modpr(i, to) {
if (to == 1 && freepr == 0) {
return;
}
function movedone() {
if (freepr) {
return;
}
var s = "";
for (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;
if (to == -1 && pr[i + 2] + pr[i + 5] <= pr[i + 4]) {
return;
}
var s = "<TABLE>";
for (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"> '
s += '<img src=https://img.combats.com/i/plus.gif border=0 onclick="modpr(' + i + ',1)" style="cursor: hand"></TR>';
pr[i + 5] += to;
freepr -= to;
document.all["pr" + i].innerHTML = getprstr(i);
document.all["prfree"].innerHTML = freepr;
let moves = 0;
for (let j = 0; j < pr.length; j += 6) {
if (pr[j + 5] > 0) {
moves += pr[j + 5]
}
}
s += "</TABLE>";
s += "<small>(осталось: <span id='prfree'>0</span>, распределений: <span id='prmoves'>0</span>)<BR>";
document.write(s);
</SCRIPT>
<input type=button onclick="movedone();" id='movedonebutton' value="Применить" disabled>
</TD>
<TD width=270 valign=top>
<BR><BR><BR>
<small>
<center>У вас нет пристрастий</center>
</small>
</TD>
<TD valign=top><BR>
Навыки владения оружием и магией<BR>
movedonebutton.disabled = (!!(freepr || moves == 0));
document.all["prmoves"].innerHTML = moves + ((freemoves < moves) ? " за " + (movecost * (moves - freemoves)) + " кр." : (moves ? " / бесплатно" : ""));
}
<form method=post><input type=hidden value='<?= $u->info['id']; ?>' name='dropmastery'><INPUT type=submit value='Сбросить <? 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кр.)" ?>'
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кр.)" ?>'
onclick="return confirm('Вы действительно хотите сбросить все характеристики до минимального уровня?')">
</form>
</TABLE>
<small>Каждые 7 дней после последнего использования комнаты знахаря вы получаете 1 бесплатное перераспределение, но не более 15<BR>
Исцеление пристрастия, cброс умений или особенностей стоят 5 перераспределений<BR>
Изменение Характеристик досрочно завершает некоторые эффекты, например эффект свитка <B>Жажда Жизни</B>
</small>
<BR>
</TABLE>
<div>
<? //рейтинг
?>
</div>
</BODY>
</HTML>
<? } ?>
function movedone() {
if (freepr) {
return;
}
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;
}
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"> '
s += '<img src=https://img.combats.com/i/plus.gif border=0 onclick="modpr(' + i + ',1)" style="cursor: hand"></TR>';
}
}
s += "</TABLE>";
s += "<small>(осталось: <span id='prfree'>0</span>, распределений: <span id='prmoves'>0</span>)<BR>";
document.write(s);
</SCRIPT>
<input type=button onclick="movedone();" id='movedonebutton' value="Применить" disabled>
</TD>
<TD width=270 valign=top>
<BR><BR><BR>
<small>
<center>У вас нет пристрастий</center>
</small>
</TD>
<TD valign=top><BR>
Навыки владения оружием и магией<BR>
<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='Сбросить <?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='Сбросить <?php echo $c['znahar'] == 1 ? "бесплатно" : "(500кр.)" ?>'
onclick="return confirm('Вы действительно хотите сбросить все характеристики до минимального уровня?')">
</form>
</TABLE>
<small>Каждые 7 дней после последнего использования комнаты знахаря вы получаете 1 бесплатное перераспределение, но не более 15<BR>
Исцеление пристрастия, cброс умений или особенностей стоят 5 перераспределений<BR>
Изменение Характеристик досрочно завершает некоторые эффекты, например эффект свитка <B>Жажда Жизни</B>
</small>
<BR>
</TABLE>
<div></div>
</BODY>
</HTML>

File diff suppressed because it is too large Load Diff

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']);
}
ItemsModel::addItem(10020, $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) {
$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>';
if ($finishedTasks['win'] > 2) {
$txt .= 'Порадовал бабушку! Стало в мире светлее, но бабка как была слепая так и осталась... <br> Чуть не забыла жетончик!';
giveDailyQuestPrize();
} else {
$txt .= '<b>Выполни 3 задания в подземелиях. ' . $i . '/3 </b>';
$txt .= 'Выполни 3 задания в подземелиях. ' . $finishedTasks['win'] . '/3.';
}
} 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