it is also a nice failsafe in case you missed something and a bug like this still exists
in InitPlayerData
look for
Code: Select all
if (m_pClientList[iClientH] == NULL) {
wsprintf(cTxt, "<%d> InitPlayerData error - Socket error! Disconnected.", iClientH);
PutLogList(cTxt);
return;
}
Code: Select all
if (m_pClientList[iClientH]->m_iStr > m_sCharStatLimit) { //XenX restore if you go above max stats
m_pClientList[iClientH]->m_iStr = m_sCharStatLimit;
}
if (m_pClientList[iClientH]->m_iVit > m_sCharStatLimit) { //XenX restore if you go above max stats
m_pClientList[iClientH]->m_iVit = m_sCharStatLimit;
}
if (m_pClientList[iClientH]->m_iDex > m_sCharStatLimit) { //XenX restore if you go above max stats
m_pClientList[iClientH]->m_iDex = m_sCharStatLimit;
}
if (m_pClientList[iClientH]->m_iMag > m_sCharStatLimit) { //XenX restore if you go above max stats
m_pClientList[iClientH]->m_iMag = m_sCharStatLimit;
}
if (m_pClientList[iClientH]->m_iInt > m_sCharStatLimit) { //XenX restore if you go above max stats
m_pClientList[iClientH]->m_iInt = m_sCharStatLimit;
}
if (m_pClientList[iClientH]->m_iCharisma >m_sCharStatLimit) { //XenX restore if you go above max stats
m_pClientList[iClientH]->m_iCharisma = m_sCharStatLimit;
}
if (m_pClientList[iClientH]->m_iAdminUserLevel < 1){ //added by XenX code to restore character after going over max level
if (m_pClientList[iClientH]->m_iLevel > m_iPlayerMaxLevel) {
m_pClientList[iClientH]->m_iLevel = m_iPlayerMaxLevel;
}
}
if (m_pClientList[iClientH]->m_iAdminUserLevel < 1){
if (m_pClientList[iClientH]->m_iExp > m_iLevelExpTable[m_iPlayerMaxLevel+1]) {
m_pClientList[iClientH]->m_iExp = m_iLevelExpTable[m_iPlayerMaxLevel];
}
}
nice huh

oh PS. this will not affect getting magestic points per level above max, however it will mean that instead of getting the next level exp you just need max level +1 exp for each majestic, i dont think i can fix that but if u want u dont need the max exp one.