Jump to content

KarlL2

Members
  • Posts

    4
  • Credits

  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by KarlL2

  1. Hi everyone I've recently embarqued in a new challenge. I'm trying to create a custom hunting quest. I've used Lector's quest (258_BringWolfPelt1) as my model.

    So basicly what I'm trying to achieve is people getting rewarded for hunting "x" npc. Here's Lector's original script:

    import sys
    from l2jorion import Config 
    from l2jorion.game.model.quest import State
    from l2jorion.game.model.quest import QuestState
    from l2jorion.game.model.quest.jython import QuestJython as JQuest

    qn = "258_BringWolfPelt1"

    WOLF_PELT = 702
    REWARDS={429:[1,6],42:[1,19],41:[1,19],462:[1,19],18:[1,20],426:[1,5],29:[1,2],22:[1,2],390:[1,3]}

    class Quest (JQuest) :

     def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

     def onEvent (self,event,st) :
        htmltext = event
        if event == "30001-03.htm" :
          st.set("cond","1")
          st.setState(STARTED)
          st.playSound("ItemSound.quest_accept")
        return htmltext

     def onTalk (self,npc,player):
       htmltext = "<html><body>You are either not carrying out your quest or don't meet the criteria.</body></html>

     st = player.getQuestState(qn)
       if not st : return htmltext

       npcId = npc.getNpcId()
       id = st.getState()
       if id == CREATED :
         st.set("cond","0")
       if st.getInt("cond")==0 :
         if player.getLevel() >= 3 :
           htmltext = "30001-02.htm"
         else:
           htmltext = "30001-01.htm"
           st.exitQuest(1)
       else :
         if st.getQuestItemsCount(WOLF_PELT) < 40 :
           htmltext = "30001-05.htm"
         else :
           st.takeItems(WOLF_PELT,-1)
           count=0
           while not count :
              for item in REWARDS.keys() :
                  qty,chance=REWARDS[item]
                  if st.getRandom(100) < chance and count == 0 :
                     st.giveItems(item,st.getRandom(qty)+1)
                     count+=1
           if chance < 7 :
             st.playSound("ItemSound.quest_jackpot")
           htmltext = "30001-06.htm"
           st.exitQuest(1)
           st.playSound("ItemSound.quest_finish")
       return htmltext

     def onKill(self,npc,player,isPet):
       st = player.getQuestState(qn)
       if not st : return 
       if st.getState() != STARTED : return 
       
       count = st.getQuestItemsCount(WOLF_PELT)
       numItems, chance = divmod(100*Config.RATE_DROP_QUEST,100)
       if st.getRandom(100) <chance :
         numItems = numItems + 1
       if count+numItems>=40 :
         numItems = 40 - count
         if numItems != 0 :
           st.playSound("ItemSound.quest_middle")
           st.set("cond","2")
       else :
         st.playSound("ItemSound.quest_itemget")
       st.giveItems(WOLF_PELT,int(numItems))
       return

    QUEST       = Quest(258,qn,"Bring Wolf Pelt1")
    CREATED     = State('Start', QUEST)
    STARTING    = State('Starting', QUEST)
    STARTED     = State('Started', QUEST)
    COMPLETED   = State('Completed', QUEST)

    QUEST.setInitialState(CREATED)
    QUEST.addStartNpc(30001)

    QUEST.addTalkId(30001)

    QUEST.addKillId(20120)
    QUEST.addKillId(20442)

    STARTED.addQuestDrop(20120,WOLF_PELT,1)

     

    and here's my version of the script:

     

    import sys
    from l2jorion import Config 
    from l2jorion.game.model.quest import State
    from l2jorion.game.model.quest import QuestState
    from l2jorion.game.model.quest.jython import QuestJython as JQuest

    qn = "1002_HuntTest"

    WOLF_PELT = 702
    REWARDS={429:[1,6],42:[1,19],41:[1,19],462:[1,19],18:[1,20],426:[1,5],29:[1,2],22:[1,2],390:[1,3]}

    class Quest (JQuest) :

     def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

     def onEvent (self,event,st) :
        htmltext = event
        if event == "30001-03.htm" :
          st.set("cond","1")
          st.setState(STARTED)
          st.playSound("ItemSound.quest_accept")
        return htmltext

     def onTalk (self,npc,player):
       htmltext = "<html><body>You are either not carrying out your quest or don't meet the criteria.</body></html>

      st = player.getQuestState(qn)
       if not st : return htmltext

       npcId = npc.getNpcId()
       id = st.getState()
       if id == CREATED :
         st.set("cond","0")
       if st.getInt("cond")==0 :
         if player.getLevel() >= 76 :
           htmltext = "30001-02.htm"
         else:
           htmltext = "30001-01.htm"
           st.exitQuest(1)
       else :
         if st.getQuestItemsCount(WOLF_PELT) < 40 :
           htmltext = "30001-05.htm"
         else :
           st.takeItems(WOLF_PELT,-1)
           count=0
           while not count :
              for item in REWARDS.keys() :
                  qty,chance=REWARDS[item]
                  if st.getRandom(100) < chance and count == 0 :
                     st.giveItems(item,st.getRandom(qty)+1)
                     count+=1
           if chance < 7 :
             st.playSound("ItemSound.quest_jackpot")
           htmltext = "30001-06.htm"
           st.exitQuest(1)
           st.playSound("ItemSound.quest_finish")
       return htmltext

     def onKill(self,npc,player,isPet):
       st = player.getQuestState(qn)
       if not st : return 
       if st.getState() != STARTED : return 
       
       count = st.getQuestItemsCount(WOLF_PELT)
       numItems, chance = divmod(100*Config.RATE_DROP_QUEST,100)
       if st.getRandom(100) <chance :
         numItems = numItems + 1
       if count+numItems>=40 :
         numItems = 40 - count
         if numItems != 0 :
           st.playSound("ItemSound.quest_middle")
           st.set("cond","2")
       else :
         st.playSound("ItemSound.quest_itemget")
       st.giveItems(WOLF_PELT,int(numItems))
       return

    QUEST       = Quest(1002,qn,"HuntTest")
    CREATED     = State('Start', QUEST)
    STARTING    = State('Starting', QUEST)
    STARTED     = State('Started', QUEST)
    COMPLETED   = State('Completed', QUEST)

    QUEST.setInitialState(CREATED)
    QUEST.addStartNpc(35098)

    QUEST.addTalkId(35098)

    QUEST.addKillId(20221)

    STARTED.addQuestDrop(20221,WOLF_PELT,1)

     

    So what I've done is that I changed the new NPC ID and the level requiered to start this quest that's it, and the Monster ID that need to be hunted. Here's the deal the quest do not work I'm getting the infamous "You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements" before you ask, yes the character that i'm trying to start the quest is level 76+, also I'm using L2J Orion datapack changeset 20 created by Vilmis https://www.l2jorion.com/ if I'm asking for help is because I'm fairly new to this. Thank you for trying to help me !

  2. Hi everyone I've recently embarqued in a new challenge. I'm trying to create a custom hunting quest. I've used Lector's quest (258_BringWolfPelt1) as my model.

    So basicly what I'm trying to achieve is people getting rewarded for hunting "x" npc. Here's Lector's original script:

    import sys
    from l2jorion import Config 
    from l2jorion.game.model.quest import State
    from l2jorion.game.model.quest import QuestState
    from l2jorion.game.model.quest.jython import QuestJython as JQuest

    qn = "258_BringWolfPelt1"

    WOLF_PELT = 702
    REWARDS={429:[1,6],42:[1,19],41:[1,19],462:[1,19],18:[1,20],426:[1,5],29:[1,2],22:[1,2],390:[1,3]}

    class Quest (JQuest) :

     def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

     def onEvent (self,event,st) :
        htmltext = event
        if event == "30001-03.htm" :
          st.set("cond","1")
          st.setState(STARTED)
          st.playSound("ItemSound.quest_accept")
        return htmltext

     def onTalk (self,npc,player):
       htmltext = "<html><body>You are either not carrying out your quest or don't meet the criteria.</body></html>

     st = player.getQuestState(qn)
       if not st : return htmltext

       npcId = npc.getNpcId()
       id = st.getState()
       if id == CREATED :
         st.set("cond","0")
       if st.getInt("cond")==0 :
         if player.getLevel() >= 3 :
           htmltext = "30001-02.htm"
         else:
           htmltext = "30001-01.htm"
           st.exitQuest(1)
       else :
         if st.getQuestItemsCount(WOLF_PELT) < 40 :
           htmltext = "30001-05.htm"
         else :
           st.takeItems(WOLF_PELT,-1)
           count=0
           while not count :
              for item in REWARDS.keys() :
                  qty,chance=REWARDS[item]
                  if st.getRandom(100) < chance and count == 0 :
                     st.giveItems(item,st.getRandom(qty)+1)
                     count+=1
           if chance < 7 :
             st.playSound("ItemSound.quest_jackpot")
           htmltext = "30001-06.htm"
           st.exitQuest(1)
           st.playSound("ItemSound.quest_finish")
       return htmltext

     def onKill(self,npc,player,isPet):
       st = player.getQuestState(qn)
       if not st : return 
       if st.getState() != STARTED : return 
       
       count = st.getQuestItemsCount(WOLF_PELT)
       numItems, chance = divmod(100*Config.RATE_DROP_QUEST,100)
       if st.getRandom(100) <chance :
         numItems = numItems + 1
       if count+numItems>=40 :
         numItems = 40 - count
         if numItems != 0 :
           st.playSound("ItemSound.quest_middle")
           st.set("cond","2")
       else :
         st.playSound("ItemSound.quest_itemget")
       st.giveItems(WOLF_PELT,int(numItems))
       return

    QUEST       = Quest(258,qn,"Bring Wolf Pelt1")
    CREATED     = State('Start', QUEST)
    STARTING    = State('Starting', QUEST)
    STARTED     = State('Started', QUEST)
    COMPLETED   = State('Completed', QUEST)

    QUEST.setInitialState(CREATED)
    QUEST.addStartNpc(30001)

    QUEST.addTalkId(30001)

    QUEST.addKillId(20120)
    QUEST.addKillId(20442)

    STARTED.addQuestDrop(20120,WOLF_PELT,1)

     

    and here's my version of the script:

     

    import sys
    from l2jorion import Config 
    from l2jorion.game.model.quest import State
    from l2jorion.game.model.quest import QuestState
    from l2jorion.game.model.quest.jython import QuestJython as JQuest

    qn = "1002_HuntTest"

    WOLF_PELT = 702
    REWARDS={429:[1,6],42:[1,19],41:[1,19],462:[1,19],18:[1,20],426:[1,5],29:[1,2],22:[1,2],390:[1,3]}

    class Quest (JQuest) :

     def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

     def onEvent (self,event,st) :
        htmltext = event
        if event == "30001-03.htm" :
          st.set("cond","1")
          st.setState(STARTED)
          st.playSound("ItemSound.quest_accept")
        return htmltext

     def onTalk (self,npc,player):
       htmltext = "<html><body>You are either not carrying out your quest or don't meet the criteria.</body></html>

      st = player.getQuestState(qn)
       if not st : return htmltext

       npcId = npc.getNpcId()
       id = st.getState()
       if id == CREATED :
         st.set("cond","0")
       if st.getInt("cond")==0 :
         if player.getLevel() >= 76 :
           htmltext = "30001-02.htm"
         else:
           htmltext = "30001-01.htm"
           st.exitQuest(1)
       else :
         if st.getQuestItemsCount(WOLF_PELT) < 40 :
           htmltext = "30001-05.htm"
         else :
           st.takeItems(WOLF_PELT,-1)
           count=0
           while not count :
              for item in REWARDS.keys() :
                  qty,chance=REWARDS[item]
                  if st.getRandom(100) < chance and count == 0 :
                     st.giveItems(item,st.getRandom(qty)+1)
                     count+=1
           if chance < 7 :
             st.playSound("ItemSound.quest_jackpot")
           htmltext = "30001-06.htm"
           st.exitQuest(1)
           st.playSound("ItemSound.quest_finish")
       return htmltext

     def onKill(self,npc,player,isPet):
       st = player.getQuestState(qn)
       if not st : return 
       if st.getState() != STARTED : return 
       
       count = st.getQuestItemsCount(WOLF_PELT)
       numItems, chance = divmod(100*Config.RATE_DROP_QUEST,100)
       if st.getRandom(100) <chance :
         numItems = numItems + 1
       if count+numItems>=40 :
         numItems = 40 - count
         if numItems != 0 :
           st.playSound("ItemSound.quest_middle")
           st.set("cond","2")
       else :
         st.playSound("ItemSound.quest_itemget")
       st.giveItems(WOLF_PELT,int(numItems))
       return

    QUEST       = Quest(1002,qn,"HuntTest")
    CREATED     = State('Start', QUEST)
    STARTING    = State('Starting', QUEST)
    STARTED     = State('Started', QUEST)
    COMPLETED   = State('Completed', QUEST)

    QUEST.setInitialState(CREATED)
    QUEST.addStartNpc(35098)

    QUEST.addTalkId(35098)

    QUEST.addKillId(20221)

    STARTED.addQuestDrop(20221,WOLF_PELT,1)

     

    So what I've done is that I changed the new NPC ID and the level requiered to start this quest that's it, and the Monster ID that need to be hunted. Here's the deal the quest do not work I'm getting the infamous "You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements" before you ask, yes the character that i'm trying to start the quest is level 76+, also I'm using L2J Orion datapack changeset 20 created by Vilmis https://www.l2jorion.com/ if I'm asking for help is because I'm fairly new to this. Thank you for trying to help me !

     

  3. Hi everyone, I'm looking to hire someone to setup a super basic Lineage 2 Interlude server on my PC. 

    Here's what I want:

    Server Must have Geodata (especialy around castle)
    Server must have an NPC Buffer AIO with Scheme Options for players
    Server must be Interlude 
    I would like to be able to create custom quest.
    Server must have classes changer NPC
    Server must NOT be on LAN IP (I want other peoples to be able to connect to it)
    Server must NOT have any custom items or skills
    Server must NOT have any NPCMonster, I want to keep quest monster  and Raidbosses though.

    If you accept to take this job, I will appreciate to keep contact with you if I need help with futur script, reason is, I do not fully understand how they work yet.
    Give me quotes for how much you're looking to be paid for this simple job I will take the cheapest one, I'm paying 1/3 in advance and pay you the rest once the job is done.

    Thank everyone.

×
×
  • Create New...