WhatsApp Discord
fix save master skill tree point Sources LGD S16 Repack - Source Mu - Mu Server Files
 

fix save master skill tree point Sources LGD S16 Repack

Publicado por Dakosmu, Mar 27, 2026, 09:04 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Dakosmu

fix save master skill tree point Sources LGD S16 Repack


void Player::LoadDBInfoNew(uint32 charID)
{
QueryResult result = MuDatabase.PQuery(
"SELECT c.guid, c.slot, c.authority, c.race, c.name, "
"c.level, c.level_master, "
"c.experience, c.experience_master, "
"c.points, c.points_master, "
"c.strength, c.agility, c.vitality, c.energy, c.leadership, "
"c.world, c.world_x, c.world_y, c.direction, c.money, "
"c.life, c.mana, c.shield, c.stamina, "
"c.add_fruit_points, c.dec_fruit_points, c.expanded_inventory, "
"c.mute_time, c.admin_flags, c.pk_level, c.pk_count, c.pk_points, c.first_time, "
"c.santa_claus_gift, c.personal_store_name, "
"c.goblin_points, c.kick_time, c.account_id, "
"c.post_count, c.post_day, c.post_month, c.ruud_money, "
"c.level_majestic, c.experience_majestic, c.points_majestic, "
"UNIX_TIMESTAMP(c.create_date), c.hunting_log_visible, c.reset, c.monster_soul_purchase "
"FROM character_info c WHERE c.account_id = %d AND c.guid = %d",
this->GetAccountData()->GetGUID(), charID);

if (!result)
{
this->CloseSocket();
return;
}

FieldReader reader(result->Fetch());

// ===== BASIC =====
this->SetGUID(reader.GetUInt32());
this->SetSlot(reader.GetUInt8());
this->SetAuthority(reader.GetUInt8());
this->SetDBClass(reader.GetUInt8());
this->SetName(reader.GetCString());

// ===== LEVEL =====
this->GetLevelData(LEVEL_DATA_NORMAL)->SetLevel(reader.GetInt16());
this->GetLevelData(LEVEL_DATA_MASTER)->SetLevel(reader.GetInt16());

// ===== EXP =====
this->GetLevelData(LEVEL_DATA_NORMAL)->SetExperience(reader.GetInt64());
this->GetLevelData(LEVEL_DATA_MASTER)->SetExperience(reader.GetInt64());

// ===== POINT =====
this->GetLevelData(LEVEL_DATA_NORMAL)->SetPoints(reader.GetInt32());
this->GetLevelData(LEVEL_DATA_MASTER)->SetPoints(reader.GetInt32());

// ===== STATS =====
for (uint64 i = 0; i < MAX_STAT_TYPE; ++i)
this->SetStat(i, reader.GetInt32());

this->SetWorldId(reader.GetUInt16());
this->SetX(reader.GetInt16());
this->SetY(reader.GetInt16());
this->SetDirection(reader.GetUInt8());
this->MoneySet(reader.GetUInt32());

POWER_LOOP(i)
this->PowerSet(i, reader.GetInt32());

this->SetFruitPointsAdd(reader.GetInt32());
this->SetFruitPointsDec(reader.GetInt32());
this->GetInventory()->SetExpanded(reader.GetUInt8());
this->SetMuteTime(reader.GetInt64());
this->SetAdministratorFlag(reader.GetUInt32());

this->SetPKLevel(reader.GetUInt8());
this->SetPKCount(reader.GetInt32());
this->SetPKPoints(reader.GetInt32());
this->SetFirstTime(reader.GetBool());
this->SetSantaClausGiftDate(reader.GetInt64());

this->GetPersonalStore()->SetName(reader.GetBase64String().c_str());
this->GetPersonalStore()->SetOff(false);

this->SetGoblinPoints(reader.GetUInt32());
this->SetKickTime(reader.GetInt64());

uint32 account_id = reader.GetUInt32();

this->SetPostCount(reader.GetInt32());
this->SetPostDay(reader.GetUInt8());
this->SetPostMonth(reader.GetUInt8());
this->SetRuudMoney(reader.GetUInt32());

// ===== MAJESTIC =====
this->GetLevelData(LEVEL_DATA_MAJESTIC)->SetLevel(reader.GetInt16());
this->GetLevelData(LEVEL_DATA_MAJESTIC)->SetExperience(reader.GetInt64());
this->GetLevelData(LEVEL_DATA_MAJESTIC)->SetPoints(reader.GetInt32());

// ===== CREATE DATE =====
this->SetCreateDate(reader.GetInt64());
this->SetHuntingRecordVisible(reader.GetUInt8() == 1);

// ===== RESET =====
this->GetResetSystem(RESET_TOTAL)->SetReset(reader.GetInt32());
this->SetMonsterSoulPurchase(reader.GetInt8());

// =========================
//  FIX LOGIC MASTER ()
// =========================
if (this->GetLevelData(LEVEL_DATA_MASTER)->GetLevel() <= 0)
{
this->GetLevelData(LEVEL_DATA_MASTER_BAK)->SetLevel(0);
this->GetLevelData(LEVEL_DATA_MASTER_BAK)->SetPoints(0);
}
else
{
this->GetLevelData(LEVEL_DATA_MASTER_BAK)->SetLevel(
this->GetLevelData(LEVEL_DATA_MASTER)->GetLevel()
);

this->GetLevelData(LEVEL_DATA_MASTER_BAK)->SetPoints(
this->GetLevelData(LEVEL_DATA_MASTER)->GetPoints()
);
}

// =========================
//  FIX LOGIC MAJESTIC
// =========================
if (this->GetLevelData(LEVEL_DATA_MASTER)->GetLevel() < 400)
{
this->GetLevelData(LEVEL_DATA_MAJESTIC_BAK)->SetLevel(
this->GetLevelData(LEVEL_DATA_MAJESTIC)->GetLevel()
);

this->GetLevelData(LEVEL_DATA_MAJESTIC_BAK)->SetPoints(
this->GetLevelData(LEVEL_DATA_MAJESTIC)->GetPoints()
);

//  unlock → reset majestic
this->GetLevelData(LEVEL_DATA_MAJESTIC)->SetLevel(0);
this->GetLevelData(LEVEL_DATA_MAJESTIC)->SetExperience(0);
this->GetLevelData(LEVEL_DATA_MAJESTIC)->SetPoints(0);
}

// ===== VALIDATE ACCOUNT =====
if (account_id != this->GetAccountData()->GetGUID())
{
this->CloseSocket();
return;
}

if (this->GetKickTime() <= 0)
{
this->SetKickTime(time(nullptr));
}
}
//

void Player::SaveDBInfo(SQLTransaction& trans)
{
PreparedStatement* stmt = MuDatabase.GetPreparedStatement(CHARACTER_UPDATE_INFO);

stmt->setUInt8(this->GetAuthority());
stmt->setUInt8(this->GetDBClass());
stmt->setString(this->GetName());

stmt->setInt16(this->GetLevelData(LEVEL_DATA_NORMAL)->GetLevel());
if (this->GetLevelData(LEVEL_DATA_NORMAL)->GetLevel() < 400) {
stmt->setInt16(this->GetLevelData(LEVEL_DATA_MASTER_BAK)->GetLevel());
}
else if (this->GetLevelData(LEVEL_DATA_NORMAL)->GetLevel() == 400) {
if (this->GetLevelData(LEVEL_DATA_MASTER_BAK)->GetLevel() == 0) {
stmt->setInt16(this->GetLevelData(LEVEL_DATA_MASTER)->GetLevel());
}
else {
this->GetLevelData(LEVEL_DATA_MASTER)->SetLevel(this->GetLevelData(LEVEL_DATA_MASTER_BAK)->GetLevel());
stmt->setInt16(this->GetLevelData(LEVEL_DATA_MASTER)->GetLevel());
}
}

stmt->setInt64(this->GetLevelData(LEVEL_DATA_NORMAL)->GetExperience());
stmt->setInt64(this->GetLevelData(LEVEL_DATA_MASTER)->GetExperience());
stmt->setInt32(this->GetLevelData(LEVEL_DATA_NORMAL)->GetPoints());

if (this->GetLevelData(LEVEL_DATA_NORMAL)->GetLevel() < 400) {
stmt->setInt16(this->GetLevelData(LEVEL_DATA_MASTER_BAK)->GetPoints());
}
else if (this->GetLevelData(LEVEL_DATA_NORMAL)->GetLevel() == 400) {
if (this->GetLevelData(LEVEL_DATA_MASTER_BAK)->GetLevel() == 0) {
stmt->setInt16(this->GetLevelData(LEVEL_DATA_MASTER)->GetPoints());
}
else {
this->GetLevelData(LEVEL_DATA_MASTER)->SetPoints(this->GetLevelData(LEVEL_DATA_MASTER_BAK)->GetPoints());
stmt->setInt16(this->GetLevelData(LEVEL_DATA_MASTER)->GetPoints());
}
}

for (uint64 i = 0; i < MAX_STAT_TYPE; ++i)
{
stmt->setUInt32(this->GetStat(i));
}

stmt->setUInt16(this->GetWorldId());
stmt->setInt16(this->GetX());
stmt->setInt16(this->GetY());
stmt->setUInt8(this->GetDirection());
stmt->setUInt32(this->MoneyGet());

for (uint8 i = 0; i < POWER_MAX; ++i)
{
stmt->setInt32(this->PowerGet(i));
}

stmt->setInt32(this->GetFruitPointsAdd());
stmt->setInt32(this->GetFruitPointsDec());
stmt->setUInt8(this->GetInventory()->GetExpanded());
stmt->setInt64(this->GetMuteTime());
stmt->setUInt32(this->GetAdministratorFlag());
stmt->setUInt8(this->GetPKLevel());
stmt->setInt32(this->GetPKCount());
stmt->setInt32(this->GetPKPoints());
stmt->setUInt8(this->IsFirstTime());
stmt->setInt64(this->GetSantaClausGiftDate());
stmt->setString(base64::encode((uint8*)this->GetPersonalStore()->GetName(), PERSONAL_STORE_NAME_LENGTH));
stmt->setBool(this->GetPersonalStore()->IsOpen() && this->GetPersonalStore()->IsOff());
stmt->setUInt32(this->GetGoblinPoints());
stmt->setInt64(time(nullptr));
stmt->setInt64(this->GetKickTime());
stmt->setInt32(this->GetPostCount());
stmt->setUInt8(this->GetPostDay());
stmt->setUInt8(this->GetPostMonth());
stmt->setUInt32(this->GetRuudMoney());
if (this->GetLevelData(LEVEL_DATA_NORMAL)->GetLevel() < 400 || this->GetLevelData(LEVEL_DATA_MASTER)->GetLevel() < 400) {
stmt->setInt16(this->GetLevelData(LEVEL_DATA_MAJESTIC)->GetLevel());
stmt->setInt64(this->GetLevelData(LEVEL_DATA_MAJESTIC)->GetExperience());
stmt->setInt32(this->GetLevelData(LEVEL_DATA_MAJESTIC)->GetPoints());
}
else if (this->GetLevelData(LEVEL_DATA_NORMAL)->GetLevel() == 400 && this->GetLevelData(LEVEL_DATA_MASTER)->GetLevel() == 400) {
if (this->GetLevelData(LEVEL_DATA_MAJESTIC_BAK)->GetLevel() == 0) {
stmt->setInt16(this->GetLevelData(LEVEL_DATA_MAJESTIC)->GetLevel());
stmt->setInt64(this->GetLevelData(LEVEL_DATA_MAJESTIC)->GetExperience());
stmt->setInt32(this->GetLevelData(LEVEL_DATA_MAJESTIC)->GetPoints());
}
else if (this->GetLevelData(LEVEL_DATA_MAJESTIC_BAK)->GetLevel() > 0) {
stmt->setInt16(this->GetLevelData(LEVEL_DATA_MAJESTIC_BAK)->GetLevel());
stmt->setInt64(this->GetLevelData(LEVEL_DATA_MAJESTIC)->GetExperience());
stmt->setInt32(this->GetLevelData(LEVEL_DATA_MAJESTIC_BAK)->GetPoints());
}
}

stmt->setUInt8(this->IsHuntingRecordVisible() ? 1 : 0);
stmt->setUInt32(this->GetResetSystem(RESET_TOTAL)->GetReset());
stmt->setUInt8(this->GetMonsterSoulPurchase());
stmt->setUInt32(this->GetGUID());

trans->Append(stmt);

this->GetWarehouse()->SaveDBData(trans);
}



fix

void Player::SaveDBInfo(SQLTransaction& trans)
{
   PreparedStatement* stmt = MuDatabase.GetPreparedStatement(CHARACTER_UPDATE_INFO);

   stmt->setUInt8(this->GetAuthority());
   stmt->setUInt8(this->GetDBClass());
   stmt->setString(this->GetName());

   stmt->setInt16(this->GetLevelData(LEVEL_DATA_NORMAL)->GetLevel());
   if (this->GetLevelData(LEVEL_DATA_NORMAL)->GetLevel() < 400) {
      stmt->setInt16(this->GetLevelData(LEVEL_DATA_MASTER_BAK)->GetLevel());
   }
   else if (this->GetLevelData(LEVEL_DATA_NORMAL)->GetLevel() == 400) {
      if (this->GetLevelData(LEVEL_DATA_MASTER_BAK)->GetLevel() == 0) {
         stmt->setInt16(this->GetLevelData(LEVEL_DATA_MASTER)->GetLevel());
      }
      else {
         this->GetLevelData(LEVEL_DATA_MASTER)->SetLevel(this->GetLevelData(LEVEL_DATA_MASTER_BAK)->GetLevel());
         stmt->setInt16(this->GetLevelData(LEVEL_DATA_MASTER)->GetLevel());
      }
   }

   stmt->setInt64(this->GetLevelData(LEVEL_DATA_NORMAL)->GetExperience());
   stmt->setInt64(this->GetLevelData(LEVEL_DATA_MASTER)->GetExperience());
   stmt->setInt32(this->GetLevelData(LEVEL_DATA_NORMAL)->GetPoints());

   if (this->GetLevelData(LEVEL_DATA_NORMAL)->GetLevel() < 400) {
      stmt->setInt16(this->GetLevelData(LEVEL_DATA_MASTER_BAK)->GetPoints());
   }
   else if (this->GetLevelData(LEVEL_DATA_NORMAL)->GetLevel() == 400) {
      if (this->GetLevelData(LEVEL_DATA_MASTER_BAK)->GetLevel() == 0) {
         stmt->setInt16(this->GetLevelData(LEVEL_DATA_MASTER)->GetPoints());
      }
      else {
         this->GetLevelData(LEVEL_DATA_MASTER)->SetPoints(this->GetLevelData(LEVEL_DATA_MASTER_BAK)->GetPoints());
         stmt->setInt16(this->GetLevelData(LEVEL_DATA_MASTER)->GetPoints());
      }
   }

   for (uint64 i = 0; i < MAX_STAT_TYPE; ++i)
   {
      stmt->setUInt32(this->GetStat(i));
   }

   stmt->setUInt16(this->GetWorldId());
   stmt->setInt16(this->GetX());
   stmt->setInt16(this->GetY());
   stmt->setUInt8(this->GetDirection());
   stmt->setUInt32(this->MoneyGet());

   for (uint8 i = 0; i < POWER_MAX; ++i)
   {
      stmt->setInt32(this->PowerGet(i));
   }

   stmt->setInt32(this->GetFruitPointsAdd());
   stmt->setInt32(this->GetFruitPointsDec());
   stmt->setUInt8(this->GetInventory()->GetExpanded());
   stmt->setInt64(this->GetMuteTime());
   stmt->setUInt32(this->GetAdministratorFlag());
   stmt->setUInt8(this->GetPKLevel());
   stmt->setInt32(this->GetPKCount());
   stmt->setInt32(this->GetPKPoints());
   stmt->setUInt8(this->IsFirstTime());
   stmt->setInt64(this->GetSantaClausGiftDate());
   stmt->setString(base64::encode((uint8*)this->GetPersonalStore()->GetName(), PERSONAL_STORE_NAME_LENGTH));
   stmt->setBool(this->GetPersonalStore()->IsOpen() && this->GetPersonalStore()->IsOff());
   stmt->setUInt32(this->GetGoblinPoints());
   stmt->setInt64(time(nullptr));
   stmt->setInt64(this->GetKickTime());
   stmt->setInt32(this->GetPostCount());
   stmt->setUInt8(this->GetPostDay());
   stmt->setUInt8(this->GetPostMonth());
   stmt->setUInt32(this->GetRuudMoney());
   if (this->GetLevelData(LEVEL_DATA_NORMAL)->GetLevel() < 400 || this->GetLevelData(LEVEL_DATA_MASTER)->GetLevel() < 400) {
      stmt->setInt16(this->GetLevelData(LEVEL_DATA_MAJESTIC)->GetLevel());
      stmt->setInt64(this->GetLevelData(LEVEL_DATA_MAJESTIC)->GetExperience());
      stmt->setInt32(this->GetLevelData(LEVEL_DATA_MAJESTIC)->GetPoints());
   }
   else if (this->GetLevelData(LEVEL_DATA_NORMAL)->GetLevel() == 400 && this->GetLevelData(LEVEL_DATA_MASTER)->GetLevel() == 400) {
      if (this->GetLevelData(LEVEL_DATA_MAJESTIC_BAK)->GetLevel() == 0) {
         stmt->setInt16(this->GetLevelData(LEVEL_DATA_MAJESTIC)->GetLevel());
         stmt->setInt64(this->GetLevelData(LEVEL_DATA_MAJESTIC)->GetExperience());
         stmt->setInt32(this->GetLevelData(LEVEL_DATA_MAJESTIC)->GetPoints());
      }
      else if (this->GetLevelData(LEVEL_DATA_MAJESTIC_BAK)->GetLevel() > 0) {
         stmt->setInt16(this->GetLevelData(LEVEL_DATA_MAJESTIC_BAK)->GetLevel());
         stmt->setInt64(this->GetLevelData(LEVEL_DATA_MAJESTIC)->GetExperience());
         stmt->setInt32(this->GetLevelData(LEVEL_DATA_MAJESTIC_BAK)->GetPoints());
      }
   }

   stmt->setUInt8(this->IsHuntingRecordVisible() ? 1 : 0);
   stmt->setUInt32(this->GetResetSystem(RESET_TOTAL)->GetReset());
   stmt->setUInt8(this->GetMonsterSoulPurchase());
   stmt->setUInt32(this->GetGUID());

   trans->Append(stmt);

   this->GetWarehouse()->SaveDBData(trans);
}
Bon Dia

🡱 🡳
Real Time Web Analytics