×

Langue

Fermer
Atelier 801
  • Forums
  • Dev Tracker
  • Connexion
    • English Français
      Português do Brasil Español
      Türkçe Polski
      Magyar Română
      العربية Skandinavisk
      Nederlands Deutsch
      Bahasa Indonesia Русский
      中文 Filipino
      Lietuvių kalba 日本語
      Suomi עברית
      Italiano Česky
      Hrvatski Slovensky
      Български Latviešu
      Estonian
  • Langue
  • Forums
  • /
  • Transformice
  • /
  • Archives
  • /
  • Seção Editor de Mapas e Modules
  • /
  • Submissão de sub-modos para #Grounds - Sub-modos & Documentação
Submissão de sub-modos para #Grounds - Sub-modos & Documentação
Sebafrancuz
« Consul »
1491674940000
    • Sebafrancuz#0000
    • Profil
    • Derniers messages
    • Tribu
#1
  2
  • Sub-modos
  • Documentação
Bem-vindo aos sub-modos do #grounds!

O que é #grounds?
ㅤ#Grounds é um minigame semi-oficial desenvolvido por Bolodefchoco que traz como objetivo utilizar os poderes de cada piso para que você possa entrar na toca o mais rápido possível.

O que são os sub-modos do #grounds?
ㅤOs sub-modos não seguem a jogabilidade original do modulo #grounds. São diversos joguinhos (dos quais você só pode jogar em salas, não no cafofo) que podem ser executados por meio do nome da sala. [Um exemplo de sistema é o #circuit0uno]
ㅤAtualmente, existem os seguintes sub-modos:
  • #Jokenpo
  • #Click
  • #Presents
  • #Chat
  • #CannonUp
  • #Xmas
  • #Signal
  • #Bootcamp+
  • #Map
  • #Godmode
  • #Sharpie

Como eu posso jogar os sub-modos?
ㅤVocê irá precisará utilizar o nome da sala, apenas.
ㅤUtilize #groundsNúmero aleatório*Nome do sub-modo
ㅤComo, por exemplo: #grounds666*xmas


Como eu posso enviar um sub-modo?
ㅤEste tópico foi aberto especialmente para os desenvolvedores que desejam seu minigame apto para serem jogados em sala, como um sub-modo.
ㅤVocê poderá enviar seu minigame tanto por mensagem privada http://atelier801.com/img/icones/16/enveloppe.png aqui, ou, se desejar open source ou não se importar que os outros possam jogar, aqui no tópico.
ㅤNo entanto, você deverá seguir algumas regras dentro do seu código: * -> Você não deve mudar o nome da variável
  • É necessário que seu código seja limpo, claro, leve e eficiente. Não venha com scripts quebrados e mal feitos. Eles não serão consertados e/ou implementados no jogo.
  • Utilize a API #grounds fornecida aqui para que não existam funções repetidas e para que seu código seja mais leve.
  • * É obrigatório a existência da tabela translations, e esta, por sua vez, deve conter, no mínimo, as linguagens EN (Inglês) e BR (Português). [Caso você não encontre um falante de inglês, poderá pedir para o desenvolvedor do #grounds ou enviar afirmando que não encontrou ninguém]
  • * É obrigatório a existência da variável langue, de valor inicial "en".
  • * É obrigatório a existência da função init, esta será a função que será executada para as configurações e início do modulo. Uma função chamada reset é opcional quando o módulo for reiniciado (Você poderá reiniciar algum valor e/ou os dados dos jogadores, por exemplo)
  • Seu código deverá ser segmentado, isto é, ele todo deverá estar dentro de uma tabela com o nome do seu modulo.
    Veja um exemplo de segmentação
    Code Lua

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    myMinigame = {
    translations = {
    en = {
    welcome = "Hello",
    },
    br = {
    welcome = "Olá",
    },
    },
    langue = "en",
    init = function()
    myMinigame.translations.pt = myMinigame.translations.br
    myMinigame.langue = myMinigame.translations[tfm.get.room.community] and tfm.get.room.community or "en"

    tfm.exec.newGame(0)
    end,
    eventNewGame = function()
    print(myMinigame.translations[myMinigame.langue].welcome)
    end,
    eventNewPlayer = function(name)
    tfm.exec.respawnPlayer(name)
    end,
    }
  • Não utilize funções que salvam ou carregam dados ou arquivos.


ENVIO ABERTO
Você poderá enviar ideias caso não souber/conseguir programar seu jogo!


#grounds0*Jokenpo - Desenvolvido por Bolodefchoco


#JOKENPO
ㅤㅤㅤ

http://i.imgur.com/cOMEWvH.png


• Jogue partidas de Jokenpô (Pedra, Papel, Tesoura).
• Sente numa das cadeiras pressionando espaço e comece a jogar!

» Para invocar uma pedra, pressione a tecla B;
» Para papel, a tecla N;
» E, para tesoura (que na verdade é um baiacu), a tecla M.

¬ Ao final de cada round, mostra-se a pontuação. No fim do jogo, o vencedor é anunciado.
¬ Você poderá criar mapas para o jogo, porém deverá manter o XML informado no spoiler: (Sinta-se livre para alterar as cores laterais, além de alterar as decorações, mas mantenha as mesmas coordenadas. Não altere o quadrado preto do meio, nem adicione nada sobre ele.) [Para alterar a cor dos quadrados, você poderá usar o atributo o="#CorTimeUm,#CorTimeDois,#CorTemporizador" na tag <P />, caso falte algum, este terá sua cor padrão. ]
Code XML

1
<C><P /><Z><S><S X="400" L="200" o="0" H="200" c="4" lua="1" Y="165" T="12" P="0,0,0.3,0.2,0,0,0,0" /><S L="30" o="2d3232" H="400" X="15" Y="200" T="12" P="0,0,0.3,0.2,0,0,0,0" /><S L="800" o="2d3232" H="70" X="400" Y="410" T="12" P="0,0,0.3,0.2,0,0,0,0" /><S P="0,0,0.3,0.2,0,0,0,0" L="30" o="2d3232" X="785" Y="210" T="12" H="400" /><S L="800" X="400" H="20" Y="10" T="12" P="0,0,0.3,0.2,0,0,0,0" /></S><D><P C="cdc5bc,564740" Y="375" T="105" P="0,1" X="285" /><P C="cdc5bc,564740" Y="375" T="105" P="0,0" X="515" /><P C="564740" Y="376" T="104" P="0,0" X="400" /><DS Y="320" X="400" /></D><O /></Z></C>


[•] Para alterar a quantidade de rounds padrão (5) do jogo, você poderá adicionar ao nome da sala o caractere "#x", onde x > 0 e x < 100.
ㅤExemplo: #grounds69*Jokenpo#20 para 20 rounds.

http://i.imgur.com/UBruIwp.png Tradução
http://atelier801.com/img/pays/gb.pnghttp://atelier801.com/img/pays/br.png
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
en = {
-- Init
welcome = "Welcome to <ROSE>#Jokenpo<CE>! Choose a chair, press space and start playing!\n\tReport any issue to Bolodefchoco",

-- Simple words
round = "Round",
players = "Players",
won = "won the round!",
tie = "Tie!",
victory = "won the game!",

-- Info
guide = "Press\n\t<PS>»</PS> %s<PT> - Rock</PT>\n\t<PS>»</PS> %s<PT> - Paper</PT>\n\t<PS>»</PS> %s<PT> - Scissor (Pufferfish)</PT>",

-- Game
items = {"Rock","Paper","Scissor"},
selected = "You've selected the item %s!",
}


http://i.imgur.com/h6ImWJL.png -
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

#grounds0*Click - Desenvolvido por Bolodefchoco


#CLICK
ㅤㅤㅤ

http://i.imgur.com/9MFDYbp.png


• Qual jogador é o mais rápido no clique? Descubra!
• A cada nova partida, clique no círculo grande a maior quantidade de vezes que você for capaz em 20 segundos!

» Digite !info para ler uma breve ajuda do/no jogo;
» Digite !p [nomeJogador] para abrir o perfil do jogador especificado.

¬ Ao final de cada round, mostra-se a pontuação em ordem decrescente.

http://i.imgur.com/UBruIwp.png Tradução
http://atelier801.com/img/pays/gb.pnghttp://atelier801.com/img/pays/br.png
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
en = {
-- Init
welcome = "<BV>Welcome to <CH><B>#click</B><BV>!\n\t» Type <B>!p Playername</B> to open the profile of the player\n\t» Report any issue to <B>Bolodefchoco</B>",

-- Info
newGame = "New game in %s seconds!",
clickfast = "Click several times in the circle before %s seconds!",

-- Simple words
click = "CLICK!",
won = "won!",

-- Profile
profile = "Total clicks <BL>: <V>%s\n<J>High Score <BL>: <V>%s\n\n<J>Victories <BL>: <V>%s",
}


http://i.imgur.com/h6ImWJL.png -
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

#grounds0*Presents - Desenvolvido por Bolodefchoco e idealizado por Ruamorangos


#PRESENTS
ㅤㅤㅤ

http://i.imgur.com/Dmhgzb8.png


• Interessado em jogos de azar? Você é bom com achismo? Prove já este modo de jogo!
• Você deverá escolher um presente (e ficar dentro de seu respectivo buraco). Caso você acerte os três sorteios do round, será o vencedor. Os presentes sorteados aleatoriamente serão mostrados em cima do mapa.
• Gerencie sorteios de tribo!

¬ Ao final de cada round, mostra-se o vencedor, se existir.

http://i.imgur.com/UBruIwp.png Tradução
http://atelier801.com/img/pays/gb.pnghttp://atelier801.com/img/pays/br.png
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
en = {
-- Init
welcome = "<J>Welcome to <VP><B>#presents</B><J>! Choose a gap according to the gift represented and good luck! You will win if your three-gifts-sequence is correct!\nType !p PlayerName to open the profile of the specified player\n\n<CE>Developed by Bolodefchoco and projected by Ruamorangos",

-- Info
choose = "Choose a gift before <PT>%s seconds!",
kill = "Those who are out of the correct gift will be dead!",
newGame = "New game in <PT>%s seconds!",
nowinner = "No one won!",
appear = "You will appear in the next game!",

-- Simple words
rival = "Rivals",
won = "won!",

-- Profile
profile = "Rounds <BL>: <V>%s\n<J>Gifts <BL>: <V>%s\n\n<J>Victories <BL>: <V>%s",
}


http://i.imgur.com/h6ImWJL.png -

ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

#grounds0*Chat - Desenvolvido por Bolodefchoco


#CHAT
ㅤㅤㅤ

http://i.imgur.com/wY89AWe.png


• Foi mutado? Fu***!!!!! Não, espera, tem um chat pra te salvar!!!

» Digite !np [@Código] para carregar um mapa;
» Digite !sha para ativar/desativar o shaman;
» Digite !new para ativar/desativar o novo mapa no fim da partida;
» Digite !title [Título] para alterar o nome do chat (comando de adm);
» Digite !adm [nomeJogador] dê ou remova os poderes de administrador para alguém (comando de adm).
» Digite !unlock [nomeTitulo] para que uma mensagem falsa de desbloqueio seja mostrada no chat.

¬ Todos os comandos citados acima podem ser executados também no chat fake, porém deve ser substituído o caractere "!" por "/".
¬ Para adicionar cores em sua mensagem, utilize {Tag da cor (sem < >):Texto}.
ㅤ"{J:this} {BV:is} {ROSE:halloween}" -> this is halloween
ㅤAs tags de cor podem ser encontradas aqui.
¬ Para adicionar callbacks [ao clicar, a mensagem será mostrada no chat real] em sua mensagem, utilize @(Texto).

[•] Para se tornar administrador da sala, você poderá adicionar seu nome ao nome da sala com o caractere "@Nome".
ㅤExemplo: #grounds69*Chat@Bolodefchoco para que Bolodefchoco seja administrador da sala.

http://i.imgur.com/UBruIwp.png Tradução
http://atelier801.com/img/pays/gb.pnghttp://atelier801.com/img/pays/br.pnghttp://atelier801.com/img/pays/sa.png
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
en = {
-- Init
welcome = "<J>Welcome to #chat. Enjoy while you are muted ?! Report any issue to Bolodefchoco.",

-- Info
loadmap = "loaded by",
enabled = "enabled",
disabled = "disabled",

-- Cats
shaman = "shaman",
newGame = "Auto New Game",

-- Misc
title = "%s has just unlocked the «%s» title.\n<ROSE>Type /title to choose a title",
}


http://i.imgur.com/h6ImWJL.png -

ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

#grounds0*CannonUp - Desenvolvido por Bolodefchoco e idealizado por Byontr


#CANNONUP
ㅤㅤㅤ

http://i.imgur.com/lpZfD1v.png


• Gosta de survivor? Aventure-se num lugar sem shaman, mas com muitos canhões de melancia!

» Digite !p [nomeJogador] para abrir o perfil do jogador especificado.

¬ Ao fim de cada partida, o vencedor é anunciado. ou não
¬ A velocidade dos canhões aumentam de acordo com o tempo atual.
¬ A quantidade de canhões aumentam de acordo com a quantidade de ratos na sala.
¬ Você poderá criar mapas para o jogo, mesmo a rotação de survivor estando presente no script também.
ㅤExistem atributos que você poderá colocar no seu xml:
ㅤㅤcn="x do canhão, y do canhão" -> O canhão será sempre disparado das coordenadas dadas
ㅤㅤcn="x;eixo x do canhão" -> O canhão terá Y livre e X fixo
ㅤㅤcn="y;eixo y do canhão" -> O canhão terá X livre e Y fixo
ㅤㅤcheese="" -> Todos começarão com queijo
ㅤㅤmeep="" -> Todos terão meep!


http://i.imgur.com/UBruIwp.png Tradução
http://atelier801.com/img/pays/gb.pnghttp://atelier801.com/img/pays/br.png
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
en = {
-- Init
welcome = "Welcome to #cannonup. Your aim is to be the survivor! <VP>Take care, watermelons are dangerous!\n\t<J>Report any issue to Bolodefchoco.",

-- Info
nowinner = "No one won!",

-- Simple words
won = "won!",

-- Profile
profile = "Rounds : <V>%d</V>\nCheeses : <V>%d</V>\n\nDeaths : <V>%d</V>",
}


http://i.imgur.com/h6ImWJL.png -
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

#grounds0*Xmas - Desenvolvido por Bolodefchoco e arte por Bogkitty


#XMAS
ㅤㅤㅤ

http://i.imgur.com/YNsTvkx.png


• Evento de Natal 2016

¬ Ao fim de cada partida, o evento se inicia novamente.
¬ Dados não são mais salvos e o título não poderá ser obtido.
¬ Leia aqui sobre o evento.
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

#grounds0*Signal - Desenvolvido por Bolodefchoco e arte por Flindix


#SIGNAL
ㅤㅤㅤ

http://i.imgur.com/ZYppL7B.png


• Eres ágil? Prove neste jogo emocionante de faróis!
• Ande o mais rápido possível enquanto tudo está verde.
• Preste muita atenção na forma em que andas ao sinal amarelo.
• Solte seu teclado imediatamente ao sinal vermelho ou morrerás, mas não eternamente.
• Os mapas são gerados automaticamente.

» Digite !info para uma breve descrição de cada cor;
» Digite !skip para votar a favor da passagem do mapa (É necessário que metade da sala vote para que aconteça) (Este comando é necessário, pois há a geração de mapas, da qual pode gerar um impossível de ser completado).

http://i.imgur.com/UBruIwp.png Tradução
http://atelier801.com/img/pays/gb.pnghttp://atelier801.com/img/pays/br.pnghttp://atelier801.com/img/pays/pl.png
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
en = {
-- Init
welcome = "<S>Welcome to <PS>#Signal<S>! Follow the signs and join the hole! Use !help to read more informations.\n\tReport any issue to Bolodefchoco",

-- Info
info = {
[1] = {"Run","Run the faster you can. Do not stop!"},
[2] = {"Attention","Pay attention! You can die in a few seconds!"},
[3] = {"Stop","Stop or die!"},
},
skip = "<PS>[•] <S>Impossible map? Type !skip",
skipped = "Your vote to skip the map has been recorded.",

-- Simple words
close = "Close",
}


http://i.imgur.com/h6ImWJL.png -
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

#grounds0*Bootcamp+ - Desenvolvido por Bolodefchoco e idealizado por Mquk


#BOOTCAMP+
ㅤㅤㅤ

http://i.imgur.com/o1irzJx.png


• Jogue mapas excluídos e não aceitos para a rotação oficial de bootcamp, mas que oferecem um ótimo desafio.

» Pressione Shift e clique sobre um piso para ler informações sobre ele;
» Digite !info para ler a lista de comandos;
» Segure K para ver o ranking;
» Para colocar um checkpoint, pressione a tecla E;
» Para remover um checkpoint, pressione Shift+E;
» Digite !next para passar o mapa (comando de adm);
» Digite !again para recarregar o mapa atual (comando de adm);
» Digite !np @Código ou !map @Código para carregar um mapa (comando de adm);
» Digite !queue clear para limpar a lista de mapas (comando de adm);
» Digite !queue add @Código para adicionar um mapa à lista de mapas (comando de adm);
» Digite !queue P3 ou P13 ou P23 para adicionar uma rotação oficial P3, 13 ou 23 à lista de mapas (comando de adm);
» Digite !time TempoEmMinutos para adicionar tempo ao mapa atual (comando de adm);
» Digite !standtime TempoEmMinutos para adicionar tempo em todos os mapas (comando de adm);
» Digite !checkpoint [[not] cheese] para ativar/desativar os checkpoints (com o not cheese ou cheese você poderá ativar checkpoints com respawn com o queijo ou sem.) (comando de adm).

¬ Na vitória de um mapa, mostra-se seu tempo após o respawn.
¬ Você poderá criar enviar códigos para que Mquk adicione na rotação.

* Visite o tópico de envio de mapas aqui.

[•] Para se tornar administrador da sala, você poderá adicionar seu nome ao nome da sala com o caractere "@Nome".
ㅤExemplo: #grounds69*Bootcamp+@Bolodefchoco para que Bolodefchoco seja administrador da sala.
[•] Para que você possa reviver - caso morrer - com o queijo - caso você já tenha pego -, utilize o caractere de atributos aleatórios "#1".
ㅤExemplo: #grounds69*Bootcamp+#1.

http://i.imgur.com/UBruIwp.png Tradução
http://atelier801.com/img/pays/gb.pnghttp://atelier801.com/img/pays/br.pnghttp://atelier801.com/img/pays/pl.png
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
en = {
-- Init
welcome = "Welcome to <B>#Bootcamp+</B>! Type !info to check the commands\n\tReport any issue to Bolodefchoco!",

-- Info
info = "Checkpoint:\n\tIf the checkpoint system is enabled, press <B>E</B> to put a checkpoint and <B>Shift+E</B> to remove it.\nAdmin\n\tIf you are a room admin, there are some commands that you can execute:\n\tMaps\n\t\t!next <V>--> Pass the map</V>\n\t\t!again <V>--> Resets the current map</V>\n\t\t!np @Code <VP>or</VP> !map @Code <V>--> Loads a map</V>\n\t\t!queue clear <V>--> Clear the map queue</V>\n\t\t!queue add @Code <V>--> Adds a map in the map queue</V>\n\t\t!queue P3 <VP>or</VP> P13 <VP>or</VP> P23 <V>--> Adds the whole official rotation of P3 or P13 or P23 in the map queue</V>\n\tTime\n\t\t!time TimeInMinutes <V>--> Set the time of the current round in TimeInMinutes</V>\n\t\t!standtime TimeInMinutes <V>--> Set the time of all the rounds in TimeInMinutes</V>\n\tOthers\n\t\t<B>Shift+Click</B> in a ground to read its properties\n\t\t!checkpoint [[not] cheese] <V>--> Enables/Disables the checkpoint system</V>\n\t\tKey Delete <V>--> Kills you</V>",
skip = "<VP>%s</VP> just skipped the map!",
restart = "<VP>%s</VP> just restarted the current map!",
loadmap = "<VP>%s</VP> just loaded the map %s!",
settime = "The time has been set to %s minutes!",
setstandtime = "The standard time of all the rounds has been set to %s minutes!",
enabled = "enabled! Press <B>E</B> to put a checkpoint and <B>Shift+E</B> to remove it.",
queuecleared = "%s just cleared the map queue",
queuemapadded = "%s just added the map %s to the map queue",
queueperm = "%s just added the category %s to the map queue",
queuereset = "%s just reseted the queue to the main maps",

-- Simple words
disabled = "disabled!",
}


http://i.imgur.com/h6ImWJL.png -
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

http://i.imgur.com/qTQLyBN.png #grounds0*Map - Desenvolvido por Bolodefchoco


#MAP
ㅤㅤㅤ

http://i.imgur.com/F4KI3C6.png


• Teste mapas com a comunidade e veja a avaliação do mapa em tempo real.

» Digite !maptest @Código PCategoria para adicionar um mapa na lista de espera para testes (Exemplo: !maptest @2143712 P6);
» Digite !mapinfo para visualizar os atributos, pisos, autor e status do mapa atual;
» Digite !time [tempo] para alterar o tempo do mapa (sempre para menos, isto é, você não poderá adicionar valores maiores que o tempo atual) (apenas caso você seja o usuário que adicionou o respectivo mapa na lista de mapas a serem testados);
» Digite !skip para pular o mapa atual (apenas caso você seja o usuário que adicionou o respectivo mapa na lista de mapas a serem testados);
» Segure P e selecione seu voto para o mapa em teste. Aguarde a confirmação de voto.

¬ Ao fim do mapa, a porcentagem de votação é apresentada ao usuário que adicionou o mapa na lista de espera.
¬ Você poderá criar mapas para o jogo, mesmo a rotação de survivor estando presente no script também.
¬ Existem atributos que você poderá colocar no xml do mapa a ser testado:
ㅤㅤimg="id da imagem, x da imagem, y da imagem, 1/0 (primeiro ou segundo plano)" -> Adiciona uma imagem ao mapa. Para adicionar mais de uma imagem, acrescente ";". Exemplo: img="15a2df6ab69.png,300,200,1;15a2a3a0156.png,100,100,0"

http://i.imgur.com/UBruIwp.png Tradução
http://atelier801.com/img/pays/gb.pnghttp://atelier801.com/img/pays/br.png
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
en = {
-- Init
welcome = "Welcome to #map! Here you can test your maps in different categories and check its approvation in the community!\n\tAdd a map to the queue with the command <B>!maptest @Code PCategory</B> and check the map info using the command <B>!mapinfo</B>.\n\n\tReport any problem to Bolodefchoco.",
-- Info
savenewmap = "Your map %s is in the position %s",
newmaptime = "Less than %s minutes",
vote = "Your vote has been recorded.",
dovote = "Hold P and vote according to your opinion about this map!",

-- Map Info
mapby = "Map %s loaded by %s as %s.",

-- Security
cantvote = "You cannot vote.",

-- Simple words
grounds = "Grounds",
status = "Status",
author = "Author",
}


http://i.imgur.com/h6ImWJL.png -
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

#grounds0*Godmode - Desenvolvido por Bolodefchoco e idealizado por Mcqv


#GODMODE
ㅤㅤㅤ

http://i.imgur.com/WzRemOZ.png


• Acha o modo normal muito fácil, assim como o modo difícil e divino? Agora você tem um novo desafio: #godmode, isto é: Construa sem pregos!

» Digite !info para ler o guia de ajuda;
» Digite !p [jogador] ou pressione P para abrir um perfil shaman.

¬ Ao fim do mapa, será apresentado a quantidade de ratos salvos e mortos.
¬ Todos os mapas da sala fazem parte da rotação P4.
¬ Todos os mapas começam com 3 minutos.
¬ Você poderá usar até 5 pregos [ao ultrapassar, você morrerá]. (Não necessariamente, apenas pressionar os botões C, V, B, N, J. (Dica: use-os para spawnar setas com pregos!)
¬ Outros pregos serão removidos.

http://i.imgur.com/UBruIwp.png Tradução
http://atelier801.com/img/pays/gb.pnghttp://atelier801.com/img/pays/br.png
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
en = {
-- Init
welcome = "Welcome to <B>#godmode</B>. Type !info to read the help message.\n\tReport any issue to Bolodefchoco.",

-- Guide
shaman = "Hello shaman! Try to build without nails! Good luck.",

-- Info
info = "Use your creativity and build WITHOUT nails in shaman maps! The more mice you save, the higher your score will be. Do not let the mice die.\nPress P or type !p [playername] to open a profile.",
xp = "You've saved %s mice and %s died.",

-- Warning
nail = "You can use %s more nails. After that, you will die.",
kill = "Try not to use nails in your buildings.",
fail = "You failed!",

-- Profile
profile = "Rounds : %s\n<N>Data : %s <G>/ %s\n\n<N>Deaths : %s",
}


http://i.imgur.com/h6ImWJL.png -
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

#grounds0*Sharpie - Desenvolvido por Bolodefchoco, inicialmente Sharpiepoops


#SHARPIE
ㅤㅤㅤ

http://i.imgur.com/5XOmlE9.png


• Sinta nostalgia ao jogar o primeiro módulo do Transformice! #Sharpie está de volta, porém aperfeiçoado. Voe o mais alto possível! ou não

» Pressione Espaço para voar.

¬ Em alguns mapas, o modo difícil será ativado: explosões ocorreram durante a partida.

http://i.imgur.com/UBruIwp.png Tradução
http://atelier801.com/img/pays/gb.pnghttp://atelier801.com/img/pays/br.png
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
en = {
-- Init
welcome = "Welcome to #sharpie! Fly pressing space.",

-- Warning
nothacker = "The mice flying are NOT hackers!",

-- Sample words
won = "won",

-- Messages
first = {
"yay 2 in a row",
"super pro",
"oml are you playing alone or what",
"wooow 4 in a row!",
"getting hard? good luck pro!",
"you noob just unlocked the title lightning",
"woah speedmaster",
"formula 1",
"time traveler you sir",
"queen of the win",
"as pro as the developer",
"ILLUMINATI!",
"are you a real hacker?",
"I hope you dont loose the chance of seeing the last message",
"THIS IS A SHIT MESSAGE BECAUSE YOU DIDNT DESERVE IT",
},
hardMode = "The hard mode is activated this round!",
}


http://i.imgur.com/h6ImWJL.png -
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

ㅤVocê poderá utilizar as variáveis e funções a seguir para um melhor desempenho do seu modulo dentro do #grounds, uma vez que fazem parte de tal jogo. Vale salientar que a source informada não é exatamente a mesma que se encontra no módulo, mas apenas um pedaço para que seu script não pare.
ㅤCaso você tenha dúvida de como utilizá-los, pergunte no tópico.

#VARIÁVEIS



• system.newGameTimer
 Pode ser utilizado para verificar quando você poderá executar um novo tfm.exec.newGame. Há um limite de uma execução a cada 6 segundos e utiliza-se este timer.

• system.officialMode
 Seu primeiro index, [1], informa o modo de jogo oficial, caso exista, como vanilla, defilante,
bootcamp, etc... O segundo index, [2], contém um texto relacionado a cada modo.


• system.isRoom
 Verifica se a sala é um cafofo ou uma sala "#"
 Valor: (Boolean) true para sala "#", false para cafofo

• system.roomAdmins
 Armazena os administradores da sala [O nome da sala poderá conter @Nome, onde Nome será um administrador]. Sua estrutura na tabela é [Nome] = true, onde Nome é o índice.

• system.miscAttrib
 Contém um número [1-99] informado no nome da sala.
 exemplo: o valor da variável na sala "#grounds0*game#69" será "69", enquanto "#grounds0*game#666" será "99" e "#grounds0*game#-5" será "1"


• system.roomNumber
 Armazena o número da sala

• system.roomAttributes
 Armazena os argumentos passados pelo nome da sala

• _G.currentTime
 Uma forma mais fácil de trabalhar com o tempo da partida.
 Valor: (Float) o tempo atual da partidaㅤ
Ver

Argumento 1 do eventLoop
310
825
1345
1861
2380
2897
3417
3936
4451
4966
5482
5998
6516
7033
7548
8063
8578
9098
9611

_G.currentTime
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
5.5
6.5
7
7.5
8
8.5
9
9.5


• _G.leftTime
 Uma forma mais fácil de trabalhar com o tempo restante da partida.
 Valor: (Float) o tempo restante para a próxima partidaㅤ
Ver

Argumento 2 do eventLoop
119848
119333
118816
118300
117784
117269
116752
116235
115725
115208
114692
114175
113657
113142
112622
112105
111587
111073
110557
110041

_G.leftTime
119.5
119
118.5
118
117.5
117
116.5
116
115.5
115
114.5
114
113.5
113
112.5
112
111.5
111
110.5
110

#FUNÇÕES



• system.setAdmins ( )
 Retorna uma tabela com os administradores fixos do módulo. Útil para system.roomAdmins = system.setAdmins().
 Retorna: (Table) lista de administradores fixos do módulo

• system.isPlayer ( n )
 Verifica se o jogador inserido é, de fato, um jogador. Isso evita que fakes e souris atrapalhem seu jogo. O método de verificação checa se o jogador é souris ou não e se sua data de registro no jogo é maior que 5 dias.
 Parâmetros:
  - n (String) : o nome do jogador a ser verificado

 Retorna: (Boolean) true se é um jogador e false se não passou nas verificações

• system.players ( alivePlayers )
 Faz um controle dos jogadores na sala
 Parâmetros:
  - alivePlayers (String) : caso true, a função retornará uma tabela com o nome de todos os jogadores vivos

 Retorna:
  #1 (Int) o total de jogadores vivos
  #2 (Int) o total de jogadores na sala


• system.loadTable ( s )
 Carrega uma tabela de acordo com a string inserida
 exemplo: system.loadTable("system.isPlayer")("Bolodefchoco")

 Parâmetros:
  - s (String) : a string a ser transformada

 Retorna: (Table) a tabela referente a string dada

• system.getTranslation ( s )
 Carrega o dado pedido da tabela translations em forma de string. (Utiliza-se a variável langue presente em todos os submodos)
 exemplo: system.getTranslation("welcome") -- Onde translations = {en = { welcome = "Hi" }}

 Parâmetros:
  - s (String) : o caminho na tabela de traduções

 Retorna: (Table) a string referente ao caminho dado

• system.looping ( f, tick )
 Faz um looping que executa a função tick vezes por segundo
 Parâmetros:
  - f (Function) : a função a ser executada
  - tick (Integer) : repetições por segundo

 Retorna: (Table) a tabela com os timers inseridos

• math.isNegative ( x, iN, iP )
 Retorna um parâmetro de acordo com o sinal do número informado
 Parâmetros:
  - x (Number) : o número para ter o sinal verificado
  - iN (String) : o parâmetro a ser retornado caso o número informado seja negativo
  - iP (String) : o parâmetro a ser retornado caso o número informado seja positivo

 Retorna: (String) o parâmetro de acordo com o sinal do número informado


• math.percent ( x, y, v )
 Realiza a porcentagem entre os números x e y
 Parâmetros:
  - x (Number) : o número atual
  - y (Number) : o número final
  - v (Number) : o número máximo (valor padrão = 100)

 Retorna: (Number) o valor de quantos porcento x é de y com o valor máximo retornável v


• math.pythag ( x1, y1, x2, y2, range )
 Verifica se uma coordenada está dentro de um círculo imaginário
 Parâmetros:
  - x1 (Number) : o ponto X da coordenada
  - y1 (Number) : o ponto Y da coordenada
  - x2 (Number) : o ponto X do círculo
  - y2 (Number) : o ponto Y do círculo
  - range (Number) : o raio do círculo

 Retorna: (Boolean) true se a coordenada está dentro do círculo e false se a coordenada está fora do círculo


• math.setLim ( value, min, max )
 Cria um limite para o valor dado, onde ele nunca será menor ou maior que os valores especificados
 Parâmetros:
  - value (Number) : o número a ser controlado
  - min (Number) : o número mínimo (caso value < min, value = min)
  - max (Number) : o número máximo (caso value > max, value = max)

 Retorna: (Number) o valor especificado controlado numa cadeia


• string.split ( value, pattern, f )
 Fragmenta uma string por meio de um padrão
 Parâmetros:
  - value (String) : a string a ser fragmentada
  - pattern (String) : o padrão a ser seguido
  - f (Function) : a função ser realizada com o valor fragmentado (valor padrão = nil)

 Retorna: (Table) a tabela com as strings fragmentadas


• string.nick ( player )
 Normaliza o nome de um jogador
 exemplo: string.nick("BoLOdefCHOco")
 Parâmetros:
  - player (String) : a string do nome do jogador a ser normalizada

 Retorna: (String) nome do jogador normalizado


• table.find ( list, value, index, f )
 Verifica se um valor existe dentro de uma tabela
 Parâmetros:
  - list (Table) : a tabela que deve ou não conter o valor a ser especificado
  - value (String) : o valor a ser identificado na tabela
  - index (Int) : índice da sub-tabela, caso você queira encontrar o valor dentro de uma (valor padrão = nil)
  - f (Function) : função a ser executada no valor da verificação atual (valor padrão = nil)

 Retorna:
  #1 (Boolean) true se o valor foi encontrado e false se o valor não foi encontrado
  #2 (Int) o índice na tabela onde o valor foi encontrado


• table.turnTable ( x )
 Transforma um valor em tabela caso o valor especificado não seja uma
 Parâmetros:
  - x (String) : a informação a ser transformada em tabela

 Retorna: (Table) a tabela referente ao valor especificado


• table.random ( t )
 Retorna um valor aleatório de uma tabela
 Parâmetros:
  - t (Table) : a tabela que terá um valor aleatório retornado

 Retorna: (String) um valor aleatório da tabela


• table.shuffle ( t )
 Embaralha os valores de uma tabela
 Parâmetros:
  - t (Table) : a tabela que terá os valores embaralhados

 Retorna: (Table) a tabela embaralhada


• deactivateAccents ( str )
 Remove os acentos do texto inserido
 Parâmetros:
  - str (String) : a string a ter os acentos removidos

 Retorna: (String) a string com os acentos removidos


• normalizedTime ( time )
 Normaliza o tempo inserido, fazendo com que ele se transforme em números de 0.5 em 0.5 e não sejam tão quebrados.
 Parâmetros:
  - time (Number) : o número com o tempo a ser transformado

 Retorna: (Number) o número normalizado


• normalizeTranslation ( )
 Normaliza a tabela de tradução, isto é: Caso uma tradução não exista numa linguagem, ela será, por padrão, a mensagem em inglês. [esta mensagem é automaticamente executada quando um modulo é iniciando, porém ainda faz parte da API caso seu uso seja necessário]

• disableChatCommand ( command )
 Desativa o comando no chat, além do mesmo em letras minúsculas e maiúsculas
 Parâmetros:
  - command (String) : o comando, sem "!"


• xml.parse ( currentXml )
 Captura todos os atributos na tag de parâmetros
 Parâmetros:
  - currentXml (String) : a string do xml atual que pode ser obtida com tfm.get.room.xmlMapInfo.xml

 Retorna: (Table) a tabela com o formato atributo="valor"


• xml.attribFunc ( currentXml, funcs )
 Permite realizar funções de acordo com os atributos presentes na tag de parâmetros do mapa atual
 Parâmetros:
  - currentXml (String) : a string do xml atual que pode ser obtida com tfm.get.room.xmlMapInfo.xml
  - funcs (Table) : a tabela que informa o atributo e a função
a ser realizada. O atributo deverá estar no índice attribute e a função(valor) deverá estar no índice func.
  exemplo: {[1] = { attribute = "mapname", func = function(texto) if texto ~= "" then ui.setMapName(texto) end end }}


• xml.addAttrib ( currentXml, out, launch )
 Insere um atributo na tag de parâmetros do XML do mapa atual
 Parâmetros:
  - currentXml (String) : a string do xml atual que pode ser obtida com tfm.get.room.xmlMapInfo.xml
  - out (Table) : a tabela que informa o atributo e o valor
a serem adicionados. O atributo deverá estar no índice tag e o valor deverá estar no índice value.
  exemplo: {[1] = { tag = "mapname", value = "texto do mapa" }}
  - launch (Boolean) : caso true, o novo XML será carregado, caso false, o novo XML será retornado. (valor padrão = false)

 Retorna: (String) o novo XML


• xml.getCoordinates ( s )
 Captura as coordenadas dadas num atributo, seja por axis ou valores exatos.
 exemplo: "x;10", "y;10", "10,20", "10,20,30,40,50,60"
 Parâmetros:
  - s (String) : a string com as coordenadas a serem coletadas

 Retorna: (Int) Caso haja axis (x; ou y;),
o valor será x ou 0, y ou 0, caso contrário, será retornado uma Table com todas as coordenadas [ímpares são x : 1, 3.., pares são y: 2, 4...]


#RECRIADOS



• table.concat ( list, sep, f, i, j )
 Exerce a função do table.concat oficial (iterar uma tabela numa string), porém foi adicionado um parâmetro f que permite você alterar como o valor será colocado na string.
 Parâmetros:
  - list (Table) : a tabela a ser iterada numa string
  - sep (String) : o separador de valores da tabela na string (valor padrão = "")
  - f (Function) : a função a ser executada com o valor da tabela na string (valor padrão = nil)
  exemplo: table.concat({"a","b","c","d"}," ",function(indice, valor) return "{ " .. indice .. " : " .. valor .. " }" end)
  - i (Int) : o índice onde a iteração deverá ser iniciada (valor padrão = 1)
  - j (Int) : o índice onde a iteração deverá ser finalizada (valor padrão = #list)

 Retorna: (String) a string com a tabela iterada


• tfm.exec.newGame ( code )
 Carrega um mapa, porém com um limite de 1 carregamento a cada 6 segundos.
 Parâmetros:
  - code (String) : Código do mapa a ser carregado

 Retorna: (Boolean) true caso o mapa tenha sido carregado e false caso o tempo de nova execução não esteja zerado


• tfm.exec.chatMessage ( txt, n )
 Agora não há mais limite para o tamanho do texto.
 Parâmetros:
  - txt (String) : O texto a ser mostrado no chat
  - n (String) : O jogador que verá o texto (valor padrão = nil)



Execute seu submodo
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
--[[ API ]]--
module={_NAME="grounds"};system.newGameTimer=0;system.officialMode={"",""}system.setAdmins=function()local a={}for b,c in next,module._FREEACCESS do if c>2 then a[b]=true end end;return a end;table.concat=function(d,e,f,g,h)local i=""e=e or""g,h=g or 1,h or#d;for b,c in next,d do if type(b)=="number"and(b>=g and b<=h)or true then i=i..(f and f(b,c)or c)..e end end;return string.sub(i,1,-1-#e)end;do local j=tfm.exec.newGame;tfm.exec.newGame=function(k)if os.time()>system.newGameTimer then system.newGameTimer=os.time()+6000;j(k)return true end;return false end;local l=tfm.exec.addImage;local m=tfm.exec.removeImage;tfm.exec.addImage=function(...)local n=l(...)if n then system.objects.image[n]=true end;return n end;tfm.exec.removeImage=function(n)m(n)if system.objects.image[n]then system.objects.image[n]=nil end end;local o=ui.addTextArea;ui.addTextArea=function(n,...)o(n,...)if not system.objects.textarea[n]then system.objects.textarea[n]=true end end;local p=tfm.exec.chatMessage;tfm.exec.chatMessage=function(i,q)if#i>1000 then local r=0;while#i>r do p(string.sub(i,r,r+1000),q)r=r+1001 end else p(i,q)end end;local s=system.loadPlayerData;system.loadPlayerData=function(q)if module._STATUS=="official"then return s(q)else if _G["eventPlayerDataLoaded"]then eventPlayerDataLoaded(q,"")end;return true end end;local t=system.savePlayerData;system.savePlayerData=function(q,u)if module._STATUS=="official"then t(q,u)return true else return false end end end;system.isRoom=string.byte(tfm.get.room.name,2)~=3;system.roomAdmins=system.setAdmins()system.miscAttrib=0;system.roomNumber,system.roomAttributes=(function()if system.isRoom then local v,w=string.match(tfm.get.room.name,"%*?#"..module._NAME.."(%d+)(.*)")return tonumber(v)or"",w or""else return"",""end end)()system.isPlayer=function(q)return tfm.get.room.playerList[q]and string.sub(q,1,1)~="*"and tfm.get.room.playerList[q].registrationDate and os.time()-(tfm.get.room.playerList[q].registrationDate or 0)>=432e6 or false end;system.players=function(x)local y,r=0,0;if x then y={}end;for b,c in next,tfm.get.room.playerList do if system.isPlayer(b)then if not c.isDead and not c.isVampire then if x then y[#y+1]=b else y=y+1 end end;r=r+1 end end;if x then return y else return y,r end end;currentTime,leftTime=0,0;system.loadTable=function(z)local d;for A in string.gmatch(z,"[^%.]+")do A=tonumber(A)and tonumber(A)or A;d=d and d[A]or _G[A]end;return d end;system.getTranslation=function(B,q)local C=string.format("mode.%s.translations.%s.%s",system.gameMode,q and mode[system.gameMode].info[q].langue or mode[system.gameMode].langue,B)return system.loadTable(C)or system.loadTable(string.gsub(C,"translations%..-%.",function()return"translations.en."end))end;system.looping=function(f,D)local z=1000/D;local C={}for E=0,1000-z,z do system.newTimer(function()C[#C+1]=system.newTimer(f,1000,true)end,1000+E,false)end;return C end;math.isNegative=function(F,G,H)return F<0 and(G or F)or(H or F)end;math.percent=function(F,I,c)c=c or 100;local J=F/I*c;return math.min(J,c)end;math.pythag=function(K,L,M,N,O)return(K-M)^2+(L-N)^2<=O^2 end;math.setLim=function(P,Q,R)return math.max(Q,math.min(R,P))end;string.split=function(P,S,f)local a={}for c in string.gmatch(P,S)do a[#a+1]=f and f(c)or c end;return a end;string.nick=function(T)return string.gsub(string.lower(T),"%a",string.upper,1)end;table.find=function(d,P,B,f)for b,c in next,d do local g=type(c)=="table"and B and c[B]or c;if(f and f(g)or g)==P then return true,b end end;return false,0 end;table.turnTable=function(F)return type(F)=="table"and F or{F}end;table.random=function(C)return type(C)=="table"and C[math.random(#C)]or math.random()end;table.shuffle=function(C)local U={}for c=1,#C do table.insert(U,math.random(#U),C[c])end;return U end;deactivateAccents=function(V)local W={a={"á","â","à","å","ã","ä"},e={"é","ê","è","ë"},i={"í","î","ì","ï"},o={"ó","ô","ò","õ","ö"},u={"ú","û","ù","ü"}}for b,c in next,W do for g=1,#c do V=string.gsub(V,c[g],tostring(b))end end;return V end;normalizeTime=function(X)return math.floor(X)+(X-math.floor(X)>=.5 and.5 or 0)end;disableChatCommand=function(Y)system.disableChatCommandDisplay(Y,true)system.disableChatCommandDisplay(string.lower(Y),true)system.disableChatCommandDisplay(string.upper(Y),true)end;normalizeTranslation=function()local C=mode[system.gameMode].translations;for b,c in next,C.en do for g,h in next,C do if g~="en"then if not h[b]then h[b]=c end end end end end;xml={}xml.parse=function(Z)Z=string.match(Z,"<P (.-)/>")or""local a={}for _,a0,P in string.gmatch(Z,"([%-%w]+)=([\"'])(.-)%2")do a[_]=P end;return a end;xml.attribFunc=function(Z,a1)local a2=xml.parse(Z)for b,c in next,a1 do if a2[c.attribute]then c.func(a2[c.attribute])end end end;xml.addAttrib=function(Z,a,a3)local a4=string.match(Z,"<P (.-)/>")or""for b,c in next,a do if not string.find(a4,c.tag)then Z=string.gsub(Z,"<P (.-)/>",function(a5)return string.format("<P %s=\"%s\" %s/>",c.tag,c.value,a5)end)end end;if a3 then tfm.exec.newGame(Z)else return Z end end;xml.getCoordinates=function(z)if string.find(z,";")then local F,I;local a6,P=string.match(z,"(%a);(%d+)")P=tonumber(P)if P then if a6=="x"then F=P else I=P end end;return F or 0,I or 0 else local a7={}for F,I in string.gmatch(z,"(%d+) ?, ?(%d+)")do a7[#a7+1]={x=F,y=I}end;return a7 end end;mode=setmetatable({},{__newindex=function(a,b,c)system.gameMode=b;rawset(a,b,c)end})

--[[ Edite abaixo ]]--

mode.NOME_DO_MINIGAME = {
-- Translations
translations = {
en = {
welcome = "Welcome to #NOME_DO_MINIGAME!",
},
br = {
welcome = "Bem-vindo ao #NOME_DO_MINIGAME!",
},
},
langue = "en",
-- Init
init = function()

end,
-- New Player
eventNewPlayer = function(player)
print("<VP>" .. system.getTranslation("welcome"))
end,
}


--[[ Não mexa ]]--
system.objects={image={},textarea={}}events={}events.eventLoop=function(a,b)_G.currentTime=normalizeTime(a/1e3)_G.leftTime=normalizeTime(b/1e3)end;system.roomSettings={["@"]=function(a)system.roomAdmins[string.nick(a)]=true end,["#"]=function(b)system.miscAttrib=tonumber(b)or 1;system.miscAttrib=math.setLim(system.miscAttrib,1,99)end}system.setRoom=function()if system.isRoom and system.roomAttributes then local c=""for d in next,system.roomSettings do c=c..d end;for e,f in string.gmatch(system.roomAttributes,"(["..c.."])([^"..c.."]+)")do for d,g in next,system.roomSettings do if d==e then g(f)break end end end end end;execute={}system.setRoom()system.init=function(a)for b,c in next,{"Loop","NewGame","PlayerDied","PlayerGetCheese","PlayerVampire","PlayerWon","PlayerLeft","EmotePlayed","Keyboard","Mouse","PopupAnswer","TextAreaCallback","ChatCommand","ChatMessage","SummoningStart","SummoningEnd","SummoningCancel","NewPlayer","PlayerRespawn","ColorPicked"}do local d="event"..c;local e=false;for f,g in next,mode[system.gameMode]do if f==d then execute[d]=g;e=true;break end end;if not e then execute[d]=function()end end;_G[d]=function(...)if events[d]then events[d](...)end;execute[d](...)end end;if a then if mode[system.gameMode].reset then mode[system.gameMode].reset()end end;if _G["eventNewPlayer"]then table.foreach(tfm.get.room.playerList,eventNewPlayer)end;normalizeTranslation()mode[system.gameMode].init()end;system.init()
--


Dernière modification le 1499965140000
Mescouleur
« Citoyen »
1491695880000
    • Mescouleur#0000
    • Profil
    • Derniers messages
#2
  0
*I N A C R E DI T Á V E L*

Boa sorte para todos e um imenso gj para Bolodefchoco
Contistente2
« Citoyen »
1491953220000
    • Contistente2#0000
    • Profil
    • Derniers messages
    • Tribu
#3
  0
Impressionamente :V
Sebafrancuz
« Consul »
1492020900000
    • Sebafrancuz#0000
    • Profil
    • Derniers messages
    • Tribu
#4
  1
#signal atualizado!

Dernière modification le 1492021440000
Jellymichey
« Censeur »
1493153100000
    • Jellymichey#0000
    • Profil
    • Derniers messages
    • Tribu
#5
  0
não dá para voar direito na nuvem
conserta alguém
Blowtex
« Citoyen »
1493154960000
    • Blowtex#0000
    • Profil
    • Derniers messages
    • Tribu
#6
  0
Jellymichey a dit :
não dá para voar direito na nuvem
conserta alguém

O tópico se refere aos sub-modos do modulo #grounds, desde a apresentação dos existentes até um convite para que novos sejam desenvolvidos, tanto é que existe uma pequena API com funções para que você tenha uma liberdade maior no ambiente. Assuntos específicos do modulo #grounds devem ser tratados em seu respectivo tópico.
Kevingamer60
« Citoyen »
1493158380000
    • Kevingamer60#0000
    • Profil
    • Derniers messages
#7
  0
gostei dos sub-modos :)
Thanos
1493160600000
    • Thanos#1306
    • Profil
    • Derniers messages
    • Tribu
#8
[Modéré par Excasr, raison : offtopic - não pertinente ao tópico]
Elvis
1493167140000
    • Elvis#7847
    • Profil
    • Derniers messages
    • Tribu
#9
[Modéré par Excasr, raison : offtopic - não pertinente ao tópico]
Brenower
« Censeur »
1493167740000
    • Brenower#0000
    • Profil
    • Derniers messages
    • Tribu
#10
  0
sobre o signal
flindex noob
só desenha coisa feia igual a cara dele

Dernière modification le 1493603940000
Sebafrancuz
« Consul »
1493936580000
    • Sebafrancuz#0000
    • Profil
    • Derniers messages
    • Tribu
#11
  5
Novo submodo! #Bootcamp+

#grounds0*Bootcamp+ - Desenvolvido por Bolodefchoco e idealizado por Mquk


#BOOTCAMP+
ㅤㅤㅤ

http://i.imgur.com/5W5v647.png


• Jogue mapas excluídos e não aceitos para a rotação oficial de bootcamp, mas que oferecem um ótimo desafio.

» Pressione Shift e clique sobre um piso para ler informações sobre ele;
» Digite !info para ler a lista de comandos;
» Segure K para ver o ranking;
» Para colocar um checkpoint, pressione a tecla E;
» Para remover um checkpoint, pressione Shift+E;
» Digite !next para passar o mapa (comando de adm);
» Digite !again para recarregar o mapa atual (comando de adm);
» Digite !np @Código ou !map @Código para carregar um mapa (comando de adm);
» Digite !queue clear para limpar a lista de mapas (comando de adm);
» Digite !queue add @Código para adicionar um mapa à lista de mapas (comando de adm);
» Digite !queue P3 ou P13 ou P23 para adicionar uma rotação oficial P3, 13 ou 23 à lista de mapas (comando de adm);
» Digite !time TempoEmMinutos para adicionar tempo ao mapa atual (comando de adm);
» Digite !standtime TempoEmMinutos para adicionar tempo em todos os mapas (comando de adm);
» Digite !checkpoint para ativar/desativar os checkpoints (comando de adm).


¬ Na vitória de um mapa, mostra-se seu tempo após o respawn.
¬ Você poderá criar enviar códigos para que Mquk adicione na rotação.

[•] Para se tornar administrador da sala, você poderá adicionar seu nome ao nome da sala com o caractere "@Nome".
ㅤExemplo: #grounds69*Bootcamp+@Bolodefchoco para que Bolodefchoco seja administrador da sala.
[•] Para que você possa reviver - caso morrer - com o queijo - caso você já tenha pego -, utilize o caractere de atributos aleatórios "#1".
ㅤExemplo: #grounds69*Bootcamp+#1.

http://i.imgur.com/UBruIwp.png Tradução
http://atelier801.com/img/pays/gb.pnghttp://atelier801.com/img/pays/br.png
Code Lua

1
2
3
4
5
6
7
8
9
10
11
en = {
welcome = "Welcome to <B>#Bootcamp+</B>! Type !info to check the commands\n\tReport any issue to Bolodefchoco!",
skip = "<VP>%s</VP> just skipped the map!",
restart = "<VP>%s</VP> just restarted the current map!",
loadmap = "<VP>%s</VP> just loaded the map %s!",
settime = "The time has been set to %s minutes!",
setstandtime = "The standard time of all the rounds has been set to %s minutes!",
enabled = "enabled! Press <B>E</B> to put a checkpoint and <B>Shift+E</B> to remove it.",
disabled = "disabled!",
info = "Checkpoint:\n\tIf the checkpoint system is enabled, press <B>E</B> to put a checkpoint and <B>Shift+E</B> to remove it.\nAdmin\n\tIf you are a room admin, there are some commands that you can execute:\n\tMaps\n\t\t!next <V>--> Pass the map</V>\n\t\t!again <V>--> Resets the current map</V>\n\t\t!np @Code <VP>or</VP> !map @Code <V>--> Loads a map</V>\n\t\t!queue clear <V>--> Clear the map queue</V>\n\t\t!queue add @Code <V>--> Adds a map in the map queue</V>\n\t\t!queue P3 <VP>or</VP> P13 <VP>or</VP> P23 <V>--> Adds the whole official rotation of P3 or P13 or P23 in the map queue</V>\n\tTime\n\t\t!time TimeInMinutes <V>--> Set the time of the current round in TimeInMinutes</V>\n\t\t!standtime TimeInMinutes <V>--> Set the time of all the rounds in TimeInMinutes</V>\n\tOthers\n\t\t<B>Shift+Click</B> in a ground to read its properties\n\t\t!checkpoint <V>--> Enables/Disables the checkpoint system</V>",
}

ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
Sebafrancuz
« Consul »
1496248620000
    • Sebafrancuz#0000
    • Profil
    • Derniers messages
    • Tribu
#12
  1
» Todos os bugs conhecidos foram consertados, em todos os submodos.

» Todos os códigos, inclusive o do próprio #grounds foram aperfeiçoados e estão mais leves.

» A API conta com novas funções, tais como: system.newGameTimer, tfm.exec.newGame, system.roomNumber, system.getTranslation, system.looping, table.shuffle, xml.parse, xml.getCoordinates

Aproveite (:
Sebafrancuz
« Consul »
1497623160000
    • Sebafrancuz#0000
    • Profil
    • Derniers messages
    • Tribu
#13
  2
Novo comando em #chat: !unlock [Title]

http://i.imgur.com/8gB2RSE.png


Dois novos submodos: #Map e #Godmode

http://i.imgur.com/qTQLyBN.png #grounds0*Map - Desenvolvido por Bolodefchoco


#MAP
ㅤㅤㅤ

http://i.imgur.com/F4KI3C6.png


• Teste mapas com a comunidade e veja a avaliação do mapa em tempo real.

» Digite !maptest @Código PCategoria para adicionar um mapa na lista de espera para testes (Exemplo: !maptest @2143712 P6);
» Digite !mapinfo para visualizar os atributos, pisos, autor e status do mapa atual;
» Digite !time [tempo] para alterar o tempo do mapa (sempre para menos, isto é, você não poderá adicionar valores maiores que o tempo atual) (apenas caso você seja o usuário que adicionou o respectivo mapa na lista de mapas a serem testados);
» Digite !skip para pular o mapa atual (apenas caso você seja o usuário que adicionou o respectivo mapa na lista de mapas a serem testados);
» Segure P e selecione seu voto para o mapa em teste. Aguarde a confirmação de voto.

¬ Ao fim do mapa, a porcentagem de votação é apresentada ao usuário que adicionou o mapa na lista de espera.
¬ Você poderá criar mapas para o jogo, mesmo a rotação de survivor estando presente no script também.
¬ Existem atributos que você poderá colocar no xml do mapa a ser testado:
ㅤㅤimg="id da imagem, x da imagem, y da imagem, 1/0 (primeiro ou segundo plano)" -> Adiciona uma imagem ao mapa. Para adicionar mais de uma imagem, acrescente ";". Exemplo: img="15a2df6ab69.png,300,200,1;15a2a3a0156.png,100,100,0"

http://i.imgur.com/UBruIwp.png Tradução
http://atelier801.com/img/pays/gb.pnghttp://atelier801.com/img/pays/br.png
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
en = {
-- Init
welcome = "Welcome to #map! Here you can test your maps in different categories and check its approvation in the community!\n\tAdd a map to the queue with the command <B>!maptest @Code PCategory</B> and check the map info using the command <B>!mapinfo</B>.\n\n\tReport any problem to Bolodefchoco.",
-- Info
savenewmap = "Your map %s is in the position %s",
newmaptime = "Less than %s minutes",
vote = "Your vote has been recorded.",
dovote = "Hold P and vote according to your opinion about this map!",

-- Map Info
mapby = "Map %s loaded by %s as %s.",

-- Security
cantvote = "You cannot vote.",

-- Simple words
grounds = "Grounds",
status = "Status",
author = "Author",
}


http://i.imgur.com/h6ImWJL.png -
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

http://i.imgur.com/qTQLyBN.png #grounds0*Godmode - Desenvolvido por Bolodefchoco e idealizado por Mcqv (Reppam)


#GODMODE
ㅤㅤㅤ

http://i.imgur.com/WzRemOZ.png


• Acha o modo normal muito fácil, assim como o modo difícil e divino? Agora você tem um novo desafio: #godmode, isto é: Construa sem pregos!

» Digite !info para ler o guia de ajuda;
» Digite !p [jogador] ou pressione P para abrir um perfil shaman.

¬ Ao fim do mapa, será apresentado a quantidade de ratos salvos e mortos.
¬ Todos os mapas da sala fazem parte da rotação P4.
¬ Todos os mapas começam com 3 minutos.
¬ Você poderá usar até 5 pregos [ao ultrapassar, você morrerá]. (Não necessariamente, apenas pressionar os botões C, V, B, N, J. (Dica: use-os para spawnar setas com pregos!)
¬ Outros pregos serão removidos.

http://i.imgur.com/UBruIwp.png Tradução
http://atelier801.com/img/pays/gb.pnghttp://atelier801.com/img/pays/br.png
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
en = {
-- Init
welcome = "Welcome to <B>#godmode</B>. Type !info to read the help message.\n\tReport any issue to Bolodefchoco.",

-- Guide
shaman = "Hello shaman! Try to build without nails! Good luck.",

-- Info
info = "Use your creativity and build WITHOUT nails in shaman maps! The more mice you save, the higher your score will be. Do not let the mice die.\nPress P or type !p [playername] to open a profile.",
xp = "You've saved %s mice and %s died.",

-- Warning
nail = "You can use %s more nails. After that, you will die.",
kill = "Try not to use nails in your buildings.",
fail = "You failed!",

-- Profile
profile = "Rounds : %s\n<N>Data : %s <G>/ %s\n\n<N>Deaths : %s",
}


http://i.imgur.com/h6ImWJL.png -
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

Nova função na API: normalizeTranslation()
Atualização da API e um novo código para que você possa executar seu submodo sem complicações.
Espie
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--[[ API ]]--
system.newGameTimer=0;table.concat=function(a,b,c,d,e)local f=""b=b or""d,e=d or 1,e or#a;for g,h in next,a do if g>=d and g<=e then f=f..(c and c(g,h)or h)..b end end;return string.sub(f,1,-1-#b)end;do local i=tfm.exec.newGame;tfm.exec.newGame=function(j)if os.time()>system.newGameTimer then system.newGameTimer=os.time()+6000;i(j)return true end;return false end;local k=tfm.exec.addImage;local l=tfm.exec.removeImage;tfm.exec.addImage=function(...)local m=k(...)if m then system.objects.image[m]=true end;return m end;tfm.exec.removeImage=function(m)l(m)if system.objects.image[m]then system.objects.image[m]=nil end end;local n=ui.addTextArea;ui.addTextArea=function(m,...)n(m,...)if not system.objects.textarea[m]then system.objects.textarea[m]=true end end end;system.isRoom=string.byte(tfm.get.room.name,2)~=3;system.roomAdmins={Bolodefchoco=true}system.miscAttrib=0;system.roomNumber,system.roomAttributes=(function()if system.isRoom then local o,p=string.match(tfm.get.room.name,"%*?#"..module._NAME.."(%d+)(.*)")return tonumber(o)or"",p or""else return"",""end end)()system.isPlayer=function(q)return tfm.get.room.playerList[q]and string.sub(q,1,1)~="*"and tfm.get.room.playerList[q].registrationDate and os.time()-(tfm.get.room.playerList[q].registrationDate or 0)>=432e6 or false end;system.players=function(r)local s,t=0,0;if r then s={}end;for g,h in next,tfm.get.room.playerList do if system.isPlayer(g)then if not h.isDead and not h.isVampire then if r then s[#s+1]=g else s=s+1 end end;t=t+1 end end;if r then return s else return s,t end end;currentTime,leftTime=0,0;system.loadTable=function(u)local a;for v in string.gmatch(u,"[^%.]+")do v=tonumber(v)and tonumber(v)or v;a=a and a[v]or _G[v]end;return a end;system.getTranslation=function(w,q)local x=string.format("mode.%s.translations.%s.%s",system.gameMode,q and mode[system.gameMode].info[q].langue or mode[system.gameMode].langue,w)return system.loadTable(x)or system.loadTable(string.gsub(x,"translations%..-%.",function()return"translations.en."end))end;system.looping=function(c,y)local u=1000/y;local x={}for z=0,1000-u,u do system.newTimer(function()x[#x+1]=system.newTimer(c,1000,true)end,1000+z,false)end;return x end;math.isNegative=function(A,B,C)return A<0 and(B or A)or(C or A)end;math.percent=function(A,D,h)h=h or 100;local E=A/D*h;return math.min(E,h)end;math.pythag=function(F,G,H,I,J)return(F-H)^2+(G-I)^2<=J^2 end;string.split=function(K,L,c)local M={}for h in string.gmatch(K,L)do M[#M+1]=c and c(h)or h end;return M end;string.nick=function(N)return string.gsub(string.lower(N),"%a",string.upper,1)end;table.find=function(a,K,w,c)for g,h in next,a do local d=type(h)=="table"and w and h[w]or h;if(c and c(d)or d)==K then return true,g end end;return false,0 end;table.turnTable=function(A)return type(A)=="table"and A or{A}end;table.random=function(x)return type(x)=="table"and x[math.random(#x)]or math.random()end;table.shuffle=function(x)local O={}for h=1,#x do table.insert(O,math.random(#O),x[h])end;return O end;deactivateAccents=function(P)local Q={a={"á","â","à","å","ã","ä"},e={"é","ê","è","ë"},i={"í","î","ì","ï"},o={"ó","ô","ò","õ","ö"},u={"ú","û","ù","ü"}}for g,h in next,Q do for d=1,#h do P=string.gsub(P,h[d],tostring(g))end end;return P end;normalizeTime=function(R)return math.floor(R)+(R-math.floor(R)>=.5 and.5 or 0)end;disableChatCommand=function(S)system.disableChatCommandDisplay(S,true)system.disableChatCommandDisplay(string.lower(S),true)system.disableChatCommandDisplay(string.upper(S),true)end;normalizeTranslation=function()local x=mode[system.gameMode].translations;for g,h in next,x.en do for d,e in next,x do if d~="en"then if not e[g]then e[g]=h end end end end end;xml={}xml.parse=function(T)T=string.match(T,"<P (.-)/>")or""local M={}for U,V,K in string.gmatch(T,"([%-%w]+)=([\"'])(.-)%2")do M[U]=K end;return M end;xml.attribFunc=function(T,W)local X=xml.parse(T)for g,h in next,W do if X[h.attribute]then h.func(X[h.attribute])end end end;xml.addAttrib=function(T,M,Y)local Z=string.match(T,"<P (.-)/>")or""for g,h in next,M do if not string.find(Z,h.tag)then T=string.gsub(T,"<P (.-)/>",function(_)return string.format("<P %s=\"%s\" %s/>",h.tag,h.value,_)end)end end;if Y then tfm.exec.newGame(T)else return T end end;xml.getCoordinates=function(u)if string.find(u,";")then local A,D;local a0,K=string.match(u,"(%a);(%d+)")K=tonumber(K)if K then if a0=="x"then A=K else D=K end end;return A or 0,D or 0 else local a1={}for A,D in string.gmatch(u,"(%d+) ?, ?(%d+)")do a1[#a1+1]={x=A,y=D}end;return a1 end end

--[[ Edite abaixo ]]--
system.gameMode = "NOME_DO_MINIGAME"
mode={system.gameMode} -- Não mexa

mode.NOME_DO_MINIGAME = {
-- Translations
translations = {
en = {
welcome = "Welcome to #NOME_DO_MINIGAME!",
},
br = {
welcome = "Bem-vindo ao #NOME_DO_MINIGAME!",
},
},
langue = "en",
-- Init
init = function()

end,
-- New Player
eventNewPlayer = function(player)
print("<VP>" .. system.getTranslation("welcome"))
end,
}


--[[ Não mexa ]]--
system.objects={image={},textarea={}}events={}events.eventLoop=function(a,b)_G.currentTime=normalizeTime(a/1e3)_G.leftTime=normalizeTime(b/1e3)end;system.roomSettings={["@"]=function(a)system.roomAdmins[string.nick(a)]=true end,["#"]=function(b)system.miscAttrib=tonumber(b)or 1;system.miscAttrib=math.max(1,math.min(system.miscAttrib,99))end}system.setRoom=function()if system.isRoom and system.roomAttributes then local c=""for d in next,system.roomSettings do c=c..d end;for e,f in string.gmatch(system.roomAttributes,"(["..c.."])([^"..c.."]+)")do for d,g in next,system.roomSettings do if d==e then g(f)break end end end end end;execute={}system.setRoom()system.init=function()for a,b in next,{"Loop","NewGame","PlayerDied","PlayerGetCheese","PlayerVampire","PlayerWon","PlayerLeft","EmotePlayed","Keyboard","Mouse","PopupAnswer","TextAreaCallback","ChatCommand","ChatMessage","SummoningStart","SummoningEnd","SummoningCancel","NewPlayer","PlayerRespawn","ColorPicked"}do local c="event"..b;local d=false;for e,f in next,mode[system.gameMode]do if e==c then execute[c]=f;d=true;break end end;if not d then execute[c]=function()end end;_G[c]=function(...)if events[c]then events[c](...)end;execute[c](...)end end;if _G["eventNewPlayer"]then table.foreach(tfm.get.room.playerList,eventNewPlayer)end;normalizeTranslation()mode[system.gameMode].init()end;system.init()

#GROUNDS AGORA É OPEN SOURCE!
PEÇA JÁ O SCRIPT!

/C BOLODEFCHOCO
Sebafrancuz
« Consul »
1498419840000
    • Sebafrancuz#0000
    • Profil
    • Derniers messages
    • Tribu
#14
  1
Novo submodo! #Sharpie

#grounds0*Sharpie - Desenvolvido por Bolodefchoco, inicialmente Sharpiepoops


#SHARPIE
ㅤㅤㅤ

http://i.imgur.com/5XOmlE9.png


• Sinta nostalgia ao jogar o primeiro módulo do Transformice! #Sharpie está de volta, porém aperfeiçoado. Voe o mais alto possível! ou não

» Pressione Espaço para voar.

¬ Em alguns mapas, o modo difícil será ativado: explosões ocorreram durante a partida.

http://i.imgur.com/UBruIwp.png Tradução
http://atelier801.com/img/pays/gb.pnghttp://atelier801.com/img/pays/br.png
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
en = {
-- Init
welcome = "Welcome to #sharpie! Fly pressing space.",

-- Warning
nothacker = "The mice flying are NOT hackers!",

-- Sample words
won = "won",

-- Messages
first = {
"yay 2 in a row",
"super pro",
"oml are you playing alone or what",
"wooow 4 in a row!",
"getting hard? good luck pro!",
"you noob just unlocked the title lightning",
"woah speedmaster",
"formula 1",
"time traveler you sir",
"queen of the win",
"as pro as the developer",
"ILLUMINATI!",
"are you a real hacker?",
"I hope you dont loose the chance of seeing the last message",
"THIS IS A SHIT MESSAGE BECAUSE YOU DIDNT DESERVE IT",
},
hardMode = "The hard mode is activated this round!",
}


http://i.imgur.com/h6ImWJL.png -
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
Grastfetry
« Consul »
1505505000000
    • Grastfetry#0095
    • Profil
    • Derniers messages
    • Tribu
#15
  0
Trancado a pedido do criador do module.
  • Forums
  • /
  • Transformice
  • /
  • Archives
  • /
  • Seção Editor de Mapas e Modules
  • /
  • Submissão de sub-modos para #Grounds - Sub-modos & Documentação
© Atelier801 2018

Equipe Conditions Générales d'Utilisation Politique de Confidentialité Contact

Version 1.27