129 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			SourcePawn
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			SourcePawn
		
	
	
	
	
	
| #pragma semicolon 1
 | |
| #define PLUGIN_AUTHOR "jenz"
 | |
| #define PLUGIN_VERSION "1.0"
 | |
| #pragma newdecls required  
 | |
| #include <sourcemod>
 | |
| 
 | |
| Database g_hDatabase;
 | |
| char sTitle[256];
 | |
| char sBuffer[16][256];
 | |
| 
 | |
| public Plugin myinfo =
 | |
| {
 | |
|         name = "event notifier ingame",
 | |
|         author = PLUGIN_AUTHOR,
 | |
|         description = "plugin simply tells information about the last announced event on this server",
 | |
|         version = PLUGIN_VERSION,
 | |
|         url = "www.unloze.com"
 | |
| };
 | |
| 
 | |
| public void OnPluginStart()
 | |
| {
 | |
|     Database.Connect(SQL_OnDatabaseConnect, "Event_notifier");
 | |
|     RegConsoleCmd("sm_event", Command_Event_notifier, "Display infos about the next event");
 | |
|     RegConsoleCmd("sm_events", Command_Event_notifier, "Display infos about the next event");
 | |
| }
 | |
| 
 | |
| public void OnMapStart()
 | |
| {
 | |
|     Event_select_query();
 | |
| }
 | |
| 
 | |
| public void SQL_OnDatabaseConnect(Database db, const char[] error, any data)
 | |
| {
 | |
|     if(!db || strlen(error))
 | |
|     {
 | |
|         LogError("Database error: %s", error);
 | |
|         return;
 | |
|     }
 | |
|     g_hDatabase = db;
 | |
|     Event_select_query();
 | |
| }
 | |
| 
 | |
| public Action Command_Event_notifier(int client, int args)
 | |
| {
 | |
|     Panel mSayPanel = new Panel(GetMenuStyleHandle(MenuStyle_Radio));
 | |
|     mSayPanel.SetTitle(sTitle);
 | |
|     mSayPanel.DrawItem("", ITEMDRAW_SPACER);
 | |
| 
 | |
|     mSayPanel.DrawText(sBuffer[1]); //server
 | |
|     mSayPanel.DrawItem("", ITEMDRAW_SPACER);
 | |
| 
 | |
|     mSayPanel.DrawText(sBuffer[2]); //maps
 | |
|     mSayPanel.DrawItem("", ITEMDRAW_SPACER);
 | |
| 
 | |
|     mSayPanel.DrawText(sBuffer[3]); //date
 | |
|     mSayPanel.DrawItem("", ITEMDRAW_SPACER);
 | |
| 
 | |
|     mSayPanel.DrawText(sBuffer[4]); //time
 | |
|     mSayPanel.DrawItem("", ITEMDRAW_SPACER);
 | |
|         
 | |
|     mSayPanel.DrawText(sBuffer[5]); //reward
 | |
| 
 | |
|     mSayPanel.DrawItem("", ITEMDRAW_SPACER);
 | |
|     mSayPanel.DrawItem("1. Got it!", ITEMDRAW_RAWLINE);
 | |
| 
 | |
|     mSayPanel.SetKeys(1023);
 | |
|     mSayPanel.Send(client, Handler_Menu, 0);
 | |
|     delete mSayPanel;
 | |
|     return Plugin_Handled;
 | |
| }
 | |
| 
 | |
| public void Event_select_query()
 | |
| {
 | |
|     if (!g_hDatabase)
 | |
|     {
 | |
|         Database.Connect(SQL_OnDatabaseConnect, "Event_notifier");
 | |
|         return;
 | |
|     }
 | |
|     //only 3 servers with events, none exist on jb or ze2 
 | |
|     int i_port = GetConVarInt(FindConVar("hostport"));
 | |
|     char sQuery[512];
 | |
|     Format(sQuery, sizeof(sQuery), "select event_title, event_server, event_maps, event_date, event_time, event_reward from unloze_event.event e where e.event_server like '%s%i%s'", "%", i_port, "%");
 | |
|     g_hDatabase.Query(SQL_OnQueryCompleted, sQuery);
 | |
| }
 | |
| 
 | |
| public void SQL_OnQueryCompleted(Database db, DBResultSet results, const char[] error, DataPack data)
 | |
| {
 | |
|     if (!db || strlen(error))
 | |
|     {
 | |
|         LogError("Query error 3: %s", error);
 | |
|         delete results;
 | |
|     }
 | |
|     if (results.RowCount && results.FetchRow())
 | |
|     {
 | |
|         results.FetchString(0, sTitle, sizeof(sTitle));
 | |
|         Format(sTitle, sizeof(sTitle), "Title: %s", sTitle);
 | |
| 
 | |
|         results.FetchString(1, sBuffer[0], sizeof(sBuffer[]));
 | |
| 
 | |
|         Format(sBuffer[1], sizeof(sBuffer[]), "Server: %s", sBuffer[0]);
 | |
|         
 | |
|         results.FetchString(2, sBuffer[0], sizeof(sBuffer[]));
 | |
| 
 | |
|         Format(sBuffer[2], sizeof(sBuffer[]), "Maps: %s", sBuffer[0]);
 | |
| 
 | |
|         results.FetchString(3, sBuffer[0], sizeof(sBuffer[]));
 | |
| 
 | |
|         Format(sBuffer[3], sizeof(sBuffer[]), "Date: %s", sBuffer[0]);
 | |
| 
 | |
|         results.FetchString(4, sBuffer[0], sizeof(sBuffer[]));
 | |
| 
 | |
|         Format(sBuffer[4], sizeof(sBuffer[]), "Time: %s", sBuffer[0]);
 | |
| 
 | |
|         results.FetchString(5, sBuffer[0], sizeof(sBuffer[]));
 | |
| 
 | |
|         Format(sBuffer[5], sizeof(sBuffer[]), "Reward: %s", sBuffer[0]);
 | |
|     }
 | |
|     delete results;
 | |
| }
 | |
| 
 | |
| public int Handler_Menu(Menu menu, MenuAction action, int param1, int param2)
 | |
| {
 | |
|     switch(action)
 | |
|     {
 | |
|         case MenuAction_Select, MenuAction_Cancel:
 | |
|             delete menu;
 | |
|     }
 | |
| }
 |