Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: Re: Source 5.2 Pegasus/Mudream 大师经验不显示问题修复记录 Master EXP  (Visto 378 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline 121931868 Posteado: December 12, 2025, 10:41:35 AM | Modificado: December 12, 2025, 10:48:16 AM by 121931868

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 5
  • Gracias recibida: 7
### 1. 修改 Protocol.h 中奖励经验包结构

**文件:** 
\Source\4.GameServer_UP15\GameServer\Protocol.h`

#### 1.1 删除原结构体代码

```cpp
struct PMSG_REWARD_EXPERIENCE_SEND
{
   PBMSG_HEAD header; // C1:9C
   BYTE index[2];
   WORD experience[2];
   BYTE damage[2];
   #if(GAMESERVER_EXTRA==1)
   DWORD ViewDamageHP;
   #endif
};
```

#### 1.2 粘贴新结构体代码

```cpp
struct PMSG_REWARD_EXPERIENCE_SEND
{
   PBMSG_HEAD header; // C1:9C
   BYTE ExperienceType;
   DWORD AddedExperience;
   DWORD DamageOfLastHit;
   WORD KilledObjectId;
   WORD KillerObjectId;
   #if(GAMESERVER_EXTRA==1)
   DWORD ViewDamageHP;
   #endif
};
```

---

### 2. 修改 Protocol.cpp 中 GCMonsterDieSend

**文件:** 
\Source\4.GameServer_UP15\GameServer\Protocol.cpp`

#### 2.1 删除原 GCMonsterDieSend 函数

```cpp
void GCMonsterDieSend(int aIndex, int bIndex, int experience, int damage, BYTE flag) // OK
{
   PMSG_REWARD_EXPERIENCE_SEND pMsg;

   pMsg.header.setE(0x9C, sizeof(pMsg));

   pMsg.index[0] = SET_NUMBERHB(bIndex) | (flag * 0x80);
   pMsg.index[1] = SET_NUMBERLB(bIndex);

   pMsg.experience[0] = SET_NUMBERHW(experience);
   pMsg.experience[1] = SET_NUMBERLW(experience);

   pMsg.damage[0] = SET_NUMBERHB(GET_MAX_WORD_VALUE(damage));
   pMsg.damage[1] = SET_NUMBERLB(GET_MAX_WORD_VALUE(damage));

   #if(GAMESERVER_EXTRA==1)
   pMsg.ViewDamageHP = damage;
   #endif

   DataSend(aIndex, (BYTE*)&pMsg, pMsg.header.size);
}
```

#### 2.2 粘贴新 GCMonsterDieSend 函数

```cpp
void GCMonsterDieSend(int aIndex, int bIndex, int experience, int damage, BYTE flag) // OK
{
   PMSG_REWARD_EXPERIENCE_SEND pMsg;

   pMsg.header.setE(0x9C, sizeof(pMsg));

   pMsg.ExperienceType  = (gMasterSkillTree.CheckMasterLevel(&gObj[aIndex]) != 0) ? 2 : 1;
   pMsg.AddedExperience = experience;
   pMsg.DamageOfLastHit = damage;
   pMsg.KilledObjectId  = bIndex;
   pMsg.KillerObjectId  = aIndex;
   #if(GAMESERVER_EXTRA==1)
   pMsg.ViewDamageHP    = damage;
   #endif

   DataSend(aIndex, (BYTE*)&pMsg, pMsg.header.size);
}
```

---

### 3. 修改 Protocol.cpp 中 GCRewardExperienceSend

**文件:** 
\Source\4.GameServer_UP15\GameServer\Protocol.cpp

#### 3.1 删除原 GCRewardExperienceSend 函数

```cpp
void GCRewardExperienceSend(int aIndex, int experience) // OK
{
   PMSG_REWARD_EXPERIENCE_SEND pMsg;

   pMsg.header.setE(0x9C, sizeof(pMsg));

   pMsg.index[0] = 0xFF;
   pMsg.index[1] = 0xFF;

   pMsg.experience[0] = SET_NUMBERHW(experience);
   pMsg.experience[1] = SET_NUMBERLW(experience);

   pMsg.damage[0] = 0;
   pMsg.damage[1] = 0;

   #if(GAMESERVER_EXTRA==1)
   pMsg.ViewDamageHP = 0;
   #endif

   DataSend(aIndex, (BYTE*)&pMsg, pMsg.header.size);
}
```

#### 3.2 粘贴新 GCRewardExperienceSend 函数

```cpp
void GCRewardExperienceSend(int aIndex, int experience) // OK
{
   PMSG_REWARD_EXPERIENCE_SEND pMsg;

   pMsg.header.setE(0x9C, sizeof(pMsg));

   pMsg.ExperienceType  = (gMasterSkillTree.CheckMasterLevel(&gObj[aIndex]) != 0) ? 2 : 1;
   pMsg.AddedExperience = experience;
   pMsg.DamageOfLastHit = 0;
   pMsg.KilledObjectId  = 0;
   pMsg.KillerObjectId  = 0;
   #if(GAMESERVER_EXTRA==1)
   pMsg.ViewDamageHP    = 0;
   #endif

   DataSend(aIndex, (BYTE*)&pMsg, pMsg.header.size);
}
```

Gracias:


Offline nhantac #1 Posteado: December 12, 2025, 11:14:44 AM

  • 0 puntos por ventas
  • *
  • Rank: Destacado
  • Posts: 92
  • Gracias recibida: 143
  • vn

Offline aiui007 #2 Posteado: December 12, 2025, 08:15:29 PM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 2
  • Gracias recibida: 1
  • cn

Offline nhantac #3 Posteado: December 12, 2025, 08:55:32 PM

  • 0 puntos por ventas
  • *
  • Rank: Destacado
  • Posts: 92
  • Gracias recibida: 143
  • vn
Master经验包部分已正常,但普通经验包部分还有bug。


Offline coolgepds #4 Posteado: December 12, 2025, 09:21:37 PM

  • 0 puntos por ventas
  • *
  • Rank: Destacado
  • Posts: 94
  • Gracias recibida: 41
  • cn

Offline 121931868 #5 Posteado: December 12, 2025, 09:46:49 PM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 5
  • Gracias recibida: 7

Offline coolgepds #6 Posteado: December 12, 2025, 09:57:52 PM

  • 0 puntos por ventas
  • *
  • Rank: Destacado
  • Posts: 94
  • Gracias recibida: 41
  • cn

Offline 121931868 #7 Posteado: Today at 12:01:52 AM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 5
  • Gracias recibida: 7
I can use the command normally, and there is no crash.


Offline zpzwb113 #8 Posteado: Today at 02:08:07 AM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 43
  • Gracias recibida: 33
  • cn

Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate