115 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			SourcePawn
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			SourcePawn
		
	
	
	
	
	
| #include <sourcemod>
 | |
| 
 | |
| #define MAXLINES 20
 | |
| 
 | |
| #pragma newdecls required
 | |
| 
 | |
| /* CONVARS */
 | |
| ConVar g_cvInfoMessageFile;
 | |
| 
 | |
| /* STRINGS */
 | |
| char g_sBuffer[MAXLINES][192];
 | |
| 
 | |
| //----------------------------------------------------------------------------------------------------
 | |
| // Purpose:
 | |
| //----------------------------------------------------------------------------------------------------
 | |
| public Plugin myinfo =
 | |
| {
 | |
| 	name         = "InfoMessage",
 | |
| 	author       = "Neon",
 | |
| 	description  = "",
 | |
| 	version      = "1.0.0",
 | |
| 	url          = "https://steamcommunity.com/id/n3ontm"
 | |
| };
 | |
| 
 | |
| //----------------------------------------------------------------------------------------------------
 | |
| // Purpose:
 | |
| //----------------------------------------------------------------------------------------------------
 | |
| public void OnPluginStart()
 | |
| {
 | |
| 	g_cvInfoMessageFile = CreateConVar("sm_info_message_file", "null", "", FCVAR_NONE);
 | |
| 	HookConVarChange(g_cvInfoMessageFile, Cvar_FileChanged);
 | |
| }
 | |
| 
 | |
| //----------------------------------------------------------------------------------------------------
 | |
| // Purpose:
 | |
| //----------------------------------------------------------------------------------------------------
 | |
| public void Cvar_FileChanged(ConVar convar, const char[] oldValue, const char[] newValue)
 | |
| {
 | |
| 	for (int i = 0; i <= (MAXLINES - 1); i++)
 | |
| 		g_sBuffer[i] = "";
 | |
| 
 | |
| 	char sFile[PLATFORM_MAX_PATH];
 | |
| 	char sLine[192];
 | |
| 	char sFilename[192];
 | |
| 	GetConVarString(g_cvInfoMessageFile, sFilename, sizeof(sFilename))
 | |
| 
 | |
| 	if (StrEqual(sFilename, "null"))
 | |
| 		return;
 | |
| 
 | |
| 	BuildPath(Path_SM, sFile, sizeof(sFile), "configs/info_messages/%s.txt", sFilename);
 | |
| 
 | |
| 	Handle hFile = OpenFile(sFile, "r");
 | |
| 
 | |
| 	if(hFile != INVALID_HANDLE)
 | |
| 	{
 | |
| 		int iLine = 0;
 | |
| 		while (!IsEndOfFile(hFile))
 | |
| 		{
 | |
| 			if (!ReadFileLine(hFile, sLine, sizeof(sLine)))
 | |
| 				break;
 | |
| 
 | |
| 			TrimString(sLine);
 | |
| 			g_sBuffer[iLine] = sLine;
 | |
| 			iLine++;
 | |
| 		}
 | |
| 
 | |
| 	CloseHandle(hFile);
 | |
| 
 | |
| 	}
 | |
| 	else
 | |
| 		LogError("[SM] File not found! (configs/info_messages/%s.txt)", sFilename);
 | |
| }
 | |
| 
 | |
| //----------------------------------------------------------------------------------------------------
 | |
| // Purpose:
 | |
| //----------------------------------------------------------------------------------------------------
 | |
| int MenuHandler_NotifyPanel(Menu hMenu, MenuAction iAction, int iParam1, int iParam2)
 | |
| {
 | |
| 	switch (iAction)
 | |
| 	{
 | |
| 		case MenuAction_Select, MenuAction_Cancel:
 | |
| 			delete hMenu;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| //----------------------------------------------------------------------------------------------------
 | |
| // Purpose:
 | |
| //----------------------------------------------------------------------------------------------------
 | |
| public void OnClientPutInServer(int client)
 | |
| {
 | |
| 	char sFilename[192];
 | |
| 	GetConVarString(g_cvInfoMessageFile, sFilename, sizeof(sFilename))
 | |
| 
 | |
| 	if (StrEqual(sFilename, "null"))
 | |
| 		return;
 | |
| 
 | |
| 	Panel hNotifyPanel = new Panel(GetMenuStyleHandle(MenuStyle_Radio));
 | |
| 
 | |
| 	for (int i = 0; i <= (MAXLINES - 1); i++)
 | |
| 	{
 | |
| 		if (StrEqual(g_sBuffer[i], ""))
 | |
| 			break;
 | |
| 
 | |
| 		if (StrEqual(g_sBuffer[i], "/n"))
 | |
| 		{
 | |
| 			hNotifyPanel.DrawItem("", ITEMDRAW_SPACER);
 | |
| 		}
 | |
| 		else
 | |
| 			hNotifyPanel.DrawItem(g_sBuffer[i], ITEMDRAW_RAWLINE);
 | |
| 	}
 | |
| 
 | |
| 	hNotifyPanel.SetKeys(1023);
 | |
| 	hNotifyPanel.Send(client, MenuHandler_NotifyPanel, 0);
 | |
| 	delete hNotifyPanel;
 | |
| } |