Запуск квеста при старте

warior94

Путник
Пользователь
Сообщения
5
Розыгрыши
0
Репутация
1
Реакции
1
Баллы
30
Хроники
  1. Prelude
Исходники
Отсутствуют
Сборка
pwsoft
Всем привет. Решил сделать для себя сервер на pwsoft. С друзьями побегать, пофармить. Взял чистую сборку и начал с реализации бафера. Написал квест
import sys
from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance
from java.util import Iterator
from net.sf.l2j.gameserver.datatables import SkillTable
from net.sf.l2j import L2DatabaseFactory
from net.sf.l2j.gameserver.model.quest import State
from net.sf.l2j.gameserver.model.quest import QuestState
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
qn = "52004_Buffer"
QuestId = 52004
NPC = 52004
InitialHtml = "gameserver/data/html/default/52004.htm"
print('=========================LOADED=========================')
class Quest(JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onEvent(self,event,st):
htmltext = event
st.getPlayer().setTarget(st.getPlayer())
if event == "fullfight":
SkillTable.getInstance().getInfo(1068,3).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1086,2).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1242,3).getEffects(st.getPlayer(),st.getPlayer())
st.setState(COMPLETED)
return InitialHtml
elif event == 'regen':
st.getPlayer().restoreCP()
st.getPlayer().restoreHP()
st.getPlayer().restoreMP()
st.setState(COMPLETED)
return InitialHtml
st.exitQuest(1)
return InitialHtml
def onFirstTalk(self, npc, player):
st = player.getQuestState(qn)
if not st:
st = player.newQuestState(qn)
st.setState(STARTED)
return InitialHtml


QUEST = Quest(QuestId,"52004_Buffer","custom")
CREATED=State('Start',QUEST)
STARTED=State('Started',QUEST)
COMPLETED=State('Completed',QUEST)
QUEST.setInitialState(CREATED)
QUEST.addStartNpc(NPC)
QUEST.addTalkId(NPC)

Далее создал htm файл в котором диалог с бафером.
Собственно вопрос.
Как запустить квест бафера при открытии диалога?
Второй день сижу и не могу найти инфы в нете о этой проблеме...
Помогите пожалуйста...
 
Вы хотите, чтобы обратившись к нпс, вылазила не всратая хтмлка-приветствие, где нужно было бы переходить к баферу, а сразу сам бафер (хтмлка с квеста), верно я понимаю? Вам дорога в L2MerchantInstance (ну или кому Вы там пихаете ), либо L2FolkInstance, либо L2NpcInstance и там править метод вывода хтмлек, ибо из коробки там такого нет. Но учитывая, что у Вашей версии этой говнищ сборки исходников нет, проще либо смириться, либо вывести в кб и запретить использовать её вне города, например. )

Так вот прям делать не надо потому что потому, но куда костылить должно стать понятно.
Java:
    @Override
    public void onAction(L2PcInstance player) {
        
        if (!canTarget(player)) {
            return;
        }

        if (player.isCursedWeaponEquiped()) {
            player.sendActionFailed();
            return;
        }

        player.setLastFolkNPC(this);
        // super.onAction(player);
        
        // Check if the L2PcInstance already target the L2NpcInstance
        if (getObjectId() != player.getTargetId()) {
            // Set the target of the L2PcInstance player
            player.setTarget(this);

            // Send a Server->Client packet MyTargetSelected to the L2PcInstance player
            player.sendPacket(new MyTargetSelected(getObjectId(), 0));

            // Send a Server->Client packet ValidateLocation to correct the L2NpcInstance position and heading on the client
            player.sendPacket(new ValidateLocation(this));
        } else {
            if (!canInteract(player)) {
                player.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT, this);
                return;
            }
            NpcHtmlMessage html = NpcHtmlMessage.id(getObjectId());
            QuestState st = player.getQuestState("q69_69");
            int etap_qw = st.getInt("etap");
            html.setFile("data/jscript/quests/q69_69/etapi/"+ etap_qw +".htm");
 
Последнее редактирование:
Вы хотите, чтобы обратившись к нпс, вылазила не всратая хтмлка-приветствие, где нужно было бы переходить к баферу, а сразу сам бафер (хтмлка с квеста), верно я понимаю? Вам дорога в L2MerchantInstance (ну или кому Вы там пихаете ), либо L2FolkInstance, либо L2NpcInstance и там править метод вывода хтмлек, ибо из коробки там такого нет. Но учитывая, что у Вашей версии этой говнищ сборки исходников нет, проще либо смириться, либо вывести в кб и запретить использовать её вне города, например. )
Примерно так и хочу да. Баффер сейчас L2NpcInstance. Что значит вывести к кб? Через кнопку приветствия тоже не выходит сделать. Вот байпас bypass -h npc_%objectId%_Quest 52004_Buffer fullfight. Старт квеста не происходит...
 
warior94, ну там какая-то видать затычка еще стоит, мол если не прошел диалог-приветствие то в квесты не пускать, чтобы интерфейсом не клацали байпассы, например, а всё по очереди. В любом случае решение в ядре, к которому у Вас нет доступа, так что. :D

В КБ - ну комьюнити борд, альт б который.
 
warior94, ну там какая-то видать затычка еще стоит, мол если не прошел диалог-приветствие то в квесты не пускать, чтобы интерфейсом не клацали байпассы, например, а всё по очереди. В любом случае решение в ядре, к которому у Вас нет доступа, так что. :D

В КБ - ну комьюнити борд, альт б который.
Спасибо))) А на Люцерe (2,3) есть варианты создания интерлюда с допами?
 
Вон же судя по коду есть onFirstTalk в пвсофт - при помощи него и показывать сразу нужный диалог квеста при обращении к нпс.
По крайней мере в том же овере такое делается через подобный метод.
 
Gaikotsu, да там 100500 затычек (конечно, смотря что там за пв софт вообще у ТСа и кто туда руку приложил), но в тех сорках что за 17ый год в сеть слиты, если через onFirstTalk вывести нужную хтмлку, она не кликабельна будет всё равно, пока не перейдешь по вкладке "квест", ничего не произойдет, сам движок квестов (или как там это правильно называется) такой.
 
Спасибо) Проблему решил. Бафы накидываются успешно))
Нужно было не квест вызывать (bypass -h npc_%objectId%_Quest), а прописывать (bypass -h npc_%objectId%_Buff 3 310 1) или (bypass -h npc_%objectId%_bDop 4)
 
  • Мне нравится
Реакции: Rolo
warior94, о, значит как раз в Вашей версии этой затычки на последовательность переходов по хтлм и нет. Успех, я считаю. :D
 
  • Ха-ха-ха
Реакции: kick
Назад
Сверху Снизу