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

Повторний Квест

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

Ребят подскажите плс так как я в этом не силен у меня вот есть квест как сделать так что б можно было эго брать повторно. с меня+++

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 = "q902_FeatherGathering"

 

## нпц

NPC = 80028

 

## Мобы

MOBS = [15105]

#босс

BOSS = 15106

 

## Дроп

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

FEATHER = 9239

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

FEATHER_NEED = 300

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

FEATHER_CHANCE = 100

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

BOSS_ITEM = 9241

 

##Награда

#id крыльев

WINGS = 4037

 

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):

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)

Изменено пользователем Saha250
  • Upvote 2

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


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

С чего ты взял, что он одноразовый?

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


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

С чего ты взял, что он одноразовый?

Уже пробовал проходить!!

  • Upvote 1

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


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

htmltext = "completed.htm"

if idd == CREATED:

htmltext = "hello1.htm"

Смотрите пример у повторяющихся квестов.

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


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

Смотрите пример у повторяющихся квестов.

Я понимаю что можно глянуть но я в этом полный 0 так что просто не умею подскажите кто может с меня много ++++++

  • Upvote 1

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


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

QUEST = Quest(902, qn, "Feather Gathering")

 

Вроде вот,проверяй :)

 

а что ты вобше изменил??? что то я нечего не догнал

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


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

ребята что некто не может помочь??????

  • Upvote 1

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


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

Блин ребят мне сегодня нада этот долбаный квест кто сделает дам на пивасик 100 рублей!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  • Upvote 1

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


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

 

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 = "q902_FeatherGathering"

## нпц
NPC = 80028

## Мобы
MOBS = [15105]
#босс
BOSS = 15106

## Дроп
#id перьев с мобов в мос
FEATHER = 9239
#сколько нужно?
FEATHER_NEED = 300
#шанс дропа, %
FEATHER_CHANCE = 100
#id итема с босса
BOSS_ITEM = 9241

##Награда
#id крыльев
WINGS = 4037

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")
else:
htmltext = "mobs.htm"
return htmltext

def onTalk (self,npc,player):
st = player.getQuestState(qn)
if not st:
return "You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements."
npcId = npc.getNpcId()
idd = st.getState()
cond = st.getInt("cond")
if npcId == NPC:
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)

QUEST.setInitialState(CREATED)

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

for m in MOBS:
QUEST.addKillId(m)

 

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

Изменено пользователем taste
  • Upvote 1

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


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

 

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 = "q902_FeatherGathering"

## нпц
NPC = 80028

## Мобы
MOBS = [15105]
#босс
BOSS = 15106

## Дроп
#id перьев с мобов в мос
FEATHER = 9239
#сколько нужно?
FEATHER_NEED = 300
#шанс дропа, %
FEATHER_CHANCE = 100
#id итема с босса
BOSS_ITEM = 9241

##Награда
#id крыльев
WINGS = 4037

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")
else:
htmltext = "mobs.htm"
return htmltext

def onTalk (self,npc,player):
st = player.getQuestState(qn)
if not st:
return "You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements."
npcId = npc.getNpcId()
idd = st.getState()
cond = st.getInt("cond")
if npcId == NPC:
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)

QUEST.setInitialState(CREATED)

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

for m in MOBS:
QUEST.addKillId(m)

 

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

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

 

за старание лови ++

Изменено пользователем Saha250
  • Upvote 1

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


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

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(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.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

а так

Изменено пользователем taste
  • Upvote 1

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


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

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(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.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

а так

 

importing quests data ...

failed to import quests : q902_FeatherGathering

та шо с етим хреновым квестом :cray:

  • Upvote 1

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


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

Что за сборка кстати ?

 

Квесты на java у вас читает квест движок, могу дать аналогию на java только замените иды все и импорты под свою сборку, в питоне не очень силен, а разбираться с питон квестом не особо хочется..

 

P.S: ну а что бы квест на питоне повторялся, вам надо в правильные места вставить данный кусочек кода

 

st.exitQuest(True)

а от этой части кода - st.setState(COMPLETED) и COMPLETED нужно избавится.

Изменено пользователем ZooTee
  • Upvote 1

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


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

Что за сборка кстати ?

 

Квесты на java у вас читает квест движок, могу дать аналогию на java только замените иды все и импорты под свою сборку, в питоне не очень силен, а разбираться с питон квестом не особо хочется..

 

P.S: ну а что бы квест на питоне повторялся, вам надо в правильные места вставить данный кусочек кода

 

st.exitQuest(True)

а от этой части кода - st.setState(COMPLETED) и COMPLETED нужно избавится.

у меня платная PW сборка. Не знаю может и четает на Java

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


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

апп, тоже интересует этот квест.

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


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

Вот ловите http://rghost.ru/44225661, переделаете все под себя + включая импорты, PW должна читать java квесты, я просто больше чем уверен.

  • Upvote 2

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


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

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

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

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

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

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

Войти

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

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

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

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

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