Français Solved Problème de récupération des véhicules dans le garage

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

Rykon

User
13/6/20
66
2
2
450
Hello,

J'ai regardé un peu comment fonctionnait le système de garage ici : https://forum.the-programmer.com/post/petite-demande.467/#post-1663

Cependant, je n'ai plus de possibilité de récupérer mes véhicules.


Code:
if ((_side == "cop") || _side == "med") then {
    _query = format["SELECT id, side, classname, type, pid, alive, active, plate, color FROM vehicles WHERE alive='1' AND active='0' AND side='%1' AND type='%2'",_side,_type];
} else {
    _query = format["SELECT id, side, classname, type, pid, alive, active, plate, color FROM vehicles WHERE pid='%1' AND alive='1' AND active='0' AND side='%2' AND type='%3'",_pid,_side,_type];
};

J'ai mis ceci.

Et j'ai également supprimé "AND pid='%2'" dans fn_spawnVehicles.sqf

Une idée de comment faire ?

Merci.
 
Solution
Je ne devrais pas retirer le "WHERE pid='%1'" pour justement que peu importe qui sort le véhicule, le set active passe bien en 1 ?
C'est une bonne idée ! Je pense que c'est ça le soucis, remplace cette ligne :
Code:
_query = format ["UPDATE vehicles SET active='1', damage='""[]""' WHERE pid='%1' AND id='%2'",_pid,_vid];
par :
Code:
_query = format ["UPDATE vehicles SET active='1', damage='""[]""' WHERE id='%1'",_vid];
Est-ce que tu peux essayer avec ce fn_getVehicles.sqf : https://paste-me.net/palom ?
Cela fonctionne parfaitement, cependant, quand je fais vendre, cela me vends les véhicules que j'avais acheté, par contre quand je vends un véhicule dont je ne suis pas propriétaire, je reçois l'argent mais le véhicule ne disparaît pas. Y-a-t-il un moyen de mettre une condition dans le bouton de vente ? Ou simplement faire en sorte de de retirer le véhicule à la vente ?


Je vais essayer de regarder de mon côté pour ajouter un bouton avec condition, mais avant toute chose est-ce possible ?

Merci!
 
Cela fonctionne parfaitement, cependant, quand je fais vendre, cela me vends les véhicules que j'avais acheté, par contre quand je vends un véhicule dont je ne suis pas propriétaire, je reçois l'argent mais le véhicule ne disparaît pas. Y-a-t-il un moyen de mettre une condition dans le bouton de vente ? Ou simplement faire en sorte de de retirer le véhicule à la vente ?


Je vais essayer de regarder de mon côté pour ajouter un bouton avec condition, mais avant toute chose est-ce possible ?

Merci!

Lorsque je sors le véhicule d'une autre personne, celui-ci se duplique c'est à dire qu'il est dans le garage mais il a spawn également, donc je peux sortir le véhicule autant de fois que je veux.µ

EDIT : Faut arriver à trouver dans le spawnVehicle, le fait que peu importe qui vends le véhicule ou le sort, la fonction reste pareil.
 
je reçois l'argent mais le véhicule ne disparaît pas
Oui exact, dans le fn_sellGarage.sqf il supprime le véhicule dans la base de données en fonction du PID du joueur et non du PID de celui qui l'a acheté.
-> Une solution serait de cacher le bouton pour vendre un véhicule dans les garages communs.

il est dans le garage mais il a spawn également
Par contre normalement il n'y a pas ce problème. Dans le fn_spawnVehicle, qui est le même si c'est ton véhicule ou celui d'un autre, à la sortie de celui-ci et dans la base de données il devrait être en active = 1. Et le fn_getVehicle affiche uniquement les véhicules en active = 0 (ceux qui sont pas sortis du coup).
-> Tu peux vérifier s'il passe bien en active = 1 dans la base de données après l'avoir sorti du garage
 
Tu peux vérifier s'il passe bien en active = 1 dans la base de données après l'avoir sorti du garage

Justement, mon véhicule lui passe en active=1, celui d'un autre joueur reste à 0.

Je ne devrais pas retirer le "WHERE pid='%1'" pour justement que peu importe qui sort le véhicule, le set active passe bien en 1 ?

EDIT : Comme ça, le serveur ne prends en compte que le ID du véhicule.

Code:
_query = format ["UPDATE vehicles SET active='1', damage='""[]""' WHERE pid='%1' AND id='%2'",_pid,_vid];
 
Dernière édition:
Je ne devrais pas retirer le "WHERE pid='%1'" pour justement que peu importe qui sort le véhicule, le set active passe bien en 1 ?
C'est une bonne idée ! Je pense que c'est ça le soucis, remplace cette ligne :
Code:
_query = format ["UPDATE vehicles SET active='1', damage='""[]""' WHERE pid='%1' AND id='%2'",_pid,_vid];
par :
Code:
_query = format ["UPDATE vehicles SET active='1', damage='""[]""' WHERE id='%1'",_vid];
 
Solution
C'est une bonne idée ! Je pense que c'est ça le soucis, remplace cette ligne :
Code:
_query = format ["UPDATE vehicles SET active='1', damage='""[]""' WHERE pid='%1' AND id='%2'",_pid,_vid];
par :
Code:
_query = format ["UPDATE vehicles SET active='1', damage='""[]""' WHERE id='%1'",_vid];

Excellent! Tout fonctionne parfaitement!

Je vais regarder de mon côté pour cacher le bouton vendre en Cop & Med, mais tout ce qui est niveau garage c'est fonctionnel.

Merci pour l'aide!
 
Salut Teravince Teravince

Dans ton Altis_Life.Altis/dialog/impound.hpp (donne un IDC à la classe "SellCar") :
Code:
class SellCar: Life_RscButtonMenu {
            idc = 75121; // ICI
            text = "$STR_Global_Sell";
            onButtonClick = "[] call life_fnc_sellGarage; closeDialog 0;";
            x = 0.26 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH));
            y = 0.9 - (1 / 25);
            w = (6.25 / 40);
            h = (1 / 25);
        };

Ensuite, dans ton Altis_Life.Altis/dialog/function/fn_unimpound.sqf (Ligne 28 à 34) :
Code:
switch (playerSide) do {
    case civilian: {_purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_CIVILIAN");};
    case west: {_purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_COP"); ctrlShow[75121,false];};
    case independent: {_purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_MEDIC"); ctrlShow[75121,false];};
    case east: {_purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_OPFOR"); ctrlShow[75121,false];};
};

Tiens moi au courant si c'est bon (J'ai pas pu tester).
 
Salut Teravince Teravince

Dans ton Altis_Life.Altis/dialog/impound.hpp (donne un IDC à la classe "SellCar") :
Code:
class SellCar: Life_RscButtonMenu {
            idc = 75121; // ICI
            text = "$STR_Global_Sell";
            onButtonClick = "[] call life_fnc_sellGarage; closeDialog 0;";
            x = 0.26 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH));
            y = 0.9 - (1 / 25);
            w = (6.25 / 40);
            h = (1 / 25);
        };

Ensuite, dans ton Altis_Life.Altis/dialog/function/fn_unimpound.sqf (Ligne 28 à 34) :
Code:
switch (playerSide) do {
    case civilian: {_purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_CIVILIAN");};
    case west: {_purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_COP"); ctrlShow[75121,false];};
    case independent: {_purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_MEDIC"); ctrlShow[75121,false];};
    case east: {_purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_OPFOR"); ctrlShow[75121,false];};
};

Tiens moi au courant si c'est bon (J'ai pas pu tester).
Non cela a fait crash mon serveur local