Ir para conteúdo

Featured Replies

Postado
  • Diretor
function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then
        return false
    end

    local playerPosition = getCreaturePosition(cid)
    local vocation = getPlayerVocation(cid)

    -- Defina as habilidades correspondentes para cada vocação
    local skillsToTrain = {
        [0] = {1, 2}, -- Vocação sem classe
        [1] = {1, 2}, -- Knight
        [2] = {3}, -- Paladin
        [3] = {4}, -- Sorcerer
        [4] = {4}, -- Druid
        [5] = {4}, -- Master Sorcerer
        [6] = {4} -- Elder Druid
    }

    local minSkill = 10 -- Substitua 10 pelo valor mínimo da habilidade para começar a treinar
    local gainChance = 50 -- Chance de ganhar skill, em porcentagem
    local requiredItemID = 1234 -- Substitua 1234 pelo ID do item necessário para treinar

    if not skillsToTrain[vocation] then
        return false
    end

    for _, skillToTrain in ipairs(skillsToTrain[vocation]) do
        local skillLevel = getPlayerSkillLevel(cid, skillToTrain)

        if skillLevel < minSkill then
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você não tem a habilidade necessária para treinar aqui.")
            return true
        end

        -- Verifica se o jogador está equipado com o item necessário
        local rightSlotItem = getPlayerSlotItem(cid, CONST_SLOT_RIGHT)
        if not rightSlotItem or rightSlotItem.itemid ~= requiredItemID then
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você precisa estar equipado com o item necessário para treinar aqui.")
            return true
        end

        -- Verifica se o jogador está na posição correta
        if not isInRange(playerPosition, position, 1) then
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você não está na posição correta para treinar.")
            return true
        end

        -- Verifica se o jogador ganha skill
        if math.random(100) <= gainChance then
            doPlayerAddSkillTry(cid, skillToTrain)
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você ganhou experiência em " .. getSkillName(skillToTrain) .. ".")
        else
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você não ganhou experiência em " .. getSkillName(skillToTrain) .. ".")
        end
    end

    return true
end

 

 

20230912_034613.png.cf49b650c34dd7d7b1f79bd49c70f53c.png

Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código.  #OpenSource #Programação #Contribuição

 

  • Respostas 15
  • Visualizações 561
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • function onStepIn(creature, item, position, fromPosition) local skillToTrain = SKILL_SWORD -- Substitua SKILL_SWORD pela habilidade que você deseja treinar local minSkill = 10 -- Substitua 10

Posted Images

Postado
  • Autor
Em 31/03/2024 em 13:48, L3K0T disse:

function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then
        return false
    end

    local playerPosition = getCreaturePosition(cid)
    local vocation = getPlayerVocation(cid)

    -- Defina as habilidades correspondentes para cada vocação
    local skillsToTrain = {
        [0] = {1, 2}, -- Vocação sem classe
        [1] = {1, 2}, -- Knight
        [2] = {3}, -- Paladin
        [3] = {4}, -- Sorcerer
        [4] = {4}, -- Druid
        [5] = {4}, -- Master Sorcerer
        [6] = {4} -- Elder Druid
    }

    local minSkill = 10 -- Substitua 10 pelo valor mínimo da habilidade para começar a treinar
    local gainChance = 50 -- Chance de ganhar skill, em porcentagem
    local requiredItemID = 1234 -- Substitua 1234 pelo ID do item necessário para treinar

    if not skillsToTrain[vocation] then
        return false
    end

    for _, skillToTrain in ipairs(skillsToTrain[vocation]) do
        local skillLevel = getPlayerSkillLevel(cid, skillToTrain)

        if skillLevel < minSkill then
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você não tem a habilidade necessária para treinar aqui.")
            return true
        end

        -- Verifica se o jogador está equipado com o item necessário
        local rightSlotItem = getPlayerSlotItem(cid, CONST_SLOT_RIGHT)
        if not rightSlotItem or rightSlotItem.itemid ~= requiredItemID then
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você precisa estar equipado com o item necessário para treinar aqui.")
            return true
        end

        -- Verifica se o jogador está na posição correta
        if not isInRange(playerPosition, position, 1) then
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você não está na posição correta para treinar.")
            return true
        end

        -- Verifica se o jogador ganha skill
        if math.random(100) <= gainChance then
            doPlayerAddSkillTry(cid, skillToTrain)
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você ganhou experiência em " .. getSkillName(skillToTrain) .. ".")
        else
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você não ganhou experiência em " .. getSkillName(skillToTrain) .. ".")
        end
    end

    return true
end

 

 

 

Desculpa tá enchendo o saco, mas como seria esse script sem a parte de vocation? É um tile que só vai treinar uma skill para todas as vocations do servidor (existem muitas)

 

Postado
  • Diretor
1 hora atrás, HexusAlphos disse:

 

 

Desculpa tá enchendo o saco, mas como seria esse script sem a parte de vocation? É um tile que só vai treinar uma skill para todas as vocations do servidor (existem muitas)

 

       [0] = {1, 2}, -- Vocação sem classe vai trenr skill 1 e 2
        [1] = {1, 2}, -- Knight vai trenr skill 1 e 2
        [2] = {3}, -- Paladin vai trenr skill 3
        [3] = {4}, -- Sorcerer vai trenarr skill 4 ml
        [4] = {4}, -- Druid vai trenarr skill 4 ml
        [5] = {4}, -- Master Sorcerer vai trenarr skill 4 ml
        [6] = {4} -- Elder Druid vai trenarr skill 4 ml

coloquei tempo em tempo pra subir

 

local skillEvents = {} -- Tabela para armazenar os eventos temporizados por jogador

function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then
        return false
    end

    local playerPosition = getCreaturePosition(cid)
    local vocation = getPlayerVocation(cid)

    -- Defina as habilidades correspondentes para cada vocação
    local skillsToTrain = {
        [0] = {1, 2}, -- Vocação sem classe
        [1] = {1, 2}, -- Knight
        [2] = {3}, -- Paladin
        [3] = {4}, -- Sorcerer
        [4] = {4}, -- Druid
        [5] = {4}, -- Master Sorcerer
        [6] = {4} -- Elder Druid
    }

    local minSkill = 10 -- Substitua 10 pelo valor mínimo da habilidade para começar a treinar
    local gainChance = 50 -- Chance de ganhar skill, em porcentagem
    local requiredItemID = 1234 -- Substitua 1234 pelo ID do item necessário para treinar aqui

    if not skillsToTrain[vocation] then
        return false
    end

    for _, skillToTrain in ipairs(skillsToTrain[vocation]) do
        local skillLevel = getPlayerSkillLevel(cid, skillToTrain)

        if skillLevel < minSkill then
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você não tem a habilidade necessária para treinar aqui.")
            return true
        end

        -- Verifica se o jogador está equipado com o item necessário
        local rightSlotItem = getPlayerSlotItem(cid, CONST_SLOT_RIGHT)
        if not rightSlotItem or rightSlotItem.itemid ~= requiredItemID then
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você precisa estar equipado com o item necessário para treinar aqui.")
            return true
        end

        -- Verifica se o jogador está na posição correta
        if not isInRange(playerPosition, position, 1) then
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você não está na posição correta para treinar.")
            return true
        end

        -- Adiciona um evento para ganhar skill a cada 3 segundos
        local event = addEvent(function()
            -- Verifica se o jogador ainda está na posição correta
            local currentPlayerPosition = getCreaturePosition(cid)
            if not isInRange(currentPlayerPosition, position, 1) then
                -- Se o jogador não estiver mais na posição, cancela o evento e remove da tabela de eventos
                if skillEvents[cid] then
                    stopEvent(skillEvents[cid])
                    skillEvents[cid] = nil
                end
                return
            end

            -- Verifica se o jogador ganha skill
            if math.random(100) <= gainChance then
                doPlayerAddSkillTry(cid, skillToTrain)
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você ganhou experiência em " .. getSkillName(skillToTrain) .. ".")
            else
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você não ganhou experiência em " .. getSkillName(skillToTrain) .. ".")
            end
        end, 3000) -- 3000 milissegundos = 3 segundos
        
        -- Armazena o evento na tabela de eventos, associando ao jogador
        skillEvents[cid] = event
    end

    return true
end

function onLogout(cid)
    -- Verifica se o jogador está na tabela de eventos
    if skillEvents[cid] then
        -- Cancela o evento temporizado e remove da tabela de eventos
        stopEvent(skillEvents[cid])
        skillEvents[cid] = nil
    end
    return true
end

 

 

20230912_034613.png.cf49b650c34dd7d7b1f79bd49c70f53c.png

Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código.  #OpenSource #Programação #Contribuição

 

Postado
  • Diretor
21 horas atrás, HexusAlphos disse:

tá dando esse erro

Screenshot_2.thumb.png.31f5f12e6e3dc74eed4fe02a914e07bd.png

function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then
        return false
    end

    local playerPosition = getCreaturePosition(cid)
    local vocation = getPlayerVocation(cid)

    -- Defina as habilidades correspondentes para cada vocação
    local skillsToTrain = {
        [0] = {1, 2}, -- Vocação sem classe
        [1] = {1, 2}, -- Knight
        [2] = {3}, -- Paladin
        [3] = {4}, -- Sorcerer
        [4] = {4}, -- Druid
        [5] = {4}, -- Master Sorcerer
        [6] = {4} -- Elder Druid
    }

    local minSkill = 10 -- Substitua 10 pelo valor mínimo da habilidade para começar a treinar
    local gainChance = 50 -- Chance de ganhar skill, em porcentagem
    local requiredItemID = 1234 -- Substitua 1234 pelo ID do item necessário para treinar aqui

    if not skillsToTrain[vocation] then
        return false
    end

    for _, skillToTrain in ipairs(skillsToTrain[vocation]) do
        local skillLevel = getPlayerSkillLevel(cid, skillToTrain)

        if skillLevel < minSkill then
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você não tem a habilidade necessária para treinar aqui.")
            return true
        end

        -- Verifica se o jogador está equipado com o item necessário
        local rightSlotItem = getPlayerSlotItem(cid, CONST_SLOT_RIGHT)
        if not rightSlotItem or rightSlotItem.itemid ~= requiredItemID then
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você precisa estar equipado com o item necessário para treinar aqui.")
            return true
        end

        -- Verifica se o jogador está na posição correta
        if not isInRange(playerPosition, position, 1) then
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você não está na posição correta para treinar.")
            return true
        end

        -- Adiciona um evento para ganhar skill a cada 3 segundos
        local event = addEvent(function()
            -- Verifica se o jogador ainda está na posição correta
            local currentPlayerPosition = getCreaturePosition(cid)
            if not isInRange(currentPlayerPosition, position, 1) then
                -- Se o jogador não estiver mais na posição, cancela o evento e remove da tabela de eventos
                if skillEvents[cid] then
                    stopEvent(skillEvents[cid])
                    skillEvents[cid] = nil
                end
                return
            end

            -- Verifica se o jogador ganha skill
            if math.random(100) <= gainChance then
                doPlayerAddSkillTry(cid, skillToTrain)
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você ganhou experiência em " .. getSkillName(skillToTrain) .. ".")
            else
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você não ganhou experiência em " .. getSkillName(skillToTrain) .. ".")
            end
        end, 3000) -- 3000 milissegundos = 3 segundos
        
        -- Armazena o evento na tabela de eventos, associando ao jogador
        skillEvents[cid] = event
    end

    return true
end

function onLogout(cid)
    -- Verifica se o jogador está na tabela de eventos
    if skillEvents[cid] then
        -- Cancela o evento temporizado e remove da tabela de eventos
        stopEvent(skillEvents[cid])
        skillEvents[cid] = nil
    end
    return true
end

 

 

20230912_034613.png.cf49b650c34dd7d7b1f79bd49c70f53c.png

Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código.  #OpenSource #Programação #Contribuição

 

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.6k

Informação Importante

Confirmação de Termo