Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.IO;
- using System.Threading;
- namespace KagParser
- {
- class Program
- {
- static void Main(string[] args)
- {
- try
- {
- KagAdmin Application = new KagAdmin();
- }
- catch (Exception e)
- {
- Console.WriteLine(e.ToString());
- }
- Thread.Sleep(Timeout.Infinite);
- }
- }
- public class KagAdmin : Parser
- {
- public List<Player> Players = new List<Player>();
- public int TeamWinStatus = 1;
- public KagAdmin()
- {
- OnPlayerConnectedEvent += OnPlayerConnected;
- OnPlayerDisconnectedEvent += OnPlayerDisconnected;
- OnTeamWinEvent += OnTeamWin;
- Parser Application = new Parser();
- }
- public void ChangeMap(int MapId)
- {
- string Map = "";
- switch (MapId)
- {
- case 0:
- {
- Map = @"mapcycle = Maps/permamap.png;";
- }
- break;
- case 1:
- {
- Map = @"mapcycle = Maps/editor.png;";
- }
- break;
- case 2:
- {
- Map = @"mapcycle = Maps/epicmap.png;";
- }
- break;
- }
- File.WriteAllText(@"C:\KAG\Base\Scripts\mapcycle.cfg", Map);
- }
- public void OnPlayerChat(string inPlayerName, String inChat)
- {
- Player inPlayer = GetPlayerFromName(inPlayerName);
- }
- public void OnPlayerConnected(Player inPlayer)
- {
- Players.Add(inPlayer);
- Console.WriteLine(inPlayer.Name + " connected!");
- }
- public void OnPlayerDisconnected(string inPlayerName)
- {
- Console.WriteLine(inPlayerName + " disconnected!");
- }
- public Player GetPlayerFromName(string inPlayerName)
- {
- foreach (Player TempPlayer in Players)
- {
- if (TempPlayer.Name == inPlayerName)
- return TempPlayer;
- }
- return null;
- }
- public void OnTeamWin(string Team)
- {
- switch (Team)
- {
- case "Red":
- {
- switch (TeamWinStatus)
- {
- case 2:
- {
- TeamWinStatus = 1;
- }
- break;
- case 1:
- {
- TeamWinStatus = 0;
- }
- break;
- case 0:
- {
- TeamWinStatus = 1;
- }
- break;
- }
- }
- break;
- case "Blue":
- {
- switch (TeamWinStatus)
- {
- case 0:
- {
- TeamWinStatus = 1;
- }
- break;
- case 1:
- {
- TeamWinStatus = 2;
- }
- break;
- case 2:
- {
- TeamWinStatus = 1;
- }
- break;
- }
- }
- break;
- }
- ChangeMap(TeamWinStatus);
- }
- }
- public class Player
- {
- public string Name;
- public int Kills;
- public bool Admin = false;
- public bool Guard = false;
- public bool Gold = false;
- public Player(string inName, bool inAdmin = false, bool inGuard = false, bool inGold = false)
- {
- Name = inName;
- Admin = inAdmin;
- Guard = inGuard;
- Gold = inGold;
- }
- }
- public class Parser
- {
- public delegate void OnPlayerChatHandler(string outPlayerName, String outChat);
- public static event OnPlayerChatHandler OnPlayerChatEvent = delegate { };
- public delegate void OnPlayerConnectedHandler(Player outPlayer);
- public static event OnPlayerConnectedHandler OnPlayerConnectedEvent = delegate { };
- public delegate void OnPlayerDisconnectedHandler(string outPlayerName);
- public static event OnPlayerDisconnectedHandler OnPlayerDisconnectedEvent = delegate { };
- public delegate void OnMatchStartedHandler();
- public static event OnMatchStartedHandler OnMatchStartedEvent = delegate { };
- public delegate void OnMatchEndedHandler();
- public static event OnMatchEndedHandler OnMatchEndedEvent = delegate { };
- public delegate void OnMatchRestartHandler();
- public static event OnMatchRestartHandler OnMatchRestartEvent = delegate { };
- public delegate void OnTeamWinEventHandler(string outTeam);
- public static event OnTeamWinEventHandler OnTeamWinEvent = delegate { };
- public enum LineType { Chat, Kill, Debug, Event, Error };
- //string[] LogFileArray = File.ReadAllLines(@"C:\KAG\Logs\console-12-04-08-19-50-45.txt");
- public Parser()
- {
- /*
- string[] OldFile = File.ReadAllLines(@"C:\KAG\Logs\console-12-04-08-19-50-45.txt");
- while (true)
- {
- string[] NewFile = null;
- File.Copy(@"C:\KAG\Logs\console-12-05-05-21-55-18.txt", @"C:\KAG\Logs\buffer.txt", true);
- NewFile = File.ReadAllLines(@"C:\KAG\Logs\buffer.txt");
- if (NewFile.Last() != OldFile.Last())
- {
- FileWatch_Changed(NewFile.Last());
- OldFile = NewFile;
- }
- Console.WriteLine("Old: " + OldFile.Last());
- Console.WriteLine(NewFile.Last());
- Console.WriteLine("Tick!");
- Thread.Sleep(1000);
- }
- */
- FileSystemWatcher FileWatch = new FileSystemWatcher();
- FileWatch.Path = @"C:\KAG\Logs\";
- FileWatch.Filter = "console-12-05-05-21-55-18.txt";
- //FileWatch.NotifyFilter = NotifyFilters.LastAccess;
- FileWatch.Changed += new FileSystemEventHandler(FileWatch_Changed);
- FileWatch.EnableRaisingEvents = true;
- /*
- foreach (string Line in LogFileArray)
- {
- LineObject TempLineObject = new LineObject(Line);
- if (TempLineObject.Type == LineType.Chat)
- {
- OnPlayerChatEvent(TempLineObject.Player, TempLineObject.Chat);
- }
- if (TempLineObject.Type == LineType.Event)
- {
- Console.WriteLine("Event: " + TempLineObject.Event);
- if (TempLineObject.Event[0] == '*' && TempLineObject.Event[1] == ' ')
- {
- Player NewPlayer = new Player(TempLineObject.Event.Substring(2, TempLineObject.Event.IndexOf(" connected") - 2));
- string[] PlayerInfo = TempLineObject.Event.Split(' ');
- try
- {
- if (PlayerInfo[4] == "1")
- {
- NewPlayer.Admin = true;
- }
- }
- catch { }
- try
- {
- if (PlayerInfo[6] == "1")
- {
- NewPlayer.Guard = true;
- }
- }
- catch { }
- try
- {
- if (PlayerInfo[8][0] == '1')
- {
- NewPlayer.Guard = true;
- }
- }
- catch { }
- OnPlayerConnectedEvent(NewPlayer);
- }
- if (TempLineObject.Event.Split(' ')[0] == "Player")
- {
- OnPlayerDisconnectedEvent(TempLineObject.Event.Split(' ')[1]);
- }
- if (TempLineObject.Event == "*Match Started*")
- {
- OnMatchStartedEvent();
- }
- if (TempLineObject.Event == "*Match Ended*")
- {
- OnMatchEndedEvent();
- }
- if (TempLineObject.Event == "*Restarting Map*")
- {
- OnMatchRestartEvent();
- }
- if (TempLineObject.Event.Contains("Team"))
- {
- OnTeamWinEvent(TempLineObject.Event.Split(' ')[0]);
- }
- }
- if (TempLineObject.Type == LineType.Debug)
- {
- }
- }
- */
- }
- void FileWatch_Changed(object sender, FileSystemEventArgs e)
- {
- try
- {
- Console.WriteLine("Sum tin changed");
- //string[] FileContents = File.ReadAllLines(e.FullPath);
- File.Copy(@"C:\KAG\Logs\console-12-05-05-21-55-18.txt", @"C:\KAG\Logs\buffer.txt", true);
- string[] NewFile = File.ReadAllLines(@"C:\KAG\Logs\buffer.txt");
- LineObject TempLineObject = new LineObject(NewFile.Last());
- if (TempLineObject.Type == LineType.Chat)
- {
- OnPlayerChatEvent(TempLineObject.Player, TempLineObject.Chat);
- }
- if (TempLineObject.Type == LineType.Event)
- {
- Console.WriteLine("Event: " + TempLineObject.Event);
- if (TempLineObject.Event[0] == '*' && TempLineObject.Event[1] == ' ')
- {
- Player NewPlayer = new Player(TempLineObject.Event.Substring(2, TempLineObject.Event.IndexOf(" connected") - 2));
- string[] PlayerInfo = TempLineObject.Event.Split(' ');
- try
- {
- if (PlayerInfo[4] == "1")
- {
- NewPlayer.Admin = true;
- }
- }
- catch { }
- try
- {
- if (PlayerInfo[6] == "1")
- {
- NewPlayer.Guard = true;
- }
- }
- catch { }
- try
- {
- if (PlayerInfo[8][0] == '1')
- {
- NewPlayer.Guard = true;
- }
- }
- catch { }
- OnPlayerConnectedEvent(NewPlayer);
- }
- if (TempLineObject.Event.Split(' ')[0] == "Player")
- {
- OnPlayerDisconnectedEvent(TempLineObject.Event.Split(' ')[1]);
- }
- if (TempLineObject.Event == "*Match Started*")
- {
- OnMatchStartedEvent();
- }
- if (TempLineObject.Event == "*Match Ended*")
- {
- OnMatchEndedEvent();
- }
- if (TempLineObject.Event == "*Restarting Map*")
- {
- OnMatchRestartEvent();
- }
- if (TempLineObject.Event.Contains("Team"))
- {
- OnTeamWinEvent(TempLineObject.Event.Split(' ')[0]);
- }
- }
- if (TempLineObject.Type == LineType.Debug)
- {
- }
- }
- catch (Exception e2)
- {
- Console.WriteLine(e2.ToString());
- }
- }
- public class LineObject
- {
- public LineType Type;
- public string Player;
- public string Chat;
- public string Event;
- public LineObject(string Line)
- {
- Type = DetermineLineType(Line);
- if (Type == LineType.Chat)
- {
- try
- {
- string TempSubString = Line.Substring(19);
- string[] TempStringArray = TempSubString.Split('>');
- try
- {
- Player = TempStringArray[0];
- }
- catch { }
- try
- {
- Chat = TempStringArray[1].Substring(1);
- }
- catch { }
- }
- catch { }
- }
- if (Type == LineType.Event)
- {
- try
- {
- string TempSubString = Line.Substring(18);
- try
- {
- Event = TempSubString;
- }
- catch { }
- }
- catch { }
- }
- }
- public LineType DetermineLineType(string Line)
- {
- try
- {
- string[] LineArray = Line.Split(' ');
- if (LineArray[1] == "<RCON>")
- {
- if (LineArray[2][0] == '<')
- {
- return LineType.Chat;
- }
- if (LineArray[2][0] == '*')
- {
- return LineType.Event;
- }
- if (LineArray[2].Split(' ')[0] == "Player")
- {
- return LineType.Event;
- }
- if (LineArray[3] == "Team")
- {
- return LineType.Event;
- }
- }
- return LineType.Debug;
- }
- catch { return LineType.Error; }
- }
- }
- public LineType DetermineLineType(string Line)
- {
- string LineTime = Line.Split(' ')[0];
- try
- {
- Line = Line.Substring(LineTime.Length + 1, Line.Length - LineTime.Length - 1);
- }
- catch { }
- Console.WriteLine(Line);
- return LineType.Chat;
- }
- }
- }
Add Comment
Please, Sign In to add comment