Свернуть ↑
# Made by disKret
import sys
from silentium.gameserver import Config
from silentium.commons import Rnd
from silentium.gameserver.model.itemcontainer import Inventory
from silentium.gameserver.model import L2ItemInstance
from silentium.gameserver.model.quest import QuestState
from silentium.gameserver.model.quest.jython import QuestJython as JQuest
qn = "9990_CraftSystem"
#NPC
NPC_ID = 30086
#QUEST ITEM
PACKAGE = 7263
ONE_TYPE_WEAPON = [1, 2, 3, 4]
ONE_TYPE_DROP_ID = [4037, 57, 4356, 4357, 6673]
ONE_TYPE_DROP_COUNT = 1
ONE_TYPE_DROP_CHANCE = 100
ONE_MOB_ID = [18342, 18341, 18343, 18330, 18331]
TWO_TYPE_WEAPON = [1, 2, 3, 4]
TWO_TYPE_DROP_ID = [1, 2, 3, 4, 5]
TWO_TYPE_DROP_COUNT = 1
TWO_TYPE_DROP_CHANCE = 100
TWO_MOB_ID = [111, 111, 111, 111, 111]
THREE_TYPE_WEAPON = [1, 2, 3, 4]
THREE_TYPE_DROP_ID = [1, 2, 3, 4, 5]
THREE_TYPE_DROP_COUNT = 1
THREE_TYPE_DROP_CHANCE = 100
THREE_MOB_ID = [111, 111, 111, 111, 111]
FO_TYPE_WEAPON = [1, 2, 3, 4]
FO_TYPE_DROP_ID = [1, 2, 3, 4, 5]
FO_TYPE_DROP_COUNT = 1
FO_TYPE_DROP_CHANCE = 100
FO_MOB_ID = [111, 111, 111, 111, 111]
FIVE_TYPE_WEAPON = [1, 2, 3, 4]
FIVE_TYPE_DROP_ID = [1, 2, 3, 4, 5]
FIVE_TYPE_DROP_COUNT = 1
FIVE_TYPE_DROP_CHANCE = 100
FIVE_MOB_ID = [111, 111, 111, 111, 111]
print "E6aTb KoIIaTb 3arpy3uJIocb!"
class Quest (JQuest) :
def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
self.questItemIds = [PACKAGE]
def onTalk (self,npc,player):
htmltext = "<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>"
st = player.getQuestState(qn)
if not st : return
st.setState(State('Started', QUEST))
return
def onAttack (self, npc, player, damage, isPet):
st = player.getQuestState(qn)
if not st : return
player = st.getPlayer()
npcId = npc.getNpcId()
if player.getInventory().getPaperdollItem(Inventory.P APERDOLL_LRHAND) != None:
type = player.getInventory().getPaperdollItem(Inventory.P APERDOLL_LRHAND)
elif player.getInventory().getPaperdollItem(Inventory.P APERDOLL_RHAND) != None:
type = player.getInventory().getPaperdollItem(Inventory.P APERDOLL_RHAND)
else :
return
itemId = type.getItemId()
if itemId in ONE_TYPE_WEAPON and npcId in ONE_MOB_ID:
if itemId == ONE_TYPE_WEAPON[0] :
if ONE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(ONE_TYPE_DROP_ID[0], ONE_TYPE_DROP_COUNT)
if ONE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(ONE_TYPE_DROP_ID[1], ONE_TYPE_DROP_COUNT)
elif itemId == ONE_TYPE_WEAPON[1] :
if ONE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(ONE_TYPE_DROP_ID[0], ONE_TYPE_DROP_COUNT)
if ONE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(ONE_TYPE_DROP_ID[1], ONE_TYPE_DROP_COUNT)
if ONE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(ONE_TYPE_DROP_ID[2], ONE_TYPE_DROP_COUNT)
elif itemId == ONE_TYPE_WEAPON[2] :
if ONE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(ONE_TYPE_DROP_ID[0], ONE_TYPE_DROP_COUNT)
if ONE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(ONE_TYPE_DROP_ID[1], ONE_TYPE_DROP_COUNT)
if ONE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(ONE_TYPE_DROP_ID[2], ONE_TYPE_DROP_COUNT)
if ONE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(ONE_TYPE_DROP_ID[3], ONE_TYPE_DROP_COUNT)
elif itemId == ONE_TYPE_WEAPON[3] :
if ONE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(ONE_TYPE_DROP_ID[0], ONE_TYPE_DROP_COUNT)
if ONE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(ONE_TYPE_DROP_ID[1], ONE_TYPE_DROP_COUNT)
if ONE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(ONE_TYPE_DROP_ID[2], ONE_TYPE_DROP_COUNT)
if ONE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(ONE_TYPE_DROP_ID[3], ONE_TYPE_DROP_COUNT)
if ONE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(ONE_TYPE_DROP_ID[4], ONE_TYPE_DROP_COUNT)
elif itemId in TWO_TYPE_WEAPON and npcId in TWO_MOB_ID:
if itemId == TWO_TYPE_WEAPON[0] :
if TWO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(TWO_TYPE_WEAPON[0], TWO_TYPE_DROP_COUNT)
if TWO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(TWO_TYPE_WEAPON[1], TWO_TYPE_DROP_COUNT)
elif itemId == TWO_TYPE_WEAPON[1] :
if TWO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(TWO_TYPE_WEAPON[0], TWO_TYPE_DROP_COUNT)
if TWO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(TWO_TYPE_WEAPON[1], TWO_TYPE_DROP_COUNT)
if TWO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(TWO_TYPE_WEAPON[2], TWO_TYPE_DROP_COUNT)
elif itemId == TWO_TYPE_WEAPON[2] :
if TWO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(TWO_TYPE_WEAPON[0], TWO_TYPE_DROP_COUNT)
if TWO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(TWO_TYPE_WEAPON[1], TWO_TYPE_DROP_COUNT)
if TWO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(TWO_TYPE_WEAPON[2], TWO_TYPE_DROP_COUNT)
if TWO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(TWO_TYPE_WEAPON[3], TWO_TYPE_DROP_COUNT)
elif itemId == TWO_TYPE_WEAPON[3] :
if TWO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(TWO_TYPE_WEAPON[0], TWO_TYPE_DROP_COUNT)
if TWO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(TWO_TYPE_WEAPON[1], TWO_TYPE_DROP_COUNT)
if TWO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(TWO_TYPE_WEAPON[2], TWO_TYPE_DROP_COUNT)
if TWO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(TWO_TYPE_WEAPON[3], TWO_TYPE_DROP_COUNT)
if TWO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(TWO_TYPE_WEAPON[4], TWO_TYPE_DROP_COUNT)
elif itemId in THREE_TYPE_WEAPON and npcId in THREE_MOB_ID:
if itemId == THREE_TYPE_WEAPON[0] :
if THREE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(THREE_TYPE_WEAPON[0], THREE_TYPE_DROP_COUNT)
if THREE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(THREE_TYPE_WEAPON[1], THREE_TYPE_DROP_COUNT)
elif itemId == THREE_TYPE_WEAPON[1] :
if THREE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(THREE_TYPE_WEAPON[0], THREE_TYPE_DROP_COUNT)
if THREE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(THREE_TYPE_WEAPON[1], THREE_TYPE_DROP_COUNT)
if THREE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(THREE_TYPE_WEAPON[2], THREE_TYPE_DROP_COUNT)
elif itemId == THREE_TYPE_WEAPON[2] :
if THREE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(THREE_TYPE_WEAPON[0], THREE_TYPE_DROP_COUNT)
if THREE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(THREE_TYPE_WEAPON[1], THREE_TYPE_DROP_COUNT)
if THREE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(THREE_TYPE_WEAPON[2], THREE_TYPE_DROP_COUNT)
if THREE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(THREE_TYPE_WEAPON[3], THREE_TYPE_DROP_COUNT)
elif itemId == THREE_TYPE_WEAPON[3] :
if THREE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(THREE_TYPE_WEAPON[0], THREE_TYPE_DROP_COUNT)
if THREE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(THREE_TYPE_WEAPON[1], THREE_TYPE_DROP_COUNT)
if THREE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(THREE_TYPE_WEAPON[2], THREE_TYPE_DROP_COUNT)
if THREE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(THREE_TYPE_WEAPON[3], THREE_TYPE_DROP_COUNT)
if THREE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(THREE_TYPE_WEAPON[4], THREE_TYPE_DROP_COUNT)
elif itemId in FO_TYPE_WEAPON and npcId in FO_MOB_ID:
if itemId == FO_TYPE_WEAPON[0] :
if FO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FO_TYPE_WEAPON[0], FO_TYPE_DROP_COUNT)
if FO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FO_TYPE_WEAPON[1], FO_TYPE_DROP_COUNT)
elif itemId == FO_TYPE_WEAPON[1] :
if FO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FO_TYPE_WEAPON[0], FO_TYPE_DROP_COUNT)
if FO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FO_TYPE_WEAPON[1], FO_TYPE_DROP_COUNT)
if FO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FO_TYPE_WEAPON[2], FO_TYPE_DROP_COUNT)
elif itemId == FO_TYPE_WEAPON[2] :
if FO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FO_TYPE_WEAPON[0], FO_TYPE_DROP_COUNT)
if FO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FO_TYPE_WEAPON[1], FO_TYPE_DROP_COUNT)
if FO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FO_TYPE_WEAPON[2], FO_TYPE_DROP_COUNT)
if FO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FO_TYPE_WEAPON[3], FO_TYPE_DROP_COUNT)
elif itemId == FO_TYPE_WEAPON[3] :
if FO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FO_TYPE_WEAPON[0], FO_TYPE_DROP_COUNT)
if FO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FO_TYPE_WEAPON[1], FO_TYPE_DROP_COUNT)
if FO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FO_TYPE_WEAPON[2], FO_TYPE_DROP_COUNT)
if FO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FO_TYPE_WEAPON[3], FO_TYPE_DROP_COUNT)
if FO_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FO_TYPE_WEAPON[4], FO_TYPE_DROP_COUNT)
elif itemId in FIVE_TYPE_WEAPON and npcId in FIVE_MOB_ID:
if itemId == FIVE_TYPE_WEAPON[0] :
if FIVE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FIVE_TYPE_WEAPON[0], FIVE_TYPE_DROP_COUNT)
if FIVE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FIVE_TYPE_WEAPON[1], FIVE_TYPE_DROP_COUNT)
elif itemId == FIVE_TYPE_WEAPON[1] :
if FIVE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FIVE_TYPE_WEAPON[0], FIVE_TYPE_DROP_COUNT)
if FIVE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FIVE_TYPE_WEAPON[1], FIVE_TYPE_DROP_COUNT)
if FIVE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FIVE_TYPE_WEAPON[2], FIVE_TYPE_DROP_COUNT)
elif itemId == FIVE_TYPE_WEAPON[2] :
if FIVE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FIVE_TYPE_WEAPON[0], FIVE_TYPE_DROP_COUNT)
if FIVE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FIVE_TYPE_WEAPON[1], FIVE_TYPE_DROP_COUNT)
if FIVE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FIVE_TYPE_WEAPON[2], FIVE_TYPE_DROP_COUNT)
if FIVE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FIVE_TYPE_WEAPON[3], FIVE_TYPE_DROP_COUNT)
elif itemId == FIVE_TYPE_WEAPON[3] :
if FIVE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FIVE_TYPE_WEAPON[0], FIVE_TYPE_DROP_COUNT)
if FIVE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FIVE_TYPE_WEAPON[1], FIVE_TYPE_DROP_COUNT)
if FIVE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FIVE_TYPE_WEAPON[2], FIVE_TYPE_DROP_COUNT)
if FIVE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FIVE_TYPE_WEAPON[3], FIVE_TYPE_DROP_COUNT)
if FIVE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
st.giveItems(FIVE_TYPE_WEAPON[4], FIVE_TYPE_DROP_COUNT)
else :
return
return
QUEST = Quest(9990, qn, "Craft System")
QUEST.addAttackId(ONE_MOB_ID)
QUEST.addAttackId(TWO_MOB_ID)
QUEST.addAttackId(THREE_MOB_ID)
QUEST.addAttackId(FO_MOB_ID)
QUEST.addAttackId(FIVE_MOB_ID)
QUEST.addStartNpc(30086)
QUEST.addTalkId(30086)