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 commit 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 DreamXZE force-pushed the feat/ffs-showroom branch from f815f8b to 5a46d12 Compare March 14, 2023 00:24
@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 DreamXZE force-pushed the feat/ffs-showroom branch from 2c1e271 to 5b6ca16 Compare April 7, 2023 04:00
@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

@@ -2817,6 +2817,30 @@ QBShared.Items = {
['combinable'] = nil,
['description'] = 'L\'outil parfait pour faire infecter un ordinateur'
},
['ffs_crafted_outfit_m'] = {
Copy link
Contributor

Choose a reason for hiding this comment

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

il n'y a pas les nouvelles images ? on peut les mettre dans le dossier soz-core/public/images/items en png

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Pas de nouvelle image à ce moment, je suis pas très bon avec Mid Journey, mais je peux essayer ça

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Image ajouté
image

@@ -26,6 +26,7 @@
"chokidar": "^3.5.3",
"concurrently": "^7.2.2",
"css-loader": "^6.7.1",
"csvtojson": "^2.0.10",
Copy link
Contributor

Choose a reason for hiding this comment

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

j'ai vu le csv plus bas, pas sur que ce soit le meilleur move, on peut pas avoir directement le json ? quitte a avoir l'outil a coté pour transformé tout cela ?

Copy link
Contributor Author

@DreamXZE DreamXZE Apr 9, 2023

Choose a reason for hiding this comment

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

Hum, c'est possible oui. J'ai tout rajouté dedans pour éviter que ce soit perdu dans le temps. Au besoin, je peux rajouter un commentaire dans le script de conversion.

Du coup, le CSV en soit peut être retirer du repo, par contre tu penses quoi de garder le script de conversion?
Il faudrait aussi rajouter le CSV dans un document interne, pour éviter d'avoir à le refaire encore une fois si besoin de l'éditer.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Dans l'idée, avoir le CSV dans le repos permet à ceux qui utilise l'OSS d'avoir la base du travail avec le bon format. Sans ça, il ne pourront pas faire de modif sans reverse le script de conversion. Du coup c'est un peu un choix à faire.

Je te laisse me dire ce que tu préfère.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Un JSON directement me semble bien trop complexe, chiant à éditer car si on veut le changer, il faut le convertir dans un sens en CSV pour l'édit PUIS le reconvertir en JSON par la suite, vu le nombre de data.

Copy link
Contributor

Choose a reason for hiding this comment

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

En fait je vois que c'est en dev est deja transformé plus bas avec le fichier conversion.js on peut rajouter la commande dans le package.json ?

On pourrait aussi avoir le fichier autre part que dans src non ? (Genre un dossier data a la racine du core ?)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

En fait je vois que c'est en dev est deja transformé plus bas avec le fichier conversion.js on peut rajouter la commande dans le package.json ?

On pourrait aussi avoir le fichier autre part que dans src non ? (Genre un dossier data a la racine du core ?)

Je vois ce que tu veux dire, je m'en occupe de suite 🙏

@DreamXZE DreamXZE force-pushed the feat/ffs-showroom branch from 4886432 to bb46304 Compare April 9, 2023 22:27
@DreamXZE
Copy link
Contributor Author

DreamXZE commented Apr 9, 2023

Changement effectuer, ajout d'une commande dans le package.json, modification de l'emplacement du script et du fichier CSV dans un dossier data 🙏 En esperant avoir bien compris ta demande

Pour les images, j'ai fait les demandes sur le discord Midjourney, elles pourront au besoin être ajouter plus tard ✔️

J'ai également rebase à nouveau pour régler les conflits

@DreamXZE DreamXZE requested a review from joelwurtz April 9, 2023 22:28
@DreamXZE-GH
Copy link

Je rajoute les images dans la nuit, on a pu m'en générer! Et j'ajouterai le nom discord de la personne directement dans l'objet. Je rajouterai un commentaire quand ce sera fait

@DreamXZE
Copy link
Contributor Author

Ca devrait être bon pour une re-review. Tout ce qui a été demandé a été ajouter/modifier 🙏

@DreamXZE DreamXZE force-pushed the feat/ffs-showroom branch from 136d789 to 922ca8a Compare April 23, 2023 13:28
@DreamXZE
Copy link
Contributor Author

Rebase et squash les changement demander en un commit (le deuxième)

@DreamXZE DreamXZE force-pushed the feat/ffs-showroom branch from 922ca8a to bb01d57 Compare April 24, 2023 00:42
@DreamXZE-GH
Copy link

Rebase fait à nouveau ce matin après les ajout de la nuit 🏁

@DreamXZE DreamXZE closed this May 9, 2023
@DreamXZE DreamXZE force-pushed the feat/ffs-showroom branch from bb01d57 to a530fe3 Compare May 9, 2023 13:45
@DreamXZE-GH
Copy link

Heu.. erreur de manip. Je push ça à nouveau rapidement

@DreamXZE DreamXZE reopened this May 9, 2023
@DreamXZE
Copy link
Contributor Author

DreamXZE commented May 9, 2023

C'est bon, réouvert avec rebase 🙏

@DreamXZE
Copy link
Contributor Author

DreamXZE commented Jun 7, 2023

Je vais rebase d'ici ce week end avec les gros changement qu'il y a eu et fix au besoin certaine partie

@DreamXZE DreamXZE force-pushed the feat/ffs-showroom branch from b40036d to 6146179 Compare June 11, 2023 19:09
@DreamXZE
Copy link
Contributor Author

DreamXZE commented Jun 11, 2023

Rebase à ce jour, pas de conflit.

@DreamXZE
Copy link
Contributor Author

Le fail des test auto ne viennent pas de la PR, du coup toujours good à rereview

@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 DreamXZE force-pushed the feat/ffs-showroom branch 2 times, most recently from ddc08cd to 8bfc186 Compare February 22, 2024 18:04
@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
4 participants