Jump to content

Help Repeatable Quest Timer


Recommended Posts

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)

Link to comment
Share on other sites

  • 4 weeks later...
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 .....

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now


×
×
  • Create New...