Вот лови я его чуть переделал под себя (но думаю разберешся)
Скрытый текстimport sysfrom 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
from com.l2jfrozen.gameserver.network.serverpackets import PledgeShowInfoUpdate
from com.l2jfrozen.gameserver.network.serverpackets import RadarControl
from com.l2jfrozen.gameserver.network.serverpackets import SystemMessage
qn = "q902_FeatherGathering"
## нпц
NPC = 77777
## Мобы
MOBS = [22126,22124,22123]
#босс
BOSS = 25366
## Дроп
#id перьев с мобов в мос
FEATHER = 3344
#сколько нужно?
FEATHER_NEED = 150
#шанс дропа, %
FEATHER_CHANCE = 100
#id итема с босса
BOSS_ITEM = 9305
##Награда
#id крыльев
WINGS = 3481
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(STARTED)
st.playSound("ItemSound.quest_accept")
st.set("cond","1")
elif event == "finish.htm":
if st.getQuestItemsCount(FEATHER) >= FEATHER_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1:
st.takeItems(FEATHER, -1)
st.takeItems(BOSS_ITEM, -1)
st.giveItems(WINGS, 1)
st.set("cond","0")
st.playSound("ItemSound.quest_finish")
st.setState(COMPLETED)
else:
htmltext = "mobs.htm"
return htmltext
def onTalk (self,npc,player):
htmltext = "hello1.htm"
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 == COMPLETED :
htmltext = "completed.htm"
if idd == CREATED :
htmltext = "hello1.htm"
elif cond == 1:
if st.getQuestItemsCount(FEATHER) >= FEATHER_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 = FEATHER
limit = FEATHER_NEED
chance = FEATHER_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("q902_FeatherGathering")
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(902, qn, "Feather Gathering")
CREATED = State('Start',QUEST)
STARTED = State('Started',QUEST)
COMPLETED = State('COMPLETED',QUEST)
QUEST.setInitialState(CREATED)
QUEST.addStartNpc(NPC)
QUEST.addTalkId(NPC)
QUEST.addKillId(BOSS)
for m in MOBS:
QUEST.addKillId(m)
жду спасибку =)