Advertisement
Guest User

Untitled

a guest
Nov 9th, 2018
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. #include "FastFind.au3"
  2. #include <MsgBoxConstants.au3>
  3. #include <Array.au3>
  4.  
  5. HotKeySet("{HOME}", "_START")
  6. HotKeySet("{END}", "_EXIT")
  7.  
  8. Global $MARK_COLOR = '00FF4646' ; Kolor Znacznika
  9. Global $MINIMAP_AREA = [[1743, 31], [1911, 175]] ; Obszar minimapy
  10. Global $CENTER = [1825, 100] ; Srodek
  11.  
  12. Func _START()
  13. Local $Marks = findMarks()
  14. Local $invalid_quarters = Null ; Numer wykluczonej cwiartki, na poczatku nie chcemy nic wykluczac
  15. While 1
  16. If IsInactive() Then
  17. $Marks = findMarks()
  18. $invalid_quarters = makeMove($Marks, $invalid_quarters)
  19. EndIf
  20. Sleep(100)
  21. WEnd
  22. EndFunc
  23.  
  24.  
  25. ; Zwraca posortowana liste znacznikow
  26. Func findMarks()
  27. Local $aMarks = [[0, 0, 0, 0]]
  28. FFSnapShot()
  29.  
  30. For $x = $MINIMAP_AREA[0][0] To $MINIMAP_AREA[1][0]
  31. For $y = $MINIMAP_AREA[0][1] To $MINIMAP_AREA[1][1]
  32. If Hex(FFGetPixel($x,$y)) == $MARK_COLOR Then
  33. _ArrayAdd($aMarks, $x & "|" & $y & "|" & getQuarter($x, $y) & "|" & getDistance($x, $y))
  34. EndIf
  35. Next
  36. Next
  37.  
  38. If UBound($aMarks) <= 1 Then
  39. MsgBox($MB_ICONERROR, '', 'Brak punktów na mapie')
  40. Exit
  41. EndIf
  42. _ArraySort($aMarks, 0, 0, 0, 3) ; sortowanie po dystansie
  43.  
  44. ; COL 0 - X
  45. ; COL 1 - Y
  46. ; COL 2 - Cwiartka
  47. ; COL 3 - Odleglosc do punktu
  48. ;_ArrayDisplay($aMarks)
  49. Return $aMarks
  50. EndFunc
  51.  
  52.  
  53. ; Wyznacza cwiartke
  54. ; Bedzie problem jezeli x == 0 lub y == 0
  55. Func getQuarter($x, $y)
  56. $x = $x - $CENTER[0]
  57. $y = $y - $CENTER[1]
  58.  
  59. If $x > 0 And $y < 0 Then
  60. Return 1
  61. ElseIf $x < 0 And $y < 0 Then
  62. Return 2
  63. ElseIf $x < 0 And $y > 0 Then
  64. Return 3
  65. ElseIf $x > 0 And $y > 0 Then
  66. Return 4
  67. EndIf
  68. EndFunc
  69.  
  70. ; Dystans
  71. Func getDistance($x, $y)
  72. $x = Abs($x - $CENTER[0])
  73. $y = Abs($y - $CENTER[1])
  74. Return $x + $y
  75. EndFunc
  76.  
  77. ; Wykonuje ruch i zwraca cwiartke ktora wykluczymy przy nastepnym ruchu
  78. Func makeMove($aMarks, $invalid_quarters)
  79. Local $gotoX = 0
  80. Local $gotoY = 0
  81. Local $quarter = 0
  82.  
  83. For $i=1 To UBound($aMarks)-1
  84. $quarter = $aMarks[$i][2]
  85. If isInInvalidQuarter($quarter, $invalid_quarters) Then
  86. ContinueLoop
  87. EndIf
  88. $gotoX = $aMarks[$i][0]
  89. $gotoY = $aMarks[$i][1]
  90. ExitLoop
  91. Next
  92.  
  93. If $gotoX > 0 And $gotoY > 0 Then
  94. MouseMove($gotoX, $gotoY, 0)
  95. Sleep(250)
  96. MouseClick("left")
  97. Return getInvalidQuarter($quarter)
  98. Else
  99. MsgBox($MB_ICONERROR, '', 'Nie udało się wykonać ruchu, wszystkie punkty są w wykluczonej cwiartce')
  100. Exit
  101. EndIf
  102. EndFunc
  103.  
  104. ; Zwraca cwiartke ktora bedziemy ignorowac
  105. Func getInvalidQuarter($quarter)
  106. Switch ($quarter)
  107. Case 1
  108. Return 3
  109. Case 2
  110. Return 4
  111. Case 3
  112. Return 1
  113. Case 4
  114. Return 2
  115. Case Else
  116. MsgBox($MB_ICONERROR, '', "What's wrong dude?")
  117. EndSwitch
  118. EndFunc
  119.  
  120. ; Zwraca True jezeli znacznik jest w wykluczonej cwiartce
  121. Func isInInvalidQuarter($quarter, $invalid_quarters)
  122. If IsArray($invalid_quarters) Then
  123. For $q In $invalid_quarters
  124. If $quarter == $q Then Return True
  125. Next
  126. Else
  127. Return $quarter == $invalid_quarters
  128. EndIf
  129.  
  130. Return False
  131. EndFunc
  132.  
  133. ; Zwraca True jezeli postac sie nie porusza
  134. Func IsInactive()
  135. Local $cheksum1 = PixelChecksum($MINIMAP_AREA[0][0], $MINIMAP_AREA[0][1], $MINIMAP_AREA[1][0], $MINIMAP_AREA[1][1])
  136. Sleep(1500)
  137. Local $cheksum2 = PixelChecksum($MINIMAP_AREA[0][0], $MINIMAP_AREA[0][1], $MINIMAP_AREA[1][0], $MINIMAP_AREA[1][1])
  138. Return $cheksum1 == $cheksum2
  139. EndFunc
  140.  
  141. Func _EXIT()
  142. Exit
  143. EndFunc
  144.  
  145. While 1
  146. Sleep(100)
  147. WEnd
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement