楼主: jerrycheng

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

 

该用户从未签到

新人上路

枫币
22
威望
0
贡献
0
在线时间
1 小时
注册时间
2024-4-17
发表于 2024-4-17 15:49:18 | 显示全部楼层
想看看怎么修复
  • TA的每日心情
    开心
    2021-12-11 11:56
  • 签到天数: 1 天

    [LV.1]初来乍到

    新人上路

    枫币
    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);
    复制代码
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    枫叶物语即使倒闭也绝对不会变质
    Copyright © 2001-2013 Discuz Team. Powered by Discuz! X3.5 |网站地图 | 本站已运行: