Ir para conteúdo
  • 0

Livro ser o questlog


Fjinst

Pergunta

Olá, vim aqui pedir a ajuda de vocês para me ajudar a fazer um livro que mostra as quests que eu já fiz

 

ou seja o livro seria vazio

 

Só apareceria as quests que eu já fiz, os storages das quests no caso

 

 

Ex:

 

Livro de quest

"nome da quest" (storageid no script)

"Nome da quest" (storageid no script)

 

 

queria colocar um livro para aparecer as quests já completadas, tipo isso

 

Acho que é fácil fazer, só que tentei aqui e não consegui D:

 

Resumindo: um livro que abra a tabela de escrita que mostra as quests feitas

Editado por Fjinst
Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

@@Fjinst, não sei e vai funcionar, mais ta aí:

Em data/actions/actions.xml adicione a tag:

<action itemid="xxxx" event="script" value="allquests.lua"/>

Coloque o id do item desejado em xxxx

Agora em data/actions/scripts crie o arquivo allquests.lua com o seguinte conteúdo:

local quests = {
	[12200] = {name = "Salve o mundo", done = 1},
	[12201] = {name = "A volta dos que nao foram", done = 1},
	[12202] = {name = "Eu, eu mesmo e Irene", done = 1},
	[12203] = {name = "Todo Poderoso", done = 1},
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
	local q = {}
	
	for a, b in pairs(quests) do
		if getPlayerStorageValue(cid, a) == b.done then
			table.insert(t, b.name)
		end
	end
	
	if #q > 0 then
		local text = "Quests completadas:\n\n"
		for quest,_ in pairs(q) do
			text = text .. quest .. "\n"
		end
		doShowTextDialog(cid, item.itemid, text)
		return true
	else
		doShowTextDialog(cid, item.itemid, "Nenhuma quest completada.")
	end
	return true
end

Explicação:
[sTORAGE] = {name = "NOME DA QUEST", done = VALOR DO STORAGE PARA QUEST ESTAR COMPLETA}

Link para o comentário
Compartilhar em outros sites

  • 0

Apareceu alguns erros aqui

CcI3fLT.png
Bom, para ser mais exato teria como você colocar junto dessa script de spellbook?

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

local t = {}
for i = 0, getPlayerInstantSpellCount(cid) - 1 do
local spell = getPlayerInstantSpellInfo(cid, i)
if(spell.level ~= 0) then
if(spell.manapercent > 0) then
spell.mana = spell.manapercent .. "%"
end
table.insert(t, spell)
end
end
table.sort(t, function(a, b) return a.level < b.level end)
local text, prevLevel = "", -1
for i, spell in ipairs(t) do
local line = ""
if(prevLevel ~= spell.level) then
if(i ~= 1) then
line = "\n"
end
line = line .. "Spells for Level " .. spell.level .. "\n"
prevLevel = spell.level
end
text = text .. line .. " " .. spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n"
end
doShowTextDialog(cid, item.itemid, 'Nome : '..getCreatureName(cid)..' \nLevel : '..getPlayerLevel(cid)..' \nHealth : ['..getCreatureHealth(cid)..'/'..getCreatureMaxHealth(cid)..'] \nMana: ['..getCreatureMana(cid)..'/'..getCreatureMaxMana(cid)..'] \n \n'..text..'') -- é aqui onde adiciona mais
if(fromPosition.x ~= CONTAINER_POSITION) then
doSendMagicEffect(fromPosition, CONST_ME_HITBYFIRE)
else
end
return true
end

Para aparecer depois do nome, level, etc.

tipo após o hp, level etc. aparecer

-- QUESTS Finalizadas --

ai apareceria sómente as quests que foram finalizadas, as que não foram não aparecia

Link para o comentário
Compartilhar em outros sites

  • 0

Apareceu alguns erros aqui

CcI3fLT.png

Bom, para ser mais exato teria como você colocar junto dessa script de spellbook?

Para aparecer depois do nome, level, etc.

tipo após o hp, level etc. aparecer

-- QUESTS Finalizadas --

ai apareceria sómente as quests que foram finalizadas, as que não foram não aparecia

Já arrumei, pega lá, foi uma letra a mais que eu coloquei.

Link para o comentário
Compartilhar em outros sites

  • 0

 

troca isso

for quest, _ in pairs(q) done

por isso

for quest, _ in pairs(q) do

Bom, de principio deu certo trocando o done por do, se o player não tiver completado nenhuma das missões listada no book, mas se o player tiver completado alguma missão, o livro para de funcionar e começa a dar erro sobre isso ai

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, de principio deu certo trocando o done por do, se o player não tiver completado nenhuma das missões listada no book, mas se o player tiver completado alguma missão, o livro para de funcionar e começa a dar erro sobre isso ai

Eu corrigi no código principal,

 

Copia e tenta novamente..

Se der erro, posta a print por favor.

Link para o comentário
Compartilhar em outros sites

  • 0

Eu corrigi no código principal,

 

Copia e tenta novamente..

Se der erro, posta a print por favor.

Sem ter nenhuma quest feita o livro abre normalmente escrito Nenhuma quest completada

 

Mas..

 

Quando eu faço alguma quest e tento abrir o livro da esse erro

Ciu046d.png

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz o meu com base no do bruno

 

 

local quest = {
    [12200] = {name = "Salve o mundo ", done = 1},
    [12201] = {name = "A volta dos que nao foram ", done = 1},
    [12202] = {name = "Eu, eu mesmo e Irene ", done = 1},
    [12203] = {name = "Todo Poderoso ", done = 1},
}
 
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local tabela = {}
        for a, b in pairs(quest) do
            if getPlayerStorageValue(cid, a) == b.done then
                table.insert(tabela, ""..b.name.."\n")
            end
        end
    if #tabela > 0 then
        doShowTextDialog(cid, item.itemid, "Quests completadas:\n\n"..table.concat (tabela).."")
    else
        doShowTextDialog(cid, item.itemid, "Nenhuma quest completada.")
    end
return true
end
Link para o comentário
Compartilhar em outros sites

  • 0

RigBy do seu jeito funcinou
Posso pedir mais um favor?
Já resolvi - desde já agradeço a atenção de ambos, tanto você quanto o Bruno

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

local t = {}
for i = 0, getPlayerInstantSpellCount(cid) - 1 do
local spell = getPlayerInstantSpellInfo(cid, i)
if(spell.level ~= 0) then
if(spell.manapercent > 0) then
spell.mana = spell.manapercent .. "%"
end
table.insert(t, spell)
end
end
table.sort(t, function(a, b) return a.level < b.level end)
local text, prevLevel = "", -1
for i, spell in ipairs(t) do
local line = ""
if(prevLevel ~= spell.level) then
if(i ~= 1) then
line = "\n"
end
line = line .. "Spells for Level " .. spell.level .. "\n"
prevLevel = spell.level
end
text = text .. line .. " " .. spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n"
end
doShowTextDialog(cid, item.itemid, 'Nome : '..getCreatureName(cid)..' \nLevel : '..getPlayerLevel(cid)..' \nHealth : ['..getCreatureHealth(cid)..'/'..getCreatureMaxHealth(cid)..'] \nMana: ['..getCreatureMana(cid)..'/'..getCreatureMaxMana(cid)..'] \n \n'..text..'') -- é aqui onde adiciona mais
if(fromPosition.x ~= CONTAINER_POSITION) then
doSendMagicEffect(fromPosition, CONST_ME_HITBYFIRE)
else
end
return true
end

 

Editado por Fjinst
Link para o comentário
Compartilhar em outros sites

  • 0

 

local quest = {
[12200] = {name = "Salve o mundo", done = 1},
[12201] = {name = "A volta dos que nao foram", done = 1},
[12202] = {name = "Eu, eu mesmo e Irene", done = 1},
[12203] = {name = "Todo Poderoso", done = 1},
}
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local t = {}
    for i = 0, getPlayerInstantSpellCount(cid) - 1 do
        local spell = getPlayerInstantSpellInfo(cid, i)
        if(spell.level ~= 0) then
            if(spell.manapercent > 0) then
                spell.mana = spell.manapercent .. "%"
            end
 
            table.insert(t, spell)
        end
    end
    local tabela = {}
        for a, b in pairs(quest) do
            if getPlayerStorageValue(cid, a) == b.done then
                table.insert(tabela, ""..b.name.."\n")
            end
        end
 
    table.sort(t, function(a, b) return a.level < b.level end)
    local text, prevLevel = "", -1
    for i, spell in ipairs(t) do
        local line = ""
        if(prevLevel ~= spell.level) then
            if(i ~= 1) then
                line = "\n"
            end
 
            line = line .. "Spells for Level " .. spell.level .. "\n"
            prevLevel = spell.level
        end
 
        text = text .. line .. "  " .. spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n"
    end
if #tabela > 0 then
local info = 'Nome : '..getCreatureName(cid)..' \nLevel : '..getPlayerLevel(cid)..' \nHealth : ['..getCreatureHealth(cid)..'/'..getCreatureMaxHealth(cid)..'] \nMana: ['..getCreatureMana(cid)..'/'..getCreatureMaxMana(cid)..'] \n \n'
        doShowTextDialog(cid, item.itemid,''..info..'Quests completadas:\n\n'..table.concat (tabela)..'\n'..text..'')
else
   doShowTextDialog(cid, item.itemid,''..info..'Nenhuma quest completada.'..text..'')
end
    if(fromPosition.x ~= CONTAINER_POSITION) then
        doSendMagicEffect(fromPosition, CONST_ME_HITBYFIRE)
    end
return true
end
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...