wangjiaxin857 發表於 2025-2-15 10:44:30

TwMs v267.5 物品過濾(Item Filter)

//TwMs v267.5 物品過濾(Item Filter)

Alloc(ItemFilter,512,142C50C3F)
Alloc(FilterSwitch,4,142C50C3F)
Alloc(ItemList,2048,142C50C3F)
Label(Filter_Normal)
Label(Skip_Normal)
Label(End_Normal)
Label(Filter_OnlyKeep)
Label(Filter_OnlyKeep_Loop)
Label(Match_OnlyKeep)
Label(Skip_OnlyKeep)
Label(End_OnlyKeep)

//全局開關,0為物品過濾,若改為1則僅保留列表中的物品
FilterSwitch:
DD 0

//物品列表
ItemList:
DD #4001832 //咒文的痕跡


DD 0//這行務必要保留

ItemFilter:
    call 140D17A90
    push rsi
    mov rsi, ItemList
    mov edx, dword ptr ds:
    cmp edx, 1
    je Filter_OnlyKeep
    jmp Filter_Normal

Filter_Normal:
    cmp eax, C350
    jle End_Normal
    cmp dword ptr ds:, 0
    je End_Normal
    cmp dword ptr ds:, eax
    je Skip_Normal
    add rsi, 4
    jmp Filter_Normal

Skip_Normal:
    xor eax, eax
    jmp End_Normal

End_Normal:
    pop rsi
    jmp 142C50C3F+5

Filter_OnlyKeep:
    cmp eax, C350
    jle End_OnlyKeep
    cmp dword ptr ds:, 0
    je Skip_OnlyKeep
Filter_OnlyKeep_Loop:
    mov edx, dword ptr ds:
    cmp edx, 0
    je Skip_OnlyKeep
    cmp eax, edx
    je Match_OnlyKeep
    add rsi, 4
    jmp Filter_OnlyKeep_Loop

Match_OnlyKeep:
    pop rsi
    jmp 142C50C3F+5

Skip_OnlyKeep:
    xor eax, eax
    pop rsi
    jmp 142C50C3F+5

End_OnlyKeep:
    pop rsi
    jmp 142C50C3F+5

142C50C3F:
    jmp ItemFilter


142C50C3F:
    call 140D17A90

DeAlloc(ItemList)
DeAlloc(FilterSwitch)
DeAlloc(ItemFilter)
頁: [1]
查看完整版本: TwMs v267.5 物品過濾(Item Filter)