Ошибка Npc

Егоровна

Знаменитый
Участник
Сообщения
82
Розыгрыши
0
Репутация
0
Реакции
9
Баллы
1 260
Хроники
  1. Salvation
Исходники
Присутствуют
Сборка
L2J_Mobius_05.0_Salvation
Здравствуйте
Сборка L2J_Mobius_05.0_Salvation
При старте вот такая ошибка с NPC


Код:
[27/09 22:45:10] Error while spawning 22788
java.lang.NullPointerException: Cannot invoke "org.l2jmobius.gameserver.model.StatSet.getBoolean(String, boolean)" because the return value of "org.l2jmobius.gameserver.model.spawns.SpawnTemplate.getParameters()" is null
    at ai.others.Spawns.NoRandomActivity.onSpawnNpc(NoRandomActivity.java:37)
    at org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate.lambda$notifySpawnNpc$1(NpcSpawnTemplate.java:484)
    at org.l2jmobius.gameserver.model.spawns.SpawnTemplate.notifyEvent(SpawnTemplate.java:156)
    at org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate.notifySpawnNpc(NpcSpawnTemplate.java:484)
    at org.l2jmobius.gameserver.model.Spawn.initializeNpc(Spawn.java:474)
    at org.l2jmobius.gameserver.model.Spawn.doSpawn(Spawn.java:364)
    at org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate.spawnNpc(NpcSpawnTemplate.java:460)
    at org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate.spawn(NpcSpawnTemplate.java:385)
    at org.l2jmobius.gameserver.model.spawns.SpawnGroup.lambda$spawnAll$0(SpawnGroup.java:137)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1597)
    at org.l2jmobius.gameserver.model.spawns.SpawnGroup.spawnAll(SpawnGroup.java:137)
    at org.l2jmobius.gameserver.model.spawns.SpawnTemplate.spawn(SpawnTemplate.java:167)
    at org.l2jmobius.gameserver.model.spawns.SpawnTemplate.spawnAll(SpawnTemplate.java:179)
    at org.l2jmobius.gameserver.data.xml.SpawnData.init(SpawnData.java:132)
    at org.l2jmobius.gameserver.GameServer.<init>(GameServer.java:380)
    at org.l2jmobius.gameserver.GameServer.main(GameServer.java:508)
 
Решение
Искать в исходниках или в сборке?
Поиском 22788 по файлам спавна в датапаке, и добавляем параметры
XML:
        <parameters>
            <param name="disableRandomAnimation" value="true" />
            <param name="disableRandomWalk" value="true" />
        </parameters>
1727508018217.png

Странно что в классе NoRandomActivity в методе onSpawnNpc перед вызовом метода template.getParameters() не стоит проверка того самого template на null
Ну так у тебя ясно и понятно же в ошибке все написано о причине.
У тебя спавнится нпс 22788, у которого при спавне пытается судя по всему прочесть булевый параметр AI из данных нпс или данных конкретного спавна, но вместо ожидаемых данных что-то получается не то.

Смотри вобщем 37 строку класса NoRandomActivity, ну и дальше по цепочке вызовов, если это необходимо.
 
Ну так у тебя ясно и понятно же в ошибке все написано о причине.
У тебя спавнится нпс 22788, у которого при спавне пытается судя по всему прочесть булевый параметр AI из данных нпс или данных конкретного спавна, но вместо ожидаемых данных что-то получается не то.

Смотри вобщем 37 строку класса NoRandomActivity, ну и дальше по цепочке вызовов, если это необходимо.
Все равно не понимаю где искать , взял сборку L2J_Mobius_04.0_GrandCrusade запустил ее и все норм.
Сравнил файлы NoRandomActivity они идентичны , npc проверил по id тоже все нормально....
 
ошибка выдается на строке
Java:
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
вот и смотри где у тебя там для нпс задается кривое значение для параметра AI disableRandomAnimation
 
ошибка выдается на строке
Java:
npc.setRandomAnimation(!template.getParameters().getBoolean("disableRandomAnimation", false));
вот и смотри где у тебя там для нпс задается кривое значение для параметра AI disableRandomAnimation
А можно по подробнее ... Смотреть Где?)
Них....я не понятно
Как для глупого)
открываешь исходный код папка JAVA файл NoRandomActivity
Или открываешь сборку scripts \spawn\ NoRandomActivity
Для меня это темный лес(
 
так сложно поискать по хмлкам ид нужного нпс и то что где-то там для него выставляется криво этот параметр?
 
так сложно поискать по хмлкам ид нужного нпс и то что где-то там для него выставляется криво этот параметр?
Я не говорю что сложно)
Ищу, но возможно не в том направлении(
Искать в исходниках или в сборке?
 
Я вот уже даже не знаю - ты это все всерьез спрашиваешь или просто издеваешься...
Вместо ожидания ответов в теме можно было давно уже везде по сборке поискать, где упоминается ид 22788, а затем в найденном поискать строку "disableRandomAnimation"...

Если тебя в ступор вводят даже такие мелкие проблемы, то как ты будешь решать более серьезные проблемы, которые у тебя 100% будут? Не будешь же с каждой из них бежать сюда....
 
Последнее редактирование:
Искать в исходниках или в сборке?
Поиском 22788 по файлам спавна в датапаке, и добавляем параметры
XML:
        <parameters>
            <param name="disableRandomAnimation" value="true" />
            <param name="disableRandomWalk" value="true" />
        </parameters>
1727508018217.png

Странно что в классе NoRandomActivity в методе onSpawnNpc перед вызовом метода template.getParameters() не стоит проверка того самого template на null
 
Решение
Ну template равным null быть не может уж точно - это ведь "шаблон" самого нпс и если бы он был null, там намного раньше бы посыпались ошибки.
тут или getParameters() возвращает null, что опять же достаточно бредово - т.к. даже при отсутсвии параметров должна быть хотя бы пустая мапа/коллекция, или же как писал выше - где-то для 22788 значение disableRandomAnimation" выставлено кривым, т.е. не true/false а например число или строка.
 
Ну template равным null быть не может уж точно - это ведь "шаблон" самого нпс и если бы он был null, там намного раньше бы посыпались ошибки.
тут или getParameters() возвращает null, что опять же достаточно бредово - т.к. даже при отсутсвии параметров должна быть хотя бы пустая мапа/коллекция, или же как писал выше - где-то для 22788 значение disableRandomAnimation" выставлено кривым, т.е. не true/false а например число или строка.
Все получилось
Вставил строки
<parameters>
<param name="disableRandomAnimation" value="true" />
<param name="disableRandomWalk" value="true" />
</parameters>
 
Ну template равным null быть не может уж точно - это ведь "шаблон" самого нпс и если бы он был null, там намного раньше бы посыпались ошибки.
тут или getParameters() возвращает null
противоречивое заявление, как бы) раз "шаблон" (он же StatSet) не может быть null, то и метод getParameters не должен возвращать null поскольку возвращает тот же шаблон (StatSet)

Метод getBoolean также не выбросил бы НПЕ при условии "мапка" инициализирована, даже будучи пустой. А вот то, что мапка была null, могло как-раз таки вызвать подобное исключение.

Java:
    /**
     * Return the boolean value associated with key.<br>
     * If no value is associated with key, or type of value is wrong, returns defaultValue.
     * @param key : String designating the key in the entry set
     * @return boolean : value associated to the key
     */
    @Override
    public boolean getBoolean(String key, boolean defaultValue)
    {
        final Object val = _set.get(key);
        if (val == null)
        {
            return defaultValue;
        }
        if (val instanceof Boolean)
        {
            return ((Boolean) val).booleanValue();
        }
        try
        {
            return Boolean.parseBoolean((String) val);
        }
        catch (Exception e)
        {
            return defaultValue;
        }
    }


тут или getParameters() возвращает null, что опять же достаточно бредово - т.к. даже при отсутсвии параметров должна быть хотя бы пустая мапа/коллекция
Так что пожалуй соглашусь, что template мог быть и не null, а не инициализированная мапка, которую возвращает getParameters.
Хотя в исходах 05.0_Salvation, которые волялись у меня, присутсвует проверка getParameters на null
Java:
        final StatSet parameters = template.getParameters();
        if (parameters == null)
        {
            return;
        }
 
Последнее редактирование:
противоречивое заявление, как бы) раз "шаблон" (он же StatSet) не может быть null
Под "шаблоном" я подразумевал NpcTemplate или как там у мобиуса оное зовется, не StatsSet.
 
Назад
Сверху Снизу