- Поддерживаемые игры
-
- 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 - Отключает ограничение оружия на время дуэли.
- [LSD] Only HeadShot - Добавляет запрет убийства не в голову.
- [LSD] Server Commands - Выполнение серверных команд при старте и завершении дуэли.
- [LSD] Mode selector - Позволяет игрокам выбрать режим дуэли перед ее началом.
- [LSD] Messages - Отправляет сообщения при старте и конце дуэли.
- [LSD] FPS Reward - Выдача очков FPS победителю дуэли.
- [LSD] Mode announce - Выводит игрокам имя выбранного режима дуэли по центру экрана.
- [LR WEB] DUELS - Модуль статистики дуэлей под lr web.
- [LSD] Knife accept (PROJECTTM / SM.CRYSTALS.PW)- Голосование за начало дуэли ударами ножа по стене.









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 false
#define LSD_Duelist_CT true
/*
* Вызывается когда игрок нажимает на пункт в меню.
*
* 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);
/*
* Возвращает true, если ядро загружено.
*/
native bool LSD_IsCoreReady();
/*
* Возвращает user id последнего победителя/проигравшего или одно из значений:
* 0 - Дуэль не состоялась.
* -1 - Дуэль завершилась ничьей.
*
* bLoser - Вернуть user 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);
/*
* Принимает или отклоняет дуэль игроку.
*
* client - id игрока.
*
* bAccept - true - принять; false - отклонить
*/
native void LSD_VoteClient(int client, bool bAccept);
/*
* Проголосовал ли человек за дуэль.
*
* client - id игрока.
*/
native bool LSD_IsVoted(int client);
/*
* Вызывается после загрузки ядра.
*/
forward void LSD_OnCoreReady();
/*
* Вызывается перед LSD_OnVoteStart.
*
* time - Время голосования.
*
* iDuelist - id дуэлянтов.
*
* Если вернуть true, то дуэль будет отменена.
*/
forward bool LSD_OnVoteStart_Pre(int &time, const int iDuelist[2]);
/*
* Началось голосование.
*
* iDuelist - id дуэлянтов.
*
* Если вернуть true, то меню голосования не будет отображено игрокам (автоматический ответ на голосование все-равно сработает).
*/
forward bool 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_IsCoreReady");
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");
MarkNativeAsOptional("LSD_VoteClient");
MarkNativeAsOptional("LSD_IsVoted");
}
#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 - Нет. "save_armor" "1" //Сохранять ли броню и шлем дуэлянтов и выдавать в начале следующего раунда? 1 - Да, 0 - Нет. "draw_mode" "1" //Что делать с игроками по истечении таймера? 0 - Ничего, 1 - Убить обоих, 2 - Убить случайного игрока, 3 - Убить того, у которого меньше здоровья. "block_attack" "1" //Блокировать ли игрокам стрельбу на время голосования? 1 - Да, 0 - Нет. "auto_vote_disable" "0" //Отключает автоматическое принятие/отклонение дуэли. 1 - Да, 0 - Нет. "Knife" //Имя режима дуэли. { "weapons" "weapon_knife" "health" "100" "armor" "0" "helmet" "0" } }
- Команды
-
Команды для открытия главного меню указываются в конфиге ("cmd").