DARK SOULS™ II Guide

DkS2 Custom Controls v1.0.1 for DARK SOULS™ II

DkS2 Custom Controls v1.0.1

Overview

Dark Souls 2 custom controls using AutoHotkey script v1.0.1Removes DkS2 PC mouse input lag (allowing the perfect execution of both mainhand’s and offhand’s guard break and jump attack moves), adds various additional controls, allows the switching of the mianhand (left/right hand) and adds quick save/load controls

Description

DkS2 custom controls v1.0.1:

DkS2 controls:
– all controls on default, excepting the bellow ones
– all controls from Mouse’s tab (the first tab from the Key Bindings menu) = Nothing
– Interact/Confirm = TAB (default Enter)
– Confirm = LAlt (default Enter)
– Walk = C (default LAlt)
– Wield Right Weapon Two Handed/Function 2 = Q (default N)
– Lock Guard = V (default M)

DkS2 AH script controls:
– change left/right hand as mainhand (on LMB) via editing a variable
– LMB/RMB = mainhand/offhand attack
– LAlt + LMB/RMB = mainhand/offhand strong attack
– W + LMB/RMB = mainhand/offhand guard break
– W + LAlt + LMB/RMB = mainhand/offhand jump attack
– LCtrl + LMB/RMB = mainhand/offhand next weapon
– MMB = target lock
– LAlt + WMB up/down = next/previous target
– WMB up/down = next spell/item
– MB3 or B = mainhand jump attack (additional)
– MB4 or N = mainhand guard break (additional)
– F5 = Quick Save
– F8 = Quick Load

You need to edit 2 things in the following script:
– the “fInvertMouseButtons := true” line (if false, the left hand is the mainhand (as per DkS2 game’s default), if true then the right hand becomes the main hand)
– the path for the DkS2 game save files “C:UsersadonysAppDataRoamingDarkSoulsII11000010099e91e” in whatever path you have on your system

AutoHotkey script

;; DkS2 Custom Controls v1.0.1 ;; AutoHotkey script ;; by adonys #SingleInstance Force #HotkeyInterval 200 #MaxHotkeysPerInterval 1000 ;#IfWinActive ahk_class DarkSouls2 #IfWinActive ahk_exe DarkSoulsII.exe SendMode Input ; DkS default controls WALK_FORWARD = w; MAINHAND = h MAINHAND_STRONG = g OFFHAND = u OFFHAND_STRONG = y MAINHAND_SWAP = Right OFFHAND_SWAP = Left MAGIC_SWAP = Up ITEM_SWAP = Down TARGET_LOCK = o TARGET_PREVIOUS = j TARGET_NEXT = l ; mainhand is the left hand if false, the right hand if true fInvertMouseButtons := true ; LMB/RMB = normal attacks if not fInvertMouseButtons { OFFHAND_BUTTON = LButton MAINHAND_BUTTON = RButton } else { OFFHAND_BUTTON = RButton MAINHAND_BUTTON = LButton } ;Left Alt + LMB/RMB = strong attacks STRONG_MODIFIER = LAlt ; Left Control + LMB/RMB = weapon swap SWAP_MODIFIER = LCtrl ;Left Alt + Mouse Wheel up/down = cycle targets CYCLE_TARGET_MODIFIER = LAlt MENU_MODIFIER = LShift attackedOffHand := false attackedMainHand := false ; Methods ; ======================================= getStrongModifier() { global STRONG_MODIFIER return GetKeyState(STRONG_MODIFIER, “P”) } getSwapModifier() { global SWAP_MODIFIER return GetKeyState(SWAP_MODIFIER, “P”) } getCycleTargetModifier() { global CYCLE_TARGET_MODIFIER return GetKeyState(CYCLE_TARGET_MODIFIER, “P”) } getMenuModifier() { global MENU_MODIFIER return GetKeyState(MENU_MODIFIER, “P”) } doMainHandAttack() { global MAINHAND global MAINHAND_STRONG global attackedMainHand if not attackedMainHand { if getStrongModifier() { Send {%MAINHAND_STRONG% down} } else { Send {%MAINHAND% down} } attackedMainHand := true } return } doMainHandGuardBreak() { global MAINHAND isWalking := GetKeyState(WALK_FORWARD, “P”) BlockInput On if isWalking { Send {w up} Sleep 150 } Send {w down} Sleep 20 Send {%MAINHAND% down} Sleep 20 if not isWalking { Send {w up} } Sleep 20 Send {%MAINHAND% up} BlockInput Off return } doMainHandJumpAttack() { global MAINHAND_STRONG isWalking := GetKeyState(WALK_FORWARD, “P”) BlockInput On if isWalking { Send {w up} Sleep 150 } Send {w down} Sleep 20 Send {%MAINHAND_STRONG% down} Sleep 50 if not isWalking { Send {w up} } Sleep 20 Send {%MAINHAND_STRONG% up} BlockInput Off return } doOffHandAttack() { global OFFHAND global OFFHAND_STRONG global attackedOffHand if not attackedOffHand { if getStrongModifier() { Send {%OFFHAND_STRONG% down} } else { Send {%OFFHAND% down} } attackedOffHand := true } return } doOffHandGuardBreak() { global OFFHAND isWalking := GetKeyState(WALK_FORWARD, “P”) BlockInput On if isWalking { Send {w up} Sleep 150 } Send {w down} Sleep 20 Send {%OFFHAND% down} Sleep 20 if not isWalking { Send {w up} } Sleep 20 Send {%OFFHAND% up} BlockInput Off return } doOffHandJumpAttack() { global OFFHAND_STRONG isWalking := GetKeyState(WALK_FORWARD, “P”) BlockInput On if isWalking { Send {w up} Sleep 150 } Send {w down} Sleep 20 Send {%OFFHAND_STRONG% down} Sleep 50 if not isWalking { Send {w up} } Sleep 20 Send {%OFFHAND_STRONG% up} BlockInput Off return } doMainHandAction() { global MAINHAND global MAINHAND_STRONG global MAINHAND_SWAP global OFFHAND global OFFHAND_STRONG global OFFHAND_BUTTON global MAINHAND_BUTTON global attackedMainHand global attackedOffHand swap := getSwapModifier() while GetKeyState(MAINHAND_BUTTON, “P”) { if swap { Send {%MAINHAND_SWAP% down} Sleep 50 Send {%MAINHAND_SWAP% up} swap := false break } doMainHandAttack() if GetKeyState(OFFHAND_BUTTON, “P”) { doOffHandAttack() } else { Send {%OFFHAND% up} Send {%OFFHAND_STRONG% up} attackedOffHand := false } } Send {%MAINHAND% up} Send {%MAINHAND_STRONG% up} attackedMainHand := false if not GetKeyState(OFFHAND_BUTTON, “P”) { Send {%OFFHAND% up} Send {%OFFHAND_STRONG% up} attackedOffHand := false } return } doOffHandAction() { global OFFHAND global OFFHAND_STRONG global OFFHAND_SWAP global MAINHAND global MAINHAND_STRONG global OFFHAND_BUTTON global MAINHAND_BUTTON global attackedOffHand global attackedMainHand swap := getSwapModifier() while GetKeyState(OFFHAND_BUTTON, “P”) { if swap { Send {%OFFHAND_SWAP% down} Sleep 50 Send {%OFFHAND_SWAP% up} swap := false break } doOffHandAttack() if GetKeyState(MAINHAND_BUTTON, “P”) { doMainHandAttack() } else { Send {%MAINHAND% up} Send {%MAINHAND_STRONG% up} attackedMainHand := false } } Send {%OFFHAND% up} Send {%OFFHAND_STRONG% up} attackedOffHand := false if not GetKeyState(MAINHAND_BUTTON, “P”) { Send {%MAINHAND% up} Send {%MAINHAND_STRONG% up} attackedMainHand := false } return } ; ACTION BINDINGS ; ======================================= ~*LButton:: { if not fInvertMouseButtons doOffHandAction() else doMainHandAction() return } ~*RButton:: { if not fInvertMouseButtons doMainHandAction() else doOffHandAction() return } MButton:: { global TARGET_LOCK Send {%TARGET_LOCK% down} Sleep 20 Send {%TARGET_LOCK% up} return } ~WheelUp:: { global MAGIC_SWAP global TARGET_PREVIOUS if getCycleTargetModifier() { Send {%TARGET_PREVIOUS% down} Sleep 20 Send {%TARGET_PREVIOUS% up} } else { Send {%MAGIC_SWAP% down} Sleep 20 Send {%MAGIC_SWAP% up} } return } ~WheelDown:: { global ITEM_SWAP global TARGET_NEXT if getCycleTargetModifier() { Send {%TARGET_NEXT% down} Sleep 20 Send {%TARGET_NEXT% up} } else { Send {%ITEM_SWAP% down} Sleep 20 Send {%ITEM_SWAP% up} } return } ; Jump Attack. Can change C to whatever ~*B:: ~*XButton1:: { if not fInvertMouseButtons doOffHandJumpAttack() else doMainHandJumpAttack() return } ; Guard Break. Can change Q to whatever ~*N:: ~*XButton2:: { if not fInvertMouseButtons doOffHandGuardBreak() else doMainHandGuardBreak() return } ;; Quick Load f8::FileCopy, C:UsersadonysAppDataRoamingDarkSoulsII11000010099e91eDARKSII0000.qs.sl2, C:UsersadonysAppDataRoamingDarkSoulsII11000010099e91eDARKSII0000.sl2, 1 ;; Quick Save f5::FileCopy, C:UsersadonysAppDataRoamingDarkSoulsII11000010099e91eDARKSII0000.sl2, C:UsersadonysAppDataRoamingDarkSoulsII11000010099e91eDARKSII0000.qs.sl2, 1
SteamSolo.com