Что нового

[Diablo 3] Скрипт для упрощения игры КМ-соркой

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Если кто играл/играет в D3 магом с КМ-билдом, то знает, насколько подбешивает постоянное нажатие 1-2-3 + ЛКМ (вариации могут быть разные). Для упрощения сего увлекательного процесса я написал небольшой скрипт на AutoIt.

Код:
#Region Resources
#AutoIt3Wrapper_UseX64=N
#AutoIt3Wrapper_UseUpx=N
#AutoIt3Wrapper_OutFile=D3Helper.exe
#AutoIt3Wrapper_Icon=D3.ico
#AutoIt3Wrapper_Run_Obfuscator=Y
#AutoIt3Wrapper_Res_Icon_Add=201.ico
#AutoIt3Wrapper_Res_Icon_Add=202.ico
#AutoIt3Wrapper_Run_After=del D3Helper_Obfuscated.au3
#Obfuscator_Parameters=/striponly
#EndRegion Resources

#Include <Constants.au3>
#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)
Opt('TrayMenuMode', 3)
Opt('TrayOnEventMode', 1)

Global Const $Key[3] = [0x31, 0x32, 0x33]

Global $Tmp, $Index, $Pause = False
Global $Tray[2]

;~HotKeySet('^p', '_Rev')

$Tray[0] = TrayCreateItem('Pause')
TrayItemSetOnEvent(-1, '_TrayEvents')
;~TrayItemSetState(-1, $TRAY_DEFAULT)
TrayCreateItem('')
$Tray[1] = TrayCreateItem('Exit')
TrayItemSetOnEvent(-1, '_TrayEvents')
TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, '_TrayEvents')
TraySetToolTip('Diablo III CM Wizzard Helper')
TraySetClick(8)

While 1
	Sleep(10)
	If $Pause Then
		ContinueLoop
	EndIf
	While (BitAND(_WinAPI_GetAsyncKeyState(0x01), 0x8000)) And (BitAND(_WinAPI_GetAsyncKeyState(0x20), 0x8000))
		$Tmp = $Key
		For $i = 0 To UBound($Tmp) - 1
			$Index = Random(0, UBound($Tmp) - 1, 1)
			While Not $Tmp[$Index]
				$Index += 1
				If $Index > UBound($Tmp) - 1 Then
					$Index = 0
				EndIf
			WEnd
			_WinAPI_Keybd_Event($Tmp[$Index], 0x00)
			_Delay(Random(10, 20, 1))
			_WinAPI_Keybd_Event($Tmp[$Index], 0x02)
			_Delay(Random(10, 20, 1))
			$Tmp[$Index] = 0
		Next
	WEnd
WEnd

Func _Delay($iDelay)

	Local $Timer = TimerInit()

	While TimerDiff($Timer) <= $iDelay
		; Nothing
	WEnd
EndFunc   ;==>_Delay

#cs

Func _Rev()

	Static $Int = False

	If $Int Then
		Return
	EndIf

	$Int = 1
	_Pause()
;~	Beep(600, 100)
	$Int = 0
EndFunc   ;==>_Rev

#ce

Func _Pause()
	If $Pause Then
		TrayItemSetState($Tray[0], $TRAY_UNCHECKED)
		TraySetIcon(@ScriptFullPath, 201)
		$Pause = 0
	Else
		TrayItemSetState($Tray[0], $TRAY_CHECKED)
		TraySetIcon(@ScriptFullPath, 202)
		$Pause = 1
	EndIf
EndFunc   ;==>_Pause

Func _TrayEvents()
	Switch @TRAY_ID
		Case $TRAY_EVENT_PRIMARYDOWN
			ContinueCase
		Case $Tray[0]
			_Pause()
		Case $Tray[1]
			Exit
		Case Else

	EndSwitch
EndFunc   ;==>_TrayEvents


После запуска появится иконка в трее, с помощью которой можно временно деактивировать скрипт (клик по иконке или через меню). Сам скрипт работает следующим образом: при удержании пробела (стоять на месте) + ЛКМ (энергетический вихрь) в случайном порядке со случаными задержками прожимаются клавиши 1-2-3 (алмазная кожа, энергетический взрыв и кольцо льда). Вот собственно и все. Проверить работу скрипта можно в любом текстовом редакторе зажав пробел и ЛКМ.

P.S.

Естественно, ответственность за использование данного скрипта будет лежать полностью на вас. Но т.к. скрипт не является ботом и не может работать без участия игрока, то забанить вас не должны :smile:.

Скомпилированная версия (с иконками):

D3Helper.zip
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Надо же, какие люди, приветствуем на тёмной стороне
 
Верх