AI Core

Scripts recomendados

Como um script gratuito entra na seção Recommended scripts do painel de administração.

O dashboard do painel de administração tem uma seção Recommended scripts: scripts gratuitos que valem a pena instalar em um servidor AI Core. Cada um aparece só enquanto combina com o servidor (nenhum script de celular roda: um celular é recomendado; o script já roda: o card some), e os que aparecem também são escritos uma vez no console do servidor 15 segundos após o início. O dono esconde um card com o X e o traz de volta na aba General, card Recommendations.

Requisitos

  • É gratuito. O card mostra uma etiqueta Free.
  • Funciona pelo AI Core, não por um único framework ou script. Tudo o que o script compartilha com outros scripts passa pelas camadas e exports do AI Core, para que todo script ai-*, a ponte ESX / QB / Qbox e os outros scripts do dono funcionem com ele. Por exemplo:
    • dar e remover chaves de veículo passa pela camada de chaves (lib vehicleKeys.give / vehicleKeys.remove, exports GiveVehicleKeys / RemoveVehicleKeys), nunca pelos exports de um script de chaves;
    • aplicar uma aparência e recarregar a skin passam pela camada de aparência (appearance.apply, appearance.reloadSkin);
    • itens passam pela camada de inventário (inventory.addItem, ou exports['ai-core']:AddItem(source, 'bread', 2) pelo Lua);
    • combustível, portas, garagens, o celular e alertas policiais (dispatch.alert) passam pelas suas camadas do mesmo jeito.
  • Se a categoria tem uma camada, ele tem um adaptador nela. Um script de inventário, chaves de veículo, roupas, combustível, trancas de porta, garagem, celular, dispatch, banco, faturas ou médico precisa de um adaptador nessa camada, para que os outros scripts cheguem até ele. Um script que responde a uma API que a camada já lê precisa de menos: um script de combustível com exports de cliente no estilo LegacyFuel GetFuel(vehicle) / SetFuel(vehicle, level) é uma linha na lista da camada de combustível.

As camadas e os scripts que elas suportam: Camadas e a ponte, Compatibilidade, e uma nota por camada em docs/compat/ do repositório do servidor.

Entrar na lista

Adicione a entrada

Faça um fork de aifivem/ai-core e adicione uma entrada à lista RECOMMENDATIONS em resource/server/recommendations/index.ts:

{
  id: "my-garbagejob",
  title: "ADMIN_REC_MY_GARBAGEJOB",
  desc: "ADMIN_REC_MY_GARBAGEJOB_DESC",
  url: "https://example.com/my-garbagejob",
  free: true,
  // aparece enquanto o script não roda
  shows: (runs) => !runs("my-garbagejob"),
},
CampoO que contém
idO nome de resource do script. Um card dispensado o guarda, então tem de 2 a 64 letras minúsculas, dígitos, _ ou -.
title, descChaves de idioma do ai-core: o nome do script e uma linha dizendo por que o servidor o quer.
urlA página onde o dono obtém o script.
freetrue.
showsQuando o card aparece. runs(resource) é true enquanto esse resource está iniciado e não está parando. Uma condição também pode consultar uma camada, como a entrada do celular: shows: () => phones.active === null (nenhum celular roda).

O AI Core verifica as condições de novo quando um resource inicia ou para, quando a camada de celular troca e quando as configurações mudam. Uma condição sobre outra camada também liga a troca dessa camada a recommendations.refresh(), como o fim do arquivo faz para o celular (phones.onSwitch).

Adicione os dois textos

Em locales/en.json, junto às outras chaves ADMIN_REC_*:

"ADMIN_REC_MY_GARBAGEJOB": "My Garbage Job",
"ADMIN_REC_MY_GARBAGEJOB_DESC": "Garbage routes with pay per stop; items and vehicle keys go through ai-core's layers."

Só em inglês: os outros idiomas são adicionados por cima de en.json.

Adicione o adaptador, se a sua categoria tem uma camada

No mesmo pull request:

  • o arquivo do adaptador na pasta adapters/ da camada: resource/server/<layer>/adapters/<resource>.ts, mais resource/client/<layer>/adapters/<resource>.ts quando o script só tem uma API de cliente. Copie o adaptador de um script parecido;
  • a linha dele na lista de adaptadores da camada: resource/server/<layer>/registry.ts, ou o index.ts da camada quando ela não tem registry.ts (phone, medical, prison, world).

Depois abra um segundo pull request em aifivem/aicore-server que adicione o script à nota da camada docs/compat/<layer>.md (por exemplo vehicle-keys.md, phone.md): versão testada, status e limites conhecidos.

Abra o pull request

No ai-core rode bun install, depois bun run typecheck, bun run lint e bun run build; os três precisam passar. Dê ao pull request um título Conventional Commit em inglês, por exemplo feat(recommendations): recommend my-garbagejob. Os mantenedores revisam: conferem que o script é gratuito e funciona pelas camadas e então fazem o merge; o card chega com a próxima versão do ai-core.

Nesta página