[LSD] Core

Ядро плагина [LSD] Core 1.1.7

Нет прав для скачивания
Поддерживаемые игры
  1. CS: Source (OrangeBox)
  2. CS: Source (v34)
  3. CS: GO
Lovely Sweet Duels🤡
Система для проведения дуэлей между последними двумя игроками в конце раунда.
Вроде как работает на CSS.

Модули:
  • [LSD] Weapons - Выдает дуэлянтам оружие.
  • [LSD] CR - Не дает дуэлям запуститься во время кастомных раундов.
  • [LSD] Bomb - Блокирует запуск дуэлей при установленной бомбе.
  • [LSD] Beacon - Устанавливает на дуэлянтов маяк.
  • [LSD] Base Features - Изменение здоровья, брони, скорости, гравитации, урона на время дуэли.
  • [LSD] NoZoom - Отключает прицел на время дуэли.
  • [LSD] Teleport - Телепортирует игроков друг к другу перед началом дуэли.
  • [LSD] Vip Features Manager - Отключает вип-функции на время дуэли.
  • [LSD] Overlays - Отображает дуэлянтам оверлеи.
  • [LSD] OO - Отключает ограничение оружия на время дуэли.
  • [LSD] Only HeadShot - Добавляет запрет убийства не в голову.
  • [LSD] Server Commands - Выполнение серверных команд при старте и завершении дуэли.
  • [LSD] Mode selector - Позволяет игрокам выбрать режим дуэли перед ее началом.
💸💸💸Поддержать разработку💸💸💸
🥝QIWI: D4CKLOH
💰WMR: R911282388550
🔫ЯД: 410016485390252

API:
#if defined _lsd_included
#endinput
#endif
#define _lsd_included

#define LSD_Stage_NotStarted 0 //Дуэль не началась.
#define LSD_Stage_Vote 1 //Голосование.
#define LSD_Stage_Prep 2 //Подготовка.
#define LSD_Stage_Live 3 //Дуэль.
#define LSD_Stage_Finished 4 //Дуэль завершена.
#define LSD_Stage_Cancelled 5 //Дуэль отменена.

#define LSD_Reason_WinnerSelected 0 //Победитель выбран
#define LSD_Reason_Draw 1 //Ничья
#define LSD_Reason_Cancelled 2 //Дуэль отменена

#define LSD_Duelist_T 0
#define LSD_Duelist_CT 0

/*
* Вызывается когда игрок нажимает на пункт в меню.
*
* client - id игрока.
*
* iID - id пункта.
*/
typedef LSDOnItemPressed = function void(int client, int iID);

/*
* Вызывается когда игроку отображается пункт в меню или ссылка.
*
* client - id игрока.
*
* iID - id пункта.
*
* sBuff - Буфер.
*
* maxsize - Максимальный размер строки.
*/
typedef LSDOnItemDisplay = function void(int client, int iID, char[] sBuff, int maxsize);

/*
* Вызывается когда игроку отображается стиль пункта в меню.
*
* client - id игрока.
*
* iID - id пункта.
*/
typedef LSDOnItemDraw = function int(int client, int iID);

/*
* Возвращает id последнего победителя/проигравшего или одно из значений:
* 0 - Дуэль не состоялась.
* -1 - Дуэль завершилась ничьей.
*
* bLoser - Вернуть id проигравшего.
*/
native int LSD_GetLastWinnerOrLoser(bool bLoser = false);

/*
* Возвращает id дуэлянта.
*
* bSecond - Вернуть id второго дуэлянта.
*/
native int LSD_GetDuelist(bool bSecond = false);

/*
* Возвращает время таймера до следующей стадии.
*/
native int LSD_GetCurrentTime();

/*
* Возвращает имя режима текущей дуэли.
*
* sBuff - Буфер.
*
* maxsize - Максимальный размер строки.
*/
native void LSD_GetMode(char[] sBuff, int maxsize);

/*
* Возвращает конфиг.
*
* bCurrent - Перейти в секцию текущей дуэли.
*/
native KeyValues LSD_GetConfig(bool bCurrent = false);

/*
* Возвращает указатель базы данных.
*/
native Database LSD_GetDatabase();

/*
* Возвращает стадию текущей дуэли (LSD_Stage_*).
*/
native int LSD_GetStage();

/*
* Отправляет сообщение в чат для игрока.
*
* client - id игрока.
*
* sMsg - Текст сообщения.
*
* ... - Параметры.
*/
native void LSD_PrintToChat(int client, const char[] sMsg, any:...);

/*
* Отправляет сообщение в чат для всех.
*
* sMsg - Текст сообщения.
*
* ... - Параметры.
*/
native void LSD_PrintToChatAll(const char[] sMsg, any:...);

/*
* Регистрирует новый пункт меню.
*
* sName - Уникальное имя пункта.
*
* OnItemPressedCallback - Вызывается когда игрок нажимает на пункт.
*
* OnItemDisplayCallback - Вызывается когда игрок видит пункт в меню.
*
* OnItemDrawCallback - Вызывается когда игроку отображается стиль пункта в меню.
*
* Вернет id пункта или -1 в случае неудачи.
*/
native int LSD_RegMenuItem(const char[] sName, LSDOnItemPressed OnItemPressedCallback, LSDOnItemDisplay OnItemDisplayCallback = INVALID_FUNCTION, LSDOnItemDraw OnItemDrawCallback = INVALID_FUNCTION);

/*
* Удаляет пункт из меню.
*
* iID - Айди пункта.
*/
native void LSD_UnRegMenuItem(int iID);

/*
* Получает айди пункта меню.
*
* sName - Уникальное имя пункта.
*/
native int LSD_GetMenuItemId(const char[] sName);

/*
* Открывает меню настроек игроку.
*
* client - id игрока.
*/
native void LSD_OpenMenu(int client);

/*
* Вызывается перед LSD_OnVoteStart.
*
* time - Время голосования.
*
* iDuelist - id дуэлянтов.
*
* Если вернуть true, то дуэль будет отменена.
*/
forward bool LSD_OnVoteStart_Pre(int &time, const int iDuelist[2]);

/*
* Началось голосование.
*
* iDuelist - id дуэлянтов.
*/
forward void LSD_OnVoteStart(const int iDuelist[2]);

/*
* Вызывается перед LSD_OnPrepStart.
*
* time - Время подготовки.
*
* iDuelist - id дуэлянтов.
*
* Если вернуть true, то дуэль будет отменена.
*/
forward bool LSD_OnPrepStart_Pre(int &time, const int iDuelist[2]);

/*
* Началась подготовка к дуэли.
*
* iDuelist - id дуэлянтов.
*/
forward void LSD_OnPrepStart(const int iDuelist[2]);

/*
* Вызывается перед LSD_OnDuelStart.
*
* time - Время дуэли.
*
* iDuelist - id дуэлянтов.
*
* sMode - Имя режима дуэли (если не указано, то будет выбран случайный режим).
*
* buffsize - Максимальный размер строки.
*
* Если вернуть true, то дуэль будет отменена.
*/
forward bool LSD_OnDuelStart_Pre(int &time, const int iDuelist[2], char[] sMode, int buffsize);

/*
* Дуэль началась.
*
* hKV - Конфиг с выбранной секцией текущей  дуэли.
*
* iDuelist - id дуэлянтов.
*
* sMode - Имя режима дуэли.
*/
forward void LSD_OnDuelStart(KeyValues hKV, const int iDuelist[2], const char[] sMode);

/*
* Дуэль была завершена.
*
* iReason - причина завершения (LSD_Reason_*).
*
* iDuelist - id дуэлянтов.
*/
forward void LSD_OnDuelEnd(int iReason, const int iDuelist[2]);

/*
* Вызывается перед LSD_OnTimer.
*
* iStage - Стадия дуэли.
*
* time - Время таймера до следующей стадии.
*
* Если вернуть true, то LSD_OnTimer не будет вызван, а информация о таймере не будет отображена игрокам.
*/
forward bool LSD_OnTimer_Pre(int iStage, int &time);

/*
* Вызывается каждую секунду таймера во время дуэли.
*
* iStage - Стадия дуэли.
*
* time - Время таймера до следующей стадии.
*/
forward void LSD_OnTimer(int iStage, int time);

/*
* Вызывается перед LSD_OnWinnerSpawn.
*
* client - id игрока.
*
* Если вернуть true, событие не будет вызвано.
*/
forward bool LSD_OnWinnerSpawn_Pre(int client);

/*
* Победитель прошлой дуэли возродился.
*
* client - id игрока.
*/
forward void LSD_OnWinnerSpawn(int client);

public SharedPlugin __pl_lsd=
{
    name = "lsd",
    file = "lsd_core.smx",
#if defined REQUIRE_PLUGIN
    required = 1
#else
    required = 0
#endif
};

#if !defined REQUIRE_PLUGIN
public __pl_lsd_SetNTVOptional()
{
    MarkNativeAsOptional("LSD_GetLastWinnerOrLoser");
    MarkNativeAsOptional("LSD_GetDuelist");
    MarkNativeAsOptional("LSD_GetCurrentTime");
    MarkNativeAsOptional("LSD_GetMode");
    MarkNativeAsOptional("LSD_GetConfig");
    MarkNativeAsOptional("LSD_GetDatabase");
    MarkNativeAsOptional("LSD_GetStage");
    MarkNativeAsOptional("LSD_PrintToChat");
    MarkNativeAsOptional("LSD_PrintToChatAll");
    MarkNativeAsOptional("LSD_RegMenuItem");
    MarkNativeAsOptional("LSD_UnRegMenuItem");
    MarkNativeAsOptional("LSD_GetMenuItemId");
    MarkNativeAsOptional("LSD_OpenMenu");
}
#endif
Требования
SourceMod 1.10+
Переменные
Конфиг:
"Settings"
{
    "tag"            "{green}[LSD]{default}" //Префикс плагина в чате.
    "cmd"            "duel;duels;lsd" //Команды для открытия меню с настройками.
    "vote_time"        "10" //Время, которое отводится на голосование.
    "prep_time"        "10" //Время, которое отводится на подготовку к дуэли.
    "duel_time"        "60" //Время дуэли.
    "min_players"    "4"    //Минимальное кол-во игроков на сервере, необходимое для работы дуэлей.
    "save_stats"    "1" //Вести ли статистику по дуэлям? 1 - Да, 0 - Нет.
    "save_weapons"    "1" //Сохранять ли оружие дуэлянтов и выдавать в начале следующего раунда? 1 - Да, 0 - Нет.
    "draw_mode"        "1" //Что делать с игроками по истечении таймера? 0 - Ничего, 1 - Убить обоих, 2 - Убить случайного игрока, 3 - Убить того, у которого меньше здоровья.
    "block_attack"    "1" //Блокировать ли игрокам стрельбу на время голосования? 1 - Да, 0 - Нет.

    "Knife" //Имя режима дуэли.
    {
        "weapons"    "weapon_knife"
        "health"    "100"
        "armor"        "0"
        "helmet"    "0"
    }
}
Команды
Команды для открытия главного меню указываются в конфиге ("cmd").
Автор
d4Ck
Скачивания
652
Просмотры
8,924
Первый выпуск
Обновление
Оценка
4.27 звёзд 22 оценок

Другие ресурсы пользователя d4Ck

Поделиться ресурсом

Последние обновления

  1. Версия 1.1.7

    Исправил инвалидов.
  2. Версия 1.1.6

    Исправлена ошибка при создании таблицы. Добавлен перевод для модуля телепортации.
  3. Версия 1.1.5

    Исправление ошибок.

Последние отзывы

Чуть ли не первый на любом AWP/AIM/KNIFE сервере. Лойс!
Отличный плагин. С правильной настройкой все работает
почему просто нельзя поставить оценку? -.-
ну хороший плагин, чо ещё могу написать. модули есть. да. ядро ещё вроде какое-то.
а вообще если до ума довести, то неплохая замена weaponfight будет
Довольно качественное ядро, есть пара недоработок (например забывание точек спавна Игроков после перезугрузки), невозможность подключения к MySQL, некорректное отображение некоторых из пунктов меню и др.

Ставлю 3 пока что, исправь!
d4Ck
d4Ck
mysql работает, пункты отображаются корректно.
Не знаю в чём тестировали прошлые люди. В CS:GO - случайным образом у людей после дуэли в следующем раунде SSG08 в руках, которую они не покупали. Снимаются шприцы, если они были. Нельзя купить флешки. Если отключить статистику, остается меню AutoReplay какой-то. Так-то всё нравится, если бы работало.
Просто. Компактно. Функционально.
Стабильность ядра и модулей более менее. Не хватает определённых фишек, как в дуэли от гуманоида. Например, определённые режимы дуэли которые выбираются на лету (Например: с очередью - только голова - no zoom), также сделать выбор автоматического принятия/отказа от дуэли, очень зря, что тут режим принудительный. Сделать установку спавна на любую точку для КТ/Т команды. Дабы не было, как попало или телепортировало прямо в противника. Также не хватает запрета для возрождения тиммейтов во время дуэли (например, когда установлен плагин revival). Вообщем есть куда стремиться.
Видно, что лисох старался, но это хуже старых дуэлей. Нет функции, когда оба игрока отклоняют дуэль, а она начинается (не вижу смысла кс без этой фичи)
Дождался нормальную дуэль с кучей модулей, ставлю лайк!
Ну наконец-то мы дождались хороших дуэлей.
Сверху