Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Fala pessoal, como vocês estão?

Na academia de codding um usuário pediu ajuda para montar um "gerenciador" de quests, para que todas ficassem no mesmo arquivo sem ficar com aquele "spam" de quests nas actions.

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

Esse script foi feito para a TFS 1.X mas, usando a lib do @Mathias Kenfi, você consegue utilizar para TFS 0.X também.

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

O link para as libs: https://github.com/kenfi2/KenfiLib

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

Na pasta actions/scripts crie um arquivo chamado quests.lua

config = {
        quests = {
            [7172] = { -- ActionID que será colocado no baú
                name = "dos Crystal Coins", -- Nome da quest
                rewards = {
                    {id = 2160, count = 100}, -- Prêmio: ID - Count
                },
                level = {
                    active = true, -- Level minimo para pegar?
                    min = 150, -- Se true, qual o minimo
                },
                storage = {
                    active = true, -- Player poderá pegar somente uma vez?
                    key = 91143, -- Apenas uma key por quest
                },
                effectWin = 30, -- Efeito que vai aparecer quando fizer a quest
            },
            [7171] = { -- ActionID que será colocado no baú
                name = "dos Coins", -- Nome da quest
                rewards = {
                    {id = 2160, count = 100}, -- Prêmio: ID - Count
                    {id = 2152, count = 100}, -- Prêmio: ID - Count
                },
                level = {
                    active = true, -- Level minimo para pegar?
                    min = 150, -- Se true, qual o minimo
                },
                storage = {
                    active = true, -- Player poderá pegar somente uma vez?
                    key = 91140, -- Apenas uma key por quest
                },
                effectWin = 29, -- Efeito que vai aparecer quando fizer a quest
            },
        },
    messages = {
        notExist = "Essa quest não existe.",
        win = "Você fez a quest %s.",
        notWin = "Você já fez a quest %s.",
        level = "Você precisa de level %d ou maior para fazer a quest %s.",
    },
}

function onUse(cid, item, fromPosition, target, toPosition, isHotkey)
    local player = Player(cid)
    local choose = config.quests[item.actionid]

    if not choose then
        player:sendCancelMessage(config.messages.notExist)
        player:getPosition():sendMagicEffect(CONST_ME_POFF)
        return true
    end

    if choose.level.active and player:getLevel() < choose.level.min then
        player:sendCancelMessage(config.messages.level:format(choose.level.min, choose.name))
        player:getPosition():sendMagicEffect(CONST_ME_POFF)
        return true
    end

    if choose.storage.active and player:getStorageValue(choose.storage.key) >= 0 then
        player:sendCancelMessage(config.messages.notWin:format(choose.name))
        player:getPosition():sendMagicEffect(CONST_ME_POFF)
        return true
    end

    for i = 1, #choose.rewards do
        player:addItem(choose.rewards[i].id, choose.rewards[i].count)
    end

    player:setStorageValue(choose.storage.key, 1)
    player:sendCancelMessage(config.messages.win:format(choose.name))
    player:getPosition():sendMagicEffect(choose.effectWin)

    return true
end

Para configurar é só utilizar ler os comentários deixados e para adicionar mais quests apenas use o mesmo padrão que deixei aí

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

Utilize a tag no actions.xml desse forma

<action fromaid="7171" toaid="7172" script="quests.lua" />

Sendo que o "fromaid" é a actionid inicial, e o "toaid" é a última actionid registrada no arquivo.

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

Qualquer problema, relate nesse tópico.

  • Respostas 5
  • Visualizações 4.2k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

Postado

@Movie Fino do grosso, conteúdo toop gg

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo