Développeurs
Tout ce qu'il faut pour piloter la fumée depuis une autre ressource, brancher ton framework ou ton inventaire, et mettre la ressource à jour.
Exports serveur
| Export | Arguments | Retour |
|---|---|---|
IsSmoking(source) |
ID du joueur | true si ce joueur fume |
Stop(source) |
ID du joueur | true si sa fumée était allumée et vient d'être coupée |
GetSettings(source) |
ID du joueur | Copie de ses réglages, ou nil |
-- Couper la fumée d'un joueur depuis une autre ressource (cinématique, zone interdite...)
if exports.kp_planesmoke:IsSmoking(source) then
exports.kp_planesmoke:Stop(source)
end
L'état partagé
La fumée de chaque joueur vit dans son state bag kp_planesmoke, écrit uniquement par le serveur :
{
size = 0.6,
slots = {
{ pos = 'left', hex = '#2F80ED', r = 0.18, g = 0.5, b = 0.93, x = 0.0, y = 0.0, z = 0.0 },
{ pos = 'right', hex = '#E02020', r = 0.88, g = 0.13, b = 0.13, x = 0.0, y = 0.0, z = 0.0 },
},
}
nil quand la fumée est éteinte. Tu peux le lire depuis un client avec Player(serverId).state.kp_planesmoke, jamais l'écrire : le serveur ignorerait la valeur et chaque client la revérifie avant de l'afficher.
Les events
| Event | Sens | Rôle |
|---|---|---|
kp_planesmoke:toggle |
client vers serveur | Allume ou éteint, avec les réglages du joueur |
kp_planesmoke:update |
client vers serveur | Nouveaux réglages pendant que la fumée est allumée |
kp_planesmoke:stop |
client vers serveur | Arrêt automatique, n'agit que sur la fumée de l'émetteur |
kp_planesmoke:state |
serveur vers client | Réponse : allumé ou éteint, et le refus éventuel |
Pour un anticheat : un client ne peut demander que son propre état. Le serveur vérifie l'accès, la présence dans un avion, la place pilote et le modèle, borne la taille et les déplacements, et limite les appels à un toutes les 500 ms. Les tentatives refusées partent sur Config.Discord.Webhook si tu le remplis.
Brancher ton framework
bridge/framework/custom.lua est ouvert. Mets Config.Framework = 'custom' et remplis deux fonctions :
Frameworks.custom = {
resource = 'my_core', -- nom de ta ressource, ou nil
init = function() return true end,
getJob = function(src) -- nom du métier et grade, ou nil
local player = exports.my_core:GetPlayer(src)
return player and player.job, player and player.grade or 0
end,
getName = function(src) -- nom du personnage pour le log, ou ''
local player = exports.my_core:GetPlayer(src)
return player and player.name or ''
end,
}
Brancher ton inventaire
Copie bridge/inventory/ox_inventory.lua, renomme l'adaptateur, ajoute-le dans fxmanifest.lua et donne son nom à Config.Inventory. Le script n'utilise que exists, label, count et remove.
Mettre à jour
- Retélécharge la ressource depuis ton Keymaster.
- Garde de côté ton
config.lua, teslocales/, tonhtml/img/logo.pnget tes fichiers debridge/modifiés. - Remplace le dossier
kp_planesmoke, recopie tes fichiers par-dessus, puis compare tonconfig.luaavec le nouveau pour récupérer les options ajoutées. restart kp_planesmoke. Les réglages de tes joueurs sont gardés, ils sont enregistrés chez eux.