Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // JMS v400.1 NPC Talk Text
- [Enable]
- Alloc(NPCTextData, 4096)
- RegisterSymbol(NPCTextData)
- NPCTextData:
- dd #0
- dd #0
- dd #0
- Alloc(ProcessPacket_Hook, 256)
- Label(ProcessPacket_Hook_Ret)
- ProcessPacket_Hook:
- pushad
- mov esi,[ebp+8] // InPacket
- cmp dword ptr [esi+C],#20 // minimum data length
- jbe ProcessPacket_Hook_Ret
- mov eax,[esi+8] // Packet
- add eax,4
- cmp word ptr [eax],0730 // NPC Talk
- jne ProcessPacket_Hook_Ret
- cmp byte ptr [eax+2],#4 // always 4?
- jne ProcessPacket_Hook_Ret
- // [eax+#3] NPC ID
- // [eax+#12] Text Length
- // [eax+#14] Text
- mov ebx,[eax+3]
- mov [NPCTextData],ebx
- movzx ebx, word ptr [eax+C]
- mov [NPCTextData+4],ebx
- lea ebx,[eax+E]
- lea ecx,[NPCTextData+8]
- push [NPCTextData+4]
- push ebx
- push ecx
- call memcpy
- add esp,C
- ProcessPacket_Hook_Ret:
- popad
- jmp 049DF32E
- // ProcessPacket vm section
- 049DF31D:
- jmp ProcessPacket_Hook
- [Disable]
- 049DF31D:
- jmp 049DF32E
- DeAlloc(ProcessPacket_Hook)
- DeAlloc(NPCTextData)
- UnRegisterSymbol(NPCTextData)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement