Studio
Estúdio de fotos para a staff. Fotografa roupas, cortes, maquiagens, tatuagens, veículos e móveis e salva o .webp na pasta de cada loja. O painel mostra fila, progresso e prévia, e continua de onde parou.
Precisa de: ox_lib, krs_helper, screenshot-basic
O screenshot-basic não está no manifesto, mas o painel recusa abrir a leitura das lojas sem ele.
Instalação
add_filesystem_permission studio write skinshop
add_filesystem_permission studio write barbershop
add_filesystem_permission studio write tattooshop
add_filesystem_permission studio write kay_housing
add_filesystem_permission studio write krs
ensure screenshot-basic
ensure skinshop
ensure barbershop
ensure tattooshop
ensure kay_housing
ensure studioColoque depois do krs_helper e das lojas. As linhas add_filesystem_permission deixam o studio gravar dentro de cada loja. Deixe só as das lojas que você tem. Não há tabela no banco. Veja a ordem no server.cfg.
Lojas
Cada parte do painel depende de um resource. Com ele desligado, a parte fica apagada e o console avisa.
| Parte | Resource | Pasta das fotos |
|---|---|---|
| Roupas | skinshop | web-side/photos |
| Barbearia | barbershop | web-side/photos |
| Tatuagens | tattooshop | web-side/photos |
| Veículos no krs | krs | config/vehicles |
| Veículos nos outros frameworks | studio | web-side/vehicles |
| Móveis | kay_housing | web-side/furniture |
O studio lê o catálogo no formato de skinshop, barbershop e tattooshop. Outras lojas desses tipos não são suportadas.
Para mandar as fotos de veículos para outra loja, fora do krs:
Config.Sources = {
vehicles = {
Outro = { Resource = "minha_loja", Folder = "html/carros" }
}
}add_filesystem_permission studio write minha_lojaComo usar
- Digite
/estudio. - Marque as partes e os modelos.
- Deixe Só o que falta ligado para pular o que já tem foto.
- Em Fotos por categoria, use 1 ou 2 para testar antes de rodar tudo.
- Clique em Começar.
- Não mexa no personagem até terminar, e deixe o jogo em primeiro plano. O studio tira print da tela.
Pode fechar a janela com Esc ou Minimizar. As fotos continuam, e o progresso fica no rodapé. Parar interrompe a rodada. Com Só o que falta ligado, a próxima rodada continua dali.
No fim, o painel mostra o restart de cada loja que recebeu fotos.
Permissão
O comando exige o grupo de Config.AdminGroup, que por padrão é Admin. Veja como virar Admin em cada framework.
Configuração
Tudo fica em config.lua. Deixe nele só o que mudou. O resto usa o padrão, e o console avisa opção nova, nome errado e tipo errado ao iniciar.
| Opção | Padrão | O que muda |
|---|---|---|
Command | "estudio" | Nome do comando |
AdminGroup | "Admin" | Grupo com acesso |
Color | "#d8b86b" | Cor de destaque do painel |
UploadRate | 5 | Fotos enviadas por segundo, por admin. Só aumente: baixo demais, as fotos param no meio, e no krs o anticheat registra rajada |
Models | mp_m_freemode_01, mp_f_freemode_01 | Modelos fotografados. Label aceita chave de locale ou texto |
Screens | { 0,255,0 }, { 255,0,255 } | Cores do fundo usadas no recorte, na 1ª e na 2ª passada |
Tones.Skins | 0, 3 | Tom de pele em cada passada |
Tones.Eyes | 0, 12 | Cor dos olhos em cada passada |
Tones.Hair | 0, 29 | Cor do cabelo em cada passada |
Order | clothes, barber, tattoos, vehicles, furniture | Partes ligadas, na ordem do painel. Tire uma da lista para desligar |
Config.Sources
Em toda parte, Resource é a loja e Folder é a pasta dentro dela. Folder aceita letras sem acento, números, _, - e / entre pastas, até 120 caracteres. Não pode ter ponto nem espaço, nem começar com /.
| Opção | Padrão | O que muda |
|---|---|---|
clothes.Frames | head, body, back, legs, feet, full | Câmera por região: Height, Distance, Fov. Back = true fotografa de costas |
clothes.Pants | 0 nos dois modelos | Calça usada no 2º tom |
barber.HairColor | 3 | Cor do cabelo |
barber.Highlight | 3 | Cor da mecha |
barber.HairPalette | 3 | Cor dos itens que usam a paleta de cabelo, como a barba |
barber.MakeupPalette | 0 | Cor dos itens que usam a paleta de maquiagem |
vehicles.Outro | studio, web-side/vehicles | Destino fora do krs |
vehicles.Skip | ^bmx_%d+$, ^patinete_%d+$ | Modelos ignorados, em padrão Lua |
vehicles.Fov | 30.0 | Zoom da câmera |
vehicles.Fill | 1.05 | Folga do enquadramento. Maior afasta a câmera |
vehicles.Angle | -40.0 | Ângulo da câmera |
vehicles.Pitch | 12.0 | Inclinação da câmera |
vehicles.Settle | 1200 | Espera antes da foto, em ms |
furniture.Files | arquivos de shared-side do kay_housing | Onde o studio lê o catálogo de móveis |
furniture.Fov | 30.0 | Zoom da câmera |
furniture.Fill | 1.1 | Folga do enquadramento. Maior afasta a câmera |
furniture.Angle | 35.0 | Ângulo da câmera |
furniture.Pitch | 22.0 | Inclinação da câmera |
furniture.Settle | 700 | Espera antes da foto, em ms |
Textos em locales/*.json. O idioma vem de setr ox:locale "pt-br".
Para programadores
-- servidor: grava um webp em base64 dentro do resource
local ok = exports.studio:Write(resource,caminho,base64)
-- servidor: lista os .webp de uma pasta do resource
local arquivos = exports.studio:List(resource,pasta)Write e List não checam permissão nem o caminho. Use só com valores do próprio servidor, nunca com valores vindos do cliente.
Evento de cliente: studio:Open, que abre o painel. Callbacks, pelo krs_helper: studio:Allowed, studio:Files, studio:Started e studio:Upload.
Cada rodada vai para o canal de log Estudio, por exports.krs_helper:Log.
Problemas comuns
| Mensagem | O que fazer |
|---|---|
O screenshot-basic não está ligado. | Adicione ensure screenshot-basic antes do studio |
O estúdio não tem permissão para salvar fotos em ... | Adicione a linha add_filesystem_permission indicada, antes dos ensure, e reinicie o servidor |
... não está ligado no servidor: essa parte do estúdio fica de fora | Ligue a loja, ou tire a parte de Config.Order |
O estúdio não iniciou direito. | Reinicie o studio ou o servidor e tente de novo |
Tudo que você marcou já tem foto. | Desligue Só o que falta para refazer as fotos |
Nada para fotografar com essa seleção. | Marque outra parte ou outro modelo |
