Jump to content

Variant

Members
  • Posts

    52
  • Joined

  • Last visited

Community Answers

  1. Variant's post in Max Damage was marked as the answer   
    Uh, bump again, but this time with a reason.
    I couldn't figure out how to display the 'k', but I did figure out how to display up to 9 digits. Using OllyDbg, with a lot of guidance from Ai4rei, I managed to rewrite the routine for how the client displays the digits (simplified the ridiculous mess of lines into one loop).
    For those interested, search for CMP ECX,0F423F in the main module, and read on from there. The digits are all stored in an array, and the usual method of extracting digits is

    00785BC4 B8 67666666 MOV EAX,66666667 00785BC9 F7E9 IMUL ECX 00785BCB C1FA 02 SAR EDX,2 00785BCE 8BC2 MOV EAX,EDX 00785BD0 C1E8 1F SHR EAX,1F 00785BD3 03C2 ADD EAX,EDX 00785BD5 8D1480 LEA EDX,DWORD PTR DS:[EAX+EAX*4] 00785BD8 03D2 ADD EDX,EDX 00785BDA 2BCA SUB ECX,EDX 00785BDC 894C24 40 MOV WHATEVERYOURARRAYIS,ECX 00785BE0 8BC8 MOV ECX,EAX
    Which can be rewritten pretty easily, since all it does is divide the damage by 10 and store the remainder in an array (in my case, where ESP+20 + 4xDigit# was pointing).
    IDIV 0A does the same thing, I just wrote a loop to save space, whether or not it's faster or slower... well, it's less instructions.. right? Haha, it's negligible either way I suppose. I guess theoretically you could go up to even higher values... I'll pass on ever having players deal 2 billion damage though.
    For reference, I used the 06-14-11 client, your addresses probably won't be the same because my client was already edited elsewhere, but it's the same concept.
    Edit:
    Since this problem is solved, I guess this topic can be closed? I don't know the policy.
    Edit2:
    I think this also should go into client support.
×
×
  • Create New...