Example #1
0
        public int Distance(fPoint p1, fPoint p2)
        {
            int distance = 0;
            int dx       = p1.x - p2.x;
            int dy       = p1.y - p2.y;

            distance = Convert.ToInt32(Math.Sqrt((dx * dx) + (dy * dy)));
            return(distance);
        }
Example #2
0
 public void pak_TeleportTo(CPlayer thisclient, fPoint dest)
 {
     OutPak.Clear();
     OutPak.SetShort(52, 0);
     OutPak.SetShort(0x0366, 4);
     OutPak.SetShort(thisclient.Session.ClientID, 6);
     OutPak.SetShort(thisclient.Position.pCurrent.x, 12);
     OutPak.SetShort(thisclient.Position.pCurrent.y, 14);
     OutPak.SetShort(2, 16);
     OutPak.SetShort(1, 20);
     OutPak.SetShort(dest.x, 24);
     OutPak.SetShort(dest.y, 26);
     thisclient.Client.encdec.Encrypt(OutPak, OutPak.dataBuffer, 52, thisclient.Client.Hash);
     thisclient.Client.SendPacket(OutPak, 52);
     SendToVisionPlayers(thisclient, OutPak, 52);
     thisclient.Position.pCurrent.x = dest.x;
     thisclient.Position.pCurrent.y = dest.y;
 }
Example #3
0
        public void pak_Teleport(byte[] pak, CPlayer thisclient)
        {
            int    price  = 0;
            Random random = new Random();
            fPoint dest   = new fPoint();

            dest.x = 0;
            dest.y = 0;
            XmlDocument doc = new XmlDocument();

            try
            {
                doc.Load("./Data/Teleports.xml");
            }
            catch (Exception ex)
            {
                Core.CLog(String.Format("Error: {0}", ex.Message));
            }
            XmlNode     root = doc.DocumentElement;
            XmlNodeList list = root.SelectNodes("/teleports/teleport");

            for (int i = 0; i < list.Count; i++)
            {
                int sx1 = int.Parse(list.Item(i).Attributes.Item(0).Value);
                int sx2 = int.Parse(list.Item(i).Attributes.Item(1).Value);
                int sy1 = int.Parse(list.Item(i).Attributes.Item(2).Value);
                int sy2 = int.Parse(list.Item(i).Attributes.Item(3).Value);

                if (thisclient.Position.pCurrent.x >= sx1 &&
                    thisclient.Position.pCurrent.x <= sx2 &&
                    thisclient.Position.pCurrent.y <= sy1 &&
                    thisclient.Position.pCurrent.y >= sy2)
                {
                    int dx1 = int.Parse(list.Item(i).Attributes.Item(4).Value);
                    int dx2 = int.Parse(list.Item(i).Attributes.Item(5).Value);
                    int dy1 = int.Parse(list.Item(i).Attributes.Item(6).Value);
                    int dy2 = int.Parse(list.Item(i).Attributes.Item(7).Value);
                    price  = int.Parse(list.Item(i).Attributes.Item(8).Value);
                    dest.x = random.Next(dx1, dx2);
                    dest.y = random.Next(dy1, dy2);
                }
            }

            if (dest.x > 0 && dest.y > 0)
            {
                if (thisclient.CharInfo.cGold < price)
                {
                    pak_SendServerMsg(String.Format("You dont have required {0} Gold to use this.", price), thisclient);
                }
                else
                {
                    thisclient.CharInfo.cGold = thisclient.CharInfo.cGold - price;
                    OutPak.Clear();
                    OutPak.SetShort(16, 0);
                    OutPak.SetShort(0x03af, 4);
                    OutPak.SetShort(thisclient.Session.ClientID, 6);
                    OutPak.SetLong(thisclient.CharInfo.cGold, 12);
                    thisclient.Client.encdec.Encrypt(OutPak, OutPak.dataBuffer, 16, thisclient.Client.Hash);
                    thisclient.Client.SendPacket(OutPak, 16);
                    pak_TeleportTo(thisclient, dest);
                }
            }
            else
            {
                pak_SendServerMsg("This Teleport is not in Database Report to Server Administrator.", thisclient);
            }
        }