Модуль кладоискатель-v2 для FastCore

  • Автор темы Автор темы shans5
  • Дата начала Дата начала
Регистрация
16 Дек 2024
Сообщения
230
Розыгрыши
1
Реакции
10
Возраст
45
Нет меня
Расширенная версия модуля кладоискатель для FastCore



Ваша цель — открыть 24 ячейки, скрывающие как ценные призы, так и опасности.

Как происходит игра:

В начале все ячейки скрыты. Вы выбираете одну ячейку за ход.
После открытия ячейка либо принесет вам сумму денег, либо запустит одно из событий (множитель, мина, и т.д.).
Вы можете в любой момент остановиться и забрать свой выигрыш, но помните: чем больше ячеек вы открываете, тем выше риск потерять всё.
Игра продолжается до тех пор, пока вы не решите забрать деньги или не попадетесь на мину, змею, бандитов или пожар.
Каждый ваш выбор — это шаг в неизвестность. Вы готовы рискнуть всем ради большего выигрыша? Или остановитесь, когда сумма станет впечатляющей?




Вот, что вас ждет за ячейками:

Деньги — самые обычные ячейки, в которых спрятаны суммы от 0.01 до 1 рубля. Если удача на вашей стороне, вы легко сможете увеличить свой выигрыш, но чем дальше вы зайдете, тем рискованнее станет продолжать!
Множитель (✖️) — умножает текущий выигрыш на 1.1, 1.2 ,1.3, 1.4, 1.5, 2 , если везёт! Но остерегайтесь: после получения множителя игра становится еще более напряженной, ведь сумма на кону увеличивается, а значит и риски возрастают.
Мина (💣) — наткнувшись на мину, вы теряете все заработанное и игра заканчивается. Будьте осторожны, одна неверная ячейка может разрушить все ваши успехи!
Змея (🐍) — змея также завершит вашу игру поражением. Вас укусят, и все деньги исчезнут!
Бандиты (👤) — если откроете ячейку с бандитами, вас ограбят! Ваша игра закончится, и все деньги будут потеряны.
Огонь (🔥) — пожар охватит вашу игру, и это будет конец! Вся ваша сумма сгорит дотла.
Полиция (🚓) — полиция сбросит ваш текущий выигрыш до 0.1 Руб., но у вас останется шанс продолжить игру и отыграться. Игра не закончена, но ваш баланс снова на старте.
Радиация (☢️) — радиация заберет все ваши силы. Вы проигрываете.
Делитель (➗) — сумма текущего выигрыша делится пополам, но вы продолжаете игру.


Важно:

Перед началом игры нужно сделать ставку от 1 до 50 Руб. с баланса покупок.
95% от ставки падает в банк, 5% идет админу ( в резерве проекта остается )
Далее, в модуле реализовано условие: если во время текущей игры сумма выигрыша больше, чем сумма в банке, то выпадает радиация и проигрыш.
Само собой пользователи не видят информацию о сумме в банке, для них просто обычная неудача.
То есть банк ( админ) не уйдет в минус. Да , это обман.. но жизнь такая.
Для честных админов можно убрать данное условие.

В админке реализован вывод информации, сумму в банке, сумму всех ставок, и сколько админу.

По дефолту можно играть 1 раз в час, можно поменять на свое усмотрение.

ЦЕНА: 1200 Руб.


Почта: svalka58.ru@yandex.ru
telegram: https://t.me/Aleksandr_58rus ( только по поводу покупки)
Или в личку на форуме.

1.png2.jpg3.png4.png5.jpg
 
Нашел несколько некритичных логических ошибок:
- после завершения игры, можно продолжить открытие ячеек, если там будут деньги, забрать их нельзя, но если выпадет поражение идет запись в статистику, так будто была еще одна игра. То есть можно сыграв одну игру, заполнить историю игр еще множеством поражений.
- если нажимать "сделать ставку", и на балансе меньше денег, сообщение о нехватке денег не выводится. Также не выводяться другие сообщения из блока:
PHP:
<?php

// ... существующий код выше ...



// Обработка ставки

if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['bet'])) {

   $bet = round((float)$_POST['bet'], 2); // Ставка с точностью до 2 знаков после запятой

$set = $bet*0.95 ; // Ставка с точностью до 2 знаков после запятой

    // Проверка корректности ставки

    if ($bet >= 10 && $bet <= 50) {

        // Проверка наличия достаточных средств

        if ($user['point'] >= $bet) {

            // Снимаем ставку с money_b и записываем в базу

            $db->query("UPDATE db_users SET point = point - $bet, paksum_3 = paksum_3 + 1 WHERE id = '$uid'");

             $db->query("UPDATE db_bank SET stavok = stavok + $bet, amount = amount + $set WHERE id = 1");

            $db->query("UPDATE db_games SET stavka = $bet, total = $bet  WHERE id = '" . $last_game['id'] . "'");

            $_SESSION['message'] = "<div class='alert alert-success'>The bet has been placed: $bet <i class='fa fa-star' style='color: #e3df57;' aria-hidden='true'></i></div>";

        } else {

            $_SESSION['message'] = "<div class='alert alert-danger'>Insufficient funds for bet.</div>";

        }

    } else {

        $_SESSION['message'] = "<div class='alert alert-danger'>The bet must be from 10 to 50 <i class='fa fa-star' style='color: #e3df57;' aria-hidden='true'></i></div>";

    }



    // Перенаправляем для предотвращения повторных POST-запросов

    header("Location: " . $_SERVER['REQUEST_URI']);

    exit();

}



// ... остальной существующий код ниже ...



?>

- также не показывается сообщение о том, что новая игра будет доступна только через N часов (в случае если !$can_play)

Часть ошибок я исправил, некоторые с помощью костылей (так и не понял почему не выводятся $_SESSION['message'] из кода, что я выложил - хотя сам код однозначно работает). Как уже написал выше ошибки некритичны, но не из-за них не хватает информированности пользователям.
 
Последнее редактирование модератором:
1) В сообщении есть ошибка. Не критично, но меня раздражает.
А именно:
Для вставки кода в сообщение есть соответствующий тег
Скриншот 17-01-2025 215017.jpg
2)

Перенеси вывод сообщений:
Код:
<?php if (isset($_SESSION['message'])): ?>
                <div class="alert alert-info">
                    <?= $_SESSION['message']; ?>
                </div>
                <?php unset($_SESSION['message']); ?>
            <?php endif; ?>

в другое место, например сразу после:
<div class="col-md-6 game-block">


3) Сообщение выводится, что игра будет доступна через 1 час
Чтобы выводилось точное время:
Код:
<?php if ($last_game && ($last_game['status'] === 'lost' || $last_game['status'] === 'won')): ?>
    <div class="alert alert-info">Игра завершена. Вы можете начать новую игру через 1 час.</div>


Меняем на:
Код:
<?php if ($last_game && ($last_game['status'] === 'lost' || $last_game['status'] === 'won')): ?>    <?php        $time_passed = time() - $last_game['created_at'];        $seconds_left = 3600 - $time_passed; // 3600 секунд = 1 час        if ($seconds_left < 0) $seconds_left = 0;        $minutes = floor($seconds_left / 60);        $seconds = $seconds_left % 60;    ?>    <div class="alert alert-info">Игра завершена. Вы можете начать новую игру через <?= $minutes ?> минут <?= $seconds ?> секунд.</div>
 
Приношу извинения за оформление темы. По сабжу - у себя я поправил, написал вам чтоб вы знали о наличии недочетов модуля.
 
Назад
Верх Низ