Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Автоизучение скиллов (need fix)
#1
Опять же всем привет!) Трабла у меня такая: в конфиге включил автоизучение скиллов, перезагрузил сервер, скиллы учатся, НО, например, если я качнусь с 39lvl по 50lvl и возьму вторую профу, то скилы, которые должны появиться после второй профы и на 50lvl - не учатся автоматически. Мне нужно, чтобы скиллы учились автоматом.

ЗЫ. Профа берется В Community / Сборка Maddev Epilogue
Ответ
#2
Известная проблема, подними уровень до 51 или сделай релог.
Если такое не устраивает - перепиши кусок системы...
Ответ
#3
После взятия профы добавить вызов метода updateSkillList().
Ответ
#4
[STIGMATED];219135 Написал:После взятия профы добавить вызов метод updateSkillList().

Если не трудно, то подскажите как.
Ответ
#5
Отследите путь взятия профы в класс L2Player и там поставьте updateSkillList().
Под рукой нет исходников фени, не согу точнее подсказать.
Ответ
#6
Вот код ClassBBSManager.java, думаю где-то здесь:
код
Ответ
#7
Идите в метод setClassId в классе L2Player и ставьте апдейтскиллист.
Ответ
#8
Код:
package l2p.gameserver.communitybbs.Manager;

import javolution.text.TextBuilder;
import l2p.Config;
import l2p.gameserver.cache.Msg;
import l2p.gameserver.model.L2Player;
import l2p.gameserver.model.base.ClassId;
import l2p.gameserver.model.items.L2ItemInstance;
import l2p.gameserver.serverpackets.SystemMessage;
import l2p.gameserver.tables.ItemTable;
import l2p.gameserver.templates.L2Item;
import l2p.util.Files;
import l2p.util.Util;

import java.util.StringTokenizer;

public class ClassBBSManager extends BaseBBSManager
{
    private static ClassBBSManager _Instance = null;

    public static ClassBBSManager getInstance()
    {
        if(_Instance == null)
        {
            _Instance = new ClassBBSManager();
        }
        return _Instance;
    }

    @Override
    public void parsecmd(String command, L2Player activeChar)
    {
        ClassId classId = activeChar.getClassId();
        int jobLevel = classId.getLevel();
        int level = activeChar.getLevel();
        TextBuilder html = new TextBuilder("");
        html.append("<br>");
        html.append("<table width=600>");
        html.append("<tr><td>");
        if(Config.ALLOW_CLASS_MASTERS_LIST.isEmpty() || !Config.ALLOW_CLASS_MASTERS_LIST.contains(jobLevel))
        {
            jobLevel = 4;
        }
        if((level >= 20 && jobLevel == 1 || level >= 40 && jobLevel == 2 || level >= 76 && jobLevel == 3) && Config.ALLOW_CLASS_MASTERS_LIST.contains(jobLevel))
        {
            L2Item item = ItemTable.getInstance().getTemplate(Config.CLASS_MASTERS_PRICE_ITEM);
            html.append("Вы должны заплатить: <font color=\"LEVEL\">");
            html.append(Util.formatAdena(Config.CLASS_MASTERS_PRICE_LIST[jobLevel])).append("</font> <font color=\"LEVEL\">").append(item.getName()).append("</font> для смены профессии<br>");
            html.append("<center><table width=600><tr>");
            for(ClassId cid : ClassId.values())
            {
                if(cid == ClassId.inspector)
                {
                    continue;
                }
                if(cid.childOf(classId) && cid.level() == classId.level() + 1)
                {
                    html.append("<td><center><button value=\"").append(cid.name()).append("\" action=\"bypass -h _bbsclass;change_class;").append(cid.getId()).append(";").append(Config.CLASS_MASTERS_PRICE_LIST[jobLevel]).append("\" width=150 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\"></center></td>");
                }
            }
            html.append("</tr></table></center>");
            html.append("</td>");
            html.append("</tr>");
            html.append("</table>");
        }
        else
        {
            switch(jobLevel)
            {
                case 1:
                    html.append("Приветствую <font color=F2C202>").append(activeChar.getName()).append("</font> ваша текущая профессия <font color=F2C202>").append(activeChar.getClassId().name()).append("</font><br>");
                    html.append("Для того чтобы сменить вашу профессию вы должны достичь: <font color=F2C202>20-го уровня</font><br>");
                    html.append("Для активации сабклассов вы должны достичь <font color=F2C202>76-го уровня</font><br>");
                    html.append("Чтобы стать дворянином вы должны прокачать сабкласс до <font color=F2C202>76-го уровня</font><br>");
                    break;
                case 2:
                    html.append("Приветствую <font color=F2C202>").append(activeChar.getName()).append("</font> ваша текущая профессия <font color=F2C202>").append(activeChar.getClassId().name()).append("</font><br>");
                    html.append("Для того чтобы сменить вашу профессию вы должны достичь: <font color=F2C202>40-го уровня</font><br>");
                    html.append("Для активации сабклассов вы должны достичь <font color=F2C202>76-го уровня</font><br>");
                    html.append("Чтобы стать дворянином вы должны прокачать сабкласс до <font color=F2C202>76-го уровня</font><br>");
                    break;
                case 3:
                    html.append("Приветствую <font color=F2C202>").append(activeChar.getName()).append("</font> ваша текущая профессия <font color=F2C202>").append(activeChar.getClassId().name()).append("</font><br>");
                    html.append("Для того чтобы сменить вашу профессию вы должны достичь: <font color=F2C202>76-го уровня</font><br>");
                    html.append("Для активации сабклассов вы должны достичь <font color=F2C202>76-го уровня</font><br>");
                    html.append("Чтобы стать дворянином вы должны прокачать сабкласс до <font color=F2C202>76-го уровня</font><br>");
                    break;
                case 4:
                    html.append("Приветствую <font color=F2C202>").append(activeChar.getName()).append("</font> ваша текущая профессия <font color=F2C202>").append(activeChar.getClassId().name()).append("</font><br>");
                    html.append("Для вас больше нет доступных профессий, либо Класс мастер в данный момент недоступен.<br>");
                    if(level >= 76)
                    {
                        html.append("Вы достигли <font color=F2C202>76-го уровня</font> активация сабклассов теперь доступна<br>");
                        if(!activeChar.isNoble())
                        {
                            html.append("Вы можете получить дворянство. Посетите раздел 'Магазин'.<br>");
                        }
                        else
                        {
                            html.append("Вы уже дворянин. Получение дворянства более не доступно.<br>");
                        }
                    }
                    break;
            }
        }
        String content = Files.read("data/html/CommunityBoardPVP/80.htm");
        content = content.replace("%classmaster%", html.toString());
        separateAndSend(content, activeChar);
        if(command.startsWith("_bbsclass;change_class;"))
        {
            StringTokenizer st = new StringTokenizer(command, ";");
            st.nextToken();
            st.nextToken();
            short val = Short.parseShort(st.nextToken());
            int price = Integer.parseInt(st.nextToken());
            L2Item item = ItemTable.getInstance().getTemplate(Config.CLASS_MASTERS_PRICE_ITEM);
            L2ItemInstance pay = activeChar.getInventory().getItemByItemId(item.getItemId());
            if(pay != null && pay.getCount() >= price)
            {
                activeChar.getInventory().destroyItem(pay, (long) price, true);
                changeClass(activeChar, val);
                parsecmd("_bbsclass;", activeChar);
            }
            else if(Config.CLASS_MASTERS_PRICE_ITEM == 57)
            {
                activeChar.sendPacket(new SystemMessage(SystemMessage.YOU_DO_NOT_HAVE_ENOUGH_ADENA));
            }
            else
            {
                activeChar.sendPacket(new SystemMessage(SystemMessage.YOU_DO_NOT_HAVE_ENOUGH_ADENA));
            }
        }
    }

    private void changeClass(L2Player player, int val)
    {
        if(player.getClassId().getLevel() == 3)
        {
            player.sendPacket(Msg.YOU_HAVE_COMPLETED_THE_QUEST_FOR_3RD_OCCUPATION_CHANGE_AND_MOVED_TO_ANOTHER_CLASS_CONGRATULATIONS); // для 3 профы
        }
        else
        {
            player.sendPacket(Msg.CONGRATULATIONS_YOU_HAVE_TRANSFERRED_TO_A_NEW_CLASS);
        } // для 1 и 2 профы
        player.setClassId(val, false);
        player.broadcastUserInfo(true);
        [color=Red]player.updateSkillList();[/color]
    }

    @Override
    public void parsewrite(String ar1, String ar2, String ar3, String ar4, String ar5, L2Player activeChar)
    {}
}
Fortuna - non penis, in manus non recipe.
Ответ
#9
Ashe, не компилится:


Код:
Compile:
   [delete] Deleting directory d:\dev\eclipse_core_2\L2md\build2
    [mkdir] Created dir: d:\dev\eclipse_core_2\L2md\build2
    [mkdir] Created dir: d:\dev\eclipse_core_2\L2md\build2\classes
    [javac] Compiling 1622 source files to d:\dev\eclipse_core_2\L2md\build2\classes
    [javac] d:\dev\eclipse_core_2\L2md\source\l2p\gameserver\communitybbs\Manager\ClassBBSManager.java:147: cannot find symbol
    [javac] symbol  : method updateSkillList()
    [javac] location: class l2p.gameserver.model.L2Player
    [javac]         player.updateSkillList();
    [javac]               ^
    [javac] 1 error

BUILD FAILED
d:\dev\eclipse_core_2\L2md\OnlyCore.xml:31: Compile failed; see the compiler error output for details.

Total time: 59 seconds
Ответ
#10
Так и думал. С методом промахнулись, так что смотрите сами.
Fortuna - non penis, in manus non recipe.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  id скиллов T0T0 8 1,520 01-30-2015, 06:16 AM
Последний пост: [Shadow]
  заточка скиллов в 1 клик guruw 6 1,496 08-08-2013, 01:55 AM
Последний пост: L2scripts-Guard
  Скрипт на заточку 3-профных скиллов DeLone 18 5,445 07-18-2013, 08:24 PM
Последний пост: gorodetskiy
  Таблица замены скиллов Lindvior Krasavella 0 1,302 06-04-2013, 10:13 PM
Последний пост: Krasavella
  Повторное использование скиллов (олимпиада) - Interlude Java Gamlet 23 4,368 03-31-2013, 04:35 PM
Последний пост: Gamlet
  Панель персонажа - пропажа скиллов! Krasavella 11 3,931 02-22-2013, 08:57 PM
Последний пост: Krasavella
  Проблема с загрузкой скиллов SapFIR 7 1,633 08-18-2012, 05:43 PM
Последний пост: SapFIR
  Статы от новых скиллов Гнома GOODPower 14 2,635 05-31-2012, 10:48 PM
Последний пост: L2scripts-Guard
  Нет анимации скиллов. fedmen 2 1,752 04-30-2012, 09:17 PM
Последний пост: L2scripts-Guard
  Изучение клан скиллов Ambrozie 9 2,049 04-15-2012, 04:59 PM
Последний пост: Ro_0TT

Перейти к форуму:


Пользователи, просматривающие эту тему: 5 Гость(ей)