void Movement(Entities.Monster mob) { if (!mob.Alive) return; try { if (mob.Target != null) { if (DateTime.Now >= mob.MoveTime) { try { if (Core.Screen.GetDistance(mob.X, mob.Y, mob.Target.X, mob.Target.Y) >= mob.ViewRange) { byte dir = (byte)ProjectX_V3_Lib.ThreadSafe.RandomGenerator.Generator.Next(0, 8); Maps.MapPoint movepoint = Packets.MovementPacket.CreateDirectionPoint(mob.X, mob.Y, dir); if (mob.Map.ValidMoveCoord<Entities.Monster>(movepoint.X, movepoint.Y)) { mob.X = movepoint.X; mob.Y = movepoint.Y; mob.Direction = dir; using (var movepacket = new Packets.MovementPacket()) { movepacket.EntityUID = mob.EntityUID; movepacket.TimeStamp = ProjectX_V3_Lib.Native.Winmm.timeGetTime(); movepacket.Direction = (uint)dir; movepacket.WalkMode = Enums.WalkMode.Run; mob.Screen.UpdateScreen(movepacket); } mob.MoveTime = DateTime.Now.AddMilliseconds(mob.MoveSpeed * 5); } return; } else { byte dir = (byte)Core.Screen.GetFacing(Core.Screen.GetAngle(mob.X, mob.Y, mob.Target.X, mob.Target.Y)); Maps.MapPoint movepoint = Packets.MovementPacket.CreateDirectionPoint(mob.X, mob.Y, dir); if (mob.Map.ValidMoveCoord<Entities.Monster>(movepoint.X, movepoint.Y)) { mob.X = movepoint.X; mob.Y = movepoint.Y; mob.Direction = dir; using (var movepacket = new Packets.MovementPacket()) { movepacket.EntityUID = mob.EntityUID; movepacket.TimeStamp = ProjectX_V3_Lib.Native.Winmm.timeGetTime(); movepacket.Direction = (uint)dir; movepacket.WalkMode = Enums.WalkMode.Run; mob.Screen.UpdateScreen(movepacket); } } int nextmove = ProjectX_V3_Lib.ThreadSafe.RandomGenerator.Generator.Next(mob.MoveSpeed, mob.MoveSpeed * 2); mob.MoveTime = DateTime.Now.AddMilliseconds(nextmove); } } catch { } // target was removed again / out of range :s there is a concurrency problem, just cba to look for it as it's nothing major } } } catch (Exception e) { Console.WriteLine(e.ToString()); } }
private void Creature_Move_Thread() { if (!Alive) { return; } try { if (Target != null) { if (DateTime.Now >= this.MoveTime) { if (Core.Screen.GetDistance(this.X, this.Y, this.Target.X, this.Target.Y) >= this.ViewRange) { byte dir = (byte)ProjectX_V3_Lib.ThreadSafe.RandomGenerator.Generator.Next(0, 8); Maps.MapPoint movepoint = Packets.MovementPacket.CreateDirectionPoint(this.X, this.Y, dir); if (this.Map.ValidMoveCoord <Entities.Monster>(movepoint.X, movepoint.Y)) { this.X = movepoint.X; this.Y = movepoint.Y; this.Direction = dir; using (var movepacket = new Packets.MovementPacket()) { movepacket.EntityUID = this.EntityUID; movepacket.TimeStamp = ProjectX_V3_Lib.Native.Winmm.timeGetTime(); movepacket.Direction = (uint)dir; movepacket.WalkMode = Enums.WalkMode.Run; this.Screen.UpdateScreen(movepacket); } this.MoveTime = DateTime.Now.AddMilliseconds(this.MoveSpeed * 5); } } else { byte dir = (byte)Core.Screen.GetFacing(Core.Screen.GetAngle(this.X, this.Y, this.Target.X, this.Target.Y)); Maps.MapPoint movepoint = Packets.MovementPacket.CreateDirectionPoint(this.X, this.Y, dir); if (this.Map.ValidMoveCoord <Entities.Monster>(movepoint.X, movepoint.Y)) { this.X = movepoint.X; this.Y = movepoint.Y; this.Direction = dir; using (var movepacket = new Packets.MovementPacket()) { movepacket.EntityUID = this.EntityUID; movepacket.TimeStamp = ProjectX_V3_Lib.Native.Winmm.timeGetTime(); movepacket.Direction = (uint)dir; movepacket.WalkMode = Enums.WalkMode.Run; this.Screen.UpdateScreen(movepacket); } } int nextmove = ProjectX_V3_Lib.ThreadSafe.RandomGenerator.Generator.Next(this.MoveSpeed, this.MoveSpeed * 2); this.MoveTime = DateTime.Now.AddMilliseconds(nextmove); } } } } catch { } }
void Movement(Entities.Monster mob) { if (!mob.Alive) { return; } try { if (mob.Target != null) { if (DateTime.Now >= mob.MoveTime) { try { if (Core.Screen.GetDistance(mob.X, mob.Y, mob.Target.X, mob.Target.Y) >= mob.ViewRange) { byte dir = (byte)ProjectX_V3_Lib.ThreadSafe.RandomGenerator.Generator.Next(0, 8); Maps.MapPoint movepoint = Packets.MovementPacket.CreateDirectionPoint(mob.X, mob.Y, dir); if (mob.Map.ValidMoveCoord <Entities.Monster>(movepoint.X, movepoint.Y)) { mob.X = movepoint.X; mob.Y = movepoint.Y; mob.Direction = dir; using (var movepacket = new Packets.MovementPacket()) { movepacket.EntityUID = mob.EntityUID; movepacket.TimeStamp = ProjectX_V3_Lib.Native.Winmm.timeGetTime(); movepacket.Direction = (uint)dir; movepacket.WalkMode = Enums.WalkMode.Run; mob.Screen.UpdateScreen(movepacket); } mob.MoveTime = DateTime.Now.AddMilliseconds(mob.MoveSpeed * 5); } return; } else { byte dir = (byte)Core.Screen.GetFacing(Core.Screen.GetAngle(mob.X, mob.Y, mob.Target.X, mob.Target.Y)); Maps.MapPoint movepoint = Packets.MovementPacket.CreateDirectionPoint(mob.X, mob.Y, dir); if (mob.Map.ValidMoveCoord <Entities.Monster>(movepoint.X, movepoint.Y)) { mob.X = movepoint.X; mob.Y = movepoint.Y; mob.Direction = dir; using (var movepacket = new Packets.MovementPacket()) { movepacket.EntityUID = mob.EntityUID; movepacket.TimeStamp = ProjectX_V3_Lib.Native.Winmm.timeGetTime(); movepacket.Direction = (uint)dir; movepacket.WalkMode = Enums.WalkMode.Run; mob.Screen.UpdateScreen(movepacket); } } int nextmove = ProjectX_V3_Lib.ThreadSafe.RandomGenerator.Generator.Next(mob.MoveSpeed, mob.MoveSpeed * 2); mob.MoveTime = DateTime.Now.AddMilliseconds(nextmove); } } catch { } // target was removed again / out of range :s there is a concurrency problem, just cba to look for it as it's nothing major } } } catch (Exception e) { Console.WriteLine(e.ToString()); } }