2014年2月6日 星期四

TwMS v1.50.2_ICS_熱鍵技能不漏放

[ENABLE]
registersymbol(xHookHotKey)
alloc(xHookHotKey,128)
registersymbol(xHotKey)
alloc(xHotKey,512)
label(xHotKey1)
label(xHotKey2)
label(xHotKey3)
label(xHotKey4)
label(xHotKey5)
label(xNormal)
//==========11組的空間 16*11
alloc(xKey_Skill,176)
alloc(xSkill_Set,4)
alloc(xSkill_Cnt,4)
alloc(xSkill_Run,4)
alloc(xJustDo1,4)
alloc(xJustDo2,4)
alloc(xJustDo3,4)
//==========可修改偵測組數
xSkill_Cnt:
dd 4
//==========不可修改
xSkill_Set:
dd 0
xSkill_Run:
dd 0
xJustDo1:
dd 00000000
xJustDo2:
dd 0
xJustDo3:
dd 0
//==========
xHookHotKey:
  cmp [esp],00500419
//81 ? ? ? ? ? 10 27 00 00
  jne ImmGetContext
  mov [esp],xHotKey
  jmp ImmGetContext

xHotKey:
  test eax,eax
  je xHotKey1
  lea ecx,[esi+00007498]
  call 0042259E
  je 0050043D
  jmp xNormal
xHotKey1:
  pushad
  cmp [xSkill_Cnt],1
  jl xNormal
  cmp [xSkill_Set],1  //是否設熱鍵
  je xHotKey2
  //==========
  //PgUp  01490000    //1864
  //PgDown 01510000    //1894
  //Insert 01520000    //184c
  //Delete 01530000    //187c
  //Home  01470000    //1858
  //End    014f0000    //1888
  //==============鍵盤按鍵代碼
  //00020000 =1 鍵盤列往右+1 2 = 00030000
  //00100000 =q 鍵盤列往右+1 w = 00110000
  //001e0000 =a 鍵盤列往右+1 s = 001f0000
  //002c0000 =z 鍵盤列往右+1 x = 002d0000
  //====讀取熱鍵設定
  mov ecx,0  //第1組
  imul eax,ecx,10
  mov [xKey_Skill+eax+00],01470000  //魔心
  mov [xKey_Skill+eax+04],00004e20  //600秒
  mov [xKey_Skill+eax+08],0000012c  //延遲時間
  mov [xKey_Skill+eax+0c],00000000  //下次施放時間
  //====
  inc ecx  //第2組
  imul eax,ecx,10
  mov [xKey_Skill+eax+00],01490000  //天祝
  mov [xKey_Skill+eax+04],00004e20  //240秒
  mov [xKey_Skill+eax+08],000003e8  //延遲時間
  mov [xKey_Skill+eax+0c],00000000  //下次施放時間
  //====
  inc ecx  //第3組
  imul eax,ecx,10
  mov [xKey_Skill+eax+00],01520000  //神聖之光
  mov [xKey_Skill+eax+04],00004e20  //240秒
  mov [xKey_Skill+eax+08],000003e8  //延遲時間
  mov [xKey_Skill+eax+0c],00000000  //下次施放時間
  //====要增加熱鍵請複製下列這組
  inc ecx  //第4組
  imul eax,ecx,10
  mov [xKey_Skill+eax+00],014f0000  //祈禱
  mov [xKey_Skill+eax+04],00004e20  //120秒
  mov [xKey_Skill+eax+08],000007d0  //延遲時間
  mov [xKey_Skill+eax+0c],00000000  //下次施放時間
  //====
  xor edi,edi
  xor ebx,ebx
  xor edx,edx
  mov [xSkill_Set],1  //已設好
xHotKey2:
  mov eax,[00E1CFF0]
  mov eax,[eax+1c]
  cmp eax,[xSkill_Run]  //是否過了延遲時間
  jl  xHotKey4
  sub eax,7d0  //提前2秒檢測(最長延遲2秒)
  mov edi,0
xHotKey3:
  cmp edi,[xSkill_Cnt]
  jge xNormal
  imul ecx,edi,10
  mov ebx,[xKey_Skill+ecx+0c]
  cmp ebx,0
  je xHotKey5
  cmp eax,ebx
  jge xHotKey5
  inc edi
  jmp xHotKey3
xHotKey4:
  cmp [xJustDo2],0
  je xNormal
  call clock
  mov [xJustDo2],0
  cmp eax,[xJustDo3]
  jg xNormal
  mov  [xJustDo2],1
  mov eax,[xJustDo1]
  mov [ebp+0c],eax
  jmp xNormal
xHotKey5:
  //====強制變更按鍵
  mov ebx,[xKey_Skill+ecx+00]
  mov [ebp+0c],ebx
  mov [xJustDo1],ebx
  mov [xJustDo2],1
  mov eax,[00E1CFF0]
  mov eax,[eax+1c]
  mov [xJustDo3],eax
  mov edx,[xKey_Skill+ecx+04]
  add eax,edx
  mov [xKey_Skill+ecx+0c],eax
  sub eax,edx
  mov edx,[xKey_Skill+ecx+08]
  add eax,edx
  mov [xSkill_Run],eax
  xor eax,eax
  mov eax,[xJustDo3]
  add eax,a
  mov [xJustDo3],eax
  jmp xNormal

xNormal:
  popad
  push [ebp+0C]
  mov ecx,[00E1847C]
  push [ebp+08]
  jmp 00500438

00E25FD4:
DD xHookHotKey

[DISABLE]
00E25FD4:
DD ImmGetContext
//===========
dealloc(xHookHotKey)
unregistersymbol(xHookHotKey)
dealloc(xHotKey)
unregistersymbol(xHotKey)

沒有留言:

張貼留言