[Script] Tfm/Metaloja
Script pra tribo "Flores de Athenas"Flamma
lua
3 years ago
3.6 kB
9
Indexable
local dados = {
}
--acima vão ficar os dados para carregar
--------------------------------------------
---@autor: Preuclides#3383
---@descrição: um script de loja para a tribo "Flores de Athenas"
--lista de quem tem cargo de organizador do script
local organizadores = {
[(debug.traceback()):match('(%w*%#%d+)')] = true
}
--optimizações
local xtextarea, xrtextarea, ximage = ui.addTextArea, ui.removeTextArea, tfm.exec.addImage
local temporario = { --dados temporários do jogador
}
local metaloja = {} --declarando a função que cria a lojinha
do --classe da lojinha
---@textareas
--[[
0 = botão
1 = fundo da loja
2 = item1
3 = item2
4 = item3
5 = item2.1
6 = item2.2
7 = item2.3
8 = aba1
9 = aba2
10 = aba3
11 = aba4
12 = aba5
]]
local itensDaLoja = {
['QUEIJOS BARATOS'] = {
'queijinho', 'bluble', 'aa',
'a.1', 'b.2', 'c.3',
},
['QUEIJOS CAROS'] = {
'qj', 'qjinoco', 'beijo',
'caro.1', 'caro.2', 'caro.3',
},
['PELES'] = {
'pelo', 'skin', 'fursona',
'pele.1', 'pele.2', 'plo.3',
},
['CONSUMÍVEIS'] = {
'bola', 'neve', 'chuva',
'batata.1', 'amora.2', 'morango.3',
},
['OUTROS'] = {
'foca', 'javali', 'siriema',
'oto.1', 'oto.2', 'oto.3',
}
}
local larguraDaLoja, alturaDaLoja = 680, 340
metaloja.init = function() --iniciando a classe da loja
self = setmetatable({}, {__index=metaloja})
return self
end
function metaloja:botao() --cria botão
xtextarea(0, '<font size="20"><a href="event:abrir">ㅤ </a></font>', nil, 10, 30, nil, nil, -1, -1, 0)
ximage('166e9893b89.png', '!1', 10, 30)
return self
end
function metaloja:abrir(jogador) --abre a loja pro jogador selecionado
xtextarea(0, '<font size="20"><a href="event:fechar">ㅤ </a></font>', jogador, 10, 30, nil, nil, -1, -1, 0)
xtextarea(1, '', jogador, 800/2-(larguraDaLoja/2), 400/2-(alturaDaLoja/2)+10, larguraDaLoja, alturaDaLoja)
return self
end
function metaloja:fechar(jogador) --fecha a loja pro jogador selecionado
xtextarea(0, '<font size="20"><a href="event:abrir">ㅤ </a></font>', jogador, 10, 30, nil, nil, -1, -1, 0)
for i=1, 12 do
xrtextarea(i, jogador)
end
return self
end
function metaloja:fazerItens(jogador, aba) --faz os itens
for i=1, 3 do
xtextarea(1+i, itensDaLoja[aba][i], jogador, ((((800-larguraDaLoja)/2)+((larguraDaLoja/3)*i))-larguraDaLoja/3)+((larguraDaLoja/6)/2), (400-(alturaDaLoja-20)/2)-120, 110, 100)
end
for i=1, 3 do
xtextarea(4+i, itensDaLoja[aba][3+i], jogador, ((((800-larguraDaLoja)/2)+((larguraDaLoja/3)*i))-larguraDaLoja/3)+((larguraDaLoja/6)/2), (400-(alturaDaLoja-30)/2)+10, 110, 100)
end
return self
end
function metaloja:fazerAbas(jogador) --faz as abas
do local i = 1
for k in next, itensDaLoja do
xtextarea(7+i, '<p align="center"><a href="event:'..k..'">'..k..'</a></p>', jogador, (800-larguraDaLoja)/2+((larguraDaLoja/5)*i)-(larguraDaLoja/5), (400-alturaDaLoja)/2+20, larguraDaLoja/5, 20)
i = i+1
end
end
return self
end
--
end
local loja = metaloja.init():botao() --inicia a loja
eventTextAreaCallback = function(_, j, e) --quando clica na loja
if e == 'abrir' then
loja:abrir(j):fazerItens(j, 'CONSUMÍVEIS'):fazerAbas(j)
elseif e == 'fechar' then
loja:fechar(j)
else
loja:fazerItens(j, e)
end
endEditor is loading...