void OnRotate(Player p, RotateEventArgs args) { if (!(bool)(p.ExtraData.GetIfExist <object, object>("WoMCompass") ?? false)) { return; } else { WOM.SendDetail(p, "(" + SubstringLoop(p.Rot[0] / (int)(255 / (compass.Length - 1))) + ")"); } }
public void Use(Player p, string[] args) { p.ExtraData.CreateIfNotExist <object, object>("WoMCompass", false); switch (args.Length) { case 0: p.ExtraData["WoMCompass"] = !(bool)(p.ExtraData.GetIfExist <object, object>("WoMCompass") ?? false); if ((bool)p.ExtraData["WoMCompass"] == true) { p.SendMessage("Compass activated!"); WOM.SendDetail(p, "Look around to activate the Compass!"); } else { p.SendMessage("Compass deactivated!"); DeactiveMessage(p); } break; case 1: switch (args[0]) { case "on": p.ExtraData["WoMCompass"] = true; p.SendMessage("Compass activated!"); WOM.SendDetail(p, "Look around to activate the Compass!"); break; case "off": p.ExtraData["WoMCompass"] = false; p.SendMessage("Compass deactivated!"); DeactiveMessage(p); break; default: p.SendMessage("Invalid argument!"); break; } break; default: p.SendMessage("Invalid arguments!"); break; } }
void OnIncomingData(Player p, PacketEventArgs args) { if (args.Data.Length < 0) { return; } if (args.Data[0] != (byte)'G') { return; } args.Cancel(); var netStream = p.Client.GetStream(); using (var Writer = new StreamWriter(netStream)) { var line = Encoding.UTF8.GetString(args.Data, 0, args.Data.Length).Split('\n')[0]; var match = Parser.Match(line); if (match.Success) { var lvl = Level.FindLevel(match.Groups[1].Value); var versionLine = Encoding.UTF8.GetString(args.Data, 0, args.Data.Length).Split('\n')[2]; var userNameLine = Encoding.UTF8.GetString(args.Data, 0, args.Data.Length).Split('\n')[3]; var version = versionLine.Remove(0, "X-WoM-Version: ".Length).Replace("\r", ""); var username = userNameLine.Remove(0, "X-WoM-Username: "******"\r", ""); Thread.Sleep(1500); //Trying to find player before it loads so wait. var player = Player.Find(username); if (player != null) { player.ExtraData.ChangeOrCreate <object, object>("UsingWoM", true); if (!String.IsNullOrWhiteSpace(version)) { player.ExtraData.ChangeOrCreate <object, object>("WoMVersion", version); if (PluginSettings.GetSettingBoolean("notify-ops") == true) { Player.UniversalChatOps(username + " joined using " + version); Logger.Log(username + " joined using " + version); } } } if (lvl == null) { Writer.Write("HTTP/1.1 404 Not Found"); Writer.Flush(); } else { if (!lvl.ExtraData.ContainsKey("WoMConfig")) { Writer.Write("HTTP/1.1 500 Internal Server Error"); Writer.Flush(); } else { var config = (string[])lvl.ExtraData["WoMConfig"]; var bytes = Encoding.UTF8.GetBytes(config.ToString <string>()); Writer.WriteLine("HTTP/1.1 200 OK"); Writer.WriteLine("Date: " + DateTime.UtcNow.ToString("R")); Writer.WriteLine("Server: Apache/2.2.21 (CentOS)"); Writer.WriteLine("Last-Modified: " + DateTime.UtcNow.ToString("R")); Writer.WriteLine("Accept-Ranges: bytes"); Writer.WriteLine("Content-Length: " + bytes.Length); Writer.WriteLine("Connection: close"); Writer.WriteLine("Content-Type: text/plain"); Writer.WriteLine(); foreach (var entry in config) { Writer.WriteLine(entry); } } CFGSettings a = (CFGSettings)CFGDict.GetIfExist <Level, CFGSettings>(p.Level); WOM.SendDetail(player, a.GetSetting("detail.user")); //Send the detail with parsed variables. } } else { Writer.Write("HTTP/1.1 400 Bad Request"); Writer.Flush(); } } }
void DeactiveMessage(Player p) { CFGSettings a = (CFGSettings)PluginWoMTextures.CFGDict.GetIfExist <Level, CFGSettings>(p.Level); WOM.SendDetail(p, a.GetSetting("detail.user")); }