> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dietrich-development.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Prop placement system with persistent storage and client-side streaming for RedM servers

A prop placement system that allows players to place persistent, client-only props using inventory items. Features include preview placement with gizmos, owner-only removal, and efficient streaming based on player distance.

<Info>
  This script provides prop placement with persistent storage, client-side streaming for performance, and integration with popular placement gizmos.
</Info>

## Features

<Columns cols={2}>
  <Card title="Persistent props" icon="database">
    Props are saved to MySQL and automatically restored on resource start, so placements persist across server restarts.
  </Card>

  <Card title="Client-side streaming" icon="network-wired">
    Non-networked entities spawn and despawn per player within a configurable radius for optimal performance.
  </Card>

  <Card title="Owner-only removal" icon="user-lock">
    Toggleable system where only prop owners can remove their placements and receive the item back.
  </Card>

  <Card title="Placement limits" icon="chart-bar">
    Configurable limits per item and a global maximum per player to prevent abuse and maintain server performance.
  </Card>

  <Card title="Advanced placement UX" icon="hand-pointer">
    Uses gs\_gizmo for intuitive placement or falls back to a translucent ghost preview with rotation controls.
  </Card>

  <Card title="Framework integration" icon="gears">
    Compatible with VORP Core and RSG Core frameworks with modular framework bridge support.
  </Card>
</Columns>

## Usage

### Placing props

<Steps>
  <Step title="Use item">
    Use the configured inventory item from your inventory
  </Step>

  <Step title="Placement mode">
    Inventory closes and the placement gizmo opens (or a translucent ghost appears)
  </Step>

  <Step title="Position prop">
    Move and rotate the prop to the desired position using the controls
  </Step>

  <Step title="Confirm placement">
    Confirm placement to save and spawn the prop client-side
  </Step>
</Steps>

### Removing props

<Steps>
  <Step title="Approach prop">
    Stand near the prop you want to remove (within the configured radius)
  </Step>

  <Step title="Use command">
    Run `/pickupprop` (or your configured removal command)
  </Step>

  <Step title="Receive item">
    The prop is removed and the original item is returned to your inventory
  </Step>
</Steps>

### Placement controls

<AccordionGroup>
  <Accordion title="Gizmo controls (gs_gizmo)">
    When using gs\_gizmo, follow the on-screen prompts for intuitive placement controls.
  </Accordion>

  <Accordion title="Fallback controls">
    * **Move**: Aim the camera to move the ghost prop
    * **Rotate**: Use Q/E keys to rotate the prop
    * **Confirm**: Left mouse button to place
    * **Cancel**: Right mouse button to cancel placement
  </Accordion>
</AccordionGroup>

## Credits

* **Placement gizmo integration**: [gs\_gizmo](https://github.com/GlitchOo/gs_gizmo) by GlitchOo
* **Framework bridge**: Modular design for easy framework integration
* **Performance optimization**: Client-side streaming and efficient entity management

## Next steps

<Columns cols={2}>
  <Card title="Setup" icon="screwdriver-wrench" href="/scripts/prop-placer/setup">
    Installation, dependencies, streaming, limits, and the database schema.
  </Card>

  <Card title="Docs home" icon="book-open" href="/">
    Installation basics and links to every script.
  </Card>
</Columns>
