comitting the sourcemod plugin part for voice extension update
This commit is contained in:
parent
723525f8c5
commit
b8ac8cc571
6
CELT_VOICE/README.md
Normal file
6
CELT_VOICE/README.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
this is used for the voice extension:
|
||||||
|
https://git.unloze.com/UNLOZE/sm-ext-Voice/src/branch/opus
|
||||||
|
|
||||||
|
//the voice chat is now transcoded so both celt and opus work by sending each stream to the player that needs it.
|
||||||
|
|
||||||
|
the include belongs to the voice extension but is also put here extra
|
||||||
35
CELT_VOICE/scripting/include/voice.inc
Normal file
35
CELT_VOICE/scripting/include/voice.inc
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#if defined _voice_included
|
||||||
|
#endinput
|
||||||
|
#endif
|
||||||
|
#define _voice_included
|
||||||
|
|
||||||
|
native bool IsClientTalking(int client);
|
||||||
|
native bool SetClientNoSteam(int client, bool isNosteam);
|
||||||
|
native bool SendCeltVoiceInit(int client);
|
||||||
|
native bool ClientMutedOtherClient(int client, int otherclient, bool muted);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do not edit below this line!
|
||||||
|
*/
|
||||||
|
public Extension __ext_voice =
|
||||||
|
{
|
||||||
|
name = "Voice",
|
||||||
|
file = "Voice.ext",
|
||||||
|
#if defined AUTOLOAD_EXTENSIONS
|
||||||
|
autoload = 1,
|
||||||
|
#else
|
||||||
|
autoload = 0,
|
||||||
|
#endif
|
||||||
|
#if defined REQUIRE_EXTENSIONS
|
||||||
|
required = 1,
|
||||||
|
#else
|
||||||
|
required = 0,
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
#if !defined REQUIRE_EXTENSIONS
|
||||||
|
public __ext_voice_SetNTVOptional()
|
||||||
|
{
|
||||||
|
MarkNativeAsOptional("IsClientTalking");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
117
CELT_VOICE/scripting/nosteam_celt_audio.sp
Normal file
117
CELT_VOICE/scripting/nosteam_celt_audio.sp
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
#include <sourcemod>
|
||||||
|
#include <PlayerManager>
|
||||||
|
#include <sdktools>
|
||||||
|
#include <basecomm>
|
||||||
|
#include <clientprefs>
|
||||||
|
#include <voice>
|
||||||
|
|
||||||
|
#pragma semicolon 1
|
||||||
|
#pragma newdecls required
|
||||||
|
|
||||||
|
Handle g_hCheckMutes = null;
|
||||||
|
Handle g_hCookieTorchMuted = null;
|
||||||
|
|
||||||
|
public Plugin myinfo =
|
||||||
|
{
|
||||||
|
name = "NoSteam CELT Voice override",
|
||||||
|
author = "jenz",
|
||||||
|
version = "1.0"
|
||||||
|
};
|
||||||
|
|
||||||
|
public void OnPluginStart()
|
||||||
|
{
|
||||||
|
g_hCheckMutes = CreateTimer(5.0, check_mutes, _, TIMER_REPEAT);
|
||||||
|
g_hCookieTorchMuted = RegClientCookie("torch_muted", "is torch muted", CookieAccess_Protected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPluginEnd()
|
||||||
|
{
|
||||||
|
if (g_hCheckMutes != null)
|
||||||
|
{
|
||||||
|
delete g_hCheckMutes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Action check_mutes(Handle timer, any data)
|
||||||
|
{
|
||||||
|
for (int i = 1; i <= MaxClients; i++)
|
||||||
|
{
|
||||||
|
if (!IsValidClient(i) || IsFakeClient(i))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for (int j = 1; j <= MaxClients; j++)
|
||||||
|
{
|
||||||
|
if (!IsValidClient(j) || i == j || IsFakeClient(j))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//i = muter, j = mutee
|
||||||
|
bool isMuted = GetListenOverride(i, j) == Listen_No;
|
||||||
|
if (!isMuted)
|
||||||
|
{
|
||||||
|
isMuted = BaseComm_IsClientMuted(j);
|
||||||
|
}
|
||||||
|
//PrintToChatAll("i: %N. j: %N. isMuted: %i", i, j, isMuted);
|
||||||
|
ClientMutedOtherClient(i, j, isMuted);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//sourceTV special case, index 0.
|
||||||
|
for (int j = 1; j <= MaxClients; j++)
|
||||||
|
{
|
||||||
|
if (!IsValidClient(j) || IsFakeClient(j))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//yeah its monkey work but server can probably handle it fine.
|
||||||
|
char sBuffer[2];
|
||||||
|
GetClientCookie(j, g_hCookieTorchMuted, sBuffer, sizeof(sBuffer));
|
||||||
|
//PrintToChatAll("sBuffer: %s. j: %N", sBuffer, j);
|
||||||
|
if(sBuffer[0] != '\0')
|
||||||
|
{
|
||||||
|
ClientMutedOtherClient(j, 0, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ClientMutedOtherClient(j, 0, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Plugin_Continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClientAuthorized(int client, const char[] auth)
|
||||||
|
{
|
||||||
|
if (IsFakeClient(client))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
SetClientNoSteam(client, false);
|
||||||
|
if (!PM_IsPlayerSteam(client))
|
||||||
|
{
|
||||||
|
SetClientNoSteam(client, true);
|
||||||
|
//setting it too early does not work, so some delay needed.
|
||||||
|
CreateTimer(10.0, Timer_SendVoiceInit, GetClientSerial(client));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Action Timer_SendVoiceInit(Handle timer, int Serial)
|
||||||
|
{
|
||||||
|
int client;
|
||||||
|
if ((client = GetClientFromSerial(Serial)) == 0)
|
||||||
|
{
|
||||||
|
return Plugin_Handled;
|
||||||
|
}
|
||||||
|
if (IsValidClient(client))
|
||||||
|
{
|
||||||
|
SendCeltVoiceInit(client);
|
||||||
|
}
|
||||||
|
return Plugin_Handled;
|
||||||
|
}
|
||||||
|
|
||||||
|
stock bool IsValidClient(int client)
|
||||||
|
{
|
||||||
|
if (client > 0 && client <= MaxClients && IsClientConnected(client) && IsClientInGame(client))
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user