Exports
Intégrez Perfect Rentals avec vos autres scripts via les exports.
Server-side
-- Vérifie si un joueur a une location active
-- Retourne : bool, contract|nil
local hasRental, contract = exports['perfect_rentals']:HasActiveRental(source)
-- Récupère le contrat actif du joueur
-- Retourne : contract|nil
local contract = exports['perfect_rentals']:GetActiveContract(source)
-- Force la restitution d'un contrat par ID
-- Retourne : bool (succès)
exports['perfect_rentals']:ForceReturn(contractId)
Client-side
-- Ouvre l'UI de location pour une agence spécifique
exports['perfect_rentals']:OpenRentalUI(locationId)
Objet contrat retourné
Les exports qui retournent un contrat fournissent cet objet :
| Champ | Type | Description |
|---|---|---|
id | int | ID unique du contrat en base. |
contract_num | string | Numéro de contrat (ex : PR-2501-0042). |
identifier | string | Identifiant du joueur (license/citizenid). |
player_name | string | Nom du joueur. |
vehicle_model | string | Modèle du véhicule loué. |
plate | string | Plaque d'immatriculation. |
token | string | Token unique (64 hex). |
start_ts | bigint | Timestamp début (ms). |
end_ts | bigint | Timestamp fin (ms). |
price_total | int | Prix total (hors caution). |
deposit | int | Montant de la caution. |
insurance | string | none, standard ou premium. |
fuel_policy | string | full_to_full ou flat_rate. |
status | string | active, returned, forced, expired. |
Commandes
| Commande | Accès | Description |
|---|---|---|
/location | Tous | Ouvre le menu de location active (temps restant, prolongation, restitution). |
/rentaladmin | Admin | Ouvre le panel d'administration (véhicules, agences, contrats). |
Webhooks Discord
Lorsque activé dans config.lua, le script envoie des notifications automatiques vers votre salon Discord :
Nouvelle location
Joueur, véhicule, plaque, montant, agence.
Restitution
Joueur, véhicule, plaque, pénalités, remboursement caution.
Prolongation
Joueur, nouvelle durée, coût supplémentaire.
Actions admin
Forcer retour, remboursement, ajout/suppression véhicule ou agence.
Config.Webhook = {
enabled = true,
url = 'https://discord.com/api/webhooks/VOTRE_WEBHOOK_ICI',
botName = 'Perfect Rentals',
color = 3447003,
}
Sécurité
Perfect Rentals intègre plusieurs couches de protection contre les exploits et la triche.
Calculs 100% serveur
Prix, pénalités, durées, cautions — tout est calculé et validé exclusivement côté serveur. Aucune donnée NUI n'est trusted.
Token unique
Chaque contrat a un token de 64 caractères hex unique. Empêche le spoofing et la manipulation de contrats.
Vérification identité
Chaque action (louer, rendre, prolonger) vérifie l'identité du joueur côté serveur via le framework.
Rate-limiting
Cooldowns serveur sur les actions sensibles (location, restitution, prolongation) — configurable.
Anti-duplication
Impossible de spawn si le contrat est invalide, expiré, déjà spawné, ou si le joueur a déjà un contrat actif.
Plaque unique
Chaque plaque est vérifiée en base de données (50 tentatives max) pour garantir l'unicité.
Validation complète
Durées, assurances, politiques carburant — tout est revalidé côté serveur même si envoyé depuis le NUI.
Expiration auto
Les contrats expirés depuis trop longtemps sont automatiquement clos par le serveur (caution conservée).
Schéma de base
5 tables créées par install.sql :
| Table | Description |
|---|---|
rentals_vehicles | Catalogue des véhicules (modèle, label, catégorie, stats, prix, stock, image). |
rentals_locations | Points de location (coords PNJ, spawns, retour, showroom, blip, ped). |
rentals_location_vehicles | Véhicules assignés par agence avec surcharges prix/caution/stock. |
rentals_contracts | Contrats actifs (joueur, véhicule, plaque, token, dates, prix, statut). |
rentals_history | Historique (scan, pénalités, remboursement, date de restitution). |
Licence
Usage personnel / serveur uniquement. Ne pas redistribuer, revendre ou partager ce script. Toute violation sera sanctionnée.
Pour toute question, rejoignez le Discord Spectre Script.