Ir para conteúdo

Low Skills Lock


OcruxBiel

Posts Recomendados

Tipo do script: Creature Scripts
Protocolo (versão do Tibia): 8.60
Servidor utilizado: TheForgottenServerV8.2 32bit
Nível de experiência: Fácil
Adicionais/Informações: É exatamente igual o LowLevelLock, que não deixa você baixar do level 130; quero isso só que pra cada skills e configuravél por vocações; exemplo - Druid X de ML, kina X de Axe/Shield e por ai vai... Não acho que seja dificil, mas pra mim é.

Link para o comentário
Compartilhar em outros sites

Meu caro, fique ciente que estou aprendendo script, então o meu code pode não dar certo, nesse caso eu tentarei corrigir ou mandar outro script para solucionar o seu problema.

Segue o script:


local skillplayer = {getPlayerSkillLevel(cid, skill_axe), getPlayerSkillLevel(cid, skill_club), getPlayerSkillLevel(cid, skill_sword), getPlayerSkillLevel(cid, skill_fist), getPlayerSkillLevel(cid, skill_distance), getPlayerSkillLevel(cid, skill_maglevel, getPlayerSkillLevel(cid, skill_shield)} --ordem é axe club sword fist distance magic shield

function onLogin(cid)

    if skillplayer.vocation[1] < skillminimo.vocation[1] then
    doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[1] - skillplayer[1])
        end
    if skillplayer.vocation[2] < skillminimo.vocation[2] then
    doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[2] - skillplayer[2])
        end
    if skillplayer.vocation[3] < skillminimo.vocation[3] then
    doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[13] - skillplayer[3])
        end
    if skillplayer.vocation[4] < skillminimo.vocation[4] then
    doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[4] - skillplayer[4])
        end
    if skillplayer.vocation[5] < skillminimo.vocation[5] then
    doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[5] - skillplayer[5])
        end
    if skillplayer.vocation[6] < skillminimo.vocation[6] then
    doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[6] - skillplayer[6])
        end
    if skillplayer.vocation[7] < skillminimo.vocation[7] then
    doPlayerAddSkill(cid, skill_axe, skillminimo.vocation[7] - skillplayer[7])
        end

 

 

 

Espero que de certo, aguardo seu comentario
~~ att krono

Corrigido por fireelement.

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

Meu caro, fique ciente que estou aprendendo script, então o meu code pode não dar certo, nesse caso eu tentarei corrigir ou mandar outro script para solucionar o seu problema.

 

Segue o script:

 

 

 

local vocation = getPlayerVocation(cid)-- vocation
local skillminimo = {
[1, 5] = {axe = 10, club = 10, sword = 10, fist = 10, distance = 10, magic = 10, shield = 10}, --sorcerer
[2, 6] = {axe = 10, club = 10, sword = 10, fist = 10, distance = 10, magic = 10, shield = 10}, --druid
[3, 7] = {axe = 10, club = 10, sword = 10, fist = 10, distance = 10, magic = 10, shield = 10}, -- paladin
[4, 8] = {axe = 10, club = 10, sword = 10, fist = 10, distance = 10, magic = 10, shield = 10}} -- sorcerer

local skillplayer = {getplayerskilllevel(cid, skill_axe), getplayerskilllevel(cid, skill_club), getplayerskilllevel(cid, skill_sword), getplayerskilllevel(cid, skill_fist), getplayerskilllevel(cid, skill_distance), getplayerskilllevel(cid, skill_maglevel, getplayerskilllevel(cid, skill_shield)} --ordem é axe club sword fist distance magic shield

function onLogin(cid)

if skillplayer.vocation[1] < skillminimo.vocation[1]
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[1] - skillplayer[1])
end
if skillplayer.vocation[2] < skillminimo.vocation[2]
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[2] - skillplayer[2])
end
if skillplayer.vocation[3] < skillminimo.vocation[3]
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[13] - skillplayer[3])
end
if skillplayer.vocation[4] < skillminimo.vocation[4]
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[4] - skillplayer[4])
end
if skillplayer.vocation[5] < skillminimo.vocation[5]
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[5] - skillplayer[5])
end
if skillplayer.vocation[6] < skillminimo.vocation[6]
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[6] - skillplayer[6])
end
if skillplayer.vocation[7] < skillminimo.vocation[7]
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation[7] - skillplayer[7])
end

 

 

Espero que de certo, aguardo seu comentario

~~ att krono

 

Tu pode fazer assim pra diminuir:

for i = 1, 7 do
    if skillplayer.vocation[i] < skillminimo.vocation[i] then
        doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[i] - skillplayer[i])
    end    
end  

E "getplayerskilllevel" tem que ser "getPlayerSkillLevel".

Faltou um "then" nos "if" também.

 

Acho que "[1, 5]" não vai funcionar, tem que ser só um valor ([1]).

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

Erros de principiante.

Um script diminuido segundo a explicação que intendi do fireelement.


local skillplayer = {getPlayerSkillLevel(cid, skill_axe), getPlayerSkillLevel(cid, skill_club), getPlayerSkillLevel(cid, skill_sword), getPlayerSkillLevel(cid, skill_fist), getPlayerSkillLevel(cid, skill_distance), getPlayerSkillLevel(cid, skill_maglevel, getPlayerSkillLevel(cid, skill_shield)} --ordem é axe club sword fist distance magic shield

function onLogin(cid)

for i = 1, 7 do
    if skillplayer.vocation[i] < skillminimo.vocation[i] then
        doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[i] - skillplayer[i])
    end    
end  

Obrigado pela ajuda ficou muito melhor.

 

:

Link para o comentário
Compartilhar em outros sites

Recomendaria colocar a tabela skillplayer dentro do callback. Como cid está sendo declarado no onUse, seu valor fora dele será nulo.

Ah, também faltou no final um return true end.

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

Seguinte erro:

[17/04/2015 21:19:58] [Error - LuaScriptInterface::loadFile] data/creaturescripts/scripts/skillslock.lua:3: ']' expected near ','
[17/04/2015 21:19:58] [Warning - Event::loadScript] Cannot load script (data/creaturescripts/scripts/skillslock.lua)
[17/04/2015 21:19:58] data/creaturescripts/scripts/skillslock.lua:3: ']' expected near ','
Link para o comentário
Compartilhar em outros sites

Tenta assim:

 

local config = {
    skills = {SKILL_FIST, SKILL_CLUB, SKILL_SWORD, SKILL_AXE, SKILL_DISTANCE, SKILL_SHIELD, SKILL__MAGLEVEL},
    minSkill = {
        --[vocation_ID] = {fist, club, sword, axe, distance, shield, magic},    --NÃO altere a ordem.
        [1] = {20, 1, 10, 5, 10, 15, 10},
        [2] = {10, 15, 10, 20, 10, 5, 20},
    },
}
function onLogin(cid)
    local voc = getPlayerVocation(cid)
    if config.minSkill[voc] then
        for _, skillId in pairs(config.skills) do   
            if getPlayerSkillLevel(cid, skillId) < config.minSkill[voc][_] then
                doPlayerAddSkill(cid, skillId, config.minSkill[voc][_] - getPlayerSkillLevel(cid, skillId))
            end
        end
    end
    return true
end
Link para o comentário
Compartilhar em outros sites

Quando o char loga, e tiver o skill com menos dá exatamente esse erro...


[17/04/2015 22:00:20] Druidzeraah has logged in.
[17/04/2015 22:00:20] [Error - CreatureScript Interface]
[17/04/2015 22:00:20] data/creaturescripts/scripts/skillslock.lua:onLogin
[17/04/2015 22:00:20] Description:
[17/04/2015 22:00:20] data/creaturescripts/scripts/skillslock.lua:13: attempt to compare boolean with number
[17/04/2015 22:00:20] stack traceback:
[17/04/2015 22:00:20] data/creaturescripts/scripts/skillslock.lua:13: in function <data/creaturescripts/scripts/skillslock.lua:9>
[17/04/2015 22:00:20] Druidzeraah has logged out.
Link para o comentário
Compartilhar em outros sites

  • 4 weeks later...

testa assim acho que faltou só as "aspas"

local config = {
    skills = {"SKILL_FIST", "SKILL_CLUB", "SKILL_SWORD", "SKILL_AXE", "SKILL_DISTANCE", "SKILL_SHIELD", "SKILL__MAGLEVEL"},
    minSkill = {
        --[vocation_ID] = {fist, club, sword, axe, distance, shield, magic},    --NÃO altere a ordem.
        [1] = {20, 1, 10, 5, 10, 15, 10},
        [2] = {10, 15, 10, 20, 10, 5, 20},
    },
}
function onLogin(cid)
    local voc = getPlayerVocation(cid)
    if config.minSkill[voc] then
        for _, skillId in pairs(config.skills) do
            if getPlayerSkillLevel(cid, skillId) < config.minSkill[voc][_] then
                doPlayerAddSkill(cid, skillId, config.minSkill[voc][_] - getPlayerSkillLevel(cid, skillId))
            end
        end
    end
    return true
end

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

  • 2 months later...

O tópico foi fechado e movido para lixeira por estar inativo a mais de 10 dias. Caso seja preciso reabrir o mesmo, favor entrar em contato com a equipe.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...