Français Solved Script de fouille de véhicule avec saisie d'items illégaux

  • Auteur de la discussion Auteur de la discussion Vikor
  • Date de début Date de début

Vikor

User
29/12/19
95
2
5
450
Bonjour à tous, je fais suite à ce vieux poste (Français - Solved - Problème avec la fouille des véhicules et containers) ou je demandais un script pour fouiller le véhicule avec un descriptif des items.
J'aimerais pouvoir faire en sorte que ça affiche les items (déjà en place), si il y'a des items illégaux, que je ça fasse un petit chargement et que ça les saisisses.
Si possible, que le prix de vente de l'item (DynMarket) soit redistribuer de moitié au gendarme qui à saisie.
Merci d'avance pour votre aide.
Le fichier en question : Paste-Me
 
Solution
Hello, pour faire la vérification & saisie en même temps, tu peux remplacer ton fn_vehInvSearch.sqf par :
Code:
#include "..\..\script_macros.hpp"
/*
    Maxence
*/
private _vehicle = cursorObject;
private _list = ["Air","Ship","LandVehicle"];

if (isNull _vehicle || {!(KINDOF_ARRAY(_vehicle,_list))}) exitWith {};

private _vehicleInfo = _vehicle getVariable ["Trunk",[]];
if ((count _vehicleInfo) isEqualTo 0) exitWith {hint localize "STR_Cop_VehEmpty"};

private _money = 0;
private _items = "Liste des objets dans ce véhicule :<br/>";

private _newTrunk = + _vehicleInfo;

{
    _variable = _x select 0;
    _quantity = _x select 1;

    _itemConfig = missionConfigFile >> "VirtualItems" >> _variable;
    _itemName = localize (getText...
--- Ce message a été généré automatiquement par ChatGPT, le contenu peut être incorrect. Veuillez lire le message avec précaution ! ---

Bonjour,

Pour accomplir ce que vous souhaitez, vous devrez apporter des modifications à votre script actuel. Voici les étapes que vous pourriez suivre :

1. Ajoutez une variable pour le prix de vente de l'item dans la fonction qui gère la saisie.
2. Divisez cette variable par deux et stockez la nouvelle valeur.
3. Utilisez cette nouvelle valeur pour ajouter les fonds au gendarme qui a effectué la saisie.
4. Modifiez le script pour qu'il effectue un chargement pendant la saisie des articles illégaux.
Vous pouvez utiliser la fonction "sleep" pour ajouter une pause pendant le chargement.

N'oubliez pas de tester votre code pour vous assurer que tout fonctionne correctement. Bonne chance avec votre projet !

--- Pour continuer la discussion avec ChatGPT, cliquez sur "Répondre" en bas à droite de ce message. Sinon, attendez que quelqu'un vous réponde. ---
 
Hello, pour faire la vérification & saisie en même temps, tu peux remplacer ton fn_vehInvSearch.sqf par :
Code:
#include "..\..\script_macros.hpp"
/*
    Maxence
*/
private _vehicle = cursorObject;
private _list = ["Air","Ship","LandVehicle"];

if (isNull _vehicle || {!(KINDOF_ARRAY(_vehicle,_list))}) exitWith {};

private _vehicleInfo = _vehicle getVariable ["Trunk",[]];
if ((count _vehicleInfo) isEqualTo 0) exitWith {hint localize "STR_Cop_VehEmpty"};

private _money = 0;
private _items = "Liste des objets dans ce véhicule :<br/>";

private _newTrunk = + _vehicleInfo;

{
    _variable = _x select 0;
    _quantity = _x select 1;

    _itemConfig = missionConfigFile >> "VirtualItems" >> _variable;
    _itemName = localize (getText (_itemConfig >> "displayName"));

    if ((getNumber (_itemConfig >> "illegal")) isEqualTo 1) then {
        _items = _items + format ["<t color='#fc2c03'>x%1 %2<br/>",_quantity,_itemName];

        _index = [_variable,(_newTrunk select 0)] call TON_fnc_index;
        _data = _newTrunk select 0;
        _data deleteAt _index;

        _weight = ([_variable] call life_fnc_itemWeight) * _quantity;
        _newTrunk = [_data,(_newTrunk select 1) - _weight];

        _price = getNumber (_itemConfig >> "sellPrice");
        if (_price > 0) then {_money = _money + (_price * _quantity * 0.5);};
    } else {
        _items = _items + format ["x%1 %2<br/>",_quantity,_itemName];
    };    
} forEach (_vehicleInfo select 0);

_vehicle setVariable ["Trunk",_newTrunk,true];
hint parseText _items;

if (_money > 0) then {
    life_cash = life_cash + _money;
    [0] call SOCK_fnc_updatePartial;

    systemChat format ["Vous avez reçu %1€ pour avoir saisi des objets illégaux !",([_money] call life_fnc_numberText)];
};

Les items saisis devraient être affichés en rouge.
Pour le prix, j'ai pris celui du Config_vItems.hpp actuellement. Tu as notre script Dynamic Market ou un autre ?
 
Solution
Hello, pour faire la vérification & saisie en même temps, tu peux remplacer ton fn_vehInvSearch.sqf par :
Code:
#include "..\..\script_macros.hpp"
/*
    Maxence
*/
private _vehicle = cursorObject;
private _list = ["Air","Ship","LandVehicle"];

if (isNull _vehicle || {!(KINDOF_ARRAY(_vehicle,_list))}) exitWith {};

private _vehicleInfo = _vehicle getVariable ["Trunk",[]];
if ((count _vehicleInfo) isEqualTo 0) exitWith {hint localize "STR_Cop_VehEmpty"};

private _money = 0;
private _items = "Liste des objets dans ce véhicule :<br/>";

private _newTrunk = + _vehicleInfo;

{
    _variable = _x select 0;
    _quantity = _x select 1;

    _itemConfig = missionConfigFile >> "VirtualItems" >> _variable;
    _itemName = localize (getText (_itemConfig >> "displayName"));

    if ((getNumber (_itemConfig >> "illegal")) isEqualTo 1) then {
        _items = _items + format ["<t color='#fc2c03'>x%1 %2<br/>",_quantity,_itemName];

        _index = [_variable,(_newTrunk select 0)] call TON_fnc_index;
        _data = _newTrunk select 0;
        _data deleteAt _index;

        _weight = ([_variable] call life_fnc_itemWeight) * _quantity;
        _newTrunk = [_data,(_newTrunk select 1) - _weight];

        _price = getNumber (_itemConfig >> "sellPrice");
        if (_price > 0) then {_money = _money + (_price * _quantity * 0.5);};
    } else {
        _items = _items + format ["x%1 %2<br/>",_quantity,_itemName];
    };   
} forEach (_vehicleInfo select 0);

_vehicle setVariable ["Trunk",_newTrunk,true];
hint parseText _items;

if (_money > 0) then {
    life_cash = life_cash + _money;
    [0] call SOCK_fnc_updatePartial;

    systemChat format ["Vous avez reçu %1€ pour avoir saisi des objets illégaux !",([_money] call life_fnc_numberText)];
};

Les items saisis devraient être affichés en rouge.
Pour le prix, j'ai pris celui du Config_vItems.hpp actuellement. Tu as notre script Dynamic Market ou un autre ?
J'utilise ce script là pour la bourse : https://www.altisliferpg.com/topic/3-tutorial44r3-ryantts-dynamic-market-system/
 
Alors dans mon code précédent remplace cette ligne :
Code:
_price = getNumber (_itemConfig >> "sellPrice");
par :
Code:
_price = -2;

{
    if ((_x select 0) == _variable) then {_price = (_x select 1);};
} forEach DYNMARKET_prices;

if (_price isEqualTo -2) then {
    _price = getNumber (_itemConfig >> "sellPrice");
};