Code Monkey home page Code Monkey logo

Comments (2)

wejrox avatar wejrox commented on August 19, 2024

Turns out this was client based restriction that's referenced in an old HeavenMS issue.
I've short circuited the SP check on the client and it's removed the requirement to spend all your points, but it means that the player can spend them on the next job so if you want to have this fixed you'd have to also update the job advancement NPCs (if they aren't already).

To fix the client, I followed the instructions here.

Some details I found along the way:

  • There are 3 popups for having too many skill points remaining, for first second and third job.
  • Each popup is handled by an assembly cmp, so you can swap the outcome from a jl to a jmp to skip the comparison and go straight to the success case.

Process:

  1. Retrieved the ID of the message using STREDIT and searching for Content LIKE '%lacking%'
  2. Located the ID within IDA using a search for immediate value (Alt+i) on the ID and double clicked to go to the usage
  3. Located what called the method in IDA gaph view
  4. Clicked on the JL that lead to that graph block, swapped to text view, copied the memory address
  5. Opened ollydbg, went to the memory address, updated from a JL instruction to JMP
  6. Created a new localhost as a result, and tested it out
  7. Successfully added skills

Notes that lead me to the solution:

# Client popup message (id 3510): You're lacking Level 1 Skills.
___:008AD21A	sub_8ACF1A	push    0DB6h
change jl at location 008AD20C to a jmp

# Client popup message (id 3509): You're lacking Level 1 or 2 Skills.
___:008AD175	sub_8ACF1A	push    0DB5h
change jl at location 008AD163 to a jmp

# Client popup message (id 3511): You are lacking in either 1st, 2nd, or 3rd level skills.
___:008AD0CA	sub_8ACF1A	push    0DB7h
change jl at location 008AD0B8 to a jmp

Graph view before the change:
image

Graph view after the change:
image

Note that the failure cases on the left have no inputs attached to them in the second picture, and those that previously pointed to the the failure function location(s) now bypass them and go straight to their success cases.

I'd offer the exe but without the server updates it is incomplete. I personally am not fussed since my server is for personal use, so I thought it best to post the method instead. If you want the exe let me know.

from cosmic.

Clubbable avatar Clubbable commented on August 19, 2024

Thank you so much for this, I am going to use this to learn how to do client editing, this really helps!

from cosmic.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.