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