# Created by NewbyxXx [at] gmail [dot] com 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 #================================ #1.dobavit ID v constants #vrode sdelal, no ne do konca #================================ #2.dobavit HTM'ki norm #(ili prosto tam text dobavit) #================================ #3.sdelat script traderov #(exchange) #================================ #4.Ne hvataet info o queste #ne znaju gde dosat' popodrobnee o queste(mozhet v htmlkah budet) #================================ #CHANCE (v %) vypadenija q itema KALDIS_COIN CHANCE = 30 CHANCE2 = 100 # (v %) shto vypadut coin'y kotorie nado meniat #QUEST MONSTERS #KADIS_COIN HARIT_LIZARDMAN = 640 #BLOOD_MEDUSA LAKIN = 604 TIMAK_ORC = 583 TIMAK_ORC_SOLDIER = 585 TIMAK_ORC_ARCHER = 584 PUNISHMENT_OF_UNDEAD = 678 #SILVER_UNICORN FORMOR = 568 FORMOR_ELDER = 569 VANOR_SILENOS_SHAMAN = 685 OL_MAHUM = 161 #VZIAL NE OL_MAHUMOV A OEL_MAHUMOV (A TO KAK-TO MONSTRY S 23-25lvl'om tut ne logichno, a OEL KAKRAZ podohdiat (VEROJATNO OSHYBKA, t.k. eto ne pervaja oshybka, ne hvataet info o tom gde poluchit MANAKS_GOLD_GIANT OL_MAHUM_WARRIOR = 575 #VZIAL OEL MAHUM'a vyshe opisano pocemu (V inete proveril, tut dolzhen byt OEL_MAHUM) TARIK_BUGBEAR_HIGH_WARRIOR = 572 #GOLDER_WYVERN TIMAK_ORC_SHAMAN = 587 HATAR_HANISHEE = 663 ROYAL_CAVE_SERVANT = 240 #Ih 2 ROYAL_CAVE_SERVANT2 = 276 #poka ne ispolzovan SHACKLE = 235 #ih 2 SHACKLE2 = 279 #poka ne ispolzovan MALRUK_SUCCUBUS_TUREN = 245 #ih 2 MALRUK_SUCCUBUS_TUREN2 = 284 #poka ne ispolzovan HEADLESS_KNIGHT = 146 #ih 2 HEADLESS_KNIGHT2 = 280 #poka ne ispolzovan #QUEST ITEMS COIN_DIAGRAM = 3811 KALDIS_COIN = 3812 COIN_COLLECTOR_LVL1 = 3813 COIN_COLLECTOR_LVL2 = 3814 COIN_COLLECTOR_LVL3 = 3815 #itemy iz monstrov BLOOD_MEDUSA = 3472 SILVER_UNICORN = 3490 GOLDEN_WYVERN = 3482 #itemy dlia 2lvl'a BLOOD_WEREWOLF = 3473 BLOOD_DRE_VANUL = 3475 GOLD_DRAKE = 3485 GOLD_KNIGHT = 3483 SILVER_FAIRY = 3491 SILVER_GOLEM = 3494 #itemy dlia 1lvl'a SILVER_DRYAD = 3492 SILVER_UNDINE = 3495 BLOOD_BASILISK = 3474 BLOOD_SUCCUBUS = 3476 GOLD_GIANT = 3484 GOLD_WYRM = 3486 #ostalnie itemy kotorie mozhno pomeniat #* - Nia's ; Manak's ; Beleth's NIAS_MEDUSA_BLOOD = 3480 NIAS_GOLD_WYVERN = 3489 NIAS_SILVER_FAIRY = 3498 MANAKS_SILVER_DRYAD = 3497 MANAKS_BLOOD_WEREWOLF = 3479 MANAKS_GOLD_GIANT = 3488 # NE ISPOLZOVAN NO DOLZHEN T.K. KUPIT ZA NEGO MOZHNO (PO l2c1 guide) NO DOSTAT EGO NELZIA!!! PROVERIT BELETHS_BLOOD_DRAGON = 3478 BELETHS_GOLD_DRAGON = 3487 BELETHS_SILVER_DRAGON = 3496 BLOOD_DRAGON = 3477 SILVER_DRAGON = 3493 GOLD_DRAGON = 3481 #NPC #Hunters Village key-npc WAREHOUSE_SORINT = 7232 PRESIDENT_BERNARD = 7702 #Hunters Village Trader MAGISTER_PAGE = 7696 # (3,2,1lvl) #Cruma Tower Trader RESEARCHER_LORAIN = 7673 # (3,2,1lvl) #Oren Trader WAREHOUSE_HAGGER = 7183 # (3,2,1lvl) GUARD_STAN = 7200 # (2,1lvl) #Ivory Tower Trader RALFORD = 7165 # (2,1lvl) #Aden Trader BLACKSMITH_FERIS = 7847 # (1lvl) (Ferris nick v l2j) #Giran Trader WAREHOUSE_COLLOB = 7092 # (1lvl) #Floran Trader GROCER_PANO = 7078 # (1lvl) class Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) #Kazhetsia eto sdelano def onEvent (self,event,st) : htmltext = event if event == "1" : #NUZHNI HTM'ki!! htmltext = "7232-03.htm" if event == "2" : #soglashaetsia htmltext = "7232-05.htm" st.set("cond","1") st.setState(STARTED) st.giveItems(COIN_DIAGRAM,1) st.playSound("ItemSound.quest_accept") if event == "3" : #protiv htmltext = "7232-04.htm" st.unset("step") st.exitQuest(1) if event == "4" : #bernard prosit info htmltext = "7702-02.htm" if event == "5" : #dalee s bernard htmltext = "7702-02a.htm" st.set("step","1") st.playSound("ItemSound.quest_middle") if event == "6" : #dalee s bernard htmltext = "7703-03.htm" st.set("step","1") st.playSound("ItemSound.quest_middle") if event == "7" : #dalee s bernard htmltext = "7703-06.htm" if event == "8" : #nachalo s sorint'om posle togo kak otdash coin htmltext = "7703-08.htm" if event == "9" : #return htmltext = "7232-09.htm" if event == "18" : #leave htmltext = "7232-18.htm" if event == "19" : #leave confirmation htmltext = "7232-18a.htm" st.takeItems(COIN_COLLECTOR_LVL3,-1) st.takeItems(COIN_COLLECTOR_LVL2,-1) st.takeItems(COIN_COLLECTOR_LVL1,-1) st.exitQuest(1) if event == "104" : if st.getQuestItemsCount(COIN_COLLECTOR_LVL3) : event = "13" if st.getQuestItemsCount(COIN_COLLECTOR_LVL2) : event = "14" if st.getQuestItemsCount(COIN_COLLECTOR_LVL1) : event = "15" if event == "13" : #uznat' pro coin'y kakie nuzhni / poluchit povyshenie htmltext = "7232-13.htm" if npcId == WAREHOUSE_SORINT and st.getQuestItemsCount(COIN_COLLECTOR_LVL3) == 1 and st.getQuestItemsCount(BLOOD_WEREWOLF) >= 1 and st.getQuestItemsCount(BLOOD_DRE_VANUL) >= 1 and st.getQuestItemsCount(GOLD_DRAKE) >= 1 and st.getQuestItemsCount(GOLD_KNIGHT) >= 1 and st.getQuestItemsCount(SILVER_FAIRY) >= 1 and st.getQuestItemsCount(SILVER_GOLEM) >= 1 : st.takeItems(COIN_COLLECTOR_LVL3,1) st.takeItems(BLOOD_WEREWOLF,1) st.takeItems(BLOOD_DRE_VANUL,1) st.takeItems(GOLD_DRAKE,1) st.takeItems(GOLD_KNIGHT,1) st.takeItems(SILVER_FAIRY,1) st.takeItems(SILVER_GOLEM,1) st.giveItems(COIN_COLLECTOR_LVL2,1) st.playSound("ItemSound.quest_middle") htmltext = "7232-16.htm" #POZDRAVLIAJU POLUCHIL 2 LVL if event == "14" : #uznat' pro coin'y kakie nuzhni / poluchit povyshenie htmltext = "7232-14.htm" if npcId == WAREHOUSE_SORINT and st.getQuestItemsCount(COIN_COLLECTOR_LVL2) == 1 and st.getQuestItemsCount(BLOOD_BASILISK) >= 1 and st.getQuestItemsCount(BLOOD_SUCCUBUS) >= 1 and st.getQuestItemsCount(GOLD_GIANT) >= 1 and st.getQuestItemsCount(GOLD_WYRM) >= 1 and st.getQuestItemsCount(SILVER_DRYAD) >= 1 and st.getQuestItemsCount(SILVER_UNDINE) >= 1 : st.takeItems(COIN_COLLECTOR_LVL2,1) st.takeItems(BLOOD_BASILISK,1) st.takeItems(BLOOD_SUCCUBUS,1) st.takeItems(GOLD_GIANT,1) st.takeItems(GOLD_WYRM,1) st.takeItems(SILVER_DRYAD,1) st.takeItems(SILVER_UNDINE,1) st.giveItems(COIN_COLLECTOR_LVL1,1) st.playSound("ItemSound.quest_middle") htmltext = "7232-17.htm" #POZDRAVLIAJU POLUCHIL 1 LVL if event == "15" : htmltext = "7232-15.htm" #v skorom vremeni budet dobavleno (naverno) if event == "22" : #uznat' pro coin'y htmltext = "7232-22.htm" if event == "23" : #uznat' pro memberov htmltext = "7232-23.htm" if event == "103" and int(st.get("cond")) == 1 and st.getQuestItemsCount(COIN_COLLECTOR_LVL3) or st.getQuestItemsCount(COIN_COLLECTOR_LVL2) or st.getQuestItemsCount(COIN_COLLECTOR_LVL1) : #NUZHEN HTM exchange'a quest itemov na itemy htmltext = ".htm" #htm s itemami dlia 3 lvl'a if event == "102" and int(st.get("cond")) == 1 and st.getQuestItemsCount(COIN_COLLECTOR_LVL2) or st.getQuestItemsCount(COIN_COLLECTOR_LVL1) : #NUZHEN HTM exchange'a quest itemov na itemy htmltext = ".htm" #htm s itemami dlia 2 lvl'a if event == "101" and int(st.get("cond")) == 1 and st.getQuestItemsCount(COIN_COLLECTOR_LVL1) : #NUZHEN HTM exchange'a quest itemov na itemy htmltext = ".htm" #htm s itemami dlia 1 lvl'a return htmltext #onTalk vrode sdelal def onTalk (Self,npc,st): npcId = npc.getNpcId() htmltext = "I have nothing to say you" id = st.getState() if id == CREATED : st.set("step","0") st.set("cond","0") #PROVERKA NA LVL if npcId == WAREHOUSE_SORINT and int(st.get("cond")) == 0 : if st.getPlayer().getLevel() >= 40 : htmltext = "7232-02.htm" #HTM FILE S SOGLASHENIEM SHTO QUEST VZIAT else: htmltext = "7232-01.htm" #HTM FILE S ZAPRETOM QUESTA IZ-ZA NEDOSTATKA LEVELA st.unset("step") st.exitQuest(1) #RAZGOVOR S BERNARDOM if npcId == PRESIDENT_BERNARD and int(st.get("cond")) == 1 and int(st.get("step")) == 0 : htmltext = "7702-01.htm" #HTM FILE S RAZRESHENIEM POLUCHIT COIN OT HARIT LIZARDMANOV elif npcId == PRESIDENT_BERNARD and int(st.get("cond")) == 0 : htmltext = "I have nothing to say you" #PROSTO TAK PODOJTI K PRESIDENT_BERNARD'u elif npcId == PRESIDENT_BERNARD and int(st.get("cond")) == 1 and int(st.get("step")) == 1 : htmltext = "7702-05.htm" #HTM S TEM SHTO NADO POJTI K WAREHOUSE_SORINT'u elif npcId == PRESIDENT_BERNARD and int(st.get("step")) > 1 : htmltext = "7702-05.htm" #IDI DALSHE SOBIRAJ QUEST ITEMY #ESLI PROSTO PODOJDUT K WAREHOUSE_SORINTU POSLE RAZGOVORA S NIM ZHE if npcId == WAREHOUSE_SORINT and int(st.get("step")) == 0 and int(st.get("cond")) == 1 : htmltext = "7232-06.htm" #HTM FILE S SOVETOM PODOJTI K PRESIDENTU ZA DALNEJSHIMI DEJSTVIJAMI #IF S POLUCHENIEM 3LVL MEMBERSHIP'a if npcId == WAREHOUSE_SORINT and int(st.get("step")) == 1 and st.getQuestItemsCount(KALDIS_COIN) == 1 : htmltext = "7232-07.htm" #HTML S THX ZA COIN st.takeItems(KALDIS_COIN,-1) st.giveItems(COIN_COLLECTOR_LVL3,1) st.set("step","2") st.playSound("ItemSound.quest_middle") elif npcId == WAREHOUSE_SORINT and int(st.get("step")) == 1 and st.getQuestItemsCount(KALDIS_COIN) == 0 : htmltext = "7232-06.htm" #TY NE VYBIL QUEST ITEM elif npcId == WAREHOUSE_SORINT and int(st.get("step")) == 0 and int(st.get("cond")) == 1 : htmltext = "7232-06.htm" #HTM FILE S SOVETOM PODOJTI K PRESIDENTU ZA DALNEJSHIMI DEJSTVIJAMI #IF S POLUCHENIEM 2LVL MEMBERSHIP'a if npcId == WAREHOUSE_SORINT and st.getQuestItemsCount(COIN_COLLECTOR_LVL3) == 1 : htmltext = "7232-10.htm" #htm 3lvl'a if npcId == WAREHOUSE_SORINT and st.getQuestItemsCount(COIN_COLLECTOR_LVL2) == 1 : htmltext = "7232-11.htm" #htm 2lvl'a if npcId == WAREHOUSE_SORINT and st.getQuestItemsCount(COIN_COLLECTOR_LVL3) == 1 : htmltext = "7232-12.htm" #htm 1lvl'a #DODELAT!!!NADO NAPISAT U KOGO KAKIE ITEMY MOGUT MENIATSIA I S KAKIM LEVELOM (poka ne nashel vsej info, tolko ~85%) if npcId == MAGISTER_PAGE and int(st.get("cond")) and st.getQuestItemsCount(COIN_COLLECTOR_LVL3) or st.getQuestItemsCount(COIN_COLLECTOR_LVL2) or st.getQuestItemsCount(COIN_COLLECTOR_LVL1) : htmltext = ".htm" #HTM DOBAVIT ETOGO PRODOVCA elif npcId == MAGISTER_PAGE : htmltext = "I have nothing to say you" #ESLI NE VZIAT Q, NE HVATAET ITEMOV if npcId == RESEARCHER_LORAIN and int(st.get("cond")) and st.getQuestItemsCount(COIN_COLLECTOR_LVL3) or st.getQuestItemsCount(COIN_COLLECTOR_LVL2) or st.getQuestItemsCount(COIN_COLLECTOR_LVL1) : htmltext = ".htm" #HTM DOBAVIT ETOGO PRODOVCA elif npcId == RESEARCHER_LORAIN : htmltext = "I have nothing to say you" #ESLI NE VZIAT Q, NE HVATAET ITEMOV if npcId == WAREHOUSE_HAGGER and int(st.get("cond")) and st.getQuestItemsCount(COIN_COLLECTOR_LVL3) or st.getQuestItemsCount(COIN_COLLECTOR_LVL2) or st.getQuestItemsCount(COIN_COLLECTOR_LVL1) : htmltext = ".htm" #HTM DOBAVIT ETOGO PRODOVCA elif npcId == WAREHOUSE_HAGGER : htmltext = "I have nothing to say you" #ESLI NE VZIAT Q, NE HVATAET ITEMOV if npcId == GUARD_STAN and int(st.get("cond")) and st.getQuestItemsCount(COIN_COLLECTOR_LVL2) or st.getQuestItemsCount(COIN_COLLECTOR_LVL1) : htmltext = ".htm" #HTM DOBAVIT ETOGO PRODOVCA elif npcId == GUARD_STAN : htmltext = "I have nothing to say you" #ESLI NE VZIAT Q, NE HVATAET ITEMOV if npcId == RALFORD and int(st.get("cond")) and st.getQuestItemsCount(COIN_COLLECTOR_LVL2) or st.getQuestItemsCount(COIN_COLLECTOR_LVL1) : htmltext = ".htm" #HTM DOBAVIT ETOGO PRODOVCA elif npcId == RALFORD : htmltext = "I have nothing to say you" #ESLI NE VZIAT Q, NE HVATAET ITEMOV if npcId == BLACKSMITH_FERIS and int(st.get("cond")) and st.getQuestItemsCount(COIN_COLLECTOR_LVL1) : htmltext = ".htm" #HTM DOBAVIT ETOGO PRODOVCA elif npcId == BLACKSMITH_FERIS : htmltext = "I have nothing to say you" #ESLI NE VZIAT Q, NE HVATAET ITEMOV if npcId == WAREHOUSE_COLLOB and int(st.get("cond")) and st.getQuestItemsCount(COIN_COLLECTOR_LVL1) : htmltext = ".htm" #HTM DOBAVIT ETOGO PRODOVCA elif npcId == WAREHOUSE_COLLOB : htmltext = "I have nothing to say you" #ESLI NE VZIAT Q, NE HVATAET ITEMOV if npcId == GROCER_PANO and int(st.get("cond")) and st.getQuestItemsCount(COIN_COLLECTOR_LVL1) : htmltext = ".htm" #HTM DOBAVIT ETOGO PRODOVCA elif npcId == GROCER_PANO : htmltext = "I have nothing to say you" #ESLI NE VZIAT Q, NE HVATAET ITEMOV return htmltext #onKill poidee sdelano def onKill (self,npc,st): npcId = npc.getNpcId() if npcId == HARIT_LIZARDMAN and int(st.get("step")) == 1 and st.getQuestItemsCount(KALDIS_COIN) == 0 : if st.getRandom(100) <= CHANCE : st.giveItems(KALDIS_COIN,1) st.playSound("ItemSound.quest_itemget") if npcId == LAKIN or npcId == TIMAK_ORC or npcId == TIMAK_ORC_SOLDIER or npcId == TIMAK_ORC_ARCHER or npcId == PUNISHMENT_OF_DEAD and st.getQuestItemsCount(COIN_COLLECTOR_LVL3) == 1 or st.getQuestItemsCount(COIN_COLLECTOR_LVL2) == 1 or st.getQuestItemsCount(COIN_COLLECTOR_LVL1) == 1 : if st.getRandom(100) <= CHANCE2 : st.giveItems(BLOOD_MEDUSA,1) st.playSound("ItemSound.quest_itemget") if npcId == FORMOR or npcId == FORMOR_ELDER or npcId == VANOR_SILENOS_SHAMAN or npcId == OL_MAHUM or npcId == OL_MAHUM_WARIOR or npcId == TARIK_BUGBEAR_HIGH_WARRIOR and st.getQuestItemsCount(COIN_COLLECTOR_LVL3) == 1 or st.getQuestItemsCount(COIN_COLLECTOR_LVL2) == 1 or st.getQuestItemsCount(COIN_COLLECTOR_LVL1) == 1 : if st.getRandom(100) <= CHANCE2 : st.giveItems(SILVER_UNICORN,1) st.playSound("ItemSound.quest_itemget") if npcId == TIMAK_ORC_SHAMAN or npcId == HATAR_HANISHEE or npcId == ROYAL_CAVE_SERVANT or npcId == ROYAL_CAVE_SERVANT2 or npcId == SHACKLE or npcId == SHACKLE2 or npcId == MARLUK_SUCCUBUS_TUREN or npcId == MARLUK_SUCCUBUS_TUREN2 or npcId == HEADLESS_KNIGHT or npcId == HEADLESS_KNIGHT2 and st.getQuestItemsCount(COIN_COLLECTOR_LVL3) == 1 or st.getQuestItemsCount(COIN_COLLECTOR_LVL2) == 1 or st.getQuestItemsCount(COIN_COLLECTOR_LVL1) == 1 : if st.getRandom(100) <= CHANCE2 : st.giveItems(GOLDEN_WYVERN,1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(336,"336_CoinOfMagic","Coin Of Magic") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) #kazhetsia eti dannie zapolnil norm QUEST.setInitialState(CREATED) QUEST.addStartNpc(WAREHOUSE_SORINT) CREATED.addTalkId(WAREHOUSE_SORINT) COMPLETED.addTalkId(WAREHOUSE_SORINT) STARTED.addTalkId(WAREHOUSE_SORINT) STARTED.addTalkId(PRESIDENT_BERNARD) STARTED.addTalkId(MAGISTER_PAGE) STARTED.addTalkId(RESEARCHER_LORAIN) STARTED.addTalkId(WAREHOUSE_HAGGER) STARTED.addTalkId(GUARD_STAN) STARTED.addTalkId(RALFORD) STARTED.addTalkId(BLACKSMITH_FERIS) STARTED.addTalkId(WAREHOUSE_COLLOB) STARTED.addTalkId(GROCER_PANO) STARTED.addKillId(HARIT_LIZARDMAN) STARTED.addKillId(LAKIN) STARTED.addKillId(TIMAK_ORC) STARTED.addKillId(TIMAK_ORC_SOLDIER) STARTED.addKillId(TIMAK_ORC_ARCHER) STARTED.addKillId(PUNISHMENT_OF_UNDEAD) STARTED.addKillId(OL_MAHUM) STARTED.addKillId(OL_MAHUM_WARRIOR) STARTED.addKillId(TARIK_BUGBEAR_HIGH_WARRIOR) STARTED.addKillId(TIMAK_ORC_SHAMAN) STARTED.addKillId(HATAR_HANISHEE) STARTED.addKillId(ROYAL_CAVE_SERVANT) STARTED.addKillId(SHACKLE) STARTED.addKillId(MARLUK_SUCCUBUS_TUREN) STARTED.addKillId(HEADLESS_KNIGHT) STARTED.addQuestDrop(HARIT_LIZARDMAN,KADIS_COIN,1) STARTED.addQuestDrop(LAKIN,BLOOD_MEDUSA,1) STARTED.addQuestDrop(TIMAK_ORC,BLOOD_MEDUSA,1) STARTED.addQuestDrop(TIMAK_ORC_SOLDIER,BLOOD_MEDUSA,1) STARTED.addQuestDrop(TIMAK_ORC_ARCHER,BLOOD_MEDUSA,1) STARTED.addQuestDrop(PUNISHMENT_OF_UNDEAD,BLOOD_MEDUSA,1) STARTED.addQuestDrop(FORMOR,SILVER_UNICORN,1) STARTED.addQuestDrop(FORMOR_ELDER,SILVER_UNICORN,1) STARTED.addQuestDrop(VANOR_SILENOS_SHAMAN,SILVER_UNICORN,1) STARTED.addQuestDrop(OL_MAHUM,SILVER_UNICORN,1) STARTED.addQuestDrop(OL_MAHUM_WARRIOR,SILVER_UNICORN,1) STARTED.addQuestDrop(TARIK_BUGBEAR_HIGH_WARRIOR,SILVER_UNICORN,1) STARTED.addQuestDrop(TIMAK_ORC_SHAMAN,GOLDEN_WYVERN,1) STARTED.addQuestDrop(HATAR_HANISHEE,GOLDEN_WYVERN,1) STARTED.addQuestDrop(SHACKLE,GOLDEN_WYVERN,1) STARTED.addQuestDrop(MALRUK_SUCCUBUS_TUREN,GOLDEN_WYVERN,1) STARTED.addQuestDrop(ROYAL_CAVE_SERVANT,GOLDEN_WYVERN,1) STARTED.addQuestDrop(HEADLESS_KNIGHT,GOLDEN_WYVERN,1) print "importing quests: 336: Coin Of Magic"