From f1b363689903752bc179c698317880b09654f8c4 Mon Sep 17 00:00:00 2001 From: Dmytro Piddubnyi Date: Thu, 8 Feb 2024 17:10:55 +0100 Subject: [PATCH 1/6] feature: switch to bootstrap and HTML5 --- .dockerignore | 4 + Dockerfile | 4 + docker-compose.yml | 18 ++++ game/config.php | 8 +- game/f_admin.inc | 97 ++++++++--------- game/f_listall.inc | 23 ++-- game/f_listinv.inc | 46 ++++---- game/f_listinvm.inc | 8 +- game/f_listmagic.inc | 21 ++-- game/f_listpriem.inc | 21 ++-- game/f_logout.inc | 42 ++++---- game/f_macro.inc | 37 ++++--- game/f_message.inc | 133 +++++++++++++----------- game/f_msg.inc | 118 +++++++++++---------- game/f_site_clans.inc | 24 ++--- game/f_site_connect.inc | 22 ++-- game/f_site_faq.inc | 46 ++++---- game/f_site_gamereg.inc | 30 +++--- game/f_site_main.inc | 11 +- game/f_site_news.inc | 12 +-- game/f_site_online.inc | 14 +-- game/f_site_reg2.inc | 35 ++++--- game/f_site_stat.inc | 2 +- game/f_speak.inc | 219 ++++++++++++++++++++------------------- game/f_speakbuy.inc | 24 +++-- game/f_speakfrombank.inc | 24 ++--- game/f_speaksell.inc | 20 ++-- game/f_speaktobank.inc | 13 ++- game/f_takediednoid.inc | 18 ++-- game/f_trade.inc | 2 +- game/functions.js | 39 +++++++ game/index.php | 215 +++++++++++++++++++------------------- game/m.php | 16 +-- game/plugin/m.qv.inc | 134 ++++++++++++------------ index.php | 21 ++-- 35 files changed, 824 insertions(+), 697 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 game/functions.js diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..688979b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +.git +docker-compose +ad.sql +Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..158a7ef --- /dev/null +++ b/Dockerfile @@ -0,0 +1,4 @@ +FROM php:7.4-apache +RUN docker-php-ext-install -j$(nproc) pdo pdo_mysql +COPY --chown=www-data:www-data . /var/www/html +EXPOSE 80 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..dd21295 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,18 @@ +version: '3' +services: + web: + build: . + ports: + - 80:80 + # volumes: + # - .:/var/www/html + + db: + image: mysql:8 + environment: + - MYSQL_DATABASE=amulet + - MYSQL_USER=amulet + - MYSQL_PASSWORD=amulet + - MYSQL_ROOT_PASSWORD=amulet + volumes: + - ./ad.sql:/docker-entrypoint-initdb.d/ad.sql \ No newline at end of file diff --git a/game/config.php b/game/config.php index 3961bef..6982d4d 100644 --- a/game/config.php +++ b/game/config.php @@ -17,10 +17,10 @@ //========================= DBConfig::setConfig([ - 'server' => 'localhost', + 'server' => 'db', 'dbname' => 'amulet', - 'login' => 'game', - 'password' => 'pass', + 'login' => 'amulet', + 'password' => 'amulet', ]); //========================= @@ -92,7 +92,7 @@ * * @var int $g_crim */ -$g_crim = 1800; +$g_crim = 180; /** * @var int $g_exp множитель для экспы diff --git a/game/f_admin.inc b/game/f_admin.inc index df98824..af72e35 100644 --- a/game/f_admin.inc +++ b/game/f_admin.inc @@ -17,7 +17,8 @@ if ($login == $g_admin || $gm == $gm_id) { switch ($adm) { case 'smp': - msg("

+ msg( + "


teleport (loc) [select]
money (count)
additem (filter) @@ -42,34 +43,36 @@ if ($login == $g_admin || $gm == $gm_id) {
stop 5 min(msg)
play (msg: " . intval(isset($game["msg"])) . ")
blank world - \n

\n\n\n

\nНачало
Банк
Кладбище
Замок
Пещера
Ансалон
Крепость
Подземелье", - $loc, 0); - break; + \n

\n\n
\n

\nНачало
Банк
Кладбище
Замок
Пещера
Ансалон
Крепость
Подземелье", + $loc, + 0 + ); + break; case 'rsn': - $char[1] = $char[2]; - $char[3] = $char[4]; - $char[8] = 0; - $char[9] = 0; - $loc_i[$loc][$login]["char"] = implode("|", $char); - $char = explode("|", $loc_i[$loc][$login]["char"]); + $char[1] = $char[2]; + $char[3] = $char[4]; + $char[8] = 0; + $char[9] = 0; + $loc_i[$loc][$login]["char"] = implode("|", $char); + $char = explode("|", $loc_i[$loc][$login]["char"]); $loc_i[$loc][$login]["magic"] = preg_replace('/:(\d+)/', ":0", $loc_i[$loc][$login]["magic"]); $loc_i[$loc][$login]["priem"] = preg_replace('/:(\d+)/', ":0", $loc_i[$loc][$login]["priem"]); - break; + break; case 'tln': if ($inp) { manageNPC($login, $loc, strtolower($inp)); $loc_c = explode("|", $loc_tt[$loc]["d"]); } - break; + break; case 'mnn': if ($inp) { manageItems($loc, "", $login, "i.money", $inp); } - break; + break; case 'gtp': $field = explode("|", $loc_i[$loc][$login][strtolower($inp)]); msg($field[strtolower($val)]); - break; + break; case 'unset': if ($inp && $val) { $field = explode("|", $loc_i[$loc][$login][strtolower($inp)]); @@ -88,13 +91,13 @@ if ($login == $g_admin || $gm == $gm_id) { } } } - break; + break; case 'stn': - $field = explode("|", $loc_i[$loc][$login][strtolower($inp)]); - $field[strtolower($val)] = $new; + $field = explode("|", $loc_i[$loc][$login][strtolower($inp)]); + $field[strtolower($val)] = $new; $loc_i[$loc][$login][strtolower($inp)] = implode("|", $field); calcparam($loc, $login); - break; + break; case 'adni': if ($inp && $val) { if ($new == "loc") { @@ -107,7 +110,7 @@ if ($login == $g_admin || $gm == $gm_id) { } manageItems($loc, "", $to, $inp, $val . "items", $new); } - break; + break; case 'del': if ($inp && $val) { if ($new != "bank") { @@ -120,20 +123,20 @@ if ($login == $g_admin || $gm == $gm_id) { } calcparam($loc, $login); } - break; + break; case 'gdn': if ($loc_i[$loc][$login]["god"]) { unset($loc_i[$loc][$login]["god"]); } else { $loc_i[$loc][$login]["god"] = 1; } - break; + break; case 'blank': $f_all = 1; include "f_online.inc"; include "f_blank.inc"; msg("Мир обновлен, все игроки переведены в оффлайн."); - break; + break; case 'locsave': if ($desc) { $file = fopen("loc_f/" . $loc, "w"); @@ -145,67 +148,67 @@ if ($login == $g_admin || $gm == $gm_id) { if (substr($dloc, strlen($dloc) - 1) == "|") { $dloc = substr($dloc, 0, strlen($dloc) - 1); } - $loc_tt[$loc]["d"] = $dloc; + $loc_tt[$loc]["d"] = $dloc; $loc_tt[$loc]["save"] = 1; - $loc_c = explode("|", $loc_tt[$loc]["d"]); + $loc_c = explode("|", $loc_tt[$loc]["d"]); } - break; + break; case 'view': echo $inp . ":
"; switch ($inp) { case "loc": $msg = serialize($loc_i[$loc]); - break; + break; case "t": $msg = serialize($loc_tt[$loc]["t"]); - break; + break; case "login": $msg = serialize($loc_i[$loc][$login]); - break; + break; default: $msg = $loc_i[$loc][$login][strtolower($inp)]; - break; + break; } msg("$msg
В игру"); - break; + break; case 'ban': $loc_i[$loc][$login]["items"] = ""; - $loc_i[$loc][$login]["bank"] = ""; + $loc_i[$loc][$login]["bank"] = ""; if ($inp == 1) { $loc_i[$loc][$login]["skills"] = "1|1|1|0|2|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"; - $loc_i[$loc][$login]["magic"] = ""; + $loc_i[$loc][$login]["magic"] = ""; } calcparam($loc, $login); msg("Персонаж обнулен"); - break; + break; case "locmail": addjournal($loc, $login, "Не удалось отправить письмо на " . $inp); - break; + break; case 'getibm': msg("items: " . $loc_i[$loc][$login]["items"] . "
bank: " . $loc_i[$loc][$login]["bank"] . "
magic: " . $loc_i[$loc][$login]["magic"] . "
skills: " . $loc_i[$loc][$login]["skills"]); - break; + break; case 'resp': manageTimers($loc, 0, $val, $inp . "|$val:$new"); addjournal($loc, $login, "Таймер установлен"); - break; + break; case 'skillinfo': msg("skills = 0:str|1:dex|2:int|3:level|4:points|5:meditation|6:steal|7:animaltaming|8:hand|9:coldweapon|10:ranged|11:parring|12:uklon|13:magic|14:magic_resist|15:magic_uklon|16:regeneration|17:hiding|18:look|19:steallook|20:animallore|21:spirit|22:healing|23:alchemy|24:mine|25:smith|26:lumb|27:bow|28:stone|29:fish|30:food"); - break; + break; case 'stop': $game["stop"] = time() + 180; if ($inp) { $game["msg"] = 'Игра обновляется. зайдите позже'; } msg("Остановка через 3 минут"); - break; + break; case 'play': unset($game["journal"]); unset($game["info"]); unset($game["stop"]); unset($game["msg"]); msg("Игра запущена"); - break; + break; case 'guard': $d = explode("|", $loc_tt[$loc]["d"]); if ($inp) { @@ -213,13 +216,13 @@ if ($login == $g_admin || $gm == $gm_id) { } else { $d[1] = 0; } - $loc_tt[$loc]["d"] = implode("|", $d); + $loc_tt[$loc]["d"] = implode("|", $d); $loc_tt[$loc]["save"] = 1; - break; + break; case 'filter': if ($inp) { $stmp = "

Добавить предмет:"; - $dh = opendir("items/"); + $dh = opendir("items/"); while (($fname = readdir($dh)) !== false) { if ($fname != "." && $fname != ".." && substr($fname, 0, strlen($inp)) == $inp) { $item = findItemByBaseId($fname); @@ -230,7 +233,7 @@ if ($login == $g_admin || $gm == $gm_id) { closedir($dh); msg($stmp, "Предметы", 0); } - break; + break; case 'setgclan': if ($inp && $val) { if (file_exists("data/clans/" . $inp)) { @@ -242,20 +245,20 @@ if ($login == $g_admin || $gm == $gm_id) { $val = "u." . $val; } $tmp["g"] = [$val => ""]; - $file = fopen("data/clans/" . $inp, "w"); + $file = fopen("data/clans/" . $inp, "w"); if ($file !== false) { fputs($file, serialize($tmp)); fclose($file); } msg("Глава клана установлен"); } - break; + break; case 'reploc': if ($inp) { if (substr($inp, 0, 2) !== "n.") { msg("npc должен начинаться на n. и быть в локации в вами"); } - if ( ! isset($loc_i[$loc][$inp])) { + if (!isset($loc_i[$loc][$inp])) { msg("рядом с вами нет npc с id " . $inp . " (регистр учитывается)"); } $npc = loadNpcById($inp); @@ -265,7 +268,7 @@ if ($login == $g_admin || $gm == $gm_id) { $loc_i[$loc][$inp]["bank"] = $npc["bank"]; msg("Банк у $inp загружен из файла npc/$inp"); } - break; + break; } //if($inp==1) $inp=$loc; if(!file_exists("loc_t/".$inp)) msg("Нет локации $inp"); copy("loc_t/".$inp,"loc_i/".$inp); msg("Локация восстановлена");} diff --git a/game/f_listall.inc b/game/f_listall.inc index 4fbf1e3..b8a39ee 100644 --- a/game/f_listall.inc +++ b/game/f_listall.inc @@ -25,7 +25,7 @@ $stmp = "

На се // по всем предметам в локации if (count($loc_i[$loc]) > 1) { $stmp .= "\n
Объекты:"; - if ( ! $start) { + if (!$start) { $start = 0; } $keys = array_keys($loc_i[$loc]); @@ -47,7 +47,7 @@ if (count($loc_i[$loc]) > 1) { } if (substr($keys[$i], 0, 2) == "n." || substr($keys[$i], 0, 2) == "u.") { $tmp = explode("|", $loc_i[$loc][$keys[$i]]["char"]); - $k = $tmp[0]; + $k = $tmp[0]; if (substr($keys[$i], 0, 2) == "u." && $tmp[12]) { $k .= " (всадник)"; } @@ -73,12 +73,12 @@ if (count($loc_i[$loc]) > 1) { } if ($tmp[7] && isset($loc_i[$loc][$tmp[7]])) { $tmp1 = explode("|", $loc_i[$loc][$tmp[7]]["char"]); - if (substr($tmp[7], 0, 2) != "u." || (substr($tmp[7], 0, 2) != "u." && ! $tmp1[8])) { + if (substr($tmp[7], 0, 2) != "u." || (substr($tmp[7], 0, 2) != "u." && !$tmp1[8])) { $st .= " атакует " . $tmp1[0]; } } if ($st) { - if ($st{0} == ' ') { + if ($st { 0} == ' ') { $st = substr($st, 1); } $k .= " [" . $st . "]"; @@ -92,11 +92,11 @@ if (count($loc_i[$loc]) > 1) { $stmp .= "\n
^ "; } if ($listEnd < count($keys)) { - if ( ! $start) { + if (!$start) { $stmp .= "\n
"; } $stmp .= "+ (" . - (count($keys) - $listEnd) . ")"; + (count($keys) - $listEnd) . ")"; } } @@ -104,7 +104,7 @@ if ($loc_i[$loc][$login]["items"] != "") { $stmp .= "\n
Инвентори:"; $items = explode("|", $loc_i[$loc][$login]["items"]); - if ( ! $start) { + if (!$start) { $start = 0; } $keys = array_keys($items); @@ -121,8 +121,9 @@ if ($loc_i[$loc][$login]["items"] != "") { $item .= " (" . $k[1] . ")"; } $tbp = strpos($loc_i[$loc][$login]["equip"], $k[0]); - if ($tbp !== false && ($loc_i[$loc][$login]["equip"]{$tbp + strlen($k[0])} == "|" || - $loc_i[$loc][$login]["equip"]{$tbp + strlen($k[0])} == "") + if ( + $tbp !== false && ($loc_i[$loc][$login]["equip"]{ $tbp + strlen($k[0])} == "|" || + $loc_i[$loc][$login]["equip"]{ $tbp + strlen($k[0])} == "") ) { $item .= " [одето]"; } @@ -133,11 +134,11 @@ if ($loc_i[$loc][$login]["items"] != "") { $stmp .= "\n
^ "; } if ($listEnd < count($keys)) { - if ( ! $start) { + if (!$start) { $stmp .= "\n
"; } $stmp .= "+ (" . - (count($keys) - ($listEnd)) . ")"; + (count($keys) - ($listEnd)) . ")"; } } msg($stmp, "Укажите цель"); \ No newline at end of file diff --git a/game/f_listinv.inc b/game/f_listinv.inc index 9855195..07678c3 100644 --- a/game/f_listinv.inc +++ b/game/f_listinv.inc @@ -24,8 +24,8 @@ if ($up || $down) { // в $to цель, если есть $stmp = "

"; -if ( ! $to && ! $start) { - $stmp .= 'Меню'; +if (!$to && !$start) { + $stmp .= 'Меню'; $war = explode("|", $loc_i[$loc][$login]["war"]); $stmp .= "
Урон: " . $war[1] . "-" . $war[2] . " [" . $war[0] . "%]
Броня: " . ($war[5] + $war[8]); } else { @@ -37,7 +37,7 @@ if ($loc_i[$loc][$login]["items"] == "") { $items = explode("|", $loc_i[$loc][$login]["items"]); - if ( ! $start) { + if (!$start) { $start = 0; } $keys = array_keys($items); @@ -55,8 +55,9 @@ if ($loc_i[$loc][$login]["items"] == "") { $item .= " (" . $k[1] . ")"; } $tbp = strpos($loc_i[$loc][$login]["equip"], $k[0]); - if ($tbp !== false && ($loc_i[$loc][$login]["equip"]{$tbp + strlen($k[0])} == "|" || - $loc_i[$loc][$login]["equip"]{$tbp + strlen($k[0])} == "") + if ( + $tbp !== false && ($loc_i[$loc][$login]["equip"]{ $tbp + strlen($k[0])} == "|" || + $loc_i[$loc][$login]["equip"]{ $tbp + strlen($k[0])} == "") ) { $item .= " [одето]"; } @@ -65,8 +66,7 @@ if ($loc_i[$loc][$login]["items"] == "") { $stmp .= "\n
" . $item . ""; } else { // возврат в основное меню - $stmp .= "\n
" . $item . ""; + $stmp .= "\n" . '
' . $item . ''; } } } @@ -74,33 +74,33 @@ if ($loc_i[$loc][$login]["items"] == "") { $stmp .= "\n
^ "; } if ($listEnd < count($keys)) { - if ( ! $start) { + if (!$start) { $stmp .= "\n
"; } $stmp .= "+ (" . - (count($keys) - $listEnd) . ")"; + (count($keys) - $listEnd) . ")"; } // меню - $stmp .= "\n

\n\n\n

\n"; - $stmp .= "Использовать\n
"; - $stmp .= "Бросить"; + $stmp .= "\n

\n
\n
\n

\n"; + $stmp .= "Использовать\n
"; + $stmp .= "Бросить"; if (isset($loc_i[$loc][$loc_i[$loc][$login]["trade"]["to"]])) { - $stmp .= "\n
Добавить в обмен"; + $stmp .= "\n
Добавить в обмен"; } - $stmp .= "\n
Инфо\n
"; - $stmp .= "[Вверх | "; - $stmp .= "Вниз]"; + $stmp .= "\n
Инфо\n
"; + $stmp .= "[Вверх | "; + $stmp .= "Вниз]"; -}// items!="" +} // items!="" // персонаж -$stmp .= "\n

\n\n\n

"; -$stmp .= "Магия
"; -$stmp .= "Навыки
"; -$stmp .= "Приемы
"; -$stmp .= "Настройки
"; -$stmp .= "О себе"; +$stmp .= "\n

\n
\n
\n

"; +$stmp .= "Магия
"; +$stmp .= "Навыки
"; +$stmp .= "Приемы
"; +$stmp .= "Настройки
"; +$stmp .= "О себе"; if ($char[12]) { $stmp .= "
Покинуть седло"; diff --git a/game/f_listinvm.inc b/game/f_listinvm.inc index a9f9674..108d3fe 100644 --- a/game/f_listinvm.inc +++ b/game/f_listinvm.inc @@ -28,9 +28,9 @@ if ($up) { array_push($items, $items[$i]); array_shift($items); } else { - $tc = $items[$i - 1]; + $tc = $items[$i - 1]; $items[$i - 1] = $items[$i]; - $items[$i] = $tc; + $items[$i] = $tc; } $loc_i[$loc][$login]["items"] = implode("|", $items); msg("Предмет передвинут вверх."); @@ -49,9 +49,9 @@ if ($down) { array_unshift($items, $items[$i]); array_pop($items); } else { - $tc = $items[$i + 1]; + $tc = $items[$i + 1]; $items[$i + 1] = $items[$i]; - $items[$i] = $tc; + $items[$i] = $tc; } $loc_i[$loc][$login]["items"] = implode("|", $items); diff --git a/game/f_listmagic.inc b/game/f_listmagic.inc index 23e02bb..29f2d7b 100644 --- a/game/f_listmagic.inc +++ b/game/f_listmagic.inc @@ -20,7 +20,7 @@ // в $to цель, если есть use MaxDark\Amulet\OldCode\ViewOptions; -if ( ! $loc_i[$loc][$login]["magic"]) { +if (!$loc_i[$loc][$login]["magic"]) { msg("

Ваша книга заклинаний пуста, найдите NPC, который согласится учить вас магии."); } $items = explode("|", $loc_i[$loc][$login]["magic"]); @@ -37,9 +37,9 @@ if ($up) { array_push($items, $items[$i]); array_shift($items); } else { - $tc = $items[$i - 1]; + $tc = $items[$i - 1]; $items[$i - 1] = $items[$i]; - $items[$i] = $tc; + $items[$i] = $tc; } $loc_i[$loc][$login]["magic"] = implode("|", $items); msg("Заклинание передвинуто вверх."); @@ -58,9 +58,9 @@ if ($down) { array_unshift($items, $items[$i]); array_pop($items); } else { - $tc = $items[$i + 1]; + $tc = $items[$i + 1]; $items[$i + 1] = $items[$i]; - $items[$i] = $tc; + $items[$i] = $tc; } $loc_i[$loc][$login]["magic"] = implode("|", $items); msg("Заклинание передвинуто вниз."); @@ -71,7 +71,7 @@ if ($macro == 1) { $m = ''; } $stmp = "

Ваши заклинания:"; -if ( ! $start) { +if (!$start) { $start = 0; } $keys = array_keys($items); @@ -87,20 +87,19 @@ for ($i = $start; $i < $listEnd && $i < count($keys); $i++) { if ($to) { $stmp .= "
" . $item . ""; } else { // в след. экране all выберем цель $to для использования - $stmp .= "\n
" . $item . ""; + $stmp .= "\n" . '
' . $item . ''; } } if ($start) { $stmp .= "\n
^ "; } if ($listEnd < count($keys)) { - if ( ! $start) { + if (!$start) { $stmp .= "\n
"; } $stmp .= "+ (" . - (count($keys) - $listEnd) . ")"; + (count($keys) - $listEnd) . ")"; } // карта меню -$stmp .= "\n

\n\n\n

\nКастовать\n
Инфо\n
[Вверх | Вниз]\n"; +$stmp .= "\n

\n
\n
\n

\nКастовать\n
Инфо\n
[Вверх | Вниз]\n"; msg($stmp, "Магия", 1); \ No newline at end of file diff --git a/game/f_listpriem.inc b/game/f_listpriem.inc index bd07532..0d42662 100644 --- a/game/f_listpriem.inc +++ b/game/f_listpriem.inc @@ -17,7 +17,7 @@ use MaxDark\Amulet\OldCode\ViewOptions; -if ( ! $loc_i[$loc][$login]["priem"]) { +if (!$loc_i[$loc][$login]["priem"]) { msg("

Вы не знаете ни одного приема, найдите NPC, который согласится обучить вас."); } $items = explode("|", $loc_i[$loc][$login]["priem"]); @@ -34,9 +34,9 @@ if ($up) { array_push($items, $items[$i]); array_shift($items); } else { - $tc = $items[$i - 1]; + $tc = $items[$i - 1]; $items[$i - 1] = $items[$i]; - $items[$i] = $tc; + $items[$i] = $tc; } $loc_i[$loc][$login]["priem"] = implode("|", $items); msg("Прием передвинут вверх."); @@ -55,15 +55,15 @@ if ($down) { array_unshift($items, $items[$i]); array_pop($items); } else { - $tc = $items[$i + 1]; + $tc = $items[$i + 1]; $items[$i + 1] = $items[$i]; - $items[$i] = $tc; + $items[$i] = $tc; } $loc_i[$loc][$login]["priem"] = implode("|", $items); msg("Прием передвинут вниз."); } $stmp = "

Ваши приемы:"; -if ( ! $start) { +if (!$start) { $start = 0; } $keys = array_keys($items); @@ -79,20 +79,19 @@ for ($i = $start; $i < $listEnd && $i < count($keys); $i++) { if ($to) { $stmp .= "
" . $item . ""; } else { - $stmp .= "\n
" . $item . ""; + $stmp .= "\n" . '
' . $item . ''; } } if ($start) { $stmp .= "\n
^ "; } if ($listEnd < count($keys)) { - if ( ! $start) { + if (!$start) { $stmp .= "\n
"; } $stmp .= "+ (" . - (count($keys) - $listEnd) . ")"; + (count($keys) - $listEnd) . ")"; } // карта меню -$stmp .= "\n

\n\n\n

Инфо\n
[Вверх | Вниз]\n"; +$stmp .= "\n

\n
\n
\n

Инфо\n
[Вверх | Вниз]\n"; msg($stmp, "Приемы", 1); \ No newline at end of file diff --git a/game/f_logout.inc b/game/f_logout.inc index 84d2c7f..cbb0f81 100644 --- a/game/f_logout.inc +++ b/game/f_logout.inc @@ -15,10 +15,10 @@ use MaxDark\Amulet\OldCode\DBOperations; if ($login != $g_admin && $gm != $gm_id && $loc_i[$loc][$login]["srv"] > time() - 120) { $logout_msg = [ - 'text' => ("Вы только что вошли в игру, персонаж может покинуть этот сервер не раньше, чем через " . - round(($loc_i[$loc][$login]["srv"] - time() + 120) / 60 + 1) . - " минуты
В игру"), - 'title' => 'Уже уходите?(', + 'text' => ("Вы только что вошли в игру, персонаж может покинуть этот сервер не раньше, чем через " . + round(($loc_i[$loc][$login]["srv"] - time() + 120) / 60 + 1) . + " минуты
В игру"), + 'title' => 'Уже уходите?(', 'show_journal' => 1 ]; } else { // если никого рядом нет, то можем удалить персонажа @@ -31,7 +31,7 @@ if ($login != $g_admin && $gm != $gm_id && $loc_i[$loc][$login]["srv"] > time() } } } - if ( ! $b) { + if (!$b) { for ($i = 2; $i < count($loc_c); $i += 2) { if ($loc_c[$i + 1] != $loc) { if (count($loc_i[$loc_c[$i + 1]]) > 0) { @@ -56,14 +56,14 @@ if ($login != $g_admin && $gm != $gm_id && $loc_i[$loc][$login]["srv"] > time() $last_loc = $loc; } $loc_i[$last_loc]["i.flag"] = "флаг лидерства|1|0"; - $game["floc"] = $last_loc; - $game["fid"] = ""; + $game["floc"] = $last_loc; + $game["fid"] = ""; calcparam($loc, $login); } - $auser = $loc_i[$loc][$login]; + $auser = $loc_i[$loc][$login]; $auser["journal"] = ""; - $auser["loc"] = $loc; - $auser["time"] = time(); + $auser["loc"] = $loc; + $auser["time"] = time(); unset($auser["msgt"]); unset($auser["macrol"]); unset($auser["trade"]); @@ -79,29 +79,29 @@ if ($login != $g_admin && $gm != $gm_id && $loc_i[$loc][$login]["srv"] > time() if ($error_message) { $logout_msg = [ - 'text' => ("

Ошибка при сохранении персонажа: " . $error_message . - "
Рекомендуем вам оставаться онлайн и регулярно пытаться сохраниться, " . - "иначе весь опыт, найденные предметы и т.д. с последнего сохранения, " . - "когда покидали игру, будут потеряны.
Назад"), - 'title' => "Ошибка", + 'text' => ("

Ошибка при сохранении персонажа: " . $error_message . + "
Рекомендуем вам оставаться онлайн и регулярно пытаться сохраниться, " . + "иначе весь опыт, найденные предметы и т.д. с последнего сохранения, " . + "когда покидали игру, будут потеряны.
"), + 'title' => "Ошибка", 'show_journal' => 0 ]; } else { if ($b) { $b = "Если вы сейчас покинете игру, то ваш персонаж останется в игре еще минимум на " . - round($g_logout / 60) . " минут, так как рядом кто-то есть."; + round($g_logout / 60) . " минут, так как рядом кто-то есть."; } else { manageNPC($login, $loc, ""); @unlink("online/" . $login); - $b = "Так как рядом никого нет, то ваш персонаж только что покинул игру, " . - "теперь его не смогут в ваше отсутствие убить или обворовать." . "
Удачного дня, " . $char[0] . - "!
На главную"; + $b = "Так как рядом никого нет, то ваш персонаж только что покинул игру, " . + "теперь его не смогут в ваше отсутствие убить или обворовать." . "
Удачного дня, " . $char[0] . + "!
На главную"; $login = ""; } $logout_msg = [ - 'text' => "

Персонаж сохранен успешно.
" . $b, - 'title' => "Сохранение", + 'text' => "

Персонаж сохранен успешно.
" . $b, + 'title' => "Сохранение", 'show_journal' => 0 ]; } diff --git a/game/f_macro.inc b/game/f_macro.inc index 4ce6f0b..23532ae 100644 --- a/game/f_macro.inc +++ b/game/f_macro.inc @@ -20,33 +20,33 @@ if ($macro) { //macro=obj|objv|to|tov|name/..., macrol=obj|objv|to|tov if ($macro == "save") { // сохраняем $name = Request('name'); $num = intval(Request('num')); - if ( ! $name) { + if (!$name) { msg("Не указано имя макроса, используйте англ. буквы.", "Макросы", 0); } if ($num < 1 || $num > 8) { msg("Диапазон номера от 1 до 8", "Макросы", 0); } $m = getMacroList($loc_i[$loc][$login]); - if ( ! isset($loc_i[$loc][$login]["macrol"])) { + if (!isset($loc_i[$loc][$login]["macrol"])) { $ml = []; } else { $ml = explode("|", $loc_i[$loc][$login]["macrol"]); } $objv = ''; - $tov = ''; + $tov = ''; if ($obj == "curr") { - $obj = $ml[0]; + $obj = $ml[0]; $objv = $ml[1]; } if ($to == "curr") { - $to = $ml[2]; + $to = $ml[2]; $tov = $ml[3]; } if ($to == "none") { - $to = ""; + $to = ""; $tov = ""; } - $name = substr(preg_replace('/\W/', "", $name), 0, 9); + $name = substr(preg_replace('/\W/', "", $name), 0, 9); $m[$num - 1] = "$obj|$objv|$to|$tov|$name"; if (strlen($loc_i[$loc][$login]["macro"]) > 300) { msg("Слишком много или слишком длинные макросы"); @@ -68,13 +68,13 @@ if ($macro) { //macro=obj|objv|to|tov|name/..., macrol=obj|objv|to|tov if ($macro == "new") { // форма для нового макроса $stmp = "Действие:
- + Цель:
- + Имя макроса:
- +
Номер: - "; $m = getMacroList($loc_i[$loc][$login]); for ($i = 1; $i < 9; $i++) { @@ -87,19 +87,22 @@ if ($macro) { //macro=obj|objv|to|tov|name/..., macrol=obj|objv|to|tov $stmp .= "\n"; } $stmp .= " - Сохранить + Сохранить
- Удалить -

- Помощь + Удалить +
+ Помощь "; msg($stmp, "Макросы", 0); } if ($macro == "help") { - msg("Чтобы записать новый макрос, совершите любое действие, например, используйте навык или заклинание и выберите в меню \"макросы\".
\"Текущее\" - это совершенное действие и текущая цель.
\"Последнее\" - последнее действие или цель перед вызовом макроса.
\"Вручную\" - при вызове макроса надо будет вручную указать на кого применить.", - "Макросы", 0); + msg( + "Чтобы записать новый макрос, совершите любое действие, например, используйте навык или заклинание и выберите в меню \"макросы\".
\"Текущее\" - это совершенное действие и текущая цель.
\"Последнее\" - последнее действие или цель перед вызовом макроса.
\"Вручную\" - при вызове макроса надо будет вручную указать на кого применить.", + "Макросы", + 0 + ); } if ($macro < 1 || $macro > 8) { diff --git a/game/f_message.inc b/game/f_message.inc index 377b42c..44088c9 100644 --- a/game/f_message.inc +++ b/game/f_message.inc @@ -57,11 +57,11 @@ function msg( $viewOpt = ViewOptions::getInstance(); $url_base = "?sid=$sid"; - header("Expires: Thu, 01 Jan 2010 00:00:01 GMT"); - header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); - header("Cache-Control: no-cache, no-store, must-revalidate, max-age=0"); - header("Pragma: no-cache"); - header("Content-type:text/vnd.wap.wml;charset=utf-8"); + // header("Expires: Thu, 01 Jan 2010 00:00:01 GMT"); + // header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); + // header("Cache-Control: no-cache, no-store, must-revalidate, max-age=0"); + // header("Pragma: no-cache"); + // header("Content-type:text/vnd.wap.wml;charset=utf-8"); /** * флаг пропуска журнала. @@ -74,14 +74,14 @@ function msg( /** * Флаг, что перешли с главной страницы. - * Как комманда показать меню в виде "действий"( tag). + * Как комманда показать меню в виде "действий"( tag). * * is_page_mode_menu = (!$is_page_mode_menu && $page_type == PageType::MAIN && $menuMode == MenuMode::PAGE) * is_page_mode_menu = is_page_mode_menu && ! is_links_mode_menu; * * @var $isMenuInPageMode bool */ - $isMenuInPageMode = Request('fm'); + $isMenuInPageMode = Request('fm'); /** * Флаг, что перешли с главной(page_type == 'main') страницы. * Как комманда показать меню в виде ссылок( tag) на отдельной странице. @@ -116,7 +116,7 @@ function msg( if ($isMenuInPageMode) { $show_journal = false; $viewOpt->setDescEnabled(false); - $message = "Нажмите кнопку Меню"; + $message = "Нажмите кнопку Меню"; } // меню в виде ссылок( tag) на отдельной странице if ($isMenuInLinksMode) { @@ -124,7 +124,7 @@ function msg( $viewOpt->setDescEnabled(false); $message = menu_links($url_base, $currentUser, $viewOpt->getMapMode()); } - + #start: подготовка журнала if ($skip_journal) { $show_journal = false; @@ -147,7 +147,7 @@ function msg( if ($show_journal && $userJournal) { $page_journal = str_replace('|', '
', $userJournal); - if ( ! $viewOpt->getReportIncoming()) { + if (!$viewOpt->getReportIncoming()) { $page_journal = preg_replace('/(Пришел|Пришла) [^<]+/u', '', $page_journal); } } @@ -176,7 +176,6 @@ function msg( if ($page_journal && $show_journal) { // страница влезает в ограничения? if ($bsize) { - // отобразить через $tmp_url = "#g"; } else { // FIXME: костыль @@ -188,10 +187,19 @@ function msg( #end: формирование журнала #start: формирование страницы - if ($bsize || ! $show_journal || ! $page_journal) { + if ($bsize || !$show_journal || !$page_journal) { $wml .= buildMainCard( - $page_title, $message, $page_type, $currentUser, $var_name, $var_value, $url_base, - $isMenuInPageMode, $isMenuInLinksMode, $viewOpt->getMenuMode(), $viewOpt->getMapMode() + $page_title, + $message, + $page_type, + $currentUser, + $var_name, + $var_value, + $url_base, + $isMenuInPageMode, + $isMenuInLinksMode, + $viewOpt->getMenuMode(), + $viewOpt->getMapMode() ); } #end: формирование страницы @@ -201,17 +209,32 @@ function msg( "'(

]*>)'u", "'

'u", "'

'u" - ], ['\\1', '

', '

'], $wml); + ], ['\\1
', '

', '

'], $wml); } // wml не позволяет использовать '&' отдельно, заменяем на "&" - $wml = str_replace("&", "&", $wml); - $wml = str_replace("&", "&", $wml); + // $wml = str_replace("&", "&", $wml); + // $wml = str_replace("&", "&", $wml); $page = << - -$wml + + + + + + + + + + +
+
+$wml +
+
+ + WML; echo $page; exit; @@ -244,7 +267,7 @@ function buildMainCard( $menuMode, $mapMode ) { - $wml = '"; - $wml .= ''; + $wml .= "
В игру"; + $wml .= ''; } $o = 4; // только для $pageType == PageType::MAIN // добавить ссылку на меню в режиме MenuMode::PAGE if ($pageType == PageType::MAIN && $menuMode == MenuMode::PAGE && !$isMenuInPageMode) { - $wml .= '' . - ""; + $wml .= '"; // дальше выводим как "диалоговую" $pageType = PageType::MSG; } @@ -280,8 +302,11 @@ function buildMainCard( if ($pageType == PageType::MAIN && $menuMode == MenuMode::LINKS && !$isMenuInLinksMode) { // FIXME: тот еще костыль... // добавляет на главной странице ссылку на страницу с меню. - $message = str_replace("

Меню

"; + $wml .= "Пeрcoнaж"; $m = getMacroList($userData); for ($i = 1; $i < 9; $i++) { if (!empty($m[$i - 1])) { $mn = explode("|", $m[$i - 1]); - $wml .= "" . - ""; + $wml .= "" . $mn[4] . ""; $o++; } } } if ($pageType == PageType::INVENTORY && $menuMode == MenuMode::SHORT) { - $wml .= '' . - ""; + $wml .= "В игру"; } - if ($pageType == PageType::INVENTORY && $menuMode == MenuMode::SHORT || + if ( + $pageType == PageType::INVENTORY && $menuMode == MenuMode::SHORT || $menuMode == MenuMode::FULL && $pageType == PageType::MAIN || $isMenuInPageMode ) { - $wml .= "" . - "" . // чат - "" . - "" . // список контактов - "" . - "" // управление макросами + $wml .= "Cкaзaть" . // чат + "Koнтaкты" . // список контактов + "мaкpocы" // управление макросами ; // Карта включена? if ($mapMode) { $o++; - $wml .= "" . - ""; + $wml .= "Kapтa"; } $o++; - $wml .= "" . - ""; + $wml .= "Coxpaнить"; } #end: формирование меню @@ -337,7 +355,7 @@ function buildMainCard( if (substr($message, strlen($message) - 4) != '

') { $message .= '

'; } - $wml .= $message . ''; + $wml .= $message . '
'; return $wml; } @@ -364,20 +382,13 @@ function getMacroList($userData) function buildJournalCard($tmp_url, $journal, $skip_journal) { - $journalCard = '' . - '' . - '' . - '' . + $journalCard = ''; return $journalCard; } @@ -399,12 +410,12 @@ function menu_links($url_base, $userData, $map_type) } } $message .= sprintf('
Cкaзaть', $url_base) . - sprintf('
Koнтaкты', $url_base) . - sprintf('
мaкpocы', $url_base); + sprintf('
Koнтaкты', $url_base) . + sprintf('
мaкpocы', $url_base); if ($map_type) { $message .= sprintf('
Kapтa', $url_base, $map_type); } $message .= sprintf('
Coxpaнить', $url_base) . - sprintf('

В игру', $url_base); + sprintf('

В игру', $url_base); return $message; } diff --git a/game/f_msg.inc b/game/f_msg.inc index c7d8194..3ef195f 100644 --- a/game/f_msg.inc +++ b/game/f_msg.inc @@ -20,8 +20,10 @@ use MaxDark\Amulet\OldCode\ViewOptions; if ($msg) { $del = Request("del"); if ($del && strpos($loc_i[$loc][$login]["msgt"], "{" . $del . "}") !== false) { - $loc_i[$loc][$login]["msgt"] = substr($loc_i[$loc][$login]["msgt"], - strpos($loc_i[$loc][$login]["msgt"], "{" . $del . "}") + strlen("{" . $del . "}")); + $loc_i[$loc][$login]["msgt"] = substr( + $loc_i[$loc][$login]["msgt"], + strpos($loc_i[$loc][$login]["msgt"], "{" . $del . "}") + strlen("{" . $del . "}") + ); } if ($msg == 1) { // основная страница $stmp .= "\n
Добавить"; @@ -30,19 +32,19 @@ if ($msg) { if ($loc_i[$loc][$login]["msgt"]) { $del = substr($loc_i[$loc][$login]["msgt"], -11, -1); $stmp .= preg_replace("/{[^}]+}/", "", $loc_i[$loc][$login]["msgt"]) . - "
Очистить
"; + "
Очистить
"; } else { $stmp .= "\n
Сообщений нет"; } // список онлайн $stmp .= "
Онлайн:"; $count = 0; - $c1 = 0; - $c2 = 0; + $c1 = 0; + $c2 = 0; if ($loc_i[$loc][$login]["msg"]) { $keys = explode("|", $loc_i[$loc][$login]["msg"]); } - if ( ! $start) { + if (!$start) { $start = 0; } $listEnd = $start + ViewOptions::getInstance()->getMaxListSize(); @@ -52,8 +54,8 @@ if ($msg) { if (file_exists("online/" . $i) && filesize("online/" . $i) != 1) { $count++; if ($c1 >= $start && $c1 < $listEnd) { - $stmp .= "\n
" . substr($i, 2) . - ""; + $stmp .= "\n
" . + '' . substr($i, 2) . ''; } $c1++; } @@ -68,11 +70,11 @@ if ($msg) { $stmp .= "\n
^ "; } if ($listEnd < $c1) { - if ( ! $start) { + if (!$start) { $stmp .= "\n
"; } $stmp .= "+ (" . ($c1 - ($listEnd)) . - ")"; + ")"; } $cnt = (count($keys) - $count); $stmp .= <<Оффлайн ($cnt)

Помощь

- - +
+ +

-
- - - -Отправить - - - - - - - - +

+
+
+ + +
+
+ + +
+ + + + TAG; } if ($msg == 'off') { // список оффлайн - $c1 = 0; - $c2 = 0; + $c1 = 0; + $c2 = 0; $count = 0; if ($loc_i[$loc][$login]["msg"]) { $keys = explode("|", $loc_i[$loc][$login]["msg"]); @@ -125,7 +128,7 @@ TAG; $stmp .= "Оффлайн (выберите, чтобы удалить):"; foreach ($keys as $i) { if ($i) { - if ( ! file_exists("online/" . $i) || filesize("online/" . $i) == 1) { + if (!file_exists("online/" . $i) || filesize("online/" . $i) == 1) { if ($c1 >= $start && $c1 < $listEnd) { $stmp .= "\n
" . substr($i, 2) . ""; } @@ -141,11 +144,11 @@ TAG; $stmp .= "\n
^ "; } if ($listEnd < $c1) { - if ( ! $start) { + if (!$start) { $stmp .= "\n
"; } $stmp .= "+ (" . ($c1 - $listEnd) . - ")"; + ")"; } if ($count == 0) { $stmp = "Список оффлайн пуст"; @@ -155,7 +158,7 @@ TAG; if (strlen($loc_i[$loc][$login]["msg"]) > 500) { msg("В контактах нет места, удалите кого-нибудь", "Ошибка"); } - if ( ! $id) { + if (!$id) { $stmp = ""; foreach (array_keys($loc_i[$loc]) as $i) { if ($i != $login && substr($i, 0, 2) == "u.") { @@ -170,7 +173,7 @@ TAG; } else { if (isset($loc_i[$loc][$id])) { if (strpos($loc_i[$loc][$login]["msg"], $id . "|") === false) { - if ( ! $loc_i[$loc][$login]["msg"]) { + if (!$loc_i[$loc][$login]["msg"]) { $loc_i[$loc][$login]["msg"] = $id; } else { $loc_i[$loc][$login]["msg"] .= "|" . $id; @@ -188,13 +191,14 @@ TAG; } $loc_i[$loc][$login]["msg"] = str_replace("|" . $id, "", $loc_i[$loc][$login]["msg"]); $loc_i[$loc][$login]["msg"] = str_replace($id, "", $loc_i[$loc][$login]["msg"]); - $stmp = substr($id, 2) . " удален"; + $stmp = substr($id, 2) . " удален"; } if ($msg == 'write') { - if ( ! $mall && ( ! file_exists("online/" . $id) || filesize("online/" . $id) == 1)) { + $text = Post("text"); + if (!$mall && (!file_exists("online/" . $id) || filesize("online/" . $id) == 1)) { msg(substr($id, 2) . " сейчас не в игре, оправлять сообщения можно только тем кто онлайн"); } - if ( ! $text) { + if (!$text) { msg("Нет текста для отправки"); } if (strpos($text, "?sid=") !== false) { @@ -207,11 +211,11 @@ TAG; $s = $text; - $s = str_replace('\\', "", $s); - $s = preg_replace('/([^ -}А-я#])|\$|&/u', '', $s); - $s = str_replace("|", "", $s); - $s = str_replace("<", "", $s); - $s = str_replace(">", "", $s); + $s = str_replace('\\', "", $s); + $s = preg_replace('/([^ -}А-я#])|\$|&/u', '', $s); + $s = str_replace("|", "", $s); + $s = str_replace("<", "", $s); + $s = str_replace(">", "", $s); $text = $s; $keys = explode("|", $loc_i[$loc][$login]["msg"]); @@ -219,12 +223,12 @@ TAG; foreach ($keys as $i) { if ($i) { if (file_exists("online/" . $i) && filesize("online/" . $i) != 1 && ($id == $i || $mall)) { - $tmp = file("online/" . $i); + $tmp = file("online/" . $i); $tmp[0] = str_replace("\n", "", $tmp[0]); $tmp[0] = str_replace("\r", "", $tmp[0]); loadloc($tmp[0]); - if ( ! isset($loc_i[$tmp[0]][$i])) { + if (!isset($loc_i[$tmp[0]][$i])) { if ($mall) { continue; } else { @@ -241,10 +245,10 @@ TAG; } $loc_i[$tmp[0]][$i]["msgt"] = substr($loc_i[$tmp[0]][$i]["msgt"] .= "
" . - substr($login, 2) . ": " . - strip_tags($text) . "{" . - time() . "}", -500); - if ( ! $mall) { + substr($login, 2) . ": " . + strip_tags($text) . "{" . + time() . "}", -500); + if (!$mall) { $stmp = "Сообщение для " . substr($id, 2) . " отправлено"; break; } @@ -252,7 +256,7 @@ TAG; } } } - if ( ! $stmp) { + if (!$stmp) { $stmp = "Сообщение для всех отправлено"; } //if ($login == "u.tatus") @mail("blade17@bk.ru", "BAG " . $text, $text); @@ -264,8 +268,8 @@ TAG; if ($msg == 'help') { $stmp = 'Вы можете отправлять текстовые сообщения только игрокам, находящимся в игре.' . - ' Причем вы должны быть добавлены у них в контактах тоже.' . - ' Если вам придет новое сообщение, вы увидите спец. ссылку на игровом экране.'; + ' Причем вы должны быть добавлены у них в контактах тоже.' . + ' Если вам придет новое сообщение, вы увидите спец. ссылку на игровом экране.'; } if ($msg != 'clear') { diff --git a/game/f_site_clans.inc b/game/f_site_clans.inc index a253cd1..995e8f5 100644 --- a/game/f_site_clans.inc +++ b/game/f_site_clans.inc @@ -7,16 +7,16 @@ use MaxDark\Amulet\OldCode\PageType; use MaxDark\Amulet\OldCode\ViewOptions; if ($clan) { - if ( ! file_exists("data/clans/" . $clan)) { + if (!file_exists("data/clans/" . $clan)) { msg("Клан $clan не существует"); } $tmp = unserialize((file_get_contents("data/clans/" . $clan))); - if ( ! isset($tmp["g"])) { + if (!isset($tmp["g"])) { msg("Ошибка при загрузке клана $clan, сообщите разработчику."); } if ($info) { if ($tmp["i"]) { - msg($tmp["i"] . "
[Назад]", "Инфо о клане " . $clan); + msg($tmp["i"] . "
", "Инфо о клане " . $clan); } else { msg("Нет описания"); } @@ -29,7 +29,7 @@ if ($clan) { $stmp .= "
Состав:"; if (count($tmp["m"]) > 0) { - if ( ! $start) { + if (!$start) { $start = 0; } $keys = array_keys($tmp["m"]); @@ -41,11 +41,11 @@ if ($clan) { $stmp .= "\n
^ "; } if ($listEnd < count($keys)) { - if ( ! $start) { + if (!$start) { $stmp .= "\n
"; } $stmp .= "+ (" . - (count($keys) + 1 - $listEnd) . ")"; + (count($keys) + 1 - $listEnd) . ")"; } } else { $stmp .= "
Больше никого в клане нет."; @@ -57,10 +57,10 @@ if ($clan) { // все кланы $arr = []; -$dh = opendir("data/clans/"); +$dh = opendir("data/clans/"); while (($fname = readdir($dh)) !== false) { if ($fname != "." && $fname != ".." && $fname != "1.htaccess" && $fname != ".htaccess") { - $tmp = unserialize((file_get_contents("data/clans/" . $fname))); + $tmp = unserialize((file_get_contents("data/clans/" . $fname))); $arr[$fname] = count($tmp["m"]) + 1; } } @@ -69,24 +69,24 @@ closedir($dh); if (count($arr) > 0) { $stmp = "

Всего кланов: " . count($arr); arsort($arr); - if ( ! $start) { + if (!$start) { $start = 0; } $keys = array_keys($arr); $listEnd = $start + ViewOptions::getInstance()->getMaxListSize(); for ($i = $start; $i < $listEnd && $i < count($keys); $i++) { $stmp .= "
" . $keys[$i] . " (" . - $arr[$keys[$i]] . " чел.)"; + $arr[$keys[$i]] . " чел.)"; } if ($start) { $stmp .= "\n
^ "; } if ($listEnd < count($keys)) { - if ( ! $start) { + if (!$start) { $stmp .= "\n
"; } $stmp .= "+ (" . - (count($keys) + 1 - $listEnd) . ")"; + (count($keys) + 1 - $listEnd) . ")"; } } else { $stmp = "

Нет ни одного клана"; diff --git a/game/f_site_connect.inc b/game/f_site_connect.inc index c821943..5b2bd2f 100644 --- a/game/f_site_connect.inc +++ b/game/f_site_connect.inc @@ -18,8 +18,8 @@ use MaxDark\Amulet\OldCode\DBOperations; use MaxDark\Amulet\OldCode\PageType; -if ( ! preg_match('|^[-0-9a-z_\.]+$|i', $login)) { - msg("Неверный синтаксис в логине $login
Назад", 'Проверка входа', 0, PageType::GUEST); +if (!preg_match('|^[-0-9a-z_\.]+$|i', $login)) { + msg("Неверный синтаксис в логине $login
", 'Проверка входа', 0, PageType::GUEST); } if (substr($login, 0, 2) != "u.") { $login = "u." . $login; @@ -47,8 +47,11 @@ if ($res) { msg($res, 'Проверка входа', 0, PageType::GUEST); } $auser = unserialize($data); -if ( ! $auser["char"] || ! $auser["skills"]) { - $data = preg_replace('/s:(?:\d+):"(.*?)";/e', "calcser('\\1')", $data); +if (!$auser["char"] || !$auser["skills"]) { + $data = preg_replace_callback('/s:(\d+):"(.*?)";/', function ($matches) { + return "s:" . strlen($matches[2]) . ":\"" . addslashes($matches[2]) . "\";"; + }, $data); + // $data = preg_replace('/s:(?:\d+):"(.*?)";/e', "calcser('\\1')", $data); $auser = unserialize($data); } @@ -56,8 +59,11 @@ if ( ! $auser["char"] || ! $auser["skills"]) { if (strpos($auser["char"], "*") === false) { $clan = ""; } else { - $clan = substr($auser["char"], strpos($auser["char"], "*") + 1, - strrpos($auser["char"], "*") - strpos($auser["char"], "*") - 1); + $clan = substr( + $auser["char"], + strpos($auser["char"], "*") + 1, + strrpos($auser["char"], "*") - strpos($auser["char"], "*") - 1 + ); } if ($clan && (check_clan($clan, $login)) == "no") { $clan = "no"; @@ -65,7 +71,7 @@ if ($clan && (check_clan($clan, $login)) == "no") { $clan = "yes"; } // ок, получили данные, пробуем войти в игру -$t = filemtime('../news/news.htm'); +$t = filemtime('../news/news.htm'); $tnews = date("d/m/Y", $t); include_once('f_site_connect2.inc'); if (filesize("online/" . $login) == 1 || strpos($s, "cnick=1") === false) { @@ -89,7 +95,7 @@ function check_clan($clan, $login) if (strtolower($fname) === strtolower($clan)) { closedir($dh); $tmp = @unserialize((@file_get_contents("data/clans/" . $fname))); - if (is_array($tmp) && ! isset($tmp["m"][$login]) && ! isset($tmp["g"][$login])) { + if (is_array($tmp) && !isset($tmp["m"][$login]) && !isset($tmp["g"][$login])) { return ("no"); } diff --git a/game/f_site_faq.inc b/game/f_site_faq.inc index f1af3f8..b8c4d84 100644 --- a/game/f_site_faq.inc +++ b/game/f_site_faq.inc @@ -7,62 +7,62 @@ switch ($id) { $stmp = "

Амулет Дракона - это многопользовательская текстовая игра жанра RPG, в которую можно играть с мобильного телефона через WAP.
Вы можете выполнять квесты, использовать предметы и магию, развивать свои навыки, создавать и вступать в кланы, захватывать и оборонять замки, приручать животных, нанимать союзников и командовать ими и многое, многое другое. При этом одновременно с вами могут играть сотни других игроков!
В игре около 1000 локаций, 36 заклинаний, около 500 предметов - оружие, броня, элексиры, еда и т.д., 83 NPC с нелинейными диалогами, 30 навыков, которые можно развивать, включая такие как \"приручение животных\", \"воровство\", \"кузнец\", \"плотник\" и т.д., встроенный чат и аналог ICQ."; - break; + break; case "reg": $stmp = "

Если вы первый раз на этом сайте, то введите свое имя английскими буквами (до 10 символов) и любой пароль (не используйте в качестве пароля свое имя, цифры 111, 12345 и другие варианты, которые легко подобрать), после чего нажмите ссылку \"Регистрация\".
После регистрации входите в игру и поговорите с Привратником Уином, он расскажет вам об управлении и игровом мире, а также подскажет, с чего лучше начать."; - break; + break; case "map": $stmp = "

Включите в настройках карту"; - break; + break; case "save": $stmp = "

Так иногда могут происходить ошибки записи на диск, база данных может быть недоступна и возникать другие непредвиденные проблемы, то рекомендуем вам регулярно сохранять своего персонажа, выбирая из меню пункт \"Сохранить\". Делайте это когда получаете очередное очко опыта, достали крутое оружие или броню. Если что-то случится, персонаж будет восстановлен с последнего сохранения.
Используйте также этот пункт для выхода из игры, чтобы узнать, успешно ли был сохранен персонаж."; - break; + break; case "npc": $stmp = "

Возможно, это произошло в результате ошибки записи локации на диск. Сообщите где это произошло (в каком магазине, а если знаете имя торговца, то еще лучше) и на каком сервере."; - break; + break; case "err": $stmp = "

В большинстве случаев ошибки при загрузке происходят из-за того, что размер WAP страницы больше, чем может понимать телефон или IP гейт. Особенно это касается телефонов Motorola C350 и Siemens M50. Попробуйте в настройках уменьшить размер списков до 4, а размер страницы до 1200, включите сокращенное меню (или даже на отдельной странице), отключите описание локаций и информацию о пришедших игроках, поставьте число пунктов в исп. магию и предмет 0, а также удалите все макросы. Если не помогает, то включите звуки рядом с выходами и в крайнем случае отключите журнал."; - break; + break; case "lagi": $stmp = "

Попробуйте зайти в игру ночью или ранним утром (до 7 утра). Если скорость открытия страниц заметно выше, то скорей всего дело в качестве вашего GPRS (днем обычно он работает медленнее) и загруженности вашей соты сети. В таком случае измените настройки игры, чтобы уменьшить размер скачиваемых страниц, что немного повысит скорость или попробуйте сменить IP гейта.
Причина задержек в игре также может быть из-за нагрузки сервера - днем больше, ночью меньше. Пик нагрузки обычно вечером в 22:00-23:00 часа."; - break; + break; case "problem": $stmp = "

Зайдите в меню \"Контакты\", выберите ссылку \"Почта\" и отправьте на адрес администрации письмо, где укажите модель своего телефона, на каком сервере и во сколько играли, что делали в игре перед возникновением ошибки. Подробно опишите проблему и что надо восстановить/сделать, а также укажите свой логин и пароль (пароль для того, чтобы я мог войти вашим персонажем, позже вы можете его поменять). Я зайду в игру от вашего имени и на месте разберусь в чем дело. При этом выходить из игры совсем не обязательно."; - break; + break; case "nlogin": $stmp = "

Если при входе в игру вам показывается экран \"Добро пожаловать!\", а дальше всегда происходит ошибка, то скорей всего вы стоите в локации со слишком длинным описанием и ваш телефон не может загрузить такую большую WAP страницу. Прежде всего, зайдите в настройки и установите минимальные. Если не помогает, то либо зайдите с другого телефона, либо смотрите раздел \"Если проблемы с персонажем\". Можете также сообщить модель телефона и где застряли, чтобы исправить это в след. обновлениях игры."; - break; + break; case "nloc": $stmp = "

Если при переходе в следующую локацию телефон не может загрузить ее и постоянно выдает какую-нибудь ошибку, попробуйте два раза (именно два раза!) вернуться назад (нажать в своем телефоне кнопку, загружающую предыдущую страницу, обычно это кнопка завершения разговора). Если повезет, то вернетесь на предыдущую локацию."; - break; + break; case "load": $stmp = "

Скорей всего, произошла какая-то ошибка и ваш персонаж был загружен с последнего сохранения, так что регулярно сохраняйтесь.
Другая возможная причина - кто-то узнал ваш пароль (например, если вы используете в качестве пароля свой логин или простенькую комбинацию вроде 123), зашел в игру от вашего имени на наделал всяких гадостей (любителей хватает, можете поверить).
Учтите, что одним персонажем могут одновременно управлять несколько человек, так что даже если вы в игре, тот кто знает ваш пароль может в это же время выбросить ваши вещи или напасть вашим персонажем в охраняемой зоне. Если вы заметили, что вашим персонажем управляет кто-то другой, немедленно смените пароль для входа в игру. Исключение - работа админа по совершенствованию игры."; - break; + break; case "probel": $stmp = "

Используйте вместо пробела точку \".\" или символ плюс \"+\". Зависит от телефона."; - break; + break; case "dialog": $stmp = "

Сообщите имя NPC и о чем шла речь."; - break; + break; case "loc": $stmp = "

Сообщите где это случилось и при каких обстоятельствах. Скорее всего, в этой локации (или соседних) есть предмет или монстр с недопустимыми параметрами и игра выводит клиенту код ошибки, чтобы не допустить критического изменения в файлах. Если ваш телефон способен отобразить хоть какой-то текст в такой ситуации (обычно это делают последние модели телефонов, остальные просто сообщают об общей ошибке), пришлите нам этот текст."; - break; + break; case "inv": $stmp = "

Скорей всего у вас в инвентори или банке есть неправильный предмет. Сообщите администрации какой предмет вы получили последним и откуда (подняли с трупа монстра или игрока, купили в магазине, получили за выполнение квеста и т.д.).
После чего просто войдите в игру заново. Скорей всего, неправильный предмет будет автоматически удален и вы сможете продолжить игру."; - break; + break; case "mail": $stmp = "

Если вам что-то непонятно, лучше задать вопрос в форуме. А если хотите сообщить о критической ошибке (проблемы с персонажем, недоступность локаций или диалогов, неправильное функционирование предметов или магии и т.д.), то лучше по почте: или из меню \"Контакты\", \"Почта\" в игре или отправьте почту администрации, где опишите суть проблемы.
Не забудьте для начала ознакомиться с другими разделами этой страницы, т.к. если много писем, то отвечать на те, которые описаны здесь, у администрации просто нет возможности.
Пожалуйста, не шлите одинаковые письма чаще одного раза в день. Если не получили ответа, значит на то были причины (например, слишком много писем). Бессмысленным захламлением почтового ящика вы только уменьшаете шансы на ответ и оказание помощи!"; - break; + break; case "admin": $stmp = "

Игра основана на исходниках SoD(mag.su/game), автором и разработчиком которой является Blade (blade@computermag.ru)"; - break; + break; default: $stmp = '

1. Введение
Игровые вопросы @@ -89,7 +89,7 @@ switch ($id) { '; } -msg_faq($stmp . "



[Назад]"); +msg_faq($stmp . "



"); /** * @param string $page @@ -100,12 +100,12 @@ function msg_faq($page) echo << - - - + + +
$page - - +
+ XML; die(''); } \ No newline at end of file diff --git a/game/f_site_gamereg.inc b/game/f_site_gamereg.inc index b4a485b..7d2859e 100644 --- a/game/f_site_gamereg.inc +++ b/game/f_site_gamereg.inc @@ -4,37 +4,33 @@ use MaxDark\Amulet\OldCode\DBOperations; use MaxDark\Amulet\OldCode\PageType; $nn = Request('nn'); -if ( ! preg_match('|^[-0-9a-z_]+$|i', $nn)) { - msg("Неверный синтаксис в логине
Назад", 'Ошибка', 0, PageType::GUEST); +if (!preg_match('|^[-0-9a-z_]+$|i', $nn)) { + msg("Неверный синтаксис в логине
", 'Ошибка', 0, PageType::GUEST); } if (DBOperations::nicknameExists($nn)) { - msg('Этот логин уже занят.
Назад', 'Ошибка', 0, PageType::GUEST); + msg('Этот логин уже занят.
', 'Ошибка', 0, PageType::GUEST); } $stmp = <<

+

+

Логин:
$nn
--------
Пароль:
(a-Z,0-9) -
+

Ваш Email адрес: -
+

Пол персонажа -

Возраст -
-
Продолжить - - - - - - - - +
+ +
+
+
PAGE; msg($stmp, "Регистрация", 0, PageType::GUEST); diff --git a/game/f_site_main.inc b/game/f_site_main.inc index 87e8aa1..218ed9c 100644 --- a/game/f_site_main.inc +++ b/game/f_site_main.inc @@ -3,8 +3,9 @@ use MaxDark\Amulet\OldCode\PageType; $stmp = "

Новости"; -$t = filemtime('../news/news.htm'); +$t = filemtime('../news/news.htm'); if ($t) { + date_default_timezone_set('Europe/Warsaw'); $stmp .= date("d/m", $t); } $stmp .= " @@ -12,8 +13,8 @@ $stmp .= "

Пароль:
-
Войти -
Регистрация -
Статистика -
Помощь"; +
Войти +
Регистрация +
Статистика +
Помощь"; msg($stmp, $GAME_NAME, 0, PageType::GUEST); diff --git a/game/f_site_news.inc b/game/f_site_news.inc index 0f24918..933e88b 100644 --- a/game/f_site_news.inc +++ b/game/f_site_news.inc @@ -1,6 +1,6 @@ Нет текста, сообщите название рассказа разработчику"); } $stmp = (file_get_contents("../news/news.htm")); @@ -9,22 +9,22 @@ $stmp = str_replace("|", "
------
", $stmp); $stmp = wordwrap($stmp, 500, "|"); $stmp = explode("|", $stmp); -if ( ! $start || $start < 0) { +if (!$start || $start < 0) { $start = 1; } if ($start > count($stmp)) { $start = count($stmp); } $stmp[$start - 1] = "

Стр. " . $start . " из " . count($stmp) . " [изм.]
" . - $stmp[$start - 1]; + $stmp[$start - 1]; if ($start < count($stmp)) { $stmp[$start - 1] .= "
[след. стр.]"; + "\">[след. стр.]"; } $stmp[$start - 1] .= "

[В начало]
[На главную]"; $stmp[$start - - 1] .= "

\n

Введите номер страницы:

Перейти"; + 1] .= "

\n

Введите номер страницы:

Перейти"; -$stmp = $stmp[$start - 1] . "
[Назад]"; +$stmp = $stmp[$start - 1] . "
"; msg($stmp); diff --git a/game/f_site_online.inc b/game/f_site_online.inc index e169e3e..6551d8c 100644 --- a/game/f_site_online.inc +++ b/game/f_site_online.inc @@ -19,11 +19,11 @@ if (time() > $game["lastai"] + 240) { // обновим список include "f_online.inc"; } -$stmp = ""; -if ( ! $start) { +$stmp = ""; +if (!$start) { $start = 0; } -$i = -1; +$i = -1; $listSize = 10; $listEnd = $start + $listSize; @@ -40,7 +40,7 @@ while (($fname = readdir($dh)) !== false) { $tmp[$it] = str_replace("\n", "", $tmp[$it]); $tmp[$it] = str_replace("\r", "", $tmp[$it]); } - if ( ! $tmp[0]) { + if (!$tmp[0]) { @unlink("online/" . $fname); $i--; continue; @@ -67,16 +67,16 @@ if ($i > -1) { $stmp .= "\n
^ "; } if ($listEnd < $i + 1) { - if ( ! $start) { + if (!$start) { $stmp .= "\n
"; } $stmp .= "+ (" . - ($i + 1 + 1 - $listEnd) . ")"; + ($i + 1 + 1 - $listEnd) . ")"; } } else { $stmp = "

Сейчас в игре никого нет"; } -$stmp .= "\n

[Назад]"; +$stmp .= "\n

"; msg($stmp, "Онлайн", 0, PageType::GUEST); \ No newline at end of file diff --git a/game/f_site_reg2.inc b/game/f_site_reg2.inc index 5f699fc..9bc5ec2 100644 --- a/game/f_site_reg2.inc +++ b/game/f_site_reg2.inc @@ -21,26 +21,31 @@ use MaxDark\Amulet\OldCode\PageType; */ $nn = Request('nn'); -$pass = Request('pass'); +$pass = Post('pass'); $sex = Request('sex'); $age = Request('age'); $email = Request('email'); if (strlen($nn) < 6 || strlen($pass) < 6 || strlen($nn) > 15 || strlen($pass) > 15) { - msg("Длина логина и пароля должна быть не короче 6 и не длинее 15 символов.
Назад", - 'Ошибка', 0, PageType::GUEST); + msg( + $nn . $pass . + "Длина логина и пароля должна быть не короче 6 и не длинее 15 символов.
", + 'Ошибка', + 0, + PageType::GUEST + ); } -if ( ! preg_match('|^[-0-9a-z_]+$|i', $nn)) { - msg("Неверный синтаксис в логине
Назад", 'Ошибка', 0, PageType::GUEST); +if (!preg_match('|^[-0-9a-z_]+$|i', $nn)) { + msg("Неверный синтаксис в логине
", 'Ошибка', 0, PageType::GUEST); } -if ( ! preg_match("|^[-0-9a-z_\\.]+@[-0-9a-z]+\\.[a-z]{2,6}+$|i", $email)) { - msg("Неверный синтаксис в email " . $email . "
Назад", 'Ошибка', 0, PageType::GUEST); +if (!preg_match("|^[-0-9a-z_\\.]+@[-0-9a-z]+\\.[a-z]{2,6}+$|i", $email)) { + msg("Неверный синтаксис в email " . $email . "
", 'Ошибка', 0, PageType::GUEST); } if (intval($age) != $age || $age < 5 || $age > 99) { - msg("Неправдоподобный возраст, укажите более реальный.
Назад", "Ошибка", 0, PageType::GUEST); + msg("Неправдоподобный возраст, укажите более реальный.
", "Ошибка", 0, PageType::GUEST); } if ($sex != 'm' && $sex != 'f') { - msg("Вы пришли играть или дыры искать?" . $sex . "
Назад", 'Ошибка', 0, PageType::GUEST); + msg("Вы пришли играть или дыры искать?" . $sex . "
", 'Ошибка', 0, PageType::GUEST); } $now = time(); @@ -49,13 +54,13 @@ $loc = "_begin"; // начальная локация // создаем игрока $auser = [ - "user" => "$pass||$sex|$age||$now|0|0|0|0", - "char" => "$nn|20|20|20|20|1|1||0|0|0||", - "skills" => "1|1|1|0|2|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", - "loc" => $loc, + "user" => "$pass||$sex|$age||$now|0|0|0|0", + "char" => "$nn|20|20|20|20|1|1||0|0|0||", + "skills" => "1|1|1|0|2|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", + "loc" => $loc, "journal" => "", - "items" => "i.w.k.begin:1", - "magic" => "", + "items" => "i.w.k.begin:1", + "magic" => "", ]; $login = 'u.' . $nn; // добавим в локацию, чтобы посчитать параметры diff --git a/game/f_site_stat.inc b/game/f_site_stat.inc index 9142cda..7a19789 100644 --- a/game/f_site_stat.inc +++ b/game/f_site_stat.inc @@ -15,7 +15,7 @@ function get_stat_page() Флаг лидерства
Список кланов
Захват замков -

Назад +

PAGE; } diff --git a/game/f_speak.inc b/game/f_speak.inc index ce71ea2..4b60b4f 100644 --- a/game/f_speak.inc +++ b/game/f_speak.inc @@ -29,23 +29,21 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo if ($speak == 1) { // чат if ($to && isset($loc_i[$loc][$to])) { - $tt = $to; + $tt = $to; $tchar = explode("|", $loc_i[$loc][$to]["char"]); - $to = $tchar[0] . ", "; + $to = $tchar[0] . ", "; } else { $to = ""; } - $stmp = "

"; + $smtp = '

'; + $stmp .= '

'; if (!empty($to)) { - $stmp .= "
"; + $stmp .= "
"; } - $stmp .= "\n"; + $stmp .= "\n"; $stmp .= "
\n"; - $stmp .= "Сказать\n"; - $stmp .= "\n"; - $stmp .= "\n"; - $stmp .= "\n"; - $stmp .= ""; + $stmp .= ''; + $stmp .= "
"; if (!empty($tt)) { $stmp .= "
Обмен"; @@ -73,7 +71,8 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo $loc_i[$loc][$speak]["owner"] = $login . "|" . $login . "||"; msg($loc_i[$loc][$speak]["in"] . "
Хорошо, следуй за мной", $tchar[0]); } elseif (substr($owner, 0, strpos($owner, "|")) == $login) { - if (isset($loc_i[$loc][$speak]["ok"]) && + if ( + isset($loc_i[$loc][$speak]["ok"]) && substr($loc_i[$loc][$speak]["ok"], 0, strpos($loc_i[$loc][$speak]["ok"], " | ")) == $loc ) { $items = explode(" | ", $loc_i[$loc][$speak]["ok"]); @@ -103,9 +102,11 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo } } else { $tc = explode("|", $loc_i[$loc][substr($owner, 0, strpos($owner, "|"))]["char"]); - msg("Извини, " . $char[0] . ", но я сейчас следую за " . $tc[0] . ", с тобой могу пойти только если " . $tc[0] . + msg( + "Извини, " . $char[0] . ", но я сейчас следую за " . $tc[0] . ", с тобой могу пойти только если " . $tc[0] . " откажется провожать меня или я потеряю его из вида.
Понятно, пока", - $tchar[0]); + $tchar[0] + ); } } elseif ($npc_subtype == "n.o.") { // диалог с стражником замка @@ -120,7 +121,7 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo // в замке... // инфа о замке $gate = substr($loc, 0, 4) . "gate"; - $d = explode("|", $loc_tt[$gate]["d"]); + $d = explode("|", $loc_tt[$gate]["d"]); if (strpos($d[0], "*") === false) { msg("Этот замок никому не принадлежит, я не буду защищать его, пока не определится хозяин этой земли!"); } @@ -136,14 +137,14 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo msg("Вы не состоите в клане, которому принадлежит этот замок, поэтому мне нечего вам сказать. Найдите в замке барона Дитриха моего командира, стражника Лансета, он знает все о крепостях, о том как их захватывать и защищать."); } - if ( ! $id) { // основной диалог + if (!$id) { // основной диалог $stmp = "

Что прикажете, сир?"; $stmp .= "
Иди..."; $stmp .= "
Запереть ворота"; $stmp .= "
Пропустить гостя..."; $stmp .= "
Список гостей"; $stmp .= "
Статус?"; - $stmp .= "\n

\n\n\n

Куда?"; + $stmp .= "\n

\n
\n
\n

Куда?"; if (substr($loc, 3) == ".gate") { $stmp .= "\n
В тронный зал\n
В кладовую\n
Общий зал"; } else { @@ -153,7 +154,7 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo if ($id == 'new') { // список кого пропустить $stmp = ""; - $in = substr($loc, 0, 4) . "in"; + $in = substr($loc, 0, 4) . "in"; loadloc($in); if ($loc_i[$in]) { foreach (array_keys($loc_i[$in]) as $i) { @@ -174,14 +175,14 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo msg(substr($who, 2) . " и так является гостем этого замка, сир."); } $d[0] .= ":" . $who . ":"; - $loc_tt[$gate]["d"] = implode("|", $d); + $loc_tt[$gate]["d"] = implode("|", $d); $loc_tt[$gate]["save"] = 1; $stmp .= substr($who, 2) . " с этого момента является гостем этого замка и может беспрепятственно входить и выходить из него."; } if ($id == 'list') { // список гостей $stmp = "

Кого больше не считать гостем замка?"; - $xF = preg_match_all("':([^:]+):'", $d[0], $regF); + $xF = preg_match_all("':([^:]+):'", $d[0], $regF); for ($i = 0; $i < $xF; $i++) { $stmp .= "\n
" . substr($regF[1][$i], 2) . ""; @@ -191,12 +192,12 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo } } - if ($id == 'del' && ($who= Request('who'))) { // удалить гостя $who + if ($id == 'del' && ($who = Request('who'))) { // удалить гостя $who if (strpos($loc_tt[$gate]["d"], ":" . $who . ":") === false) { msg(substr($who, 2) . " не является гостем этого замка, сир."); } - $d[0] = str_replace(":" . $who . ":", "", $d[0]); - $loc_tt[$gate]["d"] = implode("|", $d); + $d[0] = str_replace(":" . $who . ":", "", $d[0]); + $loc_tt[$gate]["d"] = implode("|", $d); $loc_tt[$gate]["save"] = 1; $stmp .= $tchar[0] . " с этого момента больше не является гостем замка, если попытается проникнуть внутрь, будет немедленно атакован стражниками."; @@ -241,14 +242,14 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo $tc = 100; } manageItems($loc, $login, "", "i.money", $tc * $val, "items", "items", 1, 0, 1); - $owner[3] += (int)$val * 60 * 60 * 24; + $owner[3] += (int) $val * 60 * 60 * 24; $loc_i[$loc][$speak]["owner"] = implode("|", $owner); $stmp .= "Контракт продлен на " . $val . " дней. Клянусь защищать этот замок от любого, кто посмеет оспаривать ваши права на него, будь то человек или зверь."; } if ($id == 'move' && $to) { // идти - if ( ! isset($loc_tt[substr($loc, 0, 4) . $to])) { + if (!isset($loc_tt[substr($loc, 0, 4) . $to])) { msg("Сожалею, сир, но в вашем замке нет такого места"); } $count = 0; @@ -280,7 +281,7 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo } // проверим, нет ли врагов $arr = ["main", "gate", "tron", "sklad"]; - $tc = substr($loc, 0, 4); + $tc = substr($loc, 0, 4); if (strpos($d[0], "*") === false) { $clanc = ""; } else { @@ -296,10 +297,13 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo if (strpos($tchar[0], "*") === false) { $tclan = ""; } else { - $tclan = substr($tchar[0], strpos($tchar[0], "*") + 1, - strrpos($tchar[0], "*") - strpos($tchar[0], "*") - 1); + $tclan = substr( + $tchar[0], + strpos($tchar[0], "*") + 1, + strrpos($tchar[0], "*") - strpos($tchar[0], "*") - 1 + ); } - if ( ! $tchar[8] && $tclan != $clanc && strpos($d[0], ":" . $k . ":") === false) { + if (!$tchar[8] && $tclan != $clanc && strpos($d[0], ":" . $k . ":") === false) { $b = 1; } } @@ -317,7 +321,7 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo $d[0] = substr($d[0], 0, strpos($d[0], "#")) . substr($d[0], strrpos($d[0], "#") + 1); } $d[0] .= "{" . (time() + 60 * 60 * 10) . "}"; - $loc_tt[$gate]["d"] = implode("|", $d); + $loc_tt[$gate]["d"] = implode("|", $d); $loc_tt[$gate]["save"] = 1; addjournal($loc, $login, "Вы заперли ворота замка на ближайшие 10 часов"); } else { @@ -362,12 +366,12 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo $stmp .= "
Изменить имя"; } $stmp .= "
Нам пора расстаться"; - $stmp .= "\n

\n\n\n"; + $stmp .= "\n

\n
\n
\n"; $stmp .= "

\nЗащищай меня\n"; $stmp .= "
Не лезь в драку\n"; $stmp .= "
Атакуй...\n"; $stmp .= "
Защищай..."; - $stmp .= "\n

\n\n\n"; + $stmp .= "\n

\n
\n
\n"; $stmp .= "

\nСледуй за мной\n"; $stmp .= "
Стой здесь\n"; $stmp .= "
Следуй за..."; @@ -475,7 +479,8 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo $fchar = explode("|", $loc_i[$loc][$login]["char"]); $fcrim = $fchar[9]; $tcrim = $tc[9] || substr($who, 0, 4) == "n.c."; - if (!$fcrim && $tc[7] != $login && + if ( + !$fcrim && $tc[7] != $login && ((!$tcrim && substr($who, 0, 4) != "n.a.") || ($loc_c[1] == 1 && substr($who, 0, 4) == "n.a.")) ) { docrim($loc, $login); @@ -647,7 +652,8 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo // Может быть "прекратить атаковать при начале разговора"? $char[7] = ''; $loc_i[$loc][$login]["char"] = implode("|", $char); - }; + } + ; // разговор с торговцем if ($id == 'buy' || $id == 'sell') { @@ -655,14 +661,15 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo msg($tchar[0] . " торговать не будет"); } $user_items = $loc_i[$loc][$login]["items"]; - if ($speak == "n.Natan" && strpos($user_items, "i.q.hagen:") === false && + if ( + $speak == "n.Natan" && strpos($user_items, "i.q.hagen:") === false && strpos($user_items, "i.q.ditrih:") === false ) { msg("Прости, но я продаю палладинское оружие и броню только стражникам барона Дитриха или тем кто имеет грамоту от Лорда Хагена"); } $trader = explode("|", $dialog[$id]); - switch (empty($to) ? $id : $id . "to"){ + switch (empty($to) ? $id : $id . "to") { case 'buy': require 'f_speakbuy.inc'; break; @@ -683,7 +690,7 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo if (!isset($dialog["bank"])) { msg($tchar[0] . " не банкир"); } - switch (empty($to) ? $id : $id . "to"){ + switch (empty($to) ? $id : $id . "to") { case 'frombank': require 'f_speakfrombank.inc'; break; @@ -704,8 +711,10 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo $id = "begin"; } if (!isset($dialog[$id])) { - msg("Отсутствует тема \"$id\" в диалоге \"$speak\", сообщите разработчику игры, спасибо", - "Ошибка"); + msg( + "Отсутствует тема \"$id\" в диалоге \"$speak\", сообщите разработчику игры, спасибо", + "Ошибка" + ); } $current_dialog = explode("#", $dialog[$id]); $title = $current_dialog[0]; // может быть переназначен в "eval: " @@ -719,11 +728,11 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo if (substr($title, 0, 5) == "skill") { // диалог повышения скилла или аттрибута на 1 - $tmp = explode("|", $title); + $tmp = explode("|", $title); $skill = $tmp[1]; - $cost = $tmp[2]; - $min = $tmp[3]; - $max = $tmp[4]; + $cost = $tmp[2]; + $min = $tmp[3]; + $max = $tmp[4]; $skills = explode("|", $loc_i[$loc][$login]["skills"]); if (substr($skill, 0, 2) == "m.") { @@ -749,7 +758,7 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo } manageItems($loc, $login, "", "i.money", $cost, "items", "items", 1, -1, 1); } - if ( ! $loc_i[$loc][$login]["magic"]) { + if (!$loc_i[$loc][$login]["magic"]) { $loc_i[$loc][$login]["magic"] = $skill . ":1"; } else { $loc_i[$loc][$login]["magic"] .= "|" . $skill . ":1"; @@ -769,7 +778,7 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo } manageItems($loc, $login, "", "i.money", $cost, "items", "items", 1, -1, 1); } - if ( ! $loc_i[$loc][$login]["priem"]) { + if (!$loc_i[$loc][$login]["priem"]) { $loc_i[$loc][$login]["priem"] = $skill . ":1"; } else { $loc_i[$loc][$login]["priem"] .= "|" . $skill . ":1"; @@ -785,75 +794,75 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo } $arr_skills = [ - "str" => 0, - "dex" => 1, - "int" => 2, - "meditation" => 5, - "steal" => 6, + "str" => 0, + "dex" => 1, + "int" => 2, + "meditation" => 5, + "steal" => 6, "animaltaming" => 7, - "hand" => 8, - "coldweapon" => 9, - "ranged" => 10, - "parring" => 11, - "uklon" => 12, - "magic" => 13, + "hand" => 8, + "coldweapon" => 9, + "ranged" => 10, + "parring" => 11, + "uklon" => 12, + "magic" => 13, "magic_resist" => 14, - "magic_uklon" => 15, + "magic_uklon" => 15, "regeneration" => 16, - "hiding" => 17, - "look" => 18, - "steallook" => 19, - "animallore" => 20, - "spirit" => 21, - "healing" => 22, - "alchemy" => 23, - "mine" => 24, - "smith" => 25, - "lumb" => 26, - "bow" => 27, - "stone" => 28, - "fish" => 29, - "food" => 30, - "necro" => 31, - "currier" => 32 + "hiding" => 17, + "look" => 18, + "steallook" => 19, + "animallore" => 20, + "spirit" => 21, + "healing" => 22, + "alchemy" => 23, + "mine" => 24, + "smith" => 25, + "lumb" => 26, + "bow" => 27, + "stone" => 28, + "fish" => 29, + "food" => 30, + "necro" => 31, + "currier" => 32 ]; $arr_title = [ - "str" => "Сила", - "dex" => "Ловкость", - "int" => "Интеллект", - "meditation" => "Медитация", - "steal" => "Кража", + "str" => "Сила", + "dex" => "Ловкость", + "int" => "Интеллект", + "meditation" => "Медитация", + "steal" => "Кража", "animaltaming" => "Прир.животных", - "hand" => "Рукопашная", - "coldweapon" => "Холодн.оружие", - "ranged" => "Стрельба", - "parring" => "Парирование", - "uklon" => "Уклон", - "magic" => "Магия", + "hand" => "Рукопашная", + "coldweapon" => "Холодн.оружие", + "ranged" => "Стрельба", + "parring" => "Парирование", + "uklon" => "Уклон", + "magic" => "Магия", "magic_resist" => "Сопр.магии", - "magic_uklon" => "Уклон от магии", + "magic_uklon" => "Уклон от магии", "regeneration" => "Регенерация", - "hiding" => "Скрытность", - "look" => "Осторожность", - "steallook" => "Подглядывание", - "animallore" => "Изуч.животных", - "spirit" => "Спиритизм", - "healing" => "Лечение", - "alchemy" => "Алхимия", - "mine" => "Рудокоп", - "smith" => "Кузнец", - "lumb" => "Лесоруб", - "bow" => "Плотник", - "stone" => "Ювелир", - "fish" => "Рыболов", - "food" => "Повар", - "necro" => "Некромант", - "currier" => "друид", + "hiding" => "Скрытность", + "look" => "Осторожность", + "steallook" => "Подглядывание", + "animallore" => "Изуч.животных", + "spirit" => "Спиритизм", + "healing" => "Лечение", + "alchemy" => "Алхимия", + "mine" => "Рудокоп", + "smith" => "Кузнец", + "lumb" => "Лесоруб", + "bow" => "Плотник", + "stone" => "Ювелир", + "fish" => "Рыболов", + "food" => "Повар", + "necro" => "Некромант", + "currier" => "друид", ]; // проверки - if ( ! isset($arr_skills[$skill])) { + if (!isset($arr_skills[$skill])) { msg("

Несуществующий скилл: $skill в диалоге с $speak, сообщите разработчику игры.", "Ошибка"); } if ($skills[4] < 1) { @@ -882,7 +891,7 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo if ($skilldown && $skills[$arr_skills[$skilldown]] <= 1) { msg("

Невозможно понизить, т.к. аттрибут уже на минимальном уровне 1, выберите другой", $tchar[0]); } - if ( ! $skilldown) { + if (!$skilldown) { if ($skills[0] + $skills[1] + $skills[2] >= $g_attr) { $stmp = "

Превышен предел суммы очков (" . $g_attr . ") для аттрибутов, выберите что уменьшить: "; if ($skill != 'str') { @@ -916,10 +925,10 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo $sum += $skills[$arr_skills[$i]]; } } - if ( ! $skilldown) { + if (!$skilldown) { if ($sum >= $g_skills) { $stmp = "

Превышен предел суммы очков (" . $g_skills . ") для навыков, выберите что уменьшить: "; - if ( ! $start) { + if (!$start) { $start = 0; } $keys = array_keys($arr_skills); @@ -934,7 +943,7 @@ if ($speak == 1 || (($npc_type == 'u.' || $npc_type == 'n.') && isset($loc_i[$lo $stmp .= "\n
^ "; } if ($listEnd < count($keys)) { - if ( ! $start) { + if (!$start) { $stmp .= "\n
"; } $stmp .= "+ (" . diff --git a/game/f_speakbuy.inc b/game/f_speakbuy.inc index 5c57886..29fb19c 100644 --- a/game/f_speakbuy.inc +++ b/game/f_speakbuy.inc @@ -27,18 +27,20 @@ if (time() > $tchar[11]) { } else { $tmp = rand($regF[3][$i], $regF[4][$i]); } - $loc_i[$loc][$speak]["bank"] = str_replace($regF[1][$i], + $loc_i[$loc][$speak]["bank"] = str_replace( + $regF[1][$i], $regF[2][$i] . ":" . $regF[3][$i] . ":" . $regF[4][$i] . "=" . $regF[5][$i] . ":" . $tmp, - $loc_i[$loc][$speak]["bank"]); + $loc_i[$loc][$speak]["bank"] + ); } - $tchar[11] = time() + round($trader[1] * (rand(70, 130) / 100)); + $tchar[11] = time() + round($trader[1] * (rand(70, 130) / 100)); $loc_i[$loc][$speak]["char"] = implode("|", $tchar); } $stmp = ""; -$xF = preg_match_all("'=([^:]+):([^0]\d*)'", $loc_i[$loc][$speak]["bank"], $regF); +$xF = preg_match_all("'=([^:]+):([^0]\d*)'", $loc_i[$loc][$speak]["bank"], $regF); -if ( ! $start) { +if (!$start) { $start = 0; } $listEnd = $start + ViewOptions::getInstance()->getMaxListSize(); @@ -54,7 +56,7 @@ for ($i = $start; $i < $listEnd && $i < $xF; $i++) { $tmp .= " (" . $regF[2][$i] . ")"; } $tmp .= " за " . round($item[1] * $trader[0]) . " монет"; - $stmp .= "\n
$tmp"; + $stmp .= "\n" . '
' . $tmp . ''; } if ($stmp) { $stmp = "

Я продаю:" . $stmp; @@ -65,13 +67,13 @@ if ($start) { $stmp .= "\n
^ "; } if ($listEnd < $xF - 1) { - if ( ! $start) { + if (!$start) { $stmp .= "\n
"; } $stmp .= "+ (" . - ($xF - $listEnd) . ")"; + ($xF - $listEnd) . ")"; } -$stmp .= "\n

\n\n\n"; -$stmp .= "

\nКупить\n"; -$stmp .= "
Инфо"; +$stmp .= "\n

\n
\n
\n"; +$stmp .= "

\nКупить\n"; +$stmp .= "
Инфо"; msg($stmp, $tchar[0]); \ No newline at end of file diff --git a/game/f_speakfrombank.inc b/game/f_speakfrombank.inc index b6ad39b..0d6e260 100644 --- a/game/f_speakfrombank.inc +++ b/game/f_speakfrombank.inc @@ -44,9 +44,9 @@ if ($up) { array_push($items, $items[$i]); array_shift($items); } else { - $tc = $items[$i - 1]; + $tc = $items[$i - 1]; $items[$i - 1] = $items[$i]; - $items[$i] = $tc; + $items[$i] = $tc; } $loc_i[$loc][$login]["bank"] = implode("|", $items); msg("Предмет передвинут вверх."); @@ -65,9 +65,9 @@ if ($down) { array_unshift($items, $items[$i]); array_pop($items); } else { - $tc = $items[$i + 1]; + $tc = $items[$i + 1]; $items[$i + 1] = $items[$i]; - $items[$i] = $tc; + $items[$i] = $tc; } $loc_i[$loc][$login]["bank"] = implode("|", $items); @@ -77,7 +77,7 @@ if ($down) { #start список $stmp = ""; -if ( ! $start) { +if (!$start) { $start = 0; } $keys = array_keys($items); @@ -93,7 +93,7 @@ for ($i = $start; $i < $listEnd && $i < count($keys); $i++) { if ($k[1] > 1) { $item .= " (" . $k[1] . ")"; } - $stmp .= "\n
$item"; + $stmp .= "\n" . '
' . $item . ''; } } #end: список @@ -106,14 +106,14 @@ if ($start) { $stmp .= "\n
^ "; } if ($listEnd < count($keys)) { - if ( ! $start) { + if (!$start) { $stmp .= "\n
"; } $stmp .= "+ (" . - (count($keys) - $listEnd) . ")"; + (count($keys) - $listEnd) . ")"; } -$stmp .= "\n

\n\n\n"; -$stmp .= "

Забрать из банка\n"; -$stmp .= "
Инфо\n"; -$stmp .= "
[Вверх | Вниз]"; +$stmp .= "\n

\n
\n
\n"; +$stmp .= "

Забрать из банка\n"; +$stmp .= "
Инфо\n"; +$stmp .= "
[Вверх | Вниз]"; msg($stmp, $tchar[0]); diff --git a/game/f_speaksell.inc b/game/f_speaksell.inc index c442c46..4d0797b 100644 --- a/game/f_speaksell.inc +++ b/game/f_speaksell.inc @@ -38,16 +38,16 @@ if ($filter) { break; } } - if ( ! $b) { + if (!$b) { unset($items[$i]); } } $items = implode("|", $items); } $items = preg_replace('/\|?i\.money:(\d+)/', "", $items); -$stmp = ""; -$xF = preg_match_all("'([^|]+):(\d+)'", $items, $regF); -if ( ! $start) { +$stmp = ""; +$xF = preg_match_all("'([^|]+):(\d+)'", $items, $regF); +if (!$start) { $start = 0; } @@ -65,7 +65,7 @@ for ($i = $start; $i < $listEnd && $i < $xF; $i++) { $tmp .= " (" . $itemCount . ")"; } $tmp .= " за " . round($item[1] * $trader[0]) . " монет"; - $stmp .= "\n
$tmp"; + $stmp .= "\n" . '
' . $tmp . ''; } } @@ -78,13 +78,13 @@ if ($start) { $stmp .= "\n
^ "; } if ($listEnd < $xF - 1) { - if ( ! $start) { + if (!$start) { $stmp .= "\n
"; } $stmp .= "+ (" . - ($xF - $listEnd) . ")"; + ($xF - $listEnd) . ")"; } -$stmp .= "\n

\n\n\n"; -$stmp .= "

\nПродать\n"; -$stmp .= "
Инфо"; +$stmp .= "\n

\n
\n
\n"; +$stmp .= "

\nПродать\n"; +$stmp .= "
Инфо"; msg($stmp, $tchar[0]); diff --git a/game/f_speaktobank.inc b/game/f_speaktobank.inc index 5c1143f..6bc0607 100644 --- a/game/f_speaktobank.inc +++ b/game/f_speaktobank.inc @@ -24,11 +24,11 @@ if ($speak == "n.p.bankir" && $char[14] != "p") { // список $items = explode("|", $loc_i[$loc][$login]["items"]); -if ( ! $items) { +if (!$items) { msg("У вас нет ни одного предмета", $tchar[0]); } $stmp = "

Выберите предмет:"; -if ( ! $start) { +if (!$start) { $start = 0; } $keys = array_keys($items); @@ -47,19 +47,18 @@ for ($i = $start; $i < $listEnd && $i < count($keys); $i++) { if (strpos($loc_i[$loc][$login]["equip"], $k[0]) !== false) { $item .= " [одето]"; } - $stmp .= "\n
" . $item . ""; + $stmp .= "\n" . '
' . $item . ''; } } if ($start) { $stmp .= "\n
^ "; } if ($listEnd < count($keys)) { - if ( ! $start) { + if (!$start) { $stmp .= "\n
"; } $stmp .= "+ (" . - (count($keys) - $listEnd) . ")"; + (count($keys) - $listEnd) . ")"; } -$stmp .= "\n

\n\n\n

\nПоложить в банк\n
Инфо"; +$stmp .= "\n

\n
\n
\n

\nПоложить в банк\n
Инфо"; msg($stmp, $tchar[0]); diff --git a/game/f_takediednoid.inc b/game/f_takediednoid.inc index 759cc49..69563e7 100644 --- a/game/f_takediednoid.inc +++ b/game/f_takediednoid.inc @@ -32,18 +32,19 @@ if ($died[3]) { } if ($char[13]) { $wife = substr($take, 6, strrpos($take, ".") - 6) == - substr($char[13], 0, strlen(substr($take, 6, strrpos($take, ".") - 6))); + substr($char[13], 0, strlen(substr($take, 6, strrpos($take, ".") - 6))); } else { $wife = 0; } - if ( ! $died[1] && substr($take, 0, strlen("i.s.d." . $login)) != "i.s.d." . $login && - ( ! $clan1 || ($clan1 && $clan1 != $clan)) && ! $wife && substr($take, 0, 11) != "i.s.d.u.qv." + if ( + !$died[1] && substr($take, 0, strlen("i.s.d." . $login)) != "i.s.d." . $login && + (!$clan1 || ($clan1 && $clan1 != $clan)) && !$wife && substr($take, 0, 11) != "i.s.d.u.qv." ) { $stmp = "

Брать отсюда предметы будет преступлением!"; } else { $stmp = "

Предметы:"; } - if ( ! $start) { + if (!$start) { $start = 0; } $keys = array_keys($items); @@ -59,21 +60,20 @@ if ($died[3]) { if ($k[1] > 1) { $item .= " (" . $k[1] . ")"; } - $stmp .= "\n
" . $item . ""; + $stmp .= "\n" . '
' . $item . ''; } } if ($start) { $stmp .= "\n
^ "; } if ($listEnd < count($keys) - 1) { - if ( ! $start) { + if (!$start) { $stmp .= "\n
"; } $stmp .= "+ (" . - (count($keys) - $listEnd) . ")"; + (count($keys) - $listEnd) . ")"; } - $stmp .= "\n

\n\n\n

\nВзять\n
Взять все\n
Инфо"; + $stmp .= "\n

\n
\n
\n

\nВзять\n
Взять все\n
Инфо"; msg($stmp, $died[0]); } } else { diff --git a/game/f_trade.inc b/game/f_trade.inc index 38399fd..81e7084 100644 --- a/game/f_trade.inc +++ b/game/f_trade.inc @@ -232,7 +232,7 @@ if (isset($loc_i[$loc][$login]["trade"])) { $stmp .= "
" . $tchar . " пока не согласен"; } $stmp .= "
Я согласен
Добавить предмет
Обновить
Сказать
Отмена

Помощь"; - $stmp .= "\n

\n\n\n

\n
+ $stmp .= "\n

\n
\n
\n

\n
Сказать diff --git a/game/functions.js b/game/functions.js new file mode 100644 index 0000000..6fed7ed --- /dev/null +++ b/game/functions.js @@ -0,0 +1,39 @@ +$(document).ready(function () { + // Select all buttons with type="options" + $('button[type="options"], button[type="accept"]').each(function () { + var label = $(this).attr('label'); // Extract the label attribute + // Assuming the tag is supposed to be somewhere related but not inside the button + // For demonstration, we're selecting an tag following this button + $(this).find('a').first().html(label); // Set the label as the innerHTML of the tag + $(this).children('prev').first().html(label); + }); + $('#menu').toggleClass('d-none'); + $('#char').toggleClass('d-none'); + $('a[data-content="template"]').each(function () { + let to = $(this).attr('label'); + let content = $('#menu').html().replaceAll('$(to)', to); + $(this).attr('data-html', 'true'); + $(this).attr('data-content', content); + }); + $('a[data-content="char"]').each(function () { + let to = $(this).attr('label'); + let content = $('#char').html().replaceAll('$(to)', to); + $(this).attr('data-html', 'true'); + $(this).attr('data-content', content); + }); + $('.popover-dismiss').popover({ + trigger: 'focus' + }); + $('[data-toggle="popover"]').popover(); + $('#login').click(function () { + nn = $('input[name="nn"]').val(); + pass = $('input[name="pass"]').val(); + href = $(this).attr('href').replaceAll('$(nn)', nn).replaceAll('$(pass)', pass); + window.location.href = href; + }); + $('#reg').click(function () { + nn = $('input[name="nn"]').val(); + href = $(this).attr('href').replaceAll('$(nn)', nn); + window.location.href = href; + }); +}); \ No newline at end of file diff --git a/game/index.php b/game/index.php index dfd9aea..2859437 100644 --- a/game/index.php +++ b/game/index.php @@ -26,10 +26,12 @@ require_once('config.php'); // настройки игры require_once('game_function.php'); // игровые функции +const DEBUG = true; + $QUERY_STRING = get_value($_SERVER, 'QUERY_STRING'); $g_query_string = $QUERY_STRING; -$tmp = urldecode($QUERY_STRING); +$tmp = urldecode($QUERY_STRING); /** @var array $loc_i предметы, НПС и игроки в загруженных локациях */ $loc_i = []; @@ -40,52 +42,53 @@ /** @var array $game Массив с состоянием игры */ $game = []; -$gm = Request('gm'); +$gm = Request('gm'); // ИД пользователя $sid = Request('sid'); /** @var string $site */ -$site = Request('site'); +$site = Request('site'); $login = Request('login'); -$p = Request('p'); +$p = Request('p'); $cnick = Request('cnick'); -$go = Request('go'); -$gal = Request('gal'); +$go = Request('go'); +$gal = Request('gal'); $ctele = Request('ctele'); $stele = Request('stele'); // "Атаковать" -$ca = Request('ca'); +$ca = Request('ca'); // "Сохранить" -$ce = Request('ce'); +$ce = Request('ce'); // "Инфо" -$ci = Request('ci'); +$ci = Request('ci'); // Макросы -$cm = Request('cm'); +$cm = Request('cm'); // Чат -$cs = Request('cs'); +$cs = Request('cs'); /* @var $cl string "command list"(?) == i|p|m */ -$cl = Request('cl'); -$id = Request('id'); +$cl = Request('cl'); +$id = Request('id'); // функции админки -$adm = Request('adm'); -$use = Request('use'); -$to = Request('to'); -$list = Request('list'); +$adm = Request('adm'); +$use = Request('use'); +$to = Request('to'); +$list = Request('list'); $speak = Request('speak'); $start = Request('start'); -$map = Request('map'); -$take = Request('take'); -$look = Request('look'); +$map = Request('map'); +$take = Request('take'); +$look = Request('look'); $trade = Request('trade'); -$msg = Request('msg'); -$say = Request('say'); -$drop = Request('drop'); -$pass = Request('pass'); -$nn = Request('nn'); -$num = Request('num'); +$msg = Request('msg'); +$say = Request('say'); +$drop = Request('drop'); +$pass = Request('pass'); +$nn = Request('nn'); +$num = Request('num'); // Если строка запроса пуста -if (empty($tmp) || // или не заданы логин и страница перехода +if ( + empty($tmp) || // или не заданы логин и страница перехода (empty($sid) && empty($site)) ) { // установить страницу перехода на форму логина @@ -99,9 +102,9 @@ // добавить префикс $sid = "u." . $sid; } - $sid = explode(".", $sid); + $sid = explode(".", $sid); $sid[1] = strtolower($sid[1]); - $login = "u." . $sid[1]; + $login = "u." . $sid[1]; if (empty($p)) { $p = $sid[2]; } @@ -119,7 +122,7 @@ if (file_exists("data/game.dat")) { // загрузить состояние $file_save = fopen("data/game.dat", "r+"); - if ( false === $file_save) { + if (false === $file_save) { msg("Ошибка загрузки game.dat"); } if (flock($file_save, LOCK_EX)) { @@ -127,7 +130,7 @@ $game = unserialize( fread($file_save, 65535) ); - if (! is_array($game)) { + if (!is_array($game)) { $game = []; } } else { @@ -154,35 +157,35 @@ msg($game["msg"]); } -if ( ! empty($site)) { // если задана страница перехода +if (!empty($site)) { // если задана страница перехода /** @var string[] $pages */ $pages = [ // форма входа. Так же служит для задания логина нового пользователя - 'main' => 'f_site_main.inc', + 'main' => 'f_site_main.inc', // ссылки на статистику - 'stat' => 'f_site_stat.inc', + 'stat' => 'f_site_stat.inc', // инфо о флаге - 'flag' => 'f_site_flag.inc', + 'flag' => 'f_site_flag.inc', // замки и их владельцы - 'castle' => 'f_site_castle.inc', + 'castle' => 'f_site_castle.inc', // кланы и их участники - 'clans' => 'f_site_clans.inc', + 'clans' => 'f_site_clans.inc', // вход в игру // TODO: упростить механизм входа - 'connect' => 'f_site_connect.inc', + 'connect' => 'f_site_connect.inc', 'connect2' => 'f_site_connect2.inc', // информация // ЧаВо - 'faq' => 'f_site_faq.inc', + 'faq' => 'f_site_faq.inc', // новости - 'news' => 'f_site_news.inc', + 'news' => 'f_site_news.inc', // список игроков онлайн - 'online' => 'f_site_online.inc', + 'online' => 'f_site_online.inc', // регистрация в игре // форма ввода информации о новом игроке - 'gamereg' => 'f_site_gamereg.inc', + 'gamereg' => 'f_site_gamereg.inc', // проверяет данные и записывает их в БД - 'reg2' => 'f_site_reg2.inc' + 'reg2' => 'f_site_reg2.inc' ]; if (array_key_exists($site, $pages)) { if (file_exists($pages[$site])) { @@ -199,14 +202,14 @@ include_once "f_online.inc"; } // пользователь оффлайн -if ( ! file_exists("online/" . $login)) { +if (!file_exists("online/" . $login)) { $f_c = 1; include_once "f_site_connect2.inc"; } $tmp = file("online/" . $login); $loc = trim($tmp[0]); loadloc($loc); -if ( ! isset($loc_i[$loc][$login])) { +if (!isset($loc_i[$loc][$login])) { @unlink("online/" . $login); msg("Нет данных"); } @@ -245,30 +248,32 @@ msg("Ангел сверхестественной силой не дает вам двигаться дальше"); } if ($game["fid"] == $login) { - if (in_array($go, [ + if ( + in_array($go, [ "x393x1167", "x33x1252", "x435x1167", "x287x1252" - ])) { + ]) + ) { msg("С флагом на борт запрещено!"); } } $loc_c = explode("|", $loc_tt[$loc]["d"]); - $b = array_search($go, $loc_c); + $b = array_search($go, $loc_c); if ($b) { $tgo = $loc_c[$b - 1]; loadloc($go); - $b = 0; - $char = explode("|", $loc_i[$loc][$login]["char"]); + $b = 0; + $char = explode("|", $loc_i[$loc][$login]["char"]); $skills = explode("|", $loc_i[$loc][$login]["skills"]); - $hide = (rand(1, 100) <= $skills[17] * 8) ? 1 : 0; + $hide = (rand(1, 100) <= $skills[17] * 8) ? 1 : 0; if ($gal && $char[12]) { $loc_c = explode("|", $loc_tt[$go]["d"]); - $b = array_search($tgo, $loc_c); + $b = array_search($tgo, $loc_c); } - if ( ! $b) { + if (!$b) { $tgo = ""; } manageNPC($login, $loc, $go, $tgo, $hide); @@ -277,15 +282,17 @@ } } } + if ($game["fid"] == $login) { $game["floc"] = $loc; } -if ( ! $game["floc"] || isset($loc_tt[$game["floc"]]) && ! isset($loc_i[$game["floc"]]["i.flag"]) && - ! isset($loc_i[$game["floc"]][$game["fid"]]) +if ( + !$game["floc"] || isset($loc_tt[$game["floc"]]) && !isset($loc_i[$game["floc"]]["i.flag"]) && + !isset($loc_i[$game["floc"]][$game["fid"]]) ) { $loc_i[$loc]["i.flag"] = "флаг лидерства|1|0"; - $game["floc"] = $loc; - $game["fid"] = ""; + $game["floc"] = $loc; + $game["fid"] = ""; } if ($ctele) { include_once "f_castle.inc"; @@ -306,7 +313,7 @@ doai($loc_c[$i + 1]); } -if ( ! isset($loc_i[$loc][$login]) || ! $login) { +if (!isset($loc_i[$loc][$login]) || !$login) { @unlink("online/" . $login); msg("Нет данных"); } @@ -322,10 +329,10 @@ // задан номер - выполнить if ($cm > 0 && $cm < 9) { $cm--; - $m = getMacroList($loc_i[$loc][$login]); - $m = explode("|", $m[$cm]); + $m = getMacroList($loc_i[$loc][$login]); + $m = explode("|", $m[$cm]); $ml = explode("|", $loc_i[$loc][$login]["macrol"]); - + // TODO: избавиться от eval if ($m[0] == "last" && $ml[0]) { eval('$' . $ml[0] . "=\"" . $ml[1] . "\";"); @@ -374,8 +381,8 @@ // атака if ($ca) { $loc_i[$loc][$login]["macrol"] = "ca|$ca||"; - $char[7] = $ca; - $loc_i[$loc][$login]["char"] = implode("|", $char); + $char[7] = $ca; + $loc_i[$loc][$login]["char"] = implode("|", $char); attack($loc, $login, $ca); $char = explode("|", $loc_i[$loc][$login]["char"]); } @@ -402,20 +409,20 @@ case "i.": { include_once "f_useitem.inc"; } - break; + break; case "m.": { include_once "f_usemagic.inc"; } - break; + break; case "p.": { include_once "f_usepriem.inc"; } - break; + break; default: if (substr($use, 0, 6) == "skill.") { include_once "f_useskill.inc"; } - break; + break; } $char = explode("|", $loc_i[$loc][$login]["char"]); } @@ -442,13 +449,13 @@ switch ($cl) { case "i": $cl = "inv"; - break; + break; case "m": $cl = "magic"; - break; + break; case "p": $cl = "priem"; - break; + break; } // управление списками предметов, умений и тд if ($list || $list = $cl) { @@ -458,13 +465,15 @@ } // показать карту и завершить работу скрипта if (false !== $map) { - msg(MapPage::buildPage( - $loc, - $game, - ViewOptions::getInstance()->getMapMode(), - $PHP_SELF, - $sid - )); + msg( + MapPage::buildPage( + $loc, + $game, + ViewOptions::getInstance()->getMapMode(), + $PHP_SELF, + $sid + ) + ); } // MAIN PAGE @@ -507,7 +516,7 @@ } // SOUNDS -if ( ! ViewOptions::getInstance()->getSoundsMode()) { +if (!ViewOptions::getInstance()->getSoundsMode()) { $st = ""; for ($i = 2; $i < count($loc_c); $i += 2) { if ($loc_c[$i + 1] != $loc) { @@ -530,7 +539,7 @@ // OBJECTS $ti = explode("x", $loc); -if ( ! $start) { +if (!$start) { $start = 0; } $listEnd = $start + ViewOptions::getInstance()->getMaxListSize(); @@ -541,7 +550,7 @@ // предметы if (substr($keys[$i], 0, 2) == "i.") { $tmp = explode("|", $loc_i[$loc][$keys[$i]]); - $k = $tmp[0]; + $k = $tmp[0]; // есть самоцветы?(уточнить) if (strpos($keys[$i], "..") !== false) { $k .= " *"; @@ -554,7 +563,7 @@ // НПС и игроки if (substr($keys[$i], 0, 2) == "n." || substr($keys[$i], 0, 2) == "u.") { $tmp = explode("|", $loc_i[$loc][$keys[$i]]["char"]); - $k = $tmp[0]; + $k = $tmp[0]; // на коне if (substr($keys[$i], 0, 2) == "u." && $tmp[12]) { $k .= " (всадник)"; @@ -587,14 +596,14 @@ // есть цель атаки и цель находится в текущей локе // является НПС или лока не "безопасного" типа if ( - $tmp[7] &&isset($loc_i[$loc][$tmp[7]]) && + $tmp[7] && isset($loc_i[$loc][$tmp[7]]) && ( substr($keys[$i], 0, 2) == "n." || (substr($keys[$i], 0, 2) == "u." && $loc_c[1] != 1) ) ) { $tmp1 = explode("|", $loc_i[$loc][$tmp[7]]["char"]); - if (substr($tmp[7], 0, 2) == "n." || (substr($tmp[7], 0, 2) == "u." && ! $tmp1[8])) { + if (substr($tmp[7], 0, 2) == "n." || (substr($tmp[7], 0, 2) == "u." && !$tmp1[8])) { $st .= " атакует "; if ($tmp[7] == $login) { $st .= "вас!"; @@ -608,9 +617,7 @@ } } // добавить кнопку вызова "контекстного меню" с установкой переменной $to - $stmp .= '
' . $k . ''; - $stmp .= ''; - $stmp .= ''; + $stmp .= '
' . $k . ''; } } #start: "пагинация" списка объектов @@ -619,12 +626,12 @@ $stmp .= "
^ "; } if ($listEnd < count($keys)) { - if ( ! $start) { + if (!$start) { $stmp .= "
"; } // к следующей части списка $stmp .= "+ (" . (count($keys) - $listEnd) . - ")"; + ")"; } #end: "пагинация" списка объектов @@ -632,11 +639,11 @@ // Переходы к соседним локациям for ($i = 2; $i < count($loc_c); $i += 2) { - $stmp .= "
" . $loc_c[$i] . ""; + $stmp .= "
" . $loc_c[$i] . ""; // TODO: странное условие, нужно разобраться if ($char[12] && strpos($loc_tt[$loc_c[$i + 1]]["d"], $loc_c[$i] . "|") !== false) { // галопом на лошади - $stmp .= "*"; + $stmp .= "*"; } if (ViewOptions::getInstance()->getSoundsMode() && count($loc_i[$loc_c[$i + 1]]) > 0) { // выводим признак наличия персов/НПС в локе @@ -649,17 +656,17 @@ } } -$stmp .= "
обновить"; +$stmp .= "
обновить"; // Добавить ссылку на описание локи if (file_exists("loc_f/" . $loc)) { // переход по ссылке устанавливает ViewOptions::setDescEnabled(true)(смотри в f_look.inc) // что используется в функции msg для добавления описания локации - $stmp .= "
Инфo"; + $stmp .= "
Инфo"; } if ($game["fid"] == $login && $game["floc"] == $loc) { - $stmp .= "
Бросить флаг"; + $stmp .= "
Бросить флаг"; } // переход в админку и воскрешение if ($login == $g_admin || ($gm_id && $gm == $gm_id)) { @@ -667,27 +674,27 @@ } // MENU -$stmp .= "

"; -$stmp .= "Говорить/Взять
"; -$stmp .= "Атаковать"; -$b = "
"; +$stmp .= "

"; +$stmp .= "Говорить/Взять
"; +$stmp .= "Атаковать"; +$b = "
"; // кнопки быстрого доступа к умениям и предметам $ts = ["", "", "m", "магия", "i", "предмет", "p", "прием"]; $userMenu = strval(ViewOptions::getInstance()->getUserMenu()); for ($i = 0; $i < strlen($userMenu); $i += 2) { - if ($ts[$userMenu{$i} * 2]) { + if ($ts[$userMenu { $i} * 2]) { // просмотр списка и управление порядком - $stmp .= $b . "" . - $ts[$userMenu{$i} * 2 + 1] . ""; + $stmp .= $b . "" . + $ts[$userMenu { $i} * 2 + 1] . ""; $b = ", "; - for ($j = 1; $j <= $userMenu{$i + 1}; $j++) { + for ($j = 1; $j <= $userMenu { $i + 1}; $j++) { // кнопка доступа к элементу с номером $j - $stmp .= "" . $j . - ""; + $stmp .= "" . $j . + ""; } } } -$stmp .= "
Инфo"; // "осмотреть" выбранный объект +$stmp .= "
Инфo"; // "осмотреть" выбранный объект // FIXME: похоже на костыль для захваченных замков // удалить служебную информацию из названия diff --git a/game/m.php b/game/m.php index 7390455..69d011e 100644 --- a/game/m.php +++ b/game/m.php @@ -30,16 +30,20 @@ function msg_m($page) header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-cache, no-store, must-revalidate, max-age=0"); header("Pragma: no-cache"); - header("Content-type: text/vnd.wap.wml;charset=utf-8"); + header("Content-type: text/html;charset=utf-8"); echo << - - - + + + + + + +

$page

- - +
+ XML; exit(0); } diff --git a/game/plugin/m.qv.inc b/game/plugin/m.qv.inc index 32e9c91..aca4fdb 100644 --- a/game/plugin/m.qv.inc +++ b/game/plugin/m.qv.inc @@ -29,7 +29,7 @@ * @global num */ -if ( ! $do) { +if (!$do) { $tc = explode("|", $loc_i[$loc][$login]["char"]); $tw = explode("|", $loc_i[$loc][$login]["war"]); @@ -41,7 +41,7 @@ if ( ! $do) { 5. Предмет
6. Воскреснуть -

+


Призвать(id_name_weapon:count:follow)
[Список id] @@ -51,14 +51,14 @@ if ( ! $do) {

Сделать NPC мирным (диалог при найме | при отказе | в локации, куда надо отвести | id локации | отдать предметы: i.money:2000|i.w.s.short:1 | не разговаривать, если нет предмета | id предмета) :
Обязательны только диалоги при найме и отказе (учтите, с обеих сторон от | должны быть пробелы). -

+

Имя: Описание:
@@ -73,14 +73,14 @@ if ( ! $do) {
Сопр.магии: %
Отправить -

+

\n

Отправить -

+


Teleport(loc или id:loc)
Портал(loc)

@@ -93,11 +93,13 @@ if ( ! $do) { Ансалон
Остров центр XML -, $loc); + , + $loc + ); } if ($do == "say") { - if ( ! $text) { + if (!$text) { msg("Нет текста для отправки"); } if ($translit) { @@ -105,13 +107,13 @@ if ($do == "say") { $text = trans($text); } $text = tsrus($text); - $tl = []; - $dh = opendir("online"); + $tl = []; + $dh = opendir("online"); while (($fname = readdir($dh)) !== false) { if ($fname != "." && $fname != ".." && $fname != "1.htaccess" && $fname != ".htaccess") { $tmp = file("online/" . $fname); $tmp = trim($tmp[0]); - if ( ! isset($tl[$tmp])) { + if (!isset($tl[$tmp])) { $tl[$tmp] = "1"; loadloc($tmp); addjournal($tmp, "all", "Всем внимание: " . $text); @@ -124,10 +126,10 @@ if ($do == "say") { if ($do == 'tele') { if (strpos($to, ":") !== false) { $to = explode(":", $to); - if ( ! isset($loc_i[$loc][$to[0]])) { + if (!isset($loc_i[$loc][$to[0]])) { msg("Рядом с вами нет существ с id " . $to[0] . ", кот. можно телепортировать"); } - if ( ! file_exists("loc_i/" . $to[1])) { + if (!file_exists("loc_i/" . $to[1])) { msg("Локации с id " . $to[1] . " не существует"); } if (substr($to[0], 0, 2) != "n.") { @@ -150,7 +152,7 @@ if ($do == 'tele') { } if ($do == 'portal') { - if ( ! file_exists("loc_i/" . $to)) { + if (!file_exists("loc_i/" . $to)) { msg("Локации с id $to не существует"); } if ($to == "x1087x543" || $to == "x1080x539" || $to == "x1087x528" || $to == "x1080x532") { @@ -161,13 +163,13 @@ if ($do == 'portal') { } if ($do == "set") { - if ( ! $name) { + if (!$name) { msg("Нет имени"); } $tc = explode("|", $loc_i[$loc][$login]["char"]); if ($translit) { include __DIR__ . DIRECTORY_SEPARATOR . "../f_translit.inc"; - $name = trans($name); + $name = trans($name); $sweap = trans($sweap); $sdesc = trans($sdesc); } @@ -176,22 +178,22 @@ if ($do == "set") { } else { unset($loc_i[$loc][$login]["qvi"]); } - $tc[0] = tsrus($name); - $tc[1] = $slife; - $tc[2] = $slife; - $tc[3] = $smana; - $tc[4] = $smana; + $tc[0] = tsrus($name); + $tc[1] = $slife; + $tc[2] = $slife; + $tc[3] = $smana; + $tc[4] = $smana; $loc_i[$loc][$login]["char"] = implode("|", $tc); - $tc = explode("|", $loc_i[$loc][$login]["war"]); - $tc[0] = $shit; - $tc[1] = $sdmin; - $tc[2] = $sdmax; - $tc[3] = $sspeed; - $tc[5] = $sarm; - $tc[10] = $sres; - $tc[11] = $sres; - $tc[12] = tsrus($sweap); + $tc = explode("|", $loc_i[$loc][$login]["war"]); + $tc[0] = $shit; + $tc[1] = $sdmin; + $tc[2] = $sdmax; + $tc[3] = $sspeed; + $tc[5] = $sarm; + $tc[10] = $sres; + $tc[11] = $sres; + $tc[12] = tsrus($sweap); $loc_i[$loc][$login]["war"] = implode("|", $tc); //@mail("romka8@list.ru", "qv set " . $name . ": " . $loc_i[$loc][$login]["war"], date("d/m Y H:i", time())); } @@ -200,9 +202,9 @@ if ($do == "sum") { if (substr($tsum, 0, 4) != "n.c." && substr($tsum, 0, 4) != "n.a.") { msg("Призывать можно только на n.c. и n.a."); } - $npc = ""; + $npc = ""; $tsum = explode(":", $tsum); - if ( ! $tsum[1]) { + if (!$tsum[1]) { $tnum = 1; } else { $tnum = $tsum[1]; @@ -213,7 +215,7 @@ if ($do == "sum") { $tsn = ""; $tsq = ""; if (strpos($tsum[0], "_") !== false) { - $tsn = substr($tsum[0], strpos($tsum[0], "_") + 1); + $tsn = substr($tsum[0], strpos($tsum[0], "_") + 1); $tsum[0] = substr($tsum[0], 0, strpos($tsum[0], "_")); } if (strpos($tsn, "_") !== false) { @@ -221,9 +223,9 @@ if ($do == "sum") { $tsn = substr($tsn, 0, strpos($tsn, "_")); } $tfollow = $tsum[2]; - $tsum = $tsum[0]; - $npc = loadNpcById($tsum); - if ( ! $npc) { + $tsum = $tsum[0]; + $npc = loadNpcById($tsum); + if (!$npc) { msg("Существа с id=$tsum не существует"); } if ($tr && ($tsq || $tsn || $tqn)) { @@ -233,21 +235,21 @@ if ($do == "sum") { if ($tsq) { $tsq = trans($tsq); $tsq = tsrus($tsq); - if ( ! $tsq) { + if (!$tsq) { msg("Нет названия оружия"); } - $twar = explode("|", $npc["war"]); - $twar[12] = $tsq; + $twar = explode("|", $npc["war"]); + $twar[12] = $tsq; $npc["war"] = implode("|", $twar); } if ($tsn) { $tsn = tsrus($tsn); $tsn = trans($tsn); - $tc = explode("|", $npc["char"]); - if ( ! $tsn) { + $tc = explode("|", $npc["char"]); + if (!$tsn) { msg("Нет имени"); } - $tc[0] = $tsn; + $tc[0] = $tsn; $npc["char"] = implode("|", $tc); } if ($tsi) { @@ -259,16 +261,16 @@ if ($do == "sum") { if ($tqn) { $tsn .= " | " . $tqn; $tqn = explode(" | ", $tqn); - if ( ! $tqn[0]) { + if (!$tqn[0]) { msg("Задайте текст, кот. будет показан при согласии проводить NPC"); } - if ( ! $tqn[1]) { + if (!$tqn[1]) { msg("Задайте текст, кот. будет показан при отказе проводить NPC"); } - if ($tqn[3] && ! $tqn[2]) { + if ($tqn[3] && !$tqn[2]) { msg("Если указали локацию куда привести, то нужен и текст, кот. будет показан при разговоре в этой локации"); } - if ($tqn[3] && ! file_exists("loc_i/" . $tqn[3])) { + if ($tqn[3] && !file_exists("loc_i/" . $tqn[3])) { msg("Локации " . $tqn[3] . ", куда надо проводить NPC не существует"); } @@ -291,7 +293,7 @@ if ($do == "sum") { $tqn[2] = tsrus($tqn[2]); $tqn[5] = tsrus($tqn[5]); - $npc["in"] = $tqn[0]; + $npc["in"] = $tqn[0]; $npc["out"] = $tqn[1]; if ($tqn[2]) { $npc["ok"] = $tqn[3] . " | " . $tqn[2] . " | " . $tqn[4]; @@ -316,7 +318,7 @@ if ($do == "sum") { if ($do == "listid") { $stmp = "Список id:"; - $dh = opendir("npc"); + $dh = opendir("npc"); while (($fname = readdir($dh)) !== false) { if ($fname != "." && $fname != ".." && $fname != "1.htaccess" && $fname != ".htaccess") { if (substr($fname, 0, 4) == "n.c." || substr($fname, 0, 4) == "n.a.") { @@ -329,10 +331,10 @@ if ($do == "listid") { } if ($do == "res") { - $char[1] = $char[2]; - $char[3] = $char[4]; - $char[8] = 0; - $char[9] = 0; + $char[1] = $char[2]; + $char[3] = $char[4]; + $char[8] = 0; + $char[9] = 0; $loc_i[$loc][$login]["char"] = implode("|", $char); } @@ -343,12 +345,12 @@ if ($do == "calc") { if ($do == 'filter' && $inp) { $stmp = "

Кол-во: "; - $dh = opendir("items/"); + $dh = opendir("items/"); while (($fname = readdir($dh)) !== false) { if ($fname != "." && $fname != ".." && substr($fname, 0, strlen($inp)) == $inp) { $item = findItemByBaseId($fname); $stmp .= "\n
" . $item[0] . - ""; + ""; $count++; } } @@ -365,7 +367,7 @@ if ($do == 'geti' && $inp) { $arr = explode(":", $inp); $fn = getBaseItemId($arr[0]); - if ( ! itemExists($fn)) { + if (!itemExists($fn)) { msg("Предмета с id " . $arr[0] . " не существует"); } @@ -378,7 +380,7 @@ if ($do == 'geti' && $inp) { } $xF = preg_match_all("/\\.\\.(\\w\\w)/", $arr[0], $regF); for ($j = 0; $j < $xF; $j++) { - if ( ! itemExists("i.i." . $regF[1][$j])) { + if (!itemExists("i.i." . $regF[1][$j])) { msg("Самоцвет " . $regF[1][$j] . " не существует"); } } @@ -387,17 +389,18 @@ if ($do == 'geti' && $inp) { if (strpos($arr[0], " ") !== false) { msg("В id не должно быть пробелов"); } - if ( ! $arr[1]) { + if (!$arr[1]) { msg("Надо указать количество count"); } - if ($arr[2] && - ((substr($arr[2], 0, 2) != "n." && substr($arr[2], 0, 2) != "u.") || ! isset($loc_i[$loc][$arr[2]])) + if ( + $arr[2] && + ((substr($arr[2], 0, 2) != "n." && substr($arr[2], 0, 2) != "u.") || !isset($loc_i[$loc][$arr[2]])) ) { msg("Третьим параметром должен быть id NPC или игрока рядом с вами, учитывая регистр, которому передать предмет. Если не указано, то себе."); } - if ( ! $arr[2]) { + if (!$arr[2]) { manageItems($loc, "", $login, $arr[0], $arr[1]); } else { manageItems($loc, "", $arr[2], $arr[0], $arr[1]); @@ -409,11 +412,12 @@ if ($do == 'geti' && $inp) { if ($do == 'addi' && $inp) { $arr = explode(":", $inp); $fn = getBaseItemId($arr[0]); - if ( ! itemExists($fn)) { + if (!itemExists($fn)) { msg("Предмета с id " . $arr[0] . " не существует"); } - if ( ! $arr[2] || (substr($arr[2], 0, 2) != "n." && substr($arr[2], 0, 2) != "u.") || - ! isset($loc_i[$loc][$arr[2]]) + if ( + !$arr[2] || (substr($arr[2], 0, 2) != "n." && substr($arr[2], 0, 2) != "u.") || + !isset($loc_i[$loc][$arr[2]]) ) { msg("Третьим параметром должен быть id NPC или игрока рядом с вами, учитывая регистр"); } @@ -429,7 +433,7 @@ if ($do == 'getms' && $inp) { } $inp = preg_replace('/([^.A-z])/', "", $inp); $id = getBaseItemId($inp); - if ( ! npcExists($id)) { + if (!npcExists($id)) { msg("id " . $id . " не существует"); } manageItems($loc, "", $login, "i.ms_" . $inp, 1); @@ -454,7 +458,7 @@ if ($do == 'listit') { function tsrus($s) { - if ( ! $s) { + if (!$s) { return $s; } // UTF-8 русские буквы diff --git a/index.php b/index.php index f4a2b34..2132c0f 100644 --- a/index.php +++ b/index.php @@ -5,16 +5,25 @@ header("Cache-Control: no-cache, no-store, must-revalidate, max-age=0"); header("Pragma: no-cache"); header("Content-type:text/html;charset=utf-8"); -?> +?> + + Амулет Дракона - + + + + -

- Если вас автоматически не перенаправляет на другую страницу, нажмите эту - ссылку. -

+

+ Если вас автоматически не перенаправляет на другую страницу, нажмите эту + ссылку. +

+ \ No newline at end of file From 053cd805e20f01ba8d539801d25feb56f7c8f695 Mon Sep 17 00:00:00 2001 From: Dmytro Piddubnyi Date: Thu, 8 Feb 2024 17:20:12 +0100 Subject: [PATCH 2/6] fix: viewport on mobile --- game/config.php | 2 +- game/f_message.inc | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/game/config.php b/game/config.php index 6982d4d..553f992 100644 --- a/game/config.php +++ b/game/config.php @@ -64,7 +64,7 @@ * * @var string $g_admin */ -$g_admin = 'u.user'; +$g_admin = 'u.computerstein'; /** * ключ для входа админом diff --git a/game/f_message.inc b/game/f_message.inc index 44088c9..be23c17 100644 --- a/game/f_message.inc +++ b/game/f_message.inc @@ -221,6 +221,8 @@ function msg( + + From 77365fbf7ca336798faf32e893703785d0dfb802 Mon Sep 17 00:00:00 2001 From: Dmytro Piddubnyi Date: Thu, 8 Feb 2024 19:23:49 +0100 Subject: [PATCH 3/6] fix: forms --- game/config.php | 6 ++--- game/f_admin.inc | 45 ++++++++++++++++--------------- game/f_cnick.inc | 20 ++++++++------ game/f_drop.inc | 15 ++++++----- game/f_speakbuyto.inc | 14 +++++++--- game/f_speakfrombankto.inc | 14 +++++++--- game/f_speaksellto.inc | 16 +++++++---- game/f_speaktobankto.inc | 17 ++++++++---- game/f_take.inc | 32 ++++++++++++---------- game/f_takediedid.inc | 18 ++++++++----- game/f_trade.inc | 55 +++++++++++++++++++++++--------------- game/functions.js | 7 +++++ game/index.php | 2 +- game/speak/n.officer | 42 +++++++++++++++++------------ 14 files changed, 187 insertions(+), 116 deletions(-) diff --git a/game/config.php b/game/config.php index 553f992..a7f23fe 100644 --- a/game/config.php +++ b/game/config.php @@ -92,7 +92,7 @@ * * @var int $g_crim */ -$g_crim = 180; +$g_crim = 1800; /** * @var int $g_exp множитель для экспы @@ -129,12 +129,12 @@ * * Если размер списка превышает его, то будет разбит на несколько с возможностью перелистывания. */ -$pageOpt->setMaxListSize(5); +$pageOpt->setMaxListSize(30); /** * Размер страницы (700..15000) */ -$pageOpt->setMaxPageSize(2200); +$pageOpt->setMaxPageSize(15000); /* * Тип меню. diff --git a/game/f_admin.inc b/game/f_admin.inc index af72e35..22f8f1d 100644 --- a/game/f_admin.inc +++ b/game/f_admin.inc @@ -15,34 +15,37 @@ */ // сылка воскрешение для админа if ($login == $g_admin || $gm == $gm_id) { + $inp = Request('inp'); + $val = Request('val'); + $new = Request('new'); switch ($adm) { case 'smp': msg( "

-
teleport (loc) [select] -
money (count) -
additem (filter) -
god (" . intval($loc_i[$loc][$login]["god"]) . ") -
[items,bank,magic] -
view (field|login|loc|t) +
+
+
+
+
+

-
add (item,count,[bank|loc]) -
delete (item,count|all,[bank]) -
get (field,index) -
unset (field,index) +
+
+
+

-
set (field,index,val) -
[skill info] -
mail_loc(email) -
load_bank(npc) -
timer (id,min,max) -
guard (1|0) -
setgclan (clan,glava) -
CLEAR(skills=1) +
+
+
+
+
+
+
+

-
stop 5 min(msg) -
play (msg: " . intval(isset($game["msg"])) . ") -
blank world +
+
+
\n

\n
\n
\n

\nНачало
Банк
Кладбище
Замок
Пещера
Ансалон
Крепость
Подземелье", $loc, 0 diff --git a/game/f_cnick.inc b/game/f_cnick.inc index 854b5d1..a4735f8 100644 --- a/game/f_cnick.inc +++ b/game/f_cnick.inc @@ -16,7 +16,7 @@ $char = explode("|", $loc_i[$loc][$login]["char"]); if (strpos($char[0], " *") === false) { $clan = ""; } else { - $clan = substr($char[0], strpos($char[0], " *")); + $clan = substr($char[0], strpos($char[0], " *")); $char[0] = substr($char[0], 0, strpos($char[0], " *")); } $tus = explode("|", $loc_i[$loc][$login]["user"]); @@ -24,7 +24,10 @@ $tus = explode("|", $loc_i[$loc][$login]["user"]); $viewOpt = ViewOptions::getInstance(); if ($cnick == "1") { - $stmp = "

Ваше имя:
+ $stmp = "

+ + +

Ваше имя:

Возраст:

Размер списков (3..30):
getMaxListSize() . "\" format=\"*N\" maxlength=\"2\"/>
Размер страницы (700..15000):
getMaxPageSize() . "\" format=\"*N\" maxlength=\"5\"/> @@ -33,13 +36,14 @@ if ($cnick == "1") {
Карта: 0 - нет, 1 - ч/б, 2 - цветная JPEG, 3 - цветная PNG:
getMapMode() . "\" format=\"*N\" maxlength=\"1\"/>
Пункты в меню (0-откл,1-магия,2-предмет,3-прием) и кол-во горячих клавиш для каждого пункта (0..9), порядок произвольный. Пример: 332110
getUserMenu() . "\" format=\"*N\" maxlength=\"6\"/> + $viewOpt->getUserMenu() . "\" format=\"*N\" maxlength=\"6\"/>
Описание локаций (1-вкл,0-выкл):
getShowDesc() . "\" format=\"*N\" maxlength=\"1\"/>
Сообщать о приходящих (1-вкл,0-выкл):
getReportIncoming() . "\" format=\"*N\" maxlength=\"1\"/>
Звуки рядом с выходами (1-вкл,0-выкл):
getSoundsMode() . "\" format=\"*N\" maxlength=\"1\"/>
Отключить журнал (1-да,0-нет):
getJournalDisabled() . "\" format=\"*N\" maxlength=\"1\"/>
Маленький шрифт (1-да,0-нет):
getUseSmallFont() . "\" format=\"*N\" maxlength=\"1\"/> -
Сохранить +
+


Помощь"; } else { @@ -99,12 +103,12 @@ if ($cnick == "1") { $viewOpt->setMapMode($map); $viewOpt->setUseSmallFont($smf); - $loc_i[$loc][$login]["o"] = $viewOpt->toString(); - $char[0] = $cnick . $clan; + $loc_i[$loc][$login]["o"] = $viewOpt->toString(); + $char[0] = $cnick . $clan; $loc_i[$loc][$login]["char"] = implode("|", $char); - $tus[3] = intval($age); + $tus[3] = intval($age); $loc_i[$loc][$login]["user"] = implode("|", $tus); - $stmp = "Настройки сохранены."; + $stmp = "Настройки сохранены."; } msg($stmp, "Настройки", 0); \ No newline at end of file diff --git a/game/f_drop.inc b/game/f_drop.inc index 9c7e9a6..86de02f 100644 --- a/game/f_drop.inc +++ b/game/f_drop.inc @@ -28,8 +28,8 @@ if ($drop) { //linkБросить $loc1 = $loc; } $loc_i[$loc1]["i.flag"] = "флаг лидерства|1|0"; - $game["floc"] = $loc1; - $game["fid"] = ""; + $game["floc"] = $loc1; + $game["fid"] = ""; calcparam($loc, $login); msg("Вы бросили флаг лидерства"); } @@ -43,12 +43,15 @@ if ($drop) { //linkБросить // бросаем предмет в локацию $title = findItemByFullId($drop); // FIXME: dead code? // проверим кол-во - if ($tcount > 1 && ! $num) { // запросим кол-во - $stmp = "

Укажите количество:\n
\n
Отправить"; + if ($tcount > 1 && !$num) { // запросим кол-во + $stmp = "

Укажите количество:\n

" . + "" . + "" . + "\n

"; msg($stmp, "Бросить", 1, PageType::MSG, "num", $tcount); } - if ( ! $num || $num < 1) { + if (!$num || $num < 1) { $num = 1; } // если не указано, то 1 предмет if ($num > $tcount) { diff --git a/game/f_speakbuyto.inc b/game/f_speakbuyto.inc index e9b64a7..67fbeb6 100644 --- a/game/f_speakbuyto.inc +++ b/game/f_speakbuyto.inc @@ -27,12 +27,18 @@ $count = intval(preg_replace('/.*' . $to . ':(\d+).*/', "\\1", $loc_i[$loc][$spe if ($count == 0) { msg($item[0] . " у меня нет, попробуйте заглянуть в другой раз.", $tchar[0]); } -if ($count > 1 && ! $num) { // кол-во - $stmp = "

Укажите количество:\n
\n
Отправить"; +if ($count > 1 && !$num) { // кол-во + $stmp = "

Укажите количество:\n

" . + "" . + "" . + "" . + "" . + "" . + "\n

"; msg($stmp, $tchar[0], 1, PageType::MSG, "num", $count); } -if ( ! $num || $num < 1) { +if (!$num || $num < 1) { $num = 1; } if ($num > $count) { diff --git a/game/f_speakfrombankto.inc b/game/f_speakfrombankto.inc index 835a408..f93919a 100644 --- a/game/f_speakfrombankto.inc +++ b/game/f_speakfrombankto.inc @@ -28,12 +28,18 @@ $count = intval(preg_replace('/.*' . $to . ':(\d+).*/', "\\1", $loc_i[$loc][$log if ($count == 0) { msg("В банке нет " . $item[0], $tchar[0]); } -if ($count > 1 && ! $num) { // кол-во - $stmp = "

Укажите количество:\n
\n
Отправить"; +if ($count > 1 && !$num) { // кол-во + $stmp = "

Укажите количество:\n

" . + "" . + "" . + "" . + "" . + "" . + "\n

"; msg($stmp, $tchar[0], 1, PageType::MSG, "num", $count); } -if ( ! $num || $num < 1) { +if (!$num || $num < 1) { $num = 1; } if ($num > $count) { diff --git a/game/f_speaksellto.inc b/game/f_speaksellto.inc index 84f754b..581d478 100644 --- a/game/f_speaksellto.inc +++ b/game/f_speaksellto.inc @@ -37,7 +37,7 @@ if ($filter) { break; } } - if ( ! $b) { + if (!$b) { msg("Извини, меня не интересует " . $item[0], $tchar[0]); } } @@ -46,12 +46,18 @@ $count = intval(preg_replace('/.*' . $to . ':(\d+).*/', "\\1", $loc_i[$loc][$log if ($count == 0) { msg("У вас нет " . $item[0] . ", возвращайтесь когда будет.", $tchar[0]); } -if ($count > 1 && ! $num) { // кол-во - $stmp = "

Укажите количество:\n
\n
Отправить"; +if ($count > 1 && !$num) { // кол-во + $stmp = "

Укажите количество:\n

" . + "" . + "" . + "" . + "" . + "" . + "\n

"; msg($stmp, $tchar[0], 1, PageType::MSG, "num", $count); } -if ( ! $num || $num < 1) { +if (!$num || $num < 1) { $num = 1; } if ($num > $count) { diff --git a/game/f_speaktobankto.inc b/game/f_speaktobankto.inc index a6d9a81..3842dd3 100644 --- a/game/f_speaktobankto.inc +++ b/game/f_speaktobankto.inc @@ -22,18 +22,25 @@ $count = intval(preg_replace('/.*' . $to . ':(\d+).*/', "\\1", $loc_i[$loc][$log if ($count == 0) { msg("У вас нет " . $item[0], $tchar[0]); } -if ($count > 1 && ! $num) { // кол-во - $stmp = "

Укажите количество:\n
\n
Отправить"; +if ($count > 1 && !$num) { // кол-во + $stmp = "

Укажите количество:\n

" . + "" . + "" . + "" . + "" . + "" . + "\n

"; msg($stmp, $tchar[0], 1, PageType::MSG, "num", $count); } -if ( ! $num || $num < 1) { +if (!$num || $num < 1) { $num = 1; } if ($num > $count) { $num = $count; } -if ($to == "i.money" && +if ( + $to == "i.money" && intval(preg_replace('/.*i.money:(\d+).*/', "\\1", $loc_i[$loc][$login]["bank"])) + $num > 70000 ) { msg("Извините, в банке можно хранить не более 70000 монет"); diff --git a/game/f_take.inc b/game/f_take.inc index 8d9b964..284452a 100644 --- a/game/f_take.inc +++ b/game/f_take.inc @@ -21,11 +21,11 @@ if ($take) { //linkПоднять include "f_usekon.inc"; } - if ($take == "i.flag" && isset($loc_i[$loc]["i.flag"]) && ! $char[8]) { + if ($take == "i.flag" && isset($loc_i[$loc]["i.flag"]) && !$char[8]) { addjournal($loc, "all", $char[0] . " поднял флаг!", $login); unset($loc_i[$loc]["i.flag"]); - $game["floc"] = $loc; - $game["fid"] = $login; + $game["floc"] = $loc; + $game["fid"] = $login; $game["fchar"] = $char[0]; calcparam($loc, $login); $char = explode("|", $loc_i[$loc][$login]["char"]); @@ -47,12 +47,12 @@ if ($take) { //linkПоднять if ($char[8]) { $b = 1; } - if ( ! $b) { + if (!$b) { $b = 1; foreach (array_keys($loc_i[$loc]) as $i) { if (substr($i, 0, 2) == "u." && $i != $login) { $tc = explode("|", $loc_i[$loc][$i]["char"]); - if ( ! $tc[8]) { + if (!$tc[8]) { $b = 0; break; } @@ -66,7 +66,8 @@ if ($take) { //linkПоднять msg("Покинуть арену можно либо призраком, либо оставшись единственным в живых."); } } - if (substr($take, 0, 4) == 'i.s.' && substr($take, 0, 6) != 'i.s.d.' && substr($take, 0, 7) != 'i.s.res' && + if ( + substr($take, 0, 4) == 'i.s.' && substr($take, 0, 6) != 'i.s.d.' && substr($take, 0, 7) != 'i.s.res' && substr($take, 0, 11) != 'i.s.portal_' ) { msg("

Этот предмет нельзя взять"); @@ -78,7 +79,7 @@ if ($take) { //linkПоднять msg("

Вы призрак и поэтому не можете ничего передать, поднять или бросить, найдите лекаря или камень воскрешения"); } } - $def = get_value($loc_i[$loc][$login], "def"); + $def = get_value($loc_i[$loc][$login], "def"); $tdef = explode("|", $def ? $def : '|'); if ($tdef[0] == "p.d.o") { msg("В глухой обороне, нельзя брать предметы!"); @@ -88,7 +89,7 @@ if ($take) { //linkПоднять if ($id) { include "f_takediedid.inc"; } - if ( ! $id) { + if (!$id) { include "f_takediednoid.inc"; } } @@ -97,12 +98,15 @@ if ($take) { //linkПоднять if (substr($take, 0, 4) != 'i.s.') { $item = explode("|", $loc_i[$loc][$take]); // проверим кол-во - if ($item[1] > 1 && ! $num) { // запросим кол-во - $stmp = "

Укажите количество:\n
\n
Отправить"; + if ($item[1] > 1 && !$num) { // запросим кол-во + $stmp = "

Укажите количество:\n

" . + "" . + "" . + "\n

"; msg($stmp, "Взять", 1, PageType::MSG, "num", $item[1]); } - if ( ! $num || $num < 1) { + if (!$num || $num < 1) { $num = 1; } // если не указано, то 1 предмет if ($num > $item[1]) { @@ -117,6 +121,6 @@ if ($take) { //linkПоднять msg("Вы проходите сквозь портал и оказываетесь в совершенно другом месте"); } - }// если есть - }//else s.book + } // если есть + } //else s.book } diff --git a/game/f_takediedid.inc b/game/f_takediedid.inc index c471123..29042e7 100644 --- a/game/f_takediedid.inc +++ b/game/f_takediedid.inc @@ -16,27 +16,31 @@ use MaxDark\Amulet\OldCode\PageType; -$died = explode("|", $loc_i[$loc][$take]); +$died = explode("|", $loc_i[$loc][$take]); $tcount = intval(preg_replace('/.*' . $id . ':(\d+).*/', "\\1", $died[3])); if ($tcount) { // проверим кол-во if ($all) { $num = $tcount; } - if ($tcount > 1 && ! $num) { - $stmp = "

Укажите количество:\n
\n
Отправить"; + if ($tcount > 1 && !$num) { + $stmp = "

Укажите количество:\n

" . + "" . + "" . + "" . + "\n

"; msg($stmp, "Взять", 1, PageType::MSG, "num", $tcount); } - if ( ! $num || $num < 1) { + if (!$num || $num < 1) { $num = 1; } if ($num > $tcount) { $num = $tcount; } manageItems($loc, $take, $login, $id, $num, "items", "items", 1, -1, 1); - $char = explode("|", $loc_i[$loc][$login]["char"]); - $char[6] = time() + 2; + $char = explode("|", $loc_i[$loc][$login]["char"]); + $char[6] = time() + 2; $loc_i[$loc][$login]["char"] = implode("|", $char); //$id=0; // чтобы вывести список оставшихся } else { diff --git a/game/f_trade.inc b/game/f_trade.inc index 81e7084..036038b 100644 --- a/game/f_trade.inc +++ b/game/f_trade.inc @@ -28,7 +28,7 @@ if (substr($trade, 0, 2) == "u.") { //новая торговля if ($trade == $login) { msg("Нельзя торговать с самим собой"); } - if ( ! isset($loc_i[$loc][$trade])) { + if (!isset($loc_i[$loc][$trade])) { msg("Рядом с вами нет того, с кем вы хотели торговать. Если он ушел, вы можете догнать его и продолжить обмен."); } $tchar = explode("|", $loc_i[$loc][$trade]["char"]); @@ -42,7 +42,7 @@ if (substr($trade, 0, 2) == "u.") { //новая торговля } else { $loc_i[$loc][$login]["trade"]["ito"] = $loc_i[$loc][$trade]["trade"]["i"]; $loc_i[$loc][$trade]["trade"]["ito"] = $loc_i[$loc][$login]["trade"]["i"]; - $loc_i[$loc][$trade]["trade"]["a"] = 0; + $loc_i[$loc][$trade]["trade"]["a"] = 0; } } @@ -52,7 +52,7 @@ if (isset($loc_i[$loc][$login]["trade"])) { if (substr($to, 0, 2) != "u.") { msg("Торговать можно только с игроками"); } - if ( ! isset($loc_i[$loc][$to])) { + if (!isset($loc_i[$loc][$to])) { msg("Рядом с вами нет того, с кем вы хотели торговать. Если он ушел, вы можете догнать его и продолжить обмен."); } $tchar = explode("|", $loc_i[$loc][$to]["char"]); @@ -63,7 +63,7 @@ if (isset($loc_i[$loc][$login]["trade"])) { msg("Вы призрак и не можете вести обмен"); } $tchar = $tchar[0]; - if ( ! isset($loc_i[$loc][$to]["trade"])) { + if (!isset($loc_i[$loc][$to]["trade"])) { msg($tchar . " сейчас не торгует с вами, ждите пока он начнет с вами обмен (если захочет, конечно).
Продолжить"); } @@ -82,21 +82,28 @@ if (isset($loc_i[$loc][$login]["trade"])) { msg("У вас нет этого предмета"); } // проверим кол-во - if ($tcount > 1 && ! $num) { // запросим кол-во - $stmp = "

Укажите количество:\n
\n
Отправить"; + if ($tcount > 1 && !$num) { // запросим кол-во + $stmp = "

Укажите количество:\n

" . + "" . + "" . + "" . + "\n

"; msg($stmp, "Добавить", 1, PageType::MSG, "num", $tcount); } $num = intval($num); - if ( ! $num || $num < 1) { + if (!$num || $num < 1) { $num = 1; } // если не указано, то 1 предмет if ($num > $tcount) { $num = $tcount; } // и максимум берем все что есть if ($tc > 0) { - $loc_i[$loc][$login]["trade"]["i"] = preg_replace('/' . $id . ':\d+/', $id . ":" . ($tc + $num), - $loc_i[$loc][$login]["trade"]["i"]); + $loc_i[$loc][$login]["trade"]["i"] = preg_replace( + '/' . $id . ':\d+/', + $id . ":" . ($tc + $num), + $loc_i[$loc][$login]["trade"]["i"] + ); } else { if ($loc_i[$loc][$login]["trade"]["i"]) { $loc_i[$loc][$login]["trade"]["i"] .= "|" . $id . ":" . $num; @@ -104,26 +111,29 @@ if (isset($loc_i[$loc][$login]["trade"])) { $loc_i[$loc][$login]["trade"]["i"] = $id . ":" . $num; } } - $loc_i[$loc][$to]["trade"]["ito"] = $loc_i[$loc][$login]["trade"]["i"]; + $loc_i[$loc][$to]["trade"]["ito"] = $loc_i[$loc][$login]["trade"]["i"]; $loc_i[$loc][$login]["trade"]["a"] = 0; - $loc_i[$loc][$to]["trade"]["a"] = 0; + $loc_i[$loc][$to]["trade"]["a"] = 0; } if ($trade == "del") { // удаляем предмет if (strpos($loc_i[$loc][$login]["trade"]["i"], $id . ":") === false) { msg("В вашем списке для обмена нет этого предмета"); } - $loc_i[$loc][$login]["trade"]["i"] = preg_replace('/\|?' . $id . ':\d+\|?/', "|", - $loc_i[$loc][$login]["trade"]["i"]); + $loc_i[$loc][$login]["trade"]["i"] = preg_replace( + '/\|?' . $id . ':\d+\|?/', + "|", + $loc_i[$loc][$login]["trade"]["i"] + ); if (substr($loc_i[$loc][$login]["trade"]["i"], 0, 1) == "|") { $loc_i[$loc][$login]["trade"]["i"] = substr($loc_i[$loc][$login]["trade"]["i"], 1); } if (substr($loc_i[$loc][$login]["trade"]["i"], -1) == "|") { $loc_i[$loc][$login]["trade"]["i"] = substr($loc_i[$loc][$login]["trade"]["i"], 0, -1); } - $loc_i[$loc][$to]["trade"]["ito"] = $loc_i[$loc][$login]["trade"]["i"]; + $loc_i[$loc][$to]["trade"]["ito"] = $loc_i[$loc][$login]["trade"]["i"]; $loc_i[$loc][$login]["trade"]["a"] = 0; - $loc_i[$loc][$to]["trade"]["a"] = 0; + $loc_i[$loc][$to]["trade"]["a"] = 0; } $b = 1; @@ -158,17 +168,19 @@ if (isset($loc_i[$loc][$login]["trade"])) { if ($loc_i[$loc][$login]["trade"]["i"] . $loc_i[$loc][$login]["trade"]["ito"] == "") { msg("Нет предметов для обмена"); } - if ($loc_i[$loc][$login]["trade"]["i"] . $loc_i[$loc][$login]["trade"]["ito"] != + if ( + $loc_i[$loc][$login]["trade"]["i"] . $loc_i[$loc][$login]["trade"]["ito"] != $loc_i[$loc][$to]["trade"]["ito"] . $loc_i[$loc][$to]["trade"]["i"] ) { $loc_i[$loc][$login]["trade"]["a"] = 0; - $loc_i[$loc][$to]["trade"]["a"] = 0; + $loc_i[$loc][$to]["trade"]["a"] = 0; } if ($loc_i[$loc][$login]["trade"]["a"] && $loc_i[$loc][$to]["trade"]["a"]) { // обмен // проверим наличие предметов $b = 0; foreach (array_keys($i) as $j) { - if (intval(preg_replace('/.*' . $i[$j][0] . ':(\d+).*/', "\\1", $loc_i[$loc][$login]["items"])) < + if ( + intval(preg_replace('/.*' . $i[$j][0] . ':(\d+).*/', "\\1", $loc_i[$loc][$login]["items"])) < $i[$j][1] ) { $b = 1; @@ -178,7 +190,8 @@ if (isset($loc_i[$loc][$login]["trade"])) { } } foreach (array_keys($ito) as $j) { - if (intval(preg_replace('/.*' . $ito[$j][0] . ':(\d+).*/', "\\1", $loc_i[$loc][$to]["items"])) < + if ( + intval(preg_replace('/.*' . $ito[$j][0] . ':(\d+).*/', "\\1", $loc_i[$loc][$to]["items"])) < $ito[$j][1] ) { $b = 1; @@ -240,4 +253,4 @@ if (isset($loc_i[$loc][$login]["trade"])) { "; msg($stmp, "Обмен"); } -}// если есть "trade" +} // если есть "trade" diff --git a/game/functions.js b/game/functions.js index 6fed7ed..d0f703b 100644 --- a/game/functions.js +++ b/game/functions.js @@ -36,4 +36,11 @@ $(document).ready(function () { href = $(this).attr('href').replaceAll('$(nn)', nn); window.location.href = href; }); + $('button[type="admin"]').click(function () { + inp = $('input[name="inp"]').val(); + val = $('input[name="val"]').val(); + newval = $('input[name="new"]').val(); + href = $(this).attr('href').replaceAll('$(inp)', inp).replaceAll('$(val)', val).replaceAll('$(new)', newval); + window.location.href = href; + }); }); \ No newline at end of file diff --git a/game/index.php b/game/index.php index 2859437..71a3c41 100644 --- a/game/index.php +++ b/game/index.php @@ -670,7 +670,7 @@ } // переход в админку и воскрешение if ($login == $g_admin || ($gm_id && $gm == $gm_id)) { - $stmp .= "
res
admin"; + $stmp .= "
res
admin"; } // MENU diff --git a/game/speak/n.officer b/game/speak/n.officer index ce0a341..3983d45 100644 --- a/game/speak/n.officer +++ b/game/speak/n.officer @@ -14,7 +14,9 @@ function nOfficer_begin_killedTo(&$title, &$k) function nOfficer_begin_killedBy(&$title, &$k) { - $title="";if($k[0]) $title="Я хочу назначить награду за голову ".substr($k[0],2); + $title = ""; + if ($k[0]) + $title = "Я хочу назначить награду за голову " . substr($k[0], 2); } function nOfficer_stat(&$title) @@ -59,8 +61,10 @@ function nOfficer_killedTo(&$title) } if (strpos($list[$k[1]], "получил") === false && intval($list[$k[1]]) > 0) { $char = explode("|", getCurrentUser("char")); - $title = "Награда за голову " . substr($k[1], - 2) . " составила в сумме " . intval($list[$k[1]]) . " монет"; + $title = "Награда за голову " . substr( + $k[1], + 2 + ) . " составила в сумме " . intval($list[$k[1]]) . " монет"; manageItems(getCurrentLocId(), "", getCurrentUserId(), "i.money", intval($list[$k[1]])); $list[$k[1]] = intval($list[$k[1]]) . " монет получил " . $char[0]; $k[1] = ""; @@ -85,9 +89,13 @@ function nOfficer_killedBy(&$title, $speak) global $PHP_SELF; global $sid; - $title="Укажите размер награды:\n"; - $title .= "
\n"; - $title .= "
Отправить"; + $title = "Укажите размер награды:\n"; + $title .= "
" . + "" . + "" . + "" . + "\n

"; } function nOfficer_killedBy2(&$title) @@ -143,16 +151,16 @@ function nOfficer_merfy(&$title) } return [ - 'begin' => 'Приветствую тебя, . Я офицер Санчес, у меня ты можешь назначить награду за голову преступника, который на тебя напал, а также получить вознаграждение, если убьешь кого-нибудь из списка разыскиваемых. Чем могу быть полезен?#eval: nOfficer_begin_killedTo($title, $k)#killedto#eval: nOfficer_begin_killedBy($title, $k);#killedby#О какой награде идет речь?#do#Я хочу посмотреть список кого разыскивают#stat#Что-то скучно...#hum#Ничего особенного, мне пора#end', - 'do' => 'Любой горожанин имеет право назначить награду за поимку преступника, который на него напал. Если несколько человек назначают награду за одного преступника, то их вклады суммируются. Первый, кто убьет бандита, может забрать заработанные деньги. Кроме того, я веду список розыскиваемых преступников, который можно посмотреть в любой момент.#Что мне делать, если меня несправедливо убили?#killby#Что мне делать, если я убью розыскиваемого преступника?#killto#Ясно, вернемся к началу#begin', - 'killby' => 'Если тебя незаконно убили, то приходи сюда и поговори со мной, после чего можешь назначить любую сумму за его поимку.#Ясно, поговорить с тобой#begin', - 'killto' => 'Точно так же поговори со мной и получишь свою награду. Главное, после свершения правосудия не убивай больше никого из людей-преступников (животные и монстры не считаются), так как запоминается только последний бой.#Ок, если завалю кого, приду сюда#begin', - 'stat' => 'eval: nOfficer_stat($title);#У меня еще пара вопросов#begin#Мне пора#end', - 'end' => 'Удачи тебе, и не нарушай закон', - 'killedto' => 'eval: nOfficer_killedTo($title);#Кто там еще остался?#stat#Спасибо, до свидания#end', - 'killedby' => 'eval: nOfficer_killedBy($title, $speak);', + 'begin' => 'Приветствую тебя, . Я офицер Санчес, у меня ты можешь назначить награду за голову преступника, который на тебя напал, а также получить вознаграждение, если убьешь кого-нибудь из списка разыскиваемых. Чем могу быть полезен?#eval: nOfficer_begin_killedTo($title, $k)#killedto#eval: nOfficer_begin_killedBy($title, $k);#killedby#О какой награде идет речь?#do#Я хочу посмотреть список кого разыскивают#stat#Что-то скучно...#hum#Ничего особенного, мне пора#end', + 'do' => 'Любой горожанин имеет право назначить награду за поимку преступника, который на него напал. Если несколько человек назначают награду за одного преступника, то их вклады суммируются. Первый, кто убьет бандита, может забрать заработанные деньги. Кроме того, я веду список розыскиваемых преступников, который можно посмотреть в любой момент.#Что мне делать, если меня несправедливо убили?#killby#Что мне делать, если я убью розыскиваемого преступника?#killto#Ясно, вернемся к началу#begin', + 'killby' => 'Если тебя незаконно убили, то приходи сюда и поговори со мной, после чего можешь назначить любую сумму за его поимку.#Ясно, поговорить с тобой#begin', + 'killto' => 'Точно так же поговори со мной и получишь свою награду. Главное, после свершения правосудия не убивай больше никого из людей-преступников (животные и монстры не считаются), так как запоминается только последний бой.#Ок, если завалю кого, приду сюда#begin', + 'stat' => 'eval: nOfficer_stat($title);#У меня еще пара вопросов#begin#Мне пора#end', + 'end' => 'Удачи тебе, и не нарушай закон', + 'killedto' => 'eval: nOfficer_killedTo($title);#Кто там еще остался?#stat#Спасибо, до свидания#end', + 'killedby' => 'eval: nOfficer_killedBy($title, $speak);', 'killedby2' => 'eval: nOfficer_killedBy2($title);#Хочу посмотреть список#stat#Мне пора#end', - 'hum' => 'Ах тебе скучно, да? Ну тогда послушай парочку законов Мерфи, сразу поймешь что все не так плохо как кажется! Потому что все намного хуже...#Давай, рассказывай!#merfy#А кто еще в городе любит травить байки?#more#Нет уж, спасибо#begin', - 'more' => 'Ходят слухи, что Гарри в таверне любит цитировать некоего Фоменко, да и про футбол с удовольствием расскажет. А вот если предпочитаешь армейский юмор, то лучше Маркуса из казарм на юго-западе города никого не найдешь, это уж точно!#Ясно#hum', - 'merfy' => 'eval: nOfficer_merfy($title);#Давай еще!#merfy#Не смешно, но все же продолжай#merfy#Да ну, надоело...#begin', + 'hum' => 'Ах тебе скучно, да? Ну тогда послушай парочку законов Мерфи, сразу поймешь что все не так плохо как кажется! Потому что все намного хуже...#Давай, рассказывай!#merfy#А кто еще в городе любит травить байки?#more#Нет уж, спасибо#begin', + 'more' => 'Ходят слухи, что Гарри в таверне любит цитировать некоего Фоменко, да и про футбол с удовольствием расскажет. А вот если предпочитаешь армейский юмор, то лучше Маркуса из казарм на юго-западе города никого не найдешь, это уж точно!#Ясно#hum', + 'merfy' => 'eval: nOfficer_merfy($title);#Давай еще!#merfy#Не смешно, но все же продолжай#merfy#Да ну, надоело...#begin', ]; \ No newline at end of file From fe82b9135b1d9c9677330a43d55a011deebce4be Mon Sep 17 00:00:00 2001 From: Dmytro Piddubnyi Date: Thu, 8 Feb 2024 23:15:23 +0100 Subject: [PATCH 4/6] fix: menu and actions --- docker-compose.yml | 4 +- game/config.php | 10 +- game/f_listinv.inc | 4 +- game/f_listmagic.inc | 2 +- game/f_listpriem.inc | 2 +- game/f_msg.inc | 2 +- game/f_speakbuy.inc | 2 +- game/f_speakfrombank.inc | 2 +- game/f_speaksell.inc | 2 +- game/f_speaktobank.inc | 2 +- game/f_takediedid.inc | 2 +- game/f_takediednoid.inc | 2 +- game/functions.js | 18 +- game/game_function.php | 391 +++++++++++++++++++++++---------------- game/index.php | 4 +- game/m.php | 10 +- index.php | 4 +- 17 files changed, 263 insertions(+), 200 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index dd21295..6c33c28 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,8 +4,8 @@ services: build: . ports: - 80:80 - # volumes: - # - .:/var/www/html + volumes: + - .:/var/www/html db: image: mysql:8 diff --git a/game/config.php b/game/config.php index a7f23fe..13fccfc 100644 --- a/game/config.php +++ b/game/config.php @@ -97,26 +97,26 @@ /** * @var int $g_exp множитель для экспы */ -$g_exp = 10; +$g_exp = 1; /** * @var int $g_attr максимальная сумма сила+ловкость+интелект */ -$g_attr = 12; +$g_attr = 55; /** * @var int $g_attr_one максимальное значение силы/ловкости/интелекта */ -$g_attr_one = 5; +$g_attr_one = 25; /** * @var int $g_skills максимальная сумма очков навыков */ -$g_skills = 50; +$g_skills = 150; /** * @var int $g_skills_one максимальный уровень навыка */ -$g_skills_one = 5; +$g_skills_one = 10; //============================ // Пользовательские настройки diff --git a/game/f_listinv.inc b/game/f_listinv.inc index 07678c3..50551dd 100644 --- a/game/f_listinv.inc +++ b/game/f_listinv.inc @@ -82,7 +82,7 @@ if ($loc_i[$loc][$login]["items"] == "") { } // меню - $stmp .= "\n

\n
\n
\n

\n"; + $stmp .= "\n

\n
\n
\n

\n"; $stmp .= "Использовать\n
"; $stmp .= "Бросить"; if (isset($loc_i[$loc][$loc_i[$loc][$login]["trade"]["to"]])) { @@ -95,7 +95,7 @@ if ($loc_i[$loc][$login]["items"] == "") { } // items!="" // персонаж -$stmp .= "\n

\n
\n
\n

"; +$stmp .= "\n

\n
\n
\n

"; $stmp .= "Магия
"; $stmp .= "Навыки
"; $stmp .= "Приемы
"; diff --git a/game/f_listmagic.inc b/game/f_listmagic.inc index 29f2d7b..15e0c27 100644 --- a/game/f_listmagic.inc +++ b/game/f_listmagic.inc @@ -101,5 +101,5 @@ if ($listEnd < count($keys)) { (count($keys) - $listEnd) . ")"; } // карта меню -$stmp .= "\n

\n
\n
\n

\nКастовать\n
Инфо\n
[Вверх | Вниз]\n"; +$stmp .= "\n

\n
\n
\n

\nКастовать\n
Инфо\n
[Вверх | Вниз]\n"; msg($stmp, "Магия", 1); \ No newline at end of file diff --git a/game/f_listpriem.inc b/game/f_listpriem.inc index 0d42662..9038f6c 100644 --- a/game/f_listpriem.inc +++ b/game/f_listpriem.inc @@ -93,5 +93,5 @@ if ($listEnd < count($keys)) { (count($keys) - $listEnd) . ")"; } // карта меню -$stmp .= "\n

\n
\n
\n

Инфо\n
[Вверх | Вниз]\n"; +$stmp .= "\n

\n
\n
\n

Инфо\n
[Вверх | Вниз]\n"; msg($stmp, "Приемы", 1); \ No newline at end of file diff --git a/game/f_msg.inc b/game/f_msg.inc index 3ef195f..ebf1a1e 100644 --- a/game/f_msg.inc +++ b/game/f_msg.inc @@ -83,7 +83,7 @@ if ($msg) {

Помощь

-