OC
dúvida

Low Skills Lock

Por OcruxBiel, 17 de abr. de 2015 em Archived

tibia
script
otserv
12
1.4k
OcruxBielO
17 de abril de 2015 às 12:00

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 é.

KronoK
17 de abril de 2015 às 16:17

Caso ninguem crie, irei utilizar o seu topico para minha contribuição do dia mais tarde.

OcruxBielO
17 de abril de 2015 às 18:47

Agradeço @Krono, mas defina "mais tarde"?
EUTOIMPLORANDO!!!
(:

KronoK
17 de abril de 2015 às 20:37

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 Abril 17 por Krono

17 de abril de 2015 às 20:42

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 Abril 17 por fireelement

KronoK
17 de abril de 2015 às 20:55

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.

 

:

zipter98Z
17 de abril de 2015 às 21:03

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 Abril 17 por zipter98

OcruxBielO
17 de abril de 2015 às 21:20
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 ','
zipter98Z
17 de abril de 2015 às 21:45

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
OcruxBielO
17 de abril de 2015 às 22:01
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.
1 mês depois...
notle2012N
13 de maio de 2015 às 22:22

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 Maio 13 por notle2012

2 meses depois...
BrunoB
14 de julho de 2015 às 17:38

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.