Jump to content
Shinryo

WeeDiffGen

Recommended Posts

Dear god is this real? I tried doing this a few years ago and got it to count over 999,999 but couldn't make it display more then 6 digits. You have done something many have tried and failed to do. Why did no one quote or comment this? This is freaken awesome and should be looked into more.

HOLY CRAP. I've been looking for something like this forever as well. How did I miss this when I read through the post the first time?

@Rytech

@Vach

oh,thanks for your replies!

i think that few people are interested in it, and its minor,hahaha /oh

It displays like this.(2012-05-25a)

[media=]

[/media]

note:

I'd like to customize only to "replace" as possible.

but,i couldn't find a free space for extended digits on the stack.

for now,i stored it on global variable area....

(in progress)

  • Upvote 1

Share this post


Link to post
Share on other sites

that extended damage digits thing is indeed something interesting, I would like to hear what Ai4rei have to say about it tho :P

Share this post


Link to post
Share on other sites

pnew can you give instructions on how you did that?

@request

please fix the 127 hairstyle mod, the hair colors get jumbled in the character creation after clicking the up arrow (the one for haircolor).

Share this post


Link to post
Share on other sites

@request

please fix the 127 hairstyle mod, the hair colors get jumbled in the character creation after clicking the up arrow (the one for haircolor).

u mean 64k hairstyle diff? xD

Share this post


Link to post
Share on other sites

yeah i meam both the hairstyle diffs. :)

Share this post


Link to post
Share on other sites

@Rytech

@Vach

oh,thanks for your replies!

i think that few people are interested in it, and its minor,hahaha /oh

It displays like this.(2012-05-25a)

[media=]

[/media]

note:

I'd like to customize only to "replace" as possible.

but,i couldn't find a free space for extended digits on the stack.

for now,i stored it on global variable area....

(in progress)

Minor? Just minor? Dude my jaw dropped when I saw the pic in hopes it was real. Watching your video made my jaw drop again. To see skill damage go past the 999k limit is like a major break through in client customizing and a beautiful sight to see. To low and mid rate server's its pointless, but when looking at high rates, it starts to become necessary depending on the setup. And when looking at super high rate server's it would be a major need. I started wondering if its possible to also increase the damage shown by regular attacks. It might be tricky or impossible since its likely coded in a signed 16-bit, making it show up to 32,767 and then just not appear at all when higher damage is done. Skill damage display is a 32-bit unsigned if im correct, right? Im trying to remember.

Im pointing this out since their's been issues on some servers where players could deal more then 32,767 and then not be able to see damage anymore. It was like "Am I hitting my enemy?". Healing does show its display when healing more then 32,767, but doesn't display any higher then that. Do you think its possible to fix those issues?

that extended damage digits thing is indeed something interesting, I would like to hear what Ai4rei have to say about it tho :P

I agree. Ai4rei should look into this. This is a major thing.

Share this post


Link to post
Share on other sites

@Rytech

@Vach

oh,thanks for your replies!

i think that few people are interested in it, and its minor,hahaha /oh

I agree with Rytech, this would be extremely useful to me due to how my server is setup.

Share this post


Link to post
Share on other sites

Do you think you can make a diff to control the exact level the client shows the aura. I know theres one for displaying area over 99/150, but one where you can set it exactly for non-3rd/3rd classes. For example a server may have max level at 255 for 3rd and 150 for non-3rd. Just seemed like a good idea.

Also Nana I suggest somebody putting the most traslated version of the 2012-04-10aRagexe in your first post of this topic so novices don't have to start from scratch. I suggest the only diff you use is to translate client to english.

Peopleperson49

Share this post


Link to post
Share on other sites

DeePee:

Can you test, if the following hex (316 bytes) solves your issue?

F: 6AFF68AB43730064A1000000005081ECC4000000A160927D0033C4898424C0000000535657A160927D0033C4508D8424D400000064A3000000008BBC24E80000008B9C24E400000057538D442420508BF1E88AFDFFFFC78424DC00000000000000837C24200066899ECC0000000F84880000000FBF8ECA0000008D47EF99F7F9C74424102A0000000FAFC883C10481FB18010000894C24147C08C7442410410100008D4C2414518D542414528BCEE81DC106008D842490000000508D4C241CC744241C14000000E8F4920B008B3594C47C008D4C241851B998FF8700E84FFD23008B542414508B44241452508D8C249C000000518BCEE815A10A00C78424DC000000FFFFFFFF8D4C2418E8215BFBFF8B8C24D400000064890D00000000595F5E5B8B8C24C000000033CCE81936280081C4D0000000C20800
R: 6AFF68AB43730064A1000000005081ECC4400000A160927D0033C4898424C0400000535657A160927D0033C4508D8424D440000064A3000000008BBC24E84000008B9C24E440000057538D442420508BF1E88AFDFFFFC78424DC40000000000000837C24200066899ECC0000000F84880000000FBF8ECA0000008D47EF99F7F9C74424102A0000000FAFC883C10481FB18010000894C24147C08C7442410410100008D4C2414518D542414528BCEE81DC106008D842490000000508D4C241CC744241C14000000E8F4920B008B3594C47C008D4C241851B998FF8700E84FFD23008B542414508B44241452508D8C249C000000518BCEE815A10A00C78424DC400000FFFFFFFF8D4C2418E8215BFBFF8B8C24D440000064890D00000000595F5E5B8B8C24C040000033CCE81936280081C4D0400000C20800

Basically it increases the stack of the crashing function, but since there is no stack frame, writing a plug-in for this is rather painful.

@request

please fix the 127 hairstyle mod, the hair colors get jumbled in the character creation after clicking the up arrow (the one for haircolor).

64K hairstyles changes the order of hairstyles 1-12, so you have to fix up you palettes to continue working properly. In the days of RUNE, there was a hairstyle data pack, that updated the official hairstyles to work properly with this diff, but I wonder if something like this is still available.
allow to rename data.ini? please?

WDGEnableMultipleGRFExtended

that extended damage digits thing is indeed something interesting, I would like to hear what Ai4rei have to say about it tho :P
Everything to be said is here:

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.

And before someone says, max. damage != max. skill damage, the function that takes care of the numbers is shared by both.
  • Upvote 1

Share this post


Link to post
Share on other sites

Im pointing this out since their's been issues on some servers where players could deal more then 32,767 and then not be able to see damage anymore. It was like "Am I hitting my enemy?". Healing does show its display when healing more then 32,767, but doesn't display any higher then that. Do you think its possible to fix those issues?

non-damage skill display capped 32767,it seem to that cause is about packet.

but,i dont know how to modify packet.... /spit

in clif.c , around line: 5026 [clif_skill_nodamage]

WBUFW(buf,4)=min(heal, INT16_MAX);

↑ Probably, max packet that can be sent to client is word byte (~32767).

around line: about 5024,

  /// Non-damaging skill effect (ZC_USE_SKILL).
  /// 011a <skill id>.W <skill lv>.W <dst id>.L <src id>.L <result>.B

<skill lv>.W ← this item seems to store "amount of recovery(≒non-damage)" as well as skill lv.

(it might be that irrelevant reply)

Edited by pnew

Share this post


Link to post
Share on other sites

DeePee:

Can you test, if the following hex (316 bytes) solves your issue?

F: 6AFF68AB43730064A1000000005081ECC4000000A160927D0033C4898424C0000000535657A160927D0033C4508D8424D400000064A3000000008BBC24E80000008B9C24E400000057538D442420508BF1E88AFDFFFFC78424DC00000000000000837C24200066899ECC0000000F84880000000FBF8ECA0000008D47EF99F7F9C74424102A0000000FAFC883C10481FB18010000894C24147C08C7442410410100008D4C2414518D542414528BCEE81DC106008D842490000000508D4C241CC744241C14000000E8F4920B008B3594C47C008D4C241851B998FF8700E84FFD23008B542414508B44241452508D8C249C000000518BCEE815A10A00C78424DC000000FFFFFFFF8D4C2418E8215BFBFF8B8C24D400000064890D00000000595F5E5B8B8C24C000000033CCE81936280081C4D0000000C20800
R: 6AFF68AB43730064A1000000005081ECC4400000A160927D0033C4898424C0400000535657A160927D0033C4508D8424D440000064A3000000008BBC24E84000008B9C24E440000057538D442420508BF1E88AFDFFFFC78424DC40000000000000837C24200066899ECC0000000F84880000000FBF8ECA0000008D47EF99F7F9C74424102A0000000FAFC883C10481FB18010000894C24147C08C7442410410100008D4C2414518D542414528BCEE81DC106008D842490000000508D4C241CC744241C14000000E8F4920B008B3594C47C008D4C241851B998FF8700E84FFD23008B542414508B44241452508D8C249C000000518BCEE815A10A00C78424DC400000FFFFFFFF8D4C2418E8215BFBFF8B8C24D440000064890D00000000595F5E5B8B8C24C040000033CCE81936280081C4D0400000C20800

Basically it increases the stack of the crashing function, but since there is no stack frame, writing a plug-in for this is rather painful.

I will give it a try tomorrow. Thanks for your efforts :)

As for the ones having problems with official hairstyle palettes, give this a shot: http://rathena.org/board/topic/53500-dl-fixed-hairstyle-order-for-latest-clients/

Edited by DeePee

Share this post


Link to post
Share on other sites

Everything to be said is here:

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.

I feel really dumb! I don't understand this... so we hex this into the client ourselves?

Share this post


Link to post
Share on other sites

I tested the crash fix and it did the trick! No more crashing whatsoever.

It still gives a bit of a wonky pickup message, like when you drop it and pick it up, but that's just a visual thing so not important.

On a sidenote, I have a small suggestion. Not that important but I think people might like it if it would be made available. Related to this topic: http://rathena.org/board/topic/72392-applying-clouds-to-custom-maps/

I recall years ago someone had a tool to actually add clouds to new maps instead of replacing existing maps and doing it that way. If there is any way at all to make something like this happen again, I think quite some people would like that. No rush or priority at all, just a suggestion for the future :)

Share this post


Link to post
Share on other sites

non-damage skill display capped 32767,it seem to that cause is about packet.

but,i dont know how to modify packet.... /spit

in clif.c , around line: 5026 [clif_skill_nodamage]

WBUFW(buf,4)=min(heal, INT16_MAX);

↑ Probably, max packet that can be sent to client is word byte (~32767).

around line: about 5024,

  /// Non-damaging skill effect (ZC_USE_SKILL).
  /// 011a <skill id>.W <skill lv>.W <dst id>.L <src id>.L <result>.B

<skill lv>.W ← this item seems to store "amount of recovery(≒non-damage)" as well as skill lv.

(it might be that irrelevant reply)

Just tested. I tried changing it to INT_MAX to see if itl display higher then 32,767 and upon healing more then that the client would show 0.

Share this post


Link to post
Share on other sites

Any means of getting the extended headgear view ID to work with the June 2011 clients?

Share this post


Link to post
Share on other sites

@Rytech

@Vach

oh,thanks for your replies!

i think that few people are interested in it, and its minor,hahaha /oh

It displays like this.(2012-05-25a)

[media=]

[/media]

note:

I'd like to customize only to "replace" as possible.

but,i couldn't find a free space for extended digits on the stack.

for now,i stored it on global variable area....

(in progress)

Minor? Just minor? Dude my jaw dropped when I saw the pic in hopes it was real. Watching your video made my jaw drop again. To see skill damage go past the 999k limit is like a major break through in client customizing and a beautiful sight to see. To low and mid rate server's its pointless, but when looking at high rates, it starts to become necessary depending on the setup. And when looking at super high rate server's it would be a major need. I started wondering if its possible to also increase the damage shown by regular attacks. It might be tricky or impossible since its likely coded in a signed 16-bit, making it show up to 32,767 and then just not appear at all when higher damage is done. Skill damage display is a 32-bit unsigned if im correct, right? Im trying to remember.

Im pointing this out since their's been issues on some servers where players could deal more then 32,767 and then not be able to see damage anymore. It was like "Am I hitting my enemy?". Healing does show its display when healing more then 32,767, but doesn't display any higher then that. Do you think its possible to fix those issues?

I didn't have problems modifying up to 8 digits for damage. The 9th digit wouldn't show up, so I had to use Olly to find some empty spot on the stack to use for the 9th digit. It was a workaround, but when you're dealing with a closed-source client, I guess you can't really be picky.

Healing?

e98dhu.jpg

^Like that?

Healing follows a different packet so you need to adjust the packet size not only in clif.c/.h (and other server side locations I'm forgetting), but also in the client itself.

I wish I could remember everything I had to edit, but I was too excited at actually getting everything working to note it all down. You're welcome to mess around with my server's client if it'll help you guys figure things out though. I'm not very good at explaining things.

Edit:

This was possible on a client from June of last year, so though I'm like 90% sure it's still possible on newer clients, there's the possibility that something fundamental changed (but I doubt it).

Edited by Variant

Share this post


Link to post
Share on other sites

@Rytech

@Vach

oh,thanks for your replies!

i think that few people are interested in it, and its minor,hahaha /oh

It displays like this.(2012-05-25a)

[media=]

[/media]

note:

I'd like to customize only to "replace" as possible.

but,i couldn't find a free space for extended digits on the stack.

for now,i stored it on global variable area....

(in progress)

Minor? Just minor? Dude my jaw dropped when I saw the pic in hopes it was real. Watching your video made my jaw drop again. To see skill damage go past the 999k limit is like a major break through in client customizing and a beautiful sight to see. To low and mid rate server's its pointless, but when looking at high rates, it starts to become necessary depending on the setup. And when looking at super high rate server's it would be a major need. I started wondering if its possible to also increase the damage shown by regular attacks. It might be tricky or impossible since its likely coded in a signed 16-bit, making it show up to 32,767 and then just not appear at all when higher damage is done. Skill damage display is a 32-bit unsigned if im correct, right? Im trying to remember.

Im pointing this out since their's been issues on some servers where players could deal more then 32,767 and then not be able to see damage anymore. It was like "Am I hitting my enemy?". Healing does show its display when healing more then 32,767, but doesn't display any higher then that. Do you think its possible to fix those issues?

I didn't have problems modifying up to 8 digits for damage. The 9th digit wouldn't show up, so I had to use Olly to find some empty spot on the stack to use for the 9th digit. It was a workaround, but when you're dealing with a closed-source client, I guess you can't really be picky.

Healing?

e98dhu.jpg

^Like that?

Healing follows a different packet so you need to adjust the packet size not only in clif.c/.h (and other server side locations I'm forgetting), but also in the client itself.

I wish I could remember everything I had to edit, but I was too excited at actually getting everything working to note it all down. You're welcome to mess around with my server's client if it'll help you guys figure things out though. I'm not very good at explaining things.

Edit:

This was possible on a client from June of last year, so though I'm like 90% sure it's still possible on newer clients, there's the possibility that something fundamental changed (but I doubt it).

Oh great. How this hex

Share this post


Link to post
Share on other sites

I recently did a test with clients and found out one thing, 2010 client the character is completely without delay, loose the Thunder skill jupiter super fast, 2011 + clients, already seems to have a fixed delay that skill only goes up to a certain limit, anyone know how to fix this?

Edited by Beret

Share this post


Link to post
Share on other sites

What do you mean by skills going up to a certain limit? Their max levels?

Share this post


Link to post
Share on other sites

I recently did a test with clients and found out one thing, 2010 client the character is completely without delay, loose the Thunder skill jupiter super fast, 2011 + clients, already seems to have a fixed delay that skill only goes up to a certain limit, anyone know how to fix this?

Laniency setting on conf/battle/skill.conf ?

Edited by M45T3R

Share this post


Link to post
Share on other sites

Just tested. I tried changing it to INT_MAX to see if itl display higher then 32,767 and upon healing more then that the client would show 0.

oh...i cant find the place recieved packet 0x011a in client...

as Variant said, i think that for display than 32767,

there need to adjust packet size to Dword(short -> int) not only server side but also client side.

or to use other packet.

Healing follows a different packet so you need to adjust the packet size not only in clif.c/.h (and other server side locations I'm forgetting), but also in the client itself.

great!! thanks for your valuable information.

i'll try to use packet[0x0284] in conjunction with 0x011a.

(perhaps,its outlandish way, hehe)

screenshot in progress:

29en4mh.jpg

NOTE:

sorry for my poor C/C++ (&asm) skill,i cant create plug-in DLL....

so,i think that my post may be wrong for this topic.

and should be posted in other section.. /hmm .

its difficult for me to express assemble...

i'll study more.

Edited by pnew
  • Upvote 1

Share this post


Link to post
Share on other sites

We have three people knowing (to some extent) how to expand heal/dmg to 9 digits, each of them holding some pieces of the puzzle, great.

  • Upvote 4

Share this post


Link to post
Share on other sites

I recently did a test with clients and found out one thing, 2010 client the character is completely without delay, loose the Thunder skill jupiter super fast, 2011 + clients, already seems to have a fixed delay that skill only goes up to a certain limit, anyone know how to fix this?

Laniency setting on conf/battle/skill.conf ?

Has nothing to do as said only occurs in 2011 + client, 2010 client works perfectly.

Share this post


Link to post
Share on other sites

great!! thanks for your valuable information.

i'll try to use packet[0x0284] in conjunction with 0x011a.

(perhaps,its outlandish way, hehe)

Wait, why packet 0x0284? To use it as a special effect-type thing? That seems overly complicated. If I recall, you can just use Olly to search for switches and find the case for 0x11A and adjust the size of the packet. All you really need to do is set the size of heal up to 4 bytes instead of the 2 (?) it's at. Something similar to:

PUSH 0x11A

PUSH X ;X = packet size

is what I remember it being.

Also packet 0x13D, which I think has to deal with regen? Increase the size of this packet by two also and you're good.

I recently did a test with clients and found out one thing, 2010 client the character is completely without delay, loose the Thunder skill jupiter super fast, 2011 + clients, already seems to have a fixed delay that skill only goes up to a certain limit, anyone know how to fix this?

Laniency setting on conf/battle/skill.conf ?

Has nothing to do as said only occurs in 2011 + client, 2010 client works perfectly.

You're talking about the click delay after using a skill, right? I've had the same issue. I was talking to Ai4rei about it before, and I managed to pinpoint a lot of the functions used for skill effects. Ultimately I managed to figure out how to remove the skill effects from happening altogether, but even then the delay still existed. Which then led me to believe that there's an internal timer or something that's forcing a delay. I'm still searching for it, does anyone have any ideas on what's causing the delay if not an internal timer?

Edited by Variant

Share this post


Link to post
Share on other sites

I'm sorry, but I haven't heard about that 'click delay' issue, how can I reproduce it? Does that mean I can't move my char after using a skill?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.