Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

[CreatureScript] Level Speed ao Atingir Determinado Level

  • Basicamente, esse script se resume a aplicar determinada velocidade ao player quando ele atingir determinado level.

sombra.png

Vamos dar início a instalação do script em seu servidor.

  • Primeiramente, vá até a pasta data/creaturescripts/scripts, crie um arquivo nomeado como levelspeed.lua e adicione o seguinte script a ele:
    local info = {
    [10] = {speed = 238},
    [50] = {speed = 318},
    [100] = {speed = 418},
    [150] = {speed = 518},
    [200] = {speed = 618},
    [250] = {speed = 718},
    [300] = {speed = 818},
    [350] = {speed = 918},
    [400] = {speed = 1018},
    [450] = {speed = 1118},
    [500] = {speed = 1218},
    [550] = {speed = 1318},
    [600] = {speed = 1418},
    [650] = {speed = 1518},
    [700] = {speed = 1618},
    [750] = {speed = 1718},
    [800] = {speed = 1818},
    [999] = {speed = 2218}
    }
    
    function onAdvance(cid, skill, oldLevel, newLevel)
        for level, x in pairs(info) do
            if skill == 8 and newLevel >= level then
                doChangeSpeed(cid, -getCreatureSpeed(cid))
                doChangeSpeed(cid, info.speed)
            end
        end
    return 1
    end
    
  • Na mesma pasta (data/creaturescripts/scripts) abra o arquivo login.lua e adicione a seguinte linha ao script:

    registerCreatureEvent(cid, "LevelSpeed")

sombra.png

local info = {
[10] = {speed = 238},
[50] = {speed = 318},
[100] = {speed = 418},
[150] = {speed = 518},
[200] = {speed = 618},
[250] = {speed = 718},
[300] = {speed = 818},
[350] = {speed = 918},
[400] = {speed = 1018},
[450] = {speed = 1118},
[500] = {speed = 1218},
[550] = {speed = 1318},
[600] = {speed = 1418},
[650] = {speed = 1518},
[700] = {speed = 1618},
[750] = {speed = 1718},
[800] = {speed = 1818},
[999] = {speed = 2218}
}

Acima, onde está, por exemplo: [150] = {speed = 518}, quando o player atingir o level 150, sua velocidade será 518 (velocidade de um level 150 no Tibia Global, sem itens ou spell ativada).
sombra.png

  • Agora, na mesma pasta (data/creaturescripts), abra o arquivo creaturescripts.xml como bloco de notas e adicione a seguinte tag:
<event type="advance" name="LevelSpeed" event="script" value="levelspeed.lua"/>



Mudei a função do script quando reformulei o tópico.
Acesse essa página para fazer diversos cálculos (como o de Experiência, de Skill, de Velocidade, de Informações do Level e/ou Level mínimo para Exp Party) com mais facilidade, clicando aqui (não tiver nenhuma intenção em divulgar o site onde essa calculadora está hospeada, apenas informar aos membros que há um recurso neste link).
Se for postar em outro lugar, ao menos coloque os créditos (meus).
Façam bom proveito.

Editado por Bizzle (veja o histórico de edições)

Se te ajudei com o que postei, clique em liked.png
Bizzle

  • Respostas 25
  • Visualizações 5.4k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Adriano SwaTT
    Adriano SwaTT

    Desculpe-me pela "leiguisse", mas qual é a tag (função) que adiciona a velocidade ao player novamente? local info = { {level = {8, 49}, speed = 15}, {level = {50, 99}, speed = 40}, {level = {100, 14

  • De boas, só para ninguém ficar reclamando que não funciona depois, sendo que tu fez quase tudo. Apenas errou umas coisinhas.

  • Pode usar esta tag em creaturescripts.xml: <event type="login" name="levelspeed" event="script" value="levelspeed.lua"/>   Boa sorte.

Postado

Sem + Reputado


está dando erro aki . script

 

function onLogin(cid)

local info = {
{level = {8, 49}, speed = 200},
{level = {50, 99}, speed = 250},
{level = {100, 149}, speed = 300},
{level = {150, 199}, speed = 350},
{level = {200, 249}, speed = 400},
{level = {250, 299}, speed = 450},
{level = {300, 999}, speed = 500}
}


    for l = 1, #info do
        if isPlayer(cid) and getPlayerLevel(cid) >= info[l].info[l] and getPlayerLevel(cid) <= info[l].info[2] then
            doChangeSpeed(cid, -getCreatureSpeed(cid))
            doChangeSpeed(cid, info[l].pspeed)
        end
    end
return 1
end

 

 

 

erro : [08/09/2014 23:12:52] [Error - CreatureScript Interface]
[08/09/2014 23:12:52] data/creaturescripts/scripts/levelspeed.lua:onLogin
[08/09/2014 23:12:52] Description:
[08/09/2014 23:12:52] data/creaturescripts/scripts/levelspeed.lua:15: attempt to index field 'info' (a nil value)
[08/09/2014 23:12:52] stack traceback:
[08/09/2014 23:12:52]     data/creaturescripts/scripts/levelspeed.lua:15: in function <data/creaturescripts/scripts/levelspeed.lua:1>

Postado

Isto: 

doChangeSpeed(cid, -getCreatureSpeed(cid))
doChangeSpeed(cid, info[l].pspeed)

Poderia virar isto:

doChangeSpeed(cid, info[l].pspeed + (-getCreatureSpeed(cid)))

E isto está certo?

 

info[l].info[l] não deveria ser? info[l].level[l] -- So fiquei na dúvida.

Editado por Ka zuza (veja o histórico de edições)

z_WL63_Tt.png

Postado
  • Autor

Sem + Reputado

está dando erro aki . script

 

function onLogin(cid)

local info = {

{level = {8, 49}, speed = 200},

{level = {50, 99}, speed = 250},

{level = {100, 149}, speed = 300},

{level = {150, 199}, speed = 350},

{level = {200, 249}, speed = 400},

{level = {250, 299}, speed = 450},

{level = {300, 999}, speed = 500}

}

    for l = 1, #info do

        if isPlayer(cid) and getPlayerLevel(cid) >= info[l].info[l] and getPlayerLevel(cid) <= info[l].info[2] then

            doChangeSpeed(cid, -getCreatureSpeed(cid))

            doChangeSpeed(cid, info[l].pspeed)

        end

    end

return 1

end

 

 

 

erro : [08/09/2014 23:12:52] [Error - CreatureScript Interface]

[08/09/2014 23:12:52] data/creaturescripts/scripts/levelspeed.lua:onLogin

[08/09/2014 23:12:52] Description:

[08/09/2014 23:12:52] data/creaturescripts/scripts/levelspeed.lua:15: attempt to index field 'info' (a nil value)

[08/09/2014 23:12:52] stack traceback:

[08/09/2014 23:12:52]     data/creaturescripts/scripts/levelspeed.lua:15: in function <data/creaturescripts/scripts/levelspeed.lua:1>

Na linha 15, digitei errado por acidente. No caso é a linha 13 do meu script (que já corrigi, me desculpem pelo erro):

 

local info = {
{level = {8, 49}, speed = 15},
{level = {50, 99}, speed = 40},
{level = {100, 149}, speed = 65},
{level = {150, 199}, speed = 90},
{level = {200, 249}, speed = 105},
{level = {250, 299}, speed = 130},
{level = {300, 999}, speed = 160}
}

function onLogin(cid)
    for l = 1, #info do
        if isPlayer(cid) and getPlayerLevel(cid) >= info[l].info[1] and getPlayerLevel(cid) <= info[l].info[2] then
            doChangeSpeed(cid, info[l].pspeed + (-getCreatureSpeed(cid)))
        end
    end
return 1
end

Isto: 

doChangeSpeed(cid, -getCreatureSpeed(cid))
doChangeSpeed(cid, info[l].pspeed)

Poderia virar isto:

doChangeSpeed(cid, info[l].pspeed + (-getCreatureSpeed(cid)))

E isto está certo?

 

info[l].info[l] não deveria ser? info[l].level[l] -- So fiquei na dúvida.

Putz, cara..postei tão rápido que nem reparei ter feito uma linha desnecessária e sem utilidade como a "doChangeSpeed(cid, info[l].pspeed)" ja que não existe uma variável local "pspeed" no script (que eu ia usar, mas retirei e esqueci de apagar dessa parte).

Então já basta a linha:

doChangeSpeed(cid, -getCreatureSpeed(cid))
doChangeSpeed(cid, info[l].speed)

ou, simplificando (como você mencionou):
doChangeSpeed(cid, info[l].speed + (-getCreatureSpeed(cid)))

E enquanto ao "info[l].info[l]", sim eu errei. Desculpe, falta de atenção na postagem do script.

O correto fica então como:

if isPlayer(cid) and getPlayerLevel(cid) >= info[l].level[1] and getPlayerLevel(cid) <= info[l].level[2] then

Me desculpem pelos erros de atenção e obrigado pelos alertas.

Editado por Bizzle (veja o histórico de edições)

Se te ajudei com o que postei, clique em liked.png
Bizzle

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