OC
dúvida

Low Skills Lock

By OcruxBiel, 17 de abr. de 2015 in 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.

Edited Abril 17 by 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]).

Edited Abril 17 by 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.

Edited Abril 17 by 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 month later...
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

Edited Maio 13 by notle2012

2 months later...
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.