ソースを参照

Add cvars sm_voice_addr and sm_voice_port

BotoX 7 年 前
コミット
123e8c0889
2 ファイル変更30 行追加8 行削除
  1. 23 6
      extension.cpp
  2. 7 2
      extension.h

+ 23 - 6
extension.cpp

@@ -45,9 +45,8 @@
 
 #include "extension.h"
 
-#define LISTEN_ADDR "127.0.0.1"
-//#define LISTEN_ADDR "10.0.0.101"
-#define LISTEN_PORT 27020
+ConVar g_SmVoiceAddr("sm_voice_addr", "127.0.0.1", FCVAR_PROTECTED, "Voice server listen ip address.");
+ConVar g_SmVoicePort("sm_voice_port", "27020", FCVAR_PROTECTED, "Voice server listen port.", true, 1025.0, true, 65535.0);
 
 /**
  * @file extension.cpp
@@ -266,13 +265,17 @@ bool CVoice::SDK_OnLoad(char *error, size_t maxlength, bool late)
 		return false;
 	}
 
+	engine->ServerCommand("exec sourcemod/extension.Voice.cfg\n");
+	engine->ServerExecute();
+
 	sockaddr_in bindAddr;
 	memset(&bindAddr, 0, sizeof(bindAddr));
 	bindAddr.sin_family = AF_INET;
-	inet_aton(LISTEN_ADDR, &bindAddr.sin_addr);
-	bindAddr.sin_port = htons(LISTEN_PORT);
+	inet_aton(g_SmVoiceAddr.GetString(), &bindAddr.sin_addr);
+	bindAddr.sin_port = htons(g_SmVoicePort.GetInt());
+
+	smutils->LogMessage(myself, "Binding to %s:%d!\n", g_SmVoiceAddr.GetString(), g_SmVoicePort.GetInt());
 
-	// Listen on LISTEN_ADDR:LISTEN_PORT
 	if(bind(m_ListenSocket, (sockaddr *)&bindAddr, sizeof(sockaddr_in)) < 0)
 	{
 		g_SMAPI->Format(error, maxlength, "Failed binding to socket (%d '%s').", errno, strerror(errno));
@@ -336,6 +339,20 @@ bool CVoice::SDK_OnLoad(char *error, size_t maxlength, bool late)
 	return true;
 }
 
+bool CVoice::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlen, bool late)
+{
+	GET_V_IFACE_CURRENT(GetEngineFactory, g_pCVar, ICvar, CVAR_INTERFACE_VERSION);
+	ConVar_Register(0, this);
+
+	return true;
+}
+
+bool CVoice::RegisterConCommandBase(ConCommandBase *pVar)
+{
+	/* Always call META_REGCVAR instead of going through the engine. */
+	return META_REGCVAR(pVar);
+}
+
 void CVoice::SDK_OnAllLoaded()
 {
 	SM_GET_LATE_IFACE(SDKTOOLS, g_pSDKTools);

+ 7 - 2
extension.h

@@ -56,7 +56,9 @@ typedef void (*t_SV_BroadcastVoiceData)(IClient *, int, unsigned char *, int64);
  * @brief Sample implementation of the SDK Extension.
  * Note: Uncomment one of the pre-defined virtual functions in order to use it.
  */
-class CVoice : public SDKExtension
+class CVoice :
+	public SDKExtension,
+	public IConCommandBaseAccessor
 {
 public:
 	/**
@@ -103,7 +105,7 @@ public:
 	 * @param late			Whether or not Metamod considers this a late load.
 	 * @return				True to succeed, false to fail.
 	 */
-	//virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late);
+	virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late);
 
 	/**
 	 * @brief Called when Metamod is detaching, after the extension version is called.
@@ -127,6 +129,9 @@ public:
 	//virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength);
 #endif
 
+public:  // IConCommandBaseAccessor
+	virtual bool RegisterConCommandBase(ConCommandBase *pVar);
+
 public:
 	CVoice();
 	void OnGameFrame(bool simulating);