Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace Evolve
- {
- using Meebey.SmartIrc4net;
- using System;
- using System.Runtime.InteropServices;
- using System.Threading;
- internal class IRC_Global
- {
- private static string globalchannel = "#EvolveGlobal";
- private static string globalnick = Server.name;
- private static string globalopchannel = "NULL";
- private static string globalserver = "irc.uk.mibbit.net";
- private static IrcClient irc = new IrcClient();
- private static Thread ircThread;
- private static string[] names;
- public IRC_Global()
- {
- ThreadStart start = null;
- if (start == null)
- {
- start = delegate {
- irc.OnConnecting += new EventHandler(this.OnConnecting);
- irc.OnConnected += new EventHandler(this.OnConnected);
- irc.OnChannelMessage += new IrcEventHandler(this.OnChanMessage);
- irc.OnJoin += new JoinEventHandler(this.OnJoin);
- irc.OnPart += new PartEventHandler(this.OnPart);
- irc.OnQuit += new QuitEventHandler(this.OnQuit);
- irc.OnNickChange += new NickChangeEventHandler(this.OnNickChange);
- irc.OnDisconnected += new EventHandler(this.OnDisconnected);
- irc.OnQueryMessage += new IrcEventHandler(this.OnPrivMsg);
- irc.OnNames += new NamesEventHandler(this.OnNames);
- irc.OnChannelAction += new ActionEventHandler(this.OnAction);
- try
- {
- irc.Connect(globalserver, Server.ircPort);
- }
- catch (Exception exception)
- {
- Console.WriteLine("Failed to connect to other Evolve Servers!", exception.Message);
- }
- };
- }
- ircThread = new Thread(start);
- ircThread.Start();
- }
- public static string[] GetConnectedUsers()
- {
- return names;
- }
- public static bool IsConnected()
- {
- return irc.IsConnected;
- }
- private void OnAction(object sender, ActionEventArgs e)
- {
- Server.s.OwnerChat("* " + e.Data.Nick + " " + e.ActionMessage, false);
- }
- private void OnChanMessage(object sender, IrcEventArgs e)
- {
- string message = e.Data.Message;
- string nick = e.Data.Nick;
- string str2 = "1234567890-=qwertyuiop[]\\asdfghjkl;'zxcvbnm,./!@#$%^*()_+QWERTYUIOPASDFGHJKL:\"ZXCVBNM<>? ";
- foreach (char ch in message)
- {
- if (str2.IndexOf(ch) == -1)
- {
- message = message.Replace(ch.ToString(), "*");
- }
- }
- if (e.Data.Channel == globalopchannel)
- {
- Server.s.EvolveGlobalChat(e.Data.Nick + ": " + message, false);
- Player.GlobalEvolve("&b[Global] &c" + e.Data.Nick + ": &f" + message);
- }
- else
- {
- Server.s.EvolveGlobalChat(e.Data.Nick + ": " + message, false);
- Player.GlobalEvolve("&b[Global] &c" + e.Data.Nick + ": &f" + message);
- }
- }
- private void OnConnected(object sender, EventArgs e)
- {
- irc.Login(globalnick, globalnick, 0, globalnick);
- if (Server.ircIdentify && (Server.ircPassword != string.Empty))
- {
- irc.SendMessage(SendType.Message, "nickserv", "IDENTIFY " + Server.ircPassword);
- }
- irc.RfcJoin(globalchannel);
- irc.RfcJoin(globalopchannel);
- irc.Listen();
- }
- private void OnConnecting(object sender, EventArgs e)
- {
- }
- private void OnDisconnected(object sender, EventArgs e)
- {
- try
- {
- irc.Connect(globalserver, 0x1a0b);
- }
- catch
- {
- Console.WriteLine("Failed to connect to mainstream Evolve Servers!");
- }
- }
- private void OnJoin(object sender, JoinEventArgs e)
- {
- irc.RfcNames(globalchannel);
- irc.RfcNames(globalopchannel);
- }
- private void OnNames(object sender, NamesEventArgs e)
- {
- names = e.UserList;
- }
- private void OnNickChange(object sender, NickChangeEventArgs e)
- {
- if (e.NewNickname.Split(new char[] { '|' }).Length != 2)
- {
- if (Server.afkset.Contains(e.NewNickname))
- {
- Server.s.EvolveGlobalChat(e.NewNickname + " is no longer away", false);
- Server.afkset.Remove(e.NewNickname);
- }
- else
- {
- Server.s.OwnerChat(e.OldNickname + " is now known as " + e.NewNickname, false);
- }
- }
- else
- {
- string str2;
- string str = e.NewNickname.Split(new char[] { '|' })[1];
- if (((str != null) && (str != "")) && ((str2 = str) != null))
- {
- if (!(str2 == "AFK"))
- {
- if (str2 == "Away")
- {
- Server.s.EvolveGlobalChat(e.OldNickname + " is Away", false);
- Server.afkset.Add(e.OldNickname);
- }
- }
- else
- {
- Server.s.EvolveGlobalChat(e.OldNickname + " is AFK", false);
- Server.afkset.Add(e.OldNickname);
- }
- }
- }
- irc.RfcNames(globalchannel);
- irc.RfcNames(globalopchannel);
- }
- private void OnPart(object sender, PartEventArgs e)
- {
- Player.GlobalEvolve(e.Data.Nick + " has left globalchat.");
- if (e.Data.Channel == globalopchannel)
- {
- Server.s.EvolveGlobalChat(e.Data.Nick + " has left the operator channel", false);
- }
- else
- {
- Server.s.EvolveGlobalChat(e.Data.Nick + " has left the channel", false);
- }
- irc.RfcNames(globalchannel);
- irc.RfcNames(globalopchannel);
- }
- private void OnPrivMsg(object sender, IrcEventArgs e)
- {
- if (Server.ircControllers.Contains(e.Data.Nick))
- {
- string str2;
- int length = e.Data.Message.Split(new char[] { ' ' }).Length;
- string str = e.Data.Message.Split(new char[] { ' ' })[0];
- if (length > 1)
- {
- str2 = e.Data.Message.Substring(e.Data.Message.IndexOf(' ')).Trim();
- }
- else
- {
- str2 = "";
- }
- if ((!(str2 != "") && !(str == "restart")) && !(str == "update"))
- {
- irc.SendMessage(SendType.Message, e.Data.Nick, "Invalid command format.");
- }
- else
- {
- Server.s.OwnerChat(str + " : " + str2, false);
- switch (str)
- {
- case "kick":
- if (Player.Find(str2.Split(new char[0])[0]) == null)
- {
- irc.SendMessage(SendType.Message, e.Data.Nick, "Player not found.");
- return;
- }
- Command.all.Find("kick").Use(null, str2, false);
- return;
- case "ban":
- if (Player.Find(str2) == null)
- {
- irc.SendMessage(SendType.Message, e.Data.Nick, "Player not found.");
- return;
- }
- Command.all.Find("ban").Use(null, str2, false);
- return;
- case "banip":
- if (Player.Find(str2) == null)
- {
- irc.SendMessage(SendType.Message, e.Data.Nick, "Player not found.");
- return;
- }
- Command.all.Find("banip").Use(null, str2, false);
- return;
- case "say":
- irc.SendMessage(SendType.Message, globalchannel, str2);
- return;
- case "setrank":
- if (Player.Find(str2.Split(new char[] { ' ' })[0]) == null)
- {
- irc.SendMessage(SendType.Message, e.Data.Nick, "Player not found.");
- return;
- }
- Command.all.Find("setrank").Use(null, str2, false);
- return;
- case "mute":
- if (Player.Find(str2) == null)
- {
- irc.SendMessage(SendType.Message, e.Data.Nick, "Player not found.");
- return;
- }
- Command.all.Find("mute").Use(null, str2, false);
- return;
- case "joker":
- if (Player.Find(str2) == null)
- {
- irc.SendMessage(SendType.Message, e.Data.Nick, "Player not found.");
- return;
- }
- Command.all.Find("joker").Use(null, str2, false);
- return;
- case "physics":
- if (Level.Find(str2.Split(new char[] { ' ' })[0]) == null)
- {
- irc.SendMessage(SendType.Message, e.Data.Nick, "Map not found.");
- return;
- }
- Command.all.Find("physics").Use(null, str2, false);
- return;
- case "load":
- if (Level.Find(str2.Split(new char[] { ' ' })[0]) == null)
- {
- irc.SendMessage(SendType.Message, e.Data.Nick, "Map not found.");
- return;
- }
- Command.all.Find("load").Use(null, str2, false);
- return;
- case "unload":
- if ((Level.Find(str2) == null) && !(str2 == "empty"))
- {
- irc.SendMessage(SendType.Message, e.Data.Nick, "Map not found.");
- return;
- }
- Command.all.Find("unload").Use(null, str2, false);
- return;
- case "save":
- if (Level.Find(str2) == null)
- {
- irc.SendMessage(SendType.Message, e.Data.Nick, "Map not found.");
- return;
- }
- Command.all.Find("save").Use(null, str2, false);
- return;
- case "map":
- if (Level.Find(str2.Split(new char[] { ' ' })[0]) == null)
- {
- irc.SendMessage(SendType.Message, e.Data.Nick, "Map not found.");
- return;
- }
- Command.all.Find("map").Use(null, str2, false);
- return;
- case "restart":
- Server.s.EvolveGlobalChat("Restart initiated by " + e.Data.Nick, false);
- IRC_Owners.Say("Restart initiated by " + e.Data.Nick, false);
- Command.all.Find("restart").Use(null, "", false);
- return;
- case "update":
- Server.s.EvolveGlobalChat("Update check initiated by " + e.Data.Nick, false);
- IRC_Owners.Say("Update check initiated by " + e.Data.Nick, false);
- Command.all.Find("update").Use(null, "", false);
- return;
- default:
- irc.SendMessage(SendType.Message, e.Data.Nick, "Invalid command.");
- return;
- }
- }
- }
- }
- private void OnQuit(object sender, QuitEventArgs e)
- {
- Server.s.EvolveGlobalChat(e.Data.Nick + " has left IRC", false);
- Player.GlobalEvolve(e.Data.Nick + " has left globalchat.");
- irc.RfcNames(globalchannel);
- irc.RfcNames(globalopchannel);
- }
- public static void Reset()
- {
- if (irc.IsConnected)
- {
- irc.Disconnect();
- }
- ircThread = new Thread(delegate {
- try
- {
- irc.Connect(globalserver, Server.ircPort);
- }
- catch (Exception exception)
- {
- Server.s.Log("Error Connecting to IRC", false);
- Server.s.Log(exception.ToString(), false);
- }
- });
- ircThread.Start();
- }
- public static void Say(string msg, bool opchat = false)
- {
- if ((irc != null) && irc.IsConnected)
- {
- if (!opchat)
- {
- irc.SendMessage(SendType.Message, globalchannel, msg);
- }
- else
- {
- irc.SendMessage(SendType.Message, globalopchannel, msg);
- }
- }
- }
- public static void ShutDown()
- {
- irc.Disconnect();
- ircThread.Abort();
- }
- }
- }
Add Comment
Please, Sign In to add comment