Перейти к содержанию
Авторизация  
Мо3олЬ

Помогите Доработать Нормально Квест:)

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

Уважаемые знатаки прошу вашей помощи)Нужно доработать квест на крылья,Следующие проблемы:

1.Когда узят квест,его самого нету у самой вкладке квестов(если можна так зделать чтоб отображалось).

2.Когда на собирал все итемы,и есть больше чем надо итемов,их все забирает! (нужно зделать так чтоб оставались в сумке остача лишних итемов).

Хроники: Епилог

Сервер: L2jserver

Скрытый текст
Код квеста:

import sys

from com.l2jserver.gameserver.model.quest import State

from com.l2jserver.gameserver.model.quest import QuestState

from com.l2jserver.gameserver.model.quest.jython import QuestJython as JQuest

 

qn = "q902_FeatherGathering"

 

## нпц

NPC = 80028

## Мобы

MOBS = [22132,22130,22131,22135]

#босс

BOSS = 25450

## Дроп

#id перьев с мобов в мос

FEATHER = 4355

#сколько нужно?

FEATHER_NEED = 1000

#шанс дропа, %

FEATHER_CHANCE = 80

#id итема с босса

BOSS_ITEM = 4357

##Награда

#id крыльев

WINGS = 14000

 

class Quest (JQuest) :

 

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

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

self.questItemIds = [FEATHER]

 

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(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(State.COMPLETED)

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(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")

 

QUEST.addStartNpc(NPC)

QUEST.addTalkId(NPC)

QUEST.addKillId(BOSS)

 

for m in MOBS:

QUEST.addKillId(m)

надеюсь на вашу помощь))

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


Ссылка на сообщение
Поделиться на другие сайты
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(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(State.COMPLETED)

else:

htmltext = "mobs.htm"

return htmltext

Там где выделил красным есть -1 измени на нужное количество предметов которое будет забирать при сдаче квеста, а насчет чтобы в квестах высвечивало нужно в клиенте доделывать.

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


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

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

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

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

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

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

Войти

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

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

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

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

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