public static void LoadXml() { if (!Utils.FileExists(filePath)) { UpdateXml(); } XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.Load(filePath); } catch (XmlException e) { Log.Error(string.Format("[SERVERTOOLS] Failed loading {0}: {1}", file, e.Message)); return; } XmlNode _XmlNode = xmlDoc.DocumentElement; foreach (XmlNode childNode in _XmlNode.ChildNodes) { if (childNode.Name == "Zone") { Box1.Clear(); Box2.Clear(); ReminderMsg.Clear(); Reminder.Clear(); ZoneExit.Clear(); ZonePvE.Clear(); foreach (XmlNode subChild in childNode.ChildNodes) { if (subChild.NodeType == XmlNodeType.Comment) { continue; } if (subChild.NodeType != XmlNodeType.Element) { Log.Warning(string.Format("[SERVERTOOLS] Unexpected XML node found in 'Zone' section: {0}", subChild.OuterXml)); continue; } XmlElement _line = (XmlElement)subChild; if (!_line.HasAttribute("Corner1")) { Log.Warning(string.Format("[SERVERTOOLS] Ignoring Zones entry because of missing Corner1 attribute: {0}", subChild.OuterXml)); continue; } if (!_line.HasAttribute("Corner2")) { Log.Warning(string.Format("[SERVERTOOLS] Ignoring Zones entry because of missing Corner2 attribute: {0}", subChild.OuterXml)); continue; } if (!_line.HasAttribute("EntryMessage")) { Log.Warning(string.Format("[SERVERTOOLS] Ignoring Zones entry because of missing EntryMessage attribute: {0}", subChild.OuterXml)); continue; } if (!_line.HasAttribute("ExitMessage")) { Log.Warning(string.Format("[SERVERTOOLS] Ignoring Zones entry because of missing ExitMessage attribute: {0}", subChild.OuterXml)); continue; } if (!_line.HasAttribute("Response")) { Log.Warning(string.Format("[SERVERTOOLS] Ignoring Zones entry because of missing Response attribute: {0}", subChild.OuterXml)); continue; } if (!_line.HasAttribute("ReminderNotice")) { Log.Warning(string.Format("[SERVERTOOLS] Ignoring Zones entry because of missing ReminderNotice attribute: {0}", subChild.OuterXml)); continue; } if (!_line.HasAttribute("Circle")) { Log.Warning(string.Format("[SERVERTOOLS] Ignoring Zones entry because of missing Circle attribute: {0}", subChild.OuterXml)); continue; } if (!_line.HasAttribute("PvE")) { Log.Warning(string.Format("[SERVERTOOLS] Ignoring Zones entry because of missing PvE attribute: {0}", subChild.OuterXml)); continue; } if (!_line.HasAttribute("NoZombie")) { Log.Warning(string.Format("[SERVERTOOLS] Ignoring Zones entry because of missing NoZombie attribute: {0}", subChild.OuterXml)); continue; } if (!_line.HasAttribute("Protected")) { Log.Warning(string.Format("[SERVERTOOLS] Ignoring Zones entry because of missing Protected attribute: {0}", subChild.OuterXml)); continue; } else { bool _result1, _result2, _result3, _result4; string _circle = _line.GetAttribute("Circle"); if (!bool.TryParse(_circle, out _result1)) { Log.Warning(string.Format("[SERVERTOOLS] Ignoring Zones entry because improper True/False for Circle attribute: {0}.", subChild.OuterXml)); continue; } string _pve = _line.GetAttribute("PvE"); if (!bool.TryParse(_pve, out _result2)) { Log.Warning(string.Format("[SERVERTOOLS] Ignoring Zones entry because improper True/False for PvE attribute: {0}.", subChild.OuterXml)); continue; } string _noZ = _line.GetAttribute("NoZombie"); if (!bool.TryParse(_noZ, out _result3)) { Log.Warning(string.Format("[SERVERTOOLS] Ignoring Zones entry because improper True/False for NoZombie attribute: {0}.", subChild.OuterXml)); continue; } string _protect = _line.GetAttribute("Protected"); if (!bool.TryParse(_protect, out _result4)) { Log.Warning(string.Format("[SERVERTOOLS] Ignoring Zones entry because improper True/False for Protected attribute: {0}.", subChild.OuterXml)); continue; } string[] box1 = { _line.GetAttribute("Corner1"), _line.GetAttribute("Corner2"), _line.GetAttribute("EntryMessage"), _line.GetAttribute("ExitMessage"), _line.GetAttribute("Response"), _line.GetAttribute("ReminderNotice") }; bool[] box2 = { _result1, _result2, _result3, _result4 }; if (!Box1.Contains(box1)) { Box1.Add(box1); Box2.Add(box2); if (_result4) { if (!_result1) { string[] _corner1 = box1[0].Split(','); string[] _corner2 = box1[1].Split(','); string[] _vectors = { _corner1[0], _corner1[2], _corner2[0], _corner2[2] }; Zones.AddProtection(_vectors); } else { //Add circle protection later } } } } } } } }