# SKIN SELECTOR // CYBERWARE HUD  (v10.1)

by **fausto200**

[English](#english) | [Español](#español)

---

<a name="english"></a>
# English

A cyberpunk-style skin selector for **GTA San Andreas** (MoonLoader + imgui).
Change your skin, spawn companions or enemies, pick weapons, strike poses and take photos from a single neon HUD.

## Features

- **SKINS** – lists every custom `.dff` skin found in `modloader/CustomSkins`, with portraits, favourites and search.
- **PEDS** – load any ped by ID (0-289), browse them all in pages, or type an ID. IDs that would crash the game are blocked automatically.
- **WEAPONS** – give yourself any weapon, choose the ammo, or remove all weapons.
- **STUDIO** – rotate the character (manual or automatic), play poses, hide the game HUD and radar for photos.
- **SETTINGS** – lock controls while the menu is open, re-apply your last skin on respawn / on game start, UI sound options.
- **Companion / Enemy NPCs** – spawn the selected skin as a friendly or hostile NPC (up to 20), armed with the weapon you picked.
- **UI sounds** – hover, select, slider and open/close sounds across the whole HUD.

## Requirements

- GTA San Andreas (1.0 US)
- [MoonLoader](https://blast.hk/moonloader/) (tested with v.027)
- The **imgui** library for MoonLoader (`moonloader/lib/imgui.lua` and its `.dll`)
- [Modloader](https://gtaforums.com/topic/669520-sa-mod-loader/) (only needed for custom skins)

## Installation

1. Copy `SkinSelector.lua` into your `moonloader` folder.
2. Create the folder `moonloader/resources/SkinSelector/` and copy `ui_select.mp3` into it.
3. Put your custom skins (`.dff` + `.txd`) in `modloader/CustomSkins`.
4. (Optional) Put portraits in `modloader/CustomSkins/Portraits` (see below).
5. Start the game.

## Controls

| Action | Key |
|---|---|
| Open / close the HUD | `SPACE + Q`  or  `F7` |
| Select an item | Click |
| Equip an item | Double click, or click then **EQUIP** |

`SPACE + Q` is ignored while you are typing in the search box.

## Custom skins

- The skin name must be **7 characters or fewer** (a game limit). Longer names appear as `NAME > 7` and can't be equipped.
- Click a skin to select it, double click (or press **EQUIP**) to wear it. The star button marks it as a favourite.
- Press **UPDATE** after adding new files.

## Portraits

Create `modloader/CustomSkins/Portraits` and save an image with the **same name** as the skin:

| Item | File |
|---|---|
| `NEOGIRL.dff` | `Portraits/NEOGIRL.png` |
| Ped ID 7 | `Portraits/PED_7.png` |
| Base CJ | `Portraits/CJ.png` |
| No portrait found | `portrait.png` (generic fallback) |

Formats: png, jpg, bmp, dds. Square images (256 or 512 px) work best. Transparent backgrounds get the holographic effect.

## UI sound

- `ui_select.mp3` is looked up in `moonloader/resources/SkinSelector/`, then `moonloader/resources/`, then `moonloader/`.
- In **SETTINGS → UI SOUND** you can turn the sounds off or change the volume. Both are saved.
- If the file is missing, the HUD works normally without sound and shows a notice in SETTINGS.

## Configuration file

Your choices are saved in `moonloader/config/skin_selector_cyber.json` (favourites, last skin, options, sound volume). Delete it to reset everything.

## Advanced

- **NPC slots:** custom-skin NPCs use special slots 3-6 so they don't collide with the player's slots (1 and 2). If another mod uses those slots, change `NPC_SLOT_INI` / `NPC_SLOT_FIN` at the top of the NPC section in `SkinSelector.lua`.
- **Alternative key:** change `TECLA_ALTERNATIVA` at the top of the script.
- **Log:** messages are written to `moonloader.log` prefixed with `[CyberHUD]`.

## Troubleshooting

- **No sound:** check that `ui_select.mp3` is in `moonloader/resources/SkinSelector/` and that the sound is enabled in SETTINGS. The log shows a message when the file isn't found.
- **A skin doesn't appear:** make sure the `.dff` and `.txd` have the same name and the name is 7 characters or fewer.
- **The HUD does not open:** make sure the imgui library is installed and check `moonloader.log` for errors.
- **Portrait doesn't show:** the file name must match the skin name exactly; press **UPDATE** to reload images.

## Credits

- Script and HUD: **fausto200**
- UI sound: "menu selection" from freesound community. Check the license of the original sound before redistributing it.

---

<a name="español"></a>
# Español

Selector de skins con estilo cyberpunk para **GTA San Andreas** (MoonLoader + imgui).
Cambia tu skin, crea compañeros o enemigos, elige armas, haz poses y toma fotos desde un único HUD de neón.

## Características

- **SKINS** – lista todas las skins `.dff` que haya en `modloader/CustomSkins`, con retratos, favoritas y buscador.
- **PEATONES** – carga cualquier peatón por ID (0-289), explóralos por páginas o escribe un ID. Los IDs que harían crashear el juego se bloquean automáticamente.
- **ARMAS** – dótate de cualquier arma, elige la munición o quita todas las armas.
- **ESTUDIO** – gira al personaje (manual o automático), usa poses, oculta el HUD y el radar del juego para tomar fotos.
- **AJUSTES** – bloquear controles con el menú abierto, reaplicar la última skin al reaparecer o al iniciar el juego, opciones de sonido.
- **NPC compañero / enemigo** – crea la skin seleccionada como NPC aliado u hostil (hasta 20), armado con el arma que elegiste.
- **Sonidos de interfaz** – sonidos al pasar el ratón, seleccionar, mover sliders y abrir/cerrar en todo el HUD.

## Requisitos

- GTA San Andreas (1.0 US)
- [MoonLoader](https://blast.hk/moonloader/) (probado con v.027)
- La librería **imgui** para MoonLoader (`moonloader/lib/imgui.lua` y su `.dll`)
- [Modloader](https://gtaforums.com/topic/669520-sa-mod-loader/) (solo para skins personalizadas)

## Instalación

1. Copia `SkinSelector.lua` en tu carpeta `moonloader`.
2. Crea la carpeta `moonloader/resources/SkinSelector/` y copia dentro `ui_select.mp3`.
3. Pon tus skins personalizadas (`.dff` + `.txd`) en `modloader/CustomSkins`.
4. (Opcional) Pon los retratos en `modloader/CustomSkins/Portraits` (ver más abajo).
5. Inicia el juego.

## Controles

| Acción | Tecla |
|---|---|
| Abrir / cerrar el HUD | `ESPACIO + Q`  o  `F7` |
| Seleccionar un elemento | Clic |
| Equipar un elemento | Doble clic, o clic y luego **EQUIPAR** |

`ESPACIO + Q` se ignora mientras escribes en el buscador.

## Skins personalizadas

- El nombre de la skin debe tener **7 caracteres o menos** (límite del juego). Los nombres más largos aparecen como `NOMBRE > 7` y no se pueden equipar.
- Clic para seleccionar una skin; doble clic (o **EQUIPAR**) para ponértela. El botón de la estrella la marca como favorita.
- Pulsa **ACTUALIZAR** después de añadir archivos nuevos.

## Retratos

Crea `modloader/CustomSkins/Portraits` y guarda una imagen con el **mismo nombre** que la skin:

| Elemento | Archivo |
|---|---|
| `NEOGIRL.dff` | `Portraits/NEOGIRL.png` |
| Peatón ID 7 | `Portraits/PED_7.png` |
| CJ base | `Portraits/CJ.png` |
| Sin retrato propio | `portrait.png` (genérico) |

Formatos: png, jpg, bmp, dds. Funcionan mejor las imágenes cuadradas (256 o 512 px). Con fondo transparente se ve el efecto holográfico.

## Sonido de interfaz

- `ui_select.mp3` se busca en `moonloader/resources/SkinSelector/`, luego en `moonloader/resources/` y por último en `moonloader/`.
- En **AJUSTES → SONIDO DE INTERFAZ** puedes desactivar los sonidos o cambiar el volumen. Ambos se guardan.
- Si falta el archivo, el HUD funciona con normalidad sin sonido y muestra un aviso en AJUSTES.

## Archivo de configuración

Tus elecciones se guardan en `moonloader/config/skin_selector_cyber.json` (favoritas, última skin, opciones y volumen del sonido). Bórralo para restablecer todo.

## Avanzado

- **Slots de NPC:** los NPC con skin personalizada usan los slots especiales 3-6 para no chocar con los del jugador (1 y 2). Si otro mod usa esos slots, cambia `NPC_SLOT_INI` / `NPC_SLOT_FIN` en la sección de NPC de `SkinSelector.lua`.
- **Tecla alternativa:** cambia `TECLA_ALTERNATIVA` al principio del script.
- **Registro:** los mensajes se escriben en `moonloader.log` con el prefijo `[CyberHUD]`.

## Solución de problemas

- **No suena nada:** comprueba que `ui_select.mp3` esté en `moonloader/resources/SkinSelector/` y que el sonido esté activado en AJUSTES. El registro muestra un mensaje si no encuentra el archivo.
- **Una skin no aparece:** asegúrate de que el `.dff` y el `.txd` tengan el mismo nombre y que el nombre tenga 7 caracteres o menos.
- **El HUD no se abre:** comprueba que la librería imgui esté instalada y revisa `moonloader.log` por si hay errores.
- **El retrato no aparece:** el nombre del archivo debe coincidir exactamente con el de la skin; pulsa **ACTUALIZAR** para recargar las imágenes.

## Créditos

- Script y HUD: **fausto200**
- Sonido de interfaz: «menu selection» de freesound community. Revisa la licencia del sonido original antes de redistribuirlo.
