All pastes #44437 Raw Edit

Stuff

public text v1 · immutable
#44437 ·published 2006-03-04 14:15 UTC
rendered paste body
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Common;
using System.Xml;
using System.Xml.Serialization;
using System.Xml.Schema;
using System.IO;
using AoLib.Utils;

namespace VhaBot.Plugins
{
    [XmlRoot("levels", Namespace = "", IsNullable = false)]
    public class LevelAnswers {
        [XmlElement("level")]
        public LevelAnswer[] Levels;
    }
    public class LevelAnswer
    {
        [XmlElement("level", Type = typeof(int))]
        public int Level;
        
        [XmlElement("teamlow", Type = typeof(int))]
        public int TeamLow;
        [XmlElement("teamhigh", Type = typeof(int))]
        public int TeamHigh;

        [XmlElement("pvplow", Type = typeof(int))]
        public int PvPLow;
        [XmlElement("pvphigh", Type = typeof(int))]
        public int PvPHigh;

        [XmlElement("mission", Type = typeof(string))]
        public string[] Missions;

        [XmlElement("xpsk", Type = typeof(int))]
        public int XpSk;
    }


    public class LevelPlugin : PluginBase
    {
        public string[] Mission;
        
        public LevelPlugin()
        {
            this.Settings.Name = "Level Plugin";
            this.Settings.InternalName = "LevelPlugin";
            this.Settings.Version = 1;
            this.Settings.Author = "Daniel Eriksson";

            this.Settings.RegisterCommand("level", new BotCommandRights(UserLevel.Guest, UserLevel.Member, UserLevel.Guest));
            this.Settings.RegisterCommandAlias("mission", "level");
            this.Settings.RegisterCommandAlias("lvl", "level");
            this.Settings.RegisterCommandAlias("l", "level");
        }

        public string GetLevel(string level, LevelAnswers result)
        {
            string msg = "";
            if (result != null)
            {
                int val = 0;
                try
                {
                    val = int.Parse(level);
                }
                catch
                {
                    msg = "You must specify a valid number.";
                    return msg;
                }
                foreach (LevelAnswer answer in result.Levels)
                {
                    if (answer.Level == val)
                    {
                        msg = "L " + val + ": ";
                        msg += "Team " + answer.TeamLow + "-" + answer.TeamHigh + " | ";
                        msg += "PvP " + answer.PvPLow + "-" + answer.PvPHigh + " | ";
                        msg += answer.XpSk;
                        if (val > 200)
                            msg += " SK";
                        else
                            msg += " XP";
                        msg += " | ";
                        msg += "Missions ";
                        msg += string.Join(", ", answer.Missions);
                    }
                }
                if (msg == "")
                    msg = "Can't find that level in database.";
            }
            else
            {
                msg = "Can't access the database.";
            }
            return msg;
        }

        public LevelAnswers ParseXML()
        {
            try
            {
                using (FileStream stream = File.OpenRead("Level.xml"))
                {
                    XmlSerializer serializer = new XmlSerializer(typeof(LevelAnswers));
                    LevelAnswers result = (LevelAnswers)serializer.Deserialize(stream);
                    return result;
                }
            }
            catch
            {
                Bot.Debug("Can't open the Level.xml file!");
                return null;
            }
        }
  
        public override void OnInstall()
        {

        }

        public override void OnUninstall()
        {
        }

        public override void OnLoad()
        {
        }

        public override void OnUnload()
        {

        }

        public override void OnCommand(BotShell sender, CommandArgs e)
        {
            if (e.Args.Length > 0)
                Bot.SendReply(e, "Level »» " + GetLevel(e.Args[0], ParseXML()));
            else
                Bot.SendReply(e, "Level »» You got to append a level to. Syntax: level [level]");
        }
    }
}