Object Spawner
POPULAR LINKS
- BUY IT! Purchase Object Spawner from BigDaddyScripts.com
- ACE PERMS How to use ACE permissions with Big Daddy Scripts
- MYSQL Database setup help
{:links-list}
This page covers the current project source and supplied resource configuration, whose manifest lists version 2.0.0+. It includes a searchable prop selector, favorites, saved groups, vehicle attachments, and Free Aim, Gizmo, and Keyboard placement modes.
INSTALLATION
- Extract the downloaded resource folder into your server's resources folder. Keep the name
BigDaddy-ObjectSpawner. - Add your product key from your account to
key1under[licensing]insettings.ini. - Configure
mysql_connection_stringinserver.cfgbefore starting this resource. The bundledbdsql.jsconnects directly to MySQL; saved groups use thebd_objectspawnertable. Import the suppliedCREATETABLE.sqlif the table does not already exist. - Configure access using the Permissions section below.
- Add
ensure BigDaddy-ObjectSpawnertoserver.cfg.
DO NOT RENAME THE FOLDER.
The resource loads files and calls events using the name
BigDaddy-ObjectSpawner.
{:is-danger}
Keep the bundled gizmo, nui, and stream folders and supporting files with the resource. Its prop selector and gizmo are included; it does not use BDMenu for this interface.
COMMANDS
| Command | Action |
|---|---|
/spawner or /spawner w |
Open the prop selector for world placement. |
/spawner v |
Open the selector for attachment to your current vehicle, or the closest vehicle within 10 metres if you are on foot. |
/spawner w <model> |
Start world placement of a model by its spawn name when allowAnyModel=true. Example: /spawner w prop_couch_lg_06. |
/spawner v <model> |
Start placement of a model on the selected vehicle when allowAnyModel=true. |
/objgroup <name> |
Set the group that newly placed objects will be saved to. Names can contain spaces. |
/objgroup |
Stop saving new placements to a group. |
/spawngroup <name> |
Load one of your previously saved groups. |
/editmode |
Toggle selection mode for editing your spawned objects. |
/deleter |
Delete your closest spawned object within 100 metres. |
/deleteradius |
Delete your spawned objects within 10 metres. |
/clearer |
Clear the closest spawned object within 100 metres, regardless of who spawned it. |
/clearradius |
Clear spawned objects within 10 metres, regardless of who spawned them. |
The delete/clear commands target objects marked by Object Spawner, not every map prop. Ownership for these client actions is based on the object's recorded spawning ped, so it is not permanent account ownership across sessions.
Use /objgroup <name> to select a save group before placing objects. Although the command handler accepts a third argument after the model, it does not set the active save group consistently; use the dedicated group command.
Player attachment (/spawner me) is not implemented as a working mode in this source; the command falls back to world placement.
SPAWNING AND PLACEMENT
- Run
/spawner wor/spawner v. - Search the categorized Prop Selector, choose a favorite, or use Spawn by Name to enter a model name.
- Position and rotate the preview. New world placements start in Free Aim; vehicle placements start in Gizmo.
- Press Enter for hard placement or Space for soft placement. Press Delete to abandon an unplaced preview.
Hard placement freezes the object in place. Soft placement leaves it unfrozen so its model's physics can apply. Vehicle placements attach the object to the vehicle. Model collision and physics can affect the result, and attached objects can be detached by the script when a vehicle tips or stops violently, including hard-placed objects.
Favorites are stored on the player's client using resource KVP storage. They are separate from database-backed saved groups.
Placement controls
These are the default keyboard controls used by the code. Game control bindings can affect the physical key used.
| Key | Action |
|---|---|
[ / ] |
Cycle between Free Aim, Gizmo, and Keyboard placement. |
| Enter / Numpad Enter | Hard placement. The focused Gizmo interface handles Enter. |
| Space | Soft placement. |
| Delete | Cancel an unplaced preview. |
| Page Down | Place the preview on the ground. |
Free Aim
Look and walk around to position the preview in front of the camera. Switch to Gizmo or Keyboard for precise adjustments.
Gizmo
| Key/control | Action |
|---|---|
| Mouse drag | Move or rotate using the visible gizmo handles. |
| W | Translation mode. |
| R | Rotation mode. |
| Left Alt | Release cursor focus to move the camera; press again to return to the gizmo. |
Keyboard
| Key | Action |
|---|---|
| Arrow keys | Move horizontally along the X/Y axes. |
| Numpad 8 / 5 | Move up / down. |
| Numpad 7 / 9 | Rotate around Z (yaw). |
| Numpad 4 / 6 | Rotate around Y (roll). |
| Numpad - / + | Rotate around X (pitch). |
| Hold Left Shift | Faster movement and rotation. |
| Hold Left Alt | Fine rotation adjustments. |
The bundled on-screen yaw hint says Numpad 7 / 8, but the C# handler uses Numpad 7 / 9. Numpad 8 controls height.
Editing existing objects
Run /editmode and stand within two metres of one of your spawned objects. The selected object is outlined. Press E to reposition it, or Delete to request deletion and confirm in the dialog. Press Backspace to leave selection mode, or toggle /editmode again.
Do not rely on Backspace to undo a placement already being edited: the placement cancellation/restore handlers are commented out in the current C# source, even though the interface can show a cancel-edits hint.
SAVED GROUPS AND RESTARTS
To build and reload a group:
- Run
/objgroup Roadblock(or another name). - Place objects with
/spawner wor/spawner v. Completed placements are saved while a group is active. - Run
/objgroupwith no name when finished. - Use
/spawngroup Roadblockor select the saved group in the prop selector to load it later.
World groups store object coordinates and rotations. Vehicle groups store attachment offsets and vehicle information; loading a vehicle group can spawn the saved vehicle with its objects. Keep world and vehicle objects in separate groups: the source checks the group's attachment type before adding objects. Group lookups use the player's license or Discord identifier.
Saved groups and automatic persistence are different. Group records remain in MySQL and can be loaded after a restart. Unsaved placements have no database-backed restoration. The readable client/server source does not implement automatic restoration of placed objects on restart; its persistence flag remains false. The supplied persistence setting does not establish a working automatic restore feature.
Clearing live objects does not reliably remove their saved group records. In particular, the radius commands only delete live entities. The edit-mode single-object deletion also has a mismatched database-delete event name in the current source, so a deleted object may return when its group is loaded again. Use the selector's group deletion action when you intend to remove a whole saved group.
CONFIGURATION
settings.ini
Section and setting names are case-insensitive. These are the supplied entries and their behavior in the inspected source. Restart the resource and reconnect as needed after changing startup permissions.
[licensing]
| Setting | Value | Description |
|---|---|---|
key1 |
Your product key | Enter your own key from your account. |
[settings]
| Setting | Supplied value | Description |
|---|---|---|
useAcePermissions |
false |
Enable the ACE startup check. The plural spelling is required. |
useBadgerPermissions |
false |
Legacy permission option; the Badger checking method is not connected to the current C# startup path. |
usePermissionsForClear |
false |
Present in the INI but not read by the current C# clear commands. It does not add a separate cleanup permission check. |
permissions |
command |
Used by the legacy permission-checking method, not the active startup ACE check. See AcePermission below. |
allowAnyModel |
true |
Allow a model argument in /spawner. Setting it to false opens the selector instead. The selector's Spawn by Name action is not gated by this setting. |
allowSavingGroups |
true |
Present in the INI but not read by the current C# group-saving path. Setting it to false does not disable those commands. |
requirePermsForPersisting |
true |
Present in the INI but not read by the current C# persistence path. It does not enable automatic restoration. |
DesyncKey |
Supplied with the resource | Internal synchronization setting. Keep the supplied value. |
The code also reads these settings, which are absent from the supplied INI:
| Setting | Fallback | Description |
|---|---|---|
AcePermission |
command |
ACE name checked at startup when useAcePermissions=true. |
Debug |
false |
Enable additional debug logging. Some messages are printed regardless. |
Permissions
To restrict normal access through the active startup check, add the following under [settings] in settings.ini:
useAcePermissions=true
AcePermission=objectspawner.use
Then grant that ACE to your chosen server group, for example in server.cfg:
add_ace group.admin objectspawner.use allow
Players must already belong to the chosen group. See the permissions guide for principal setup.
The current client stops initialization when this startup check denies access. The old useAcePermission spelling and changing permissions alone do not configure that check. Enabling only useBadgerPermissions does not restrict this startup path.
These settings should not be described as complete server-side authorization: the inspected database mutation handlers do not independently repeat the startup ACE check, and the clear commands have no separate permission check.
Objects.json
The active catalog is Objects.json. It contains an array of categories, each with a props array:
[
{
"categoryName": "Furniture",
"categoryDescription": "Indoor and outdoor furniture",
"props": [
{
"propName": "Large Couch",
"spawnCode": "prop_couch_lg_06"
}
]
}
]
| Field | Meaning |
|---|---|
categoryName |
Category heading in the selector. |
categoryDescription |
Description of the category. |
props |
Objects in that category. |
propName |
Friendly display name. |
spawnCode |
Actual model spawn name. The model must be available to the client. |
Keep valid JSON when adding or removing entries: use double quotes, commas between items, and no trailing commas. Restart the resource and reload the client interface after changes.