Guest User

Untitled

a guest
Aug 5th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 15.91 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. using System.Threading;
  7.  
  8. namespace KagParser
  9. {
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             try
  15.             {
  16.                 KagAdmin Application = new KagAdmin();
  17.             }
  18.             catch (Exception e)
  19.             {
  20.                 Console.WriteLine(e.ToString());
  21.             }
  22.  
  23.             Thread.Sleep(Timeout.Infinite);
  24.         }
  25.     }
  26.  
  27.     public class KagAdmin : Parser
  28.     {
  29.         public List<Player> Players = new List<Player>();
  30.         public int TeamWinStatus = 1;
  31.  
  32.         public KagAdmin()
  33.         {
  34.             OnPlayerConnectedEvent += OnPlayerConnected;
  35.             OnPlayerDisconnectedEvent += OnPlayerDisconnected;
  36.             OnTeamWinEvent += OnTeamWin;
  37.  
  38.             Parser Application = new Parser();
  39.         }
  40.  
  41.         public void ChangeMap(int MapId)
  42.         {
  43.             string Map = "";
  44.  
  45.             switch (MapId)
  46.             {
  47.                 case 0:
  48.                     {
  49.                         Map = @"mapcycle = Maps/permamap.png;";
  50.                     }
  51.                     break;
  52.  
  53.                 case 1:
  54.                     {
  55.                         Map = @"mapcycle = Maps/editor.png;";
  56.                     }
  57.                     break;
  58.  
  59.                 case 2:
  60.                     {
  61.                         Map = @"mapcycle = Maps/epicmap.png;";
  62.                     }
  63.                     break;
  64.             }
  65.  
  66.             File.WriteAllText(@"C:\KAG\Base\Scripts\mapcycle.cfg", Map);
  67.         }
  68.  
  69.         public void OnPlayerChat(string inPlayerName, String inChat)
  70.         {
  71.             Player inPlayer = GetPlayerFromName(inPlayerName);
  72.         }
  73.  
  74.         public void OnPlayerConnected(Player inPlayer)
  75.         {
  76.             Players.Add(inPlayer);
  77.             Console.WriteLine(inPlayer.Name + " connected!");
  78.         }
  79.  
  80.         public void OnPlayerDisconnected(string inPlayerName)
  81.         {
  82.             Console.WriteLine(inPlayerName + " disconnected!");
  83.         }
  84.  
  85.         public Player GetPlayerFromName(string inPlayerName)
  86.         {
  87.             foreach (Player TempPlayer in Players)
  88.             {
  89.                 if (TempPlayer.Name == inPlayerName)
  90.                     return TempPlayer;
  91.             }
  92.  
  93.             return null;
  94.         }
  95.  
  96.         public void OnTeamWin(string Team)
  97.         {
  98.             switch (Team)
  99.             {
  100.                 case "Red":
  101.                     {
  102.                         switch (TeamWinStatus)
  103.                         {
  104.                             case 2:
  105.                                 {
  106.                                     TeamWinStatus = 1;
  107.                                 }
  108.                                 break;
  109.  
  110.                             case 1:
  111.                                 {
  112.                                     TeamWinStatus = 0;
  113.                                 }
  114.                                 break;
  115.  
  116.                             case 0:
  117.                                 {
  118.                                     TeamWinStatus = 1;
  119.                                 }
  120.                                 break;
  121.                         }
  122.                     }
  123.                     break;
  124.  
  125.                 case "Blue":
  126.                     {
  127.                         switch (TeamWinStatus)
  128.                         {
  129.                             case 0:
  130.                                 {
  131.                                     TeamWinStatus = 1;
  132.                                 }
  133.                                 break;
  134.  
  135.                             case 1:
  136.                                 {
  137.                                     TeamWinStatus = 2;
  138.                                 }
  139.                                 break;
  140.  
  141.                             case 2:
  142.                                 {
  143.                                     TeamWinStatus = 1;
  144.                                 }
  145.                                 break;
  146.                         }
  147.                     }
  148.                     break;
  149.             }
  150.  
  151.             ChangeMap(TeamWinStatus);
  152.         }
  153.     }
  154.  
  155.     public class Player
  156.     {
  157.         public string Name;
  158.         public int Kills;
  159.  
  160.         public bool Admin = false;
  161.         public bool Guard = false;
  162.         public bool Gold = false;
  163.  
  164.         public Player(string inName, bool inAdmin = false, bool inGuard = false, bool inGold = false)
  165.         {
  166.             Name = inName;
  167.  
  168.             Admin = inAdmin;
  169.             Guard = inGuard;
  170.             Gold = inGold;
  171.         }
  172.     }
  173.  
  174.     public class Parser
  175.     {
  176.         public delegate void OnPlayerChatHandler(string outPlayerName, String outChat);
  177.         public static event OnPlayerChatHandler OnPlayerChatEvent = delegate { };
  178.  
  179.         public delegate void OnPlayerConnectedHandler(Player outPlayer);
  180.         public static event OnPlayerConnectedHandler OnPlayerConnectedEvent = delegate { };
  181.  
  182.         public delegate void OnPlayerDisconnectedHandler(string outPlayerName);
  183.         public static event OnPlayerDisconnectedHandler OnPlayerDisconnectedEvent = delegate { };
  184.  
  185.         public delegate void OnMatchStartedHandler();
  186.         public static event OnMatchStartedHandler OnMatchStartedEvent = delegate { };
  187.  
  188.         public delegate void OnMatchEndedHandler();
  189.         public static event OnMatchEndedHandler OnMatchEndedEvent = delegate { };
  190.  
  191.         public delegate void OnMatchRestartHandler();
  192.         public static event OnMatchRestartHandler OnMatchRestartEvent = delegate { };
  193.  
  194.         public delegate void OnTeamWinEventHandler(string outTeam);
  195.         public static event OnTeamWinEventHandler OnTeamWinEvent = delegate { };
  196.  
  197.         public enum LineType { Chat, Kill, Debug, Event, Error };
  198.  
  199.         //string[] LogFileArray = File.ReadAllLines(@"C:\KAG\Logs\console-12-04-08-19-50-45.txt");
  200.         public Parser()
  201.         {
  202.             /*
  203.             string[] OldFile = File.ReadAllLines(@"C:\KAG\Logs\console-12-04-08-19-50-45.txt");
  204.             while (true)
  205.             {
  206.                 string[] NewFile = null;
  207.                 File.Copy(@"C:\KAG\Logs\console-12-05-05-21-55-18.txt", @"C:\KAG\Logs\buffer.txt", true);
  208.                 NewFile = File.ReadAllLines(@"C:\KAG\Logs\buffer.txt");
  209.  
  210.                 if (NewFile.Last() != OldFile.Last())
  211.                 {
  212.                     FileWatch_Changed(NewFile.Last());
  213.                     OldFile = NewFile;
  214.                 }
  215.  
  216.                 Console.WriteLine("Old: " + OldFile.Last());
  217.                 Console.WriteLine(NewFile.Last());
  218.  
  219.                 Console.WriteLine("Tick!");
  220.                 Thread.Sleep(1000);
  221.             }
  222.              */
  223.  
  224.            
  225.             FileSystemWatcher FileWatch = new FileSystemWatcher();
  226.             FileWatch.Path = @"C:\KAG\Logs\";
  227.             FileWatch.Filter = "console-12-05-05-21-55-18.txt";
  228.             //FileWatch.NotifyFilter = NotifyFilters.LastAccess;
  229.             FileWatch.Changed += new FileSystemEventHandler(FileWatch_Changed);
  230.             FileWatch.EnableRaisingEvents = true;
  231.            
  232.  
  233.             /*
  234.             foreach (string Line in LogFileArray)
  235.             {
  236.                 LineObject TempLineObject = new LineObject(Line);
  237.  
  238.                 if (TempLineObject.Type == LineType.Chat)
  239.                 {
  240.                     OnPlayerChatEvent(TempLineObject.Player, TempLineObject.Chat);
  241.                 }
  242.  
  243.                 if (TempLineObject.Type == LineType.Event)
  244.                 {
  245.                     Console.WriteLine("Event: " + TempLineObject.Event);
  246.  
  247.                     if (TempLineObject.Event[0] == '*' && TempLineObject.Event[1] == ' ')
  248.                     {
  249.                         Player NewPlayer = new Player(TempLineObject.Event.Substring(2, TempLineObject.Event.IndexOf(" connected") - 2));
  250.  
  251.                         string[] PlayerInfo = TempLineObject.Event.Split(' ');
  252.  
  253.                         try
  254.                         {
  255.                             if (PlayerInfo[4] == "1")
  256.                             {
  257.                                 NewPlayer.Admin = true;
  258.                             }
  259.                         }
  260.                         catch { }
  261.  
  262.                         try
  263.                         {
  264.                             if (PlayerInfo[6] == "1")
  265.                             {
  266.                                 NewPlayer.Guard = true;
  267.                             }
  268.                         }
  269.                         catch { }
  270.  
  271.                         try
  272.                         {
  273.                             if (PlayerInfo[8][0] == '1')
  274.                             {
  275.                                 NewPlayer.Guard = true;
  276.                             }
  277.                         }
  278.                         catch { }
  279.  
  280.                         OnPlayerConnectedEvent(NewPlayer);
  281.                     }
  282.  
  283.                     if (TempLineObject.Event.Split(' ')[0] == "Player")
  284.                     {
  285.                         OnPlayerDisconnectedEvent(TempLineObject.Event.Split(' ')[1]);
  286.                     }
  287.  
  288.                     if (TempLineObject.Event == "*Match Started*")
  289.                     {
  290.                         OnMatchStartedEvent();
  291.                     }
  292.  
  293.                     if (TempLineObject.Event == "*Match Ended*")
  294.                     {
  295.                         OnMatchEndedEvent();
  296.                     }
  297.  
  298.                     if (TempLineObject.Event == "*Restarting Map*")
  299.                     {
  300.                         OnMatchRestartEvent();
  301.                     }
  302.  
  303.                     if (TempLineObject.Event.Contains("Team"))
  304.                     {
  305.                         OnTeamWinEvent(TempLineObject.Event.Split(' ')[0]);
  306.                     }
  307.                 }
  308.  
  309.                 if (TempLineObject.Type == LineType.Debug)
  310.                 {
  311.                 }
  312.             }
  313.              */
  314.         }
  315.  
  316.         void FileWatch_Changed(object sender, FileSystemEventArgs e)
  317.         {
  318.             try
  319.             {
  320.                 Console.WriteLine("Sum tin changed");
  321.                 //string[] FileContents = File.ReadAllLines(e.FullPath);
  322.  
  323.                 File.Copy(@"C:\KAG\Logs\console-12-05-05-21-55-18.txt", @"C:\KAG\Logs\buffer.txt", true);
  324.                 string[] NewFile = File.ReadAllLines(@"C:\KAG\Logs\buffer.txt");
  325.  
  326.                 LineObject TempLineObject = new LineObject(NewFile.Last());
  327.  
  328.                 if (TempLineObject.Type == LineType.Chat)
  329.                 {
  330.                     OnPlayerChatEvent(TempLineObject.Player, TempLineObject.Chat);
  331.                 }
  332.  
  333.                 if (TempLineObject.Type == LineType.Event)
  334.                 {
  335.                     Console.WriteLine("Event: " + TempLineObject.Event);
  336.  
  337.                     if (TempLineObject.Event[0] == '*' && TempLineObject.Event[1] == ' ')
  338.                     {
  339.                         Player NewPlayer = new Player(TempLineObject.Event.Substring(2, TempLineObject.Event.IndexOf(" connected") - 2));
  340.  
  341.                         string[] PlayerInfo = TempLineObject.Event.Split(' ');
  342.  
  343.                         try
  344.                         {
  345.                             if (PlayerInfo[4] == "1")
  346.                             {
  347.                                 NewPlayer.Admin = true;
  348.                             }
  349.                         }
  350.                         catch { }
  351.  
  352.                         try
  353.                         {
  354.                             if (PlayerInfo[6] == "1")
  355.                             {
  356.                                 NewPlayer.Guard = true;
  357.                             }
  358.                         }
  359.                         catch { }
  360.  
  361.                         try
  362.                         {
  363.                             if (PlayerInfo[8][0] == '1')
  364.                             {
  365.                                 NewPlayer.Guard = true;
  366.                             }
  367.                         }
  368.                         catch { }
  369.  
  370.                         OnPlayerConnectedEvent(NewPlayer);
  371.                     }
  372.  
  373.                     if (TempLineObject.Event.Split(' ')[0] == "Player")
  374.                     {
  375.                         OnPlayerDisconnectedEvent(TempLineObject.Event.Split(' ')[1]);
  376.                     }
  377.  
  378.                     if (TempLineObject.Event == "*Match Started*")
  379.                     {
  380.                         OnMatchStartedEvent();
  381.                     }
  382.  
  383.                     if (TempLineObject.Event == "*Match Ended*")
  384.                     {
  385.                         OnMatchEndedEvent();
  386.                     }
  387.  
  388.                     if (TempLineObject.Event == "*Restarting Map*")
  389.                     {
  390.                         OnMatchRestartEvent();
  391.                     }
  392.  
  393.                     if (TempLineObject.Event.Contains("Team"))
  394.                     {
  395.                         OnTeamWinEvent(TempLineObject.Event.Split(' ')[0]);
  396.                     }
  397.                 }
  398.  
  399.                 if (TempLineObject.Type == LineType.Debug)
  400.                 {
  401.                 }
  402.             }
  403.             catch (Exception e2)
  404.             {
  405.                 Console.WriteLine(e2.ToString());
  406.             }
  407.         }
  408.  
  409.         public class LineObject
  410.         {
  411.             public LineType Type;
  412.  
  413.             public string Player;
  414.             public string Chat;
  415.             public string Event;
  416.  
  417.             public LineObject(string Line)
  418.             {
  419.                 Type = DetermineLineType(Line);
  420.  
  421.                 if (Type == LineType.Chat)
  422.                 {
  423.                     try
  424.                     {
  425.                         string TempSubString = Line.Substring(19);
  426.                         string[] TempStringArray = TempSubString.Split('>');
  427.  
  428.                         try
  429.                         {
  430.                             Player = TempStringArray[0];
  431.                         }
  432.                         catch { }
  433.  
  434.                         try
  435.                         {
  436.                             Chat = TempStringArray[1].Substring(1);
  437.                         }
  438.                         catch { }
  439.                     }
  440.                     catch { }
  441.                 }
  442.  
  443.                 if (Type == LineType.Event)
  444.                 {
  445.                     try
  446.                     {
  447.                         string TempSubString = Line.Substring(18);
  448.  
  449.                         try
  450.                         {
  451.                             Event = TempSubString;
  452.                         }
  453.                         catch { }
  454.                     }
  455.                     catch { }
  456.                 }
  457.             }
  458.  
  459.             public LineType DetermineLineType(string Line)
  460.             {
  461.                 try
  462.                 {
  463.                     string[] LineArray = Line.Split(' ');
  464.  
  465.                     if (LineArray[1] == "<RCON>")
  466.                     {
  467.                         if (LineArray[2][0] == '<')
  468.                         {
  469.                             return LineType.Chat;
  470.                         }
  471.  
  472.                         if (LineArray[2][0] == '*')
  473.                         {
  474.                             return LineType.Event;
  475.                         }
  476.  
  477.                         if (LineArray[2].Split(' ')[0] == "Player")
  478.                         {
  479.                             return LineType.Event;
  480.                         }
  481.  
  482.                         if (LineArray[3] == "Team")
  483.                         {
  484.                             return LineType.Event;
  485.                         }
  486.                     }
  487.  
  488.                     return LineType.Debug;
  489.                 }
  490.                 catch { return LineType.Error; }
  491.             }
  492.         }
  493.  
  494.         public LineType DetermineLineType(string Line)
  495.         {
  496.             string LineTime = Line.Split(' ')[0];
  497.  
  498.             try
  499.             {
  500.                 Line = Line.Substring(LineTime.Length + 1, Line.Length - LineTime.Length - 1);
  501.             }
  502.             catch { }
  503.  
  504.             Console.WriteLine(Line);
  505.  
  506.             return LineType.Chat;
  507.         }
  508.     }
  509. }
Add Comment
Please, Sign In to add comment