修复 MapleStory 极限属性漏洞 - 缺少 SP 问题
修复 MapleStory 缺少 SP 但可点击 Enter 点极限定属性漏洞
这是一个需要进行代码修复的问题,具体操作如下:
-
在
distributeHyperSP方法中加入判断: 如果角色没有足够的 SP,则不给予技能点数,并在客户端提示信息。 -
在点击 Enter 时,也要进行 SP 的消耗判断: 如果没有足够的 SP,则不进行属性点的分配,并在客户端提示信息。
-
在代码中加入防止漏洞的检查: 避免玩家利用漏洞获得不当的属性点。
-
对于已经利用漏洞获得不当属性点值的玩家: 需要进行监视和处理,避免游戏平衡受到严重影响。
代码示例:
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 著作权归作者所有。请勿转载和采集!