Перейти к содержимому
La2Base
Главная
ЗагрузкиВикиФорумFAQ
Поиск
ruen
Регистрация Войти
ГлавнаяФайлыВикиВойти
  • Главная
  • Загрузки
  • Вики
  • FAQ
  • Обратная связь
  • О проекте
  • Правила
  • Конфиденциальность
  • Условия использования

© 2026 la2base.com · Все права защищены

ruen
Форум/Квесты/пишем квест на открывание дверей
Поиск

пишем квест на открывание дверей

10 ответов189 просмотровСейчас просматривают: 1
U
Uphill
· 20.12.2009, 19:19

Вот вопрос - какой квест написать, чтобы нужные двери открывались в заданный период времени?

0
Богдан
Богдан

Пользователь

Новичок

Постов: 17

На форуме с: 05.09.2009

Рейтинг: 0

· 23.12.2009, 11:53

Правь ядро gamer3.gif

0
Rem000
Rem000

Пользователь

Бывалый

Постов: 321

На форуме с: 29.01.2008

Репутация: +256

Рейтинг: 0

· 23.12.2009, 12:03

тема не раскрыта, вопрос не ясен.. нужна идея эвента или код реализации?

Цитата
Правь ядро

можно без ядра

— FoBOSS

0
A
Alexey
· 23.12.2009, 12:04

В питоне можно,я бы подсказал но класс двери закрыл...

0
Rem000
Rem000

Пользователь

Бывалый

Постов: 321

На форуме с: 29.01.2008

Репутация: +256

Рейтинг: 0

· 23.12.2009, 12:11

импорт

Код
from net. .... .gameserver.instancemanager        import InstanceManager


сами функции
Код
def openDoor(doorId, instanceId) :
  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()


ЗАдание параметров ид дверей
Код
D1 = 18250001
D2 = 18250002
D3 = 18250003
D4 = 18250004
D5 = 18250005


обращение
Код
openDoor(D1, world.instanceId)  
closeDoor(D1, world.instanceId)



ну а на счет времени ... приплести трэд/шедулер и там уже все делать как надо

— FoBOSS

0
U
Uphill
· 23.12.2009, 20:03

такой квест я видел помоему в какойто сборке - там на ХБ таким скриптом открываются двери...
если есть больше инфы об этом квесте - прошу в студию...

0
U
Uphill
· 09.01.2010, 21:08

на правах апа

0
U
Uphill
· 10.01.2010, 17:20

Вот квест чтобы за убийство моба открывалась дверь и через минуту закрывалась.
Помогите переписать его, чтобы без моба было. Чтобы указать своё.


PERIOD = 4 * 3600000 # Время через которое открывается дверь (каждые 4 часа)
OPEN_TIME = 2 * 60000 # Время на которое открывается дверь (на 2 минуты)

Раскрывающийся текст
import sys
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)


оффтоп

как прописать двери чтобы она открывалась тем или иным ключом(предметом)
таргет дверь и юзаешь предмет и дверь открывается

0
Хам
Хам

Пользователь

Бывалый

Постов: 179

На форуме с: 16.03.2008

Репутация: +45

Рейтинг: 0

· 26.01.2010, 15:06

я думаю что как то так: (не уверенн что правильно сделал т.к. только начинаю писать на питоне)

Раскрывающийся текст
Код
import sys
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)

0
U
Uphill
· 26.01.2010, 17:05

хмм... но зачем
НПЦ и
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 часа?....

вот закена бы на питоне найти, там может есть на что псомотреть по поводу двери

0
Войдите или зарегистрируйтесь чтобы ответить