пишем квест на открывание дверей
Вот вопрос - какой квест написать, чтобы нужные двери открывались в заданный период времени?
тема не раскрыта, вопрос не ясен.. нужна идея эвента или код реализации?
можно без ядра
— FoBOSS
В питоне можно,я бы подсказал но класс двери закрыл...
импорт
сами функции
for door in InstanceManager.getInstance().getInstance(instanceId).getDoors() :
if door.getDoorId() == doorId :
door.openMe()
def closeDoor(doorId,instanceId) :
for door in InstanceManager.getInstance().getInstance(instanceId).getDoors() :
if door.getDoorId() == doorId :
door.closeMe()
ЗАдание параметров ид дверей
D2 = 18250002
D3 = 18250003
D4 = 18250004
D5 = 18250005
обращение
closeDoor(D1, world.instanceId)
ну а на счет времени ... приплести трэд/шедулер и там уже все делать как надо
— FoBOSS
такой квест я видел помоему в какойто сборке - там на ХБ таким скриптом открываются двери...
если есть больше инфы об этом квесте - прошу в студию...
на правах апа
Вот квест чтобы за убийство моба открывалась дверь и через минуту закрывалась.
Помогите переписать его, чтобы без моба было. Чтобы указать своё.
PERIOD = 4 * 3600000 # Время через которое открывается дверь (каждые 4 часа)
OPEN_TIME = 2 * 60000 # Время на которое открывается дверь (на 2 минуты)
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
from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance
from net.sf.l2j.util import Rnd
from net.sf.l2j.gameserver.datatables import ItemTable
from net.sf.l2j.gameserver.datatables import DoorTable
qn = "Door"
D1 = ИД_ДВЕРИ
MOB = ИД_МОБА
class Quest (JQuest):
def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
def onAdvEvent (self,event,npc,player):
if event == "Close_Door1":
DoorTable.getInstance().getDoor(D1).closeMe()
return
def onKill (self,npc,player,isPet):
npcId = npc.getNpcId()
if npcId == ИД_МОБА :
DoorTable.getInstance().getDoor(D1).openMe()
self.startQuestTimer("Close_Door1",60000,None,None)
return
QUEST = Quest(-1, qn, "ai")
QUEST.addKillId(MOB)
оффтоп
как прописать двери чтобы она открывалась тем или иным ключом(предметом)
таргет дверь и юзаешь предмет и дверь открывается
я думаю что как то так: (не уверенн что правильно сделал т.к. только начинаю писать на питоне)
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
from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance
from net.sf.l2j.util import Rnd
from net.sf.l2j.gameserver.datatables import ItemTable
from net.sf.l2j.gameserver.datatables import DoorTable
qn = "7000_OpenDOOR"
DoorID = 5555
NPC = [1234]
PERIOD = 4 * 3600000 # Время через которое открывается дверь (каждые 4 часа)
OPEN_TIME = 2 * 60000 # Время на которое открывается дверь (на 2 минуты)
class Quest (JQuest):
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onEvent (self,event,st):
if event == "Open_Door":
DoorTable.getInstance().getDoor(DoorID).openMe() :
startQuestTimer("Close_Door",OPEN_TIME,None,None)
return
if event == "Close_Door":
DoorTable.getInstance().getDoor(DoorID).closeMe() #закрываем двери
return
def onTalk (self,npc,st):
htmltext = "exitQuest.htm"
st = st.getQuestState(qn)
st.setState(State.STARTED)
startQuestTimer("Open_Door",PERIOD,None,None)
return StartPages
QUEST = Quest(7000,qn,"OpenDOOR")
for npcId in NPC:
QUEST.addStartNpc(npcId)
QUEST.addTalkId(npcId)
по поводу предмета, думаю как то так: startQuestTimer(String name, long time, L2Npc npc, L2PcInstance player)
хмм... но зачем
НПЦ и
def onTalk (self,npc,st):
htmltext = "exitQuest.htm"
st = st.getQuestState(qn)
st.setState(State.STARTED)
startQuestTimer("Open_Door",PERIOD,None,None)
return StartPages
нам же не надо с кемто разговаривать... может надо просто открытие дверей и потом в таблицу global_task засунуть запрос чтобы он загружал скрипт открытия двери каждые 4 часа?....
вот закена бы на питоне найти, там может есть на что псомотреть по поводу двери



