M14man 0 Опубликовано 12 января (изменено) Спойлер 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 Изменено 12 января пользователем M14man Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
M14man 0 Опубликовано 12 января 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 Опубликовано 13 января 1. Нельзя вызывать методы вне класса или функции. 2. Посмотри, как реализовано на примере других предметов. Ты явно не в том классе пытаешься это внедрить. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты