Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Public Sub MonsterMovement_Elapsed(ByVal sender As Object, ByVal e As ElapsedEventArgs)
- Dim random As New Random
- Try
- MonsterMovement.Stop()
- Dim time As Date = Date.Now
- For i = 0 To MobList.Count - 1
- If i < MobList.Count Then
- Dim obj As Object_ = GetObjectById(MobList(i).Pk2ID)
- Dim mob = MobList(i)
- If MobList(i).Death = False And MobList(i).Walking = False And obj.WalkSpeed > 0 Then
- Dim dist As Single = CalculateDistance(MobList(i).Position, MobList(i).Position_Spawn)
- Dim mob_ = MobList(i)
- If dist < Settings.ServerRange Then
- Dim ToX As Single = GetRealX(MobList(i).Position.XSector, MobList(i).Position.X) + random.Next(-15, +10)
- Dim ToY As Single = GetRealY(MobList(i).Position.YSector, MobList(i).Position.Y) + random.Next(-10, +15)
- Dim ToPos As New Position
- ToPos.XSector = GetXSec(ToX)
- ToPos.YSector = GetYSec(ToY)
- ToPos.X = GetXOffset(ToX)
- ToPos.Z = MobList(i).Position.Z
- ToPos.Y = GetYOffset(ToY)
- If ToPos.X = mob.Position.X And ToPos.Y = mob.Position.Y Then
- ToPos.X += 1
- End If
- MoveMob(i, ToPos)
- Else
- MoveMob(i, MobList(i).Position_Spawn)
- End If
- ElseIf MobList(i).Walking = True And obj.WalkSpeed > 0 Then
- Dim wert As Integer = Date.Compare(MobList(i).WalkEnd, Date.Now)
- If wert = -1 Then
- 'Abgelaufen
- MobList(i).Walking = False
- MobList(i).Position = MobList(i).Position_ToPos
- Else
- Dim Past As Single = DateDiff(DateInterval.Second, Date.Now, MobList(i).WalkEnd)
- Dim FullTime As Single = DateDiff(DateInterval.Second, MobList(i).WalkStart, MobList(i).WalkEnd)
- Dim Verhältnis As Single = (Past / FullTime)
- Dim Walked As Single = (CalculateDistance(MobList(i).Position_FromPos, MobList(i).Position_ToPos) * Verhältnis)
- If Walked > 0 Then
- Dim OldX As Single = GetRealX(MobList(i).Position_FromPos.XSector, MobList(i).Position_FromPos.X)
- Dim OldY As Single = GetRealY(MobList(i).Position_FromPos.YSector, MobList(i).Position_FromPos.Y)
- 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)
- 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)
- Dim Cur_X As Single = Full_X * Verhältnis
- Dim Cur_Y As Single = Full_Y * Verhältnis
- MobList(i).Position.X = GetXOffset(OldX + Cur_X)
- MobList(i).Position.Y = GetYOffset(OldY + Cur_Y)
- MobList(i).Position.XSector = GetXSec(MobList(i).Position.X)
- MobList(i).Position.YSector = GetYSec(MobList(i).Position.Y)
- End If
- End If
- End If
- End If
- Next
- Debug.Print("MM: " & DateDiff(DateInterval.Second, time, Date.Now))
- MonsterMovement.Start()
- Catch ex As Exception
- Log.WriteSystemLog("Timer Error: " & ex.Message & " Stack: " & ex.StackTrace & " Index: MM") '
- End Try
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement