akvorok.ego
Участник
- Сообщения
- 314
- Реакции
- 186
Плагин для проведения поединков между игроками.
В планах добиться того чтобы он мог заменить все существующие плагины арен, и дуэлей, а также превзойти их по функционалу.
Реализатор:
- Я - KOROVKA
Поддерживаемые игры:
- CS:S (v34/Steam)
- CS:GO
Дальше без лишних комментариев покажу что уже есть и работает в трех выше перечисленных играх. Стоит подметить что плагин модульный и имеет обширное api в чём можно убедиться ниже.
Модуль LR WEB - Автор Flames
C-подобный:
"Face2Face"
{
"Settings"
{
// Сколько минимум игроков должно быть на сервере для того, чтобы плагин предлагал устроить поединок?
//
"min_players" "4"
// Учитывать наблюдателей для "min_players"?
//
// 0 - Выключить | 1 - Включить
//
"min_players_spec" "1"
// Время отсчёта до начала поединка в секундах.
//
// 0 - Запустить поединок мгновенно.
//
"start_timer" "3"
// Бессмертие дуэлянтов во время "start_timer", чтобы мир никак не мог на ниx воздействовать и помешать началу поединка.
//
// 0 - Выключить | 1 - Включить
//
"start_god" "1"
// Поединок закончился. Сколько секунд должно пройти для того, чтобы дуэлянты снова смогли получать урон?
//
// Если указать "0", то урон можно будет наносить сразу.
//
"end_god_timer" "3"
// Время поединка в секундах.
//
"timer" "30"
// Что делать с дуэлянтами, если время "timer" вышло, но никто не умер?
//
// 0 - Ничего не делать.
// 1 - Убить случайного.
// 2 - Убить обоих.
// 3 - Убить того кто имеет меньше здоровья. Если здоровья одинаковое количество, умрут оба.
//
"end_peace_punishment" "1"
// Сколько здоровья выдавать дуэлянтам?
//
// Если указать "min:max", то выдастся рандомное количество здоровья в заданном диапазоне.
//
"hp" "100"
// Как будет изменяться здоровье после завершения поединка?
//
// 0 - Выключить | 1 - Восстановить | 2 - Вернуть старое значение
//
"end_hp_mode" "2"
// Будет ли выдаваться броня на время поединка?
//
// 0 - Выключить | 1 - Броня и шлем | 2 - Броня | 3 - Забрать броню
//
"armor" "3"
// Как будет изменяться броня после завершения поединка?
//
// 0 - Выключить | 1 - Выдать | 2 - Забрать | 3 - Вернуть старое значение
//
"end_armor_mode" "3"
// Как будет изменяться наличие шлема после завершения поединка?
//
// 0 - Выключить | 1 - Выдать | 2 - Забрать | 3 - Вернуть
//
"end_helmet_armor_mode" "3"
// Комбинирование режимов.
//
// 0 - Выключить | 1 - Включить
//
"mode_combination" "1"
// Стандартный режим.
//
// 0 - Выключить | 1 - Включить
//
"mode_default" "1"
// Режим стрельбы только в голову.
//
// 0 - Выключить | 1 - Включить
//
"mode_head" "1"
// Режим стрельбы по очереди.
//
// 0 - Выключить | 1 - Включить
//
"mode_queue" "1"
// Режим стрельбы без зума.
//
// 0 - Выключить | 1 - Включить
//
"mode_zoom" "1"
// Через сколько секунд перезарядится оружие в режиме очереди?
//
"mode_queue_refresh_time" "0.5"
// Будут ли маяки на дуэлянтах во время поединка?
//
// 0 - Выключить | 1 - Включить
//
"indicator" "1"
// Путь до звука который исходит от маяков на дуэлянтах во время поединка.
//
// Если оставить пустым звука не будет.
//
"indicator_sound" "buttons/blip1.wav"
// Если сторонний игрок ожил во время поединка, что с ним делать?
//
// 0 - Убить | 1 - Переместить в наблюдатели
//
"alive_player_punishment" "0"
// Через сколько секунд будет открыто меню с настройками поединка?
//
// Если указать "0", то настройки откроются сразу.
//
"start_settings_timer" "3"
// Сколько секунд будет у случайно выбранного дуэлянта настроить параметры поединка?
//
// 0 - Выключить меню настроек. Поединок запустится сразу.
//
"settings_timer" "10"
// Бессмертие дуэлянтов во время настройки поединка.
//
// 0 - Выключить | 1 - Включить
//
"settings_god" "1"
// Блокировка возможности атаковать во время настройки поединка.
//
// 0 - Выключить | 1 - Включить
//
"settings_attack_block" "1"
// Будет ли доступна кнопка рандом в меню настроек поединка?
//
// 0 - Выключить | 1 - Включить
//
"settings_menu_random" "1"
// Будет ли доступна кнопка назад в меню настроек поединка?
//
// 0 - Выключить | 1 - Включить
//
"settings_menu_back_button" "1"
// Куда будет выводится информация с настройками поединка?
//
// 0 - Выключить | 1 - Чат | 2 - Область подсказок | 3 - Чат и область подсказок
//
"settings_info_type" "1"
// Время отображения информации с настройками поединка в секундах.
//
"settings_info_timer" "3"
// Будет ли добавлена кнопка "Автоматического выбора" в настройки?
//
// 0 - Выключить | 1 - Включить
//
"menu_auto_question" "1"
// Администраторы с какими флагами будут иметь доступ к админ меню?
//
// Если оставить пустым, то меню администратора будет отключено.
//
"admin_menu_flags" "z"
// Дополнительные команды для открытия меню настройки.
//
"menu_commands" ""
// Дополнительные команды для открытия админ меню.
//
"admin_menu_commands" ""
// Сколько секунд будет длится конец раунда запущенный плагином?
//
"round_end_timer" "5.0"
// Будет ли плагин предлагать устроить поединок когда установлена C4?
//
// 0 - Выключить | 1 - Включить
//
"planted_c4" "1"
// На сколько секунд будут заморожены игроки после вопроса о поединке?
// Если оба игрока ответят "Да", то заморозка не будет снята до начала поединка.
//
// 0 - Выключить
//
"freeze_question_timer" "0"
// На сколько секунд будут заморожены игроки после запуска отсчета до начала поединка?
//
// 0 - Выключить
//
"freeze_start_timer" "0"
// Путь до звука заморозки.
//
// Если оставить пустым звука не будет.
//
"freeze_sound" "physics/glass/glass_impact_bullet4.wav"
// Тег перед сообщениями в чате.
//
"chat_tag" "{GREEN}[Face2Face]"
// Тип базы данных.
//
// 0 - MySQL | 1 - SQL | -1 - Отключено
//
"db_type" "1"
// Будет ли вестись лог победных убийств в БД?
//
// 0 - Выключить | 1 - Включить
//
"db_logs" "1"
// Сколько дней игрок должен не заходить на сервер чтобы его записи были удалены из БД?
//
// 0 - Выключить
//
"db_delete_old_entries" "60"
// Название таблицы в БД.
//
"db_table_name" "face2face"
}
}
C-подобный:
"Face2Face"
{
"Weapons Settings"
{
// Тут указывается оружие, которое будет предлагаться дуэлянтам.
//
// Параметр "slot" определяет слот оружия. Обязательный к заполнению.
// 0 - Автомат
// 1 - Пистолет
// 2 - Нож
// 3 - Граната
//
// Параметр "give_knife" определяет будет ли выдан нож как дополнительное оружие. Если параметр не указан, то нож не будет выдаваться.
//
// Параметр "damage_multiplier" определяет множитель урона. Если параметр не указан, то урон будет стандартным.
//
// Параметр "access_mode" определяет при каких настройках режима игры будет доступ к оружию. Обязательный к заполнению.
// default - Стандартный режим.
// head - Убийство только в голову.
// queue - Стрельба по очереди.
// zoom - Без использования прицела.
// Если использовать разделитель ":", то можно указать несколько режимов при которых будет доступно оружие.
// Например: "default:queue:zoom"
//
// Параметр "access_game" определяет эксклюзивом какой игры является оружие. Если параметр не указан, то значит оружие будет доступно во всех играх.
// csgo
// css
// css_v34
// Если использовать разделитель ":", то можно указать несколько игр.
// Например: "css:css_v34"
"weapon_fists"
{
"slot" "2"
"damage_multiplier" "2.5"
"access_mode" "default"
"access_game" "csgo"
}
"weapon_knife"
{
"slot" "2"
"access_mode" "default"
}
"weapon_awp"
{
"slot" "0"
"give_knife" "1"
"access_mode" "default:head:queue:zoom"
}
// и тд.
}
}
C-подобный:
enum EventType {
Face2Face_Question, // Вопрос о том будет ли проведена дуэль отправлен дуэлянтам.
Face2Face_CreateSettingsTimer, // Таймер до открытия настроек дуэли запущен.
Face2Face_Settings, // Настройки дуэли открыты.
Face2Face_Start, // Подготовка к дуэли начата.
Face2Face_Duel, // Дуэль начата.
Face2Face_End, // Дуэль закончилась.
Face2Face_EndDisconnect, // Дуэль закончилась по тому что один из участников отключился.
Face2Face_Cancel, // Дуэль ещё не началась и была отменена.
Face2Face_CancelDisconnect, // Дуэль ещё не началась и была отменена по тому что один из участников отключился.
Face2Face_PreChanges // До того как произойдет изменение здоровья/брони/оружия/позиции участников дуэли.
}
enum EndType {
Face2Face_End_None,
Face2Face_CT,
Face2Face_Terrorist,
Face2Face_Draw
}
enum Question {
Face2Face_None = -1,
Face2Face_No,
Face2Face_Yes
}
enum ConfigParam {
Face2Face_MinPlayers = -1,
Face2Face_MinPlayersSpec = 0,
Face2Face_StartTimer = 1,
Face2Face_EndGodTimer = 2,
Face2Face_Timer = 3,
Face2Face_EndPeacePunishment = 4,
Face2Face_EndHPMode = -2,
Face2Face_Armor = 14,
Face2Face_EndArmorMode = -3,
Face2Face_EndHelmetArmorMode = -4,
Face2Face_ModeCombination = 5,
Face2Face_ModeDefault = 6,
Face2Face_ModeHead = 7,
Face2Face_ModeQueue = 8,
Face2Face_ModeZoom = 9,
Face2Face_Indicator = 10,
Face2Face_AlivePlayerPunishment = 11,
Face2Face_StartSettingsTimer = 12,
Face2Face_SettingsTimer = 13,
Face2Face_PlantedC4 = 15,
Face2Face_FreezeQuestionTimer = 16,
Face2Face_FreezeStartTimer = -5,
Face2Face_DatabaseType = 17,
Face2Face_DatabaseLogs = 18
}
enum Setting {
Face2Face_Default,
Face2Face_Head,
Face2Face_Queue,
Face2Face_Zoom
}
enum StatsParam {
Face2Face_WinTotal,
Face2Face_WinDefault,
Face2Face_WinHead,
Face2Face_WinQueue,
Face2Face_WinZoom,
Face2Face_LoseTotal,
Face2Face_LoseDefault,
Face2Face_LoseHead,
Face2Face_LoseQueue,
Face2Face_LoseZoom
}
enum ItemType {
Face2Face_Call,
Face2Face_Toggle
}
enum ItemToggle {
Face2Face_Item_None = -1,
Face2Face_Off,
Face2Face_On
}
native bool F2F_IsClientDuelist(int client); // Вернет является ли игрок дуэлянтом.
native int F2F_GetClientTeamDuelist(int team); // Вернет индекс участника дуэли из нужной команды.
native int F2F_GetClientEnemyDuelist(int client); // Вернет индекс соперника.
native int F2F_GetClientWinnerDuelist(); // Вернет индекс победителя в дуэли. (return: 0 - Закончилась ничьей или была отменена)
native int F2F_GetClientSettingsDuelist(); // Вернет индекс участника дуэли который получил доступ к настройке. (return: 0 - Настройка дуэли отключена)
native Question F2F_GetDuelQuestionTeam(int team); // Вернет вариант ответа (Да или Нет) выбранный игроком из нужной команды. (Face2Face_None: Игрок ничего не выбрал)
native Question F2F_GetDuelQuestionClient(int client); // Вернет вариант ответа (Да или Нет) выбранный игроком. (Face2Face_None: Игрок ничего не выбрал)
native bool F2F_GetUseGodMode(); // Вернет находятся ли сейчас дуэлянты в режиме бессмертия.
native bool F2F_GetUseAttackBlock(); // Вернет находятся ли сейчас дуэлянты в режиме блокировки атаки.
native bool F2F_GetUseFreeze(); // Вернет находятся ли сейчас дуэлянты в заморозке.
native bool F2F_GetStartDuel(); // Вернет запущена ли сейчас дуэль.
native bool F2F_GetPreStartDuel(); // Вернет находится ли дуэль в процессе запуска.
native bool F2F_GetStatusDuelQuestion(); // Вернет был ли вопрос о проведение дуэли. (Примечание: Если дуэль отменяется, то и статус вопроса сбрасывается)
native bool F2F_SetStatusDuelQuestion(bool bStatus); // Установит был ли вопрос о проведение дуэли. (return: false - Статус не установлен)
native bool F2F_GetDuelWeaponClassName(char[] sWeaponClassName, int maxlen); // Вернет class name оружия которое используется дуэлянтами. (return: false - Оружие не выбрано)
native bool F2F_GetDuelSetting(Setting param); // Вернет состояние параметра из настроек дуэли.
native int F2F_GetDuelWeaponSlot(); // Вернет слот оружия которое используется дуэлянтами. (return: -1 - Оружие не выбрано)
native bool F2F_GetDuelWeaponKnife(); // Вернет имеют ли дуэлянты нож как дополнительное оружие. (return: false - Нож не выдан)
native bool F2F_GetDuelWeaponDamageMultiplier(char[] sValue, int maxlen); // Вернет множитель урона на оружие которое используется дуэлянтами. (return: false - Оружие не выбрано)
native int F2F_GetDuelWeaponTeam(int team); // Вернет индекс оружия участника дуэли из нужной команды. (return: -1 - Оружие не выдано)
native int F2F_GetDuelWeaponClient(int client); // Вернет индекс оружия участника дуэли. (return: -1 - Оружие не выдано)
native bool F2F_CreateDuel(int client, int client_opponent, bool bAlivePlayerPunishmentImmunity = false, bool bTeleport = true, bool bRandom = true, bool bDefault = false, bool bHead = false, bool bQueue = false, bool bZoom = false, char[] sWeaponClassName = ""); // Выполнит запуск дуэли. (return: false - В случае неудачи) (Примечание: Действуют почти все стандартные условия)
native bool F2F_KillDuel(); // Выполнит остановку дуэли. (return: false - Нет активной дуэли)
native bool F2F_IsAvailableOtherAlivePlayers(int team = -1); // Вернет есть ли живые игроки кроме дуэлянтов.
native int F2F_GetConfigParam(ConfigParam param); // Вернет значение параметра из конфига.
native void F2F_GetChatTag(char[] sChatTag, int maxlen); // Вернет тег для сообщений из чата.
native int F2F_GetClientStatsParam(int client, StatsParam param); // Вернет значение параметра из статистики игрока. (Примечание: Если база данных не подключена натив не будет работать)
native Database F2F_GetDatabase(); // Вернет клон HANDLE базы данных.
native void F2F_GetDatabaseTableName(char[] sTableName, int maxlen); // Вернет название таблицы в базе данных.
forward void F2F_OnEvent(int client_ct, int client_t, EventType event, EndType value); // Вызывается при определенных событиях.
forward void F2F_OnEventSelectQuestion(int client, Question value); // Вызывается при выборе одного из вариантов ответа (Да или Нет). (Примечание: Авто выбор "Да" который делают боты, тоже вызывает данный форвард)
forward Action F2F_OnEventCreateQuestion(int client_ct, int client_t, Question& value_ct, Question& value_t); // Вызывается при создание вопроса о проведение дуэли. (return: Plugin_Handled или Plugin_Stop - Блокировать создание вопроса | Plugin_Changed - Применить изменения)
forward bool F2F_OnEventCreateSettings(int& client, KeyValues& kv_settings); // Вызывается при создание настроек и выборе игрока. (return: true/false - Будут ли применены изменения)
forward void F2F_OnEventPlayerLoad(int client); // Вызывается после получения данных о игроке. (Примечание: Если база данных не подключена форвад не будет работать)
forward void F2F_OnDatabaseConnected(); // Вызывается после подключения к базе данных.
forward void F2F_OnStart(); // Вызывается после загрузки F2F.
forward void F2F_OnEnd(); // Вызывается после выгрузки F2F.
native bool F2F_IsActive(); // Вернет запущен ли сейчас F2F.
native void F2F_SendClientDuelMenu(int client, bool bLastPosition = false); // Отправит игроку меню настроек.
native void F2F_SendClientDuelAdminMenu(int client, bool bBackButton = false); // Отправит игроку меню администратора. (Примечание: Меню откроется даже если игрок не имеет доступа)
native bool F2F_RegItemDuelMenu(char[] sIdName, ItemType value, ItemToggle default_toggle = Face2Face_On); // Регистрирует пункт в меню настроек. (default_toggle: Определяет состояние пункта по умолчанию) (return: false - В случае неудачи)
native bool F2F_UnRegItemsDuelMenu(); // Удаляет все пункты в меню настроек созданные плагином. (return: false - В случае неудачи)
native bool F2F_UnRegItemDuelMenu(char[] sIdName); // Удаляет пункт в меню настроек созданный плагином. (return: false - В случае неудачи)
native ItemToggle F2F_GetClientItemToggle(int client, char[] sIdName); // Вернет состояние переключателя у игрока.
native bool F2F_SetClientItemToggle(int client, char[] sIdName, ItemToggle toggle); // Установит состояние переключателя у игрока. (return: false - В случае неудачи)
native bool F2F_GetClientItemsToggle(int client); // Выполнит загрузку сохраненных пунктов меню игрока. (return: false - В случае неудачи)
forward void F2F_OnEventPlayerItemToggleLoad(int client, char[] sIdName, ItemToggle toggle); // Вызывается для зарегистрированного модуля после получения параметра из меню настроек у игрока. (Примечание: Может выполняться когда игрок подключается)
forward void F2F_OnEventSelectItem(int client, char[] sIdName, ItemType value, ItemToggle toggle); // Вызывается для зарегистрированного модуля при нажатие на пункт в меню настроек.
forward bool F2F_OnEventToggleItem(int client, char[] sIdName, ItemToggle toggle, bool bNative); // Вызывается при переключение любого зарегистрированного параметра в меню настроек. (return: true/false - Будет ли изменено значение параметра)
forward Action F2F_OnEventAddItem(int client, char[] sIdName, ItemType value, ItemToggle toggle, int& style); // Вызывается при добавление любого зарегистрированного пункта в меню настроек. (return: Plugin_Handled или Plugin_Stop - Блокировать добавление пункта | Plugin_Changed - Применить изменения)
forward bool F2F_OnEventCreateDuelMenu(int client, Menu menu); // Вызывается после формирования меню настроек. (return: true/false - Будет ли создано меню)
native bool F2F_IsClientHasAccessToAdminMenu(int client); // Вернет имеет ли игрок доступ к админ меню.
native bool F2F_ThisMapHasStartPoints(char[] sMapName = ""); // Вернет есть ли на карте стартовые точки. (Примечание: Если оставить sMapName пустым, то проверит текущую карту)
native ArrayList F2F_GetArrayStartPointsNumbers(); // Вернет массив с номерами активных стартовых точек. (Примечание: Данный натив возвращает оригинальный массив)
native KeyValues F2F_GetKeyValuesData(); // Вернет клон HANDLE KeyValues где хранятся данные.
native ArrayList F2F_GetArraySaveItemsTeam(int team); // Вернет массив с сохраненными предметами участника дуэли из нужной команды. (return: null - Пусто) (Примечание: Данный натив возвращает клон оригинального массива)
native ArrayList F2F_GetArraySaveItemsClient(int client); // Вернет массив с сохраненными предметами участника дуэли. (return: null - Пусто) (Примечание: Данный натив возвращает клон оригинального массива)
native bool F2F_RemoveArraySaveItemTeam(int team, char[] sClassName); // Удаляет сохраненный предмет участника дуэли из нужной команды. (return: false - В случае неудачи)
native bool F2F_RemoveArraySaveItemClient(int client, char[] sClassName); // Удаляет сохраненный предмет участника дуэли. (return: false - В случае неудачи)
forward void F2F_OnEventGivePlayerItem(int client, int index, char[] sClassName); // Вызывается когда игрок получает свой предмет обратно.
К плагину уже написано некоторое количество модулей, такие как телепортация, звуки, эффекты, и другие..
Некоторые модули писал я, а некоторые Wend4r, но он отказался от дальнейшей разработки, теперь модулями занимаюсь только я.
Изначально сбор денег на написание этого плагина происходил похожим образом, но занимался этим не я, теперь попробую развить данный плагин дальше, а за одно и подзаработать.
Итак, как же будет распространяться плагин?
Чтобы получить доступ к плагину и дальнейшим его обновлениям, которые несомненно будут, нужно зайти в дискорд и задонатить 7$ или больше на один из реквизитов ниже, после чего отписать мне в лс либо прямо в дискорд.
7$ - Это минимум который необходимо скинуть для получения доступа.
Донат:
- Карта (Visa/MasterCard)
Планы:
- Настраиваемая арена.
Сохраняемые точки спавна для начала поединка.- Выполнено.- Новые режимы поединков. (Если будут здравые идеи)
- Модули. (Сейчас 32 шт.)
Все деньги с донатов будут продвигать доработку плагина.
Плагин и модули распространяются с исходниками.
Discord - Face2Face (UvzxZ8M)
Последнее редактирование: