Tente saber o que está acontecendo, como ela muda, o que você faz para que ela mude; se não tiver uma base para analisarmos, não iremos adivinhar onde esteja o problema.
Boa idéia.
Só por uma questão de conhecimento; a função onadvance contém quatro parâmetros:
cid - criatura que avançou de nível.
skill - habilidade que foi avançada de nível.
oldLevel - valor anterior da habilidade que avançou de nível.
newLevel - novo valor da habilidade que avançou de nível.
Skill, contém nove números que representam suas devidas habilidades:
Continua assim garoto que você vai se tornar um bom scripter lua.
Você não pode setar index 0 (zero) para cada elemento dentro de uma array.
Ao setar index 0 para uma array e tentar por isso em outra, essa primeira será substituída pela segunda.
Esqueci de te falar que o código está formatado em utf8, mas o tfs usa ansi.
Para voce converte ele em ansi: vai na aba de formatação e clica em converter para ansi e salva.
Mudanças de distro acarreta em mudanças de funções.
Isso pode piorar ou resolver seu problema.
Cria uma copia do arquivo doors.lua para caso dê errado, você repor o script original.
No script doors.lua, apague tudo e ponha esse no lugar:
Tu irás a precisar usar essa livraria em seu servidor.
Ja que é para npc, você podeeia criar uma outra tabela contendo os valores (index) que já foram sorteados, assim, quando for sorteado (random) um numero, é só verificar se ja foi sorteado, caso tenha sido, repete o random para obter outro numero até sair um que não tenha sido sorteado.
Para fazer isso; teria que setar uma store no player, pois ao usar arrays para armazenar valores, caso o servidor seja fechado, todos os dados serão perdidos da array.