×

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
  • /
  • Modules
  • /
  • [Tutorial] Como criar seu próprio módulo com imagens-personagens
[Tutorial] Como criar seu próprio módulo com imagens-personagens
Bolodefchoco
« Sénateur »
1518126120000
    • Bolodefchoco#0095
    • Profil
    • Derniers messages
    • Tribu
#1
  5
Este tópico serve não só como um tutorial para aqueles que desejam módulos de Street Fighter e My Little Poney, mas também uma carta de esclarecimento para que não se empolguem querendo criar um League of Legends dentro do fraco compilador que nos é disposto no Transformice.

É aconselhável que você compreenda o código e altere-o. Copiar e colar não funcionará para você :/
Por mais inusitado que seja, farei um módulo do Ben 10, tem vários monstros e poderei passar a imagem de forma mais fácil.

Quando começamos a pensar em algo com múltiplas opções que nos levam a, praticamente, mesma função, devemos pensar em tabelas. O que quero dizer é que, mesmo que tenham vários personagens, todos eles serão imagens e serão ligadas a um jogador. É a mesma coisa, então não há a necessidade real de poluir seu código com milhares de ifs desnecessários. Criemos uma tabela com as propriedades de cada personagem:
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
local alienigenas = {
-- Usaremos índices números [1], [2], ..., em vez dos nomes, isso facilita nosso trabalho!
[1] = {
nome = "Besta", -- Nome do personagem
tipo = "Selvagem", -- Tipo do personagem, apenas para encher linguiça
imagens = {
-- direita = Imagem do personagem virado para a direita
direita = "1616da5b73a",
esquerda = "1616da74441",
-- eixo horizontal da imagem (x)
x = -70,
-- eixo vertical da imagem (y)
y = -70,
},
},
[2] = {
nome = "Quatro Braços",
tipo = "Luta",
imagens = {
direita = "1616da4f22a",
esquerda = "1616da71d97",
x = -70,
y = -105,
},
},
[3] = {
nome = "Massa Cinzenta",
tipo = "Inteligência",
imagens = {
direita = "1616da4ea5b",
esquerda = "1616da7c337",
x = -75,
y = -70,
},
},
[4] = {
nome = "XLR8",
tipo = "Velocidade",
imagens = {
direita = "1616da584e8",
esquerda = "1616da5dbeb",
-- caso o valor de alinhamento da direita e da esquerda
-- sejam diferentes, teremos uma tabela (direita, esquerda)
x = {-95, -55},
y = -70,
},
},
[5] = {
nome = "Ultra-T",
tipo = "Tecnologia",
imagens = {
direita = "1616da3e24f",
esquerda = "1616da65532",
x = -75,
y = -90,
},
},
[6] = {
nome = "Diamante",
tipo = "Luta",
imagens = {
direita = "1616da52e1b",
esquerda = "1616da37bd3",
x = {-80, -60},
y = -90,
},
},
[7] = {
nome = "Aquático",
tipo = "Água",
imagens = {
direita = "1616da4760d",
esquerda = "1616da7913d",
x = {-70, -75},
y = -95,
},
},
[8] = {
nome = "Insectóide",
tipo = "Inseto",
imagens = {
direita = "1616da3d14a",
esquerda = "1616da70401",
x = {-80, -60},
y = -95,
},
},
[9] = {
nome = "Fantasmático",
tipo = "Fantasma",
imagens = {
direita = "1616da39d2b",
esquerda = "1616da687b0",
x = {-70, -80},
y = -80,
},
},
[10] = {
nome = "Chama",
tipo = "Fogo",
imagens = {
direita = "1616da4cb04",
esquerda = "1616da6138d",
x = -75,
y = -90,
},
},
}

Você deve estar se perguntando o porquê de termos colocado aqueles eixo x e y na tabela das imagens.
Bem, na maiorias das vezes, as imagens estão desalinhas, como no caso abaixo, com x:0 e y:0

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



Então, precisamos de coordenadas para centralizar a imagem com o seu rato. Às vezes os X e Y se divergem, às vezes não. No caso da imagem acima, utilizamos x e y no valor -70 e...

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



Bem alinhado =)

Agora partiremos para a transformação do rato. Abaixo, definiremos o que os ratos poderão fazer:
  • Todos os aliens poderão apertar espaço em cima do outro. Cada um terá 3 pontos de vida, e irão perder um ponto de cada vez quando são atacados;
  • Você poderá se transformar num alien digitando !número ou !nome;
  • Você só poderá atacar quando for um alien e poderá se destransformar ao apertar a tecla 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
24
25
26
27
28
29
30
31
32
33
-- Criaremos uma tabela para armazenar os dados de todos os jogadores presentes
local jogadores = {}

-- Inserimos os dados quando eles entram na sala
eventNewPlayer = function(nome)
jogadores[nome] = {
numero = 0,
vida = 3,
tempo_transformar = 0,
tempo_atacar = 0,
andandoDireita = false,
imagemAtual = -1,
}

-- Habilitaremos as teclas Barra de espaço ( ) e O (O)
for _, tecla in next, {string.byte(" O", 1, 2)} do
system.bindKeyboard(nome, tecla, true, true)
end
-- Também as teclas direcionais esquerda e direita
for tecla = 0, 2, 2 do
system.bindKeyboard(nome, tecla, true, true)
end

-- E uma mensagem legal
tfm.exec.chatMessage([[
<VP>A história começou
quando um relógio esquisito
Grudou no pulso dele vindo lá do infinito
Agora tem poderes e com eles faz bonito
#Ben 10]], nome)
end
-- E fazemos o mesmo para todos já presentes na sala
table.foreach(tfm.get.room.playerList, eventNewPlayer)

E agora os comandos de teclado
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
-- Usaremos uma função com a fórmula de pitágoras
pitagoras = function(x1,y1,x2,y2,raio)
return (x1-x2)^2 + (y1-y2)^2 <= (raio^2)
end

eventKeyboard = function(nome, tecla, _, x, y)
if jogadores[nome].numero > 0 then
-- O jogador só poderá atacar quando se passarem 3 segundos depois do último ataque
if tecla == string.byte(" ") and os.time() > jogadores[nome].tempo_atacar then
jogadores[nome].tempo_atacar = os.time() + 1000 * 3 -- segundos

-- Verificamos todos os ratos próximos usando pitágoras
-- Pitágoras vê se um ponto (x1, y1) está dentro de um círculo com raio _RAIO_ e centro em _X2_ e _Y2_
for nomeJogador, dadosJogador in next, tfm.get.room.playerList do
if pitagoras(x, y, dadosJogador.x, dadosJogador.y, 40) then
jogadores[nomeJogador].vida = jogadores[nomeJogador].vida - 1

-- Morte para quando a vida for menor ou igual a 0
-- Também destransforma o jogador atacado
if jogadores[nomeJogador].vida <= 0 then
tfm.exec.killPlayer(nomeJogador)
jogadores[nomeJogador].numero = 0
end

-- O ataque só poderá diminuir a vida de um inimigo por vez.
break
end
end
elseif tecla == string.byte("O") then
-- Se o jogador está transformado, será rato novamente
-- Só poderá se transformar depois de 10 segundos
jogadores[nome].numero = 0
jogadores[nome].tempo_transformar = os.time() + 1000 * 10 --(segundos)
tfm.exec.killPlayer(nome)
tfm.exec.respawnPlayer(nome) -- Remove a imagem
elseif tecla == 0 or tecla == 2 then
local andandoDireita = tecla==2

-- Se for a mesma direção de antes, não atualizará a imagem: desnecessário
if andandoDireita ~= jogadores[nome].andandoDireita then
jogadores[nome].andandoDireita = andandoDireita

local imagem = alienigenas[jogadores[nome].numero].imagens

local xp
-- Se imagem.x é uma tabela (com posições X para direita e esquerda)
-- iremos escolher de acordo com a direção atual
-- tecla==0 significa esquerda
if type(imagem.x) == "table" then
xp = imagem.x[tecla == 0 and 1 or 2]
end

-- Removemos a imagem antiga se ela existir
if jogadores[nome].imagemAtual ~= -1 then
tfm.exec.removeImage(jogadores[nome].imagemAtual)
end
jogadores[nome].imagemAtual = tfm.exec.addImage(imagem[tecla == 0 and "esquerda" or "direita"] .. ".png", "%" .. nome, xp, imagem.y)
end
end
end
end

E agora o comando para que possamos nos transformar em aliens com !numero ou !nome
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
-- Antes teremos a função que transforma o rato em alien
transformar = function(nome, numero)
jogadores[nome].tempo_transformar = os.time() + 1000 * 5 --(segundos)
jogadores[nome].numero = numero

-- Uma mensagem :D
tfm.exec.chatMessage(string.format("<PT>%s se transformou num %s de tipo %s!!!!!", nome, alienigenas[numero].nome, alienigenas[numero].tipo))

-- Acionaremos a função para atualizar a imagem
eventKeyboard(nome, 0)
end

eventChatCommand = function(nome, comando)
-- Antes de tudo, verificaremos se o rato pode se transformar.
-- (Uma transformação a cada 10 segundos)
if os.time() > jogadores[nome].tempo_transformar then
local comando_numerico = tonumber(comando)
if comando_numerico then
-- Aqui estamos se o comando é um número

-- Agora temos que verificar se o número está dentro dos que existem na tabela
-- 1,2,3,4,5,6,7,8,9,10
if alienigenas[comando_numerico] then
transformar(nome, comando_numerico)
end
else -- Caso não seja um número
-- Iremos verificar nome por nome para ver se bate.
for numero, alienigena in next, alienigenas do
if string.lower(alienigena.nome) == string.lower(comando) then
-- Agora que o nome é igual, temos o _numero_ do alien
transformar(nome, numero)
end
end
end
end
end

E é isso, a base do seu módulo com personagens está pronta!
Edite e seja feliz!

Agora: qual o motivo de não tentarmos algo mais complexo, como a animação do Ben apertando o relógio ou 10 poderes para cada personagem?

Há algo em que chamamos de RUNTIME, tempo de execução.
Esse tempo é limitado. Para jogadores normais são apenas 40 milisegundos suportados, e para membros da equipe lua são apenas 60 milisegundos.

https://image.prntscr.com/image/duC6NcBxQ2_xf43fwj-LjA.png



O que isso significa? Se um módulo demorar mais que esses míseros milisegundos, o minigame simplesmente irá parar de funcionar. O famoso "crash" dos minigames, infelizmente isso só é possível de consertar otimizando o código, ou seja, deixando ele perfeito, sem coisas desnecessárias, e ainda assim fica pesado demais. Por isso não podemos adicionar muitas coisas como desejamos.

É possível fazer animações, (exemplo: #anime0onepiece*village) , mas ficam extremamente pesadas em alguns casos e não é viável fazê-las em módulos grandes.

Então, se você deseja ver animações ou coisas grandiosas no #pokelua, desista.
Se quer um módulo de personagens do My Little Poney ou seja lá o que for, use este tópico como base :)
Se deseja mais animação e menos estático, faça um jogo que suporte isso, TFM não \o/

Esse tópico seria, inicialmente, uma nota de esclarecimento sobre o runtime, mas achei legal ensinar a fazer o uso das imagens corretamente. O esclarecimento também fazia parte do #pokelua, mas se enquadra em qualquer minigame com imagens de personagens que já existem: Nós não os desenhamos. Nós pesquisamos SPRITES dos personagens e, caso queiramos torná-los semi-oficiais, precisamos de permissão dos criadores (pokelua=nintendo) para o uso de imagens. Por isso não é um trabalho fácil e/ou rápido. Também, se o seu personagem não está no módulo, acredite, ele ainda não foi permitido e não é por falta de vontade.

Código final
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
local alienigenas = {
[1] = {
nome = "Besta",
tipo = "Selvagem",
imagens = {
direita = "1616da5b73a",
esquerda = "1616da74441",
x = -70,
y = -70,
},
},
[2] = {
nome = "Quatro Braços",
tipo = "Luta",
imagens = {
direita = "1616da4f22a",
esquerda = "1616da71d97",
x = -70,
y = -105,
},
},
[3] = {
nome = "Massa Cinzenta",
tipo = "Inteligência",
imagens = {
direita = "1616da4ea5b",
esquerda = "1616da7c337",
x = -75,
y = -70,
},
},
[4] = {
nome = "XLR8",
tipo = "Velocidade",
imagens = {
direita = "1616da584e8",
esquerda = "1616da5dbeb",
x = {-95, -55},
y = -70,
},
},
[5] = {
nome = "Ultra-T",
tipo = "Tecnologia",
imagens = {
direita = "1616da3e24f",
esquerda = "1616da65532",
x = -75,
y = -90,
},
},
[6] = {
nome = "Diamante",
tipo = "Luta",
imagens = {
direita = "1616da52e1b",
esquerda = "1616da37bd3",
x = {-80, -60},
y = -90,
},
},
[7] = {
nome = "Aquático",
tipo = "Água",
imagens = {
direita = "1616da4760d",
esquerda = "1616da7913d",
x = {-70, -75},
y = -95,
},
},
[8] = {
nome = "Insectóide",
tipo = "Inseto",
imagens = {
direita = "1616da3d14a",
esquerda = "1616da70401",
x = {-80, -60},
y = -95,
},
},
[9] = {
nome = "Fantasmático",
tipo = "Fantasma",
imagens = {
direita = "1616da39d2b",
esquerda = "1616da687b0",
x = {-70, -80},
y = -80,
},
},
[10] = {
nome = "Chama",
tipo = "Fogo",
imagens = {
direita = "1616da4cb04",
esquerda = "1616da6138d",
x = -75,
y = -90,
},
},
}

local jogadores = {}

eventNewPlayer = function(nome)
jogadores[nome] = {
numero = 0,
vida = 3,
tempo_transformar = 0,
tempo_atacar = 0,
}

for _, tecla in next, {string.byte(" O", 1, 2)} do
system.bindKeyboard(nome, tecla, true, true)
end
for tecla = 0, 2, 2 do
system.bindKeyboard(nome, tecla, true, true)
end

tfm.exec.chatMessage([[
<VP>A história começou
quando um relógio esquisito
Grudou no pulso dele vindo lá do infinito
Agora tem poderes e com eles faz bonito
#Ben 10]], nome)
end
table.foreach(tfm.get.room.playerList, eventNewPlayer)

pitagoras = function(x1,y1,x2,y2,raio)
return (x1-x2)^2 + (y1-y2)^2 <= (raio^2)
end

eventKeyboard = function(nome, tecla, _, x, y)
if jogadores[nome].numero > 0 then
if tecla == string.byte(" ") and os.time() > jogadores[nome].tempo_atacar then
jogadores[nome].tempo_atacar = os.time() + 1000 * 3

for nomeJogador, dadosJogador in next, tfm.get.room.playerList do
if pitagoras(x, y, dadosJogador.x, dadosJogador.y, 40) then
jogadores[nomeJogador].vida = jogadores[nomeJogador].vida - 1
if jogadores[nomeJogador].vida <= 0 then
tfm.exec.killPlayer(nomeJogador)
jogadores[nomeJogador].numero = 0
end
break
end
end
elseif tecla == string.byte("O") then
jogadores[nome].numero = 0
jogadores[nome].tempo_transformar = os.time() + 1000 * 10
tfm.exec.killPlayer(nome)
tfm.exec.respawnPlayer(nome)
elseif tecla == 0 or tecla == 2 then
local andandoDireita = tecla==2

if andandoDireita ~= jogadores[nome].andandoDireita then
jogadores[nome].andandoDireita = andandoDireita

local imagem = alienigenas[jogadores[nome].numero].imagens

local xp
if type(imagem.x) == "table" then
xp = imagem.x[tecla == 0 and 1 or 2]
end

if jogadores[nome].imagemAtual ~= -1 then
tfm.exec.removeImage(jogadores[nome].imagemAtual)
end
jogadores[nome].imagemAtual = tfm.exec.addImage(imagem[tecla == 0 and "esquerda" or "direita"] .. ".png", "%" .. nome, xp, imagem.y)
end
end
end
end

transformar = function(nome, numero)
jogadores[nome].tempo_transformar = os.time() + 1000 * 5
jogadores[nome].numero = numero

tfm.exec.chatMessage(string.format("<PT>%s se transformou num %s de tipo %s!!!!!", nome, alienigenas[numero].nome, alienigenas[numero].tipo))

eventKeyboard(nome, 0)
end

eventChatCommand = function(nome, comando)
if os.time() > jogadores[nome].tempo_transformar then
local comando_numerico = tonumber(comando)
if comando_numerico then
if alienigenas[comando_numerico] then
transformar(nome, comando_numerico)
end
else
for numero, alienigena in next, alienigenas do
if string.lower(alienigena.nome) == string.lower(comando) then
transformar(nome, numero)
end
end
end
end
end

Dernière modification le 1549137540000
Jon
« Consul »
1518128880000
    • Jon#9169
    • Profil
    • Derniers messages
#2
  1
Ótimo tutorial ^^
+Amstream
« Citoyen »
1518129000000
    • +Amstream#0000
    • Profil
    • Derniers messages
    • Tribu
#3
  1
e como q eu vou dar upload nas imgs na api
Bolodefchoco
« Sénateur »
1518129660000
    • Bolodefchoco#0095
    • Profil
    • Derniers messages
    • Tribu
#4
  1
+Amstream a dit :
e como q eu vou dar upload nas imgs na api

Não vai.
Você poderá pedir para algum membro da equipe lua fazer isso para você!


Jooonnnnnnnn a dit :
Ótimo tutorial ^^

Thanks
Viniciusdara
« Consul »
1518131460000
    • Viniciusdara#0000
    • Profil
    • Derniers messages
    • Tribu
#5
  1
Muito bom!! quero esse minigame já!
Bolodefchoco
« Sénateur »
1518133440000
    • Bolodefchoco#0095
    • Profil
    • Derniers messages
    • Tribu
#6
  1
Viniciusdara a dit :
Muito bom!! quero esse minigame já!

huehue obrigado
Hugotitas
« Citoyen »
1518165360000
    • Hugotitas#0000
    • Profil
    • Derniers messages
    • Tribu
#7
  1
Amei, só falta você coloca animação dos personagens né ? (tô viciado na música do Ben 10 ._.)
Bolodefchoco
« Sénateur »
1518185520000
    • Bolodefchoco#0095
    • Profil
    • Derniers messages
    • Tribu
#8
  1
Hugotitas a dit :
Amei, só falta você coloca animação dos personagens né ? (tô viciado na música do Ben 10 ._.)

https://image.prntscr.com/image/JS0t-wVGSUyUC9o8FZTbEA.png



E também não tem sprites pra isso lol
Hydroper
« Citoyen »
1518186720000
    • Hydroper#0528
    • Profil
    • Derniers messages
    • Tribu
#9
  1
Woah...! Isso esse módulo de Ben 10 parece interessante.

Essa centralização de imagem (quadro) me foca muito o LF2.

Bolodefchoco a dit :
possível fazer animações, (exemplo: #anime0onepiece*village) , mas ficam extremamente pesadas em alguns casos e não é viável fazê-las em módulos grandes.

O que é "pesado" para fazer animações com imagens de fato é o módulo ter que chamar tfm.exec.addImage/tfm.exec.removeImage manualmente. E isso também é porque tudo do Lua ocorre no servidor (não no cliente) e reflete os clientes com + atraso, porém o apropriado seria ter uma interface para projetar uma animação, really!
Bolodefchoco
« Sénateur »
1518191160000
    • Bolodefchoco#0095
    • Profil
    • Derniers messages
    • Tribu
#10
  1
Profiver a dit :
Woah...! Isso esse módulo de Ben 10 parece interessante.

Essa centralização de imagem (quadro) me foca muito o LF2.

Bolodefchoco a dit :
possível fazer animações, (exemplo: #anime0onepiece*village) , mas ficam extremamente pesadas em alguns casos e não é viável fazê-las em módulos grandes.

O que é "pesado" para fazer animações com imagens de fato é o módulo ter que chamar tfm.exec.addImage/tfm.exec.removeImage manualmente. E isso também é porque tudo do Lua ocorre no servidor (não no cliente) e reflete os clientes com + atraso, porém o apropriado seria ter uma interface para projetar uma animação, really!

Sim, de fato.
Imagine só, 10 iterações por segundo para cada rato numa sala com 50 ratos..
Ghostxand
« Citoyen »
1518325860000
    • Ghostxand#0000
    • Profil
    • Derniers messages
    • Tribu
#11
  2
Cara! você me ajudou muito! quando eu postar um module aqui saiba que você me motivou a isso. :D

@Edit: só mais uma duvida, é possível mudar a imagem de um objeto invocado pelos ratos?
Por exemplo, se eu usar um script de atirar uma caixa pressionando espaço.. essa caixa pode ter a imagem ESTÁTICA personalizada?

Dernière modification le 1518326880000
Hugotitas
« Citoyen »
1518351060000
    • Hugotitas#0000
    • Profil
    • Derniers messages
    • Tribu
#12
  1
Ghostxand a dit :
Cara! você me ajudou muito! quando eu postar um module aqui saiba que você me motivou a isso. :D

@Edit: só mais uma duvida, é possível mudar a imagem de um objeto invocado pelos ratos?
Por exemplo, se eu usar um script de atirar uma caixa pressionando espaço.. essa caixa pode ter a imagem ESTÁTICA personalizada?

Pode, um exemplo disso é o mini game #battleground
Bolodefchoco
« Sénateur »
1518358620000
    • Bolodefchoco#0095
    • Profil
    • Derniers messages
    • Tribu
#13
  1
Ghostxand a dit :
Cara! você me ajudou muito! quando eu postar um module aqui saiba que você me motivou a isso. :D

@Edit: só mais uma duvida, é possível mudar a imagem de um objeto invocado pelos ratos?
Por exemplo, se eu usar um script de atirar uma caixa pressionando espaço.. essa caixa pode ter a imagem ESTÁTICA personalizada?

Sim! Para fazer isso:

Code Lua

1
2
3
	-- Link, target, alinhamento
-- #ID = Link no objeto, tfm.exec.addShamanObject retorna o ID, então basta concatenar
tfm.exec.addImage("link_da_img.png", "#" .. tfm.exec.addShamanObject(os dados do objeto aqui), -20, -20)
Gamedroit
« Citoyen »
1518638820000
    • Gamedroit#3347
    • Profil
    • Derniers messages
    • Tribu
#14
  1
Bolodefchoco a dit :
Ghostxand a dit :
Cara! você me ajudou muito! quando eu postar um module aqui saiba que você me motivou a isso. :D

@Edit: só mais uma duvida, é possível mudar a imagem de um objeto invocado pelos ratos?
Por exemplo, se eu usar um script de atirar uma caixa pressionando espaço.. essa caixa pode ter a imagem ESTÁTICA personalizada?

Sim! Para fazer isso:

Code Lua

1
2
3
	-- Link, target, alinhamento
-- #ID = Link no objeto, tfm.exec.addShamanObject retorna o ID, então basta concatenar
tfm.exec.addImage("link_da_img.png", "#" .. tfm.exec.addShamanObject(os dados do objeto aqui), -20, -20)

você também pode usar:

Code Lua

1
2
id = tfm.exec.addShamanObject(os dados do objeto aqui)
tfm.exec.addImage("link_da_img.png", "#" .. id, -20, -20)
Bolodefchoco
« Sénateur »
1518640620000
    • Bolodefchoco#0095
    • Profil
    • Derniers messages
    • Tribu
#15
  1
Contistente3 a dit :
Bolodefchoco a dit :
Ghostxand a dit :
Cara! você me ajudou muito! quando eu postar um module aqui saiba que você me motivou a isso. :D

@Edit: só mais uma duvida, é possível mudar a imagem de um objeto invocado pelos ratos?
Por exemplo, se eu usar um script de atirar uma caixa pressionando espaço.. essa caixa pode ter a imagem ESTÁTICA personalizada?

Sim! Para fazer isso:

Code Lua

1
2
3
	-- Link, target, alinhamento
-- #ID = Link no objeto, tfm.exec.addShamanObject retorna o ID, então basta concatenar
tfm.exec.addImage("link_da_img.png", "#" .. tfm.exec.addShamanObject(os dados do objeto aqui), -20, -20)

você também pode usar:

Code Lua

1
2
id = tfm.exec.addShamanObject(os dados do objeto aqui)
tfm.exec.addImage("link_da_img.png", "#" .. id, -20, -20)

Foi o que expliquei no --coment
Travonrodfer
« Censeur »
1526758620000
    • Travonrodfer#0000
    • Profil
    • Derniers messages
    • Tribu
#16
  1
Ata kkk
Agora entendi pq os meus Scripts ficam crashando
  • Forums
  • /
  • Transformice
  • /
  • Modules
  • /
  • [Tutorial] Como criar seu próprio módulo com imagens-personagens
© Atelier801 2018

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

Version 1.27