Documentation Index Fetch the complete documentation index at: https://docs.squashcodes.com/llms.txt
Use this file to discover all available pages before exploring further.
Resolva problemas comuns
Resource não inicia Está com problemas para iniciar o seu produto? Clique aqui
Configurar o resource Está com dúvidas de como configurar algo no sistema? Clique aqui
Sobre o sistema
A proposta do Craft System é unir flexibilidade, persistência e controle total sobre as bancadas de crafting do seu servidor.
O dono do servidor tem poder absoluto para definir quais itens existem, quanto tempo cada fabricação leva, quais upgrades estão disponíveis e como o sistema se integra com o inventário e a economia do servidor.
Com a configuração, você pode:
Definir quais itens podem ser fabricados e seus ingredientes;
Controlar o desgaste das peças primárias e o consumo de combustível;
Personalizar o visual das abas, categorias e interface;
Integrar com qualquer sistema de inventário e economia via funções de callback;
E muito mais.
Visão Geral
Este guia cobre todo o arquivo config/settings.lua.
Objetivo:
Você entender exatamente o que cada opção muda.
Você saber como adicionar itens, ingredientes e upgrades.
Você configurar o sistema sem precisar entrar nos arquivos fonte.
Antes de Começar
Arquivo de configuração: config/settings.lua
Arquivo de banco/licença: config/main.lua
Depois de alterar a config: reinicie o resource (restart sqh_craftsystem)
Regra geral:
true = ativa a função
false = desativa a função
1) Config.tabs
Define as abas exibidas no topo do painel de crafting.
Campo Tipo Descrição idstringIdentificador interno da aba labelstringTexto exibido na aba iconstringCaminho do ícone da aba
Abas disponíveis por padrão:
craft — Fabricar Itens
maintenance — Manutenção (upgrades e melhorias da bancada)
Exemplo:
Config . tabs = {
{ id = "craft" , label = "FABRICAR ITENS" , icon = "assets/icon_34.png" },
{ id = "maintenance" , label = "MANUTENÇÃO" , icon = "assets/tabler_table_filled.png" },
}
2) Config.categories
Define as categorias de filtro exibidas na aba de fabricação.
Campo Tipo Descrição idstringIdentificador interno da categoria labelstringTexto exibido no filtro
A categoria "all" é obrigatória e exibe todos os itens.
Os demais IDs devem corresponder ao campo category de cada item em Config.craftItems.
Exemplo:
Config . categories = {
{ id = "all" , label = "Todos" },
{ id = "weapons" , label = "Armamento" },
{ id = "items" , label = "Itens" },
{ id = "ammo" , label = "Munições" },
{ id = "tools" , label = "Ferramentas" },
{ id = "medical" , label = "Medicina" },
{ id = "electronics" , label = "Eletrônicos" },
}
3) Config.hotbar
Configura o hotbar visual de slots de fabricação exibido na tela.
Opção O que muda slotsNúmero total de slots exibidos no hotbar slotSizeTamanho em pixels de cada slot slotSpacingEspaçamento entre os slots startXPosição X inicial do hotbar na tela startYPosição Y inicial do hotbar na tela
Configura o modal de peças primárias (ferramentas da bancada).
Opção O que muda wLargura do modal em pixels hAltura do modal em pixels slotSizeTamanho de cada slot de ferramenta slotSpacingEspaçamento entre slots maxSlotsNúmero máximo de slots de ferramentas exibidos
5) Config.refuelModal
Configura o modal de abastecimento de combustível da bancada.
Opção O que muda wLargura do modal hAltura do modal pricePerUnitPreço cobrado por unidade de combustível maxTankCapacidade máxima do tanque getMoneyFunção chamada para verificar o saldo do player takeMoneyFunção chamada para descontar dinheiro do player
Exemplo de integração com economia customizada:
Config . refuelModal = {
pricePerUnit = 500 ,
maxTank = 100 ,
getMoney = function ( player )
return exports . sqh_economy : getMoney ( player )
end ,
takeMoney = function ( player , amount )
return exports . sqh_economy : takeMoney ( player , amount )
end ,
}
Lista as peças primárias exibidas no tooltip de ferramentas (somente visual, para referência ao jogador).
Campo Tipo Descrição idstring ou numberIdentificador da peça namestringNome exibido descriptionstringDescrição exibida no tooltip iconstringCaminho do ícone itemIDnumberID do item no inventário (usado para verificar posse)
Observação: Para o comportamento real das peças (desgaste, nível, tipo de cobrança), use Config.primaryParts.
7) Config.craftItems
Esta é a seção mais importante. Define todos os itens que podem ser fabricados.
Cada item aceita:
Campo Tipo Descrição idnumberID único do item (não repita IDs) namestringNome exibido no painel descriptionstringDescrição exibida ao selecionar o item categorystringCategoria (deve existir em Config.categories) levelRequirednumberNível mínimo exigido do player para fabricar pricenumberValor exibido (referência visual, cobrança real é pelos ingredientes) craftTimenumberTempo de fabricação em segundos iconstringCaminho do ícone do item previewstringCaminho da imagem de preview ingredientstableLista de ingredientes necessários
Campos de cada ingrediente
Campo Tipo Descrição idnumber ou stringID do item no inventário (aceita nome também) namestringNome exibido iconstringCaminho do ícone requirednumberQuantidade necessária
Exemplo de item:
{
id = 1 ,
name = "Carabina" ,
description = "Uma carabina compacta e precisa." ,
category = "weapons" ,
levelRequired = 12 ,
price = 15000 ,
craftTime = 90 ,
icon = "assets/items/special-carbine.png" ,
preview = "assets/items/special-carbine_preview.png" ,
ingredients = {
{ id = 201 , name = "Ferro fundido" , icon = "assets/icon_5.png" , required = 20 },
{ id = 202 , name = "Aço reforçado" , icon = "assets/icon_6.png" , required = 10 },
{ id = 203 , name = "Pólvora" , icon = "assets/icon_7.png" , required = 5 },
},
},
8) Config.maintenanceItems
Define os itens de manutenção disponíveis na aba de manutenção. Existem dois tipos:
type = "consumable" — Item consumível (ex: Ácido Clorídrico)
Campo Tipo Descrição idstringID interno do item (ex: "item_15") namestringNome exibido descriptionstringDescrição iconstringCaminho do ícone levelRequirednumberNível mínimo para comprar usesnumberQuantidade de usos fornecidos pricenumberPreço de compra badgestringTexto do badge exibido no card (ex: "20 usos") accelerate.percentagenumberChance (%) de ativar o efeito a cada craft accelerate.craftTimePercentnumberPercentual de redução no tempo de craft quando ativado effectstableEfeitos visuais exibidos no card getMoneyfunctionFunção para verificar saldo do player takeMoneyfunctionFunção para descontar dinheiro do player
Campo Tipo Descrição idstringID interno namestringNome exibido descriptionstringDescrição iconstringCaminho do ícone levelRequirednumberNível mínimo para comprar pricenumberPreço de compra badgestringTexto do badge (ex: "Melhoria") effectstableEfeitos visuais exibidos no card getMoneyfunctionFunção para verificar saldo takeMoneyfunctionFunção para descontar dinheiro
Campos de effects (visual)
Campo Tipo Descrição labelstringNome do efeito valueTextstringTexto do valor (ex: "+20%", "+01") isProgressbooleanSe true, exibe barra de progresso currentnumberValor atual da barra (quando isProgress = true) maxValuenumberValor máximo da barra colorstringCor da barra: 'success', 'danger', 'info'
Itens padrão e seus efeitos:
Item Efeito item_15 Ácido ClorídricoConsumível — chance de reduzir o tempo de craft. Cada compra adiciona uses ao consumable_boost da bancada. item_14 Núcleo de ProcessamentoUpgrade — adiciona +1 slot de fabricação (slot_upgrade) à bancada permanentemente. item_16 Motor ExtraUpgrade — adiciona +1 fabricação simultânea (parallel_upgrade) à bancada permanentemente.
9) Config.settings
Configurações gerais de texto e posicionamento da interface.
Opção O que muda tableNameNome exibido como dono/grupo da bancada tableTitleTítulo principal exibido no painel tableDescriptionDescrição exibida abaixo do título searchPlaceholderTexto de placeholder da barra de busca prefixValuePrefixo exibido antes dos valores monetários (ex: "PV" → PV 50.000) craftsPerPartWearA cada quantos crafts uma peça primária perde 1 nível renderTargetPosição e tamanho do render target 3D (preview do item)
renderTarget
Campo Descrição xPosição X do render target na tela yPosição Y do render target na tela wLargura do render target hAltura do render target
10) Config.purchaseModal
Configura o modal de confirmação de compra exibido na aba de manutenção.
Opção O que muda wLargura do modal hAltura do modal titleTítulo do modal descriptionTexto de confirmação confirmTextTexto do botão de confirmar cancelTextTexto do botão de cancelar
11) Config.craftTableSettings
Configura o comportamento físico das bancadas no mundo do jogo.
Opção O que muda modelID do modelo 3D usado para a bancada interactionKeyTecla para interagir com a bancada / recolher closeKeyTecla para fechar o painel de crafting markerSizeTamanho do marker invisível de colisão ao redor da bancada previewColorCor do preview quando a posição é válida { r, g, b, a } previewInvalidColorCor do preview quando a posição é inválida { r, g, b, a } mapMarkDurationSegundos que o marcador da bancada fica no mapa quando ela já está spawnada
Exemplo:
Config . craftTableSettings = {
model = 2116 ,
interactionKey = "e" ,
closeKey = "backspace" ,
markerSize = 1.5 ,
previewColor = { r = 100 , g = 255 , b = 100 , a = 150 },
previewInvalidColor = { r = 255 , g = 100 , b = 100 , a = 150 },
mapMarkDuration = 10 ,
}
12) Config.primaryParts
Define as peças primárias que a bancada precisa para funcionar. São 4 peças (slots fixos). Cada peça possui um campo dbField que define onde o nível é salvo no banco.
Campo Tipo Descrição dbFieldstringCampo no banco: primary_part_1 a primary_part_4 idstring ou numberIdentificador da peça namestringNome exibido descriptionstringDescrição iconstringCaminho do ícone takeTypestring'item' ou 'money' — como o player paga ao inserir a peçamoneyPricenumberPreço em dinheiro (somente se takeType = 'money') moneyFunctions.getMoneyfunctionFunção para obter o saldo do player moneyFunctions.takeMoneyfunctionFunção para descontar do player itemIDnumberID do item no inventário (somente se takeType = 'item') minLevelnumberNível mínimo da peça (normalmente 1) maxLevelnumberNível máximo que a peça pode atingir
Como funciona o desgaste:
A cada Config.settings.craftsPerPartWear fabricações, o sistema reduz o nível de uma peça primária em 1. Se qualquer peça chegar ao nível 0, a bancada para de funcionar até que o player insira novamente a peça.
Exemplo de peça cobrada por item:
{
dbField = "primary_part_1" ,
id = "Broca" ,
name = "Broca" ,
takeType = 'item' ,
itemID = 10 ,
minLevel = 1 ,
maxLevel = 6 ,
}
Exemplo de peça cobrada por dinheiro:
{
dbField = "primary_part_2" ,
id = 102 ,
name = "Esquemas" ,
takeType = 'money' ,
moneyPrice = 1000 ,
moneyFunctions = {
getMoney = function ( player ) return getPlayerMoney ( player ) end ,
takeMoney = function ( player , amount ) return takePlayerMoney ( player , amount ) end ,
},
minLevel = 1 ,
maxLevel = 6 ,
}
13) Config.upgradeSettings
Define os limites mínimo, máximo e valor padrão de cada upgrade da bancada.
Upgrade Min Max Default Descrição fuel01000Combustível da bancada consumable_boost0200Ácido clorídrico acumulado slot_upgrade1141Slots de fabricação simultâneos parallel_upgrade1141Fabricações paralelas permitidas
Valores fora do intervalo são automaticamente ajustados pelo sistema.
14) Config.permissions
Controla quem pode criar e gerenciar bancadas no jogo.
Opção O que controla createLista de grupos ACL autorizados a usar /createcrafttable managementLista de grupos ACL com acesso ao painel de gerenciamento (botão direito na bancada)
Exemplo:
Config . permissions = {
create = { 'Console' , 'Admin' },
management = { 'Console' , 'Admin' , 'Moderador' },
}
15) Config.events
Esta seção conecta o Craft System ao inventário e economia do seu servidor. Todas as funções devem ser substituídas pelas chamadas do seu sistema.
Função Quando é chamada O que deve retornar hasItemPlayer(player, itemID)Ao verificar se o player possui um item true ou falsegetHasQuantityItemPlayer(player, itemID, amount)Ao verificar a quantidade de um ingrediente number (quantidade atual)giveItemPlayer(player, itemID, amount)Ao entregar o item fabricado ao player true ou falsetakeItemPlayer(player, itemID, amount)Ao consumir ingredientes do inventário true ou falsegetPlayerIdentifier(player)Para identificar o player nas verificações de ACL string (nome da conta MTA)
Exemplo de integração com sqh_inventory:
Config . events = {
hasItemPlayer = function ( player , itemID )
return exports . sqh_inventory : hasItem ( player , itemID )
end ,
getHasQuantityItemPlayer = function ( player , itemID , amount )
return exports . sqh_inventory : getHasQuantityItem ( player , itemID , amount )
end ,
giveItemPlayer = function ( player , itemID , amount )
return exports . sqh_inventory : giveItem ( player , itemID , amount )
end ,
takeItemPlayer = function ( player , itemID , amount )
return exports . sqh_inventory : takeItem ( player , itemID , amount )
end ,
getPlayerIdentifier = function ( player )
return getAccountName ( getPlayerAccount ( player ))
end ,
}
16) Config.colors
Personaliza todas as cores da interface. Cada cor usa a função tocolor(r, g, b, a).
Chave Uso primaryCor de destaque principal (roxo) primaryDarkVariante escura do destaque primaryBorderBorda com cor de destaque textWhite / textWhite80 / textWhite60 / textWhite50Textos com diferentes opacidades textDarkTexto sobre fundo claro success / successBgVerde (progresso, sucesso) danger / dangerAlt / dangerBgVermelho (erro, item em falta) info / infoBgAzul (informações neutras) bgDark / bgLight / bgLighter / bgProgressFundos do painel borderLight / borderLighter / borderDividerBordas e divisores lineWhite / lineGrayLinhas decorativas lockedSlots bloqueados btnBuyBotão de compra
17) Config.fonts
Define as fontes usadas na interface. Os valores são os nomes internos das fontes carregadas via meta.xml.
Chave Fonte carregada jetbrains_mono_mediumJetBrainsMono-Medium jetbrains_mono_boldJetBrainsMono-Bold jetbrains_mono_extraboldJetBrainsMono-ExtraBold jetbrains_mono_regularJetBrainsMono-Medium roboto_condensed_regularRobotoCondensed-Regular roboto_condensed_mediumRobotoCondensed-Medium roboto_condensed_boldRobotoCondensed-Medium tt_lakes_neue_trl_cnd_xbdTTExtraBold tt_lakes_neue_trl_cnd_dbTTDemiBold tt_lakes_neue_trl_cnd_mdTTDemiBold
Não é necessário alterar esta seção a menos que você substitua os arquivos de fonte nas assets/fonts/.
Boas Práticas
Altere uma seção por vez e teste no jogo.
IDs de Config.craftItems devem ser únicos — nunca repita o mesmo ID.
A categoria de cada item em Config.craftItems deve existir em Config.categories.
Em Config.events, nunca deixe as funções retornando valores fixos em produção — integre com seu inventário.
Para adicionar um novo item de manutenção, crie uma entrada em Config.maintenanceItems com um ID único e ajuste as funções getMoney/takeMoney.
Depois de salvar: restart sqh_craftsystem