Перейти к содержанию
Авторизация  
JohnyDap

проблема при заточке скилов

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

всем привет.не могу решить проблема покупаю книги любое количество нажимаю на скил который нужно заточить жму точить забирает все книги.

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


Ссылка на сообщение
Поделиться на другие сайты
15 минут назад, serfan1 сказал:

В ядре чинить

мб знаешь как?

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


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, Asez сказал:

мб знаешь как?

знаю

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


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, serfan1 сказал:

знаю

поможешь?

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


Ссылка на сообщение
Поделиться на другие сайты
Только что, Asez сказал:

поможешь?

тебе код дать?

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


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, serfan1 сказал:

тебе код дать?

да)

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


Ссылка на сообщение
Поделиться на другие сайты
35 минут назад, serfan1 сказал:

тебе код дать?

book.class да?

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


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, Asez сказал:

book.class да?

Спойлер

 

package net.sf.l2j.gameserver.network.clientpackets;

import javolution.util.FastTable;
import net.sf.l2j.Config;
import net.sf.l2j.gameserver.cache.Static;
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.datatables.SkillTreeTable;
import net.sf.l2j.gameserver.model.L2EnchantSkillLearn;
import net.sf.l2j.gameserver.model.L2ShortCut;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.actor.instance.L2FolkInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.actor.stat.PcStat;
import net.sf.l2j.gameserver.model.base.ClassId;
import net.sf.l2j.gameserver.network.L2GameClient;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.network.serverpackets.ShortCutRegister;
import net.sf.l2j.gameserver.network.serverpackets.StatusUpdate;
import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
import net.sf.l2j.util.Rnd;

public final class RequestExEnchantSkill
  extends L2GameClientPacket
{
  public static boolean CONSUME_EACH_LVL = false;
  public static boolean RESET_LVL_ON_FAIL = true;
  private int _skillId;
  private int _skillLvl;
  
  protected void readImpl()
  {
    this._skillId = readD();
    this._skillLvl = readD();
  }
  
  protected void runImpl()
  {
    L2PcInstance player = ((L2GameClient)getClient()).getActiveChar();
    if (player == null) {
      return;
    }
    L2FolkInstance trainer = player.getLastFolkNPC();
    if (trainer == null) {
      return;
    }
    int npcid = trainer.getNpcId();
    if (((trainer == null) || (!player.isInsideRadius(trainer, 150, false, false))) && (!player.isGM())) {
      return;
    }
    if (player.getSkillLevel(this._skillId) >= this._skillLvl) {
      return;
    }
    if (player.getClassId().getId() < 88) {
      return;
    }
    if (player.getLevel() < 76) {
      return;
    }
    L2Skill skill = SkillTable.getInstance().getInfo(this._skillId, this._skillLvl);
    
    int counts = 0;
    int _requiredSp = 10000000;
    int _requiredExp = 100000;
    byte _rate = 0;
    int _baseLvl = 1;
    
    L2EnchantSkillLearn[] skills = SkillTreeTable.getInstance().getAvailableEnchantSkills(player);
    L2EnchantSkillLearn[] arrayOfL2EnchantSkillLearn1;
    int j = (arrayOfL2EnchantSkillLearn1 = skills).length;
    for (int i = 0; i < j; i++)
    {
      L2EnchantSkillLearn s = arrayOfL2EnchantSkillLearn1;
      
      L2Skill sk = SkillTable.getInstance().getInfo(s.getId(), s.getLevel());
      if ((sk != null) && (sk == skill) && (sk.getCanLearn(player.getClassId())) && 
        (sk.canTeachBy(npcid)))
      {
        counts++;
        _requiredSp = s.getSpCost();
        _requiredExp = s.getExp();
        _rate = s.getRate(player, (Config.PREMIUM_ENABLE) && (player.isPremium()));
        _baseLvl = s.getBaseLevel();
      }
    }
    if ((counts == 0) && (!Config.ALT_GAME_SKILL_LEARN))
    {
      player.sendPacket(Static.CANT_LEARN_SKILL);
      
      return;
    }
    if (player.getSp() >= _requiredSp)
    {
      if (player.getExp() >= _requiredExp)
      {
        if ((Config.ES_SP_BOOK_NEEDED) && ((CONSUME_EACH_LVL) || (this._skillLvl == 101) || (this._skillLvl == 141)))
        {
          int spbId = 6622;
          if (!player.destroyItemByItemId("Consume", spbId, 1, trainer, true)) {
            player.sendPacket(Static.YOU_DONT_HAVE_ALL_OF_THE_ITEMS_NEEDED_TO_ENCHANT_THAT_SKILL);
          }
        }
      }
      else {
        player.sendPacket(Static.YOU_DONT_HAVE_ENOUGH_EXP_TO_ENCHANT_THAT_SKILL);
      }
    }
    else
    {
      player.sendPacket(Static.YOU_DONT_HAVE_ENOUGH_SP_TO_ENCHANT_THAT_SKILL);
      return;
    }
    if (Rnd.get(100) <= _rate)
    {
      player.addSkill(skill, true);
      player.getStat().removeExpAndSp(_requiredExp, _requiredSp);
      
      StatusUpdate su = new StatusUpdate(player.getObjectId());
      su.addAttribute(13, player.getSp());
      player.sendPacket(su);
      
      sendPacket(SystemMessage.id(SystemMessageId.EXP_DECREASED_BY_S1).addNumber(_requiredExp));
      sendPacket(SystemMessage.id(SystemMessageId.SP_DECREASED_S1).addNumber(_requiredSp));
      player.sendPacket(SystemMessage.id(SystemMessageId.YOU_HAVE_SUCCEEDED_IN_ENCHANTING_THE_SKILL_S1).addSkillName(this._skillId));
    }
    else
    {
      if ((RESET_LVL_ON_FAIL) && (skill.getLevel() > 100))
      {
        this._skillLvl = _baseLvl;
        player.addSkill(SkillTable.getInstance().getInfo(this._skillId, this._skillLvl), true);
        player.sendSkillList();
      }
      player.sendPacket(SystemMessage.id(SystemMessageId.YOU_HAVE_FAILED_TO_ENCHANT_THE_SKILL_S1).addSkillName(this._skillId));
    }
    trainer.showEnchantSkillList(player, player.getClassId());
    
    FastTable<L2ShortCut> allShortCuts = new FastTable();
    allShortCuts.addAll(player.getAllShortCuts());
    int i = 0;
    for (int n = allShortCuts.size(); i < n; i++)
    {
      L2ShortCut sc = (L2ShortCut)allShortCuts.get(i);
      if (sc != null) {
        if ((sc.getId() == this._skillId) && (sc.getType() == 2))
        {
          L2ShortCut newsc = new L2ShortCut(sc.getSlot(), sc.getPage(), sc.getType(), sc.getId(), this._skillLvl, 1);
          player.sendPacket(new ShortCutRegister(newsc));
          player.registerShortCut(newsc);
        }
      }
    }
    allShortCuts.clear();
    allShortCuts = null;
  }
}

 

 

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


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

Либо же убрать стак книг в бд и в etcitems (патч)

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


Ссылка на сообщение
Поделиться на другие сайты
14 минут назад, serfan1 сказал:

Либо же убрать стак книг в бд и в etcitems (патч)

эсли с бд убрать тогда будет не в 1 столбик да?

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


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Asez сказал:

эсли с бд убрать тогда будет не в 1 столбик да?

да

  • Upvote 1

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


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

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

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

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

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

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

Войти

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

Войти
Авторизация  

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

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

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