- Техническое задание
- Создать плагин, который сверяет слов в чате, с записями в таблице. Если слова совпадают, вызывать функцию с натива.
Объединяем кейсы сайта с плагинами
Цель
Администратор сможет добавлять в кейсы, любые плагины
Способ получения призов
Ввод ключа в чат/консоль
Должно быть
1. Сайт
2. Кейсы на сайте
3. Плагин с призом
Принцип работы
Администратор в настройках кейса указывает название столбца таблици
Это же название указывает в конфиге плагина, и которая закрепляется за указанным столбцом
Игрок выигрывает приз, ему отображается ключ
Игрок вводит ключ в чат/консоль
Плагин понимает что это за ключ, и вызывает функцию в плагине призов
Цель
Администратор сможет добавлять в кейсы, любые плагины
Способ получения призов
Ввод ключа в чат/консоль
Должно быть
1. Сайт
2. Кейсы на сайте
3. Плагин с призом
Принцип работы
Администратор в настройках кейса указывает название столбца таблици
Это же название указывает в конфиге плагина, и которая закрепляется за указанным столбцом
Игрок выигрывает приз, ему отображается ключ
Игрок вводит ключ в чат/консоль
Плагин понимает что это за ключ, и вызывает функцию в плагине призов
Подробно
Настройка на сайте:
1. В админ центре сайта, в разделе модули в блоке "cases", добавляем кнопку "Настройка таблици"
2. Нажав на кнопку "Настройка таблици", открывается окно. Где администратор создает столбики в таблице
Нажимаем на кнопку "Создать", появляется место, где указываешь данные.
Столбец = skin_deagle
Название = Скин дигла
3. Настраиваем выигрыши кейсов.
Выбираем что будет выдаваться. Выбираем "Ключи"
Выбираем приз
4. Игрок выиграл "Скин дигла".
В столбце "skin_deagle" генерируется ключ, к примеру "L23JC9" (не длинный, что бы игрок смог с 1 раза, ввести без ошибок)
Плагин
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]
Если кому то понравилась задумка, ставим лайк
Больше лайков = больше старта