Перейти к содержанию
M14man

aCis 409 ForgottenScroll >----heelp---<

Рекомендуемые сообщения

Спойлер

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

Снимок экрана 2026-01-12 222434.png

Изменено пользователем M14man

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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

Снимок экрана 2026-01-12 222434.png

Как правильно прописать :?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Нельзя вызывать методы вне класса или функции.

2. Посмотри, как реализовано на примере других предметов. Ты явно не в том классе пытаешься это внедрить. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...