Słyszał, słyszał ale w pythonie nigdy nie robił.
Czy teraz lepiej ?
W pliku script.cfg dodałem questa linią:
custom/90090_Adam/__init__.py
Jednak po wywołaniu w grze odnośnika:
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
Wyskakuje że nie spełniam wymogów by pogadać z npc. (tak jakby nie odczytało pliku skryptu) Czy coś jeszcze powinienem gdzieś dodać ?
Czy teraz lepiej ?
# version 0.03
# by NoAd
import sys
from net.sf.l2j import Config
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 = "90090_Adam"
#NPCs
ADAM = 90090
FIRST = 90091
SECOND = 90092
THIRD = 90093
#Quest items
PASS_TO_LL_VILLAGE = 9009001
WAND_PART = 9009000
# Main Quest Code
class Quest (JQuest):
def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
def onEvent (self,event,st):
id = st.getState()
values.get(var, do_default_stuff)()
if id == State.CREATED :
result = {
'talk': lambda
str(st.set("progress","0")),
'agree': lambda
st.setState(State.STARTED)
st.set("step","STARTED")
st.playSound("ItemSound.quest_accept"),
'details': lambda
return "90090_confirm.htm"
'talk1': lambda
if st.get("step") == "STARTED":
st.set("progress", str(st.getInt("progress") | 4))
st.giveItems(WAND_PART)
return "90091_1.htm",
'talk2': lambda
if st.get("step") == "STARTED":
st.set("progress", str(st.getInt("progress") | 1))
st.giveItems(WAND_PART)
return "90092_1.htm",
'talk3': lambda
if st.get("step") == "STARTED":
st.set("progress", str(st.getInt("progress") | 2))
st.giveItems(WAND_PART)
return "90093_1.htm",
'talk4': lambda
if st.getInt("progress") == 7:
st.takeItems(WAND_PART,3)
st.giveItems(PASS_TO_LL_VILLAGE)
return "90090_4.htm",
}event(return "error.htm")
def onTalk (self,npc,player):
htmltext = "<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>"
st = player.getQuestState(qn)
if not st : return htmltext
npcId = npc.getNpcId()
id = st.getState()
if id == State.COMPLETED: st.setState(State.CREATED)
result = {
ADAM: lambda
if id == State.CREATED :
if player.getLevel() < 60 :
st.exitQuest(1)
return "90090_low_level.htm"
return "Start.htm"
if id == State.STARTED
return "90090_started.htm"
if id == State.STARTED :
if st.getInt("progress") == 7 :
return "Talked.htm"
return "90090_PENDING_TALK.htm",
FIRST: lambda
if id == State.STARTED :
return "90091_2.htm",
SECOND: lambda
if id == State.STARTED :
return "90092_2.htm"
THIRD: lambda
if id == State.STARTED :
return "90093_2.htm"
}npcId(return "error.htm")
# Quest class and state definition
QUEST = Quest(90090, qn, "Pass to LifeLand Village")
# Quest NPC starter initialization
QUEST.addStartNpc(ADAM)
# Quest NPC initialization
QUEST.addTalkId(ADAM)
QUEST.addTalkId(FIRST)
QUEST.addTalkId(SECOND)
QUEST.addTalkId(THIRD)