楼主: jerrycheng

修复未开启宠物的情况下使用宠物食品的物品BUG

 火.. [复制链接]

新人上路

枫币
22
威望
0
贡献
0
在线时间
1 小时
注册时间
2024-4-17
发表于 2024-4-17 15:49:18 | 显示全部楼层
想看看怎么修复

新人上路

枫币
116
威望
0
贡献
1
在线时间
7 小时
注册时间
2021-12-11
发表于 2024-12-14 20:45:53 | 显示全部楼层
学习一下
回复

使用道具 举报

新人上路

枫币
68
威望
0
贡献
0
在线时间
7 小时
注册时间
2025-9-9
发表于 2025-9-16 01:37:42 | 显示全部楼层
6666666666666666

新人上路

枫币
67
威望
0
贡献
0
在线时间
10 小时
注册时间
2019-2-19
QQ
发表于 2026-3-14 12:00:25 | 显示全部楼层
123336666666666666666

新人上路

枫币
71
威望
0
贡献
0
在线时间
14 小时
注册时间
2026-2-19
QQ
发表于 2026-3-16 00:46:50 | 显示全部楼层
修复未开启宠物的情况下使用宠物食品的物品BUG

新人上路

枫币
71
威望
0
贡献
0
在线时间
14 小时
注册时间
2026-2-19
QQ
发表于 2026-3-16 00:47:26 | 显示全部楼层
这个BUG会导致物品栏甚至角色锁定,修复办法:

新人上路

枫币
30
威望
0
贡献
0
在线时间
2 小时
注册时间
2026-5-3
QQ
发表于 2026-5-3 17:28:32 | 显示全部楼层
这个端的BUG有点多哦

新人上路

枫币
30
威望
0
贡献
0
在线时间
2 小时
注册时间
2026-5-3
QQ
发表于 2026-5-3 17:37:47 | 显示全部楼层
AI说你这段无法解决问题 还是有可能卡死  他给了个自认为完美的版本
  1. MaplePet pet = c.getPlayer().getPet(slot);
  2. slea.readInt();
  3. slea.readShort();
  4. int itemId = slea.readInt();

  5. // 安全校验:宠物不存在或食物ID无效时直接中断,避免后续空指针
  6. if (pet == null || itemId <= 0) {
  7.     c.getSession().write(MaplePacketCreator.enableActions());
  8.     return;
  9. }

  10. boolean gainCloseness = Randomizer.nextInt(101) > 50;

  11. // 常量,方便你调整数值
  12. final int FULLNESS_MAX = 100;
  13. final int FULLNESS_INCREASE = 30;
  14. final int CLOSENESS_MAX = 30000;

  15. if (pet.getFullness() < FULLNESS_MAX) {
  16.     // === 喂养成功 ===
  17.     pet.setFullness(Math.min(pet.getFullness() + FULLNESS_INCREASE, FULLNESS_MAX));

  18.     if (gainCloseness && pet.getCloseness() < CLOSENESS_MAX) {
  19.         int newCloseness = Math.min(pet.getCloseness() + 1, CLOSENESS_MAX);
  20.         pet.setCloseness(newCloseness);
  21.         if (newCloseness >= ExpTable.getClosenessNeededForLevel(pet.getLevel() + 1)) {
  22.             pet.setLevel(pet.getLevel() + 1);
  23.         }
  24.     }

  25.     // 总是发送更新包
  26.     c.getSession().write(PetPacket.updatePet(pet, c.getPlayer().getInventory(MapleInventoryType.CASH).getItem((byte) pet.getInventoryPosition()), true));
  27.     c.getPlayer().getMap().broadcastMessage(c.getPlayer(), PetPacket.commandResponse(c.getPlayer().getId(), slot, 1, true), true);

  28. } else {
  29.     // === 宠物已饱,喂养失败 ===
  30.     if (gainCloseness) {
  31.         int newCloseness = Math.max(pet.getCloseness() - 1, 0);
  32.         pet.setCloseness(newCloseness);
  33.         if (newCloseness < ExpTable.getClosenessNeededForLevel(pet.getLevel())) {
  34.             pet.setLevel(pet.getLevel() - 1);
  35.         }
  36.         // 修复锁定的关键:必须发送更新包!
  37.         c.getSession().write(PetPacket.updatePet(pet, c.getPlayer().getInventory(MapleInventoryType.CASH).getItem((byte) pet.getInventoryPosition()), true));
  38.     }

  39.     c.getPlayer().getMap().broadcastMessage(c.getPlayer(), PetPacket.commandResponse(c.getPlayer().getId(), slot, 1, false), true);
  40. }

  41. // 扣除食物(无论成功失败)
  42. MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, false);
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|枫叶物语冒险岛单机 | 本站已运行:

枫叶物语可能会倒闭,但是绝对不会变质。

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖QQ客服返回顶部