mirror of
https://github.com/Melledy/LunarCore.git
synced 2025-12-13 13:54:37 +01:00
Refactor many functions in InventoryService
Inventory handlers should now always send a rsp packet even if there is an error
This commit is contained in:
@@ -13,8 +13,6 @@ import emu.lunarcore.game.avatar.GameAvatar;
|
||||
import emu.lunarcore.game.player.Player;
|
||||
import emu.lunarcore.server.game.BaseGameService;
|
||||
import emu.lunarcore.server.game.GameServer;
|
||||
import emu.lunarcore.server.packet.BasePacket;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
import emu.lunarcore.server.packet.send.*;
|
||||
|
||||
import it.unimi.dsi.fastutil.ints.Int2IntMap;
|
||||
@@ -28,13 +26,13 @@ public class InventoryService extends BaseGameService {
|
||||
|
||||
// === Avatars ===
|
||||
|
||||
public void levelUpAvatar(Player player, int avatarId, Collection<ItemParam> items) {
|
||||
public List<GameItem> levelUpAvatar(Player player, int avatarId, Collection<ItemParam> items) {
|
||||
// Get avatar
|
||||
GameAvatar avatar = player.getAvatarById(avatarId);
|
||||
if (avatar == null) return;
|
||||
if (avatar == null) return null;
|
||||
|
||||
AvatarPromotionExcel promoteData = GameData.getAvatarPromotionExcel(avatarId, avatar.getPromotion());
|
||||
if (promoteData == null) return;
|
||||
if (promoteData == null) return null;
|
||||
|
||||
// Exp gain
|
||||
int amount = 0;
|
||||
@@ -42,7 +40,9 @@ public class InventoryService extends BaseGameService {
|
||||
// Verify items
|
||||
for (ItemParam param : items) {
|
||||
GameItem item = player.getInventory().getItemByParam(param);
|
||||
if (item == null || item.getExcel().getAvatarExp() == 0 || item.getCount() < param.getCount()) return;
|
||||
if (item == null || item.getExcel().getAvatarExp() == 0 || item.getCount() < param.getCount()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
amount += item.getExcel().getAvatarExp() * param.getCount();
|
||||
}
|
||||
@@ -50,8 +50,7 @@ public class InventoryService extends BaseGameService {
|
||||
// Verify credits
|
||||
int cost = amount / 10;
|
||||
if (player.getScoin() < cost) {
|
||||
player.sendPacket(new PacketAvatarExpUpScRsp());
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
|
||||
// Pay items
|
||||
@@ -111,24 +110,23 @@ public class InventoryService extends BaseGameService {
|
||||
|
||||
// Send packets
|
||||
player.sendPacket(new PacketPlayerSyncScNotify(avatar));
|
||||
player.sendPacket(new PacketAvatarExpUpScRsp(returnItems));
|
||||
return returnItems;
|
||||
}
|
||||
|
||||
public void promoteAvatar(Player player, int avatarId) {
|
||||
public boolean promoteAvatar(Player player, int avatarId) {
|
||||
// Get avatar
|
||||
GameAvatar avatar = player.getAvatarById(avatarId);
|
||||
if (avatar == null || avatar.getPromotion() >= avatar.getExcel().getMaxPromotion()) return;
|
||||
if (avatar == null || avatar.getPromotion() >= avatar.getExcel().getMaxPromotion()) return false;
|
||||
|
||||
AvatarPromotionExcel promotion = GameData.getAvatarPromotionExcel(avatarId, avatar.getPromotion());
|
||||
// Sanity check
|
||||
if ((promotion == null) || avatar.getLevel() < promotion.getMaxLevel() || player.getLevel() < promotion.getPlayerLevelRequire() || player.getWorldLevel() < promotion.getWorldLevelRequire()) {
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Verify item params
|
||||
if (!player.getInventory().verifyItems(promotion.getPromotionCostList())) {
|
||||
player.sendPacket(new BasePacket(CmdId.PromoteAvatarScRsp));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Pay items
|
||||
@@ -142,26 +140,24 @@ public class InventoryService extends BaseGameService {
|
||||
|
||||
// Send packets
|
||||
player.sendPacket(new PacketPlayerSyncScNotify(avatar));
|
||||
player.sendPacket(new BasePacket(CmdId.PromoteAvatarScRsp));
|
||||
return true;
|
||||
}
|
||||
|
||||
public void unlockSkillTreeAvatar(Player player, int pointId) {
|
||||
// Hacky way to get avatar id
|
||||
int avatarId = pointId / 1000;
|
||||
|
||||
public boolean unlockSkillTreeAvatar(Player player, int avatarId, int pointId) {
|
||||
// Get avatar + Skill Tree data
|
||||
GameAvatar avatar = player.getAvatarById(avatarId);
|
||||
if (avatar == null) return;
|
||||
if (avatar == null) return false;
|
||||
|
||||
int nextLevel = avatar.getSkills().getOrDefault(pointId, 0) + 1;
|
||||
|
||||
AvatarSkillTreeExcel skillTree = GameData.getAvatarSkillTreeExcel(pointId, nextLevel);
|
||||
if (skillTree == null || skillTree.getAvatarID() != avatar.getExcel().getAvatarID()) return;
|
||||
if (skillTree == null || skillTree.getAvatarID() != avatar.getExcel().getAvatarID()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Verify item params
|
||||
if (!player.getInventory().verifyItems(skillTree.getMaterialList())) {
|
||||
player.sendPacket(new PacketUnlockSkilltreeScRsp());
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Pay items
|
||||
@@ -180,23 +176,22 @@ public class InventoryService extends BaseGameService {
|
||||
player.sendPacket(new PacketPlayerSyncScNotify(avatar));
|
||||
}
|
||||
|
||||
player.sendPacket(new PacketUnlockSkilltreeScRsp(avatarId, pointId, nextLevel));
|
||||
return true;
|
||||
}
|
||||
|
||||
public void rankUpAvatar(Player player, int avatarId) {
|
||||
public boolean rankUpAvatar(Player player, int avatarId) {
|
||||
// Get avatar
|
||||
GameAvatar avatar = player.getAvatarById(avatarId);
|
||||
if (avatar == null || avatar.getRank() >= avatar.getExcel().getMaxRank()) return;
|
||||
if (avatar == null || avatar.getRank() >= avatar.getExcel().getMaxRank()) return false;
|
||||
|
||||
AvatarRankExcel rankData = GameData.getAvatarRankExcel(avatar.getExcel().getRankId(avatar.getRank()));
|
||||
if (rankData == null) return;
|
||||
if (rankData == null) return false;
|
||||
|
||||
// Verify items
|
||||
for (ItemParam param : rankData.getUnlockCost()) {
|
||||
GameItem item = player.getInventory().getItemByParam(param);
|
||||
if (item == null || item.getCount() < param.getCount()) {
|
||||
player.sendPacket(new BasePacket(CmdId.RankUpAvatarScRsp));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -214,27 +209,24 @@ public class InventoryService extends BaseGameService {
|
||||
player.sendPacket(new PacketPlayerSyncScNotify(avatar));
|
||||
}
|
||||
|
||||
player.sendPacket(new BasePacket(CmdId.RankUpAvatarScRsp));
|
||||
return true;
|
||||
}
|
||||
|
||||
public void takePromotionRewardAvatar(Player player, int avatarId, int promotion) {
|
||||
public List<GameItem> takePromotionRewardAvatar(Player player, int avatarId, int promotion) {
|
||||
// Get avatar
|
||||
GameAvatar avatar = player.getAvatarById(avatarId);
|
||||
if (avatar == null) {
|
||||
player.sendPacket(new PacketTakePromotionRewardScRsp());
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
|
||||
// Sanity
|
||||
if (promotion <= 0 || promotion > avatar.getPromotion()) {
|
||||
player.sendPacket(new PacketTakePromotionRewardScRsp());
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
|
||||
// Make sure promotion level is odd + Make sure promotion reward isnt already taken
|
||||
if (promotion % 2 == 0 || avatar.getTakenRewards().contains(promotion)) {
|
||||
player.sendPacket(new PacketTakePromotionRewardScRsp());
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
|
||||
// Set reward as taken
|
||||
@@ -250,22 +242,21 @@ public class InventoryService extends BaseGameService {
|
||||
|
||||
// Send packets
|
||||
player.sendPacket(new PacketPlayerSyncScNotify(avatar));
|
||||
player.sendPacket(new PacketTakePromotionRewardScRsp(rewards));
|
||||
return rewards;
|
||||
}
|
||||
|
||||
// === Equipment ===
|
||||
|
||||
public void levelUpEquipment(Player player, int equipId, Collection<ItemParam> items) {
|
||||
public List<GameItem> levelUpEquipment(Player player, int equipId, Collection<ItemParam> items) {
|
||||
// Get equipment
|
||||
GameItem equip = player.getInventory().getItemByUid(equipId);
|
||||
|
||||
if (equip == null || !equip.getExcel().isEquipment()) {
|
||||
player.sendPacket(new PacketExpUpEquipmentScRsp());
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
|
||||
EquipmentPromotionExcel promoteData = GameData.getEquipmentPromotionExcel(equip.getItemId(), equip.getPromotion());
|
||||
if (promoteData == null) return;
|
||||
if (promoteData == null) return null;
|
||||
|
||||
// Exp gain
|
||||
int cost = 0;
|
||||
@@ -274,10 +265,8 @@ public class InventoryService extends BaseGameService {
|
||||
// Verify items
|
||||
for (ItemParam param : items) {
|
||||
GameItem item = player.getInventory().getItemByParam(param);
|
||||
System.out.println(param.getId());
|
||||
if (item == null || item.isLocked() || item.getCount() < param.getCount()) {
|
||||
player.sendPacket(new PacketExpUpEquipmentScRsp());
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
|
||||
if (item.getExcel().getEquipmentExp() > 0) {
|
||||
@@ -288,8 +277,7 @@ public class InventoryService extends BaseGameService {
|
||||
|
||||
// Verify credits
|
||||
if (player.getScoin() < cost) {
|
||||
player.sendPacket(new PacketExpUpEquipmentScRsp());
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
|
||||
// Pay items
|
||||
@@ -349,38 +337,34 @@ public class InventoryService extends BaseGameService {
|
||||
|
||||
// Send packets
|
||||
player.sendPacket(new PacketPlayerSyncScNotify(equip));
|
||||
player.sendPacket(new PacketExpUpEquipmentScRsp(returnItems));
|
||||
return returnItems;
|
||||
}
|
||||
|
||||
public void promoteEquipment(Player player, int equipId) {
|
||||
public boolean promoteEquipment(Player player, int equipId) {
|
||||
// Get equipment
|
||||
GameItem equip = player.getInventory().getItemByUid(equipId);
|
||||
|
||||
if (equip == null || !equip.getExcel().isEquipment() || equip.getPromotion() >= equip.getExcel().getEquipmentExcel().getMaxPromotion()) {
|
||||
player.sendPacket(new BasePacket(CmdId.PromoteEquipmentScRsp));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
EquipmentPromotionExcel promotion = GameData.getEquipmentPromotionExcel(equip.getItemId(), equip.getPromotion());
|
||||
// Sanity check
|
||||
if ((promotion == null) || equip.getLevel() < promotion.getMaxLevel() || player.getLevel() < promotion.getPlayerLevelRequire() || player.getWorldLevel() < promotion.getWorldLevelRequire()) {
|
||||
player.sendPacket(new BasePacket(CmdId.PromoteEquipmentScRsp));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Verify items
|
||||
for (ItemParam param : promotion.getPromotionCostList()) {
|
||||
GameItem item = player.getInventory().getItemByParam(param);
|
||||
if (item == null || item.getCount() < param.getCount()) {
|
||||
player.sendPacket(new BasePacket(CmdId.PromoteEquipmentScRsp));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Verify credits
|
||||
if (player.getScoin() < promotion.getPromotionCostCoin()) {
|
||||
player.sendPacket(new BasePacket(CmdId.PromoteEquipmentScRsp));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Pay items
|
||||
@@ -395,48 +379,50 @@ public class InventoryService extends BaseGameService {
|
||||
|
||||
// Send packets
|
||||
player.sendPacket(new PacketPlayerSyncScNotify(equip));
|
||||
player.sendPacket(new BasePacket(CmdId.PromoteEquipmentScRsp));
|
||||
return true;
|
||||
}
|
||||
|
||||
public void rankUpEquipment(Player player, int equipId, List<ItemParam> items) {
|
||||
public boolean rankUpEquipment(Player player, int equipId, List<ItemParam> items) {
|
||||
// Get avatar
|
||||
GameItem equip = player.getInventory().getItemByUid(equipId);
|
||||
|
||||
if (equip == null || !equip.getExcel().isEquipment() || equip.getRank() >= equip.getExcel().getEquipmentExcel().getMaxRank()) {
|
||||
player.sendPacket(new BasePacket(CmdId.RankUpEquipmentScRsp));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Rank up amount
|
||||
int amount = 0;
|
||||
|
||||
// Verify items
|
||||
for (ItemParam param : items) {
|
||||
GameItem item = player.getInventory().getItemByParam(param);
|
||||
if (item == null || !equip.getExcel().getEquipmentExcel().isRankUpItem(item) || item.getCount() < param.getCount()) {
|
||||
player.sendPacket(new BasePacket(CmdId.RankUpEquipmentScRsp));
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
amount += item.getRank();
|
||||
}
|
||||
|
||||
// Pay items
|
||||
player.getInventory().removeItemsByParams(items);
|
||||
|
||||
// Add rank
|
||||
equip.setRank(Math.min(equip.getRank() + items.size(), equip.getExcel().getEquipmentExcel().getMaxRank()));
|
||||
equip.setRank(Math.min(equip.getRank() + amount, equip.getExcel().getEquipmentExcel().getMaxRank()));
|
||||
equip.save();
|
||||
|
||||
// Send packets
|
||||
player.sendPacket(new PacketPlayerSyncScNotify(equip));
|
||||
player.sendPacket(new BasePacket(CmdId.RankUpEquipmentScRsp));
|
||||
return true;
|
||||
}
|
||||
|
||||
// === Relic ===
|
||||
|
||||
public void levelUpRelic(Player player, int equipId, Collection<ItemParam> items) {
|
||||
public List<GameItem> levelUpRelic(Player player, int equipId, Collection<ItemParam> items) {
|
||||
// Get relic
|
||||
GameItem equip = player.getInventory().getItemByUid(equipId);
|
||||
|
||||
if (equip == null || !equip.getExcel().isRelic()) {
|
||||
player.sendPacket(new PacketExpUpRelicScRsp());
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
|
||||
// Exp gain
|
||||
@@ -447,8 +433,7 @@ public class InventoryService extends BaseGameService {
|
||||
for (ItemParam param : items) {
|
||||
GameItem item = player.getInventory().getItemByParam(param);
|
||||
if (item == null || item.isLocked() || item.getCount() < param.getCount()) {
|
||||
player.sendPacket(new PacketExpUpRelicScRsp());
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
|
||||
if (item.getExcel().getRelicExp() > 0) {
|
||||
@@ -463,8 +448,7 @@ public class InventoryService extends BaseGameService {
|
||||
|
||||
// Verify credits
|
||||
if (player.getScoin() < cost) {
|
||||
player.sendPacket(new PacketExpUpRelicScRsp());
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
|
||||
// Pay items
|
||||
@@ -537,7 +521,7 @@ public class InventoryService extends BaseGameService {
|
||||
|
||||
// Send packets
|
||||
player.sendPacket(new PacketPlayerSyncScNotify(equip));
|
||||
player.sendPacket(new PacketExpUpRelicScRsp(returnItems));
|
||||
return returnItems;
|
||||
}
|
||||
|
||||
// === Etc ===
|
||||
@@ -556,15 +540,14 @@ public class InventoryService extends BaseGameService {
|
||||
player.sendPacket(new PacketPlayerSyncScNotify(equip));
|
||||
}
|
||||
|
||||
public void sellItems(Player player, List<ItemParam> items) {
|
||||
public Int2IntMap sellItems(Player player, List<ItemParam> items) {
|
||||
// Verify items
|
||||
var returnItems = new Int2IntOpenHashMap();
|
||||
|
||||
for (ItemParam param : items) {
|
||||
GameItem item = player.getInventory().getItemByParam(param);
|
||||
if (item == null || item.isLocked() || item.getCount() < param.getCount()) {
|
||||
player.sendPacket(new PacketSellItemScRsp(null));
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
|
||||
// Add return items
|
||||
@@ -582,8 +565,8 @@ public class InventoryService extends BaseGameService {
|
||||
player.getInventory().addItem(returnItem.getIntKey(), returnItem.getIntValue());
|
||||
}
|
||||
|
||||
// Send packet
|
||||
player.sendPacket(new PacketSellItemScRsp(returnItems));
|
||||
// Done
|
||||
return returnItems;
|
||||
}
|
||||
|
||||
public List<GameItem> composeItem(Player player, int composeId, int count) {
|
||||
|
||||
@@ -10,6 +10,7 @@ import emu.lunarcore.server.game.GameSession;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
import emu.lunarcore.server.packet.Opcodes;
|
||||
import emu.lunarcore.server.packet.PacketHandler;
|
||||
import emu.lunarcore.server.packet.send.PacketAvatarExpUpScRsp;
|
||||
|
||||
@Opcodes(CmdId.AvatarExpUpCsReq)
|
||||
public class HandlerAvatarExpUpCsReq extends PacketHandler {
|
||||
@@ -23,7 +24,8 @@ public class HandlerAvatarExpUpCsReq extends PacketHandler {
|
||||
items.add(new ItemParam(cost));
|
||||
}
|
||||
|
||||
session.getServer().getInventoryService().levelUpAvatar(session.getPlayer(), req.getBaseAvatarId(), items);
|
||||
var returnItems = session.getServer().getInventoryService().levelUpAvatar(session.getPlayer(), req.getBaseAvatarId(), items);
|
||||
session.send(new PacketAvatarExpUpScRsp(returnItems));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import emu.lunarcore.server.game.GameSession;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
import emu.lunarcore.server.packet.Opcodes;
|
||||
import emu.lunarcore.server.packet.PacketHandler;
|
||||
import emu.lunarcore.server.packet.send.PacketExpUpEquipmentScRsp;
|
||||
|
||||
@Opcodes(CmdId.ExpUpEquipmentCsReq)
|
||||
public class HandlerExpUpEquipmentCsReq extends PacketHandler {
|
||||
@@ -23,7 +24,8 @@ public class HandlerExpUpEquipmentCsReq extends PacketHandler {
|
||||
items.add(new ItemParam(cost));
|
||||
}
|
||||
|
||||
session.getServer().getInventoryService().levelUpEquipment(session.getPlayer(), req.getEquipmentUniqueId(), items);
|
||||
var returnItems = session.getServer().getInventoryService().levelUpEquipment(session.getPlayer(), req.getEquipmentUniqueId(), items);
|
||||
session.send(new PacketExpUpEquipmentScRsp(returnItems));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import emu.lunarcore.server.game.GameSession;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
import emu.lunarcore.server.packet.Opcodes;
|
||||
import emu.lunarcore.server.packet.PacketHandler;
|
||||
import emu.lunarcore.server.packet.send.PacketExpUpRelicScRsp;
|
||||
|
||||
@Opcodes(CmdId.ExpUpRelicCsReq)
|
||||
public class HandlerExpUpRelicCsReq extends PacketHandler {
|
||||
@@ -23,7 +24,8 @@ public class HandlerExpUpRelicCsReq extends PacketHandler {
|
||||
items.add(new ItemParam(cost));
|
||||
}
|
||||
|
||||
session.getServer().getInventoryService().levelUpRelic(session.getPlayer(), req.getRelicUniqueId(), items);
|
||||
var returnItems = session.getServer().getInventoryService().levelUpRelic(session.getPlayer(), req.getRelicUniqueId(), items);
|
||||
session.send(new PacketExpUpRelicScRsp(returnItems));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ public class HandlerPromoteAvatarCsReq extends PacketHandler {
|
||||
var req = PromoteAvatarCsReq.parseFrom(data);
|
||||
|
||||
session.getServer().getInventoryService().promoteAvatar(session.getPlayer(), req.getBaseAvatarId());
|
||||
session.send(CmdId.PromoteAvatarScRsp);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ public class HandlerPromoteEquipmentCsReq extends PacketHandler {
|
||||
var req = PromoteEquipmentCsReq.parseFrom(data);
|
||||
|
||||
session.getServer().getInventoryService().promoteEquipment(session.getPlayer(), req.getEquipmentUniqueId());
|
||||
session.send(CmdId.PromoteEquipmentScRsp);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ public class HandlerRankUpAvatarCsReq extends PacketHandler {
|
||||
var req = RankUpAvatarCsReq.parseFrom(data);
|
||||
|
||||
session.getServer().getInventoryService().rankUpAvatar(session.getPlayer(), req.getBaseAvatarId());
|
||||
session.send(CmdId.RankUpAvatarScRsp);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ public class HandlerRankUpEquipmentCsReq extends PacketHandler {
|
||||
}
|
||||
|
||||
session.getServer().getInventoryService().rankUpEquipment(session.getPlayer(), req.getEquipmentUniqueId(), items);
|
||||
session.send(CmdId.RankUpEquipmentScRsp);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import emu.lunarcore.server.game.GameSession;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
import emu.lunarcore.server.packet.Opcodes;
|
||||
import emu.lunarcore.server.packet.PacketHandler;
|
||||
import emu.lunarcore.server.packet.send.PacketSellItemScRsp;
|
||||
|
||||
@Opcodes(CmdId.SellItemCsReq)
|
||||
public class HandlerSellItemCsReq extends PacketHandler {
|
||||
@@ -23,7 +24,8 @@ public class HandlerSellItemCsReq extends PacketHandler {
|
||||
items.add(new ItemParam(cost));
|
||||
}
|
||||
|
||||
session.getServer().getInventoryService().sellItems(session.getPlayer(), items);
|
||||
var returnItems = session.getServer().getInventoryService().sellItems(session.getPlayer(), items);
|
||||
session.send(new PacketSellItemScRsp(returnItems));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import emu.lunarcore.server.game.GameSession;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
import emu.lunarcore.server.packet.Opcodes;
|
||||
import emu.lunarcore.server.packet.PacketHandler;
|
||||
import emu.lunarcore.server.packet.send.PacketTakePromotionRewardScRsp;
|
||||
|
||||
@Opcodes(CmdId.TakePromotionRewardCsReq)
|
||||
public class HandlerTakePromotionRewardCsReq extends PacketHandler {
|
||||
@@ -13,7 +14,8 @@ public class HandlerTakePromotionRewardCsReq extends PacketHandler {
|
||||
public void handle(GameSession session, byte[] data) throws Exception {
|
||||
var req = TakePromotionRewardCsReq.parseFrom(data);
|
||||
|
||||
session.getServer().getInventoryService().takePromotionRewardAvatar(session.getPlayer(), req.getBaseAvatarId(), req.getPromotion());
|
||||
var rewards = session.getServer().getInventoryService().takePromotionRewardAvatar(session.getPlayer(), req.getBaseAvatarId(), req.getPromotion());
|
||||
session.send(new PacketTakePromotionRewardScRsp(rewards));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import emu.lunarcore.server.game.GameSession;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
import emu.lunarcore.server.packet.Opcodes;
|
||||
import emu.lunarcore.server.packet.PacketHandler;
|
||||
import emu.lunarcore.server.packet.send.PacketUnlockSkilltreeScRsp;
|
||||
|
||||
@Opcodes(CmdId.UnlockSkilltreeCsReq)
|
||||
public class HandlerUnlockSkilltreeCsReq extends PacketHandler {
|
||||
@@ -12,8 +13,15 @@ public class HandlerUnlockSkilltreeCsReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] data) throws Exception {
|
||||
var req = UnlockSkilltreeCsReq.parseFrom(data);
|
||||
int avatarId = req.getPointId() / 1000; // Hacky way to get avatar id
|
||||
|
||||
session.getServer().getInventoryService().unlockSkillTreeAvatar(session.getPlayer(), req.getPointId());
|
||||
boolean success = session.getServer().getInventoryService().unlockSkillTreeAvatar(session.getPlayer(), avatarId, req.getPointId());
|
||||
|
||||
if (success) {
|
||||
session.send(new PacketUnlockSkilltreeScRsp(avatarId, req.getPointId(), req.getLevel()));
|
||||
} else {
|
||||
session.send(new PacketUnlockSkilltreeScRsp());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -14,18 +14,14 @@ public class PacketAvatarExpUpScRsp extends BasePacket {
|
||||
|
||||
var data = AvatarExpUpScRsp.newInstance();
|
||||
|
||||
for (GameItem item : returnItems) {
|
||||
data.addReturnItemList(item.toPileProto());
|
||||
if (returnItems != null) {
|
||||
for (GameItem item : returnItems) {
|
||||
data.addReturnItemList(item.toPileProto());
|
||||
}
|
||||
} else {
|
||||
data.setRetcode(1);
|
||||
}
|
||||
|
||||
this.setData(data);
|
||||
}
|
||||
|
||||
public PacketAvatarExpUpScRsp() {
|
||||
super(CmdId.AvatarExpUpScRsp);
|
||||
|
||||
var data = AvatarExpUpScRsp.newInstance().setRetcode(1);
|
||||
|
||||
this.setData(data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,19 +13,16 @@ public class PacketExpUpEquipmentScRsp extends BasePacket {
|
||||
super(CmdId.ExpUpEquipmentScRsp);
|
||||
|
||||
var data = ExpUpEquipmentScRsp.newInstance();
|
||||
|
||||
for (GameItem item : returnItems) {
|
||||
data.addReturnItemList(item.toPileProto());
|
||||
|
||||
if (returnItems != null) {
|
||||
for (GameItem item : returnItems) {
|
||||
data.addReturnItemList(item.toPileProto());
|
||||
}
|
||||
} else {
|
||||
data.setRetcode(1);
|
||||
}
|
||||
|
||||
this.setData(data);
|
||||
}
|
||||
|
||||
public PacketExpUpEquipmentScRsp() {
|
||||
super(CmdId.ExpUpEquipmentScRsp);
|
||||
|
||||
var data = ExpUpEquipmentScRsp.newInstance().setRetcode(1);
|
||||
|
||||
|
||||
this.setData(data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -14,18 +14,14 @@ public class PacketExpUpRelicScRsp extends BasePacket {
|
||||
|
||||
var data = ExpUpRelicScRsp.newInstance();
|
||||
|
||||
for (GameItem item : returnItems) {
|
||||
data.addReturnItemList(item.toPileProto());
|
||||
if (returnItems != null) {
|
||||
for (GameItem item : returnItems) {
|
||||
data.addReturnItemList(item.toPileProto());
|
||||
}
|
||||
} else {
|
||||
data.setRetcode(1);
|
||||
}
|
||||
|
||||
this.setData(data);
|
||||
}
|
||||
|
||||
public PacketExpUpRelicScRsp() {
|
||||
super(CmdId.ExpUpRelicScRsp);
|
||||
|
||||
var data = ExpUpRelicScRsp.newInstance().setRetcode(1);
|
||||
|
||||
|
||||
this.setData(data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package emu.lunarcore.server.packet.send;
|
||||
|
||||
import emu.lunarcore.proto.ItemListOuterClass.ItemList;
|
||||
import emu.lunarcore.proto.ItemOuterClass.Item;
|
||||
import emu.lunarcore.proto.SellItemScRspOuterClass.SellItemScRsp;
|
||||
import emu.lunarcore.server.packet.BasePacket;
|
||||
@@ -12,17 +11,20 @@ public class PacketSellItemScRsp extends BasePacket {
|
||||
public PacketSellItemScRsp(Int2IntMap returnItems) {
|
||||
super(CmdId.SellItemScRsp);
|
||||
|
||||
var list = ItemList.newInstance();
|
||||
var data = SellItemScRsp.newInstance();
|
||||
|
||||
if (returnItems != null) {
|
||||
for (var item : returnItems.int2IntEntrySet()) {
|
||||
list.addItemList(Item.newInstance().setItemId(item.getIntKey()).setNum(item.getIntValue()));
|
||||
var itemProto = Item.newInstance()
|
||||
.setItemId(item.getIntKey())
|
||||
.setNum(item.getIntValue());
|
||||
|
||||
data.getMutableReturnItemList().addItemList(itemProto);
|
||||
}
|
||||
} else {
|
||||
data.setRetcode(1);
|
||||
}
|
||||
|
||||
var data = SellItemScRsp.newInstance()
|
||||
.setReturnItemList(list);
|
||||
|
||||
this.setData(data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,34 +3,25 @@ package emu.lunarcore.server.packet.send;
|
||||
import java.util.Collection;
|
||||
|
||||
import emu.lunarcore.game.inventory.GameItem;
|
||||
import emu.lunarcore.proto.ItemListOuterClass.ItemList;
|
||||
import emu.lunarcore.proto.TakePromotionRewardScRspOuterClass.TakePromotionRewardScRsp;
|
||||
import emu.lunarcore.server.packet.BasePacket;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
|
||||
public class PacketTakePromotionRewardScRsp extends BasePacket {
|
||||
|
||||
public PacketTakePromotionRewardScRsp() {
|
||||
super(CmdId.TakePromotionRewardScRsp);
|
||||
|
||||
var data = TakePromotionRewardScRsp.newInstance()
|
||||
.setRetcode(1);
|
||||
|
||||
this.setData(data);
|
||||
}
|
||||
|
||||
public PacketTakePromotionRewardScRsp(Collection<GameItem> rewards) {
|
||||
super(CmdId.TakePromotionRewardScRsp);
|
||||
|
||||
var data = TakePromotionRewardScRsp.newInstance();
|
||||
|
||||
var rewardList = ItemList.newInstance();
|
||||
|
||||
for (GameItem item : rewards) {
|
||||
rewardList.addItemList(item.toProto());
|
||||
if (rewards != null) {
|
||||
for (GameItem item : rewards) {
|
||||
data.getMutableRewardList().addItemList(item.toProto());
|
||||
}
|
||||
} else {
|
||||
data.setRetcode(1);
|
||||
}
|
||||
|
||||
var data = TakePromotionRewardScRsp.newInstance()
|
||||
.setRewardList(rewardList);
|
||||
|
||||
this.setData(data);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user