public void CopyTo(WorldPosition position) { position.X = X; position.Y = Y; position.Z = Z; position.Heading = Heading; }
public static short GetHeading(WorldPosition fromWorldPosition, Point3D toPoint3D) { return (short) (Math.Atan2(toPoint3D.Y - fromWorldPosition.Y, toPoint3D.X - fromWorldPosition.X) * 32768 / Math.PI); }
public Area GetAreaByCoords(WorldPosition coords) { if (!Data.Data.Areas.ContainsKey(coords.MapId)) return null; return (from area in Data.Data.Areas[coords.MapId] from section in area.Sections where section.Polygon.Contains(coords.ToPoint3D()) select area).FirstOrDefault(); }
public static short GetHeading(WorldPosition fromWorldPosition, WorldPosition toWorldPosition) { return (short) (Math.Atan2(toWorldPosition.Y - fromWorldPosition.Y, toWorldPosition.X - fromWorldPosition.X)*32768/ Math.PI); }
public double FastDistanceTo(WorldPosition p2) { double a = p2.X - X; double b = p2.Y - Y; return Math.Sqrt(a*a + b*b); }
public Point3D Add(WorldPosition worldPosition) { X += worldPosition.X; Y += worldPosition.Y; Z += worldPosition.Z; return this; }
public static double DistanceToLine(WorldPosition point, WorldPosition p0, WorldPosition p1) { double dx = p1.X - p0.X; double dy = p1.Y - p0.Y; return Math.Abs(((p0.Y - p1.Y)*point.X + (p1.X - p0.X)*point.Y + (p0.X*p1.Y - p1.X*p0.Y))/ (Math.Sqrt(dx*dx + dy*dy))); }
public void Release() { StartPosition = null; TargetPosition = null; if (Targets != null) Targets.Clear(); Targets = null; }
public SpDropInfo(int itemId, WorldPosition worldPosition) { Item = new Item { Position = worldPosition, Count = 1, ItemId = itemId, //20000000 }; }
public static WorldPosition ForwardPosition(WorldPosition position, int distance) { var result = position.Clone(); double angle = position.Heading * Math.PI / 32768; result.X += (float) Math.Cos(angle)*distance; result.Y += (float) Math.Sin(angle)*distance; return result; }
public static double GetAngle(WorldPosition center, WorldPosition point1, WorldPosition point2) { double x1 = point1.X - center.X; double x2 = point2.X - center.X; double y1 = point1.Y - center.Y; double y2 = point2.Y - center.Y; return Math.Acos((x1*x2 + y1*y2)/Math.Sqrt((x1*x1 + y1*y1)*(x2*x2 + y2*y2))); }
public double DistanceTo(WorldPosition p2) { if (p2 == null) return double.MaxValue; double a = p2.X - X; double b = p2.Y - Y; double c = p2.Z - Z; return Math.Sqrt(a*a + b*b + c*c); }
public void ForceTeleport(Player player, WorldPosition position) { Communication.Global.MapService.PlayerLeaveWorld(player); player.Position.MapId = position.MapId; player.Position.X = position.X; player.Position.Y = position.Y; player.Position.Z = position.Z; player.Position.Heading = position.Heading; new SpCharacterBind(player).Send(player.Connection); }
public void FixZ(WorldPosition position) { if ((int)position.X % 256 > 20 || (int)position.Y % 256 > 20) return; for (int i = 0; i < GeoData[position.MapId].Count; i++) { if (GeoData[position.MapId][i].CheckIntersect(position.X, position.Y)) { if (GeoData[position.MapId][i].OffsetZ.Equals(float.MinValue)) return; position.Z = GeoData[position.MapId][i].GetZ(position.X, position.Y) + 25; return; } } }
public Section GetSectionByCoords(WorldPosition coords) { Area area = GetAreaByCoords(coords); if (area == null) return null; Section s = null; foreach (Section section in area.Sections) { if (!section.Polygon.Contains(coords.ToPoint3D())) continue; foreach (var section1 in section.Sections) if (section1.Polygon.Contains(coords.ToPoint3D())) if (s == null || section1.Priority > s.Priority) s = section1; return s ?? section; } return null; }
public void ItemUse(Player player, int itemId, WorldPosition position) { StorageItem i = Global.StorageService.GetItemById(player.Inventory, itemId); if (i == null) return; if (!CanUseItem(player, i, null, true)) return; if (i.ItemTemplate.Id == 98) //Campfire { if (MapService.TryPutCampfire(player, position)) Global.StorageService.RemoveItemById(player, player.Inventory, itemId, 1); return; } ItemTemplate template = i.ItemTemplate; SkillStat skillStat = template.CatigorieStat as SkillStat; if (skillStat == null && template.CombatItemType != CombatItemType.RECIPE) return; switch (template.CombatItemType) { case CombatItemType.SKILLBOOK: Global.SkillsLearnService.UseSkillBook(player, template.Id); break; case CombatItemType.IMMEDIATE: case CombatItemType.DISPOSAL: { Global.SkillEngine.UseSkill( player.Connection, new UseSkillArgs { IsItemSkill = true, SkillId = skillStat.SkillId, StartPosition = position, }); new SpItemCooldown(itemId, template.Cooltime).Send(player); } break; case CombatItemType.NO_COMBAT: //new SpSystemNotice("Process use NO_COMBAT item").Send(player.Connection); break; case CombatItemType.RECIPE: Global.CraftService.AddRecipe(player, itemId); SystemMessages.YouLearnedToMakeRecipe("@item:" + itemId); //new SpSystemNotice("You learned new recipe").Send(player.Connection); break; } int groupId = ItemTemplate.Factory(itemId).CoolTimeGroup; if (groupId != 0) { if (player.ItemCoodowns.ContainsKey(groupId)) player.ItemCoodowns[groupId] = RandomUtilities.GetCurrentMilliseconds(); else player.ItemCoodowns.Add(groupId, RandomUtilities.GetCurrentMilliseconds()); } Global.StorageService.RemoveItemById(player, player.Inventory, itemId, 1); }
public void CopyTo(WorldPosition worldPosition) { worldPosition.X = X; worldPosition.Y = Y; worldPosition.Z = Z; }
public double DistanceTo(WorldPosition position) { double a = position.X - X; double b = position.Y - Y; double c = position.Z - Z; return Math.Sqrt(a*a + b*b + c*c); }
public static void DebugPoint(Creature creature, WorldPosition position) { DropItem(creature, 20000000, 0, position.Clone(), true); Player player = creature as Player; if (player != null) player.Visible.Update(); }
public static short GetHeading(Point3D fromPoint3D, WorldPosition toWorldPosition) { return (short)(Math.Atan2(toWorldPosition.Y - fromPoint3D.Y, toWorldPosition.X - fromPoint3D.X) * 32768 / Math.PI); }
public List<Creature> FindTargets(Creature creature, WorldPosition position, double distance, TargetingAreaType type) { return FindTargets(creature, position.X, position.Y, position.Z, distance, type); }
public void Release() { Position = null; }
public WorldPosition Clone() { WorldPosition clone = (WorldPosition)MemberwiseClone(); return(clone); }
public short GetHeadingToTarget(WorldPosition worldPosition) { return(Geom.GetHeading(((float)((worldPosition.X - X) / DistanceTo(worldPosition)) * 45), ((float)((worldPosition.Y - Y) / DistanceTo(worldPosition)) * 45))); }
public void MoveTo(WorldPosition position, int distance = 0) { position.CopyTo(TargetPosition); TargetDistance = distance; Move(); }
public short GetHeadingToTarget(WorldPosition worldPosition) { return Geom.GetHeading(((float) ((worldPosition.X - X)/DistanceTo(worldPosition))*45), ((float) ((worldPosition.Y - Y)/DistanceTo(worldPosition))*45)); }
public double DistanceTo2D(WorldPosition position) { double a = position.X - X; double b = position.Y - Y; return Math.Sqrt(a * a + b * b); }
public bool Equals(WorldPosition p) { if (ReferenceEquals(null, p)) return false; return p.X.Equals(X) && p.Y.Equals(Y) && p.Z.Equals(Z); }
public static void DropItem(Creature creature, int itemId, int workParam, WorldPosition position, bool isDebug = false) { if (!isDebug) position = Geom.GetNormal(position.Heading) .Multiple(35) .Add(position) .SetZ(position.Z + 25) .ToWorldPosition(); creature.Instance.AddDrop( new Item { Owner = creature as Player, Npc = creature as Npc, ItemId = itemId, Count = 1, Position = position, Instance = creature.Instance, WorkParam = workParam }); }
public static double DistanceToLine(WorldPosition point, WorldPosition p0, WorldPosition p1, double lineHeight) { return Math.Abs(((p0.Y - p1.Y)*point.X + (p1.X - p0.X)*point.Y + (p0.X*p1.Y - p1.X*p0.Y))/lineHeight); }
public override void Release() { if (ObserversList != null) ObserversList.Clear(); ObserversList = null; VisiblePlayers = null; VisibleNpcs = null; VisibleItems = null; VisibleGathers = null; if (Ai != null) Ai.Release(); Ai = null; if (_lifeStats != null) _lifeStats.Release(); _lifeStats = null; GameStats = null; Position = null; BindPoint = null; Instance = null; Target = null; if (VisualEffect != null) VisualEffect.Release(); VisualEffect = null; if (Effects != null) for (int i = 0; i < Effects.Count; i++) Effects[i].Release(); Effects = null; EffectsLock = null; base.Release(); }
public static short GetHeading(WorldPosition worldPosition) { return (short) (Math.Atan2(worldPosition.Y, worldPosition.X)*32768/Math.PI); }