Repository navigation
CraftHelper
Permet de sauvegarder en base de données des recettes pour concevoir des objets et des véhicules. Le plugin "BetterRecipe" intègre CraftHelper dans AAMenu simplifiant son utilisation. Je vous recommandes d'utiliser ce plugin pour gérer vos différentes recettes. Toutefois, si vous avez besoin d'utiliser CraftHelper en dehors de BetterRecipe, voici les différentes fonctions.
Voici la structure d'une recette :
-
${\color{Goldenrod}\normalsize{\textsf{Name}}}$ : Le nom du vêtement. -
${\color{Goldenrod}\normalsize{\textsf{ObjectId}}}$ : ID de l'objet ou du véhicule -
${\color{Goldenrod}\normalsize{\textsf{IsVehicle}}}$ : Valeur booléen indiquant s'il s'agit d'un objet ou d'un véhicule -
${\color{Goldenrod}\normalsize{\textsf{Category}}}$ : Nom de la catégorie, vous filtrez vos recettes selon cette catégorie -
${\color{Goldenrod}\normalsize{\textsf{IngredientList}}}$ : Liste des ingrédients au format JSON. -
${\color{Goldenrod}\normalsize{\textsf{LIngredientList}}}$ : Liste des ingrédients (uniquement des objets)
Pour sérialiser ou désérialiser les ingrédients, utiliser les fonctions à votre disposition:
instanceDeRecipe.SerializeIngredients()
instanceDeRecipe.DeserializeIngredients()Voici la structure d'un ingrédient:
-
${\color{Goldenrod}\normalsize{\textsf{ItemId}}}$ : ID de l'objet -
${\color{Goldenrod}\normalsize{\textsf{Count}}}$ : Quantité requise de cet objet
Pour récupérer l'ensemble des recettes de la table
var query = await CraftHelper.GetRecipes();var query = await CraftHelper.GetRecipesByCategoryName("jardiland");var query = await CraftHelper.AddRecipe(recipe);Imaginons que vous souhaitez créer un plugin permettant de craft plusieurs pizza. Partons du principe que vous avez réalisé vos recettes avec le plugin "BetterRecipe".
Nous commençons par récupérer vos recettes de la catégorie "pizza".
public async void CraftPizza(Player player)
{
var recipes = await CraftHelper.GetRecipesByCategoryName("pizza");
//Déclaration
Panel panel = PanelHelper.Create("Four", UIPanel.PanelType.TabPrice, player, () => CraftPizza(player));
//Corps
foreach (var recipe in recipes)
{
panel.AddTabLine($"{recipe.Name}", $"{recipe.Category}", ItemUtils.GetIconIdByItemId(recipe.ObjectId), ui => CraftPizzaRecipe(player, recipe));
}
//Boutons
panel.NextButton("Consulter", () => panel.SelectTab());
panel.CloseButton();
//Affichage
panel.Display();
}Ensuite, après avoir sélectionné la pizza que je souhaite réaliser, je consulte sa recette et je m'assure que le joueur possède bien tous les ingrédients nécessaires avant de la préparer.
public void CraftPizzaRecipe(Player player, Recipe recipe)
{
//Déclaration
Panel panel = PanelHelper.Create($"{recipe.Name}", UIPanel.PanelType.TabPrice, player, () => CraftPizzaRecipe(player, recipe));
//Corps
if (recipe.LIngredientList != null)
{
foreach (var ingredient in recipe.LIngredientList)
{
panel.AddTabLine($"{ItemUtils.GetItemById(ingredient.ItemId)?.itemName}", $"{ingredient.Count}", ItemUtils.GetIconIdByItemId(ingredient.ItemId), _ =>{});
}
}
else panel.AddTabLine($"Aucun ingrédients", _ => { });
//Boutons
panel.PreviousButtonWithAction("Fabriquer", () =>
{
//check si le joueur possède les ingrédients avant retrait
foreach (var ingredient in recipe.LIngredientList)
{
if(!InventoryUtils.CheckInventoryContainsItem(player, ingredient.ItemId, ingredient.Count))
{
player.Notify("Recette incomplète", $"Vous n'avez pas suffisament de {ItemUtils.GetItemById(ingredient.ItemId).itemName}", Life.NotificationManager.Type.Warning);
return Task.FromResult(false);
}
}
foreach (var ingredient in recipe.LIngredientList)
{
InventoryUtils.RemoveFromInventory(player, ingredient.ItemId, ingredient.Count);
}
InventoryUtils.AddItem(player, recipe.ObjectId, 1);
player.Notify("Nouvel objet", $"Vous venez de cuisiner une belle {ItemUtils.GetItemById(recipe.ObjectId).itemName}", Life.NotificationManager.Type.Success);
return Task.FromResult(true);
});
panel.PreviousButton();
panel.CloseButton();
//Affichage
panel.Display();
}- Getting Started
- Ajouter une compétence métier
- Ajouter une interaction
- Ajouter une proximité
- Ajouter une proximité d'activité
- Ajouter une action admin
- Ajouter un plugin
- Retourner vers AAMenu
- Introduction
- Ajouter une activité personnalisé
- Associer une société à une activité personnalisées
- Connaitre l'activité d'un joueur
- Introduction
- PatternData
- Classe de base
- Fonctions à compléter ou créer
- Enregistrer votre type de point en base de donées
- Intégrer votre type de point à AAMenu
- Introduction
- Peupler la base de donées
- Créer un vêtement personnalisés
- Equiper un vêtement
- Afficher les vêtements selon leurs type
- Attribuer/Retirer un vêtement à un joueur
- Recipe & Ingredient
- Récupérer les recettes
- Récupérer les recettes selon la catégorie
- Ajouter une recette
- Comment l'utiliser
