Primeiro de tudo:
function onAdvance(cid, position)
O callback correto é onAdvance(cid, skill, oldLevel, newLevel)
Segundo:
getLevel(cid) == 8
Isso aqui vai dar erro porque em 0.4 não existe getLevel... mas não precisa usar função pra pegar o level, vc tá avançando e um dos parametros é o level novo.
Fica assim:local pos = {x=100, y=100, z=7}
local msg = "Parabéns! Você alcançou o level 8. Fale com o NPC para prosseguir sua caminhada" --vc pode editar essa mensagem, só precisa deixar ela dentro das aspas duplas!
local stor = 27182
function onAdvance(cid, skill, oldLevel, newLevel)
if (newLevel == 8 and skill == SKILL__LEVEL and oldLevel < newLevel) and getPlayerStorageValue(cid, stor) < 1 then
doTeleportThing(cid, pos)
doPlayerSendTextMessage(cid, 18, msg)
setPlayerStorageValue(cid, stor, 1)
end
return true
end
Essa segunda checagem é pra garantir que o player não morra em main, upe e seja enviado novamente pra posição do oracle (por ex);
As primeiras são pra garantir integridade -> tem que ser nv 8, tem q ser a skill level (onAdvance serve pra todas as skills) e o nível anterior tem que ser menor que o novo (tem casos em q morrer ativa o callback onAdvance, n sei pq e só acontece em algumas sources)