×

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
  • /
  • [OFICIAL] Tarefas Semanais e Devcoins
« ‹ 5 / 6 › »
[OFICIAL] Tarefas Semanais e Devcoins
Bolodefchoco
« Sénateur »
1536279300000
    • Bolodefchoco#0095
    • Profil
    • Derniers messages
    • Tribu
#81
  5
Fly a dit :
assim q é bom

* /c Brenower AFF QUE TAREFA DIFICIU

Sossia a dit :
Não compreendi muito bem

Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
local strings = {
"sossia",
"lua",
"tarefa"
}

local desenhar = function()
-- Fazer a função de desenhar as letras
end

for str = 1, #strings do
desenhar(strings[str])
end
Bolodefchoco
« Sénateur »
1536870540000
    • Bolodefchoco#0095
    • Profil
    • Derniers messages
    • Tribu
#82
  2
http://atelier801.com/img/sections/roue-dentee.png Resultados da Tarefa 5

Pontuação máxima (+15)
Fly#8215
Laagaadoo
Nettoork


Pontuação mediana (+10)
Jellymichey
Dicas gerais
- Buinto bein pesual, ofenderam o breno corretamentchy

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
local draw
do
local ground = {
type = 12,
height = 10,
width = 10,
color = 0x16243A
}

local chars = {
["A"] = {
0, 1, 0,
1, 0, 1,
1, 1, 1,
1, 0, 1,
1, 0, 1
},
["B"] = {
1, 1, 0,
1, 0, 1,
1, 1, 0,
1, 0, 1,
1, 1, 0
},
["E"] = {
1, 1, 1,
1, 0, 0,
1, 1, 1,
1, 0, 0,
1, 1, 1
},
["F"] = {
1, 1, 1,
1, 0, 0,
1, 1, 1,
1, 0, 0,
1, 0, 0
},
["L"] = {
1, 0, 0,
1, 0, 0,
1, 0, 0,
1, 0, 0,
1, 1, 1
},
["O"] = {
0, 1, 0,
1, 0, 1,
1, 0, 1,
1, 0, 1,
0, 1, 0
},
["R"] = {
1, 1, 0,
1, 0, 1,
1, 1, 0,
1, 0, 1,
1, 0, 1
},
["T"] = {
1, 1, 1,
0, 1, 0,
0, 1, 0,
0, 1, 0,
0, 1, 0
},
["U"] = {
1, 0, 1,
1, 0, 1,
1, 0, 1,
1, 0, 1,
1, 1, 1
}
}

local id = 0
draw = function(line, txt)
txt = txt:upper():match("[A-Z_%+]+")

local counter = 0
string.gsub(txt, ".", function(char)
if chars[char] then
counter = counter + 1

local cel, row = 1, 1
for c = 1, #chars[char] do
if chars[char][c] == 1 then
id = id + 1
tfm.exec.addPhysicObject(id, 10 * cel + 50 * counter, 30 + (line * 70) + 10 * row, ground)
end

if cel == 3 then
cel = 0
row = row + 1
end

cel = cel + 1
end
end
end)
end
end

eventNewGame = function()
draw(0, "Bolo")
draw(1, "Lua")
draw(2, "Tarefa")
end
tfm.exec.newGame(0)

Tarefa 6 em poucos instantes...
Fly
« Citoyen »
1536872040000
    • Fly#8215
    • Profil
    • Derniers messages
    • Tribu
#83
  1
breno izi
Jellymichey
« Censeur »
1537037640000
    • Jellymichey#0000
    • Profil
    • Derniers messages
    • Tribu
#84
  1
Tarefa 6 em poucos instantes...
Bolodefchoco
« Sénateur »
1537045980000
    • Bolodefchoco#0095
    • Profil
    • Derniers messages
    • Tribu
#85
  2
http://atelier801.com/img/sections/roue-dentee.png Tarefa 6 - ★★★
Calendário: 15/09/2018 - 22/09/2018

  Hoje você criará o Windows Explorer! É, isso mesmo! Descrição por meio de tópicos:
• Botão "Nova Pasta"
  • Criar uma pasta (apenas letras, números, espaço e _ (mínimo 4 letras)) no diretório atual (path)
    • Ao clicar na pasta criada deveremos ir para a path da pasta (pathAntiga .. "/" .. nomeDaPasta)
      • Mostrar uma frase ("Voltar para " .. pathAntiga)
• Botão "Novo Arquivo"
  • Criar uma arquivo (apenas letras, números, espaço e _, PRECISA TER UMA EXTENSÃO (ex: .png) e no mínimo 1 letra no nome do arquivo) no diretório atual (path)
  • Não pode ser clicado
• Tudo criado pode ser deletado (Botão deletar, ao lado)
• Path deve ser dividido por / ou \
• Quando um arquivo ou pasta for deletado, a textarea deve ser atualizada.
  - Ponto extra para eficiência e otimização
• Não pode haver duplicata de nomes (duas pastas / arquivos com o mesmo nome)

Você também pode optar para um console, deve ter as mesmas funcionalidades de cima, porém com comandos. (Textarea (output) e popup (input))
Exemplo em formato de console

https://image.prntscr.com/image/aBrnLOJHR9a1kfL7vR1iyg.png




Você pode ver um exemplo com botões na sala *#bolodefchoco0dir

Code Lua

1
tfm.exec.setRoomMaxPlayers(1)

https://atelier801.com/img/icones/16/enveloppe.png Envio da tarefa

Dernière modification le 1537046820000
Fly
« Citoyen »
1537048140000
    • Fly#8215
    • Profil
    • Derniers messages
    • Tribu
#86
  1
melhor tarefa
Sossia
« Citoyen »
1537829580000
    • Sossia#6280
    • Profil
    • Derniers messages
    • Tribu
#87
  0
Essa tarefa não acabou 2 dias atrás?
Bolodefchoco
« Sénateur »
1537830360000
    • Bolodefchoco#0095
    • Profil
    • Derniers messages
    • Tribu
#88
  1
Sossia a dit :
Essa tarefa não acabou 2 dias atrás?

Sim, mas ainda estamos votando.


As tarefas voltarão em breve :P Beijoos
Bolodefchoco
« Sénateur »
1537978380000
    • Bolodefchoco#0095
    • Profil
    • Derniers messages
    • Tribu
#89
  3
http://atelier801.com/img/sections/roue-dentee.png Resultados da Tarefa 6

Pontuação máxima (+15)
Heniyengui
Athesdrake


Pontuação mediana (+10)
Jellymichey

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
-- Apenas para um user
ui.addTextArea(0, "<p align='center'><a href='event:newfolder'>Nova pasta\n", nil, 5, 25, 100, 20, 1, 1, 1, true)
ui.addTextArea(1, "<p align='center'><a href='event:newfile'>Novo arquivo\n", nil, 5, 55, 100, 20, 1, 1, 1, true)

local C = { }

local getPath = function(path)
local src = C
string.gsub(path, "[^/\\]+", function(p)
if src then
src = src[p]
else
return
end
end)
return src, path
end

local currentPath = { C, "" }

local showDir = function(path)
local src, str
if path then
src, str = getPath(path)

if not src then
return tfm.exec.chatMessage("O caminho <J>" .. tostring(path) .. " é inválido.")
end

currentPath = { src, str }
else
src, str = currentPath[1], currentPath[2]
path = str
end

local dir, counter = { }, 0
for fo, fi in next, src do
counter = counter + 1
dir[counter] = (type(fi) == "table" and ("<a href='event:@" .. (str ~= "" and (str .. "/") or "") .. fo .. "'>" .. fo .. "</a>") or fi) .. " <G>- <R><a href='event:!" .. fo .. "'>Deletar</a><N>"
end

local last = string.match(path, "^(.*)[/\\].-$")
last = ((last and last ~= "") and last or "")
ui.addTextArea(2, (currentPath[2] == "" and "" or ("<J>Voltar para <BV><a href='event:@" .. last .. "'>C" .. (last ~= "" and ("/" .. last) or "") .. "</a>\n\n")) .. "<N>" .. table.concat(dir, "\n"), nil, 150, 25, 450, 350, 1, 1, 1, true)
end

eventTextAreaCallback = function(id, playerName, callback)
if callback == "newfolder" then
ui.addPopup(0, 2, "Nome da pasta", playerName, 5, 25, 100, true)
elseif callback == "newfile" then
ui.addPopup(1, 2, "Nome do arquivo\n(e extensão)", playerName, 5, 25, 100, true)
elseif callback:sub(1, 1) == "@" then
showDir(callback:sub(2))
elseif callback:sub(1, 1) == "!" then
callback = callback:sub(2)
callback = tonumber(callback) or callback

if type(callback) == "number" then
table.remove(currentPath[1], callback)
else
currentPath[1][callback] = nil
end
showDir()
end
end

eventPopupAnswer = function(id, playerName, answer)
if #answer < 4 then
return tfm.exec.chatMessage("O nome precisa de pelo menos 4 caracteres.")
end

if id == 0 then
answer = string.match(answer, "^[%w_ ]+$")
if not answer then
return tfm.exec.chatMessage("Nome da pasta é invalido. Apenas letras, números, espaço e _.")
end
if currentPath[1][answer] then
return tfm.exec.chatMessage("A pasta " .. answer .. " já existe.")
end

currentPath[1][answer] = { }
else
answer = string.match(answer, "^[%w_ ]+%.%w+$")
if not answer then
return tfm.exec.chatMessage("Nome do arquivo é invalido. Apenas letras, números, espaço e _, seguido por .extensão.")
end
for n, o in next, currentPath[1] do
if type(n) == "number" and o == answer then
return tfm.exec.chatMessage("O arquivo " .. answer .. " já existe.")
end
end

currentPath[1][#currentPath[1] + 1] = answer
end
showDir(currentPath[2])
end

Tarefa 7 mês que vem!

Dernière modification le 1537978440000
Bolodefchoco
« Sénateur »
1538403360000
    • Bolodefchoco#0095
    • Profil
    • Derniers messages
    • Tribu
#90
  4
http://atelier801.com/img/sections/roue-dentee.png Tarefa 7 - ★★☆
Calendário: 01/10/2018 - 08/10/2018

Recriar a sala #bolodefchoco0map
Especificação das cores no display:
  - Toca tem cor vermelha
  - Queijo tem cor amarela
  - Shaman tem cor azul
  - Ratos normais tem cor branca
Dica:
  - Jogue com mais de uma pessoa
Pontos extras para:
  - Shaman azul e rosa em mapas P8, 32, etc (todos com mais de um shaman)
  - Tirar o minimap em mapas vanilla
  - Eficiência e otimização

https://atelier801.com/img/icones/16/enveloppe.png Envio da tarefa

Dernière modification le 1538420880000
Bolodefchoco
« Sénateur »
1538425020000
    • Bolodefchoco#0095
    • Profil
    • Derniers messages
    • Tribu
#91
  4
Olha só o novo avaliador monstrão

http://avatars.atelier801.com/6879/416879.jpg

Ninguem#0095

Fly
« Citoyen »
1538427060000
    • Fly#8215
    • Profil
    • Derniers messages
    • Tribu
#92
  0
nice d+ gostei chega de mapas pelo bem da humanidade help me
Ninguem
« Consul »
1538429940000
    • Ninguem#0095
    • Profil
    • Derniers messages
    • Tribu
#93
  3
O que a sala #bolodefchoco0map faz é pegar o mapa da partida atual e criar uma miniatura dele no canto inferior direito. Essa miniatura é criada com pisos. Também é atualizado em tempo real a posição dos jogadores.

Imagem da sala
http://img.atelier801.com/b324f21b.png


Você vai lidar principalmente com:
  • eventNewGame
  • eventLoop
  • tfm.exec.addPhysicObject (criação de pisos durante uma partida)
  • ui.addTextArea (experimente deixar sem texto e com tamanho 1x1)
  • tfm.get.room.xmlMapInfo.xml (onde fica armazenado o xml do mapa atual, menos mapas vanilla)
  • tfm.get.room.playerList[player].x (posição x de player)
  • tfm.get.room.playerList[player].y (posição y de player)
  • string.gmatch (vai te ajudar a lidar com o xml)

Alguns locais pra você encontrar as informações:
  • FAQ & Super Guia da Editor de Mapas (seção Entendendo o XML)
  • [BR] Documentação
  • Manual de Referência de Lua 5.2


E isso aí, boa sorte para vocês!

Dernière modification le 1538431080000
Hugotitas
« Citoyen »
1538430360000
    • Hugotitas#0000
    • Profil
    • Derniers messages
    • Tribu
#94
  0
Ninguem a dit :
O que a sala #bolodefchoco0map faz é pegar o mapa da partida atual e criar uma miniatura dele no canto inferior direito. Essa miniatura é criada com pisos. Também é atualizado em tempo real a posição dos jogadores.

Imagem da sala
http://img.atelier801.com/b324f21b.png


Você vai lidar principalmente com:
  • eventNewGame
  • eventLoop
  • tfm.exec.addPhysicObject (criação de pisos durante uma partida)
  • ui.addTextArea (experimente deixar sem texto e com tamanho 0x0)
  • tfm.get.room.xmlMapInfo.xml (onde fica armazenado o xml do mapa atual, menos mapas vanilla)
  • tfm.get.room.playerList[player].x (posição x de player)
  • tfm.get.room.playerList[player].y (posição y de player)
  • string.gmatch (vai te ajudar a lidar com o xml)

Alguns locais pra você encontrar as informações:
  • FAQ & Super Guia da Editor de Mapas (seção Entendendo o XML)
  • [BR] Documentação
  • Manual de Referência de Lua 5.2


E isso aí, boa sorte para vocês!

Thank u
Sossia
« Citoyen »
1538435700000
    • Sossia#6280
    • Profil
    • Derniers messages
    • Tribu
#95
  0
Ninguem a dit :
O que a sala #bolodefchoco0map faz é pegar o mapa da partida atual e criar uma miniatura dele no canto inferior direito. Essa miniatura é criada com pisos. Também é atualizado em tempo real a posição dos jogadores.

Imagem da sala
http://img.atelier801.com/b324f21b.png


Você vai lidar principalmente com:
  • eventNewGame
  • eventLoop
  • tfm.exec.addPhysicObject (criação de pisos durante uma partida)
  • ui.addTextArea (experimente deixar sem texto e com tamanho 1x1)
  • tfm.get.room.xmlMapInfo.xml (onde fica armazenado o xml do mapa atual, menos mapas vanilla)
  • tfm.get.room.playerList[player].x (posição x de player)
  • tfm.get.room.playerList[player].y (posição y de player)
  • string.gmatch (vai te ajudar a lidar com o xml)

Alguns locais pra você encontrar as informações:
  • FAQ & Super Guia da Editor de Mapas (seção Entendendo o XML)
  • [BR] Documentação
  • Manual de Referência de Lua 5.2


E isso aí, boa sorte para vocês!

Você tem um minigame que faz exatamente isso.
Bruno
« Censeur »
1538456220000
    • Bruno#3852
    • Profil
    • Derniers messages
    • Tribu
#96
  0
A parte difícil na verdade é com o XML do mapa mesmo porque para pegar as posições dos jogadores e exibir o mini-mapa é bem facinho.
Boa sorte aos competidores. Gostei muito dessa tarefa.
Bolodefchoco
« Sénateur »
1539119580000
    • Bolodefchoco#0095
    • Profil
    • Derniers messages
    • Tribu
#97
  1
http://atelier801.com/img/sections/roue-dentee.png Resultados da Tarefa 7

Pontuação máxima (+10)
Athesdrake

Pontuação mediana (+5)
Fly#8215

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
local mapWidth, mapHeight = 800, 400
local getCoordinates = function(x, y)
return 600 + (200 * x / mapWidth), 300 + (100 * y / mapHeight)
end
local getScale = function(w, h)
return 200 * w / mapWidth, 100 * h / mapHeight
end

eventNewPlayer = function(playerName)
tfm.exec.lowerSyncDelay(playerName)
end
table.foreach(tfm.get.room.playerList, eventNewPlayer)

local O = 0
eventNewGame = function()
loadNewMap = false

for t = O, -1 do
ui.removeTextArea(t)
end
o = 0

local xml = tfm.get.room.xmlMapInfo
if xml then
string.gsub(xml.xml, "<P (.-)/>", function(settings)
mapWidth = math.max(tonumber(string.match(settings, "L=\"(%d+)\"")) or 800)
mapHeight = math.max(tonumber(string.match(settings, "H=\"(%d+)\"")) or 400)
end, 1)

local Z = 0
tfm.exec.addPhysicObject(Z, 700, 350, {
type = 12,
width = 200,
height = 100,
miceCollision = false,
groundCollision = false,
color = 0x6A7495,
foreground = true,
})

string.gsub(xml.xml, "<S (.-)/>", function(groundContent)
local X = tonumber(string.match(groundContent, "X=\"(%-?%d+%.?%d*)\"")) or 10
local Y = tonumber(string.match(groundContent, "Y=\"(%-?%d+%.?%d*)\"")) or 10
local L = tonumber(string.match(groundContent, "L=\"(%-?%d+%.?%d*)\"")) or 10
local H = tonumber(string.match(groundContent, "H=\"(%-?%d+%.?%d*)\"")) or 10
local T = tonumber(string.match(groundContent, "T=\"(%d+)\"")) or 0
local A = tonumber(string.match(groundContent, "P=\".-,.-,.-,.-,(%-?%d+%.?%d*),.-\"")) or 0
local O = string.match(groundContent, "o=\"(%x+)\"")
O = O and tonumber("0x" .. O, 16)

X, Y = getCoordinates(X, Y)
L, H = getScale(L, H)

Z = Z + 1
tfm.exec.addPhysicObject(Z, X, Y, {
type = T,
width = L,
height = H,
angle = A,
miceCollision = false,
groundCollision = false,
color = O,
foreground = true,
})
end)

string.gsub(xml.xml, "<([FT]) (.-)/>", function(objectType, objectContent)
local X = tonumber(string.match(objectContent, "X=\"(%d+)\"")) or 10
local Y = tonumber(string.match(objectContent, "Y=\"(%d+)\"")) or 10

X, Y = getCoordinates(X, Y)

local color = (objectType == "F" and 0xFFFA00 or 0xFF5E4C)

O = O - 1
ui.addTextArea(O, "", nil, X, Y, 1, 1, color, color, .4, false)
end)
else
loadNewMap = true
end
end

eventLoop = function()
if loadNewMap then
tfm.exec.newGame()
end
for playerName, playerData in next, tfm.get.room.playerList do
if not playerData.isDead then
local color = playerData.isShaman and 0x00E3FF or 0xFFFFFF
local x, y = getCoordinates(playerData.x, playerData.y)
ui.addTextArea(playerData.id, "", nil, x, y, 1, 1, color, color, .4, false)
end
end
end

eventPlayerDied = function(playerName)
ui.removeTextArea(tfm.get.room.playerList[playerName].id)
end
eventPlayerWon = eventPlayerDied

Dernière modification le 1539121800000
Ninguem
« Consul »
1539126480000
    • Ninguem#0095
    • Profil
    • Derniers messages
    • Tribu
#98
  5
http://atelier801.com/img/sections/roue-dentee.png Tarefa 8 - ★★☆
Calendário: 09/10/2018 - 16/10/2018

O código Morse é usado quando só temos como nos comunicar utilizando 2 estados, como ligar e apagar uma lâmpada ou até mesmo o abaixar e levantar de um rato no Transformice. Imagine que um jogador recebeu mute e abaixar e levantar fosse a única forma de contato dele? Se ele fizer isso em sala normal, dependeria de alguém que entenda o que ele está falando, mas se for no cafofo podemos criar algo que traduza para o nosso alfabeto.

Então é essa a tarefa: criar um interpretador de código Morse. Os sinais vão ser enviados pelo ato de abaixar e levantar dos ratos e, quando eles executarem a animação de "soltar confetes", deve ser traduzido e exibido aquilo que foi detectado.

O alfabeto morse é definido com pontos e traços, veja abaixo como funciona o padrão

http://img.atelier801.com/e5a4f210.jpg

- Os pontos são chamados de dit e são a referência para a duração dos outros símbolos
- Os traços são chamados de dah e possuem uma duração de 3 dits (3 vezes o tempo de um dit)
- Espaço entre dits e dah (espaços e pontos) tem uma duração de 1 dit
- Espaço entre letras tem uma duração de 1 dah (3 dits)
- Espaço entre palavras tem uma duração de 7 dits

Fica a seu critério definir qual será o tempo de um dit, mas os outros símbolos devem usar o tempo de dit como referência.

Exemplo:

=,===,=,=,,,=,,,=,=,=,===,,,=,,,=,=,,,,,,,===,===,,,=,=,===,,,===,,,=

* sinal de igual (=) é ligado, vírgula (,) é desligado

Traduzindo vira:

.-.. . ...- . .. / -- ..- - .

L E V E I (espaço) M U T E

Para esta tarefa você vai lidar principalmente com:

- system.bindKeyboard e eventKeyboard
- eventEmotePlayed
- ui.addTextArea
- os.time

Cuidados:

- Não misturar os sinais dos jogadores. Vários jogadores devem ser capazes de mandar sinais ao mesmo tempo
- Se for detectado algum padrão inválido, deve-se avisar do erro e exibir a mensagem escrita até então

https://atelier801.com/img/icones/16/enveloppe.png Envio da tarefa

Dernière modification le 1539126540000
Bolodefchoco
« Sénateur »
1539793860000
    • Bolodefchoco#0095
    • Profil
    • Derniers messages
    • Tribu
#99
  1
Obrigado pessoal, vocês não enviaram nada, portanto não tinha nada pra avaliar e_e

Well, como tudo o que é bom tem um fim, este é o fim disso.
Foi muito bom dar pontinhos pra vocês.

Obrigado ao breninho e ao none pela ajudona.


É provável que os pontos de vocês ainda sejam válidos, não sei. Enfim, vou pedir para trancarem. ^^
Nettoork
« Censeur »
1539801600000
    • Nettoork#0000
    • Profil
    • Derniers messages
    • Tribu
#100
  0
Pooxa ;( Só parei de fazer por preguiça mesmo, que pena, mesmo assim obrigado por terem revivido as tarefas semanais por um tempo!

vai deixar saudades

  • Forums
  • /
  • Transformice
  • /
  • Archives
  • /
  • Seção Editor de Mapas e Modules
  • /
  • [OFICIAL] Tarefas Semanais e Devcoins
« ‹ 5 / 6 › »
© Atelier801 2018

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

Version 1.27