Customization
Almost everything is in one short file. The rest of the Lua is left open too, so you can change behaviour itself if you need to.
Which file decides what
Section titled “Which file decides what”| File or folder | What it decides | Open? |
|---|---|---|
config.lua | Framework, language, menu key and command, the list of birds | Open |
locales/*.lua | The notification texts, one file per language | Open |
client/utils.lua | How a notification is shown, per framework | Open |
client/client.lua | The menu key, the /parrot command and what each menu button does | Open |
client/bird_management.lua | How the bird flies in, lands, moves, follows and leaves | Open |
server/server.lua | Registers every bird as a usable item and keeps other players in sync | Open |
html/ | The Bird Companion menu: index.html, style.css, script.js, and its icons in html/img/ | Plain files |
stream/ | The nine custom bird models | Assets |
flight.meta | The ped data for the nine custom birds | Data |
inventory_images/ | The fourteen item icons | Assets |
readme.md | Ready-made item lines for ox_inventory, QBCore and ESX | Reference |
locales/main.lua is the only escrowed Lua file.
General settings — config.lua
Section titled “General settings — config.lua”| Option | What it does | Default |
|---|---|---|
Config.Framework | esx, qb-core or qbox. Decides how items are registered and notifications shown | esx |
Config.Locale | Language for notifications: en, es, de, fr, it, pl, pt, ru, tr | en |
Config.MenuKey | Game control index that opens the menu. 303 is U | 303 |
Config.OpenMenuCommand | Chat command that opens the menu | parrot |
Config.NoActiveBirdNotification | Show a message when someone tries to open the menu without a bird out | false |
Config.MenuKey is a FiveM control number, not a letter. The list of numbers is on the FiveM controls reference page. Because it is read directly, players cannot rebind it in their own settings; the command is always there as an alternative.
The birds — Config.BirdItems
Section titled “The birds — Config.BirdItems”A list of item name → ped model. Every entry becomes a usable item on start.
| Item | Model |
|---|---|
crow | a_c_crow |
pigeon | a_c_pigeon |
seagull | a_c_seagull |
cormorant | a_c_cormorant |
chickenhawk | a_c_chickenhawk |
macaw | Macaw |
parrot | Parrot |
falcon | Falcon |
vulture | Vulture |
eagle | Eagle |
owl | Owl |
hornbill | Hornbill |
sparrow | Sparrow |
warbler | Warbler |
Adding a bird
Section titled “Adding a bird”- Add a line to
Config.BirdItemswith your new item name and the ped model it should spawn. - Add the item to your inventory the same way as the others (see Installation) and give it an icon.
- A base-game bird (any
a_c_…bird model) needs nothing else. - A custom bird needs its model files in
stream/and its own entry inflight.meta, next to the nine that are there. Without theflight.metaentry the model loads but does not behave like a bird. refresh, thenrestart mic_parrots.
Removing a bird
Section titled “Removing a bird”Delete its line from Config.BirdItems. The item stops doing anything; remove it from your inventory too so nobody is left holding a dead item.
The menu — html/
Section titled “The menu — html/”The menu labels (Bird Companion, Shoulder, Head, Dismiss, Follow, Close) are written in html/index.html, not in the locale files. Translate or rename them there. Colours and layout are in html/style.css, and the button icons are the PNGs in html/img/.
html/index.html also holds two buttons that are commented out, Dance and Sing. They have no action behind them in the Lua, so leave them commented.
Esc or the Close button shuts the menu.
Languages
Section titled “Languages”Nine ship, one file each in locales/: en, es, de, fr, it, pl, pt, ru, tr. Pick one with Config.Locale.
Each file holds six lines: no permission, already have a bird, no bird on your shoulder, bird already on your shoulder, bird already on your head, and you need an active bird to open the menu.
To add a language: copy locales/en.lua to a new file (for example locales/nl.lua), change the language key at the top from en to nl, translate the six texts, and add the new file to both the client_scripts and server_scripts lists in fxmanifest.lua. Then set Config.Locale to nl, refresh and restart.
Notifications
Section titled “Notifications”client/utils.lua sends every notification: ESX.ShowNotification on ESX, QBCore.Functions.Notify on QBCore, the QBox notify export on QBox, and the plain GTA feed for anything else. Replace the body of that one function to route messages to your own notify resource.
Commands
Section titled “Commands”| Command or key | What it does | Set in |
|---|---|---|
/parrot | Opens the Bird Companion menu when you have a bird out | Config.OpenMenuCommand |
| U | Same as the command | Config.MenuKey |