Перейти к содержанию
Авторизация  
chiton

Небольшой квест на python

Рекомендуемые сообщения

Доброго времени суток  форумчани.

Нужна помощь в написание простого квеста на питоне.
Создаю Нпс у которого берется квест (тут проблем нет)
а вот с кодом квеста беда, я в питоне 0

//какбы снимает все ефекты и телепортирует куда нужно
i=L2World.getInstance().getPlayer(nm)
       if i<>None:
        if i.isOnline() :
         i.stopAllEffects()
         i.broadcastStatusUpdate()
         i.broadcastUserInfo()
         i.teleToLocation(координата,координата,координата) //куда ТП
дальше нужно заспавнить 1 комнату мобов.
npc1=self.addSpawn(ид,координата,координата,координата,30000,False,0)
//ето так из манула накидал для желающих помочь, чтоб не писать код с нуля)
 

Мне нужно чтобы 1 человек или пати брал(и) квест, после чего их телепортирует в указаную точку.
Через 4 минуты появляются нпс(мобы,рб) с указаным ИД
после убийства мобов ждем 4 минуты и снова спавним мобов.

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

Еще вопрос. Как сделать чтоб квест можно было повторять раз в "Н" времини?
И можно ли сделать так, чтобы несколько человек одновременно проходили квест, и не видели друг друга, а также не "своих" мобов? 

Изменено пользователем chiton

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

посмотри 4 кубка, там схожая система. Удачи

Изменено пользователем SkyWard

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Смотрел о спавнах там ни слова нету( незнаю откуда там спавн берется, но явно не из питон класса(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот пробовал сочинять непонятно что))

import sys
from com.l2jfrozen.gameserver.model.quest import State
from com.l2jfrozen.gameserver.model.quest import QuestState
from com.l2jfrozen.gameserver.datatables import DoorTable
from com.l2jfrozen.gameserver.datatables import SkillTable
from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest
from com.l2jfrozen.gameserver import Announcements
from com.l2jfrozen.util.database import L2DatabaseFactory
from com.l2jfrozen.gameserver.ai import CtrlIntention
from com.l2jfrozen.util.random import Rnd
from java.lang import System
from com.l2jfrozen.gameserver.model import L2World

qn = "6647_wawe"

NPC=4456
MOB1=22111
MOB2=3325
MOB3=6657
t1=[80198,253341,-10871]
t2=[80198,253341,-10871]
t3=[80198,253341,-10871]
t4=[80198,253341,-10871]


class Quest (JQuest) :
  def onEvent(self, event, st):
    htmltext=event
    if event=="1":
      htmltext="tele.htm"
      st.set("cond","1")
      st.setState(STARTED)
      st.playSound("ItemSound.quest_accept")
 i=L2World.getInstance().getPlayer(nm)
       if i<>None:
        if i.isOnline() :
         i.stopAllEffects()
         i.broadcastStatusUpdate()
         i.broadcastUserInfo()
         i.teleToLocation(t1[0],t1[1],t1[2])

self.addSpawn(MOB1,t2[0],t2[1],t2[2],30000,False,0)
self.addSpawn(MOB2,t3[0],t3[1],t3[2],30000,False,0)
self.addSpawn(MOB3,t4[0],t4[1],t4[2],30000,False,0)
return

QUEST=Quest(6647,qn,"wawe!")
CREATED=State('Start', QUEST)
STARTED=State('Started', QUEST)
COMPLETED=State('Completed', QUEST)
QUEST.setInitialState(CREATED)
QUEST.addStartNpc(NPC)
QUEST.addTalkId(NPC)
QUEST.addKillId(MOB1)
QUEST.addKillId(MOB2)
QUEST.addKillId(MOB3)

 в ерроре вот что 

Traceback (innermost last):
  (no code object) at line 0
SyntaxError: ('inconsistent dedent', ('__init__.py', 34, 2, ' i=L2World.getInstance().getPlayer(nm)'))

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

Изменено пользователем chiton

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Питон зависим от табуляции и пробелов, выравни строку

i=L2World.getInstance().getPlayer(nm)

По отношению к другим

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Traceback (innermost last):
  (no code object) at line 0
SyntaxError: ('invalid syntax', ('__init__.py', 34, 10, '\t i=L2World.getInstance().getPlayer(nm)'))

теперь такой еррор.

А хоть код сам по себе праильно написан?

и что сама по себе означает срока i=L2World.getInstance().getPlayer(nm)???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

выравнивать надо пробелами а не табами (\t)

 

на счет кода, вроде не правильно, во первых не видно где переменная nm реализовывается, по всей видимости это имя? Тогда зачем мы ищем персонажа по нему если можно вызвать его из QuestState (st.getPlayer) 

 

Что должен делать этот квест?

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что должен делать этот квест?

Мне нужно чтобы 1 человек, или пати брал(и) квест, после чего их телепортирует в указаную точку и дается "н" времени для убийства волн мобов.

Через 4 минуты появляются нпс(мобы,рб) с указаным ИД

после убийства мобов ждем 4 минуты, и снова спавним мобов.

по убийству 3 волны спавн НПС(телепортера)после телепорта квест завершыть.

По истичению времени квест завершыть.

повтор квеста 1 раз в "н" времени.

 

 

Изменено пользователем chiton

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...