R1KO
fuck society
- Сообщения
- 9,457
- Реакции
- 7,786
- Команда форума
- #41
Re: [CSS/OB/CS:GO/L4D2] SDKHooks Game Description Override
Нашел вот код:
Источник
Или например так не выйдет?
acik, В момент выполнения server.cfg сервер уже запросит имя игры, и поэтому изменить его нельзя в server.cfg
Нашел вот код:
PHP:
#pragma semicolon 1
#include <sourcemod>
#include <sdkhooks>
#define NAME "Game Description Override"
#define VERSION "1.3"
//#define DEBUG
new String:g_szGameDesc[64] = "";
new Handle:g_hCvarGameDesc = INVALID_HANDLE;
new Handle:g_hCvarTimerTime = INVALID_HANDLE;
new Handle:g_hTimerAutoChange = INVALID_HANDLE;
new Handle:g_hCvarManiFix = INVALID_HANDLE;
new bool:g_bChangeGameDesc = false;
new bool:g_bMapRoaded = false;
new bool:g_bManiFix = false;
new currLine = 0;
public Plugin:myinfo = {
name = NAME,
author = "psychonic (modified by Zuko and Luki)",
description = "Allows changing of displayed game type in server browser",
version = VERSION,
url = "http://www.nicholashastings.com | http://HLDS.pl | www.strefagier.com.pl"
};
public OnPluginStart()
{
CreateConVar("gamedesc_override_version", VERSION, NAME, FCVAR_PLUGIN|FCVAR_DONTRECORD|FCVAR_SPONLY|FCVAR_NOTIFY);
g_hCvarGameDesc = CreateConVar("gamedesc_override", "", "Game Description Override (set blank \"\" for default no override)", FCVAR_PLUGIN);
g_hCvarManiFix = CreateConVar("gamedesc_manifix", "0", "Mani Fix. Enable if 3rd party plugins have trouble detecting gametype. 0-Disabled (default), 1-Enabled", FCVAR_PLUGIN);
g_hCvarTimerTime = CreateConVar("gamedesc_auto_change_time", "240.0", "How often description has to be changed. (in seconds, 0 - to disable)", FCVAR_PLUGIN);
AutoExecConfig();
HookConVarChange(g_hCvarGameDesc, CvarChange_GameDesc);
HookConVarChange(g_hCvarManiFix, CvarChange_ManiFix);
HookConVarChange(g_hCvarTimerTime, CvarChange_TimerTime);
}
public OnMapStart()
{
g_bMapRoaded = true;
if (GetConVarInt(g_hCvarTimerTime) > 0)
{
g_hTimerAutoChange = CreateTimer(GetConVarFloat(g_hCvarTimerTime), timerProc, _, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
currLine = 0;
}
}
public OnMapEnd()
{
g_bMapRoaded = false;
}
public OnAllPluginsLoaded()
{
if (GetExtensionFileStatus("sdkhooks.ext") != 1)
{
SDKHooksFail();
}
}
public OnLibraryRemoved(const String:name[])
{
if (strcmp(name, "sdkhooks.ext") == 0)
{
SDKHooksFail();
}
}
SDKHooksFail()
{
SetFailState("SDKHooks is required for Game Description Override");
}
public Action:OnGetGameDescription(String:gameDesc[64])
{
if (g_bChangeGameDesc && (g_bMapRoaded || !g_bManiFix))
{
strcopy(gameDesc, sizeof(gameDesc), g_szGameDesc);
return Plugin_Changed;
}
return Plugin_Continue;
}
public Action:timerProc(Handle:timer)
{
#if defined DEBUG
PrintToServer("Timer Executed");
#endif
new String:sFilePath[PLATFORM_MAX_PATH];
BuildPath(Path_SM, sFilePath, sizeof(sFilePath), "configs/gamedesc.txt");
new Handle:Descs = CreateArray(255, 0);
new Handle:File = OpenFile(sFilePath, "r");
while (!IsEndOfFile(File))
{
new String:buffer[255];
ReadFileLine(File, buffer, sizeof(buffer));
ResizeArray(Descs, GetArraySize(Descs));
PushArrayString(Descs, buffer);
}
new String:buff[255];
GetArrayString(Descs, currLine, buff, sizeof(buff));
currLine++;
if (currLine >= GetArraySize(Descs))
{
currLine = 0;
}
SetConVarString(g_hCvarGameDesc, buff, true);
strcopy(g_szGameDesc, sizeof(g_szGameDesc), buff);
CloseHandle(Descs);
CloseHandle(File);
}
public CvarChange_GameDesc(Handle:cvar, const String:oldVal[], const String:newVal[])
{
strcopy(g_szGameDesc, sizeof(g_szGameDesc), newVal);
if (newVal[0] > 0)
{
g_bChangeGameDesc = true;
}
else
{
g_bChangeGameDesc = false;
}
}
public CvarChange_TimerTime(Handle:cvar, const String:oldVal[], const String:newVal[])
{
#if defined DEBUG
PrintToServer("CvarChange_TimerTime Change Hook");
#endif
if (g_hTimerAutoChange != INVALID_HANDLE)
{
KillTimer(g_hTimerAutoChange);
g_hTimerAutoChange = INVALID_HANDLE;
}
g_hTimerAutoChange = CreateTimer(GetConVarFloat(g_hCvarTimerTime), timerProc, _, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
currLine = 0;
}
public CvarChange_ManiFix(Handle:cvar, const String:oldVal[], const String:newVal[])
{
g_bManiFix = bool:StringToInt(newVal);
}
Источник
Или например так не выйдет?
PHP:
public OnConfigsExecuted()
{
OnGetGameDescription(g_sGameDesc);
}
public Action:OnGetGameDescription(String:gameDesc[64])
{