Jump to content
  • 0

Custom Quest with Lua Client


Mobius

Question


  • Group:  Members
  • Topic Count:  3
  • Topics Per Day:  0.00
  • Content Count:  5
  • Reputation:   0
  • Joined:  03/20/12
  • Last Seen:  

Hi.

I explain my problem, I try to add a custom quest using * a Daily Quest * on my server (Rathena svn 17203 trunk).

Side emulator everything is good and edited

 

db/quest_db.txt

20000,0,0,0,0,0,0,0,"questname"

 

The problem is client side

If I simply edit the file questid2display.txt it is impossible to set images and other options now available

 

if I followed all new Client using lua to define the quests but I have not found a tutorial explaining how they work so if someone could help me would be really nice :)

post-3266-0-46408400-1366847851_thumb.png

Edited by Mobius
Link to comment
Share on other sites

3 answers to this question

Recommended Posts


  • Group:  Members
  • Topic Count:  3
  • Topics Per Day:  0.00
  • Content Count:  8
  • Reputation:   0
  • Joined:  11/04/12
  • Last Seen:  

I need tutorial too...

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  2
  • Topics Per Day:  0.00
  • Content Count:  28
  • Reputation:   1
  • Joined:  05/16/12
  • Last Seen:  

me also... iam realy confused where the files used....

 

What i have tryed...

 

\luafiles514\lua files\quest\2013\quest_function.lua

__LOCAL_QuestList = {}
__EP_QuestList = {}
QuestTable = {}

function makeLocalQuestList(Quest_list)
	for episodeId,episode in ipairs(Quest_list) do
		episodeId  = getTableSize(__LOCAL_QuestList) + 1
		__LOCAL_QuestList[episodeId] = episode
		episode.id = episodeId

		for chapterId,chapter in ipairs(episode.list) do
			__LOCAL_QuestList[episodeId][chapterId] = chapter
			chapter.id = chapterId

			for questId,quest in ipairs(chapter.list) do
				__LOCAL_QuestList[episodeId][chapterId][questId] = quest
				quest.id = questId
			end
		end
	end
end

function makeEPQuestList(Quest_list)
	for episodeId,episode in ipairs(Quest_list) do
		episodeId  = getTableSize(__EP_QuestList) + 1
		__EP_QuestList[episodeId] = episode
		episode.id = episodeId

		for chapterId,chapter in ipairs(episode.list) do
			__EP_QuestList[episodeId][chapterId] = chapter
			chapter.id = chapterId

			for questId,quest in ipairs(chapter.list) do
				__EP_QuestList[episodeId][chapterId][questId] = quest
				quest.id = questId
			end
		end
	end
end



function queryEpisode(tabid,episodeId)
        if( tabid == 4 ) then
		if(__LOCAL_QuestList[episodeId] == nil) then return nil,nil,nil,nil end

		return __LOCAL_QuestList[episodeId].id,
				__LOCAL_QuestList[episodeId].name,
				__LOCAL_QuestList[episodeId].imagefile,
				getChapterIterator(episodeId,__LOCAL_QuestList)
        elseif( tabid == 3 ) then
		if(__EP_QuestList[episodeId] == nil) then return nil,nil,nil,nil end

		return __EP_QuestList[episodeId].id,
				__EP_QuestList[episodeId].name,
				__EP_QuestList[episodeId].imagefile,
				getChapterIterator(episodeId,__EP_QuestList)
	end

end

function queryChapter(tabid,episodeId,chapterId)
	if( tabid == 4 ) then
		if(__LOCAL_QuestList[episodeId] == nil) then return nil,nil,nil,nil end
		if(__LOCAL_QuestList[episodeId][chapterId] == nil) then return nil,nil,nil,nil end

		return __LOCAL_QuestList[episodeId].id,
				__LOCAL_QuestList[episodeId][chapterId].id,
				__LOCAL_QuestList[episodeId][chapterId].name,
				getQuestIterator(episodeId,chapterId,__LOCAL_QuestList)
	elseif( tabid == 3 ) then
		if(__EP_QuestList[episodeId] == nil) then return nil,nil,nil,nil end
		if(__EP_QuestList[episodeId][chapterId] == nil) then return nil,nil,nil,nil end

		return __EP_QuestList[episodeId].id,
				__EP_QuestList[episodeId][chapterId].id,
				__EP_QuestList[episodeId][chapterId].name,
				getQuestIterator(episodeId,chapterId,__EP_QuestList)
	end
end

function queryQuest(tabid,episodeId,chapterId,questId)
	if( tabid == 4 ) then
		if(__LOCAL_QuestList[episodeId] == nil) then return nil,nil,nil,nil,nil,nil end
		if(__LOCAL_QuestList[episodeId][chapterId] == nil) then return nil,nil,nil,nil,nil,nil end
		if(__LOCAL_QuestList[episodeId][chapterId][questId] == nil) then return nil,nil,nil,nil,nil,nil end

		return __LOCAL_QuestList[episodeId].id,
				__LOCAL_QuestList[episodeId][chapterId].id,
				__LOCAL_QuestList[episodeId][chapterId][questId].id,
				__LOCAL_QuestList[episodeId][chapterId][questId].name,
				__LOCAL_QuestList[episodeId][chapterId][questId].scrfilename,
				__LOCAL_QuestList[episodeId][chapterId][questId].questID 
	elseif( tabid == 3 ) then
		if(__EP_QuestList[episodeId] == nil) then return nil,nil,nil,nil,nil,nil end
		if(__EP_QuestList[episodeId][chapterId] == nil) then return nil,nil,nil,nil,nil,nil end
		if(__EP_QuestList[episodeId][chapterId][questId] == nil) then return nil,nil,nil,nil,nil,nil end

		return __EP_QuestList[episodeId].id,
				__EP_QuestList[episodeId][chapterId].id,
				__EP_QuestList[episodeId][chapterId][questId].id,
				__EP_QuestList[episodeId][chapterId][questId].name,
				__EP_QuestList[episodeId][chapterId][questId].scrfilename,
				__EP_QuestList[episodeId][chapterId][questId].questID 
	end
end

function getEpisodeIterator(__QuestList)
	local pos = 1
	return	{
		hasNext = function()
			return __QuestList[pos]
		end,

		value = function()
			temp_pos = pos
			pos = pos + 1
			return __QuestList[temp_pos]
		end
	}
end

function getChapterIterator(episodeId,__QuestList)
	local pos = 1
	return	{
		hasNext = function()
			if(__QuestList[episodeId]==nil) then return nil end
			return __QuestList[episodeId][pos]
		end,

		value =	function()
			temp_pos = pos
			pos = pos + 1
			return __QuestList[episodeId][temp_pos]
		end
	}
end

function getQuestIterator(episodeId,chapterId,__QuestList)
	local pos = 1
	return	{
		hasNext = function()
			if(__QuestList[episodeId][chapterId]==nil) then return nil end
			return __QuestList[episodeId][chapterId][pos]
		end,

		value =	function()
			temp_pos = pos
			pos = pos + 1
			return __QuestList[episodeId][chapterId][temp_pos]
		end
	}
end

function queryQuestID(tableName , questID)
	
	returnTable = QuestTable[tableName]

	if(returnTable[questID] == nil) then return nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil end

	return  returnTable[questID].NPCFromName,
		returnTable[questID].NPCFromMap,
		returnTable[questID].NPCFromSpr,
		returnTable[questID].NPCFromX,
		returnTable[questID].NPCFromY,
		returnTable[questID].NPCToName,
		returnTable[questID].NPCToMap,
		returnTable[questID].NPCToSpr,
		returnTable[questID].NPCToX,
		returnTable[questID].NPCToY,
		returnTable[questID].Item,
		returnTable[questID].PrizeItem,
		returnTable[questID].Title,
		returnTable[questID].QuickInfo,
		returnTable[questID].Info,
		returnTable[questID].Hunt1,
		returnTable[questID].Hunt2,
		returnTable[questID].Hunt3,
		returnTable[questID].Time,
		returnTable[questID].Lv
end

-- Ç׸ñ Äù½ºÆ® ÆÄÀÏÀÌ Ãß°¡ µÉ¶§¸¶´Ù ÀÌ°÷¿¡ Ãß°¡ ½ÃÄÑ ÁØ´Ù. 
makeLocalQuestList(LOCAL_MalayaQuest_List)
makeLocalQuestList(LOCAL_DewataQuest_List)
makeEPQuestList(EP_141Quest_List)


-- °³º° Äù½ºÆ® ÆÄÀÏÀÌ Ãß°¡ µÉ¶§¸¶´Ù ÀÌ°÷¿¡ Ãß°¡ ½ÃÄÑÁØ´Ù.
QuestTable.malayaQuest = malayaQuest_List
QuestTable.epsoid141Quest = epsoid141Quest_List
QuestTable.DewataQuest = DewataQuest_List

 

i do not understand what files this questtable creates... when i make an costum inside:

makeLocalQuestList(LOCAL_TestQuest_List)
QuestTable.TestQuest = TestQuest_List

The wont read inside luafiles514\lua files\quest\localquest\local_testquest_list.lua

LOCAL_TestQuest_List = {
					{
						name = [[EP 1 - Atlantis]],
						imagefile = [[ep_test_sample.bmp]],
						list = {
									{
										name  =	[[The Journey Begins]],
										list = {
												{
													name =[[Pink Plague.]],
													scrfilename = [[testquest]],
													questID = 1000,
												},
												{
													name =[[Green Plague.]],
													scrfilename = [[testquest]],
													questID = 1001,
												},
											},
									},
                                                        },
                                       },
                       },

And also i do not know where is declaired how the questinfo files will be read

 

\luafiles514\lua files\quest\localquest\questinfo\l_test_list.lua

 

TestQuest_List = {
		[1000] = { 
				NPCFromName = [[Wache]],
				NPCFromMap = [[atl_fild01]],
				NPCFromSpr = [[8W_SOLDIER]],
				NPCFromX = 208,
				NPCFromY = 82,
				NPCToName = [[Wache]],
				NPCToMap = [[atl_fild01]],
				NPCToSpr = [[8W_SOLDIER]],
				NPCToX = 208,
				NPCToY = 82,
				Item = [[< image = "569">Novice Potion<\end> (20)]],
				PrizeItem = [[]],
				Title = [[Rosa Plage]],
				Info =	[[ Die Felder von Atlantis werden auch schon von plagegeistern heimgesucht. Wie wäre es wenn du ein wenig aufräumst? ]],
				QuickInfo  = [[]],
				Hunt1 = [[< link = "Poring">Poring<\end> x 10 ]],
				Hunt2= [[]],
				Hunt3= [[]],
				Time = [[0]],
				LV = [[0]],
			},

 

I) Can get it to work if i write it in the knowen files

- local_dewataquest_list.lua

- questinfo\l_dewata_list.lua

 

But isnt there realy another way?

And also one more problem -> Wenn i add the custom quests the quest window shows me the first quest and the quest iam on... he quests between i made allready with "???????????" again... but why? ist not serverside, the done quests are still in sql

 

here a screen

post-4677-0-72035800-1371464445_thumb.jpg

Edited by Filgaja
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  5
  • Topics Per Day:  0.00
  • Content Count:  22
  • Reputation:   4
  • Joined:  09/08/12
  • Last Seen:  

i'm working on this too :o

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...