Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 4.41 KB | None | 0 0
  1.         Public Sub MonsterMovement_Elapsed(ByVal sender As Object, ByVal e As ElapsedEventArgs)
  2.             Dim random As New Random
  3.  
  4.             Try
  5.                 MonsterMovement.Stop()
  6.  
  7.                 Dim time As Date = Date.Now
  8.                 For i = 0 To MobList.Count - 1
  9.                     If i < MobList.Count Then
  10.                         Dim obj As Object_ = GetObjectById(MobList(i).Pk2ID)
  11.                         Dim mob = MobList(i)
  12.  
  13.  
  14.                         If MobList(i).Death = False And MobList(i).Walking = False And obj.WalkSpeed > 0 Then
  15.                             Dim dist As Single = CalculateDistance(MobList(i).Position, MobList(i).Position_Spawn)
  16.                             Dim mob_ = MobList(i)
  17.  
  18.                             If dist < Settings.ServerRange Then
  19.                                 Dim ToX As Single = GetRealX(MobList(i).Position.XSector, MobList(i).Position.X) + random.Next(-15, +10)
  20.                                 Dim ToY As Single = GetRealY(MobList(i).Position.YSector, MobList(i).Position.Y) + random.Next(-10, +15)
  21.  
  22.                                 Dim ToPos As New Position
  23.                                 ToPos.XSector = GetXSec(ToX)
  24.                                 ToPos.YSector = GetYSec(ToY)
  25.                                 ToPos.X = GetXOffset(ToX)
  26.                                 ToPos.Z = MobList(i).Position.Z
  27.                                 ToPos.Y = GetYOffset(ToY)
  28.  
  29.                                 If ToPos.X = mob.Position.X And ToPos.Y = mob.Position.Y Then
  30.                                     ToPos.X += 1
  31.                                 End If
  32.  
  33.  
  34.                                 MoveMob(i, ToPos)
  35.                             Else
  36.                                 MoveMob(i, MobList(i).Position_Spawn)
  37.                             End If
  38.  
  39.  
  40.                         ElseIf MobList(i).Walking = True And obj.WalkSpeed > 0 Then
  41.                             Dim wert As Integer = Date.Compare(MobList(i).WalkEnd, Date.Now)
  42.                             If wert = -1 Then
  43.                                 'Abgelaufen
  44.                                 MobList(i).Walking = False
  45.                                 MobList(i).Position = MobList(i).Position_ToPos
  46.                             Else
  47.                                 Dim Past As Single = DateDiff(DateInterval.Second, Date.Now, MobList(i).WalkEnd)
  48.                                 Dim FullTime As Single = DateDiff(DateInterval.Second, MobList(i).WalkStart, MobList(i).WalkEnd)
  49.                                 Dim Verhältnis As Single = (Past / FullTime)
  50.  
  51.                                 Dim Walked As Single = (CalculateDistance(MobList(i).Position_FromPos, MobList(i).Position_ToPos) * Verhältnis)
  52.  
  53.                                 If Walked > 0 Then
  54.                                     Dim OldX As Single = GetRealX(MobList(i).Position_FromPos.XSector, MobList(i).Position_FromPos.X)
  55.                                     Dim OldY As Single = GetRealY(MobList(i).Position_FromPos.YSector, MobList(i).Position_FromPos.Y)
  56.                                     Dim Full_X As Single = GetRealX(MobList(i).Position_FromPos.XSector, MobList(i).Position_FromPos.X) - GetRealX(MobList(i).Position_ToPos.XSector, MobList(i).Position_ToPos.X)
  57.                                     Dim Full_Y As Single = GetRealY(MobList(i).Position_FromPos.YSector, MobList(i).Position_FromPos.Y) - GetRealY(MobList(i).Position_ToPos.YSector, MobList(i).Position_ToPos.Y)
  58.  
  59.                                     Dim Cur_X As Single = Full_X * Verhältnis
  60.                                     Dim Cur_Y As Single = Full_Y * Verhältnis
  61.  
  62.                                     MobList(i).Position.X = GetXOffset(OldX + Cur_X)
  63.                                     MobList(i).Position.Y = GetYOffset(OldY + Cur_Y)
  64.  
  65.                                     MobList(i).Position.XSector = GetXSec(MobList(i).Position.X)
  66.                                     MobList(i).Position.YSector = GetYSec(MobList(i).Position.Y)
  67.                                 End If
  68.                             End If
  69.                         End If
  70.                     End If
  71.                 Next
  72.  
  73.                 Debug.Print("MM: " & DateDiff(DateInterval.Second, time, Date.Now))
  74.  
  75.                 MonsterMovement.Start()
  76.             Catch ex As Exception
  77.                 Log.WriteSystemLog("Timer Error: " & ex.Message & " Stack: " & ex.StackTrace & " Index: MM") '
  78.             End Try
  79.  
  80.         End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement