修复 MapleStory 缺少 SP 但可点击 Enter 点极限定属性漏洞

这是一个需要进行代码修复的问题,具体操作如下:

  1. distributeHyperSP 方法中加入判断: 如果角色没有足够的 SP,则不给予技能点数,并在客户端提示信息。

  2. 在点击 Enter 时,也要进行 SP 的消耗判断: 如果没有足够的 SP,则不进行属性点的分配,并在客户端提示信息。

  3. 在代码中加入防止漏洞的检查: 避免玩家利用漏洞获得不当的属性点。

  4. 对于已经利用漏洞获得不当属性点值的玩家: 需要进行监视和处理,避免游戏平衡受到严重影响。

代码示例:

public static void distributeHyperSP(int skillid, MapleClient c, MapleCharacter chr, boolean isStat) {
    Skill skill = SkillFactory.getSkill(skillid);
    if (skill != null && (skill.isHyperSkill() || skill.isHyperStat())) {
        if (!isStat) {
            if (chr.getLevel() >= skill.getReqLevel() && skill.canBeLearnedBy(chr.getJob()) && chr.getSkillLevel(skill) == 0 && chr.getSP() >= skill.getSpCost()) { // 添加 SP 判断
                chr.changeSingleSkillLevel(skill, (byte) 1, (byte) skill.getMaxLevel());
                chr.setSP(chr.getSP() - skill.getSpCost()); // 消耗 SP
            } else {
                c.sendEnableActions();
                c.getPlayer().dropMessage(5, '您没有足够的 SP 点数。'); // 提示信息
            }
        } else if (chr.getSkillLevel(skill) < skill.getMaxLevel() && chr.getSP() >= skill.getSpCost()) { // 添加 SP 判断
            if (skillid == 80000406 && !(JobConstants.is惡魔殺手(chr.getJob()) || JobConstants.is神之子(chr.getJob()) || JobConstants.is陰陽師(chr.getJob()))) { //DF
                chr.dropMessage(1, '该技能只有恶魔猎手/神之子可以使用。');
            } else {
                chr.changeSingleSkillLevel(skill, chr.getSkillLevel(skill) + 1, (byte) skill.getMaxLevel());
                chr.setSP(chr.getSP() - skill.getSpCost()); // 消耗 SP
            }
        } else {
            c.sendEnableActions();
            c.getPlayer().dropMessage(5, '您没有足够的 SP 点数。'); // 提示信息
        }
    }
    c.sendEnableActions();
}

其他解决方案:

  • 使用数据库记录玩家 SP 消耗情况,防止重复使用漏洞。
  • 对玩家操作进行记录和监控,及时发现并处理违规行为。

通过以上解决方案,可以有效修复 MapleStory 游戏中缺少 SP 但可点击 Enter 点极限定属性漏洞,维护游戏平衡。


原文地址: https://www.cveoy.top/t/topic/lwLT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录