Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Fight For Style] Ajout d'un Show Room et la création de vetement sous forme d'item. #128

Open
wants to merge 1,286 commits into
base: oss
Choose a base branch
from

Conversation

DreamXZE
Copy link
Contributor

@DreamXZE DreamXZE commented Mar 1, 2023

Coucou, ce PR fait suite à l'issue #73

Voici ce que cela la feature ajoute:

  • Show room disponible pour FFS en service au Ponsonbys du centre de l'ile
    • Spawn d'un ped féminin/masculin afin de composer des tenues
    • Toutes les tenues/accessoire sont disponible (possible d'ajoute un filtre au besoin)
      • Seul les masques/bras/pantalon/chaussure/accessoire/undershoort/haut sont disponible en Component
    • Une fois la tenue créer, une sélection des composant peut être fait pour crafter l'item.
    • Le craft d'item peut être restreint par une permission entreprise
    • Le coup de l'item est de 20 fibre naturel par composant sélectionner (si la tenue comporte 1 haut et un pantalon, le craft sera de 40 fibre)
    • Le bouton de craft peut être cliquer plusieurs fois d'affiler afin d'en craft plusieurs d'affiler sans que cela ferme le menu
    • Deux items sont créer, les tenues custom pour homme et pour femme. Ces derniers dépendent du ped utilisé.
    • Les tenues femme sont uniquement utilisable par les femmes et vis versa
    • Un temps de chargement est déclencher en utilisant l'item pour se changer
    • Les items stack par metadata. Toutes les tenues d'un même type stack donc ensemble
  • Lors de l’utilisation d'une tenue, seul les composant associé sont changer. On peut par exemple associer seulement un pul à la tenue, ou bien un masque et un pantalon.. etc
  • Pas d'option de dé-craft, cela fera du RP avec Bluebird

J'ai fait également quelque amélioration pour éviter de dupliquer le code, que je vais commenter par la suite.

Je reste dispo pour toute modification que vous pensez nécéssaire 🙏 En espérant que la feature vous plaira!

Copy link
Contributor Author

@DreamXZE DreamXZE left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Deux petits comment sur des changements plus ou moins relatif au PR

public applyComponent(component: Component, outfitItem: OutfitItem) {
public applyComponentToPed(ped_id: number, component: Component, outfitItem: OutfitItem) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quelque amélioration des fonctions de base afin de pouvoir les utilisés sur un PED autre que le ped joueur

Comment on lines 111 to 126
ped.target.options
ped.target.options,
ped.target.distance || undefined
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Petit fix pour la function createForPed qui ne transferai pas correctement ped.target.distance à createForBoxZone. Ce qui faisant qu'en utilisant createForPed avec une distance custom, la distance par defaut (2.5) était utilisé

@DreamXZE
Copy link
Contributor Author

DreamXZE commented Mar 2, 2023

Voici un lien avec la démo final (feature complète): https://drive.google.com/file/d/1JO_VpWme5-k-lNb0uHTv11rpzesVL3PO/view

@DreamXZE-GH
Copy link

Je viens de push les changement demander, voici la vidéo qui va avec:
https://drive.google.com/file/d/1c-9EWCBFAL25oP_mIH0Xvk42neyI_oNz/view

@DreamXZE-GH
Copy link

Le dernier commit fix les soucis avec les actions github (eslint)

@DreamXZE
Copy link
Contributor Author

DreamXZE commented Mar 26, 2023

Branch rebased, conflict fixed.
Action failed are from the base branch

Copy link
Member

@NariieL NariieL left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved

@DreamXZE-GH
Copy link

DreamXZE-GH commented Mar 27, 2023

Just to mention, I will open another PR tonight to prepare potential clothes exclusion from the Show Room (in case there is some police/undesirable hat/clothes in the remaining categories), so I will just need to add them to the list based on report.
I did not go through all the list by myself yet, but as the crafting can be limited with FFS's rank configuration, it should not be a problem

@@ -0,0 +1,434 @@
import { Once, OnceStep, OnEvent, OnNuiEvent } from '../../../core/decorators/event';
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mettre .provider dans le nom du fichier


private readonly CAMERA_POSITION: Vector3 = [-166.93, -300.1, 40.13];

private ped_id = null;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

camelCase


private ped_id = null;

private outfit_type = null;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

camelCase

(et les autres en dessous aussi)


private readonly CAMERA_TARGET: Vector3 = [-168.39, -298.7, 39.83];

private readonly CAMERA_POSITION: Vector3 = [-166.93, -300.1, 40.13];
Copy link
Contributor

@joelwurtz joelwurtz Mar 27, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tu peux les mettre en constantes en haut


private outfit_type = null;

private components_to_craft: object = {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

type: Record<Component, OutfitItem>

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Plus besoin, la propriété a été retirée

});

return Ok(true);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Revoir tout le fonctionnement, pas besoin d'état dans ce provider, tout peur être stocké coté NUI dans les composants via un useState

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'ai supprimer quasiment tout sauf le pedId sur le provider

maxDrawables: number;
}[];
};
can_craft: boolean;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

camelCase 🙏

export const FightForStyleShowRoomMenu: FunctionComponent<FightForStyleShowRoomComponent> = ({ data }) => {
const banner = 'https://nui-img/soz/menu_job_ffs';
const [currentDrawable, setCurrentDrawable] = useState<number>(0);
const [currentCraft, setcurrentCraft] = useState<{ drawables: object; props: object }>();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

attention au nom setCurrentCraft

private inventoryManager: InventoryManager;

public async useOutFit(source: number, item: CommonItem, inventoryItem: InventoryItem) {
const player = this.playerService.getPlayer(source);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

faire un check si player null (ca reste une possibilité - rare)

async onShowRoomCrafting(source: number, outfit: object, outfit_type: string) {
const player = this.qbcore.getPlayer(source);

let cost_mult = 0;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

camelCase

@@ -159,6 +159,10 @@ export type InventoryItemMetadata = {
tier?: number;
crafted?: boolean;
id?: string;
// FFS Showroom
drowables?: object;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

drawables ?

@joelwurtz
Copy link
Contributor

Pour la liste des vetements il faudrait faire une liste qu'on autorise et pas en mode exclusion, éviter les problèmes a chaque nouveau dlc.

@DreamXZE
Copy link
Contributor Author

Fix ce qui a été demander.
Le dernier commit retire les textures vides via la gestion dynamique du nombre maximum de texture.

Il se fait tard, je m'occuperai demain du système d'inclusion ✅

@DreamXZE
Copy link
Contributor Author

DreamXZE commented Mar 30, 2023

Progress du filtrage:

Components:
Masque: Homme ✔️ Femme ✔️
Torse: Homme ✔️ Femme ✔️
Pantalon: Homme ✔️ Femme ✔️
Sac: Homme ✔️ Femme ✔️
Chaussure: Homme ✔️ Femme ✔️
Accessoire: Homme ✔️ Femme ✔️
Undershirt: Homme ✔️ Femme ✔️
Haut: Homme ✔️ Femme ✔️

Props:
Chapeau: Homme ✔️ Femme ✔️
Lunettes: Homme ✔️ Femme ✔️
Accessoires oreilles: Homme ✔️ Femme ✔️
Bras gauche: Homme ✔️ Femme ✔️
Bras droit: Homme ✔️ Femme ✔️

Je vais mettre à jour ce commentaire avec ma progression, et j'en posterai un autre quand tout sera dans le code et également pour dire ce qui a été retiré. J'inclurai ma doc et tout ce qu'il faut pour le modifier dans le future au besoin. Je pense que cela sera fini en fin de semaine ✔️

Résumé de ce qui est filtré:
Masque: Masque à gaz/Masque avec radio/Emplacement vide
Torse: Main coupée
Pantalon: Damier ou vide
Sac: Parachute ou vide
Chaussure: Damier ou vide
Accessoire: Plaque LSPD/BCSO/FBI/Paramedic, tube, sacoche/radio
Undershirt: Damier, Radio/Hostler, GPB, Armure, Tube de respiration
Haut: Damier, T shirt du Zevent, Tenue LSPD/BSCO/Stonk/LSCS, Armure, Vide, GPB

Chapeau: Damier, vide, casque d'avion de chasse, Casquette securoserv, casque avec douille, lunette infrarouge, casquette paramedit, casque de demineur, casque de pompier, casquette de céréminie (FDO), chapeau FDO/service publique
Lunette: Damier, vide, masque de plongéen lunette trop grande (27)
Oreille: Vide
Bras gauche: Damier
Bras droit: Damier

@DreamXZE
Copy link
Contributor Author

DreamXZE commented Apr 5, 2023

Tri terminé, jolie GDOC de 4074 ligne.
Je reprend le dev à partir de demain ✔️

@DreamXZE
Copy link
Contributor Author

DreamXZE commented Apr 7, 2023

Changement effectué! Tout est bon pour la re-review.

Ici les changements apportées:

  • Changement de l'autorisation de craft pour donner l'accès au ShowRoom même hors service. Il faut maintenant être en service ET avoir l'autorisation dans les paramètres de grade pour crafter.
  • Ajout d'une liste de permission sous forme de CSV.
    • Le format est simple, une ligne par Drawable, avec les Texture.
    • UseDrawable: Si le drawable doit être dans le ShowRoom: True/False
    • Texture{X}: Si la texture doit être utiliser dans le ShowRoom: True/False => Si le Drawable n'a pas de texture, laissé vide
    • Free: Si le Drawable est gratuit (par exemple Drawable vide ou Torse sans gant)
    • Note: Juste pour ajouter une note.
    • Ce fichier est facilement importer sous G-sheet pour être modifier (exemple: https://docs.google.com/spreadsheets/d/1_HEm9vTAu65z9V8Oko23JlQEzEsaTVxfevVBO9_yh6U/view ) - Document fait à la main par mes soins
    • Un script pour convertir le fichier CSV en fichier TSX directement utilisable par le code.
    • Ce fichier contient deux Exportable, un Object contenant les Drawable gratuit, un autre comprenant les Drawable et Texture autoriser (les UseDrawable: False et Texture{X}: False ne sont pas présent dans ce fichier!)
    • Maintient facile dans le temps.
  • Correction des tenues par défaut (pas présent pour le ped femme sur la vidéo, mais fix dans le dernier commit), réfactor de certain menu, impossibilité de Fix des Drawable pas présent dans les listes

Voici une petit vidéo avec les changements: https://drive.google.com/file/d/14u1zpjP9bY5Jf2oeVi5drhT6Avmg_lnA/view

joelwurtz and others added 21 commits December 6, 2023 22:36
…elay-per-player

Revert to gunshot alert per player
…h-menu

Prevent use of vehicle menu when in coma
…not-visible

Regularly freeze payer ped when coma to try to avoid desync
…itoring

Fix monitoring import for hunting no spawn
…-alert

Send police alert for drug sell at begin/middle of animation
feat(housing): fixing v_studio_lo portals

feat(housing): add new housing from Oneiluj new housing batch
@DreamXZE
Copy link
Contributor Author

Bonjour.

J'ai pour projet de reprendre cette PR, si elle intéresse toujours. Mais vu le taff qu'il y a à faire au niveau du rebase, je voulais m'assurer que cela intéressait toujours dans un premier temps?

Merci bien 🙏

@NariieL
Copy link
Member

NariieL commented Feb 11, 2024

Oui tu peux !

@DreamXZE
Copy link
Contributor Author

Parfait, j'essaye d'avoir le rebase fait d'ici deux semaines

@DreamXZE
Copy link
Contributor Author

La PR a totalement été rebase (enfin, je suis repartie de 0 et j'ai tout réintégré dans le code mise à jour).
Tout est toujours fonctionnel 👌

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Fight For Style] Ajout d'un Show Room et la création de vetement sous forme d'item