Français Solved Script pour créer un vendeur de meuble abordable

  • Auteur de la discussion Auteur de la discussion JNR 01
  • Date de début Date de début

JNR 01

User
29/12/19
64
2
4
450
www.lemnosrp.fr
Bonjour je recherche un script pour faire un ikea qui vend des meuble, je suis en modded, j'aimerais les acheter et pouvoir les placer après comme les conteneur, mais j'ai seulement trouver le script de chez ASN fourniture system et il est tres cher pour se que c'est.
 
Solution
Salut JNR, rien de compliqué, ta juste à chercher tous les endroits qui utilise le système avec les conteneurs déjà existant, pour ajouter toi même tes meubles.

Fichier en question à modifier :
Altis_Life.Altis/core/vehicle/fn_openInventory.sqf
Ligne 12 :
Code:
if (isNull _vehicle || !(_vehicle isKindOf "Car" || _vehicle isKindOf "Air" || _vehicle isKindOf "Ship" || _vehicle isKindOf "Box_IND_Grenades_F" || _vehicle isKindOf "B_supplyCrate_F" || _vehicle isKindOf "ICI_TON_CLASSNAME_DE_TES_MEUBLES")) exitWith {};
Altis_Life.Altis/core/items/fn_placestorage.sqf
Ligne 19 :
Code:
if (_vehicle isKindOf "Box_IND_Grenades_F" || _vehicle isKindOf "B_supplyCrate_F" || _vehicle isKindOf "ICI_TON_CLASSNAME_DE_TON_MEUBLE") then {
Ligne...
Alors déjà il est cher t en plus il est bugger

Je l'ai mais je l'ai pas garder, je l'ai remorve de mon serv

Je vais essayer de le refaire moi même
 
Salut JNR, rien de compliqué, ta juste à chercher tous les endroits qui utilise le système avec les conteneurs déjà existant, pour ajouter toi même tes meubles.

Fichier en question à modifier :
Altis_Life.Altis/core/vehicle/fn_openInventory.sqf
Ligne 12 :
Code:
if (isNull _vehicle || !(_vehicle isKindOf "Car" || _vehicle isKindOf "Air" || _vehicle isKindOf "Ship" || _vehicle isKindOf "Box_IND_Grenades_F" || _vehicle isKindOf "B_supplyCrate_F" || _vehicle isKindOf "ICI_TON_CLASSNAME_DE_TES_MEUBLES")) exitWith {};
Altis_Life.Altis/core/items/fn_placestorage.sqf
Ligne 19 :
Code:
if (_vehicle isKindOf "Box_IND_Grenades_F" || _vehicle isKindOf "B_supplyCrate_F" || _vehicle isKindOf "ICI_TON_CLASSNAME_DE_TON_MEUBLE") then {
Ligne 36 :
Code:
if (_this isKindOf "Box_IND_Grenades_F" || _this isKindOf "B_supplyCrate_F" || _this isKindOf "ICI_TON_CLASSNAME_DE_TON_MEUBLE") then {
life_server/Functions/Housing/fn_houseCleanup.sqf
Ligne 20 :
Code:
} forEach (nearestObjects[_pos,["Box_IND_Grenades_F","B_supplyCrate_F","ICI_TON_CLASSNAME_DE_TON_MEUBLE"],12]);
Altis_Life.Altis/core/items/fn_storageBox.sqf
Ligne 11 (Au lieu d'utiliser un true et false, on va utiliser des nombres. C'est pas le meilleur moyen, mais flemme de tout refaire le fonctionnement ^^) :
Code:
["_size",0,[0]]
Ligne 18 à 22 :
Code:
switch (_size) do {
    case 0: { _object = "B_supplyCrate_F" createVehicle [0,0,0]; };
    case 1: { _object = "Box_IND_Grenades_F" createVehicle [0,0,0]; };
    case 2: { _object = "ICI_TON_CLASSNAME_DE_TON_MEUBLE" createVehicle [0,0,0]; }; // Ajoute une ligne pour chaque nouveau objets
};
Altis_Life.Altis/core/actions/fn_useItem.sqf
Ligne 70 à 76 :
Code:
case "storagesmall": {
    [0] call life_fnc_storageBox;
};

case "storagebig": {
    [1] call life_fnc_storageBox;
};

case "leNomDeTaVariableDeTonMeuble": {
    [2] call life_fnc_storageBox; // Tu met un numéro entre crochet qui est le même que celui dans le fichier précédent avec le switch.
};
Altis_Life.Altis/core/actions/fn_removeContainer.sqf
Ligne 24 à 28 :
Code:
_box = switch (_containerType) do {
    case ("B_supplyCrate_F"): {"storagebig"};
       case ("Box_IND_Grenades_F"): {"storagesmall"};
    case ("ICI_TON_CLASSNAME_DE_TON_MEUBLE"): {"iciLeNomDeTaVariable"}; // Tu ajoute au début la classname de ton meuble, et le nom de la variable qui correspond
    default {"None"};
};
Altis_Life.Altis/core/functions/fn_inventoryClosed.sqf
Ligne 18 :
Code:
if ((typeOf _container) in ["Box_IND_Grenades_F", "B_supplyCrate_F", "ICI_TON_CLASSNAME_DE_TON_MEUBLE"]) exitWith {
Altis_Life.Altis/core/functions/fn_inventoryOpened.sqf
Ligne 28 :
Code:
if (_containerType in ["Box_IND_Grenades_F", "B_supplyCrate_F", "ICI_TON_CLASSNAME_DE_TON_MEUBLE"]) exitWith {
Altis_Life.Altis/core/housing/fn_placeContainer.sqf
Ligne 19 à 23 :
Code:
switch (true) do {
    case (typeOf _container isEqualTo "B_supplyCrate_F"): {_type = "storagebig"};
    case (typeOf _container isEqualTo "Box_IND_Grenades_F") : {_type = "storagesmall"};
    case (typeOf _container isEqualTo "ICI_TON_CLASSNAME_DE_TON_MEUBLE"): {_type = "iciLeNomDeTaVariable"}; // Tu ajoute une ligne pour chaque meuble
    default {_type = ""};
};
Altis_Life.Altis/core/functions/fn_actionKeyHandler.sqf
Ligne 58 :
Code:
if ((_curObject isKindOf "B_supplyCrate_F" || _curObject isKindOf "Box_IND_Grenades_F" || _curObject isKindOf "ICI_TON_CLASSNAME_DE_TON_MEUBLE") && {player distance _curObject < 3} ) exitWith {
Altis_Life.Altis/core/functions/fn_keyHandler.sqf
Ligne 178 :
Code:
_list = ((ASLtoATL (getPosASL player)) nearEntities [["Box_IND_Grenades_F","B_supplyCrate_F","ICI_TON_CLASSNAME_DE_TON_MEUBLE"], 2.5]) select 0;
Altis_Life.Altis/config/Config_Vehicles.hpp
Après, tu configure ton meuble :
Code:
class ICI_TON_CLASSNAME_DE_TON_MEUBLE {
    vItemSpace = 700;
    conditions = "";
    price = -1;
    textures[] = {};
};
Altis_Life.Altis/config/Config_vItems.hpp
Et enfin ici aussi :
Code:
class leNomDeTaVariable {
    variable = "leNomDeTaVariable";
    displayName = "STR_Item_LE_STRINGTABLE_DE_TON_OBJECT";
    weight = 10; // Et édite tous ca..
    buyPrice = 150000; // Et édite tous ca..
    sellPrice = 125000; // Et édite tous ca..
    illegal = false;
    edible = -1;
    drinkable = -1;
    icon = "icons\ico_storageBig.paa"; // Et édite tous ca..
};

En gros tu as déjà les deux conteneurs "B_supplyCrate_F" & "Box_IND_Grenades_F". Tu as juste à modifier les fichiers pour ajouter tes meubles avec leur classname.
Je sais pas si ca fonctionne, et si j'ai rien oublié, mais tu as compris le principe, je te laisse tester tout ca et de regarder si tu vois des trucs qui peuvent manquer :)

EDIT : Bien sûr faut aussi mettre "leNomDeTaVariable" dans le config_Market
 
Dernière édition:
Solution
Sa pourrais marcher mais je crois que le system qui pose les choses n'est pas très précis

Tu ne peut pas non lus choisir de le mettre plus haut ou plus bas ou de lui faire faire une rotation ...
 
Sa pourrais marcher mais je crois que le system qui pose les choses n'est pas très précis

Tu ne peut pas non lus choisir de le mettre plus haut ou plus bas ou de lui faire faire une rotation ...
Bah, c'est du supplément ca, après c'est pas compliqué à faire si tu veux vraiment le faire. Ta juste à faire des keybinding qui change la position x, y, z selon la touche appuyer, et ainsi que sa rotation. Moi j'ai simplement donner la solution pour poser des meubles.
 
  • Like
Les réactions: Zomblard
Salut j ai un soucis avec la pose d objet, j ai utiliser le tuto malheureusement l objet ce mets au dessus du sol, et quand je le pose il ne s enlevé pas de l inventaire mais me le rajoute bien dans mon inventaire lorsque je le mets

bien cordialement
 
Salut j ai un soucis avec la pose d objet, j ai utiliser le tuto malheureusement l objet ce mets au dessus du sol, et quand je le pose il ne s enlevé pas de l inventaire mais me le rajoute bien dans mon inventaire lorsque je le mets

bien cordialement
Tu peux essayer de regarder ça c'est un tuto que j'ai fait y as un petit moment
Pour le fait qu'il se place trop haut il faudrait voir se qu'il se passe au moment ou la position est set
 
Plop JNR 01 JNR 01 !
Est-ce fonctionnel ? Si oui, tu peux sélectionner la solution via le bouton sous forme de "check".

Salut j ai un soucis avec la pose d objet, j ai utiliser le tuto malheureusement l objet ce mets au dessus du sol, et quand je le pose il ne s enlevé pas de l inventaire mais me le rajoute bien dans mon inventaire lorsque je le mets

bien cordialement

Pourrais-tu ouvrir un nouveau topic en citant le message que tu as suivi pour qu'on puisse t'aider ?