public static bool IsOnline(int ID)
 {
     SqlWrapper sql = new SqlWrapper();
     DataTable dt = sql.ReadDT("SELECT * FROM characters WHERE ID = " + ID + ";");
     if (dt.Rows.Count==0)
     {
         throw new Exception("Character does not exist");
     }
     if ((Int16)dt.Rows[0]["Online"] == 1)
     {
         return true;
     }
     return false;
 }
Пример #2
0
        public void readWaypointsfromSQL()
        {
            SqlWrapper ms = new SqlWrapper();
            AOCoord m_wp;

            DataTable dt = ms.ReadDT("SELECT * FROM " + getSQLTablefromDynelType() + "waypoints WHERE ID=" + ID.ToString());

            foreach (DataRow row in dt.Rows)
            {
                m_wp = new AOCoord((Single)row["X"], (Single)row["Y"], (Single)row["Z"]);
                Waypoints.Add(m_wp);
            }
             
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="accountName"></param>
        /// <returns></returns>
        public static List<CharacterEntry> LoadCharacters(string accountName)
        {
            List<CharacterEntry> characters = new List<CharacterEntry>();
            SqlWrapper ms = new SqlWrapper();

            string SqlQuery = "SELECT `characters`.`ID`, `characters`.`Name`, `characters`.`playfield`, (SELECT `Value` FROM `characters_stats` WHERE `characters`.`ID` = `characters_stats`.`ID` AND `Stat` = 54) as level, (SELECT `Value` FROM `characters_stats` WHERE `characters`.`ID` = `characters_stats`.`ID` AND `Stat` = 4) as breed, (SELECT `Value` FROM `characters_stats` WHERE `characters`.`ID` = `characters_stats`.`ID` AND `Stat` = 59) as gender, (SELECT `Value` FROM `characters_stats` WHERE `characters`.`ID` = `characters_stats`.`ID` AND `Stat` = 60) as profession FROM `characters` WHERE `characters`.Username = '******'";
            DataTable dt = ms.ReadDT(SqlQuery);

            foreach (DataRow row in dt.Rows)
            {
                CharacterEntry charentry = new CharacterEntry();
                charentry.ID = (Int32)row["ID"];
                charentry.Name = ((string)row["Name"]).PadRight(11, '\u0000');
                charentry.playfield = (Int32)row["playfield"];
                charentry.Level = (Int32)row["level"];
                charentry.Breed = (Int32)row["breed"];
                charentry.Gender = (Int32)row["gender"];
                charentry.Profession = (Int32)row["profession"];
                characters.Add(charentry);
            }
            return characters;
        }
Пример #4
0
 /// <summary>
 /// Read uploaded nanos from database
 /// TODO: catch exceptions
 /// </summary>
 public void readUploadedNanosfromSQL()
 {
     lock (UploadedNanos)
     {
         UploadedNanos.Clear();
         SqlWrapper Sql = new SqlWrapper();
         DataTable dt = Sql.ReadDT("SELECT nano FROM " + getSQLTablefromDynelType() + "uploadednanos WHERE ID=" + ID.ToString());
         if (dt.Rows.Count > 0)
         {
             foreach (DataRow row in dt.Rows)
             {
                 AOUploadedNanos au = new AOUploadedNanos();
                 au.Nano = (Int32)row["Nano"];
                 UploadedNanos.Add(au);
             }
         }
     }
 }
Пример #5
0
        /// <summary>
        /// Read nanos from database
        /// TODO: catch exceptions
        /// </summary>
        public void readNanosfromSQL()
        {
            lock (ActiveNanos)
            {
                SqlWrapper ms = new SqlWrapper();
                {
                    AONanos m_an;

                    DataTable dt = ms.ReadDT("SELECT * FROM " + getSQLTablefromDynelType() + "activenanos WHERE ID=" + ID.ToString());
                    if (dt.Rows.Count > 0)
                    {
                        foreach (DataRow row in dt.Rows)
                        {
                            m_an = new AONanos();
                            m_an.ID = (Int32)row["nanoID"];
                            m_an.NanoStrain = (Int32)row["strain"];
                            ActiveNanos.Add(m_an);
                        }
                    }
                }
            }
        }
Пример #6
0
        /// <summary>
        /// Read timers from database
        /// TODO: catch exceptions
        /// </summary>
        public void readTimersfromSQL()
        {
            lock (Timers)
            {
                SqlWrapper ms = new SqlWrapper();
                TimeSpan ts;
                DateTime n = DateTime.Now;
                AOTimers m_timer;
                byte[] blob = new byte[10240];
                Timers.Clear();

                ms.SqlRead("SELECT * FROM " + getSQLTablefromDynelType() + "timers WHERE ID=" + ID.ToString() + ";");
                DataTable dt = ms.ReadDT("SELECT * FROM " + getSQLTablefromDynelType() + "timers WHERE ID=" + ID.ToString() + ";");
                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow row in dt.Rows)
                    {
                        ts = TimeSpan.FromSeconds((Int32)row["timespan"]);
                        m_timer = new AOTimers();
                        m_timer.Timestamp = DateTime.Now + ts;
                        m_timer.Strain = (Int32)row["strain"];
                        m_timer.Function = new AOFunctions();
                        blob = (byte[])row[3];
                        m_timer.Function.ReadFunctionfromBlob(ref blob, 0);
                    }
                }
            }
        }
 public void fillInventory()
 {
     InventoryEntries ie;
     List<ShopInv> shopinvs = new List<ShopInv>();
     ShopInv temp;
     int place = 0;
     int iminql = 0;
     int imaxql = 0;
     Random r = new Random();
     string like = "";
     SqlWrapper Sql = new SqlWrapper();
     DataTable dt = Sql.ReadDT("SELECT * from vendortemplate where HASH='" + HASH + "'");
     foreach (DataRow row in dt.Rows)
     {
         temp = new ShopInv();
         temp.HASH = (string)row["ShopInvHash"];
         temp.minQL = (Int32)row["minQL"];
         temp.maxQL = (Int32)row["maxQL"];
         shopinvs.Add(temp);
         if (like != "")
         {
             like += "OR ";
         }
         like += "HASH LIKE '%" + temp.HASH + "%' ";
     }
     if (like != "")
     {
         Inventory.Clear();
         dt = Sql.ReadDT("SELECT * from shopinventorytemplates where " + like);
         string thishash;
         foreach (DataRow row in dt.Rows)
         {
             thishash = (string)row["Hash"];
             foreach (ShopInv si in shopinvs)
             {
                 if (si.HASH == thishash)
                 {
                     iminql = (Int32)row["minql"];
                     imaxql = (Int32)row["maxql"];
                     // Dont add Items that are not between si.minQL and si.maxQL
                     if ((iminql <= si.maxQL) && (imaxql >= si.minQL))
                     {
                         ie = new InventoryEntries();
                         ie.Container = 104;
                         ie.Placement = place++;
                         ie.Item.lowID = (Int32)row["lowid"];
                         ie.Item.highID = (Int32)row["highid"];
                         ie.Item.multiplecount = (Int32)row["multiplecount"];
                         ie.Item.Nothing = 0;
                         ie.Item.Quality = Math.Min(Math.Max(Convert.ToInt32(r.Next(si.minQL, si.maxQL)), iminql), imaxql);
                         Inventory.Add(ie);
                     }
                 }
             }
         }
     }
 }
Пример #8
0
 /// <summary>
 /// Read inventory from database
 /// TODO: catch exceptions
 /// </summary>
 public void readInventoryfromSQL()
 {
     lock (Inventory)
     {
         SqlWrapper ms = new SqlWrapper();
         {
             InventoryEntries m_inv;
             Inventory.Clear();
             DataTable dt = ms.ReadDT("SELECT * FROM " + getSQLTablefromDynelType() + "inventory WHERE ID=" + ID.ToString() + " AND container=104 ORDER BY placement ASC;");
             if (dt.Rows.Count > 0)
             {
                 foreach (DataRow row in dt.Rows)
                 {
                     m_inv = new InventoryEntries();
                     m_inv.Container = (Int32)row["container"];
                     m_inv.Placement = (Int32)row["placement"];
                     m_inv.Item.highID = (Int32)row["highid"];
                     m_inv.Item.lowID = (Int32)row["lowid"];
                     m_inv.Item.Quality = (Int32)row["quality"];
                     m_inv.Item.multiplecount = (Int32)row["multiplecount"];
                     m_inv.Item.Type = (Int32)row["type"];
                     m_inv.Item.Instance = (Int32)row["instance"];
                     m_inv.Item.flags = (Int32)row["flags"];
                     Inventory.Add(m_inv);
                 }
             }
         }
     }
 }
Пример #9
0
 /// <summary>
 /// Read social tab from database
 /// TODO: catch exceptions
 /// </summary>
 public void ReadSocialTab()
 {
     lock (SocialTab)
     {
         SqlWrapper ms = new SqlWrapper();
         DataTable dt = ms.ReadDT("SELECT * FROM socialtab WHERE charid=" + ID);
         if (dt.Rows.Count > 0)
         {
             SocialTab.Clear();
             SocialTab.Add(0, (Int32)dt.Rows[0][1]);
             SocialTab.Add(1, (Int32)dt.Rows[0][2]);
             SocialTab.Add(2, (Int32)dt.Rows[0][3]);
             SocialTab.Add(3, (Int32)dt.Rows[0][4]);
             SocialTab.Add(4, (Int32)dt.Rows[0][5]);
             SocialTab.Add(38, (Int32)dt.Rows[0][6]);
             SocialTab.Add(1004, (Int32)dt.Rows[0][7]);
             SocialTab.Add(1005, (Int32)dt.Rows[0][8]);
             SocialTab.Add(64, (Int32)dt.Rows[0][9]);
             SocialTab.Add(32, (Int32)dt.Rows[0][10]);
             SocialTab.Add(1006, (Int32)dt.Rows[0][11]);
             SocialTab.Add(1007, (Int32)dt.Rows[0][12]);
         }
         else
         {
             // Nothing loaded, lets go with zeros
             SocialTab.Add(0, 0);
             SocialTab.Add(1, 0);
             SocialTab.Add(2, 0);
             SocialTab.Add(3, 0);
             SocialTab.Add(4, 0);
             SocialTab.Add(38, 0);
             SocialTab.Add(1004, 0);
             SocialTab.Add(1005, 0);
             SocialTab.Add(64, 0);
             SocialTab.Add(32, 0);
             SocialTab.Add(1006, 0);
             SocialTab.Add(1007, 0);
         }
     }
 }
Пример #10
0
            public Item(int ID)
            {
                ItemAttributes = new List<AOItemAttribute>();
                ItemEvents = new List<AOEvents>();
                SqlWrapper ms = new SqlWrapper();

                DataTable dt = ms.ReadDT("SELECT * FROM items WHERE AOID='" + ID.ToString() + "'");

                if (dt.Rows.Count > 0)
                {
                    AOID = (Int32)dt.Rows[0]["AOID"];
                    isnano = (Int32)dt.Rows[0]["IsNano"];
                    QL = (Int32)dt.Rows[0]["QL"];
                    itemtype = (Int32)dt.Rows[0]["ItemType"];
                    byte[] blob = (byte[])dt.Rows[0]["EFR"];

                    int blobc = 0;

                    // Read Attack Stat/Values
                    int cc = BitConverter.ToInt32(blob, blobc);
                    AOItemAttribute mm_a;
                    blobc += 4;
                    while (cc > 0)
                    {
                        mm_a = new AOItemAttribute();
                        mm_a.Stat = BitConverter.ToInt32(blob, blobc);
                        blobc += 4;
                        mm_a.Value = BitConverter.ToInt32(blob, blobc);
                        blobc += 4;
                        attack.Add(mm_a);
                        cc--;
                    }

                    // Read Defend Stat/Values
                    cc = BitConverter.ToInt32(blob, blobc);
                    blobc += 4;
                    while (cc > 0)
                    {
                        mm_a = new AOItemAttribute();
                        mm_a.Stat = BitConverter.ToInt32(blob, blobc);
                        blobc += 4;
                        mm_a.Value = BitConverter.ToInt32(blob, blobc);
                        blobc += 4;
                        defend.Add(mm_a);
                        cc--;
                    }

                    // Read Item Attributes
                    int c = BitConverter.ToInt32(blob, blobc);
                    blobc += 4;

                    AOItemAttribute tempa;
                    while (c > 0)
                    {
                        tempa = new AOItemAttribute();
                        tempa.Stat = BitConverter.ToInt32(blob, blobc);
                        blobc += 4;
                        tempa.Value = BitConverter.ToInt32(blob, blobc);
                        blobc += 4;
                        ItemAttributes.Add(tempa);
                        c--;
                    }

                    // Read Item Events
                    AOEvents tempe;
                    c = BitConverter.ToInt32(blob, blobc);
                    blobc += 4;
                    while (c > 0)
                    {
                        tempe = new AOEvents();
                        blobc = tempe.readEventfromBlob(ref blob, blobc);
                        ItemEvents.Add(tempe);
                        c--;
                    }

                    /*                    // Read Item Actions
                                        AOActions tempac;
                                        c = BitConverter.ToInt32(blob, blobc);
                                        blobc += 4;
                                        while (c > 0)
                                        {
                                            tempac = new AOActions();
                                            blobc = tempac.readActionfromBlob(ref blob, blobc);
                                            c--;
                                        }
                     */
                }
                else
                {
                    // Setting QL to -1 as "invalid item" flag
                    QL = -1;
                }
            }
Пример #11
0
        public void LoadTemplate(string hash, uint level)
        {
            SqlWrapper ms = new SqlWrapper();
            DataTable dt = ms.ReadDT("SELECT * FROM mobtemplate where hash='" + hash + "'");
            if (dt.Rows.Count>0)
            {
                startup = true;
                level = (UInt32)Math.Min(Math.Max(level,(Int32)dt.Rows[0]["MinLvl"]),(Int32)dt.Rows[0]["MaxLvl"]);
                Stats.Level.Set(level);
                Stats.Side.Set((Int32)dt.Rows[0]["Side"]);
                Stats.Breed.Set((Int32)dt.Rows[0]["Breed"]);
                Stats.Fatness.Set((Int32)dt.Rows[0]["Fatness"]);
                Stats.Sex.Set((Int32)dt.Rows[0]["Sex"]);
                Stats.Race.Set((Int32)dt.Rows[0]["Race"]);
                Name = (string)dt.Rows[0]["Name"];
                Stats.Flags.Set((Int32)dt.Rows[0]["Flags"]);
                Stats.NPCFamily.Set((Int32)dt.Rows[0]["NPCFamily"]);
                Stats.Health.Set((Int32)dt.Rows[0]["Health"]);
                Stats.Life.Set((Int32)dt.Rows[0]["Health"]);
                Stats.MonsterData.Set((Int32)dt.Rows[0]["Monsterdata"]);
                Stats.MonsterScale.Set((Int32)dt.Rows[0]["MonsterScale"]);

                AOTextures m_t = new AOTextures(0, (Int32)dt.Rows[0]["TextureHands"]);
                Textures.Add(m_t);

                m_t = new AOTextures(1, (Int32)dt.Rows[0]["TextureBody"]);
                Textures.Add(m_t);

                m_t = new AOTextures(2, (Int32)dt.Rows[0]["TextureFeet"]);
                Textures.Add(m_t);

                m_t = new AOTextures(3, (Int32)dt.Rows[0]["TextureArms"]);
                Textures.Add(m_t);

                m_t = new AOTextures(4, (Int32)dt.Rows[0]["TextureLegs"]);
                Textures.Add(m_t);
                startup = false;
            }
        }
Пример #12
0
        // New one with id AND playfield as filter
        public new void readTexturesfromSQL()
        {
            SqlWrapper ms = new SqlWrapper();
            AOTextures m_tex;
            Textures.Clear();

            DataTable dt = ms.ReadDT("SELECT textures0, textures1, textures2, textures3, textures4 from " + getSQLTablefromDynelType() + " WHERE ID=" + ID.ToString() + " AND playfield=" + PlayField.ToString());
            if (dt.Rows.Count > 0)
            {
                m_tex = new AOTextures(0, (Int32)dt.Rows[0]["textures0"]);
                Textures.Add(m_tex);

                m_tex = new AOTextures(1, (Int32)dt.Rows[0]["textures1"]);
                Textures.Add(m_tex);

                m_tex = new AOTextures(2, (Int32)dt.Rows[0]["textures2"]);
                Textures.Add(m_tex);

                m_tex = new AOTextures(3, (Int32)dt.Rows[0]["textures3"]);
                Textures.Add(m_tex);

                m_tex = new AOTextures(4, (Int32)dt.Rows[0]["textures4"]);
                Textures.Add(m_tex);
            }
        }
Пример #13
0
        public void readMeshsfromSQL()
        {
            SqlWrapper Sql = new SqlWrapper();
            Meshs.Clear();
            AOMeshs m_m;
            DataTable dt = Sql.ReadDT("SELECT * from " + getSQLTablefromDynelType() + "meshs WHERE ID=" + ID.ToString() + " AND playfield=" + PlayField.ToString());

            foreach (DataRow row in dt.Rows)
            {
                m_m = new AOMeshs();
                m_m.Position = (Int32)row["meshvalue1"];
                m_m.Mesh = (Int32)row["meshvalue2"];
                m_m.OverrideTexture = (Int32)row["meshvalue3"];
            }
        }
Пример #14
0
        public void readWeaponpairsfromSQL()
        {
            AOWeaponpairs m_wp;
            SqlWrapper Sql = new SqlWrapper();
            Weaponpairs.Clear();
            DataTable dt = Sql.ReadDT("SELECT * FROM " + getSQLTablefromDynelType() + "weaponpairs WHERE ID=" + ID.ToString() + " AND playfield=" + PlayField.ToString());

            foreach (DataRow row in dt.Rows)
            {
                m_wp = new AOWeaponpairs();
                m_wp.value1 = (Int32)row["value1"];
                m_wp.value2 = (Int32)row["value2"];
                m_wp.value3 = (Int32)row["value3"];
                m_wp.value4 = (Int32)row["value4"];
                Weaponpairs.Add(m_wp);
            }
        }
Пример #15
0
 /// <summary>
 /// Read bank account from database
 /// TODO: catch exceptions
 /// </summary>
 public void readBankContentsfromSQL()
 {
     lock (Bank)
     {
         SqlWrapper ms = new SqlWrapper();
         Bank.Clear();
         DataTable dt = ms.ReadDT("SELECT * FROM bank WHERE charID=" + ID.ToString() + " ORDER BY InventoryID ASC");
         if (dt.Rows.Count > 0)
         {
             foreach (DataRow row in dt.Rows)
             {
                 AOItem item = new AOItem();
                 item.flags = (Int32)row["InventoryID"];
                 item.lowID = (Int32)row["lowID"];
                 item.highID = (Int32)row["highID"];
                 item.multiplecount = (Int32)row["Amount"];
                 item.Quality = (Int32)row["QL"];
                 item.Type = (Int32)row["Type"];
                 item.Instance = (Int32)row["instance"];
                 byte[] statsblob = (byte[])row[8];
                 int counter = 0;
                 long bloblen = statsblob.Length;
                 while (counter < bloblen - 1)
                 {
                     AOItemAttribute tempItemAttribute = new AOItemAttribute();
                     tempItemAttribute.Stat = BitConverter.ToInt32(statsblob, counter);
                     tempItemAttribute.Value = BitConverter.ToInt32(statsblob, counter + 4);
                     counter += 8;
                     item.Stats.Add(tempItemAttribute);
                 }
                 Bank.Add(item);
             }
         }
     }
 }
Пример #16
0
        /// <summary>
        /// Read special stats (GM, Account, Expansions etc)
        /// TODO: catch exceptions
        /// </summary>
        public void ReadSpecialStatsfromSQL()
        {
            lock (this)
            {
                SqlWrapper sql = new SqlWrapper();
                DataTable dt = sql.ReadDT("SELECT `ID`, `Expansions`, `AccountFlags`, `GM` FROM `login` WHERE `Username` = (SELECT `Username` FROM `characters` WHERE `ID` = " + ID + ");");
                if (dt.Rows.Count > 0)
                {
                    // Stat 607 is PlayerID
                    Stats.SetBaseValue(607, (UInt32)(Int32)dt.Rows[0][0]);

                    // Stat 389 is Expansion
                    Stats.SetBaseValue(389, UInt32.Parse((string)dt.Rows[0][1]));

                    // Stat 660 is AccountFlags
                    Stats.SetBaseValue(660, (UInt32)(Int32)dt.Rows[0][2]);

                    // Stat 215 is GmLevel
                    Stats.SetBaseValue(215, (UInt32)(Int32)dt.Rows[0][3]);
                }
            }
        }
Пример #17
0
            public void Execute(Client cli, Statel parent, int Eventnumber)
            {
                switch (FunctionNumber)
                {
                    // Hit
                    case 53002:
                        {
                            int statnum = Int32.Parse(Arguments.ElementAt(0));
                            int min = Int32.Parse(Arguments.ElementAt(1));
                            int max = Int32.Parse(Arguments.ElementAt(2));
                            if (min > max)
                            {
                                min = max;
                                max = Int32.Parse(Arguments.ElementAt(1));
                            }
                            Random rnd = new Random();
                            cli.Character.Stats.Set(statnum, (uint)(cli.Character.Stats.Get(statnum) + rnd.Next(min, max)));
                            break;
                        }
                    // Lineteleport
                    //
                    case 53059:
                        {
#if DEBUG
                            Console.WriteLine("Function 53059 (LineTeleport)");
                            Console.WriteLine("Object: " + parent.Type + ":" + parent.Instance);
#endif
                            uint arg2 = UInt32.Parse(Arguments.ElementAt(1)); // Linesegment and playfield (lower word)
                            arg2 = arg2 >> 16;
                            int to_pf = Int32.Parse(Arguments.ElementAt(2));
                            coordheading a = FindEntry(to_pf, (Int32)arg2);
                            if (a.Coordinates.x != -1)
                            {
                                cli.Teleport(a.Coordinates, a.Heading, to_pf);
                                break;
                            }
                            break;
                        }
                    case 53082: // Teleport Proxy
                        {
                            Identity pfinstance = new Identity();
                            pfinstance.Type = Int32.Parse(Arguments.ElementAt(0));
                            pfinstance.Instance = Int32.Parse(Arguments.ElementAt(1));
                            Identity id2 = new Identity();
                            id2.Type = Int32.Parse(Arguments.ElementAt(2));
                            id2.Instance = Int32.Parse(Arguments.ElementAt(3));
                            Identity id3 = new Identity();
                            id3.Type = Int32.Parse(Arguments.ElementAt(4));
                            id3.Instance = Int32.Parse(Arguments.ElementAt(5));

                            SqlWrapper ms = new SqlWrapper();
                            DataTable dt = ms.ReadDT("SELECT * from proxydestinations WHERE playfield=" + pfinstance.Instance);
                            if (dt.Rows.Count == 0)
                            {
#if DEBUG
                                cli.SendChatText("No Destination found for playfield " + pfinstance.Instance);
                                cli.SendChatText("Statel " + parent.Type.ToString() + ":" + parent.Instance.ToString() + " handling " + Eventnumber.ToString() + " Function " + FunctionNumber.ToString() + " " + cli.Character.Coordinates.ToString());
                                foreach (string arg in Arguments)
                                {
                                    cli.SendChatText("Argument: " + arg);
                                }
#endif
                            }
                            else
                            {
                                AOCoord a = new AOCoord();
                                a.x= (Single)dt.Rows[0][1];
                                a.y= (Single)dt.Rows[0][2];
                                a.z = (Single)dt.Rows[0][3];
                                Quaternion q = new Quaternion(0, 0, 0, 0);
                                q.x = (Single)dt.Rows[0][4];
                                q.y = (Single)dt.Rows[0][5];
                                q.z = (Single)dt.Rows[0][6];
                                q.w = (Single)dt.Rows[0][7];
                                cli.TeleportProxy(a, q, pfinstance.Instance, pfinstance, 1, (Int32)parent.Instance, id2, id3);
                            }
                            break;
                        }
                    case 53092: // Bank
                        {
                            Packets.BankOpen.Send(cli);
                            break;
                        }

                    case 53083: // Teleport Proxy 2
                        {

                            Identity pfinstance = new Identity();
                            pfinstance.Type = Int32.Parse(Arguments.ElementAt(0));
                            pfinstance.Instance = Int32.Parse(Arguments.ElementAt(1));
                            int gs = 1;
                            int sg = 0;
                            Identity R = new Identity();
                            R.Type = Int32.Parse(Arguments.ElementAt(2));
                            R.Instance = Int32.Parse(Arguments.ElementAt(3));
                            Identity dest = new Identity();
                            dest.Type = Int32.Parse(Arguments.ElementAt(4));
                            dest.Instance = Int32.Parse(Arguments.ElementAt(5));
                            int to_pf = (Int32)((UInt32)(dest.Instance & 0xffff));
                            int arg2 = (Int32)((UInt32)(dest.Instance >> 16));
                            coordheading a = FindEntry(to_pf, arg2);

                            if (a.Coordinates.x != -1)
                            {
                                cli.TeleportProxy(a.Coordinates, a.Heading, to_pf, pfinstance, gs, sg, R, dest);
                                break;
                            }
                            break;
                        }
                        // Teleport
                    case 53016:
                        {
                            Quaternion q = new Quaternion(0, 1, 0, 0);
                            AOCoord a = new AOCoord();
                            a.x = Int32.Parse(Arguments.ElementAt(0));
                            a.y = Int32.Parse(Arguments.ElementAt(1));
                            a.z = Int32.Parse(Arguments.ElementAt(2));
                            cli.Teleport(a, q, Int32.Parse(Arguments.ElementAt(3)));
                            break;
                        }

                    case 53044:
                        {
                            string text = Arguments.ElementAt(0);
                            Packets.SystemText.Send(cli, text, 0);
                            break;
                        }
                    default:
                        {
#if DEBUG
                            cli.SendChatText("Statel " + parent.Type.ToString() + ":" + parent.Instance.ToString() + " handling " + Eventnumber.ToString() + " Function " + FunctionNumber.ToString() + " " + cli.Character.Coordinates.ToString());
                            foreach (string arg in Arguments)
                            {
                                cli.SendChatText("Argument: " + arg);
                            }
#endif
                            break;
                        }

                }
            }
Пример #18
0
        /// <summary>
        /// Read org and character names from DB
        /// </summary>
        public bool ReadNames()
        {
            lock (this)
            {
                SqlWrapper Sql = new SqlWrapper();
                DataTable dt = Sql.ReadDT("SELECT `Name`, `FirstName`, `LastName` FROM " + getSQLTablefromDynelType() + " WHERE ID = '" + ID + "' LIMIT 1");
                if (dt.Rows.Count == 1)
                {
                    Name = (string)dt.Rows[0][0];
                    FirstName = (string)dt.Rows[0][1];
                    LastName = (string)dt.Rows[0][2];
                }

                // Read stat# 5 (Clan) - OrgID from character stats table
                dt = Sql.ReadDT("SELECT `Value` FROM " + getSQLTablefromDynelType() + "_stats WHERE ID = " + ID + " AND Stat = 5 LIMIT 1");
                if (dt.Rows.Count == 1)
                {
                    _orgId = (Int32)dt.Rows[0][0];
                }
                if (_orgId == 0)
                {
                    orgName = string.Empty;
                }
                else
                {
                    List<GuildEntry> m_Guild = GuildInfo.GetGuildInfo(_orgId);

                    foreach (GuildEntry ge in m_Guild)
                    {
                        orgName = ge.Name.ToString();
                    }
                }
                return true;
            }
        }
Пример #19
0
        public static int CacheAllStatels()
        {
            SqlWrapper ms = new SqlWrapper();
            int count = 0;
            DataTable dt = ms.ReadDT("SELECT * FROM statels ORDER BY id ASC");
            dt_args = ms.ReadDT("SELECT * FROM statel_function_arguments ORDER BY statel_id, event_id, function_id, attrid ASC");
            dt_events = ms.ReadDT("SELECT * FROM statel_events ORDER BY statel_id, eventid ASC");
            dt_reqs = ms.ReadDT("SELECT * FROM statel_function_reqs ORDER BY statel_id, event_id, function_id, reqid ASC");
            dt_functions = ms.ReadDT("SELECT * FROM statel_functions ORDER BY statel_id, event_id, functionid ASC");
            int maxcount = 0;
            ms.sqlclose();

            List<Statel> temp;
            maxcount = dt.Rows.Count;
            foreach (DataRow dr in dt.Rows)
            {
                int pf = (Int32)dr[0];
                if (Statelppf.ContainsKey(pf) == false)
                {
                    temp = new List<Statel>();
                    Statelppf.Add(pf, temp);
                    temp = new List<Statel>();
                    StatelppfonEnter.Add(pf, temp);
                    temp = new List<Statel>();
                    StatelppfonUse.Add(pf, temp);
                }
                Statel tempstatel = new Statel();
                tempstatel.Coordinates.x = (Single)dr[5];
                tempstatel.Coordinates.y = (Single)dr[6];
                tempstatel.Coordinates.z = (Single)dr[7];
                tempstatel.Type = (Int32)dr[1];
                tempstatel.Instance = (UInt32)dr[2];
                tempstatel.PlayField = (Int32)dr[0];
                tempstatel.Template = (Int32)dr[3];

                tempstatel.LoadEvents((Int32)dr[4]);
                Statelppf[pf].Add(tempstatel);

                foreach (Statel_Event e in tempstatel.Events)
                {
                    if ((e.EventNumber == ItemHandler.eventtype_onenter) || (e.EventNumber == ItemHandler.eventtype_ontargetinvicinity))
                    {
                        StatelppfonEnter[pf].Add(tempstatel);
                    }
                    if (e.EventNumber == ItemHandler.eventtype_onuse)
                    {
                        StatelppfonUse[pf].Add(tempstatel);
                    }
                }
                count++;
                if ((count % 10) == 0)
                {
                    Console.Write("\rReading statels: " + count.ToString() + "/" + maxcount.ToString() + "                        \r");
                }
            }
            
            ms.sqlclose();
            Console.Write("                                               \r");
            dt_args.Clear();
            dt_events.Clear();
            dt_functions.Clear();
            dt_reqs.Clear();
            dt_args = null;
            dt_events = null;
            dt_functions = null;
            dt_reqs = null;
            dt.Clear();
            return count;
        }
        public Tradeskill(Client cli, int src_loc, int tgt_loc)
        {
            Cli = cli;
            SourcePlacement = src_loc;
            TargetPlacement = tgt_loc;
            Source = cli.Character.getInventoryAt(src_loc).Item;
            Target = cli.Character.getInventoryAt(tgt_loc).Item;

            SourceID = Source.highID;
            TargetID = Target.highID;

            isTradeskill = false;

            SqlWrapper wrapper = new SqlWrapper();
            DataTable dt = wrapper.ReadDT("SELECT * FROM tradeskill WHERE ID1 = " + Source.highID + " AND ID2 = " + Target.highID + ";");
            DataRowCollection drc = dt.Rows;

            if (drc.Count > 0)
            {
                isTradeskill = true;
                SourceName = (string)drc[0][3];
                TargetName = (string)drc[0][4];
                ResultName = (string)drc[0][5];
                ResultLID = (int)drc[0][6];
                ResultHID = (int)drc[0][7];
                RangePercent = (int)drc[0][8];
                DeleteFlag = (int)drc[0][9];
                FirstSkill = (int)drc[0][10];
                FirstSkillPercent = (int)drc[0][11];
                FirstSkillPerBump = (int)drc[0][12];
                SecondSkill = (int)drc[0][13];
                SecondSkillPercent = (int)drc[0][14];
                SecondSkillPerBump = (int)drc[0][15];
                MaxBump = (int)drc[0][16];
                MinXP = (int)drc[0][17];
                MaxXP = (int)drc[0][18];

                bDeleteSource = ((DeleteFlag & 1) == 1);
                bDeleteTarget = (((DeleteFlag >> 1) & 1) == 1);

                MinQL = Target.Quality;
                SetMaxQL();

                if (FirstSkill != 0)
                {
                    FirstSkillRequirement = (int)Math.Ceiling((decimal)FirstSkillPercent / 100M * (decimal)Target.Quality);
                    FirstSkillValue = Cli.Character.Stats.GetStatbyNumber(FirstSkill).Value;
                    FirstSkillName = StatsList.GetStatName(FirstSkill);
                }

                if (SecondSkill != 0)
                {
                    SecondSkillRequirement = (int)Math.Ceiling((decimal)SecondSkillPercent / 100M * (decimal)Target.Quality);
                    SecondSkillValue = Cli.Character.Stats.GetStatbyNumber(SecondSkill).Value;
                    SecondSkillName = StatsList.GetStatName(SecondSkill);
                }
            }
        }
 public bool LoadTemplate(string hash)
 {
     SqlWrapper Sql = new SqlWrapper();
     DataTable dt = Sql.ReadDT("SELECT * from vendortemplate WHERE HASH='" + hash + "'");
     if (dt.Rows.Count > 0)
     {
         TemplateID = (Int32)dt.Rows[0]["itemtemplate"];
         Name = (string)dt.Rows[0]["Name"];
         ItemHandler.Item it = new ItemHandler.Item(TemplateID);
         foreach (AOItemAttribute ia in it.ItemAttributes)
         {
             this.Stats.Set(ia.Stat, (uint)ia.Value);
         }
         Sql.sqlclose();
         fillInventory();
         return true;
     }
     return false;
 }