v1.0.0

IntactRP
Core

Framework do zarządzania graczami dla FiveM — zapisywanie pozycji, ubrań, metadanych (job, grade, group), system postaci i sesji graczy.

👤

Zarządzanie postaciami

Multi-character z DB, tworzenie, usuwanie, wybór postaci

💾

Zapisywanie

Auto-save pozycji, skina, job, accounts co 5 min

Komendy admina

setjob, setgroup, giveitem, tp, kick, i więcej

🎒

ox_inventory

Full bridge — konta, grupy, licencje, inventory

💡 Wymagania
  • oxmysql — baza danych MySQL/MariaDB
  • ox_lib — callbacki, UI, utility
  • FiveM server build 6116+ z OneSync

Architektura

ZasóbOpis
intactrp_coreGłówny framework — sesje, zapis, komendy
intactrp_changerskinAplikowanie skina na ped
intactrp_skinmenuNUI kreator wyglądu postaci
intactrp_charactersWybór i tworzenie postaci
ox_inventory (bridge)Integracja ekwipunku z core

Struktura plików

intactrp_core/
├── fxmanifest.lua
├── shared/
│   ├── config.lua          -- Konfiguracja globalna
│   └── util.lua            -- Funkcje pomocnicze
├── client/
│   ├── main.lua            -- Stan gracza, callbacki
│   └── spawn.lua           -- Spawn, modele, freeze
├── server/
│   ├── main.lua            -- Sesje, auto-save, exporty
│   ├── player.lua          -- Load/Save/SetPlayerData
│   ├── character_loader.lua -- CRUD postaci z DB
│   ├── character_saver.lua  -- Zapis pozycji, skina, job
│   └── commands.lua        -- Komendy admina
└── sql/
    └── schema.sql          -- Schemat tabeli users

Kolejność startu

⚠️ Ważne
Kolejność ensure w server.cfg ma znaczenie!
ensure oxmysql
ensure ox_lib
ensure intactrp_core
ensure intactrp_changerskin
ensure intactrp_characters
ensure intactrp_skinmenu
ensure ox_inventory

Dodaj do server.cfg:

set inventory:framework "intact"

Flow gracza

  1. Gracz łączy się → playerJoined tworzy sesję
  2. Wybiera postać → SelectCharacter ładuje dane z DB
  3. LoadPlayer wypełnia sesję + triggeruje intactrp:characterLoaded
  4. ox_inventory ładuje ekwipunek na characterLoaded
  5. Auto-save co 5 min zapisuje pozycję, skina, job, accounts
  6. Gracz wychodzi → playerDropped zapisuje i czyści sesję

Bezpieczeństwo

🛡️ Nigdy nie ufaj klientowi
Wszystkie istotne operacje (walidacja, płatności, distance check) są wykonywane po stronie serwera. Callbacki mają rate-limiting.
  • Wszystkie callbacki serwerowe walidują source
  • Rate-limiting na create/delete/select character
  • Walidacja nazw, slotów, kwot po stronie serwera
  • Group hierarchy — nie można nadać grupy wyższej niż własna