All pastes #1754536 Raw Edit

Stuff

public diff v1 · immutable
#1754536 ·published 2010-01-17 10:28 UTC
rendered paste body
diff --git a/sql/characters.sql b/sql/characters.sqlindex bbc42f8..b0028cc 100644--- a/sql/characters.sql+++ b/sql/characters.sql@@ -231,7 +231,25 @@ CREATE TABLE `characters` (   `zone` int(11) unsigned NOT NULL default '0',   `death_expire_time` bigint(20) unsigned NOT NULL default '0',   `taxi_path` text,-  `arena_pending_points` int(10) UNSIGNED NOT NULL default '0',+  `arenaPoints` int(10) UNSIGNED NOT NULL default '0',+  `totalHonorPoints` int(10) UNSIGNED NOT NULL default '0',+  `todayHonorPoints` int(10) UNSIGNED NOT NULL default '0',+  `yesterdayHonorPoints` int(10) UNSIGNED NOT NULL default '0',+  `totalKills` int(10) UNSIGNED NOT NULL default '0',+  `todayKills` smallint(5) UNSIGNED NOT NULL default '0',+  `yesterdayKills` smallint(5) UNSIGNED NOT NULL default '0',+  `chosenTitle` int(10) UNSIGNED NOT NULL default '0',+  `knownCurrencies` bigint(20) UNSIGNED NOT NULL default '0',+  `watchedFaction` int(10) UNSIGNED NOT NULL default '0',+  `drunk` smallint(5) UNSIGNED NOT NULL default '0',+  `health` int(10) UNSIGNED NOT NULL default '0',+  `power1` int(10) UNSIGNED NOT NULL default '0',+  `power2` int(10) UNSIGNED NOT NULL default '0',+  `power3` int(10) UNSIGNED NOT NULL default '0',+  `power4` int(10) UNSIGNED NOT NULL default '0',+  `power5` int(10) UNSIGNED NOT NULL default '0',+  `power6` int(10) UNSIGNED NOT NULL default '0',+  `power7` int(10) UNSIGNED NOT NULL default '0',   PRIMARY KEY  (`guid`),   KEY `idx_account` (`account`),   KEY `idx_online` (`online`),diff --git a/src/game/BattleGroundMgr.cpp b/src/game/BattleGroundMgr.cppindex 44014c4..c3c642e 100644--- a/src/game/BattleGroundMgr.cpp+++ b/src/game/BattleGroundMgr.cpp@@ -1840,7 +1840,7 @@ void BattleGroundMgr::DistributeArenaPoints()     for (std::map<uint32, uint32>::iterator plr_itr = PlayerPoints.begin(); plr_itr != PlayerPoints.end(); ++plr_itr)     {         //update to database-        CharacterDatabase.PExecute("UPDATE characters SET arena_pending_points = '%u' WHERE guid = '%u'", plr_itr->second, plr_itr->first);+        CharacterDatabase.PExecute("UPDATE characters SET arenaPoints = arenaPoints + '%u' WHERE guid = '%u'", plr_itr->second, plr_itr->first);         //add points if player is online         Player* pl = sObjectMgr.GetPlayer(plr_itr->first);         if (pl)diff --git a/src/game/CharacterHandler.cpp b/src/game/CharacterHandler.cppindex 7e24175..f6f4862 100644--- a/src/game/CharacterHandler.cpp+++ b/src/game/CharacterHandler.cpp@@ -60,7 +60,11 @@ bool LoginQueryHolder::Initialize()      // NOTE: all fields in `characters` must be read to prevent lost character data at next save in case wrong DB structure.     // !!! NOTE: including unused `zone`,`online`-    res &= SetPQuery(PLAYER_LOGIN_QUERY_LOADFROM,            "SELECT guid, account, data, name, race, class, gender, level, xp, money, playerBytes, playerBytes2, playerFlags, position_x, position_y, position_z, map, orientation, taximask, cinematic, totaltime, leveltime, rest_bonus, logout_time, is_logout_resting, resettalents_cost, resettalents_time, trans_x, trans_y, trans_z, trans_o, transguid, extra_flags, stable_slots, at_login, zone, online, death_expire_time, taxi_path, dungeon_difficulty, arena_pending_points FROM characters WHERE guid = '%u'", GUID_LOPART(m_guid));+    res &= SetPQuery(PLAYER_LOGIN_QUERY_LOADFROM,            "SELECT guid, account, data, name, race, class, gender, level, xp, money, playerBytes, playerBytes2, playerFlags,"+        "position_x, position_y, position_z, map, orientation, taximask, cinematic, totaltime, leveltime, rest_bonus, logout_time, is_logout_resting, resettalents_cost,"+        "resettalents_time, trans_x, trans_y, trans_z, trans_o, transguid, extra_flags, stable_slots, at_login, zone, online, death_expire_time, taxi_path, dungeon_difficulty,"+        "arenaPoints, totalHonorPoints, todayHonorPoints, yesterdayHonorPoints, totalKills, todayKills, yesterdayKills, chosenTitle, knownCurrencies, watchedFaction, drunk,"+        "health, power1, power2, power3, power4, power5, power6, power7 FROM characters WHERE guid = '%u'", GUID_LOPART(m_guid));     res &= SetPQuery(PLAYER_LOGIN_QUERY_LOADGROUP,           "SELECT leaderGuid FROM group_member WHERE memberGuid ='%u'", GUID_LOPART(m_guid));     res &= SetPQuery(PLAYER_LOGIN_QUERY_LOADBOUNDINSTANCES,  "SELECT id, permanent, map, difficulty, resettime FROM character_instance LEFT JOIN instance ON instance = id WHERE guid = '%u'", GUID_LOPART(m_guid));     res &= SetPQuery(PLAYER_LOGIN_QUERY_LOADAURAS,           "SELECT caster_guid,spell,effect_index,stackcount,amount,maxduration,remaintime,remaincharges FROM character_aura WHERE guid = '%u'", GUID_LOPART(m_guid));diff --git a/src/game/Player.cpp b/src/game/Player.cppindex f07b4e8..61c16dc 100644--- a/src/game/Player.cpp+++ b/src/game/Player.cpp@@ -14130,8 +14130,16 @@ float Player::GetFloatValueFromDB(uint16 index, uint64 guid)  bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder ) {-    ////                                                     0     1        2     3     4     5      6       7      8   9      10           11            12           13          14          15          16   17           18        19         20         21         22          23           24                 25                 26                 27       28       29       30       31         32           33            34        35    36      37                 38         39                  40-    //QueryResult *result = CharacterDatabase.PQuery("SELECT guid, account, data, name, race, class, gender, level, xp, money, playerBytes, playerBytes2, playerFlags, position_x, position_y, position_z, map, orientation, taximask, cinematic, totaltime, leveltime, rest_bonus, logout_time, is_logout_resting, resettalents_cost, resettalents_time, trans_x, trans_y, trans_z, trans_o, transguid, extra_flags, stable_slots, at_login, zone, online, death_expire_time, taxi_path, dungeon_difficulty, arena_pending_points FROM characters WHERE guid = '%u'", guid);+    //       0     1        2     3     4     5      6       7      8   9      10           11            12+    //SELECT guid, account, data, name, race, class, gender, level, xp, money, playerBytes, playerBytes2, playerFlags,"+    // 13          14          15          16   17           18        19         20         21         22          23           24                 25+    //"position_x, position_y, position_z, map, orientation, taximask, cinematic, totaltime, leveltime, rest_bonus, logout_time, is_logout_resting, resettalents_cost,"+    // 26                 27       28       29       30       31         32           33            34        35    36      37                 38         39+    //"resettalents_time, trans_x, trans_y, trans_z, trans_o, transguid, extra_flags, stable_slots, at_login, zone, online, death_expire_time, taxi_path, dungeon_difficulty,"+    // 40           41                42                43                    44          45          46              47           48               49              50+    //"arenaPoints, totalHonorPoints, todayHonorPoints, yesterdayHonorPoints, totalKills, todayKills, yesterdayKills, chosenTitle, knownCurrencies, watchedFaction, drunk,"+    // 51      52      53      54      55      56      57      58+    //"health, power1, power2, power3, power4, power5, power6, power7 FROM characters WHERE guid = '%u'", GUID_LOPART(m_guid));     QueryResult *result = holder->GetResult(PLAYER_LOGIN_QUERY_LOADFROM);      if(!result)@@ -14185,11 +14193,19 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder )      SetUInt32Value(UNIT_FIELD_LEVEL, fields[7].GetUInt8());     SetUInt32Value(PLAYER_XP, fields[8].GetUInt32());-    SetUInt32Value(PLAYER_FIELD_COINAGE, fields[9].GetUInt32());++    uint32 money = fields[9].GetUInt32();+    if(money > MAX_MONEY_AMOUNT)+        money = MAX_MONEY_AMOUNT;+    SetMoney(money);+     SetUInt32Value(PLAYER_BYTES, fields[10].GetUInt32());     SetUInt32Value(PLAYER_BYTES_2, fields[11].GetUInt32());-    SetUInt32Value(PLAYER_BYTES_3, (GetUInt32Value(PLAYER_BYTES_3) & ~1) | fields[6].GetUInt8());+    SetUInt32Value(PLAYER_BYTES_3, (fields[50].GetUInt16() & 0xFFFE) | fields[6].GetUInt8());     SetUInt32Value(PLAYER_FLAGS, fields[12].GetUInt32());+    SetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, fields[49].GetUInt32());+    SetUInt64Value(PLAYER_FIELD_KNOWN_CURRENCIES, fields[48].GetUInt64());+      InitDisplayIds(); @@ -14206,10 +14222,6 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder )         }     } -    // update money limits-    if(GetMoney() > MAX_MONEY_AMOUNT)-        SetMoney(MAX_MONEY_AMOUNT);-     sLog.outDebug("Load Basic value of player %s is: ", m_name.c_str());     outDebugValues(); @@ -14241,7 +14253,7 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder )      _LoadArenaTeamInfo(holder->GetResult(PLAYER_LOGIN_QUERY_LOADARENAINFO)); -    uint32 arena_currency = GetUInt32Value(PLAYER_FIELD_ARENA_CURRENCY) + fields[40].GetUInt32();+    uint32 arena_currency = GetUInt32Value(fields[40].GetUInt32());     if (arena_currency > sWorld.getConfig(CONFIG_MAX_ARENA_POINTS))         arena_currency = sWorld.getConfig(CONFIG_MAX_ARENA_POINTS); @@ -14263,6 +14275,13 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder )             SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (arena_slot * ARENA_TEAM_END) + j, 0);     } +    SetUInt32Value(PLAYER_FIELD_HONOR_CURRENCY, fields[41].GetUInt32());+    SetUInt32Value(PLAYER_FIELD_TODAY_CONTRIBUTION, fields[42].GetUInt32());+    SetUInt32Value(PLAYER_FIELD_YESTERDAY_CONTRIBUTION, fields[43].GetUInt32());+    SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORBALE_KILLS, fields[44].GetUInt32());+    SetUInt16Value(PLAYER_FIELD_KILLS, 0, fields[45].GetUInt16());+    SetUInt16Value(PLAYER_FIELD_KILLS, 1, fields[46].GetUInt16());+     _LoadBoundInstances(holder->GetResult(PLAYER_LOGIN_QUERY_LOADBOUNDINSTANCES));      if(!IsPositionValid())@@ -14517,12 +14536,6 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder )     SetUInt64Value(PLAYER_DUEL_ARBITER, 0);     SetUInt32Value(PLAYER_DUEL_TEAM, 0); -    // remember loaded power/health values to restore after stats initialization and modifier applying-    uint32 savedHealth = GetHealth();-    uint32 savedPower[MAX_POWERS];-    for(uint32 i = 0; i < MAX_POWERS; ++i)-        savedPower[i] = GetPower(Powers(i));-     // reset stats before loading any modifiers     InitStatsForLevel();     InitTaxiNodesForLevel();@@ -14568,10 +14581,12 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder )      // check PLAYER_CHOSEN_TITLE compatibility with PLAYER__FIELD_KNOWN_TITLES     // note: PLAYER__FIELD_KNOWN_TITLES updated at quest status loaded-    if(uint32 curTitle = GetUInt32Value(PLAYER_CHOSEN_TITLE))+    if(uint32 curTitle = fields[10].GetUInt32())     {         if(!HasTitle(curTitle))-            SetUInt32Value(PLAYER_CHOSEN_TITLE, 0);+            curTitle = 0;++        SetUInt32Value(PLAYER_CHOSEN_TITLE, curTitle);     }      // Not finish taxi flight path@@ -14636,9 +14651,9 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder )     UpdateAllStats();      // restore remembered power/health values (but not more max values)-    SetHealth(savedHealth > GetMaxHealth() ? GetMaxHealth() : savedHealth);+    SetHealth(fields[51].GetUInt32() > GetMaxHealth() ? GetMaxHealth() : fields[51].GetUInt32());     for(uint32 i = 0; i < MAX_POWERS; ++i)-        SetPower(Powers(i),savedPower[i] > GetMaxPower(Powers(i)) ? GetMaxPower(Powers(i)) : savedPower[i]);+        SetPower(Powers(i),fields[52+i].GetUInt32() > GetMaxPower(Powers(i)) ? GetMaxPower(Powers(i)) : fields[52+i].GetUInt32());      sLog.outDebug("The value of player %s after load item and aura is: ", m_name.c_str());     outDebugValues();@@ -15677,7 +15692,9 @@ void Player::SaveToDB()         "taximask, online, cinematic, "         "totaltime, leveltime, rest_bonus, logout_time, is_logout_resting, resettalents_cost, resettalents_time, "         "trans_x, trans_y, trans_z, trans_o, transguid, extra_flags, stable_slots, at_login, zone, "-        "death_expire_time, taxi_path, arena_pending_points) VALUES ("+        "death_expire_time, taxi_path, arenaPoints, totalHonorPoints, todayHonorPoints, yesterdayHonorPoints, totalKills, "+        "todayKills, yesterdayKills, chosenTitle, knownCurrencies, watchedFaction, drunk, health, power1, power2, power3, "+        "power4, power5, power6, power7) VALUES ("         << GetGUIDLow() << ", "         << GetSession()->GetAccountId() << ", '"         << sql_name << "', "@@ -15756,7 +15773,34 @@ void Player::SaveToDB()     ss << (uint64)m_deathExpireTime << ", '";      ss << m_taxi.SaveTaxiDestinationsToString() << "', ";-    ss << "'0' ";                                           // arena_pending_points++    ss << GetArenaPoints() << ", ";++    ss << GetHonorPoints() << ", ";++    ss << GetUInt32Value(PLAYER_FIELD_TODAY_CONTRIBUTION)  << ", ";++    ss << GetUInt32Value(PLAYER_FIELD_YESTERDAY_CONTRIBUTION) << ", ";++    ss << GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORBALE_KILLS) << ", ";++    ss << GetUInt16Value(PLAYER_FIELD_KILLS, 0) << ", ";++    ss << GetUInt16Value(PLAYER_FIELD_KILLS, 1) << ", ";++    ss << GetUInt32Value(PLAYER_CHOSEN_TITLE) << ", ";++    ss << GetUInt64Value(PLAYER_FIELD_KNOWN_CURRENCIES) << ", ";++    ss << GetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX) << ", ";++    ss << (uint16)(GetUInt32Value(PLAYER_BYTES_3) & 0xFFFE) << ", ";++    ss << GetHealth();++    for(uint32 i = 0; i < MAX_POWERS; ++i)+        ss << "," << GetPower(Powers(i));+     ss << ")";      CharacterDatabase.Execute( ss.str().c_str() );