mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 13:37:05 +00:00
[7092] Work vs XP per level data
Add new table "player_xp_for_level" for this Fill table data 1-79 level Remove old code Signed-off-by: DiSlord <dislord@nomail.com>
This commit is contained in:
parent
7cded2ed9c
commit
014ab283dd
12 changed files with 273 additions and 74 deletions
|
|
@ -2559,6 +2559,67 @@ void ObjectMgr::LoadPlayerInfo()
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Loading xp per level data
|
||||
{
|
||||
mPlayerXPperLevel.resize(sWorld.getConfig(CONFIG_MAX_PLAYER_LEVEL));
|
||||
for (uint32 level = 0; level < sWorld.getConfig(CONFIG_MAX_PLAYER_LEVEL); ++level)
|
||||
mPlayerXPperLevel[level] = 0;
|
||||
|
||||
// 0 1
|
||||
QueryResult *result = WorldDatabase.Query("SELECT lvl, xp_for_next_level FROM player_xp_for_level");
|
||||
|
||||
uint32 count = 0;
|
||||
|
||||
if (!result)
|
||||
{
|
||||
barGoLink bar( 1 );
|
||||
|
||||
sLog.outString();
|
||||
sLog.outString( ">> Loaded %u xp for level definitions", count );
|
||||
sLog.outErrorDb( "Error loading `player_xp_for_level` table or empty table.");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
barGoLink bar( result->GetRowCount() );
|
||||
|
||||
do
|
||||
{
|
||||
Field* fields = result->Fetch();
|
||||
|
||||
uint32 current_level = fields[0].GetUInt32();
|
||||
uint32 current_xp = fields[1].GetUInt32();
|
||||
|
||||
if(current_level >= sWorld.getConfig(CONFIG_MAX_PLAYER_LEVEL))
|
||||
{
|
||||
if(current_level > STRONG_MAX_LEVEL) // hardcoded level maximum
|
||||
sLog.outErrorDb("Wrong (> %u) level %u in `player_xp_for_level` table, ignoring.", STRONG_MAX_LEVEL,current_level);
|
||||
else
|
||||
sLog.outDetail("Unused (> MaxPlayerLevel in mangosd.conf) level %u in `player_xp_for_levels` table, ignoring.",current_level);
|
||||
continue;
|
||||
}
|
||||
//PlayerXPperLevel
|
||||
mPlayerXPperLevel[current_level] = current_xp;
|
||||
bar.step();
|
||||
++count;
|
||||
}
|
||||
while (result->NextRow());
|
||||
|
||||
delete result;
|
||||
|
||||
sLog.outString();
|
||||
sLog.outString( ">> Loaded %u xp for level definitions", count );
|
||||
}
|
||||
|
||||
// fill level gaps
|
||||
for (uint32 level = 1; level < sWorld.getConfig(CONFIG_MAX_PLAYER_LEVEL); ++level)
|
||||
{
|
||||
if( mPlayerXPperLevel[level] == 0)
|
||||
{
|
||||
sLog.outErrorDb("Level %i does not have XP for level data. Using data of level [%i] + 100.",level+1, level);
|
||||
mPlayerXPperLevel[level] = mPlayerXPperLevel[level-1]+100;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectMgr::GetPlayerClassLevelInfo(uint32 class_, uint32 level, PlayerClassLevelInfo* info) const
|
||||
|
|
@ -5714,6 +5775,13 @@ uint32 ObjectMgr::GetBaseXP(uint32 level)
|
|||
return mBaseXPTable[level] ? mBaseXPTable[level] : 0;
|
||||
}
|
||||
|
||||
uint32 ObjectMgr::GetXPForLevel(uint32 level)
|
||||
{
|
||||
if (level < mPlayerXPperLevel.size())
|
||||
return mPlayerXPperLevel[level];
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ObjectMgr::LoadPetNames()
|
||||
{
|
||||
uint32 count = 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue