Скрипт енчатера.
2 replies206 viewsCurrently viewing: 1
· 10/18/2009, 09:55 AM
Сборка La2base privat.
Суть проблеммы:
Ниже показан скрипт енчатера , но он точит токо на то число каторое установишь ,
а мне над чтоб народ мог точить на 10 на 20 и на 30 и чтоб цены можно было менять ,
для каждой точки своя цена , к примеру 10 = 20 кол ну и т,д.
Как это реализовать ???.
Даже если человек знающий и не может помочь за так то не стесьняйтесь пишите в Icq 192064 цену обсудим =)).
Раскрывающийся текст
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
from net.sf.l2j.gameserver.model import L2ItemInstance
#Данные строки изменять не рекомендую:
qn = "1911_Enchanter"
NPC=[70020]
QuestId = 1911
QuestName = "Enchanter"
QuestDesc = "custom"
InitialHtml = "70020-01.htm"
#Строки настройки скрипта:
# Итем, который будет вычитаться как оплата за заточку (Seed of Horror = 1255; Adena - 57):
ADENA_ID = 4037
#Количество итемов оплаты:
COUNT = 120
#Величина, на которую будет производиться заточка:
ENCH = 30
# ID непися, для которого будет работать скрипт. лучше не изменять.
NPC_ENCH = 70020
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onEvent (self,event,st) :
htmltext = event
if event == "1" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(1):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(1)
#Список итемов-исключений (в остальных разделах также):
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "2" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(2):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(2)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "3" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(3):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(3)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "4" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(4):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(4)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "5" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(5):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(5)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "6" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(6):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(6)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "7" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(7):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(7)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "8" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(8):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(8)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "9" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(9):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(9)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "10" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(10):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(10)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "11" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(11):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(11)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "12" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(12):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(12)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "13" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(13):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(13)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "14" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(14):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(14)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "15" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(15):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(15)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "16" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(16):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(16)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
return htmltext
def onTalk (self,npc,player) :
st = player.getQuestState(qn)
npcId = npc.getNpcId()
htmltext = "<html><head><body>Мне нечего тебе сказать</body></html>"
if not st : return htmltext
if npcId == NPC_ENCH:
htmltext = "70020-01.htm"
return htmltext
QUEST = Quest(QuestId,str(QuestId) + "_" + QuestName,QuestDesc)
for npcId in NPC:
QUEST.addStartNpc(npcId)
QUEST.addTalkId(npcId)
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
from net.sf.l2j.gameserver.model import L2ItemInstance
#Данные строки изменять не рекомендую:
qn = "1911_Enchanter"
NPC=[70020]
QuestId = 1911
QuestName = "Enchanter"
QuestDesc = "custom"
InitialHtml = "70020-01.htm"
#Строки настройки скрипта:
# Итем, который будет вычитаться как оплата за заточку (Seed of Horror = 1255; Adena - 57):
ADENA_ID = 4037
#Количество итемов оплаты:
COUNT = 120
#Величина, на которую будет производиться заточка:
ENCH = 30
# ID непися, для которого будет работать скрипт. лучше не изменять.
NPC_ENCH = 70020
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onEvent (self,event,st) :
htmltext = event
if event == "1" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(1):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(1)
#Список итемов-исключений (в остальных разделах также):
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "2" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(2):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(2)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "3" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(3):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(3)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "4" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(4):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(4)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "5" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(5):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(5)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "6" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(6):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(6)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "7" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(7):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(7)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "8" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(8):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(8)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "9" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(9):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(9)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "10" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(10):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(10)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "11" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(11):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(11)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "12" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(12):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(12)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "13" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(13):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(13)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "14" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(14):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(14)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "15" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(15):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(15)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
elif event == "16" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT and st.getItemEquipped(16):
st.takeItems(ADENA_ID,COUNT)
itm = st.getItemEquipped(16)
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
return htmltext
def onTalk (self,npc,player) :
st = player.getQuestState(qn)
npcId = npc.getNpcId()
htmltext = "<html><head><body>Мне нечего тебе сказать</body></html>"
if not st : return htmltext
if npcId == NPC_ENCH:
htmltext = "70020-01.htm"
return htmltext
QUEST = Quest(QuestId,str(QuestId) + "_" + QuestName,QuestDesc)
for npcId in NPC:
QUEST.addStartNpc(npcId)
QUEST.addTalkId(npcId)
0
· 10/25/2009, 11:34 AM
Добавь вначале :
Код
ENCH2 = 20
ENCH3 = 10
COUNT2 = 60
COUNT3 = 30
ENCH3 = 10
COUNT2 = 60
COUNT3 = 30
Далее в коде добавляеш:
Код
if event == "16" :
if st.getQuestItemsCount(ADENA_ID) >= COUNT2 and st.getItemEquipped(1):
st.takeItems(ADENA_ID,COUNT2)
itm = st.getItemEquipped(1)
#Список итемов-исключений (в остальных разделах также):
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH2)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
if st.getQuestItemsCount(ADENA_ID) >= COUNT2 and st.getItemEquipped(1):
st.takeItems(ADENA_ID,COUNT2)
itm = st.getItemEquipped(1)
#Список итемов-исключений (в остальных разделах также):
if itm == 8190:
htmltext = "<html><head><body>Этот предмет нельзя заточить!</body></html>"
return htmltext
st.exitQuest(1)
else:
st.takeItems(itm,1)
st.giveItems(itm,1,ENCH2)
htmltext = "Успешно заточено!"
return htmltext
st.setState(STARTED)
else : st.exitQuest(1)
где 16 - событие. Следующее будет 17. Например если у тебя 3 варианта заточки (30,20,10) - то всего их будет 45.
Далее в штмлке добавляй ссылку для события ( "16" :) итак далее для обработки всех затачиваемых слотов инвентаря ( слоты инвентаря: st.getItemEquipped(1) и при выдаче надо тут: st.takeItems(itm,1) и тут :st.giveItems(itm,1,ENCH)
главное будь внимателен, а так ничо сложного нету...
Если будут проблемы пиши в аську, договоримся!
0
Войдите или зарегистрируйтесь чтобы ответить


