JohnyDap 36 Опубликовано 23 марта, 2020 всем привет.не могу решить проблема покупаю книги любое количество нажимаю на скил который нужно заточить жму точить забирает все книги. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
serfan1 112 Опубликовано 23 марта, 2020 В ядре чинить Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Euroset 120 Опубликовано 23 марта, 2020 1000 рублей Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
JohnyDap 36 Опубликовано 23 марта, 2020 15 минут назад, serfan1 сказал: В ядре чинить мб знаешь как? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
serfan1 112 Опубликовано 23 марта, 2020 2 минуты назад, Asez сказал: мб знаешь как? знаю Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
JohnyDap 36 Опубликовано 23 марта, 2020 1 минуту назад, serfan1 сказал: знаю поможешь? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
serfan1 112 Опубликовано 23 марта, 2020 Только что, Asez сказал: поможешь? тебе код дать? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
JohnyDap 36 Опубликовано 23 марта, 2020 2 минуты назад, serfan1 сказал: тебе код дать? да) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
JohnyDap 36 Опубликовано 23 марта, 2020 35 минут назад, serfan1 сказал: тебе код дать? book.class да? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
serfan1 112 Опубликовано 23 марта, 2020 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; } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
serfan1 112 Опубликовано 23 марта, 2020 Либо же убрать стак книг в бд и в etcitems (патч) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
JohnyDap 36 Опубликовано 23 марта, 2020 14 минут назад, serfan1 сказал: Либо же убрать стак книг в бд и в etcitems (патч) эсли с бд убрать тогда будет не в 1 столбик да? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
serfan1 112 Опубликовано 23 марта, 2020 1 минуту назад, Asez сказал: эсли с бд убрать тогда будет не в 1 столбик да? да 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты