- 0
-
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 !
-
This is a bump: https://databay.com/
-
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

Question
KarlL2
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 accountSign in
Already have an account? Sign in here.
Sign In Now