• Уважаемые пользователи!
    За решением проблем с работой плагинов, компиляцией, падением сервера и прочими обращайтесь в раздел Помощи!
    Данная тема предназначена для обсуждения плагина, его функционала, принципа работы и предложений.

Разработка Объединяем кейсы сайта с плагинами

sania886

Пользователь
Сообщения
83
Реакции
27
Баллы
18
Техническое задание
Создать плагин, который сверяет слов в чате, с записями в таблице. Если слова совпадают, вызывать функцию с натива.
Объединяем кейсы сайта с плагинами

Цель
Администратор сможет добавлять в кейсы, любые плагины

Способ получения призов
Ввод ключа в чат/консоль

Должно быть
1. Сайт
2. Кейсы на сайте
3. Плагин с призом

Принцип работы

Администратор в настройках кейса указывает название столбца таблици
Это же название указывает в конфиге плагина, и которая закрепляется за указанным столбцом
Игрок выигрывает приз, ему отображается ключ
Игрок вводит ключ в чат/консоль
Плагин понимает что это за ключ, и вызывает функцию в плагине призов​

Подробно

Настройка на сайте:
1. В админ центре сайта, в разделе модули в блоке "cases", добавляем кнопку "Настройка таблици"
1.jpg

2. Нажав на кнопку "Настройка таблици", открывается окно. Где администратор создает столбики в таблице
2.jpg
Нажимаем на кнопку "Создать", появляется место, где указываешь данные.
Столбец = skin_deagle
Название = Скин дигла

3. Настраиваем выигрыши кейсов.
Выбираем что будет выдаваться. Выбираем "Ключи"
3.jpg
Выбираем приз
4.jpg

4. Игрок выиграл "Скин дигла".
В столбце "skin_deagle" генерируется ключ, к примеру "L23JC9" (не длинный, что бы игрок смог с 1 раза, ввести без ошибок)
5.jpg
6.jpg


Плагин
1. Делаем плагин приза
C++:
//Что-бы не пропал скин, делаем базу данных, и сохраняем полученный приз
#include <amxmodx>
#include <fakemeta_util>
#include <colorchat>


new v_deagle_pilot[] = "models/menu_guns/deagle/v_pilot.mdl";
new p_deagle_pilot[] = "models/menu_guns/deagle/p_pilot.mdl";


new weaponID[33], deagle[33];

public plugin_init()
{
    register_plugin("Skin Deagle", "0.1", "Razrabotka");
    register_event("CurWeapon", "CurWeapon", "be", "1=1");
}

public plugin_precache()
{
    precache_model(v_deagle_pilot);
    precache_model(p_deagle_pilot);
}

public plugin_natives ()
{
    register_native("skin_deagle", "skin_deagle", 1);
}

public skin_deagle(id)
{
    deagle[id] = 1;
    ColorChat(id,NORMAL, "^4[Кейсы] ^1Вы получили скин ^4ДИГЛА");
    CurWeapon(id)
}

public CurWeapon(id)
{
    weaponID[id] = read_data(2);
    if(weaponID[id] == CSW_DEAGLE && deagle[id] == 1)
    {
        set_pev(id, pev_viewmodel2, v_deagle_pilot);
        set_pev(id, pev_weaponmodel2, p_deagle_pilot);
        weaponID[id] = CSW_DEAGLE;
        return 0;
    }
    return 0;
}

2. Делаем плагин вызова натива
И здесь я немного застрял.
Идея такова.
Плагин отлавливает чат, сверяет с таблицей, если это оказался ключ, то вызывает функцию которая зарегистрированная в нативе.
В нашем случае "skin_deagle"
После того как плагин вызвал натив, он удаляет ключ, что бы второй раз его не активировать





Дополнения
1. Что бы плагин не сильно пыхтел, то ключи генерировать с прибавкой слова "KEY". К пример, не L23JC9, а KEYL23JC9.
Таким образом плагин будет отсеивать чат, а не сверять каждую писанину с таблицей. А если начало слова "KEY", то он уже смотрит таблицу

2. Я не очень хорошо знаю sql, и хз можно ли так:
Когда плагин генерирует код, и записывает его, то он смотрит таблицу.
К примеру у нас 10 строк в таблице
То он не пишет 11 строку, а..
Смотрит 1 строку - столбец занят
Смотрит 2 строку - столбец занят
Смотрит 3 строку - свободен
Пишем код в 3 строку


Итог

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


По поводу исполнения задумки.
Работу над кейсами. Хотелось бы видеть в исполнении Стаса
Работу над плагином. Хотелось бы видеть в исполнении Жени [zhorzh78]

Если кому то понравилась задумка, ставим лайк
Больше лайков = больше старта



 
Таблицы модуля нужны. Таблицы, где ключи хранятся.
Кто будет писать плагины дополнений? Без сохранения призов в БД можно сделать. Т.е. скин, модель- только на карту
 
@zhorzh78, Писал Стасу, хз или возьмется. Так как он хочет добавить новый способ выдачи призов. Но его вариант не очень.
Так же он говорил что это будет только под 1.6. Хоть кейсы будут создавать ключи, которые можно использовать где угодно.
Главное что бы работало с sql.
На данный момент, стоит вопрос, будет ли Стас делать: создания столбцов, название которых задает администратор, и генератор ключей в заданных столбцах.

Плагины дополнения, писать не нужно. Моя идея заключается в том, что под эту систему, можно привязать что угодно.
В настройках плагина администратор указывает название столбца в таблице, и натив который относится к этому столбцу (столбцов и нативов можно ставить хоть до усрачки, главное что бы эти столбци были в таблице).
Исходник который я добавил. Это для примера. Не важно есть там бд, нету. Это уже головной боль администратора. Администраторы могут сами писать плагин призов / качать из интернета, заказывать и тд.
Плагин "Объединяем кейсы сайта с плагинами", не должно волновать что там будет.
Его задача:
1. Сверить ключ введенный игрокам, с ключом в бд (который генерировал сайт/кейсы)
2. Понять в каком столбце находится ключ
3. Вызвать натив который администратор привязал под этот столбец
4. Удалить ключ с бд (что бы 2 раз не срабатывало)

Что идет за нативом, это должно волновать только администратора. Хоть порнуху включать))
 
@sania886, какой смысл генерировать ключи, если можно создать колонку в базе данных, в которую будет заноситься наличие приза.
 
@sania886, ты слишком узко мыслишь. В том же меню создать кнопку "Получить приз".
 
@V1adJkee, я дал идею по развитию кейсов. И не говорю что это идеал. Расскажи как ты видишь это. Возможно это будит намного круче.
Но как я понимаю, это связано с steam id, что не очень безопасно, и порой сложно для тех кто не умеет читать.
А если ты говоришь о флагах, то тогда теряется весь смысл идеи. Так как и сейчас по флагам можно сделать.
 
А название столбца для анев,званий или же опыта какие?
 
Kirill, это лишь задумка, она не реализована
 
Выглядит очень классно. Ибо сделали модуль кейсов, а по факту кроме привилегий и баланса ничего разыгрывать нельзя... Но вопрос, если сделать 15-20 скинов, сильно ли это повлияет на работоспособность сервера?
 
Rixodia, Ну ты накидай 20 скинов, потом сиди жди фаст дл свой минуту
 
Sokol, Думаешь большое кол-во игроков отсеется на стадии загрузки, даже учитывая то, что она единоразовая?
 
Rixodia, Ну вероятность все равно крайне высока. Мало кому хочется ждать долгую загрузку
 
Назад
Сверху