M14man 0 Опубликовано 11 часов назад (изменено) Спойлер package net.sf.l2j.gameserver.handler.itemhandlers; import java.util.logging.Logger; import net.sf.l2j.gameserver.handler.IItemHandler; import net.sf.l2j.gameserver.model.actor.Playable; import net.sf.l2j.gameserver.model.actor.Player; import net.sf.l2j.gameserver.model.item.instance.ItemInstance; import net.sf.l2j.gameserver.skills.L2Skill; import net.sf.l2j.gameserver.network.serverpackets.SkillList; import net.sf.l2j.gameserver.data.SkillTable; import net.sf.l2j.gameserver.model.holder.IntIntHolder; import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse; /** * ForgottenScroll by Atrein */ public class ForgottenScroll implements IItemHandler { private static final Logger _log = Logger.getLogger(ForgottenScroll.class.getName()); @Override public void useItem(Playable playable, ItemInstance item, boolean forceUse) { if (!(playable instanceof Player)) return; Player player = (Player) playable; IntIntHolder[] skills = item.getEtcItem().getEtcSkills(); if (skills == null || skills.length == 0) { player.sendMessage("This item does not contain any skills."); return; } boolean learned = false; for (IntIntHolder holder : skills) { int skillId = holder.getId(); int skillLevel = holder.getValue(); int knownLevel = player.getSkillLevel(skillId); if (knownLevel >= skillLevel) { player.sendMessage("You already know this skill or a higher level."); continue; } L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLevel); if (skill == null) { player.sendMessage("This skill is not available."); continue; } player.addSkill(skill, true); player.sendMessage("You have learned the skill " + skill.getName() + " Lv." + skill.getLevel() + "."); _log.info("[ForgottenScroll] Player " + player.getName() + " learned skill: " + skill.getName() + " Lv." + skill.getLevel() + " using item ID: " + item.getItemId()); learned = true; } if (learned) { if (!player.destroyItem(item, 1, false)) { player.sendMessage("Item could not be consumed."); return; } player.broadcastPacket(new MagicSkillUse(player, player, 1323, 1, 1000, 0)); player.sendPacket(new SkillList(player)); } else { player.sendMessage("You did not learn any new skills."); } } } КЛИК КНИГИ СКИЛОВ КОД.txt Изменено 11 часов назад пользователем M14man Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
M14man 0 Опубликовано 11 часов назад 2 минуты назад, M14man сказал: Показать контент package net.sf.l2j.gameserver.handler.itemhandlers; import java.util.logging.Logger; import net.sf.l2j.gameserver.handler.IItemHandler; import net.sf.l2j.gameserver.model.actor.Playable; import net.sf.l2j.gameserver.model.actor.Player; import net.sf.l2j.gameserver.model.item.instance.ItemInstance; import net.sf.l2j.gameserver.skills.L2Skill; import net.sf.l2j.gameserver.network.serverpackets.SkillList; import net.sf.l2j.gameserver.data.SkillTable; import net.sf.l2j.gameserver.model.holder.IntIntHolder; import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse; /** * ForgottenScroll by Atrein */ public class ForgottenScroll implements IItemHandler { private static final Logger _log = Logger.getLogger(ForgottenScroll.class.getName()); @Override public void useItem(Playable playable, ItemInstance item, boolean forceUse) { if (!(playable instanceof Player)) return; Player player = (Player) playable; IntIntHolder[] skills = item.getEtcItem().getEtcSkills(); if (skills == null || skills.length == 0) { player.sendMessage("This item does not contain any skills."); return; } boolean learned = false; for (IntIntHolder holder : skills) { int skillId = holder.getId(); int skillLevel = holder.getValue(); int knownLevel = player.getSkillLevel(skillId); if (knownLevel >= skillLevel) { player.sendMessage("You already know this skill or a higher level."); continue; } L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLevel); if (skill == null) { player.sendMessage("This skill is not available."); continue; } player.addSkill(skill, true); player.sendMessage("You have learned the skill " + skill.getName() + " Lv." + skill.getLevel() + "."); _log.info("[ForgottenScroll] Player " + player.getName() + " learned skill: " + skill.getName() + " Lv." + skill.getLevel() + " using item ID: " + item.getItemId()); learned = true; } if (learned) { if (!player.destroyItem(item, 1, false)) { player.sendMessage("Item could not be consumed."); return; } player.broadcastPacket(new MagicSkillUse(player, player, 1323, 1, 1000, 0)); player.sendPacket(new SkillList(player)); } else { player.sendMessage("You did not learn any new skills."); } } } КЛИК КНИГИ СКИЛОВ КОД.txt 5.42 \u043a\u0411 · 1 download Как правильно прописать :? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 2 часа назад 1. Нельзя вызывать методы вне класса или функции. 2. Посмотри, как реализовано на примере других предметов. Ты явно не в том классе пытаешься это внедрить. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты