Skip to content

Client Not In Supported List #4834

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
Caliran opened this issue Apr 2, 2025 · 14 comments
Open

Client Not In Supported List #4834

Caliran opened this issue Apr 2, 2025 · 14 comments

Comments

@Caliran
Copy link

Caliran commented Apr 2, 2025

Ever since a I updated recently I had an issue connecting. I noticed a rule called World:SupportedClients that was blank. I added some clients and I was able to then connect with my titanium fine. I thought I had RoF2 on my desktop but my log is saying SoD+ I added Sod+ to the client list but as seen below It's not connecting.
Image

Image

@joligario
Copy link
Contributor

Look in your rules for world:SupportedClients. You will need to add the clients you wish to support.

@Caliran
Copy link
Author

Caliran commented Apr 2, 2025

As shown in the picture I added SoD+ and it didn't work. It shows the first part of the supported list on the character screen in the characters name. I put it first so it would show in the screenshot.

@Caliran
Copy link
Author

Caliran commented Apr 2, 2025

Can we get an "All" option for those who don't want to restrict? Or at least SoD+ added. After looking at the source code and searching for SupportedClient, I came up with a section in client.cpp that lists the different clients. From what I can see the new code restricts clients to Titanium, SoF, SoD, UF, RoF, and RoF2 (Which is what I intended to download and have been using without issue until now). Unless I'm looking at it wrong.

@joligario
Copy link
Contributor

joligario commented Apr 2, 2025

Titanium,SoF,SoD,UF,RoF,RoF2 is all supported

@Caliran
Copy link
Author

Caliran commented Apr 2, 2025

You are correct sir. I'll either have to find another download for RoF2 that isn't actually SoD+ (which the server should be treating as SoD) or comment out the version check and compile the code myself. I hate compiling because I use spire and like to update with the binaries.

@Caliran
Copy link
Author

Caliran commented Apr 2, 2025

I'll mess with this more later.

Original

bool Client::HandleSendLoginInfoPacket(const EQApplicationPacket *app) {
    auto *r = (LoginInfo *) app->pBuffer;
    m_ClientVersion = static_cast<EQ::versions::ClientVersion>(r->version); // Version from packet

    if (!is_player_zoning) {
        const auto supported_clients = RuleS(World, SupportedClients);
        bool skip_char_info = false;
        const std::string& name = EQ::versions::ClientVersionName(m_ClientVersion);
        // Your server might append "+" here or elsewhere
        // ... rest of the check ...
    }
    // ...
}

Proposed change

bool Client::HandleSendLoginInfoPacket(const EQApplicationPacket *app) {
    auto *r = (LoginInfo_Struct *) app->pBuffer;
    m_ClientVersion = static_cast<EQ::versions::ClientVersion>(r->version); // e.g., SoD = 3

    // Check for custom "SoD+" detection and normalize to SoD
    std::string name = EQ::versions::ClientVersionName(m_ClientVersion);
    if (m_ClientVersion == EQ::versions::ClientVersion::SoD) {
        // Example: If "+" comes from extra data or a custom rule
        std::string extra_data = std::string(reinterpret_cast<char*>(r->unknown064));
        if (extra_data.find("SODPLUS") != std::string::npos || name == "SoD+") { // Adjust condition
            LogDebug("Detected SoD+ client, normalizing to SoD");
            // m_ClientVersion remains SoD, no need to change enum
        }
    }

    if (!is_player_zoning) {
        const auto supported_clients = RuleS(World, SupportedClients);
        bool skip_char_info = false;
        name = EQ::versions::ClientVersionName(m_ClientVersion); // Refresh name
        // Force "SoD+" to "SoD" in name
        if (name == "SoD+") {
            name = "Seeds of Destruction";
        }
        LogDebug("Client identified as [{}]", name);

        // Existing check bypassed
        /*
        if (!supported_clients.empty()) {
            const auto& clients = Strings::Split(supported_clients, ",");
            if (std::find(clients.begin(), clients.end(), name) == clients.end()) {
                SendUnsupportedClientPacket(fmt::format("Client Not In Supported List [{}]", supported_clients));
                skip_char_info = true;
            }
        }
        */
        if (!skip_char_info) {
            SendExpansionInfo();
            SendCharInfo();
            database.LoginIP(cle->AccountID(), long2ip(GetIP()));
        }
    }
    // ...
}

@nytmyr
Copy link
Contributor

nytmyr commented Apr 2, 2025

I posted a short guide on how to acquire RoF2 from Steam on server-share on the EQEmu Discord. Here

I wouldn't recommend anything other than RoF2, Titanium only if you absolutely have to. I'd especially avoid anything between Titanium and RoF2

@Caliran
Copy link
Author

Caliran commented Apr 2, 2025

Thank you! I didn't know it was still available on steam. This will be a big help.

@Caliran
Copy link
Author

Caliran commented Apr 3, 2025

I posted a short guide on how to acquire RoF2 from Steam on server-share on the EQEmu Discord. Here

I wouldn't recommend anything other than RoF2, Titanium only if you absolutely have to. I'd especially avoid anything between Titanium and RoF2

I take that back, I just downloaded that client. And the login server is recognizing it as SoD+ still.

@nytmyr
Copy link
Contributor

nytmyr commented Apr 3, 2025

Do you have spaces after the commas in your rule? The screenshot looks like it does and that's likely why

@Caliran
Copy link
Author

Caliran commented Apr 3, 2025

Do you have spaces after the commas in your rule? The screenshot looks like it does and that's likely why

I'll try it again, I originally did not have spaces but I couldn't connect on my laptop where I had titanium. When i put the spaces it connected. However in my logs its saying theres a new connection from SoD+.. If it said RoF2 and didn't connect I'd say your right. I'm going to try removing the spaces now.

@nytmyr
Copy link
Contributor

nytmyr commented Apr 3, 2025

The SoD+ is a little misleading when in reference to the rule, it looks like based off source it's just telling you a client that's SoD or newer is connecting, not "SoD+" client in particular so you'll still want to specify RoF2

@Caliran
Copy link
Author

Caliran commented Apr 3, 2025

Its really weird. Still says its SoD+ but it looks like its working this time. I'll have to try my laptop in a moment.

@Caliran
Copy link
Author

Caliran commented Apr 3, 2025

Yup, new Titanium client, and its connecting. I appreciate the help. I wish this server rule was pre-populated when it was implemented. Mine at least was blank.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants