Skip to content

Help Repeatable Quest Timer

Featured Replies

Hello, I organized a quest for the interlude server. However, I want to add a timer to this quest so that it will be reset every 24 hours or at a certain time of the day. I could not do this because my Java knowledge is not very sufficient. If anyone can help me with this, I would be very happy.

 

# Made by Mr. - Version 0.3 by DrLecter
import sys
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 = "263_KillAllSylphs1"

ORB_OF_WATER = 9998
ORB_OF_FIRE = 9999
ORB_OF_WIND = 10000
ORB_OF_EARTH = 10001
STONE_OF_VALOR = 10002

DROPLIST={
57000:[ORB_OF_WIND,100],
57001:[ORB_OF_EARTH,100],
57002:[ORB_OF_FIRE,100],
57003:[ORB_OF_WATER,100],
}

class Quest (JQuest) :

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

 def onEvent (self,event,st) :
    htmltext = event
    if event == "70737-03.htm" :
      st.set("cond","1")
      st.setState(STARTED)
      st.playSound("ItemSound.quest_accept")
    elif event == "70737-06.htm" :
      st.exitQuest(1)
      st.playSound("ItemSound.quest_finish")
    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 = "70737-01.htm"
       st.exitQuest(1)
     else :
       htmltext = "70737-02.htm"
   else :
     water = st.getQuestItemsCount(ORB_OF_WATER)
     fire = st.getQuestItemsCount(ORB_OF_FIRE)
     wind = st.getQuestItemsCount(ORB_OF_WIND)
     earth = st.getQuestItemsCount(ORB_OF_EARTH)
     if water == fire == wind == earth == 0 :
       htmltext = "70737-04.htm"
     if npcId == 70737 and st.getQuestItemsCount(ORB_OF_WATER) and st.getQuestItemsCount(ORB_OF_FIRE) and st.getQuestItemsCount(ORB_OF_WIND) and st.getQuestItemsCount(ORB_OF_EARTH) :
       htmltext = "70737-05.htm"
       st.giveItems(STONE_OF_VALOR,1)
       st.takeItems(ORB_OF_WATER,-1)
       st.takeItems(ORB_OF_FIRE,-1)
       st.takeItems(ORB_OF_WIND,-1)
       st.takeItems(ORB_OF_EARTH,-1)
   return htmltext

 def onKill(self,npc,player,isPet):
   st = player.getQuestState(qn)
   if not st : return 
   if st.getState() != STARTED : return 
   
   item,chance=DROPLIST[npc.getNpcId()]
   if st.getRandom(100)>1 :
     st.giveItems(item,1)
     st.playSound("ItemSound.quest_itemget")
   return

QUEST       = Quest(263,qn,"Kill All Sylphs1")
CREATED     = State('Start', QUEST)
STARTING    = State('Starting', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)


QUEST.setInitialState(CREATED)
QUEST.addStartNpc(70737)

QUEST.addTalkId(70737)

QUEST.addKillId(57000)
QUEST.addKillId(57001)
QUEST.addKillId(57002)
QUEST.addKillId(57003)

STARTED.addQuestDrop(57002,ORB_OF_FIRE,1)
STARTED.addQuestDrop(57003,ORB_OF_WATER,1)
STARTED.addQuestDrop(57000,ORB_OF_WIND,1)
STARTED.addQuestDrop(57001,ORB_OF_EARTH,1)

  • 4 weeks later...
  • Author
20 minutes ago, Banshee Garnet said:

https://pastebin.com/qSHmSSGK

try this and let me know 🙂

Thanks for reply.

i try it copy paste.i get this error.

 

Error on: C:\Users\Talha\Desktop\Server_enson\game\data\scripts\quests\263_KillAllSylphs1\__init__.py.error.log
Line: -1 - Column: -1

Traceback (innermost last):
  (no code object) at line 0
SyntaxError: ('invalid syntax', ('quests/263_KillAllSylphs1/__init__.py', 95, 29, '                htmltext = f"<html><body>You can repeat this quest after {remaining_time} passed!</body></html>

 

and i use quest on npc, npc says '' you either not on a quest .....

remove this

 

# Check if the quest can be repeated
        if not self.can_repeat(st):
            remaining_time = self.get_time_remaining(st)
            if remaining_time:
                htmltext = f"<html><body>You can repeat this quest after {remaining_time} passed!</body></html>

 

Edited by Banshee Garnet

  • Author
16 minutes ago, Banshee Garnet said:

remove this

 

# Check if the quest can be repeated
        if not self.can_repeat(st):
            remaining_time = self.get_time_remaining(st)
            if remaining_time:
                htmltext = f"<html><body>You can repeat this quest after {remaining_time} passed!</body></html>

 

i get that.
 

Error on: C:\Users\Talha\Desktop\Server_enson\game\data\scripts\quests\263_KillAllSylphs1\__init__.py.error.log
Line: -1 - Column: -1

Traceback (innermost last):
  File "quests/263_KillAllSylphs1/__init__.py", line 104, in ?
NameError: QUEST

if u available i want to send teamviewer or anydesk

 

43 minutes ago, usedy07 said:

i get that.
 

Error on: C:\Users\Talha\Desktop\Server_enson\game\data\scripts\quests\263_KillAllSylphs1\__init__.py.error.log
Line: -1 - Column: -1

Traceback (innermost last):
  File "quests/263_KillAllSylphs1/__init__.py", line 104, in ?
NameError: QUEST

if u available i want to send teamviewer or anydesk

 

of course , add me on discord banshee1019

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.