Advertisement
Guest User

DBD RKN FIX

a guest
Jun 8th, 2018
1,095
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 5.95 KB | None | 0 0
  1. #pragma compile(Out, DBDRKNFIX.exe)
  2. #pragma compile(ProductName, DBDRKNFIX)
  3. #pragma compile(ProductVersion, 1.0)
  4. #pragma compile(FileVersion, 1.0)
  5. #pragma compile(FileDescription, Исправляет ошибку 300 в игре Dead By Daylight, путём установки статических IP адресов серверам игры)
  6. #pragma compile(LegalCopyright, 'Просто Ярик')
  7.  
  8. #include <GUIConstantsEx.au3>
  9. #include <ColorConstants.au3>
  10. #include "GUIHyperLink.au3"
  11. #include <File.au3>
  12.  
  13. #RequireAdmin
  14.  
  15. $mainwindow=GUICreate("DBD RKN FIX", 400,80)
  16. GUISetState(@SW_SHOW, $mainwindow)
  17. $host1=GUICtrlCreateLabel("latest.live.dbd.bhvronline.com",8,5)
  18. $ip1=GUICtrlCreateLabel("255.255.255.255",180,5)
  19. $state1=GUICtrlCreateLabel("               ",280,5)
  20. $rotor1=GUICtrlCreateLabel(" |",335,5)
  21. $host2=GUICtrlCreateLabel("s3.amazonaws.com",8,25)
  22.  
  23. $ip2=GUICtrlCreateLabel("255.255.255.255",180,25)
  24. $state2=GUICtrlCreateLabel("               ",280,25)
  25. $rotor2=GUICtrlCreateLabel(" |",335,25)
  26. $button=GUICtrlCreateButton("Записать в Hosts",5,45)
  27. GUICtrlSetState($button,$GUI_DISABLE)
  28.  
  29. $nAutoItScript_Ru_HyperLink = _GUICtrlHyperLink_Create("Информация", 325, 60, 130, 15, 0x0000FF, 0x551A8B, _
  30.     -1, 'http://steamcommunity.com/sharedfiles/filedetails/?id=1404565482', 'Руководство в Steam', $mainwindow)
  31.  
  32. sleep(500)
  33. readhosts ( @WindowsDir & "\system32\drivers\etc\hosts")
  34.  
  35.     While 1
  36.       if GUICtrlGetState ($button) = 144 Then
  37.          if guictrlread($state1) = "OK!" and guictrlread($state2) = "OK!" Then
  38.             GUICtrlSetState($button,$GUI_ENABLE)
  39.             TCPShutdown()
  40.          EndIf
  41.       EndIf
  42.       if guictrlread($state1) <> "OK!" Then checkstate(1)
  43.       if guictrlread($state2) <> "OK!" Then checkstate(2)
  44.         Switch GUIGetMsg()
  45.             Case $GUI_EVENT_CLOSE
  46.                 ExitLoop
  47.              Case $button
  48.                 writehosts ( @WindowsDir & "\system32\drivers\etc\hosts")
  49.                   ExitLoop
  50.         EndSwitch
  51.      WEnd
  52.  
  53.  
  54. func checkstate ($num)
  55. ;~ Оставлю как есть - слишком много возни для такого мелкого скрипта. Надеюсь не придётся масштабировать
  56.    Switch $num
  57.    Case 1
  58.       $host=guictrlread($host1)
  59.    Case 2
  60.       $host=guictrlread($host2)
  61.    EndSwitch
  62. TCPStartup()
  63.    $IPaddress=TCPNameToIP($host)
  64.    Switch $num
  65.    Case 1
  66.       GUICtrlSetData($ip1,$IPAddress)
  67.    Case 2
  68.       GUICtrlSetData($ip2,$IPAddress)
  69.    EndSwitch
  70. ;~    йобанный хардкод когда разберусь, как проверять доступность сервера - уберу. Сейчас серваки не пингуются, не отдают html а просто говорят, что могут обрабатывать метод GET
  71. if $ipaddress="52.202.38.248" Then
  72. ;~    проверил реестр РКН вручную - из известных мне адресов, этот - единственный не в бане. Оставлю как есть, потому что для опроса этих серверов с закрытым API придётся творить какую-то безумную конструкцию, которую я вряд ли осилю.
  73.       GUICtrlSetColor($state1,$color_green)
  74.       GUICtrlSetData($state1,"OK!")
  75.       GUICtrlSetData($rotor1, "")
  76.       return 1
  77. EndIf
  78. if ping($IPAddress,1000) Then
  79.    Switch $num
  80.    Case 1
  81.       GUICtrlSetColor($state1,$color_green)
  82.       GUICtrlSetData($state1,"OK!")
  83.       GUICtrlSetData($rotor1, "")
  84.    Case 2
  85.       GUICtrlSetColor($state2,$color_green)
  86.       GUICtrlSetData($state2,"OK!")
  87.       GUICtrlSetData($rotor2, "")
  88.    EndSwitch
  89.    return 1
  90. Else
  91.       Switch $num
  92.    Case 1
  93.       GUICtrlSetColor($state1,$color_red)
  94.       GUICtrlSetData($state1,"OFFLINE")
  95.    Case 2
  96.       GUICtrlSetColor($state2,$color_red)
  97.       GUICtrlSetData($state2,"OFFLINE")
  98.    EndSwitch
  99.    refresh($num)
  100.    return 0
  101. EndIf
  102. EndFunc
  103.  
  104. func refresh ($num)
  105.  
  106.    Switch $num
  107.    Case 1
  108.       $rotor=guictrlread($rotor1)
  109.    Case 2
  110.       $rotor=guictrlread($rotor2)
  111.    EndSwitch
  112.  
  113.    switch $rotor
  114.    Case " |"
  115.       $rotor="/"
  116.    Case "/"
  117.       $rotor="--"
  118.    Case "--"
  119.       $rotor="\"
  120.    Case "\"
  121.       $rotor=" |"
  122.    EndSwitch
  123.  
  124.    Switch $num
  125.    Case 1
  126.       GUICtrlSetData($rotor1,$rotor)
  127.    Case 2
  128.       GUICtrlSetData($rotor2,$rotor)
  129.    EndSwitch
  130.  
  131. ;~ Это не обязательно и не знаю как будет работать, если сам днс сервер кэширует запросы. А ещё на это может ругаться антивирус, но пока - пусть будет
  132. Run(@ComSpec & " /c " & 'ipconfig /flushdns', "", @SW_HIDE)
  133. EndFunc
  134.  
  135. func readhosts ($file)
  136. local $line1=0
  137. local $line2=0
  138.    for $i=1 to _FileCountLines($file)
  139. ;~    добавь проверку на случай, если будет больше двух записей
  140.       if stringinstr(filereadline($file,$i),guictrlread($host1)) then $line1=$i
  141.       if stringinstr(filereadline($file,$i),guictrlread($host2)) then $line2=$i
  142.    Next
  143.    if $line1+$line2<>0 Then
  144.       if msgbox(1,"","Обнаружены строки:" & @crlf & filereadline($file,$line1) & @crlf & filereadline($file,$line2) & @crlf & "При продолжении, они будут удалены")=2 Then
  145.          Exit
  146.       Else
  147. ;~    добавь проверку на содержимое удаляемой строки.
  148.       _FileWritetoLine($file,$line2,"",1)
  149.       _FileWritetoLine($file,$line1,"",1)
  150.    EndIf
  151.    EndIf
  152. EndFunc
  153.  
  154. func writehosts ($file)
  155.       if filewriteline($file, @CRLF) Then
  156.          if filewriteline($file, guictrlread($ip1)& " " & guictrlread($host1)) Then
  157.             If filewriteline($file, guictrlread($ip2)& " " & guictrlread($host2)) Then
  158.                MsgBox ("","","Запись произведена. Можно запускать игру")
  159.             Else
  160.                MsgBox ("","","Ошибка записи. Попробуйте перезапустить скрипт с правами администратора")
  161.             EndIf
  162.          EndIf
  163.       EndIf
  164. EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement