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); }
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; }
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); } }