Guide vSRO Quest Lua: what LuaSetDivideType, LuaSetRealTime and LuaSetAchievementLimit actually do

Thread starter Guidance Start date 0 7
Joined
Aug 16, 2026
Messages
51
Reaction score
17
Every "how to make a daily quest" thread says "add these 3 lines", but nobody explains what DivideType is or which values it takes besides 5.
I went through the original quest Lua files from the vSRO server files (781 files, 811 quests) and compared every value against the quest texts in the client (TextQuest). Here's what came out.

TL;DR

  • LuaSetDivideType(x): sets the quest type (normal / party / FGW-daily / job). It does not make a quest daily on its own.
  • LuaSetRealTime(): ties the completion limit to real time. This is the line that makes a quest daily.
  • LuaSetAchievementLimit(n): how many times the quest can be completed. 0 = unlimited, 1 = once.



1) LuaSetDivideType: values used in the original files

Only 3 values appear in the original files: 1, 5 and 6. 586 quests don't have this line at all (normal quests).

DivideType(1): Party quest (20 quests)
  • Where: Pharaoh's Tomb quests. Hunting Sphinx, Sekhmet, Nephthys, Horus and Osiris (QNO_SD_SU_016-020, 027-031, 040-044) and collecting their hearts (QNO_SD_MA_017-021).
  • All 20 of these quests, and only these, have the BASIC_MENUSTRING_NOT_PARTY dialog. If you show up without a party, the NPC says:
    This task is not something you should try to handle on your own. Come back when you are in a party with Auto EXP/Item Sharing.
  • Other quests in the same area with the same mission type (KILL_MONSTER) have no DivideType. So the difference is that these are party quests.
  • On sroway, LuaSetDivideType(1) has also been suggested for sharing kills inside a party.
In short: the quest becomes a party quest meant to be done in an "Auto EXP/Item Sharing" party. Test on your own server how exactly progress is shared inside the party.

DivideType(5): Forgotten World / daily quests (105 quests)
  • Where: all Forgotten World quests (QNO_FW_BA, RB, GS, RS; series 1 and 2) and 7 Job Union quests in Egypt (QNO_SD_GU_008, 009, 014, 015, 027, 033, 039).
  • Every one of the 59 quests that use LuaSetRealTime() is DivideType(5).
  • Careful: the FW "1" series (collection and talk quests) is also DivideType(5), but those are one-time ("One-time quest"). So 5 alone does not make a quest daily. You need RealTime.

DivideType(6): Job (Trade) quests (100 quests)
  • Where: QNO_TRADE_HUNTER_A/B and QNO_TRADE_THIEF_A/B.
  • These menus appear in all 100 of these quests and in no other quest: AT_ACCEPT_SAFEMODE, NOT_ACHIEVED2, ACHIEVED_INPROGRESS.
  • They are job-specific behaviors: job suit requirement, accepting in Safe Mode, and the "pay me now for what I brought so far" option.
  • Series A has AchievementLimit(0) and shows "Unlimited Repeatable". Series B has AchievementLimit(1) and shows "One-time Quest".

2, 3, 4 and other values are never used in the original files. If you know or have tested what they do, post it here.

Which quest uses which value?

All 225 quests in the original files that use LuaSetDivideType. Quests with identical values are merged into one row.

DivideTypeQuestsContentAchievementLimitRealTimeClient says
1QNO_SD_SU_016-020, 027-031, 040-044 (15)Pharaoh's Tomb (Beginner / Intermediate / Advanced) unique hunt: Sphinx, Sekhmet, Nephthys, Horus, Osirisnot set-Repeatable
1QNO_SD_MA_017-021 (5)Pharaoh's Tomb unique heart collection1-1 Time Only
5QNO_FW_RB1_001-022 (22)FGW Phantom of the Crimson Blood (61-70): collection and talk1-One-time quest
5QNO_FW_RB2_001-018 (18)FGW Phantom of the Crimson Blood (61-70): daily hunt1YesRestricted to once per day
5QNO_FW_BA1_001-013 (13)FGW Burning Abyss (81-90): collection and talk1-One-time quest
5QNO_FW_BA2_001-014 (14)FGW Burning Abyss (81-90): daily hunt1YesRestricted to once per day
5QNO_FW_GS1_001-005 (5)FGW Green Abyss (91-100): collection and talk1-One-time quest
5QNO_FW_GS2_001-010 (10)FGW Green Abyss (91-100): daily hunt1YesRestricted to once per day
5QNO_FW_RS1_001-006 (6)FGW Sea of Resentment (101-110): collection and talk1-One-time quest
5QNO_FW_RS2_001-010 (10)FGW Sea of Resentment (101-110): daily hunt1YesRestricted to once per day
5QNO_SD_GU_008, 009, 014, 015, 027, 033, 039 (7)Egypt Job Union: kill level 105+ Thieves / Traders-Hunters1YesRepeatable
6QNO_TRADE_HUNTER_A_001-018 (18)Trade goods collection (Hunter)0-Unlimited Repeatable
6QNO_TRADE_THIEF_A_001-018 (18)Trade goods collection (Thief)0-Unlimited Repeatable
6QNO_TRADE_HUNTER_B_001-032 (32)Specialty goods delivery (Hunter)1-One-time Quest
6QNO_TRADE_THIEF_B_001-032 (32)Specialty goods delivery (Thief)1-One-time Quest

The other 586 quests don't use LuaSetDivideType. The full list of all 811 quests is in the attached CSV.



2) LuaSetRealTime()

  • Takes no parameters.
  • Used in 59 quests, always together with AchievementLimit(1) + DivideType(5).
  • All of these quests are listed in the client as "Repeatable quest (Restricted to once per day)".
  • When the limit is reached, the NPC says (BASIC_MENUSTRING_COUNT_LIMIT):
    But this task can only be done once a day in real time. Come back tomorrow.
So this is the line that resets the AchievementLimit counter every day. I haven't tested whether the reset happens at server midnight or 24 hours after completion.



3) LuaSetAchievementLimit(n)

  • 0: unlimited ("Unlimited Repeats" / "Unlimited Repeatable").
  • 1: once. Together with RealTime: once per day.
  • 2, 3: limited repeats (the client shows things like "Available 3 Times"). In some quests the client text and the Lua value don't match. Go by the Lua value.
  • Not set: the SD_SU and SD_GU quests don't have this line, and the client lists them as "Repeatable".



Daily quest template

Taken from an original FGW daily quest (QNO_FW_BA2_001). The 3 lines go after LuaQuestInsertNpc and before LuaSetMissionDataSize:

Code:
Expand Collapse Copy
function QNO_FW_BA2_001()
  QUESTID = LuaGetQuestID("QNO_FW_BA2_001")
  LuaSetStartCodition(2, QSC_QUEST, QSC_LEVEL, 90, 81)
  QM_CONVERSATION = 1
  LuaSetStartMethod(QM_CONVERSATION, 1, "NPC_KT_SOLDIER_EA1")
  LuaInsertMissionOrCompleteNpc("NPC_KT_SOLDIER_EA1")
  LuaQuestInsertNpc(1, "NPC_KT_SOLDIER_EA1")
  LuaSetAchievementLimit(1)   -- once per day
  LuaSetDivideType(5)         -- FGW / daily type
  LuaSetRealTime()            -- limit resets every day
  LuaSetMissionDataSize(QUESTID, 1)
  LuaSetMissionData_EX(QUESTID, 0, MISSION_TYPE_KILL_MONSTER, "SN_CON_QNO_FW_BA2_001_1", ...)
  InsertQuestMenuStringList("NPC_KT_SOLDIER_EA1", 8,
    "BASIC_MENUSTRING_GREETING", "SN_NPC_KT_SOLDIER_EA1_QS",
    "BASIC_MENUSTRING_REQUEST_ACCEPT_QUEST", "SN_TALK_QNO_FW_BA2_001_01",
    "BASIC_MENUSTRING_AT_ACCEPT", "SN_TALK_QNO_FW_BA2_001_02",
    "BASIC_MENUSTRING_AT_DENY", "SN_TALK_QNO_FW_BA2_001_03",
    "BASIC_MENUSTRING_NOT_ACHIEVED", "SN_TALK_QNO_FW_BA2_001_04",
    "BASIC_MENUSTRING_ACHIEVED", "SN_TALK_QNO_FW_BA2_001_06",
    "BASIC_MENUSTRING_ACHIEVED_NOW", "SN_TALK_QNO_FW_BA2_001_07",
    "BASIC_MENUSTRING_COUNT_LIMIT", "SN_TALK_QNO_FW_BA2_001_05")
  LuaSetMissionCompleteNum(0)
end

The part people usually forget: in the original daily quests, the "come back tomorrow" text comes from the BASIC_MENUSTRING_COUNT_LIMIT menu. Add this pair and its text (textquest) to your own quest. The number in InsertQuestMenuStringList (8 here) is the number of menu pairs. If you add a pair, increase that number too.


Which quest uses which value?

All 225 quests in the original files that use LuaSetDivideType. Quests with identical values are merged into one row.

Code:
Expand Collapse Copy
DT  Quests                                         Limit    RealTime  Client says
--  ---------------------------------------------  -------  --------  --------------------------
1   QNO_SD_SU_016-020, 027-031, 040-044      (15)  not set  -         Repeatable
1   QNO_SD_MA_017-021                        (5)   1        -         1 Time Only
5   QNO_FW_RB1_001-022                       (22)  1        -         One-time quest
5   QNO_FW_RB2_001-018                       (18)  1        Yes       Restricted to once per day
5   QNO_FW_BA1_001-013                       (13)  1        -         One-time quest
5   QNO_FW_BA2_001-014                       (14)  1        Yes       Restricted to once per day
5   QNO_FW_GS1_001-005                       (5)   1        -         One-time quest
5   QNO_FW_GS2_001-010                       (10)  1        Yes       Restricted to once per day
5   QNO_FW_RS1_001-006                       (6)   1        -         One-time quest
5   QNO_FW_RS2_001-010                       (10)  1        Yes       Restricted to once per day
5   QNO_SD_GU_008,009,014,015,027,033,039    (7)   1        Yes       Repeatable
6   QNO_TRADE_HUNTER_A_001-018               (18)  0        -         Unlimited Repeatable
6   QNO_TRADE_THIEF_A_001-018                (18)  0        -         Unlimited Repeatable
6   QNO_TRADE_HUNTER_B_001-032               (32)  1        -         One-time Quest
6   QNO_TRADE_THIEF_B_001-032                (32)  1        -         One-time Quest

  • SD_SU / SD_MA: Pharaoh's Tomb unique quests (Sphinx, Sekhmet, Nephthys, Horus, Osiris)
  • FW_RB: Phantom of the Crimson Blood (61-70), FW_BA: Burning Abyss (81-90), FW_GS: Green Abyss (91-100), FW_RS: Sea of Resentment (101-110). Series "1" is collection/talk, series "2" is the daily hunt.
  • SD_GU: Egypt Job Union, killing level 105+ job players
  • TRADE_*A: trade goods collection, TRADE*_B: specialty goods delivery
 

Users who are viewing this thread

Back
Top Bottom