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
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
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 !
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
I am planning on making adminer optional which would also make php and apache2 optional, I just haven't had time yet. That script I made for myself and I know that I want adminer 😛
"
and also be asked about opening 3306 or XXXX and listen to *
thanks "
Could you explain this a bit more? I am not sure I should offer the option to open port 3306 as that is a bad thing unless you know what you are doing, and if you know what you are doing it is a simple thing to open it yourself after.
Listen to * is this for login / gameserver or Mariadb?
🎉 ¡Llega EuroLatinL2! 🎉
🌍 Un servidor Interlude x20 con esencia retail y ajustes justos para una experiencia única.
🧠 Desarrollado por profesionales rusos, EuroLatinL2 está basado en el cliente original de Lineage II Interlude. Buscamos revivir lo mejor de la vieja escuela con un balance perfecto entre nostalgia y jugabilidad moderna.
🛡️ ¿Qué hace diferente a EuroLatinL2?
✨ Rates Mid x20 – Equilibrados para un progreso fluido, sin perder el desafío.
🧪 Experiencia 100% retail con leves ajustes para mantener el interés.
⚔️ Raid Bosses épicos ajustados al nivel 80.
💡 Nada de GM Shop, sin buffs OP, sin teleport personalizados.
⛩️ Solo tiendas y contenido original de Lineage II.
🧙 Buffer básico (solo Prophet), duración de 60 minutos.
🔄 Sistema de héroes cada 15 días y Olimpiadas 2h por día.
🛒 Sistema de donaciones solo para servicios estéticos y premium (sin pay-to-win).
🧬 Sistema de skins para armas y armaduras (solo apariencia).
💤 AutoFarm disponible solo con adena/premium, opcional.
🔥 ¿Quieres volver a disfrutar Lineage II como en sus mejores tiempos?
💬 Completa quests, forma grupos reales, derrota jefes con estrategia, y recolecta recetas (¡incluso para Soulshots!).
⏳ ¡La apertura está muy cerca!
🚪 No te quedes fuera de esta aventura. Vive Lineage II como debe ser.
🌐 Sitio oficial: https://eurolatin.eu
📣 ¡Comparte con tu clan y prepárate para la nostalgia!
#Lineage2 #Interlude #EuroLatinL2 #L2Classic #PvE #PvP #NostalgiaL2
Καλησπέρα,
Αναζητώ Lineage II C3 Rise of Darkness client (καθαρή έκδοση) και το απαραίτητο αρχείο System για Windows 10/11 Προσφέρω αμοιβή για τη βοήθεια Ευχαριστώ.
Good evening,
I am looking for a Lineage II C3 Rise of Darkness client and the necessary System file for Windows 10/11 compatibility I am willing to pay for assistance Thank you
Add me Discord: devibtv or dm here
@AlisaCodeDragon
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 !
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.