• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Installing OTClient V8 rsa.cpp issue

Tbol

Well-Known Member
Joined
Apr 7, 2019
Messages
526
Reaction score
54
Hello so im trying to install otclient just to test how it would feel, so i downloaded it and logged in to a game but it doesnt show tool, items all skills are -1 and etc stuff, basically getting

ERROR: ProtocolGame parse message exception (41 bytes, 0 unread, last opcode is 0x00 (0), prev opcode is 0x83 (131)): InputMessage eof reached

so i found out that i have to install all of commits they did in github

so im tracking the first one which should solve the issues
so i edited my source and added/removed those codes that says to add or remove but im trying to compile with visual studio and it gives rsa.cpp errors


so the main issue is that my rsa.cpp is completetly different from those commits. There is no
Code:
void RSA::loadPEM(const std::string& filename)
so there is no where i can add the last commit
// fixes "Missing RSA private key footer." error
key.erase(0, key.find_first_not_of(" \t\f\v\n\r"));
key.erase(key.find_last_not_of(" \t\f\v\n\r") + 1);

THIS IS MY RSA.CPP NOW \/ i added that commit in

PLEASE DONT SAY USE NEW TFS OR JUST DOWNLOAD THEIR SRC AND USE IT, IF I COULD DO THAT I WONT CREATE THREAD LIKE THIS, I WANT TO STICK WITH MY OLD SRC WHICH IS 1.2 AND 8.6 CLIENT
 
You only need to force the registration so that the opcodes can be detected side by side.
I for example use a configurable variable from config.lua to force registration:

protocolgame.cpp
void ProtocolGame::login(const std::string& name, uint32_t accountId, OperatingSystem_t operatingSystem, uint32_t accountManager)
C++:
if (operatingSystem >= CLIENTOS_OTCLIENT_LINUX || g_config.getBoolean(ConfigManager::FORCE_REGISTER_EXTENDEDOPCODES)) {
            player->registerCreatureEvent("ExtendedOpcode");
        }

void ProtocolGame::onRecvFirstMessage(NetworkMessage& msg)
C++:
if (operatingSystem >= CLIENTOS_OTCLIENT_LINUX || g_config.getBoolean(ConfigManager::FORCE_REGISTER_EXTENDEDOPCODES)) {
        NetworkMessage opcodeMessage;
        opcodeMessage.addByte(0x32);
        opcodeMessage.addByte(0x00);
        opcodeMessage.add<uint16_t>(0x00);
        writeToOutputBuffer(opcodeMessage);
    }
In your case, you can simply remove the conditionals if (operatingSystem >= CLIENTOS_OTCLIENT_LINUX) { and that way regardless of the operating system the operation code will always be registered
 
You only need to force the registration so that the opcodes can be detected side by side.
I for example use a configurable variable from config.lua to force registration:

protocolgame.cpp
void ProtocolGame::login(const std::string& name, uint32_t accountId, OperatingSystem_t operatingSystem, uint32_t accountManager)
C++:
if (operatingSystem >= CLIENTOS_OTCLIENT_LINUX || g_config.getBoolean(ConfigManager::FORCE_REGISTER_EXTENDEDOPCODES)) {
            player->registerCreatureEvent("ExtendedOpcode");
        }

void ProtocolGame::onRecvFirstMessage(NetworkMessage& msg)
C++:
if (operatingSystem >= CLIENTOS_OTCLIENT_LINUX || g_config.getBoolean(ConfigManager::FORCE_REGISTER_EXTENDEDOPCODES)) {
        NetworkMessage opcodeMessage;
        opcodeMessage.addByte(0x32);
        opcodeMessage.addByte(0x00);
        opcodeMessage.add<uint16_t>(0x00);
        writeToOutputBuffer(opcodeMessage);
    }
In your case, you can simply remove the conditionals if (operatingSystem >= CLIENTOS_OTCLIENT_LINUX) { and that way regardless of the operating system the operation code will always be registered
So basically i can add everything else it says and skip rsa.cpp? Because skipping other parts like in const.h, enums.h, protcolgame.cpp, protocollogin.cpp seems like it will cause issues in the future and they look really important to add
 
So basically i can add everything else it says and skip rsa.cpp? Because skipping other parts like in const.h, enums.h, protcolgame.cpp, protocollogin.cpp seems like it will cause issues in the future and they look really important to add
You should not modify anything, leave everything by default and just delete what I told you in the previous comment

That is what I did in my sources to be able to work with operation codes with OTC, since apparently TFS does not recognize the OTC, and therefore this is a way to do it directly without much problem, although obviously this limits that they cannot use the classic client, I am not sure.
 
You should not modify anything, leave everything by default and just delete what I told you in the previous comment

That is what I did in my sources to be able to work with operation codes with OTC, since apparently TFS does not recognize the OTC, and therefore this is a way to do it directly without much problem, although obviously this limits that they cannot use the classic client, I am not sure.
Hmm? someone told me you're able to use classic client
 
There is no issue with connecting OTCv8 to TFS 1.2 and there is no need to make the edits you mentioned unless you want to use the new OTCv8 features.
But if you are not capable of declaring values, I think the easiest way would be to post on the Jobs board, or straight up hitting OTCv8 discord, there is plenty of people offering help with issues like that, it shouldn't take more than one hour to implement the changes unless your engine is a mess.
 
There is no issue with connecting OTCv8 to TFS 1.2 and there is no need to make the edits you mentioned unless you want to use the new OTCv8 features.
But if you are not capable of declaring values, I think the easiest way would be to post on the Jobs board, or straight up hitting OTCv8 discord, there is plenty of people offering help with issues like that, it shouldn't take more than one hour to implement the changes unless your engine is a mess.
Well i did connected to a otclient but the game wasnt working properly all skills were -1, talkactions wasnt working, items wasnt showing and etc stuff by looking terminal it said

ERROR: ProtocolGame parse message exception (41 bytes, 0 unread, last opcode is 0x00 (0), prev opcode is 0x83 (131)): InputMessage eof reached

so i asked one dude what to do and he said i need to install all of those commits then all of those issues will disappear.

I did asked once but their discord is kinda dead and forum i asked for some help and didnt got answer i even waited for few months and people were just ignoring it. So after like one year i decided to post here because you can get help here quicker. And yea my engine is a mess sorta because its 1.2 downgraded by ninja and not the latest engine.
 
That's not a link to the distribution.

You didn't get any answer because your issue is irreproducible without access to the code, also there is a shitton of 1.2 engines on OTLand, while the vanilla one (last time I checked 8.0 fork) had 0 issues connecting and would not require any changes.

Do you think anyone will waste his time guess-downloading engines just to help a guy that capslocks in a support thread? ;)
Ups i read ur answer incorrectly

Caps? RSA looks better then Rsa so your point is really stupid. Capslocks when entire sentice is with Caps and not just few words. I mean you wasting ur time right now by shit posting, i guess by having more Messages on your profile makes you look coler, right? :)
 
Hello so im trying to install otclient just to test how it would feel, so i downloaded it and logged in to a game but it doesnt show tool, items all skills are -1 and etc stuff, basically getting

ERROR: ProtocolGame parse message exception (41 bytes, 0 unread, last opcode is 0x00 (0), prev opcode is 0x83 (131)): InputMessage eof reached

so i found out that i have to install all of commits they did in github

so im tracking the first one which should solve the issues
so i edited my source and added/removed those codes that says to add or remove but im trying to compile with visual studio and it gives rsa.cpp errors


so the main issue is that my rsa.cpp is completetly different from those commits. There is no
Code:
void RSA::loadPEM(const std::string& filename)
so there is no where i can add the last commit
// fixes "Missing RSA private key footer." error
key.erase(0, key.find_first_not_of(" \t\f\v\n\r"));
key.erase(key.find_last_not_of(" \t\f\v\n\r") + 1);

THIS IS MY RSA.CPP NOW \/ i added that commit in

PLEASE DONT SAY USE NEW TFS OR JUST DOWNLOAD THEIR SRC AND USE IT, IF I COULD DO THAT I WONT CREATE THREAD LIKE THIS, I WANT TO STICK WITH MY OLD SRC WHICH IS 1.2 AND 8.6 CLIENT
did you solve the problem there? me too with the situation
"rsa.cpp"
 
Back
Top