Простой игровой бот для ВК, создаем игру для Вконтакте + исходники! | Часть 2 » KOTOFF.net
KOTOFF.NET
  • Главная
  • Пользователи
  • Контакты
  • Статистика
  • Форум
  • Правила
  • О нас
  • Вход / Регистрация

Простой игровой бот для ВК, создаем игру для Вконтакте + исходники! | Часть 2

Статьи / PHP



Если Вы новичок, то советуем изучить 1 часть создания игры Вкнонтакте, именно с конца той статьи мы начинаем делать обновление для нашего бота, погнали!

В прошлой статье мы сделали регистрацию, кнопку бонус и игру "Казино"


В комментариях к прошлой статье нас попросили сделать кейсы и личный кабинет, давайте это и реализуем


Начем с простого, это личный кабинет. Открываем наш исходный код и начинаем писать:

Находим строчку
$bonus = $vk->buttonText('⏰ Бонус!', 'green', ['command' => 'bonus']);

и добавляем новую кнопку:

$profile = $vk->buttonText('📜 Профиль', 'blue', ['command' => 'profile']);

Именно так создаются кнопки, о них на нашем сайте уже было написано несколько статей

Теперь когда кнопка наша создана, добавим ее к общим кнопкам, пока она у нас была одна - Бонус

Найти:
 $vk->sendButton($peer_id, "Приветствую  тебя, @id$id ($userinfo[first_name] $userinfo[last_name]), ты теперь один из нас, вступай в ряды мощных панамеровцев!", [ [$bonus]]);
 Заменить:
 $vk->sendButton($peer_id, "Приветствую  тебя, @id$id ($userinfo[first_name] $userinfo[last_name]), ты теперь один из нас, вступай в ряды мощных панамеровцев!", [[$profile], [$bonus]]);

Найти:
 if ($cmd[0] == 'казино'){ // Первая команда
Сверху добавим новую команду:
    if ($cmd[0] == 'меню'){
        $vk->sendButton($peer_id, "📋Список команд и кнопок:\nКазино - Игра в казино \n", [[$profile], [$bonus]]);
    }

Проверим?

Кнопка появилась, но она не работает, давайте сделаем на нее нужные действия:

Находим наш switch ($payload)

        case 'profile':
            $user_id = $id_reg_check['id'];
            $user_nick =  $id_reg_check['nick'];
            $user_balance = $id_reg_check['balance'];
            $user_reg = date("d.m.y H:i:s", $id_reg_check['time']);

            $vk->sendMessage($peer_id,"$userinfo[first_name] $userinfo[last_name], Ваш игровой профиль:\n🆔 ID: $user_id \n🎫 Ник: $user_nick\n💶 Баланс: $user_balance\n⌚ Аккаунт создан: $user_reg");

            break;

А выше находим и заменяем строку :
$id_reg_check = $db->query('SELECT vk_id FROM users WHERE vk_id = ?i', $id)->fetch_assoc()['vk_id'];
if (!$id_reg_check and $id > 0) { 

На
 $id_reg_check = $db->query('SELECT * FROM users WHERE vk_id = ?i', $id)->fetch_assoc(); // Пытаемся получить пользователя который написал сообщение боту
    if (!$id_reg_check['vk_id'] and $id > 0) {

Таким образом что бы не создавать лишний запрос к MySQL мы получим данные сразу все, проверим пользователя на регистрацию и дальше будем манипулировать этими данными.

Давайте проверим что получилось:


Наш профиль работает, а значит мы сможем его дорабатывать и дополнять по мере разработки нашей игры. Конечно все зависит только от ваших пожеланий которые вы пишите в комментариях, к сожалению предложения в лс могут потеряться и забыться, поэтому рекомендую писать именно в комментарии, а мы продолжаем

Следующая на очереди, кейсы. Тут будет немного сложнее и скорее всего придется доработать немного базу данных, дамп будет вместе с исходниками.

Добавляем новую кнопку рядом к кнопке Профиль, я думаю вы помните куда мы ее вставляли 
$case = $vk->buttonText('📦 Кейсы', 'blue', ['command' => 'case']);

Добавляем так же кнопку в меню и регистрацию, сделаем ее рядом с профилем, а бонус будет переноситься на новую строку
Найти везде (в 2х местах):
[[$profile], [$bonus]]
Заменить на:
[[$case, $profile], [$bonus]]

Так у нас получится вид кнопок следующий:


Теперь повесим на кнопку функционал, но давайте еще сделаем текстовые команды кнопок, так как еще не во всех клиентах есть кнопки

Выше над командой меню вставим набор кейсов которые эмулируют кнопки:

    // Эмуляция нажатия кнопок с помощью команд
    switch ($cmd[0])
    {
        case 'кейсы':
            $payload = 'case';
            break;
        case 'бонус':
            $payload = 'bonus';
            break;
        case 'профиль':
            $payload = 'profile';
            break;
        
    }
Проверим как это работает:


Работает, небольшой комментарий к коду как это работает:
Все очень просто, в переменной $cmd храниться массив слов написанный через пробел, берем первое слово $cmd[0] (ключи массива начинаются с нуля по умолчанию) и проверяем текст. Если бот получил текст, например, профиль, мы записываем в переменную $payload 
команду соответствующую кнопке - profile, так работает импровизированная эмуляция кнопок, это выглядит более приятнее и читаемо, нежели городить конструкции if else: Пример if ($cmd[0] == 'профиль' or $payload == 'profile') {// code} 


Теперь нужно сделать логику на кейсы, ну и сами кейсы добавить тоже не помешает  🙂 

Сначала давайте предложим пользователю виды кейсов и что он может получить:
Для начала мы добавим только 2 кейса, но в следующей статье с 3 частью мы сделаем динамические кейсы, которые можно будет добавлять и удалять командой

Я покажу реализацию самых простых кейсов, но так как наш бот совсем сырой и в нем очень мало функций, то придется импровизировать и добавить несколько выпадающих товаров фейковыми, но 1 сделаем рабочим и редковыпадаемым, как это обычно и бывает:

Добавляем case 'bonus'

        case 'case': // Пока это все бутафория, потому что у нас нет еще никаких систем куда можно было применять кейсы, но смысл их работы организуем сейчас на будущий удел :)

            $case_1 = "1. 🔹 Обычный 🔹\nЦена: 1кк\n\nМожет выпасть: \n1. Золотой пропуск \n2. 7кк бакосв \n3. Кепка барыги";
            $case_2 = "2. 🔹 Премиум 🔹\nЦена: 5кк\n\nМожет выпасть: \n1. 15кк \n2. Иммунитет \n3. Титановый пропуск";

            $vk->sendMessage($peer_id,"$userinfo[first_name] $userinfo[last_name], список доступных кейсов:\n$case_1\n\n$case_2\n\nЧто бы купить кейс, пришлите команду: Кейс N (Где N номер кейса)");

            break;


Теперь где наши команды добавим команду кейс N

        if ($cmd[0] == 'кейс' and $cmd[1] > 0 and $cmd[1] < 3){ // Для 2х кейсов используем > 0 и < 3 (1,2 будет TRUE все остальное FALSE и команда игнорируется)
            

            if ($cmd[1] == 1) { // Если выбрали 1 кейс

        if($id_reg_check['balance'] >= 1000000){ // Проверка на стоимость


                $db->query("UPDATE users SET balance = balance - ?i WHERE vk_id = ?i", 1000000, $id);

                $rand_case = mt_rand(2,3); // Кол-во призов, но все мы знаем что топ выпадает реже :) давайте что то придумаем
            // Изначально выбираем среди мусора, редкий дроп выпадает отдельно, для него ниже мы пишем отдельный рандом

                $rand_rare = mt_rand(1, 10); // Делаем шанс выпадение редкого дропа 1 из 10, можно поиграться 
                if ($rand_rare == 10){ // Если выпало 10 то выдаем редкий дроп, у нас это под номером 1 (бабло)
                    $rand_case = 1; // Выбираем из массива именно этот дроп с ключем 1
                    $db->query("UPDATE users SET balance = balance + ?i WHERE vk_id = ?i", 7000000, $id); // Выдаем бонус

                }
                $array_prizes = [2 => 'Золотой пропуск', 1 => '7кк', 3 => 'Премиум кейс'];
                $vk->sendMessage($peer_id,"Вам выпадает [".$array_prizes[$rand_case]."]");


            } else {// Если бабок не хватает то
                $vk->sendMessage($peer_id,"✖ Вам не хватает валюты ✖");
            }
            }


            if ($cmd[1] == 2) { // если второй
                if ($id_reg_check['balance'] >= 5000000) { // Проверка на стоимость


                    $db->query("UPDATE users SET balance = balance - ?i WHERE vk_id = ?i", 15000000, $id);

                    $rand_case = mt_rand(2, 3); // Кол-во призов, но все мы знаем что топ выпадает реже :) давайте что то придумаем

                    $rand_rare = mt_rand(1, 10);// Делаем шанс выпадение редкого дропа 1 из 10, можно поиграться 
                    if ($rand_rare == 10) {
                        $rand_case = 1;
                        $db->query("UPDATE users SET balance = balance + ?i WHERE vk_id = ?i", 15000000, $id);

                    }
                    $array_prizes = [2 => '10 обычных кейсов', 1 => '15кк', 3 => 'Автомобиль panamera'];
                    $vk->sendMessage($peer_id, "Вам выпадает [" . $array_prizes[$rand_case] . "]");


                } else { // Если бабок не хватает то
                    $vk->sendMessage($peer_id, "✖ Вам не хватает валюты ✖");
                }

            }


        }

я добавил максимум комментариев что бы все было понятно, эта команда написана на коленке, конечно можно ее улучшить и доработать, чем мы и будем заниматься в дальнейшем, но для примера и понимания работы кейсов,  этого достаточно

Проверим:

Мне безумно повезло, с первого раза выпал редкий дроп, но повезет ли остальным?  😀 В бд новых таблиц и столбцов не появилось, значит в нее ничего не добавляем.

А что вы хотите видеть в боте дальше, решать только вам, ваши предложения можете оставлять в комментариях, а у меня на сегодня все, надеюсь эта статья будет такой же полезной как и предыдущие, обязательно обозначьте это лайком! ❤️

Исходник (при распаковке ошибка? Обновите WINRAR!):

panamera.rar

 Дамп БД
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `vk_id` int(11) NOT NULL,
  `nick` varchar(20) NOT NULL,
  `status` int(11) NOT NULL,
  `time` int(11) NOT NULL,
  `time_bonus` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `users`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `users`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;


  • Сергей Котов
  • 21.03.2021
  • 527
  • 4
Простой игровой бот для ВК, создаем игру для Вконтакте + исходники! | Часть 1
Простой игровой бот для ВК, создаем игру для Вконтакте + исходники! | Часть 1
19-04-2020, 22:05, PHP
Как создать бота Вконтакте с кнопками (keyboard)
Как создать бота Вконтакте с кнопками (keyboard)
1-04-2019, 23:36, Статьи / PHP
Создание бота ВК на inline кнопках и обновление на версию API 5.103+ подробная инструкция и примеры
Создание бота ВК на inline кнопках и обновление на версию API 5.103+ подробная инструкция и примеры
2-11-2019, 06:01, Статьи / PHP
Авторизация на сайте с помощью ВК, простой и понятный способ на PHP!
Авторизация на сайте с помощью ВК, простой и понятный способ на PHP!
3-10-2019, 14:27, Статьи / PHP
  1. Гость Александр

    Гость Александр Гость 21 марта 2021 14:46

    в чем проблема заливать архив в .ZIP?..

    1. Ваше высочество

      Ваше высочество Гость 21 марта 2021 14:58

      В чем проблема скачать winrar?

    2. Сергей Котов

      Сергей Котов@Сергей Котов 22 марта 2021 13:05

      RAR сжимает сильнее, нам не принципиально, можем и в ZIP паковать, но как показывает практика почти у всех есть WinRAR

  2. Артем

    Артем Гость 23 марта 2021 04:44

    Спасибо

{login}

Твой комментарий..

Заказывай!
Разработка ботов на заказ, любой сложности, обращаться:
 VK KOTOFF.net - Сообщество, в личные сообщения или по контактам указанным там 
 mail: [email protected]

  • Новости
  • Блог
  • Игры
  • Обновления
  • Программы
  • Статьи
    • PHP
    • Python
  • DLE
    • Шаблоны
    • Модули
    • Хаки
  • Магазин
Комментарии
Динамическая обложка для группы ВК, последний подписчик, топ комментатор и прочее
Ждём. 
Динамическая обложка для группы ВК, последний подписчик, топ комментатор и прочее
Будет, ориентировочно апрель - май
Динамическая обложка для группы ВК, последний подписчик, топ комментатор и прочее
Сергей можно ли узнать будет ли статья?
Скрипт исключения из беседы VK и не только, написанный на PHP
этот код работает и с доменами юзеров, вк всегда присылает один формат [idцифры|Домен или любое
Скрипт исключения из беседы VK и не только, написанный на PHP
ты внимательно на скрин глянь, у тебя @id+цифры, а у меня в беседе некоторые с никами, т.е. вместо
Все комментарии..
Полный список последних комментариев
Лучшие новости
Простой игровой бот для ВК, создаем игру для Вконтакте + исходники! | Часть 2

Простой игровой бот для ВК, ...

21-03-2021, 13:41
Открытие форума на KOTOFF.net

Открытие форума на ...

21-03-2021, 11:22
Всего публикаций: 50
Добавлено за сутки: +0
Записей в блоге: 0
Добавлено за сутки: +0
Комментариев: 703
Добавлено за сутки: +1
Пользователей: 3090
Добавлено за сутки: +3
Полная статистика..
Подробная статистика сайта
Loading...

Нашли ошибку?
Вы можете сообщить об этом администрации.
Выделив текст нажмите CTRL+Enter

Полезные ссылки
  • О проекте
  • Наши контакты
  • Администрация
  • Рекламные материалы
  • Идеи и предложения
  • Ответы на вопросы
Информация
  • Условия сделки
  • Способы оплаты
  • Поддержка / F.A.Q
  • Онлайн документация
  • Статистика сайта
  • Список пользователей
Услуги/Работа
  • Разработка ботов ВК
  • Обновление проекта
  • Консультация/поддержка
KOTOFF.net

Copyright © Footer 2019-2021. All right reserved.
KOTOFF.net - Уроки по PHP, SQL, IT новости
Быстрый вход

Используйте социальные сети для быстрой регистрации и авторизации.

Google
ВКонтакте
Яндекс
Mail.ru
Создать аккаунт / Регистрация
Авторизация

Я забыл свой пароль