Как будет опраделяться какой шмот разбить из инвентаря, если лежит несколько,через квест я хотел сделать следующим образом: сначала НПС выдает список : Грейд шмота, затем - бижутерия, оружие, броня (которая в свою очередь разделяеися на лайт, хевик, роба) - затем уже список, из которого выбираешь что разбить (все это делается через html), разбивается естественно только 1 шмотка за один клик, поэтому проверять одета или нет необязательно.
У меня скомпилированная ST сборка, фаила RequestMultiSellChoose в ней нет, скорей всего он под другим именем лежит, хотелось бы узнать что в нем содержится.
Попробовал упростить свой код, квест перестал загружаться вовсе =)
#Crystallizer
import sys
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
Crystal_D = 1458
Crystal_C = 1459
Crystal_B = 1460
MIN_LEVEL=20
##Бижутерия Д грейд (кольца)
Ring_of_Devotion = 890
Enchanted_Ring = 879
Black_Pearl_Ring = 880
Elven_Ring = 881
Mithril_Ring = 882
class Quest(JQuest):
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onEvent(self,event,st):
htmltext = event
## Меняем Ring_of_Devotion на 32Д кристалла
if event == "1" and st.getQuestItemsCount(Ring_of_Devotion) >= 1 and st.getPlayer().getLevel() >= 20:
st.takeItems(Ring_of_Devotion,1)
st.giveItems(Crystal_D,32)
st.setState(COMPLETED)
htmltext = "<html><head><body>Вы разбили Ring of Devotion на 32 D-grade кристалла</body></html>"
## Меняем Enchanted_Ring на 51Д кристалл
if event == "2" and st.getQuestItemsCount(Enchanted_Ring) >= 1 and st.getPlayer().getLevel() >= 20:
st.takeItems(Enchanted_Ring,1)
st.giveItems(Crystal_D,51)
st.setState(COMPLETED)
htmltext = "<html><head><body>Вы разбили Enchanted Ring на 51 D-grade кристалл</body></html>
## Меняем Black_Pearl_Ring на 77Д кристалла
if event == "3" and st.getQuestItemsCount(Black_Pearl_Ring) >= 1 and st.getPlayer().getLevel() >= 20:
st.takeItems(Black_Pearl_Ring,1)
st.giveItems(Crystal_D,77)
st.setState(COMPLETED)
htmltext = "<html><head><body>Вы разбили Black Pearl Ring на 77 D-grade кристалла</body></html>
## Меняем Elven_Ring на 113Д кристалла
if event == "4" and st.getQuestItemsCount(Elven_Ring) >= 1 and st.getPlayer().getLevel() >= 20:
st.takeItems(Elven_Ring,1)
st.giveItems(Crystal_D,113)
st.setState(COMPLETED)
htmltext = "<html><head><body>Вы разбили Elven Ring на 113 D-grade кристалла</body></html>
## Меняем Mithril_Ring на 146Д кристалла
if event == "5" and st.getQuestItemsCount(Mithril_Ring) >= 1 and st.getPlayer().getLevel() >= 20:
st.takeItems(Mithril_Ring,1)
st.giveItems(Crystal_D,146)
st.setState(COMPLETED)
htmltext = "<html><head><body>Вы разбили Mithril Ring на 146 D-grade кристалла</body></html>
if htmltext != event:
st.setState(COMPLETED)
st.exitQuest(1)
return htmltext
def onTalk (self,npc,st):
npcId = npc.getNpcId()
if npcId == 7543:
st.setState(STARTED)
htmltext = "7543-Crystallizer.htm"
return htmltext
QUEST=Quest(777,"777_Crystallizer","Crystallizer")
CREATED=State('Start',QUEST)
STARTED=State('Started',QUEST)
COMPLETED=State('Completed',QUEST)
QUEST.setInitialState(CREATED)
QUEST.addStartNpc(7543)
STARTED.addTalkId(7543)
print "importing quests: 777: Crystallizer"