Jump to content

Question

Posted

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 !

1 answer to this question

Recommended Posts

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • I will have a special offer until April 19. If you are interested, don’t hesitate to send me a message.
    • ⚔️ LINEAGE II KHADIA ⚔️ Interlude PTS (L2OFF) • Mid Rate PvP • Custom Endgame Experience 🔥 NOT JUST ANOTHER SERVER — A REAL BATTLEFIELD 🔥 Welcome to L2Khadia, where classic Interlude meets competitive PvP and custom progression. No fake numbers, no empty promises — only action, economy, war and long-term gameplay. ━━━━━━━━━━━━━━━━━━━━━━ 📊 SERVER RATES EXP: x100 SP: x150 Adena: x300 Spoil: x15 ━━━━━━━━━━━━━━━━━━━━━━ ⚔️ WHY KHADIA? ✔ Original Interlude Mechanics & Formulas ✔ Mid Rate PvP Balance ✔ Real Clan Wars / Sieges / Olympiad ✔ Stable & Fair Economy ✔ Active Staff Team ✔ Long-Term Project Vision ━━━━━━━━━━━━━━━━━━━━━━ 🗡️ KHADIA CUSTOM CONTENT 🔥 Khadia Weapons – Unique power & visuals 🛡 Khadia Armor – Raid Boss drops & crafting 🧥 Khadia Cloaks – Endgame progression items 💎 Designed for competitive PvP ━━━━━━━━━━━━━━━━━━━━━━ 🎁 REWARD SYSTEMS 🏆 PvP / PK Reward System 📦 Daily PvP Reward Package 👑 Raid Package from Boss Extract Rewards 🗳 Vote Reward System 📈 Rankings: PvP / PK / Clans / Castles ━━━━━━━━━━━━━━━━━━━━━━ 💎 VIP FEATURES ✔ VIP Buff Coin ✔ Nick / Title Colors ✔ Special VIP Chat ( ^ Key ) ✔ Exclusive VIP Benefits ━━━━━━━━━━━━━━━━━━━━━━ 🎮 QUALITY OF LIFE ✔ Auto Loot for Farm ✔ Auto Loot Disabled for Raid Boss ✔ Offline Shop System ✔ Remote Buff Coin ✔ RaidBoss Status NPC ✔ PvP / PK Ranking NPC ━━━━━━━━━━━━━━━━━━━━━━ 🌍 FARM ZONES • Elven Fortress [80] – Medium • Cave of Trials [80+] – Party Hard • Monastery of Silence [80] – Medium • PvP Zones Around Raid Bosses ━━━━━━━━━━━━━━━━━━━━━━ 🏰 CLAN & SIEGE SYSTEM ✔ Full Interlude Clan System ✔ Max Clan Level 8 + Clan Skills ✔ Max 3 Clans per Alliance ✔ No Kick / Leave Penalty ✔ Weekly Castle Sieges ━━━━━━━━━━━━━━━━━━━━━━ 🚀 JOIN NOW – START YOUR LEGEND 🚀 🌐 Website: www.l2khadia.com 💬 Discord: https://discord.gg/DnZrgWn77n ━━━━━━━━━━━━━━━━━━━━━━ No Pay To Win • Fair Gameplay • Real PvP • Custom Endgame Content       We Wish you the best game ! 
    • First of all, he doesn’t even know English. He needs to learn it first.
    • Which copies are you talking about? Hahaha, stop crying, everyone knows you're a copy-paste, you can't even program "hello world".
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..