Grande Down™
[Lua] Passar mapas automaticamente Kuser
Olá Convidado, seja bem vindo ao Grande Down, aqui você encontra tudo o que precisa, tire suas dúvidas, peça criações gráficas, faça amizades, poste suas opiniões, divulgue seu trabalho.

Para ter acesso amplo ao conteúdo do fórum terá que se registrar, e é totalmente gratuito, para isso, clique em "registrar-se" abaixo.

Downloads, Dicas, Criações Gráficas e muito mais!


Você não está conectado. Conecte-se ou registre-se

[Lua] Passar mapas automaticamente

2 participantes

Ir para baixo  Mensagem [Página 1 de 1]

DaRkLiGhT

DaRkLiGhT
VIP


Agora vamos começar a fazer scripts realmente úteis. Nesse tópico, iremos usar as funções: eventPlayerDied, eventPlayerWon, eventLoop e eventNewGame. E também iremos criar nossa própia função que se chama nextRound.

Vamos lá:

No topo do script, vamos colocar os mapas que iremos rodar e vamos desabilitar a rotação de mapas do jogo.

Para desabilitar a rotação do jogo, utilizamos:
Código:
tfm.exec.disableAutoNewGame(true);
Agora, fazemos a lista de mapas. Devemos por os mapas entre {}, colocar cada código entre "" e separar com ,. Vamos colocar alguns mapa de vanilla, do 1 ao 10.
Código:
mapas={"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"}
Agora, vamos criar nossa função nextRound. Essa função será para passar os mapas da nossa lista aleatoriamente. Iremos usar o tfm.exec.newGame que serve pra colocar um mapa (comando parecido com o /np).

Se eu quisesse colocar um mapa específico, eu utilizaria: tfm.exec.newGame("@1054567"), mas eu quero por um mapa aleatório de uma lista de mapas, então vamos fazer assim: tfm.exec.newGame(mapas[math.random(#mapas)]);

O math.random é que vai pegar aleatoriamente um mapa da nossa lista.

Código:
function nextRound()
    tfm.exec.newGame(mapas[math.random(#mapas)]);
end
Agora, vamos criar uma função para contar o número de jogadores que estão no round. Isso servirá para quando não tiver mais nenhum jogador vivo, ir para o próximo round.

Código:
function eventNewGame()
    vivo=0
    for name,player in pairs(tfm.get.room.playerList) do
        vivo=vivo+1
    end
end
No código acima, utilizamos a mesma coisa que eu expliquei no tópico anterior, de contar os ratos no começo da partida.

Agora vamos usar o eventPlayerDied e o eventPlayerWon. O primeiro serve pra executar um certo código quando um jogador morre e o segundo, quando um jogador entra na toca. Eles servirão para o script contar quantos ratos ainda estão vivos e, quando não tiver nenhum, ele passar para o próximo mapa.

Código:
function eventPlayerDied(name)
    vivo=vivo-1
end

function eventPlayerWon(name)
    vivo=vivo-1
end
Agora vamos usar a função eventLoop. Essa função executa um certo código a cada 500 milissegundos e transforma em variável o tempo restante e o tempo passado. Então, é ela que detectará quando não tem mais nenhum rato vivo, ou quando o tempo acaba.

Código:
function eventLoop(tempoPassado, tempoFaltando)
    if vivo == 0 or tempoFaltando < 1000 then
        nextRound();
    end
end
No código acima, utilizamos o if vivo == 0 que no caso quer dizer: se o número de ratos vivos for igual a 0. Depois usamos o or que significa ou e depois o tempoFaltando < 1000. A variável tempoFaltando tem o tempo que resta para o mapa acabar então utilizamos o < que significa menor que e depois 1000 (em milissegundos = 1 segundo), ou seja, quando o tempo restante for menor que 1 segundo. O then significa então, você irá utiliza-lo sempre que for usar um if.

E no final, iremos digitar nextRound(). Isso vai servir pra quando o script for executado pela primeira vez, ele já colocar um mapa para a gente.

Código:
nextRound();
O código final:

Código:
tfm.exec.disableAutoNewGame(true);
mapas={"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"}

function nextRound()
    tfm.exec.newGame(mapas[math.random(#mapas)]);
end

function eventNewGame()
    vivo=0
    for name,player in pairs(tfm.get.room.playerList) do
        vivo=vivo+1
    end
end

function eventPlayerDied(name)
    vivo=vivo-1
end

function eventPlayerWon(name)
    vivo=vivo-1
end

function eventLoop(tempoPassado, tempoFaltando)
    if vivo == 0 or tempoFaltando < 1000 then
        nextRound();
    end
end

nextRound();
Com esse código, você irá passar mapas automaticamente no seu cafofo. No próximo post irei ver se coloco a documentação traduzida. É a partir dela que você vai criar seus próprios scripts, pois nela há quase todas as funções (não tem todas porque ta desatualizada). O link (em inglês): http://www.transformice.com/forum/?s=451587&p=0

higor0707

DaViD-DaViD

DaViD-DaViD
Membro


Otimo topico , Continue Trazendo Novidades

Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos

 
  • Criar um fórum | ©phpBB | Fórum gratuito de ajuda | Denunciar um abuso | Fórum grátis