[Script] Tfm/Metaloja

Script pra tribo "Flores de Athenas"
 avatar
Flamma
lua
2 years ago
3.6 kB
4
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
end
Editor is loading...