Pifafa
Active Member
- Joined
- Nov 9, 2010
- Messages
- 100
- Reaction score
- 41
In-game progress remains normal. Just the client that no longer works properly.![]()
C++ - Explain Formula level
Greetings OTLanders can someone explain in math this formula and how it works? static uint64_t getExpForLevel(int32_t level) { int64_t x = level; return ((50*x/3 - 100)*x + 850/3)*x - 200; } And how to edit it to reach the maximum level to 1300 for example...otland.net
static uint64_t getExpForLevel(int32_t lv) {
lv--;
return ((50ULL * lv * lv * lv) - (150ULL * lv * lv) + (400ULL * lv)) / 3ULL;
}
if (player->getExperience() >= std::numeric_limits<uint64_t>::max()) {
msg.add<uint64_t>(0);
} else {
msg.add<uint32_t>(static_cast<uint32_t>(player->getExperience()));
}
static uint64_t getExpForLevel(const uint64_t lv)
{
return ((1ULL * lv * lv * lv) - (50ULL * lv * lv) + (1200ULL * lv)) / 3ULL;
}
I changed this to 64 and it works, I go from 639, however the exp number is bugged, but it is counting the level.
LUA:if (player->getExperience() >= std::numeric_limits<uint64_t>::max()) { msg.add<uint64_t>(0); } else { msg.add<uint32_t>(static_cast<uint32_t>(player->getExperience())); }
msg.add<uint64_t>(static_cast<uint64_t>(player->getExperience()));
It doesn't work.It's not bugged, you guys are just coming up with really bad game design and giving people insane levels which it wasn't designed to have.
You need to change it to uint64_t in the else block not just check if the double (experience in this case) is bigger than 18446744073709551615
C++:msg.add<uint64_t>(static_cast<uint64_t>(player->getExperience()));
With this change, would the client be able to read normally?I helped a guy where we managed to get a limit of up to 100k here to substitute into your source code. After that, you'll need to control the stage.xml to know which limit you want per level. If it's a limit of 1000, then make the stages correctly. It should be resolved by now.
C++:static uint64_t getExpForLevel(const uint64_t lv) { return ((1ULL * lv * lv * lv) - (50ULL * lv * lv) + (1200ULL * lv)) / 3ULL; }
The Cip client has a limit of only 65k levels, but it only reads up to the 65k level limit.With this change, would the client be able to read normally?
Yes, it's buggy, now how to solve it I don't know, I'll try something else.I shouldn't have bothered, edubart's otclient looks like this:View attachment 82800
In the SaiyansKing dll it is possible to convert the 8.60 client to receive the 255+ skill information, following this same logic, how could we change the 8.60 client to receive the 64-bit experience?
DLL SaiyansKing:
//Might be usefull if you want to use custom skills system
#ifdef PLAYER_SKILLS_U16
HookCall((client_BaseAddr+0x11FA4), (client_BaseAddr+0xF9C00));
OverWriteByte((client_BaseAddr+0x11FAA), 0xB7);
#endif
Yes, but in version 860 the cipsoft client is still widely used and I need to solve this problem in it too, through the dll.Using OTC will solve all your problems![]()
How do you even mange to edit and fix 8.6 client bro? like for an example can I add mounts in 8.6 cip client?Yes, but in version 860 the cipsoft client is still widely used and I need to solve this problem in it too, through the dll.
Yes, it is possible using DLL Injection.How do you even mange to edit and fix 8.6 client bro? like for an example can I add mounts in 8.6 cip client?