[LSD] Core

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

Нет прав для скачивания
Поддерживаемые игры
CS: Source (OrangeBox), CS: Source (v34), 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 - Отключает ограничение оружия на время дуэли.
💸💸💸Поддержать разработку💸💸💸
🥝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
Скачиваний
413
Просмотры
5,008
Первый выпуск
Обновление
Оценка
4.22 звёзд 18 оценок

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

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

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

  1. Версия 1.1.4

    Теперь дуэль автоматически останавливается при завершении раунда.
  2. Версия 1.1.3

    Исправление ошибок с меню.
  3. Версия 1.1.2

    Исправлен баг с выдачей некоторого оружия. Исправление работы параметра draw_mode. Ничьи больше...

Последние рецензии

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