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

Квест На Крыло

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

У кого есть квест на крылья для сборки l2jfrozen ?

Ибо на этой сборке квест криво работает который лежит в шаре....

 

вот чё пишет когда пытаюсь взять кв в ГС:

 

Скрытый текст
Traceback (innermost last):

File "__init__.py", line 61, in onTalk

AttributeError: class 'com.l2jfrozen.gameserver.model.quest.State' has no attribute 'COMPLETED'

 

at org.python.core.Py.AttributeError(Unknown Source)

at org.python.core.PyObject.noAttributeError(Unknown Source)

at org.python.core.PyObject.__getattr__(Unknown Source)

at org.python.pycode._pyx407.onTalk$4(__init__.py:61)

at org.python.pycode._pyx407.call_function(__init__.py)

at org.python.core.PyTableCode.call(Unknown Source)

at org.python.core.PyTableCode.call(Unknown Source)

at org.python.core.PyTableCode.call(Unknown Source)

at org.python.core.PyFunction.__call__(Unknown Source)

at org.python.core.PyMethod.__call__(Unknown Source)

at org.python.core.PyObject.__call__(Unknown Source)

at org.python.core.PyObject._jcallexc(Unknown Source)

at org.python.core.PyObject._jcall(Unknown Source)

at org.python.proxies.main$Quest$405.onTalk(Unknown Source)

at com.l2jfrozen.gameserver.model.quest.Quest.notifyTalk(Quest.java:512)

at com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance.showQuestWindow(L2Np

cInstance.java:1877)

at com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance.showQuestWindow(L2Np

cInstance.java:1956)

at com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance.onBypassFeedback(L2N

pcInstance.java:1132)

at com.l2jfrozen.gameserver.network.clientpackets.RequestBypassToServer.runImpl(Req

uestBypassToServer.java:237)

at com.l2jfrozen.gameserver.network.clientpackets.L2GameClientPacket.run(L2GameClie

ntPacket.java:75)

at com.l2jfrozen.gameserver.network.L2GameClient.run(L2GameClient.java:1197)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

 

Скрытый текст
import sys
from com.l2jfrozen import Config
from com.l2jfrozen.gameserver.model.quest import State
from com.l2jfrozen.gameserver.model.quest import QuestState
from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest

qn = "906_Wings1"

## нпц
NPC = 80028

## Мобы
MOBS = [21376,21377,21378,21394,21652,21379,21653,21380,21383,21654,21382]
#босс
BOSS = 25450

## Дроп
#id Сплава
ADAMANIT = 10596
#сколько нужно?
ADAMANIT_NEED = 1000
#шанс дропа, %
ADAMANIT_CHANCE = 100
#id итема с босса
BOSS_ITEM = 10598

##Награда
#id Коина
COIN = 10599

class Quest (JQuest) :

def __init__(self,id,name,descr) : JQuest.__init__(self,id,name,descr)

def onEvent (self,event,st) :
  htmltext = event
  if event == "accept.htm":
    st.setState(State.STARTED)
    st.playSound("ItemSound.quest_accept")
    st.set("cond","1")
  elif event == "finish.htm":
    if st.getQuestItemsCount(ADAMANIT) >= ADAMANIT_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1:
      st.takeItems(ADAMANIT, -1)
      st.takeItems(BOSS_ITEM, -1)
      st.giveItems(COIN, 1)
      st.set("cond","0")
      st.playSound("ItemSound.quest_finish")
      st.setState(State.CREATED)
    else:
      htmltext = "mobs.htm"
  return htmltext

def onTalk (self,npc,player):
  st = player.getQuestState(qn)
  if not st: 
    return "<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>"
  npcId = npc.getNpcId()
  idd = st.getState()
  cond = st.getInt("cond")
  if npcId == NPC:
    if idd == State.COMPLETED :
      htmltext = "completed.htm"
    if idd == State.CREATED :
      htmltext = "hello1.htm"
    elif cond == 1:
      if st.getQuestItemsCount(ADAMANIT) >= ADAMANIT_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1:
        htmltext = "mobs2.htm"
      else:
        htmltext = "mobs.htm"
  return htmltext

def onKill(self,npc,player,isPet):
  st = player.getQuestState(qn)
  if not st or st.getInt("cond") != 1:
    return
  npcId = npc.getNpcId()
  reward = 0
  limit = 1
  chance = 100
  if npcId in MOBS:
    reward = ADAMANIT
    limit = ADAMANIT_NEED
    chance = ADAMANIT_CHANCE
  if npcId == BOSS:
    reward = BOSS_ITEM
    limit = 1
  if reward > 0:
    party = player.getParty()
    if party:
      for member in party.getPartyMembers():
        if not member.isAlikeDead():
          st = member.getQuestState("905_GoddnessArmor")
          if st and st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance:
            st.giveItems(reward, 1)
            st.playSound("ItemSound.quest_itemget")
            if st.getQuestItemsCount(reward) >= limit:
              st.playSound("ItemSound.quest_middle")
    else:
      if st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance:
        st.giveItems(reward, 1)
        st.playSound("ItemSound.quest_itemget")
  return  

QUEST = Quest(906, qn, "Wings1")
CREATED     = State('Start',     QUEST)
STARTED     = State('Started',   QUEST)
COMPLETED   = State('Completed', QUEST)

QUEST.addStartNpc(NPC)
QUEST.addTalkId(NPC)
QUEST.addKillId(BOSS)

for m in MOBS:
 QUEST.addKillId(m)

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

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


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

Да ты не считай меня таким тупым) Я всё поменял!)

 

В верху сам кв.

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

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


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

if idd == State.COMPLETED

if idd == COMPLETED

вот так попробуй

или же так

if idd == COMPLETED :

htmltext = "<html><body>Trolololo</body></html>"

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

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


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

htmltext = "<html><body>Trolololo</body></html>"

 

За это большое спасибо! Но вот как теперь это перенаправить на hello1.htm ?

 

НЕ писать же там это <button value="hello" action="bypass -h Quest 906_Wings1 hello1.htm" width=210 height=21 back="sek.cbui75" fore="sek.cbui75"

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

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


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

нет оставь все как есть и делай так

if idd == State.COMPLETED

if idd == COMPLETED

то что красным удаляй и будет все норм пахать

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

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


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

if idd == State.COMPLETED

if idd == COMPLETED

то что красным удаляй и будет все норм пахать

 

Не будет:) будет писать это:

 

Скрытый текст
Traceback (innermost last):

File "__init__.py", line 70, in onTalk

UnboundLocalError: local: 'htmltext'

 

at org.python.core.Py.UnboundLocalError(Unknown Source)

at org.python.core.PyFrame.getlocal(Unknown Source)

at org.python.core.PyFrame.getlocal(Unknown Source)

at org.python.pycode._pyx407.onTalk$4(__init__.py:70)

at org.python.pycode._pyx407.call_function(__init__.py)

at org.python.core.PyTableCode.call(Unknown Source)

at org.python.core.PyTableCode.call(Unknown Source)

at org.python.core.PyTableCode.call(Unknown Source)

at org.python.core.PyFunction.__call__(Unknown Source)

at org.python.core.PyMethod.__call__(Unknown Source)

at org.python.core.PyObject.__call__(Unknown Source)

at org.python.core.PyObject._jcallexc(Unknown Source)

at org.python.core.PyObject._jcall(Unknown Source)

at org.python.proxies.main$Quest$405.onTalk(Unknown Source)

at com.l2jfrozen.gameserver.model.quest.Quest.notifyTalk(Quest.java:512)

at com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance.showQuestWindow(L2Np

cInstance.java:1877)

at com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance.showQuestWindow(L2Np

cInstance.java:1956)

at com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance.onBypassFeedback(L2N

pcInstance.java:1132)

at com.l2jfrozen.gameserver.network.clientpackets.RequestBypassToServer.runImpl(Req

uestBypassToServer.java:237)

at com.l2jfrozen.gameserver.network.clientpackets.L2GameClientPacket.run(L2GameClie

ntPacket.java:75)

at com.l2jfrozen.gameserver.network.L2GameClient.run(L2GameClient.java:1197)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

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


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

Если интересует старый способ то вот пример одного из скриптов чат мутиш свой в unicode

Скрытый текст
htmltext = "<html><title>Exclusive Shop</title><body><center><br><br>"

htmltext += "<img src=\"L2UI_CH3.onscrmsg_pattern01_1\" width=300 height=32><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>"

htmltext += u"<font color=\"LEVEL\">\u041c\u0438\u043d\u0438\u043c\u0443\u043c \u0445\u0438\u0440\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0430 10 \u0434\u043d\u0435\u0439 !</font>"

htmltext += u"<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br><img src=\"L2UI_CH3.onscrmsg_pattern01_2\" width=300 height=32><br>"

htmltext += u"<table><tr><td align=center><button value=\"\u0412\u044b\u0445\u043e\u0434\" action=\"bypass -h npc_%objectId%_Close\" width=75 height=22 back=\"L2UI_ch3.Btn1_normalOn\" fore=\"L2UI_ch3.Btn1_normal\"></td></tr></table>"

htmltext += "</center></body></html>"

return htmltext

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


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

А что подскажешь на счёт 38 строки?

st.setState(State.STARTED)

мб так?

st.setState(STARTED)

Тоже орёт

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

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


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

я хз честно тут надо пол скрипта переделывать так как нету таких фишек даже как

st.setState(COMPLETED)

что бы мутить проверку

без документации не поймешь че да как

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


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

че посоветую убери лишние State. и допиши onTalk там надо что бы тебя бросало на изначальный чат если реализуешь тогда будет пахать квест то есть так

Скрытый текст
def onTalk (self, npc, player):

htmltext = "<html><body>Твой текст или же мож указать пусть к html </body></html>"

st = player.getQuestState(qn)

if not st : return htmltext

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

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


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

вот всё спасибо всё сделал запахало!

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


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

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

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

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