Названия квестов.

Maiden7

Величайший
Проверенный
Сообщения
779
Розыгрыши
0
Решения
3
Репутация
170
Реакции
621
Баллы
1 563
Хроники
  1. Chaotic Throne: High Five
Исходники
Присутствуют
Сборка
L2J Mobius
Всем привет.
Поиском пользовался, все похожие темы читал.
У меня у 1 НИПА 2 квеста.
Когда Кв был 1 все отображалось хорошо, когда я в НИПа добавил еще один квест, получил вот такую чтуку:

На похожие темы давно натыкался, кроме Questname.dat ничего в голову не приходит, но там все в порядке.

 
По мобиусу нашел такое:
Скрытое содержимое доступно для зарегистрированных пользователей!
 
По мобиусу нашел такое:
*** Скрытый текст не может быть процитирован. ***
Да у меня и без этого добавляялся же квест.
Это все для GOD и выше я думаю.
В ХФ клиенте нет QuestMarkConditionData.
 
Основное это QuestMasterHandler.java
Без QuestMasterHandler.java не было бы и

1742877581842.webp [/СПОЙЛЕР]

В этом и прикол, я соблюдал все условия как и при добавлении первого квеста.
1 квест отображает, а если два , то нет.
 
Без QuestMasterHandler.java не было бы и

Хмм, название квеста должно брать с клиента.
Помню на фениксе так было, у мобиуса как то странно.

Попробуйте скопировать в клиенте questname строчку с названием квеста который показывало у этого нпц и дать номер предпоследний в датнике 57999 например.

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

Нашел в мобиусе еще:
 
Последнее редактирование:
Хмм, название квеста должно брать с клиента.
Помню на фениксе так было, у мобиуса как то странно.

Попробуйте скопировать в клиенте questname строчку с названием квеста который показывало у этого нпц и дать номер предпоследний в датнике 57999 например.

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

Нашел в мобиусе еще:
Проверяю. Спасибо снова.

Не помогло.
 

Maiden7

You need to add your quest to NpcString.dat like this example for quest 1506

Код:
550601 a,Road to the Orbis Temple\0
550602 a,Road to the Orbis Temple (In Progress)\0
550603 a,Road to the Orbis Temple (Done)\0

this is my custom quests you can change the name with your quest name and if quest is repeatable add like this

Код:
550701 a,Search For The Evil King\0
550702 a,Search For The Evil King (In Progress)\0
 
Последнее редактирование:
Yes, you should add npcstrings for client part. It always start with like number 123456_ and last digit should be quest state (1 - start, 2 - in progress, 3 - completed). Also for GoD versions there was one more case (4 - fail), which was for quest that should be listed in quest list (red color), but player did not meet conditions.
 
like this example for quest 1506
How quest 1506

550601 a,Road to the Orbis Temple\0 550602 a,Road to the Orbis Temple (In Progress)\0 550603 a,Road to the Orbis Temple (Done)\0
related to these numbers?

Mabe 5506?


Код:
1050601    u,Малое Вечное Зелье Жизненной Силы\0
1050602    u,Малое Вечное Зелье Жизненной Силы (в процессе)\0
1050603    u,Малое Вечное Зелье Жизненной Силы (завершено)\0
1050701    u,Малое Вечное Зелье Ментальной Силы\0
1050702    u,Малое Вечное Зелье Ментальной Силы (в процессе)\0
1050703    u,Малое Вечное Зелье Ментальной Силы (завершено)\0

 
Последнее редактирование:
Для квестов с ид ниже 10000 ид строк для NpcString формируются как id * 100 + state, а для 10000+ как (id - 5000) * 100 + state
  • id - ид квеста
  • state - статус квеста, от 1 до 3 (или до 4, но не в случае хф): не взято, выполняется, завершено
 
QuestLink.java
Java:
        for (Quest quest : questList)
        {
            final QuestState qs = player.getQuestState(quest.getScriptName());
            if ((qs == null) || qs.isCreated() || (qs.isCompleted() && qs.isNowAvailable()))
            {
                final String startConditionHtml = quest.getStartConditionHtml(player, npc);
                if (((startConditionHtml != null) && startConditionHtml.isEmpty()) || !startingQuests.contains(quest))
                {
                    continue;
                }
                else if (startingQuests.contains(quest) && quest.canStartQuest(player))
                {
                    startCount++;
                    startQuest = quest.getName();
                    
                    sbCanStart.append("<font color=\"bbaa88\">");
                    sbCanStart.append("<button icon=\"quest\" align=\"left\" action=\"bypass -h npc_" + npc.getObjectId() + "_Quest " + quest.getName() + "\">");
                    String localisation = quest.isCustomQuest() ? quest.getPath() : "<fstring>" + quest.getNpcStringId() + "01</fstring>";
                    if (Config.MULTILANG_ENABLE)
                    {
                        final NpcStringId ns = NpcStringId.getNpcStringId(Integer.parseInt(quest.getNpcStringId() + "01"));
                        if (ns != null)
                        {
                            final NSLocalisation nsl = ns.getLocalisation(player.getLang());
                            if (nsl != null)
                            {
                                localisation = nsl.getLocalisation(Collections.emptyList());
                            }
                        }
                    }
                    sbCanStart.append(localisation);
                    sbCanStart.append("</button></font>");
                }
                else
                {
                    sbCantStart.append("<font color=\"a62f31\">");
                    sbCantStart.append("<button icon=\"quest\" align=\"left\" action=\"bypass -h npc_" + npc.getObjectId() + "_Quest " + quest.getName() + "\">");
                    String localisation = quest.isCustomQuest() ? quest.getPath() : "<fstring>" + quest.getNpcStringId() + "01</fstring>";
                    if (Config.MULTILANG_ENABLE)
                    {
                        final NpcStringId ns = NpcStringId.getNpcStringId(Integer.parseInt(quest.getNpcStringId() + "01"));
                        if (ns != null)
                        {
                            final NSLocalisation nsl = ns.getLocalisation(player.getLang());
                            if (nsl != null)
                            {
                                localisation = nsl.getLocalisation(Collections.emptyList());
                            }
                        }
                    }
                    sbCantStart.append(localisation);
                    sbCantStart.append("</button></font>");
                }
            }
            else if (Quest.getNoQuestMsg(player).equals(quest.onTalk(npc, player, true)))
            {
                continue;
            }
            else if (qs.isStarted())
            {
                startCount++;
                startQuest = quest.getName();
                
                sbStarted.append("<font color=\"ffdd66\">");
                sbStarted.append("<button icon=\"quest\" align=\"left\" action=\"bypass -h npc_" + npc.getObjectId() + "_Quest " + quest.getName() + "\">");
                String localisation = quest.isCustomQuest() ? quest.getPath() + " (In Progress)" : "<fstring>" + quest.getNpcStringId() + "02</fstring>";
                if (Config.MULTILANG_ENABLE)
                {
                    final NpcStringId ns = NpcStringId.getNpcStringId(Integer.parseInt(quest.getNpcStringId() + "02"));
                    if (ns != null)
                    {
                        final NSLocalisation nsl = ns.getLocalisation(player.getLang());
                        if (nsl != null)
                        {
                            localisation = nsl.getLocalisation(Collections.emptyList());
                        }
                    }
                }
                sbStarted.append(localisation);
                sbStarted.append("</button></font>");
            }
            else if (qs.isCompleted())
            {
                sbCompleted.append("<font color=\"787878\">");
                sbCompleted.append("<button icon=\"quest\" align=\"left\" action=\"bypass -h npc_" + npc.getObjectId() + "_Quest " + quest.getName() + "\">");
                String localisation = quest.isCustomQuest() ? quest.getPath() + " (Done) " : "<fstring>" + quest.getNpcStringId() + "03</fstring>";
                if (Config.MULTILANG_ENABLE)
                {
                    final NpcStringId ns = NpcStringId.getNpcStringId(Integer.parseInt(quest.getNpcStringId() + "03"));
                    if (ns != null)
                    {
                        final NSLocalisation nsl = ns.getLocalisation(player.getLang());
                        if (nsl != null)
                        {
                            localisation = nsl.getLocalisation(Collections.emptyList());
                        }
                    }
                }
                sbCompleted.append(localisation);
                sbCompleted.append("</button></font>");
            }
        }
 
How quest 1506


related to these numbers?

Maybe 5506?


Код:
1050601 u,Small Eternal Life Potion\0
1050602 u,Small Eternal Life Potion (in progress)\0
1050603 u, Lesser Eternal Life Potion (completed)\0
1050701 u,Small Eternal Mental Strength Potion\0
1050702 u,Small Eternal Mental Strength Potion (in progress)\0
1050703 u,Lesser Eternal Mental Strength Potion (completed)\0

yes 5506 = 1506 and 01 started 02 In Progress 03 Done

Код:
550601 a,Road to the Orbis Temple\0

550602 a,Road to the Orbis Temple (In Progress)\0

550603 a,Road to the Orbis Temple (Done)\0

We give you the solution ready and you do your own thing...

also Gaikotsu wrote you how the number is derived.
 

Вложения

  • Shot00007.webp
    Shot00007.webp
    27,8 КБ · Просмотры: 11
Последнее редактирование:
Так это не правильно?

Код:
1050601    u,Малое Вечное Зелье Жизненной Силы\0
1050602    u,Малое Вечное Зелье Жизненной Силы (в процессе)\0
1050603    u,Малое Вечное Зелье Жизненной Силы (завершено)\0
1050701    u,Малое Вечное Зелье Ментальной Силы\0
1050702    u,Малое Вечное Зелье Ментальной Силы (в процессе)\0
1050703    u,Малое Вечное Зелье Ментальной Силы (завершено)\0


Я совсем запутался. Что не так я делаю тогда?
 
Так это не правильно?

Код:
1050601    u,Малое Вечное Зелье Жизненной Силы\0
1050602    u,Малое Вечное Зелье Жизненной Силы (в процессе)\0
1050603    u,Малое Вечное Зелье Жизненной Силы (завершено)\0
1050701    u,Малое Вечное Зелье Ментальной Силы\0
1050702    u,Малое Вечное Зелье Ментальной Силы (в процессе)\0
1050703    u,Малое Вечное Зелье Ментальной Силы (завершено)\0


Я совсем запутался.
Попробуйте еще задать эти строки в NpcString на стороне сервера.
Java:
    /**
     * @return the NpcStringId of the current quest, used in Quest link bypass
     */
    public int getNpcStringId()
    {
        return _questNameNpcStringId != null ? _questNameNpcStringId.getId() / 100 : (_questId > 10000 ? _questId - 5000 : _questId);
    }
 
Попробуйте еще задать эти строки в NpcString на стороне сервера.
[КОД=java] /**
* @return NpcStringId текущего квеста, используемый в обходе ссылок на квесты
*/
публичный int getNpcStringId()
{
вернуть _questNameNpcStringId != null ? _questNameNpcStringId.getId() / 100 : (_questId > 10000 ? _questId - 5000 : _questId);
}[/КОД]
Простите за тупоголовость, но куда добавить?

А нашел, пробую.
 
Простите за тупоголовость, но куда добавить?
Вручную добавить в ядро
Код:
org/l2jmobius/gameserver/network/NpcStringId.java
Java:
    @ClientString(id = 901900175, message = "Ugh... I think this is it for me...")
    public static NpcStringId UGH_I_THINK_THIS_IS_IT_FOR_ME;
    
    @ClientString(id = 901900176, message = "Valakas forcefully recalls the summoner or the summoned pet.")
    public static NpcStringId VALAKAS_FORCEFULLY_RECALLS_THE_SUMMONER_OR_THE_SUMMONED_PET;
    
    @ClientString(id = 901900177, message = "Plague, new nightmare (Lv. 80-85) ")
    public static NpcStringId PLAGUE_NEW_NIGHTMARE_LV_80_85;
 
Не один из выше перечисленных вариантов не сработал. Спасибо за попытки помочь.
Результат тот же.
Так ведь не бывает.
Может есть еще что то, что я не сделал.
Может кто то платно глянет?
Хочу разобраться.
 
Ид квеста то какой у тебя?
Код:
Q10506_GetAHPPotion
Q10507_GetAMPPotion



Код:
1050701    u,Малое Вечное Зелье Ментальной Силы\0
1050702    u,Малое Вечное Зелье Ментальной Силы (в процессе)\0
1050703    u,Малое Вечное Зелье Ментальной Силы (завершено)\0
 
Назад
Сверху