Hello I got a fix working on XXLDDRace64.
go game/server/memberlist.cpp
void CMemberList::Register(int ClientID, const char* pPass, CGameContext *pSelf)
{
CPlayerMember *pPlayer = SearchList(ClientID, 0);
char aBuf[256];
if (!pPlayer)
{
SaveList(ClientID, md5(pPass).c_str(), pSelf, false);
str_format(aBuf, sizeof(aBuf), "Registration successful.");
}
else
{
if (pSelf->m_apPlayers[ClientID]->m_IsLoggedIn)
{
UpdatePlayer(ClientID, md5(pPass).c_str(), pSelf->m_apPlayers[ClientID]->m_Authed);
str_format(aBuf, sizeof(aBuf), "Password changed.");
}
else
str_format(aBuf, sizeof(aBuf), "%s is already a registered name.", pSelf->Server()->ClientName(ClientID));
}
pSelf->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "member", aBuf);
}
change
UpdatePlayer(ClientID, md5(pPass).c_str(), pSelf->m_apPlayers[ClientID]->m_Authed);
to
UpdatePlayer(ClientID, md5(pPass).c_str(), pPlayer->m_AuthLvl);
I don't know why author used m_apPlayers arrary but it seems to not set m_Authed which default is 0, and it's member level.
-1 == player
0 == member
1 == helper
2 == mod
3 == admin
4 == head admin