Organizações
Painel dos grupos do servidor, em um app do tablet. Cada grupo gerencia membros, cargos, banco, avisos e marca. Polícia, hospital, mecânica, empresas, imobiliárias e facções recebem páginas próprias. A polícia também recebe o MDT, com casos, evidências, mandados, multas e câmeras.
Precisa de: krs, oxmysql, phone. Opcional: kay_crafting, garages, kay_housing, pma-voice, screenshot-basic.
Instalação
ensure kay_organizationsColoque depois do krs e do phone. As tabelas vêm do database.sql da base: este script não cria as dele. Veja a ordem no server.cfg.
Dar painel a um grupo
O grupo ganha painel com a chave Panel na configuração de grupos do krs, em config/Global.lua:
Ballas = {
Permission = { Ballas = true },
Hierarchy = { "Líder", "Gerente", "Membro" },
Panel = "faction",
}Panel | Tipo | Páginas além de Membros, Cargos, Avisos, Banco e Marca |
|---|---|---|
police | Polícia | MDT |
hospital | Hospital | Agenda, Prontuários, Exames, Plano médico, Especialidades |
mechanic | Mecânica | Serviços, Ranking, Metas |
company | Empresa | Folha de salário, Metas, Receitas, Tags, Vantagens, VIP, Garagens, Rádio privativa |
realestate | Imobiliária | Imóveis, Folha de salário, Metas |
faction | Facção | Metas, Receitas, Tags, Vantagens, VIP, Garagens, Rádio privativa |
O cargo 1 é o primeiro nome de Hierarchy. Grupo com Type = "Propertys" não tem cofre.
Como abrir
O jogador abre o app Painel no tablet. Quem participa de mais de um grupo com painel troca de grupo dentro do app.
Cargos e permissões
O cargo 1 tem tudo e edita as permissões dos demais em Cargos e permissões, ação por ação. As páginas Cargos e permissões e Marca são só dele.
Em polícia e hospital, toda ação além de ver exige estar em serviço.
Regras de membros:
- Convite exige o convidado na cidade.
- Promover vai até um cargo abaixo do seu.
- Demitir e rebaixar só valem para quem está abaixo de você.
- O cargo 1 não pode sair do grupo.
- O jogador participa de uma facção por vez.
- Polícia e hospital não acumulam entre si.
Páginas
| Página | O que faz |
|---|---|
| Membros | Convida, promove, rebaixa e demite. Mostra quem está online |
| Avisos | Publica avisos para o grupo |
| Banco | Depósito, saque e transferência para um passaporte, com histórico de 30 dias |
| Marca | Nome, título, logo por link https:// e cor do painel |
| Metas | Itens a entregar no baú por dia e recompensa paga pelo cofre. Zera todo dia |
| Tags | Etiquetas para organizar a equipe |
| Vantagens | Compra vagas, tags, avisos e Premium com o cofre |
| Receitas | Mesas do kay_crafting liberadas ao grupo e a produção dos membros na semana |
| Serviços, Ranking | Serviços e faturamento de cada mecânico por dia, semana e mês. Conta os últimos 50 serviços de cada um |
| Folha de salário | Custo por cargo, a partir de Salary do grupo |
| Imóveis | Estoque e contratos. Precisa do kay_housing |
VIP da organização
Facção e empresa. O cargo 1 compra em diamantes, da própria conta ou da vaquinha, e o plano dura 30 dias. Comprar o mesmo plano soma mais 30 dias. Para descer de plano, espere o atual vencer.
| Plano | Diamantes | Tempo de fabricação | Bônus de coleta | Peso do baú | Vagas | Carros | Motos |
|---|---|---|---|---|---|---|---|
| Bronze | 25.000 | 0.9 | 0.05 | 1.25 | 2 | 0 | 0 |
| Prata | 45.000 | 0.8 | 0.10 | 1.5 | 5 | 1 | 1 |
| Ouro | 70.000 | 0.7 | 0.15 | 2.0 | 10 | 2 | 1 |
Os membros contribuem com diamantes na vaquinha, a partir de 100.
Garagens
Facção e empresa. O cargo 1 compra e posiciona: H confirma, F cancela, Q e E giram. Cada ponto pode mudar de lugar uma vez por dia e precisa ficar a 150 m das outras organizações. A vaga do veículo fica a até 25 m da entrada. O ponto não pode ficar dentro de interior.
| Garagem | Como conseguir | O que tem |
|---|---|---|
| Garagem da org | 500.000 do cofre | Garagem comum dos membros. Precisa do garages |
| Caminhão da org | 30.000 diamantes, até o fim da temporada | Um benson com baú de 1000. Dirigir exige a permissão Caminhão |
| Garagem VIP | VIP Prata ou Ouro | Os modelos que o cargo 1 escolhe, com troca semanal |
No jogo, o membro usa E no marcador da garagem VIP ou do caminhão.
Rádio privativa
Facção e empresa. O cargo 1 compra uma frequência de 100 a 999 por 15.000 diamantes, válida até o fim da temporada. Só os membros entram nela. A troca de número vale uma vez por semana.
As frequências reservadas no hud ficam de fora. O bloqueio de entrada usa o pma-voice.
Temporada
| Comando | O que faz |
|---|---|
/temporada | Mostra a temporada atual e a data de fim |
/temporada fim DD/MM/AAAA | Define o último dia |
/temporada virar | Começa a próxima temporada |
/temporada fim 31/12/2026Virar a temporada encerra caminhões, rádios e modelos da garagem VIP de todas as organizações. O mesmo acontece quando a data de fim passa. Até virar, as compras ficam bloqueadas.
Exige o grupo Admin no cargo 1, ou o console do servidor.
MDT da polícia
Grupos em Config.Access usam o MDT no mesmo app. Por padrão, LSPD, BCSO e SAPR.
| Página | O que faz |
|---|---|
| Início | Unidades de patrulha, casos e procurados |
| Oficiais | Fichas e certificações |
| Casos, Evidências | Investigações com etiquetas, multas e anotações |
| Despacho | Chamados da polícia |
| Mandados, Multas | Registros por cidadão |
| Banco de dados | Busca de cidadãos |
| Veículos | Busca por placa e marcação de procurado, lida pelo radar |
| Locais | Casas, esconderijos, fazendas e escritórios |
| Mapa ao vivo | Posição das unidades |
| Câmeras | Câmeras de segurança |
| Justiça | Ficha, prisões, código penal, procurados, boletins, corregedoria, apreensões, oficiais, medalhas, unidades, banco e permissões |
| Info do DP | Avisos, reuniões, códigos de rádio, uniformes e permissões |
| Chat | Chats do departamento |
Câmeras
| Comando | O que faz |
|---|---|
/cftv <categoria> <nome> | Cria uma câmera onde você está, olhando para onde você está virado |
/cftv | Remove a câmera criada a até 3 m |
/cftv stores Mercado da PraçaExige o grupo Admin no cargo 1 ou 2. O nome tem de 3 a 40 letras. As categorias são as chaves de Config.CCTVS.Categorys. Câmeras de Config.CCTVS.Cameras não são removidas pelo comando.
Outros comandos
| Comando | O que faz |
|---|---|
/propfix | Remove objetos presos ao personagem |
/toggleUnitHud | Mostra ou esconde o HUD de unidades |
Configuração
Grupos e marca: krs/shared.lua
| Opção | Padrão | O que muda |
|---|---|---|
Theme | Name = "Painel", Color = "#FF424B" | Nome, título, logo e cor padrão. A logo também vira o ícone do app |
KrsGroups | LSPD, BCSO, SAPR | Grupos policiais do MDT |
Access | os mesmos | Quem abre o MDT |
ItemImagesFolder | "" | Pasta das imagens de item |
Departments | 3 departamentos | Nome, logo, fundo, cor e local de cada departamento |
Native.Group | "Policia" | Grupo que reúne as polícias |
Native.MaxFine | 100000 | Teto da multa na prisão |
Native.MaxReductionFine | 100 | Redução máxima da multa, em % |
Native.MaxArrest | 2500 | Teto do tempo de prisão |
Native.MaxReductionArrest | 100 | Redução máxima da prisão, em % |
Native.BankTaxWithdraw | 1.0 | Multiplica o valor recebido no saque. 0.9 entrega 90% |
Native.BankTaxTransfer | 1.0 | Multiplica o valor recebido na transferência |
Native.GroupNames | nome de cada polícia | Nome mostrado por grupo |
Painel: panel/shared.lua
| Opção | Padrão | O que muda |
|---|---|---|
Panel.Kinds | 6 tipos | Páginas e permissões de cada tipo |
Panel.Exclusive | facção; polícia e hospital | Tipos que não acumulam |
Panel.Perks | Members, Tags, Announces, Premium | Vantagens e preços |
Panel.VIP.Days | 30 | Duração do plano, em dias |
Panel.VIP.Tiers | tabela acima | Planos |
Panel.VIP.Cars | 6 modelos | Carros da garagem VIP |
Panel.VIP.Bikes | 5 modelos | Motos da garagem VIP |
Panel.VIP.ModelsEvery | 604800 | Intervalo para trocar modelos, em segundos |
Panel.VIP.MinContribution | 100 | Menor valor da vaquinha |
Panel.Garages.Truck | benson, peso 1000, preço 30000 | Caminhão da org |
Panel.Garages.Common.Price | 500000 | Preço da garagem da org |
Panel.Garages.Ghost | "sultan" | Veículo usado para posicionar a vaga |
Panel.Garages.MoveEvery | 86400 | Intervalo para mudar de lugar, em segundos |
Panel.Garages.Distance | 150 | Distância mínima entre organizações, em metros |
Panel.Garages.Reach | 25 | Distância máxima entre entrada e vaga, em metros |
Panel.Radio.Price | 15000 | Preço da frequência, em diamantes |
Panel.Radio.Min, Panel.Radio.Max | 100, 999 | Faixa de frequências |
Panel.Radio.ChangeEvery | 604800 | Intervalo para trocar o número, em segundos |
MDT: config/config.lua
| Opção | Padrão | O que muda |
|---|---|---|
DefaultImage | ./assets/images/citizenPhoto.png | Foto padrão |
UpdateIntervals.updatePlayerCoords | 30 | Atualização das posições, em segundos |
UpdateIntervals.clearChat | 1800 | Limpeza do chat, em segundos |
Units.keyLabel | "U" | Tecla mostrada na tela para o HUD de unidades |
Units.toggleUnit | "toggleUnitHud" | Nome do comando do HUD de unidades |
propFixCommand | "propfix" | Nome do comando |
tabletModel | prop_cs_tablet | Prop do tablet na mão |
tabletRotation, tabletOffset | vector3(90.0, 90.0, -80.0), vector3(0.02, 0.01, -0.03) | Encaixe do prop |
Tags | 5 etiquetas | Etiquetas iniciais, gravadas quando a tabela está vazia |
Places.Categorys | 6 categorias | Categorias de locais |
liveChats.defaultChats | Chat Geral, Chat do Resgate | Chats padrão |
liveChats.blacklistWords | vazio | Palavras bloqueadas no chat |
liveChats.maxMessages | 150 | Tamanho máximo de cada mensagem |
Certifications | 9 unidades | Certificações dos oficiais |
Props.Camera | prop_cctv_cam_01a | Prop das câmeras |
CCTVS.MaxRotationX | 40.0 | Rotação vertical máxima |
CCTVS.MinFov, CCTVS.MaxFov | 10.0, 80.0 | Limites do zoom |
CCTVS.ZoomStep | 10.0 | Passo do zoom |
CCTVS.MoveStep | 0.8 | Passo do movimento |
CCTVS.Controls | IDs de controle do GTA | Teclas da câmera |
CCTVS.Cameras | 7 câmeras | Câmeras fixas |
CCTVS.Categorys | 7 categorias | Categorias das câmeras |
MileageFormat | "KMH" | "MPH" mostra em milhas |
VehicleFetchTimeout | 1 | Espera antes de buscar dados do veículo, em segundos |
AssetsKeys | Tirar, Cancelar | Teclas da foto de evidência |
Os textos ficam em config/locales.lua. Códigos de rádio, uniformes, armas e permissões iniciais do MDT ficam em shared/. Os chamados ficam em krs/dispatch.lua.
Para programadores
Exports de servidor:
-- ação permitida ao cargo do jogador no grupo
exports.kay_organizations:Can(CharId, Grupo, Secao, Acao)
-- o jogador está em algum grupo com painel
exports.kay_organizations:CanUse(CharId)
-- melhor bônus de VIP: "craft", "farm", "chest" ou "slots". Grupo é opcional
exports.kay_organizations:VipBonus(CharId, Tipo, Grupo)
-- acesso à garagem comum. Nome no formato "Org:<grupo>"
exports.kay_organizations:GarageAccess(Nome, CharId)
-- baú do caminhão. nil se a placa não é de caminhão de org, "Longe" fora de 10 m
exports.kay_organizations:OrgTrunk(CharId, Placa, Modelo)
-- o jogador pode entrar nessa frequência
exports.kay_organizations:RadioAllowed(CharId, Numero)
-- data de fim da temporada, ou false
exports.kay_organizations:SeasonEnds()
-- liga ou desliga uma câmera
exports.kay_organizations:toggleCCTV(Indice, Ligada)
-- desliga a câmera por um tempo, em segundos. Padrão 10
exports.kay_organizations:tempDisableCCTV(Indice, Segundos)Exports de cliente:
-- abre a placa no MDT, para quem está em Config.Access
exports.kay_organizations:OpenVehicle(Placa)
-- o jogador está olhando uma câmera
exports.kay_organizations:inCam()
-- fecha a câmera
exports.kay_organizations:closeCam()Eventos de servidor:
| Evento | Parâmetros | O que faz |
|---|---|---|
kay_organizations:Open | Grupo | Abre o painel nesse grupo |
mdt:Open | Grupo | Abre o MDT, para quem está em serviço no grupo |
kay_organizations:SeasonTurned | Antiga, Nova | Disparado ao virar a temporada |
Evento de cliente: mdt:Notify, com Titulo, Mensagem e Tipo.
Problemas comuns
| Mensagem | Causa |
|---|---|
Este grupo não tem painel. | Falta Panel no grupo |
Seu cargo não tem essa permissão. | O cargo 1 precisa liberar a ação em Cargos e permissões |
Entre em serviço para fazer isso. | Polícia e hospital exigem serviço |
Este grupo não tem cofre. | Grupo com Type = "Propertys" |
Limite de membros atingido. | Compre mais vagas em Vantagens ou assine o VIP |
O sistema de casas está desligado. | kay_housing não está rodando |
A temporada está no fim. Aguarde a próxima para comprar. | A data de fim passou. Rode /temporada virar |
