Pular para o conteúdo

O menu de chefe

Um aplicativo para quem dirige um negócio: quem trabalha lá, quem é contratado, quem é demitido, quem sobe de cargo, o que há na conta e quem deve dinheiro à empresa.

Nada nele reimplementa a sua framework. Contratar, demitir e cargos são operações da própria framework, solicitadas por meio da bridge e verificadas de novo na entrada — ESX, QBCore e QBox, cada um à sua maneira.

O aplicativo não aparece na Tela de Início de quem não dirige nada. Ele chega sozinho na próxima vez que um novo chefe abrir o telefone, e some do mesmo jeito.


A maioria dos servidores já marca isso: o ESX marca um cargo com is_boss, o QB marca um emprego com isboss. Se o seu faz isso, este arquivo não precisa de nada.

Config.Apps.Boss.Bosses em shared/config/boss.lua serve para os que não fazem — e para aqueles em que estar no comando não é uma única patente, mas várias, cada uma com um pouco mais de permissão que a de baixo:

Bosses = {
mechanic = 4, -- grade 4 and above, everything
police = { -- a ladder, where each rung adds to the ones below it
[3] = { 'Hire', 'Promote' }, -- a Sergeant may hire and promote, and nothing else
[4] = { 'Account', 'Invoice' }, -- a Lieutenant may also see the account and bill people
[5] = true, -- a Captain may do everything left in Actions
},
}

Os degraus se somam, e é isso que faz uma escada parecer uma escada: uma patente pode fazer tudo o que a patente abaixo faz, mais o que estiver escrito na sua própria linha. Ninguém repete uma lista em cada cargo, e ninguém perde um poder ao ser promovido.

Um cargo com uma lista vazia continua no comando: ele abre o aplicativo e vê quem trabalha lá, que é a única coisa que estar no comando sempre significa.

Config.Apps.Boss.Actions é o teto para a cidade inteira — nada em Bosses pode conceder algo que esteja desativado ali. É o caminho curto para tirar um poder de todos os negócios de uma vez.

Actions = { Hire = true, Fire = true, Promote = true, Account = true,
Deposit = true, Withdraw = true, Invoice = true },

Um poder desativado não é desenhado e é recusado, nessa ordem. Um botão que apenas some da tela não está desativado.


  • Contratar é feito parado ao lado de alguém. A lista é formada por quem estiver a poucos metros, e a mesma distância é verificada de novo quando o nome é enviado, então um nome nessa lista é um nome que ainda será aceito um instante depois. Um menu que pode empregar qualquer pessoa da cidade adivinhando um id é um menu que será usado exatamente para isso.
  • Ninguém pode mexer em si mesmo nem em quem esteja no mesmo cargo ou acima. Os dois casos são explicados na tela, em vez de serem botões que silenciosamente não fazem nada.
  • Um cargo é escolhido na escada que o servidor enviou, nunca digitado.
  • Identificadores nunca atravessam a rede. Cada pessoa na lista é um ticket que só significa algo para esta sessão.
  • O dinheiro se move sob um lock, por empresa, e é devolvido se a outra metade falhar.