From 7604e67b36fbc5978ca833e058d734d7cd6bbc79 Mon Sep 17 00:00:00 2001 From: Pim-612 Date: Wed, 27 Nov 2024 16:24:12 +0000 Subject: [PATCH 1/3] =?UTF-8?q?Facilitation=20du=20restock=20des=20v=C3=AA?= =?UTF-8?q?tements=20en=20rupture?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Is there an existing issue for this? I have searched the existing issues In which category does your improvement fall? FFS Explain the current situation that you do not think is right. Aujourd'hui, le restock des magasins de vêtements par FFS est fait de manière aléatoire, ce qui fait que certains vêtements (qui ne sont pas/peu achetés) sont présents en très grand nombre, alors que les items très achetés sont régulièrement en rupture de stock et difficile à restock. En étant astucieux, les joueurs de FFS peuvent ajuster leur production de vêtements afin de répondre, le plus possible, au rupture. Cependant, au vu de la très grande quantité de vêtements, ces ajustements dans le RP sont insuffisant et je penses qu'un petit coup de pousse serait de mise. How is the improvement you propose? Le premier changement que je propose est d'empécher le restock des modèles d'articles ayant plus de 50(ce chiffre peut changer) vêtements en stock, et cela afin de favorisé les vêtements en rupture. Enfin, le second changement est d'indiquer au joueur quel modèle il met en stock. --- .../src/server/job/ffs/ffs.restock.provider.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/resources/[soz]/soz-core/src/server/job/ffs/ffs.restock.provider.ts b/resources/[soz]/soz-core/src/server/job/ffs/ffs.restock.provider.ts index 62556ea104..d6aed3fa96 100644 --- a/resources/[soz]/soz-core/src/server/job/ffs/ffs.restock.provider.ts +++ b/resources/[soz]/soz-core/src/server/job/ffs/ffs.restock.provider.ts @@ -164,7 +164,18 @@ export class FightForStyleRestockProvider { } } } - const randomItem = loopItems[Math.floor(Math.random() * loopItems.length)]; + + const itemStock = loopItems.filter( + item => item.stock != null && item.stock < 50 + ); + + let randomItem; + if (!itemStock) { + randomItem = loopItems[Math.floor(Math.random() * loopItems.length)]; + } else { + randomItem = itemStock[Math.floor(Math.random() * itemStock.length)]; + } + if (!randomItem || !loopItems) { return; } @@ -191,6 +202,7 @@ export class FightForStyleRestockProvider { }, }, }); + this.notifier.notify(source, `Vous avez restock ~o~${loopAmount}~s~ ~g~${randomItem.modelLabel} ~s~`, 'success'); } // Update repository From 8704284d5ed2f4e42daf9639f8681c3eae1b81e7 Mon Sep 17 00:00:00 2001 From: Pim-612 Date: Thu, 28 Nov 2024 17:34:01 +0100 Subject: [PATCH 2/3] Update ffs.restock.provider.ts --- .../[soz]/soz-core/src/server/job/ffs/ffs.restock.provider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/[soz]/soz-core/src/server/job/ffs/ffs.restock.provider.ts b/resources/[soz]/soz-core/src/server/job/ffs/ffs.restock.provider.ts index d6aed3fa96..38945951b1 100644 --- a/resources/[soz]/soz-core/src/server/job/ffs/ffs.restock.provider.ts +++ b/resources/[soz]/soz-core/src/server/job/ffs/ffs.restock.provider.ts @@ -202,7 +202,7 @@ export class FightForStyleRestockProvider { }, }, }); - this.notifier.notify(source, `Vous avez restock ~o~${loopAmount}~s~ ~g~${randomItem.modelLabel} ~s~`, 'success'); + this.notifier.notify(source, `Vous avez restock des ~g~${randomItem.modelLabel} ~s~`, 'success'); } // Update repository From 6d35b063d7fd59d7bb71074e8013b0bfbf7f2261 Mon Sep 17 00:00:00 2001 From: Pim-612 Date: Wed, 8 Jan 2025 09:22:40 +0000 Subject: [PATCH 3/3] =?UTF-8?q?Modification=20du=20chiffre=20=C3=A0=20part?= =?UTF-8?q?ir=20du=20quel=20les=20restock=20sont=20bloqu=C3=A9:=20Il=20dep?= =?UTF-8?q?end=20maintenant=20du=20type=20de=20v=C3=AAtement=20qu'on=20veu?= =?UTF-8?q?t=20restock?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/job/ffs/ffs.restock.provider.ts | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/resources/[soz]/soz-core/src/server/job/ffs/ffs.restock.provider.ts b/resources/[soz]/soz-core/src/server/job/ffs/ffs.restock.provider.ts index 38945951b1..3ca990d795 100644 --- a/resources/[soz]/soz-core/src/server/job/ffs/ffs.restock.provider.ts +++ b/resources/[soz]/soz-core/src/server/job/ffs/ffs.restock.provider.ts @@ -46,33 +46,33 @@ export class FightForStyleRestockProvider { ); } - public garmentToCategory(garment: Garment | LuxuryGarment): number { + public garmentToCategory(garment: Garment | LuxuryGarment): number[] { switch (garment) { case Garment.TOP: case LuxuryGarment.TOP: - return 1; + return [1, 30]; case Garment.PANT: case LuxuryGarment.PANT: - return 15; + return [15, 50]; case Garment.SHOES: case LuxuryGarment.SHOES: - return 25; + return [25, 75]; case Garment.UNDERWEAR: case LuxuryGarment.UNDERWEAR: - return 21; + return [21, -1]; case Garment.BAG: case LuxuryGarment.BAG: - return 52; + return [52, -1]; case Garment.GLOVES: case LuxuryGarment.GLOVES: - return 50; + return [50, -1]; case Garment.UNDERWEAR_TOP: case LuxuryGarment.UNDERWEAR_TOP: - return 60; + return [60, 75]; case Garment.MASK: - return 41; + return [41, 30]; default: - return -1; + return [-1, -1]; } } @@ -121,8 +121,10 @@ export class FightForStyleRestockProvider { public async restockLoop(brand: ClothingBrand, garment: Garment | LuxuryGarment, amount: number) { const sexes = [PlayerPedHash.Male, PlayerPedHash.Female]; - const category = this.garmentToCategory(garment); - + const catLim = this.garmentToCategory(garment); + const category = catLim[0]; + const filterLimit = catLim[1]; + if (category == -1) { this.logger.error('Invalid category for item ', garment); return; @@ -166,7 +168,7 @@ export class FightForStyleRestockProvider { } const itemStock = loopItems.filter( - item => item.stock != null && item.stock < 50 + item => item.stock != null && item.stock < filterLimit ); let randomItem;