스크립트 바인딩된 실행 파일 다운로드: https://files.catbox.moe/muu7m2.zip
Last active
September 22, 2024 04:39
-
-
Save toriato/56f98c00d2099b81d29de73e57c15b8f to your computer and use it in GitHub Desktop.
AHK script for KartRider Minecraft movement mapping
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Requires AutoHotkey v2.0 | |
#SingleInstance Force | |
#HotIf InMinecraft() | |
global ACCELERATION := 3 ; 가속도 | |
global DECELERATION := 1 ; 감속도 | |
global DEFAULT_MAX_SPEED := 10 ; 최대 마우스 움직임 속도 | |
global DRIFT_MAX_SPEED := 25 ; 드리프트 중 최대 마우스 움직임 속도 | |
global DRIFT_TIME := 20 ; 드리프트 지속 시간 | |
global DRIFT_COOLDOWN := 30 ; 드리프트 재사용 대기 시간 | |
;================================================================================ | |
; 카트라이더: 마인크래프트 입력 스크립트 | |
;================================================================================ | |
; 이 스크립트는 화살표 키보드 입력을 마우스 움직임으로 맵핑하는 스크립트입니다. | |
; 가상으로 드리프트 느낌을 구현하려 시도했으나 아쉽게도 실제 게임처럼 동작하진 않습니다. | |
; 또, 부스터(쉬프트키)와 드리프트(컨트롤키)를 빠르게 연타시 컨트롤이 고정되는 버그가 존재합니다. | |
;================================================================================ | |
global driftTimeLeft := 0 | |
global driftCooldown := 0 | |
global keys := Map( | |
'Left', KeyData(-1), | |
'Right', KeyData(1) | |
) | |
class KeyData { | |
offset := 0 | |
speed := 0 | |
pressed := false | |
__New(offset := 0) { | |
this.offset := offset | |
} | |
} | |
InMinecraft() { | |
try { | |
return WinGetProcessName('A') ~= 'javaw?\.exe' && WinGetTitle('A') ~= '^Minecraft' | |
} | |
return false | |
} | |
Toggle() { | |
keyName := StrReplace(A_ThisHotkey, ' Up') | |
if (!keys.Has(keyName)) { | |
return | |
} | |
key := keys.Get(keyName) | |
key.pressed := !(A_ThisHotkey ~= ' Up$') | |
} | |
Left::Toggle() | |
Right::Toggle() | |
Left Up::Toggle() | |
Right Up::Toggle() | |
Up::W | |
Down::S | |
Space::LShift | |
LShift::F24 | |
LControl::A ; FIXME: 쉬프트와 컨트롤을 번갈아가며 연타시 컨트롤이 고정되는 버그가 있음 | |
loop { | |
if !InMinecraft() { | |
continue | |
} | |
x := 0 | |
maxSpeed := (GetKeyState('F24') && driftTimeLeft > 0) ? DRIFT_MAX_SPEED : DEFAULT_MAX_SPEED | |
if driftTimeLeft > 0 { | |
--driftTimeLeft | |
} | |
if driftCooldown > 0 { | |
--driftCooldown | |
} | |
if GetKeyState('F24') && !driftTimeLeft && !driftCooldown { | |
driftTimeLeft := DRIFT_TIME | |
driftCooldown := DRIFT_COOLDOWN | |
} | |
for _, key in keys { | |
if key.pressed { | |
if Abs(key.speed) < maxSpeed { | |
key.speed += key.offset * ACCELERATION | |
} else { | |
key.speed -= key.offset * DECELERATION | |
} | |
} else { | |
if Abs(key.speed) > DECELERATION { | |
key.speed -= key.offset * DECELERATION | |
} else { | |
key.speed := 0 | |
} | |
} | |
x += key.speed | |
} | |
DllCall('mouse_event', 'UInt', 1, 'Int', x, 'Int', 0) | |
Sleep(10) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment