AI Core
Referência da API

Exports dos scripts

Os exports de cada script ai-*, e as APIs de outros scripts que eles substituem.

Os scripts ai-* nunca chamam uns aos outros para uma tarefa compartilhada: itens, chaves, alertas, prisão, médico, aparências, itens do radial e clima passam pelo ai-core (a lib), que chama os exports abaixo. Chame-os você mesmo só para o que é específico daquele script. Exports tipados em @aicore-fivem/shared funcionam com resourceExport("ai-..."); os outros com callExport(resource, name, ...args) ou uma chamada simples a exports[...].

Quando um script substitui outro (provide), os nomes de export do outro script também respondem, então exports.ox_inventory:AddItem(...) chega ao ai-inventory.

ai-lib

A interface compartilhada do jogador. Exports de cliente, tipados AiLibClientExports; notify, progress, showPrompt, menu, input, skillCheck e lockpick da lib os chamam por você.

ExportO quê
Notify(notification: Notification): voidUm cartão de notificação (text, title?, kind, duration?).
ShowProgress(label: string, duration: number): voidMostra a barra de progresso por duration ms (quem chama executa a ação).
HideProgress(): voidEsconde a barra.
ShowPrompt(id: string, text: string, at?: { x, y, z }): voidMostra ou atualiza o prompt de quem chama; at o desenha sobre um ponto do mundo.
HidePrompt(id: string): voidEsconde um prompt.
OpenMenu(requestId: number, request: MenuRequest): voidUm menu; a escolha chega como MENU_EVENTS.menuResult.
OpenInput(requestId: number, request: InputRequest): voidUm diálogo de entrada; os valores chegam como MENU_EVENTS.inputResult.
OpenMinigame(requestId: number, request: MinigameRequest): voidUm skill check ou lockpick; o resultado chega como MENU_EVENTS.menuResult.
CloseDialog(): voidFecha o menu ou a entrada abertos de quem chama (respondido com null).

O evento de servidor ai-lib:client:notify (LIB_UI.notifyEvent) com uma Notification mostra um cartão na tela daquele jogador.

ai-inventory

Exports de servidor (próprios): os outros scripts ai-* chegam a eles pela camada de inventário do ai-core.

ExportO quê
AddItem(inv: number | string, item: string, count: number, metadata?, slot?): booleanAdiciona itens.
RemoveItem(inv: number | string, item: string, count: number, metadata?, slot?): booleanRemove itens.
GetItemCount(inv: number | string, item: string, metadata?): numberQuantos há.
GetItems(inv: number | string): { name, label, count, slot, metadata }[]Cada pilha com seu rótulo.
CanCarryItem(inv: number | string, item: string, count: number, metadata?): booleanSe cabe.
RegisterUsableItem(name: string, handler: (source, item) => unknown): voidSe handler retornar false o item fica; senão a quantidade consume dele é tirada.
RegisterStash(name: string, label: string, slots: number, maxWeight: number, jobs?: string[], personal?: boolean): voidUm stash.
OpenInventory(source: number, inv: number | string): booleanAbre um inventário na tela de um jogador.
ClearInventory(inv: number | string): voidEsvazia o inventário.
Items(name?: string): unknownUma definição de item (formato do ox), ou todas.
GetWeight(inv: number | string): { weight, maxWeight } | nullPeso carregado e limite em gramas.

Exports de cliente: OpenInventory(type, data), CloseInventory(), OpenSelf() (o próprio inventário com o chão, o porta-malas ou o porta-luvas ao redor), GetItemCount(item), HasItem(items: string \| string[] \| Record<string, number>, amount?), GetPlayerItems().

Evento local do servidor ai-inventory:usedItem (source, name, slot, metadata, status).

API do ox_inventory

O ai-inventory faz provide de ox_inventory e responde aos seus exports (ox_inventory 2.44). Os inventários têm os nomes do ox: o source de um jogador, um nome de stash, { id, owner } para stashes pessoais, uma placa para porta-malas.

  • Servidor: AddItem (retorna success, response, chama cb), RemoveItem, GetItem, GetItemCount, Search (count / slots), CanCarryItem, CanCarryWeight, CanCarryAmount, GetInventory, GetInventoryItems, GetSlot, GetSlotWithItem, GetSlotsWithItem, GetSlotIdWithItem, GetSlotIdsWithItem, GetEmptySlot, SetMetadata, SetDurability, SetMaxWeight, RegisterStash, ClearInventory, Items, ItemList, forceOpenInventory (stash, jogador, loja), CreateTemporaryStash, CustomDrop, RemoveInventory, SwapSlots.
  • Cliente: openInventory, closeInventory, Search, GetItemCount, GetPlayerItems, GetPlayerWeight, GetPlayerMaxWeight, Items, useSlot, getCurrentWeapon / GetCurrentWeapon; displayMetadata, weaponWheel, setStashTarget são aceitos e não fazem nada.
  • Sem resposta: hooks (registerHook, removeHooks), UpdateVehicle, ConfiscateInventory / ReturnInventory, GetContainerFromSlot, RegisterShop (as lojas vêm do painel).

API do qb-inventory

O ai-inventory faz provide de qb-inventory (API 2.0). Os itens retornados trazem os dois formatos: count / metadata e amount / info.

  • Servidor: AddItem(identifier, item, amount, slot, info), RemoveItem, HasItem (nome, lista ou { name = amount }), GetItemCount, GetItemByName, GetItemsByName, GetItemBySlot, CanAddItem, GetFreeWeight, GetSlots, ClearInventory, SetItemData, CreateInventory, OpenInventory, OpenInventoryById, RemoveInventory, CloseInventory.
  • Cliente: HasItem, CloseInventory.
  • Sem resposta: hooks e listeners, CreateShop / OpenShop, SetInventory, GetInventory, SaveInventory, LoadInventory, UseItem, GetFirstSlotByItem, GetSlotsByItem, GetTotalWeight.

ai-vehicles

Veículos com dono. Exports de servidor, tipados AiVehiclesServerExports. VehicleOwner é { type: "character" \| "job" \| "gang" \| "resource", id }.

ExportO quê
CreateVehicle(owner: VehicleOwner, model: string, garage: string | null, props?): { id, plate } | nullRegistra um novo veículo com dono.
GetVehicle(ref: number | string): OwnedVehicle | nullUm veículo por id ou placa.
GetVehicles(owner: VehicleOwner): OwnedVehicle[]Veículos de um personagem online, ou a frota de um emprego ou gangue.
IsOwnedPlate(plate: string): booleanSe uma placa pertence a um veículo com dono.
GetVehicleIdByEntity(entity: number): number | nullO id de um veículo com dono que está no mundo.
GetPlateOwners(): [plate, type, id][]Todo veículo com dono em memória (depois siga ai-vehicles:owners).
GetEntity(id: number): number | nullA entidade de um veículo no mundo.
SaveVehicle(id: number, change: { props?, fuel?, engine?, body?, state?, garage? }): voidSalva condição e aparência; o tuning salvo continua.
SaveTuning(id: number, props: unknown): voidSalva as props completas com o tuning (só oficinas de tuning).
StoreVehicle(id: number, garage: string | null, state?: VehicleState): voidGuarda um veículo em uma garagem (garage, out, impound).
SetOwner(id: number, owner: VehicleOwner): voidMuda o dono.
DeleteVehicle(id: number): voidApaga um veículo.
SpawnVehicle(id: number, at: { x, y, z, heading }, asker: number, cb: (netId: number | null) => void, purpose?: KeyPurpose, setup?): voidCria a entidade; cb recebe seu net id.

O ai-vehicles faz provide de qbx_vehicles: GetPlayerVehicles(filters), GetPlayerVehicle(id), CreatePlayerVehicle(request), SetPlayerVehicleOwner(id, citizenid), DeletePlayerVehicles(idType, idValue), GetVehicleIdByPlate(plate), DoesPlayerVehiclePlateExist(plate), SaveVehicle(entity, options) (filtros por citizenid precisam do dono online).

ai-vehicleshop

ExportO quê
GetCatalogPrice(model: string): number | nullO preço de catálogo de um modelo (servidor).

ai-vehiclekeys

Exports de servidor, também sob qbx_vehiclekeys. Um veículo é uma entidade ou uma placa. Os scripts dão chaves pelo ai-core (GiveVehicleKeys, vehicleKeys da lib), que os chama enquanto o ai-vehiclekeys é o sistema de chaves ativo.

ExportO quê
HasKeys(source: number, vehicle: number | string): booleanSe o jogador tem as chaves.
GiveKeys(source: number, vehicle: number | string): voidDá as chaves.
RemoveKeys(source: number, vehicle: number | string): voidTira as chaves.
SetLockState(vehicle, state)Tranca ("lock", true, 2) ou destranca uma entidade de veículo.
IsPlayerNearVehicle(source, vehicle)Se o jogador está perto do veículo.

ai-death

Exports de servidor, tipados AiDeathServerExports; Revive e IsDead também sob qbx_medical. Os scripts usam a camada médica do ai-core (medical da lib) em vez deles.

ExportO quê
Revive(source: number): booleanLevanta um jogador caído; false quando não está caído.
IsDead(source: number): booleanSe o jogador está caído.
Heal(source: number): voidVida cheia para um jogador que não está caído.

O evento de cliente hospital:client:Revive enviado pelo servidor reanima o jogador.

ai-prison

Exports de servidor; a camada de prisão do ai-core (prison da lib) os chama.

ExportO quê
JailPlayer(source, minutes, by?)Prende um jogador; true quando funcionou.
ReleasePlayer(source)Solta um jogador preso.
GetJailTime(source)Minutos restantes (0 quando livre).

ai-policealert

ExportO quê
DispatchAlert(alert: DispatchAlert): voidMostra um cartão de alerta; só a camada de despacho do ai-core o chama (os scripts usam SendDispatchAlert / dispatch da lib).

ai-doorlock

Exports de servidor, tipados AiDoorlockServerExports; portas pelo id do painel. Também responde a setDoorState e getDoor do ox_doorlock.

ExportO quê
SetDoorState(id: string, locked: boolean): voidTranca ou destranca uma porta.
IsLocked(id: string): booleanSe uma porta está trancada.

ai-banking

Dinheiro de sociedade para scripts QB (uma conta é o nome de um emprego). Exports de servidor, também sob qb-banking; getAccountMoney, addAccountMoney, removeAccountMoney do Renewed-Banking respondem igual.

ExportO quê
GetAccountBalance(job)O saldo bancário da conta de um emprego.
AddMoney(job, amount, reason)Adiciona a ela.
RemoveMoney(job, amount, reason)Tira dela.

ai-hud

ExportLadoO quê
OpenSettings()ClienteAbre as configurações do HUD.
SetMinimapAlways(on: boolean)ClienteUm interruptor próprio de um admin: o minimapa a pé, independente do painel.
GetMinimapAlways(): booleanClienteSe está ligado.
GetNeeds(source)Servidorhunger, thirst, stress do jogador, ou null.
SetNeed(source, need, value)ServidorDefine uma necessidade.
AddNeed(source, need, delta)ServidorMuda uma necessidade em delta.

ai-smallresources

Exports de cliente.

ExportO quê
GetSeatbelt(): boolean | nullSe o jogador usa cinto; null a pé ou com os cintos desligados. As mudanças chegam como ai-smallresources:seatbelt.
IsHandsUp(): booleanMãos para cima (os scripts usam gestures da lib).
IsPointing(): booleanApontando.

ai-sirens

Exports de cliente para veículos de emergência; vehicle é por padrão aquele em que o jogador está sentado. As mudanças de estado funcionam no cliente do motorista.

ExportO quê
SetLights(vehicle, on)Luzes ligadas ou desligadas.
ToggleLights(vehicle)Alterna as luzes.
SetSirenTone(vehicle, tone)Tom 0-3 (0 = desligada).
ToggleSiren(vehicle)Sirene ligada ou desligada.
CycleTone(vehicle)O próximo tom.
GetSirenTone(vehicle)O tom atual.
AreLightsOn(vehicle)Se as luzes estão ligadas.
GetAirManuState(vehicle)O estado do tom manual.
GetLightbarModel(vehicle)O modelo da barra de luzes, ou null.

ai-exitsleeping

ExportLadoO quê
AddCreateCheck(id, fn(source, charId, coords) => boolean)ServidorRetorne false para não deixar corpo dormindo (um apartamento, uma área de evento); removido quando o recurso que o adicionou para.
PlayerLoaded()ClienteAcorda o personagem quando o modo de despertar é "export".
SetHidden(reason, hidden)ClienteEsconde todo corpo dormindo neste cliente enquanto houver algum motivo (interiores, shells).
SetCarryBlocked(reason, blocked)ClienteEsconde a opção de carregar enquanto houver algum motivo.

ai-appearance

Exports de cliente, tipados AiAppearanceClientExports; os scripts usam appearance da lib.

ExportO quê
ApplyAppearance(ped: number, appearance: unknown): booleanColoca uma aparência do ai-appearance em um ped do modelo dela.
GetPedAppearance(ped: number): unknownA aparência do jogador local, null para outros peds.

ai-radialmenu

Exports de cliente próprios (tipados AiRadialClientExports): AddItem(item) (onSelect é aceito como onPressed), RemoveItem(id, parent?), Refresh(). Os scripts usam radial da lib.

Ele faz provide das APIs de outras rodas:

  • qb-radialmenu: AddOption(data, id?) retorna o id, RemoveOption(id).
  • tgiann-radialmenu-target: AddMenuItem(item | items, parentId?), RemoveMenuItem(id, parentId?), ClearMenuItems(), RegisterSubMenu({ id, items }), RefreshMenu(), DisableMenu(state), IsMenuDisabled(), OpenMenu(), CloseMenu(), IsMenuOpen(), HasMenuItem(id), SetMenuItemHidden(id, state), IsMenuItemHidden(id), UpdateMenuItem(id, { label?, icon? }), ResetMenuItem(id).

ai-target

Responde à API de cliente do ox_target sob ai-target e ox_target: addSphereZone, addBoxZone, addPolyZone, removeZone, zoneExists, addModel, removeModel, addEntity, removeEntity, addLocalEntity, removeLocalEntity, addGlobalPed / Vehicle / Object / Player e seus removeGlobal*, disableTargeting, isActive. addGlobalOption não é oferecido (registra um aviso). Os scripts usam Points da lib, que escolhe prompt ou target pela configuração do dono.

ai-voice

Substitui o pma-voice 7.x (faz provide de pma-voice, mumble-voip, tokovoip, toko-voip, tokovoip_script).

  • Servidor, nomes do pma-voice: setPlayerRadio, setPlayerCall, getPlayersInRadioChannel / GetPlayersInRadioChannel, addChannelCheck, overrideRadioNameGetter, isValidPlayer.
  • Servidor, próprios: getBackend, setPlayerProximityMode(source, index), setPlayerRange(source, metres | null), getPlayerProximity(source), toggleMute(source, seconds?), addProximityCheck(fn(source, index, distance)) (false recusa), addPlayerRadioListen / removePlayerRadioListen / setPlayerRadioActive(source, channel), getPlayerRadioChannels(source) ({ active, channels }), addCallCheck(fn(source, callId)) (true permite), setPlayerCallSpeaker(source, on) / getPlayerCallSpeaker(source), setPlayerSubmix(source, name | null).
  • Cliente: os exports de cliente do pma-voice (setRadioChannel, setCallChannel, setRadioVolume, setCallVolume, setVoiceProperty, overrideProximityRange, toggleMutePlayer, toggleRadioAnim...) mais addRadioDisableBit / removeRadioDisableBit, registerCustomSubmix, setEffectSubmix; próprios addRadioChannel / removeRadioChannel / setActiveRadioChannel / getRadioChannels, setCallSpeaker / getCallSpeaker, setRadioAnimDisabled, createSubmix(name, spec) / getSubmix / editSubmix / listSubmixes, cycleProximity, getBackend, isRadioTalking.
  • Eventos locais: cliente pma-voice:setTalkingMode, pma-voice:radioActive, pma-voice:toggleRadioAnim; servidor pma-voice:playerMuted.

ai-weathersync

Exports sob ai-weathersync e qb-weathersync (todo o seu contrato): setWeather, setTime, setBlackout, setTimeFreeze, setDynamicWeather, nextWeatherStage, getWeatherState, getTime, getBlackoutState, getTimeFreezeState, getDynamicWeather. Os scripts usam GetWeather / SetWeather... do ai-core (world da lib), que funcionam com qualquer script de clima.

ai-chat

Substitui o recurso chat do FiveM.

  • Cliente: exports addMessage(message), addSuggestion(name, help, params); eventos chat:addMessage, chatMessage (author, color, text), chat:addSuggestion(s), chat:removeSuggestion, chat:addMode / chat:removeMode, chat:clear.
  • Servidor: exports addMessage(target, message), registerMessageHook(fn), registerMode(data); evento chatMessage (source, author, text) antes da entrega (cancele-o para descartar a mensagem).

ai-mysql

Substitui o oxmysql: exports sob ai-mysql e oxmysql: query, single, scalar, insert, update, prepare, rawExecute, transaction, startTransaction, store, isReady, awaitConnection, execute, fetch, cada um também como <name>_async / <name>Sync. Também os nomes do ghmattimysql (execute, scalar, transaction, store) e do mysql-async (mysql_execute, mysql_insert, mysql_fetch_all, mysql_fetch_scalar, mysql_transaction, mysql_store); eventos oxmysql:error, oxmysql:transaction-error. Veja Banco de dados.

Nesta página