mirror of
https://github.com/rafi1212122/PemukulPaku
synced 2025-12-12 22:34:36 +01:00
equipment switching & level up with avatar level up fix
This commit is contained in:
45
GameServer/Handlers/DressEquipmentReqHandler.cs
Normal file
45
GameServer/Handlers/DressEquipmentReqHandler.cs
Normal file
@@ -0,0 +1,45 @@
|
||||
using Common.Database;
|
||||
using Common.Resources.Proto;
|
||||
|
||||
namespace PemukulPaku.GameServer.Handlers
|
||||
{
|
||||
[PacketCmdId(CmdId.DressEquipmentReq)]
|
||||
internal class DressEquipmentReqHandler : IPacketHandler
|
||||
{
|
||||
public void Handle(Session session, Packet packet)
|
||||
{
|
||||
DressEquipmentReq Data = packet.GetDecodedBody<DressEquipmentReq>();
|
||||
DressEquipmentRsp Rsp = new() { retcode = DressEquipmentRsp.Retcode.Succ };
|
||||
|
||||
AvatarScheme? avatar = session.Player.AvatarList.FirstOrDefault(avatar => avatar.AvatarId == Data.AvatarId);
|
||||
if (avatar == null)
|
||||
{
|
||||
Rsp.retcode = DressEquipmentRsp.Retcode.AvatarNotExist;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (Data.Slot)
|
||||
{
|
||||
case EquipmentSlot.EquipmentSlotWeapon1:
|
||||
avatar.WeaponUniqueId = Data.UniqueId;
|
||||
break;
|
||||
case EquipmentSlot.EquipmentSlotStigmata1:
|
||||
avatar.StigmataUniqueId1 = Data.UniqueId;
|
||||
break;
|
||||
case EquipmentSlot.EquipmentSlotStigmata2:
|
||||
avatar.StigmataUniqueId2 = Data.UniqueId;
|
||||
break;
|
||||
case EquipmentSlot.EquipmentSlotStigmata3:
|
||||
avatar.StigmataUniqueId3 = Data.UniqueId;
|
||||
break;
|
||||
default:
|
||||
Rsp.retcode = DressEquipmentRsp.Retcode.EquipmentSlotError;
|
||||
break;
|
||||
}
|
||||
session.ProcessPacket(Packet.FromProto(new GetAvatarDataReq() { AvatarIdLists = new uint[] { avatar.AvatarId } }, CmdId.GetAvatarDataReq));
|
||||
}
|
||||
|
||||
session.Send(Packet.FromProto(Rsp, CmdId.DressEquipmentRsp));
|
||||
}
|
||||
}
|
||||
}
|
||||
35
GameServer/Handlers/EquipmentPowerUpReqHandler.cs
Normal file
35
GameServer/Handlers/EquipmentPowerUpReqHandler.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
using Common.Resources.Proto;
|
||||
|
||||
namespace PemukulPaku.GameServer.Handlers
|
||||
{
|
||||
[PacketCmdId(CmdId.EquipmentPowerUpReq)]
|
||||
internal class EquipmentPowerUpReqHandler : IPacketHandler
|
||||
{
|
||||
public void Handle(Session session, Packet packet)
|
||||
{
|
||||
EquipmentPowerUpReq Data = packet.GetDecodedBody<EquipmentPowerUpReq>();
|
||||
EquipmentPowerUpRsp Rsp = new() { retcode = EquipmentPowerUpRsp.Retcode.Succ, MainItem = Data.MainItem, BoostRate = 100 };
|
||||
|
||||
GetEquipmentDataRsp EquipmentDataRsp = new() { retcode = GetEquipmentDataRsp.Retcode.Succ, VitalityValue = 5900 };
|
||||
switch (Data.MainItem.Type)
|
||||
{
|
||||
case EquipmentType.EquipmentWeapon:
|
||||
Material[] WeaponUpConsumeItems = session.Player.Equipment.AddWeaponExpByConsumeItem(Data.MainItem.IdOrUniqueId, Data.ConsumeItemList.ItemLists);
|
||||
|
||||
EquipmentDataRsp.MaterialLists.AddRange(WeaponUpConsumeItems);
|
||||
EquipmentDataRsp.WeaponLists.Add(session.Player.Equipment.WeaponList.FirstOrDefault(weapon => weapon.UniqueId == Data.MainItem.IdOrUniqueId));
|
||||
break;
|
||||
case EquipmentType.EquipmentStigmata:
|
||||
Material[] StigmataUpConsumeItems = session.Player.Equipment.AddStigmataExpByConsumeItem(Data.MainItem.IdOrUniqueId, Data.ConsumeItemList.ItemLists);
|
||||
|
||||
EquipmentDataRsp.MaterialLists.AddRange(StigmataUpConsumeItems);
|
||||
EquipmentDataRsp.StigmataLists.Add(session.Player.Equipment.StigmataList.FirstOrDefault(stigmata => stigmata.UniqueId == Data.MainItem.IdOrUniqueId));
|
||||
break;
|
||||
default:
|
||||
Rsp.retcode = EquipmentPowerUpRsp.Retcode.MainItemNotExist;
|
||||
break;
|
||||
}
|
||||
session.Send(Packet.FromProto(EquipmentDataRsp, CmdId.GetEquipmentDataRsp), Packet.FromProto(Rsp, CmdId.EquipmentPowerUpRsp));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
using Common.Database;
|
||||
using Common.Resources.Proto;
|
||||
using Common.Resources.Proto;
|
||||
|
||||
namespace PemukulPaku.GameServer.Handlers
|
||||
{
|
||||
@@ -9,7 +8,6 @@ namespace PemukulPaku.GameServer.Handlers
|
||||
public void Handle(Session session, Packet packet)
|
||||
{
|
||||
GetAvatarDataReq Packet = packet.GetDecodedBody<GetAvatarDataReq>();
|
||||
LoginScheme LastLogin = Login.GetUserLastLogin(session.Player.User.Uid);
|
||||
|
||||
GetAvatarDataRsp Rsp = new()
|
||||
{
|
||||
@@ -18,9 +16,9 @@ namespace PemukulPaku.GameServer.Handlers
|
||||
|
||||
if (Packet.AvatarIdLists.Contains((uint)0))
|
||||
{
|
||||
IEnumerable<Common.Resources.Proto.Avatar> Avatars = session.Player.AvatarList.Select(avatar =>
|
||||
IEnumerable<Avatar> Avatars = session.Player.AvatarList.Select(avatar =>
|
||||
{
|
||||
Common.Resources.Proto.Avatar a = new()
|
||||
Avatar a = new()
|
||||
{
|
||||
AvatarId = avatar.AvatarId,
|
||||
AvatarArtifact = avatar.AvatarArtifact,
|
||||
@@ -50,9 +48,9 @@ namespace PemukulPaku.GameServer.Handlers
|
||||
}
|
||||
else
|
||||
{
|
||||
IEnumerable<Common.Resources.Proto.Avatar> Avatars = session.Player.AvatarList.Where(avatar => Packet.AvatarIdLists.Contains(avatar.AvatarId)).Select(avatar =>
|
||||
IEnumerable<Avatar> Avatars = session.Player.AvatarList.Where(avatar => Packet.AvatarIdLists.Contains(avatar.AvatarId)).Select(avatar =>
|
||||
{
|
||||
Common.Resources.Proto.Avatar a = new()
|
||||
Avatar a = new()
|
||||
{
|
||||
AvatarId = avatar.AvatarId,
|
||||
AvatarArtifact = avatar.AvatarArtifact,
|
||||
|
||||
Reference in New Issue
Block a user