Администратор ryancoolround Опубликовано 31 января, 2021 Администратор Опубликовано 31 января, 2021 Данный плагин добавляет команду !voice на сервер. Игрок ее прописывает, и после, для этого игрока отключаются микрофоны других игроков. Что бы снова активировать микрофоны надо снова прописать команду !voice. Так как мое файловое хранилище постоянно обновляется, и плагин может быть удален, выкладываю исходники в виде кода. voice.sp: #include <sdktools_voice> #include <clientprefs> ListenOverride g_userFlag[MAXPLAYERS + 1]; Handle g_hCookie; bool g_bVoiceEnable[MAXPLAYERS + 1] = true; public Plugin myinfo = { name = "Voice", author = "bat9xxx", version = "1.0", url = "vk.com/s_plus2018" }; public void OnPluginStart() { RegConsoleCmd("sm_voice", VoiceChange); LoadTranslations(GetEngineVersion() == Engine_SourceSDK2006 ? "voice_old.phrases" : "voice.phrases"); g_hCookie = RegClientCookie("voice_enable", "Включен/выключен", CookieAccess_Public); } public void OnClientCookiesCached(int iClient) { char szValue[4]; GetClientCookie(iClient, g_hCookie, szValue, sizeof(szValue)); if (szValue[0])g_bVoiceEnable[iClient] = view_as<bool>(StringToInt(szValue)); else g_bVoiceEnable[iClient] = true; } public Action VoiceChange(int iClient, int iArgs) { char szBuffer[128]; if (g_bVoiceEnable[iClient] == false) { g_bVoiceEnable[iClient] = true; SetClientCookie(iClient, g_hCookie, "1"); FormatEx(szBuffer, sizeof(szBuffer), "%t %t", "Prefix", "Enable"); g_userFlag[iClient] = Listen_Yes; } else { g_bVoiceEnable[iClient] = false; SetClientCookie(iClient, g_hCookie, "0"); FormatEx(szBuffer, sizeof(szBuffer), "%t %t", "Prefix", "Disable"); g_userFlag[iClient] = Listen_No; } PrintToChat2(iClient, szBuffer); for (int i = 1; i <= MaxClients; i++) { if (IsClientInGame(i) && !IsFakeClient(i)) { SetListenOverride(iClient, i, g_userFlag[iClient]); } } } public void OnClientPutInServer(int iClient) { g_userFlag[iClient] = g_bVoiceEnable[iClient] ? Listen_Yes : Listen_No; } stock void PrintToChat2(int iClient, char[] szMessage, any...) { static int iEngine = -1; static const int g_iColorsCSSOB[] = { 0xFFFFFF, 0xFF0000, 0x00AD00, 0x00FF00, 0x99FF99, 0xFF4040, 0xCCCCCC, 0xFFBD6B, 0xFA8B00, 0x99CCFF, 0x3D46FF, 0xFA00FA }; static const char g_sColorsOldBefore[][] = { "{DEFAULT}", "{TEAM}", "{GREEN}" }, g_sColorsOldCSS[][] = { "\x01", "\x03", "\x04" }, g_sColorsBefore[][] = { "{WHITE}", "{RED}", "{GREEN}", "{LIME}", "{LIGHTGREEN}", "{LIGHTRED}", "{GRAY}", "{LIGHTOLIVE}", "{OLIVE}", "{LIGHTBLUE}", "{BLUE}", "{PURPLE}" }, g_sColorsCSGO[][] = { "\x01", "\x02", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x10", "\x0B", "\x0C", "\x0E" }; if (iClient && IsClientInGame(iClient) && !IsFakeClient(iClient)) { char szBuffer[PLATFORM_MAX_PATH], szNewMessage[PLATFORM_MAX_PATH]; if (iEngine == -1) { switch (GetEngineVersion()) { case Engine_CSGO:iEngine = 0; case Engine_CSS:iEngine = 1; case Engine_SourceSDK2006:iEngine = 2; } } Format(szBuffer, sizeof(szBuffer), !iEngine ? " \x01%s" : "\x01%s", szMessage); VFormat(szNewMessage, sizeof(szNewMessage), szBuffer, 3); if (!iEngine) { for (int i = 0; i < 12; i++) { ReplaceString(szNewMessage, sizeof(szNewMessage), g_sColorsBefore[i], g_sColorsCSGO[i]); } ReplaceString(szNewMessage, sizeof(szNewMessage), "{TEAM}", "\x03"); } else { if (iEngine == 1) { char sBuff[64]; switch (GetClientTeam(iClient)) { case 1:Format(sBuff, sizeof(sBuff), "\x07%06X", g_iColorsCSSOB[6]); case 2:Format(sBuff, sizeof(sBuff), "\x07%06X", g_iColorsCSSOB[5]); case 3:Format(sBuff, sizeof(sBuff), "\x07%06X", g_iColorsCSSOB[9]); } ReplaceString(szNewMessage, sizeof(szNewMessage), "{TEAM}", sBuff); for (int i = 0; i < 12; i++) { Format(sBuff, sizeof(sBuff), "\x07%06X", g_iColorsCSSOB[i]); ReplaceString(szNewMessage, sizeof(szNewMessage), g_sColorsBefore[i], sBuff); } } else { for (int i = 0; i < 3; i++) { ReplaceString(szNewMessage, sizeof(szNewMessage), g_sColorsOldBefore[i], g_sColorsOldCSS[i]); } } } Handle hBf = StartMessageOne("SayText2", iClient, USERMSG_RELIABLE | USERMSG_BLOCKHOOKS); if (hBf) { if (GetUserMessageType() == UM_Protobuf) { Protobuf hProtoBuffer = UserMessageToProtobuf(hBf); hProtoBuffer.SetInt("ent_idx", iClient); hProtoBuffer.SetBool("chat", true); hProtoBuffer.SetString("msg_name", szNewMessage); hProtoBuffer.AddString("params", ""); hProtoBuffer.AddString("params", ""); hProtoBuffer.AddString("params", ""); hProtoBuffer.AddString("params", ""); } else { BfWrite hBfBuffer = UserMessageToBfWrite(hBf); hBfBuffer.WriteByte(iClient); hBfBuffer.WriteByte(true); hBfBuffer.WriteString(szNewMessage); } } EndMessage(); } } voice.phrases: "Phrases" { "Prefix" { "en" "{RED}[Voice]" "ru" "{RED}[Voice]" } "Enable" { "en" "{BLUE}Now everyone can hear!" "ru" "{BLUE}Теперь слышно всех!" } "Disable" { "en" "{BLUE}Now you can't hear anyone" "ru" "{BLUE}Теперь никого не слышно!" } } voice_old.phrases: "Phrases" { "Prefix" { "en" "{TEAM}[Voice]" "ru" "{TEAM}[Voice]" } "Enable" { "en" "{GREEN}Now everyone can hear!" "ru" "{GREEN}Теперь слышно всех!" } "Disable" { "en" "{GREEN}Now you can't hear anyone" "ru" "{GREEN}Теперь никого не слышно!" } } Voice.rar «Успех – это приятно, но он не должен быть единственной причиной, по которой вы – музыкант». - Честер Беннингтон
Администратор ryancoolround Опубликовано 1 февраля, 2021 Автор Администратор Опубликовано 1 февраля, 2021 Было обнаружено, что в этой версии плагина присутствует баг. Если я командой !voice заглушу игроков, а потом им снова включу микрофон, то я буду слышать всех игроков, даже тех, которых не должен, из за раздельного чата. «Успех – это приятно, но он не должен быть единственной причиной, по которой вы – музыкант». - Честер Беннингтон
Администратор ryancoolround Опубликовано 1 февраля, 2021 Автор Администратор Опубликовано 1 февраля, 2021 Вот версия, где данный баг исправлен. К сожалению не могу разместить плагин здесь самостоятельно из за правил сообщества, где я скачивал данный плагин. Но ссылку на пост я оставил. «Успех – это приятно, но он не должен быть единственной причиной, по которой вы – музыкант». - Честер Беннингтон
Администратор ryancoolround Опубликовано 24 ноября, 2021 Автор Администратор Опубликовано 24 ноября, 2021 В 01.02.2021 в 22:33, Райан сказал: Вот версия, где данный баг исправлен. К сожалению не могу разместить плагин здесь самостоятельно из за правил сообщества, где я скачивал данный плагин. Но ссылку на пост я оставил. Скрипт, который подсказал игрок NOLLI (У нас нет его на сайте), который в связки с этим плагином прекрасно работает. bind k "say !voice" Я серьезно, за целый год использования этого плагина, не додумался забиндить кнопку. «Успех – это приятно, но он не должен быть единственной причиной, по которой вы – музыкант». - Честер Беннингтон
Администратор ryancoolround Опубликовано 20 марта, 2024 Автор Администратор Опубликовано 20 марта, 2024 Toggle listen voice Просмотр файла Данный плагин добавляет команду !voice на сервер. Игрок ее прописывает, и после, для этого игрока отключаются микрофоны других игроков. Что бы снова активировать микрофоны надо снова прописать команду !voice. Добавил Ryancoolround Добавлено 20.03.2024 Категория Sourcemod «Успех – это приятно, но он не должен быть единственной причиной, по которой вы – музыкант». - Честер Беннингтон
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти