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

Помогите дописать квест

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

Всем привет, помогите дописать квест, а точнее добавить в событие onTalk, проверку на уже выполненый этот квест (т.е. сделать этот квест одноразовым)

А если кто то щедрый, еще 1 вопрос, у меня по квесту нужно выбить 10 итемов, и есть такая строчка:

return "Вы получили душу гремлина, нужно собрать 10 душ!\nОтнесите души гремлина нпц НОНЕ и получите вознаграждение!"

Как добавить в событие onKill счетчик уже выбитых предметов, и вывести их в этот чат? т.е. сделать вот так

*тут счетчик итемов"

return "Вы получили душу гремлина, у вас в инвентаре "тут счетчик" из  10 душ!\nОтнесите души гремлина нпц НОНЕ и получите вознаграждение!"

 

# Made by Mr. Have fun! - Version 0.3 by DrLecter
import sys
from ru.catssoftware.gameserver.model.quest import State
from ru.catssoftware.gameserver.model.quest import QuestState
from ru.catssoftware.gameserver.network.serverpackets import SocialAction
from ru.catssoftware.gameserver.model.quest.jython import QuestJython as JQuest

qn = "303_CollectArrowheads"

ORCISH_ARROWHEAD = 15002
ADENA = 57

class Quest (JQuest) :

def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
self.questItemIds = [ORCISH_ARROWHEAD]

def onEvent (self,event,st) :
htmltext = event
if event == "30029-04.htm" :
st.set("cond","1")
st.setState(State.STARTED)
st.playSound("ItemSound.quest_accept")
return htmltext

def onTalk (self,npc,player):
htmltext = "You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements."
st = player.getQuestState(qn)
if not st : return htmltext

npcId = npc.getNpcId()
id = st.getState()
if id == State.CREATED :
st.set("cond","0")
if st.getInt("cond")==0 :
if player.getLevel() < 10 :
htmltext = "30029-03.htm"
else:
htmltext = "30029-02.htm"
st.exitQuest(1)
else :
if st.getQuestItemsCount(ORCISH_ARROWHEAD)<10 :
htmltext = "30029-05.htm"
else :
st.rewardItems(ADENA,1000)
st.takeItems(ORCISH_ARROWHEAD,-1)
st.playSound("ItemSound.quest_finish")
st.addExpAndSp(50000,50000)
ObjectId=player.getObjectId()
player.broadcastPacket(SocialAction(ObjectId,3))
htmltext = "30029-06.htm"
st.exitQuest(1)
return htmltext

def onKill(self,npc,player,isPet):
st = player.getQuestState(qn)
if not st : return
if st.getState() != State.STARTED : return

count=st.getQuestItemsCount(ORCISH_ARROWHEAD)
if count<10 and st.getRandom(0)<0 :
st.giveItems(ORCISH_ARROWHEAD,1)
if count == 9 :
st.set("cond","2")
st.playSound("ItemSound.quest_middle")
else:
st.playSound("ItemSound.quest_itemget")
return "Вы получили душу гремлина, нужно собрать 10 душ!\nОтнесите души гремлина нпц НОНЕ и получите вознаграждение!"

QUEST = Quest(303,qn,"Collect Arrowheads")

QUEST.addStartNpc(30029)

QUEST.addTalkId(30029)

QUEST.addKillId(20001)

 

Большое спасибо :)

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


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

Опирайтесь на разовый Квест в Говорящем Острове. (Лекарство от лихорадки).

  • Upvote 2

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


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

Насчет одноразового квеста: st.exitQuest(0) или st.exitQuest(false)

  • Upvote 1

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


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

Насчет одноразового квеста: st.exitQuest(0) или st.exitQuest(false)

Значения 0 и false равносильны?

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


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

А счетчик:

count = st.getInventory().getInventoryItemCount(ORCISH_ARROWHEAD, 0);
return "Вы получили душу гремлина, у вас в инвентаре " + count + " из  10 душ!\nОтнесите души гремлина нпц НОНЕ и получите вознаграждение!"
Изменено пользователем BymerOK

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


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

Значения 0 и false равносильны?

Точно не скажу без сурса, просто 1 метод принимает int, а второй boolean. Думаю оба параметра отвечают за repeatable.

  • Upvote 1

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


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

Точно не скажу без сурса, просто 1 метод принимает int, а второй boolean. Думаю оба параметра отвечают за repeatable.

Благодарю.

  • Like 1

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


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

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

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

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

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

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

Войти

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

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

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

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

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