doktar 1 Опубликовано 24 ноября, 2012 (изменено) перекопал все а толку 0 Изменено 24 ноября, 2012 пользователем doktar Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
jman4ik 103 Опубликовано 24 ноября, 2012 L2PcInstance или тут L2Player. Ищите там есть AUTO_SKILL_LEARN добавьте проверку если чар на сабе то не учить автоматом Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
jman4ik 103 Опубликовано 24 ноября, 2012 Ищите public void giveAvailableSkills() Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
xuser 122 Опубликовано 24 ноября, 2012 Давайте посмотрим L2VillageMasterInstance 394 строка if (!player.addSubClass(paramOne, player.getTotalSubClasses() + 1)) { player.sendMessage(Message.getMessage(player, Message.MessageId.MSG_CANT_ADD_SUB)); return; } Если подумать это выхов функции addSubClass из L2PcInstance и вывод игроку сообщение об ошибке если она не удалось Идём дальше открываем L2PcInstance и ищем addSubClass видим public boolean addSubClass(int classId, int classIndex) { if (getTotalSubClasses() == Config.MAX_SUBCLASS || classIndex == 0) return false; if (getSubClasses().containsKey(classIndex)) return false; // Note: Never change _classIndex in any method other than setActiveClass(). store(true); SubClass newClass = new SubClass(); newClass.setClassId(classId); newClass.setClassIndex(classIndex); Connection con = null; try { // Store the basic info about this new sub-class. con = L2DatabaseFactory.getInstance().getConnection(con); PreparedStatement statement = con.prepareStatement(ADD_CHAR_SUBCLASS); statement.setInt(1, getObjectId()); statement.setInt(2, newClass.getClassId()); statement.setLong(3, newClass.getExp()); statement.setInt(4, newClass.getSp()); statement.setInt(5, newClass.getLevel()); statement.setInt(6, newClass.getClassIndex()); // <-- Added statement.execute(); statement.close(); } catch (Exception e) { _log.warn("WARNING: Could not add character sub class for " + getName() + ": " + e); return false; } finally { try { if (con != null) con.close(); } catch (SQLException e) { e.printStackTrace(); } } // Commit after database INSERT incase exception is thrown. getSubClasses().put(newClass.getClassIndex(), newClass); ClassId subTemplate = ClassId.values()[classId]; Collection<L2SkillLearn> skillTree = SkillTreeTable.getInstance().getAllowedSkills(subTemplate); if (skillTree == null) return true; Map<Integer, L2Skill> prevSkillList = new HashMap<Integer, L2Skill>(); for (L2SkillLearn skillInfo : skillTree) { if (skillInfo.getMinLevel() <= 40) { L2Skill prevSkill = prevSkillList.get(skillInfo.getId()); L2Skill newSkill = SkillTable.getInstance().getInfo(skillInfo.getId(), skillInfo.getLevel()); if (prevSkill != null && (prevSkill.getLevel() >= newSkill.getLevel())) continue; if(newSkill!=null) { prevSkillList.put(newSkill.getId(), newSkill); storeSkill(newSkill, prevSkill, classIndex); } else _log.info("L2PcInstance: Skill "+skillInfo.getId()+" not found for character "+getName()+" ("+getClassId()+")"); } } getStat().resetModifiers(); return true; } Из этой функции собственно вот код дающий скилы новому сабу Collection<L2SkillLearn> skillTree = SkillTreeTable.getInstance().getAllowedSkills(subTemplate); if (skillTree == null) return true; Map<Integer, L2Skill> prevSkillList = new HashMap<Integer, L2Skill>(); for (L2SkillLearn skillInfo : skillTree) { if (skillInfo.getMinLevel() <= 40) { L2Skill prevSkill = prevSkillList.get(skillInfo.getId()); L2Skill newSkill = SkillTable.getInstance().getInfo(skillInfo.getId(), skillInfo.getLevel()); if (prevSkill != null && (prevSkill.getLevel() >= newSkill.getLevel())) continue; if(newSkill!=null) { prevSkillList.put(newSkill.getId(), newSkill); storeSkill(newSkill, prevSkill, classIndex); } else _log.info("L2PcInstance: Skill "+skillInfo.getId()+" not found for character "+getName()+" ("+getClassId()+")"); } } Учитесь шевелить мозгами. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
jman4ik 103 Опубликовано 24 ноября, 2012 По моему тут простг написано что при взятии скба нужно дать все скиллы до 40 лвла а вот чтоб дальше учить авто или вручную нужно в L2PcInstance задать проверку саб или основа для изучения автоматом или вручную это мое мнение а вам решать Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
xuser 122 Опубликовано 24 ноября, 2012 ТС именно просил что-бы скилы 40 лвл при взятии саба не учились. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
doktar 1 Опубликовано 24 ноября, 2012 все спс парни все пашет норм и LeKToR одельное спасибо тему можна закрыть Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты