Ir para conteúdo

!comprar skill/magiclevel


Fir3element

Posts Recomendados

  • Nome: Comprar skill/magic level
  • Versão testada: TFS 0.3.6pl1 / 0.4 / 0.3.7
  • Créditos: fireelement
  • Exemplo de uso:
  • !comprar club
  • !comprar magiclevel

Vá em data/talkactions/talkactions.xml e adicione essa tag:

 

    <talkaction words="!comprar;/comprar" event="script" value="comprar.lua"/>

Agora vá em data/talkactions/scripts/ e crie um arquivo com o nome comprar.lua e cole isso nele:

 

local config = {
    protectZone = "sim", -- Precisa estar em PZ para usar o comando?

    skill = {
        item = 9971, -- Item removido
        quantidade = 10, -- Quantidade
        quantidadeskill = 10, -- Skill adicionada
        limiteskill = 350 -- Limite
    },

    magicLevel = {
        item = 9971, -- Item removido
        quantidade = 15, -- Quantidade
        quantidademl = 5, -- Magic level adicionado
        limitedeml = 200 -- Limite
    },

    skillID = { -- ID das skills
        ["club"] = SKILL_CLUB,
        ["sword"]= SKILL_SWORD,
        ["axe"] = SKILL_AXE,
        ["distance"] = SKILL_DISTANCE,
        ["shielding"] = SKILL_SHIELD
    },

    vocationSkill = { -- Vocações que pode comprar x skill
        ["club"] = {4, 8},
        ["sword"] = {4, 8},
        ["axe"] = {4, 8},
        ["distance"] = {3, 7},
        ["shielding"] = {4, 8}
    },

    vocationMagicLevel = {1, 2, 5, 6}, -- Vocações que pode comprar magic level

    delay = {
        skill = {
            storage = 45,
            duration = 5 -- Tempo para comprar skill novamente
        },

        magicLevel = {
            storage = 97,
            duration = 5 -- Tempo para comprar magic level novamente
        }
    }
}

function onSay(cid, words, param, channel)
    local playerId = getPlayerGUID(cid)
    if config.protectZone == "sim" and not getTilePzInfo(getCreaturePosition(cid)) then
        return doPlayerSendCancel(cid, "Você precisa estar em protection zone para comprar.")
    end

    if param == "magiclevel" then
        if getPlayerMagLevel(cid) < config.magicLevel.limitedeml then
            if isInArray(config.vocationMagicLevel, getPlayerVocation(cid)) then
                if doPlayerRemoveItem(cid, config.magicLevel.item, config.magicLevel.quantidade) then
                    if (os.time() - getPlayerStorageValue(cid, config.delay.magicLevel.storage)) >= config.delay.magicLevel.duration then
                        setPlayerStorageValue(cid, config.delay.magicLevel.storage, os.time())
                        doRemoveCreature(cid, true)
                        db.executeQuery("UPDATE `players` SET `maglevel` = `maglevel` + " .. config.magicLevel.quantidademl .. " WHERE `id` = " .. playerId)
                    else
                        doPlayerSendCancel(cid, "Espere " .. config.delay.magicLevel.duration .. " segundos para comprar novamente.")
                    end
                else
                    doPlayerSendCancel(cid, "Você não tem o item requerido.")
                end
            else
                doPlayerSendCancel(cid, "Voce não pode comprar magic level.")
            end
        else
            doPlayerSendCancel(cid, "Você chegou no limite de magic level.")
        end
    elseif config.skillID[string.lower(param)] then
        if getPlayerSkill(cid, config.skillID[string.lower(param)]) < config.skill.limiteskill then
            if isInArray(config.vocationSkill[string.lower(param)], getPlayerVocation(cid)) then
                if doPlayerRemoveItem(cid, config.skill.item, config.skill.quantidade) then
                    if (os.time() - getPlayerStorageValue(cid, config.delay.skill.storage)) >= config.delay.skill.duration then
                        setPlayerStorageValue(cid, config.delay.skill.storage, os.time())
                        doRemoveCreature(cid, true)
                        db.executeQuery("UPDATE `player_skills` SET `value` = `value` + " .. config.skill.quantidadeskill .. " WHERE `player_id` = " .. playerId .. " and `skillid` = " .. config.skillID[string.lower(param)])
                    else
                        doPlayerSendCancel(cid, "Espere " .. config.delay.skill.duration .. " segundos para comprar novamente.")
                    end
                else
                    doPlayerSendCancel(cid, "Você não tem o item requerido.")
                end
            else
                doPlayerSendCancel(cid, "Voce não pode comprar este skill.")
            end
        else
            doPlayerSendCancel(cid, "Você chegou no limite de skill.")
        end
    else
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Possíveis parâmetros: club, sword, axe, distance, shielding, magiclevel.")
    end
    return true
end
Editado por fireelement
Link para o comentário
Compartilhar em outros sites

Bom script! Bem elaborado, acredito que também funcione em TFS 1.0, depois irei testar e informo no topico.

Obrigado pela contribuição, gosto muito dos seus scripts muitos deles inovadores e exclusivos.

Link para o comentário
Compartilhar em outros sites

Bom script! Bem elaborado, acredito que também funcione em TFS 1.0, depois irei testar e informo no topico.

Obrigado pela contribuição, gosto muito dos seus scripts muitos deles inovadores e exclusivos.

Obrigado happy.png

Creio que não funcione no 1.x, mas dá pra arrumar facilmente.

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

  • 5 months later...
×
×
  • Criar Novo...