- 积分
- 44
- 最后登录
- 2026-5-5
- 阅读权限
- 10
- 积分
- 44
- 回帖
- 14
- 精华
- 0
新人上路

- 枫币
- 30
- 威望
- 0
- 贡献
- 0
- 在线时间
- 2 小时
- 注册时间
- 2026-5-3

|
发表于 2026-5-3 17:37:47
|
显示全部楼层
AI说你这段无法解决问题 还是有可能卡死 他给了个自认为完美的版本
- MaplePet pet = c.getPlayer().getPet(slot);
- slea.readInt();
- slea.readShort();
- int itemId = slea.readInt();
- // 安全校验:宠物不存在或食物ID无效时直接中断,避免后续空指针
- if (pet == null || itemId <= 0) {
- c.getSession().write(MaplePacketCreator.enableActions());
- return;
- }
- boolean gainCloseness = Randomizer.nextInt(101) > 50;
- // 常量,方便你调整数值
- final int FULLNESS_MAX = 100;
- final int FULLNESS_INCREASE = 30;
- final int CLOSENESS_MAX = 30000;
- if (pet.getFullness() < FULLNESS_MAX) {
- // === 喂养成功 ===
- pet.setFullness(Math.min(pet.getFullness() + FULLNESS_INCREASE, FULLNESS_MAX));
- if (gainCloseness && pet.getCloseness() < CLOSENESS_MAX) {
- int newCloseness = Math.min(pet.getCloseness() + 1, CLOSENESS_MAX);
- pet.setCloseness(newCloseness);
- if (newCloseness >= ExpTable.getClosenessNeededForLevel(pet.getLevel() + 1)) {
- pet.setLevel(pet.getLevel() + 1);
- }
- }
- // 总是发送更新包
- c.getSession().write(PetPacket.updatePet(pet, c.getPlayer().getInventory(MapleInventoryType.CASH).getItem((byte) pet.getInventoryPosition()), true));
- c.getPlayer().getMap().broadcastMessage(c.getPlayer(), PetPacket.commandResponse(c.getPlayer().getId(), slot, 1, true), true);
- } else {
- // === 宠物已饱,喂养失败 ===
- if (gainCloseness) {
- int newCloseness = Math.max(pet.getCloseness() - 1, 0);
- pet.setCloseness(newCloseness);
- if (newCloseness < ExpTable.getClosenessNeededForLevel(pet.getLevel())) {
- pet.setLevel(pet.getLevel() - 1);
- }
- // 修复锁定的关键:必须发送更新包!
- c.getSession().write(PetPacket.updatePet(pet, c.getPlayer().getInventory(MapleInventoryType.CASH).getItem((byte) pet.getInventoryPosition()), true));
- }
- c.getPlayer().getMap().broadcastMessage(c.getPlayer(), PetPacket.commandResponse(c.getPlayer().getId(), slot, 1, false), true);
- }
- // 扣除食物(无论成功失败)
- MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, false);
复制代码 |
|