Français Solved Problèmes avec le ChopShop et le spawn aérien des médics

Bonjour, bonsoir,

Je viens à vous car je rencontre quelques soucis sur notre Server Altis Life.
Pour l'instant, deux majoritairement :

1) Le ChopShop
Récemment on nous a apporté que notre ChopShop ne fonctionnait pas.
Lorsque le joueur tente de vendre le véhicule volé, cela lui dit qu'aucun véhicule volé n'est à proximité.
Nous n'arrivons pas à identifier pourquoi. Voici quelques informations :

init du panneau :
Code:
this addAction[localize"STR_ChopShop_Title",life_fnc_chopShopMenu,"chop_shop",1.5,false,false,"",'isNull objectParent player && player distance _target < 3.5',5];
Nom du panneau : ChopShop
Stringtable appelée :
Code:
<Key ID="STR_ChopShop_Title">
      <Original>Revendeur de véhicules volés</Original>
  </Key>

Marker : chop_shop
@STAR_MAR_Chop_Shop
Stringtable appelée :
Code:
<Key ID="STR_MAR_Chop_Shop">     
       <Original>Revendeur de véhicules volés</Original>
</Key>

2) Le spawn Aérien des médics
Pour une raison que nous ne comprenons pas, le spawn terrestre fonctionne mais le spawn aérien, rien n'y fait.
Le véhicule est indiqué comme acheté, mais n'apparait nul part sur la carte, ni au marqueur, ni ailleurs.
Voici d'autres informations :

init du panneau :
Code:
call{
this addAction[format ["%1 (%2 Cr)",localize (getText(missionConfigFile >> "Licenses" >> "mDive" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "mDive" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"mDive",1.5,false,false,"",' !license_med_mDive && playerSide isEqualTo independent ',5]; 
this addAction[format ["%1 (%2 Cr)",localize (getText(missionConfigFile >> "Licenses" >> "mGun" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "mGun" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"mGun",1.5,false,false,"",' !license_med_mGun && playerSide isEqualTo independent ',5];
this addAction[format ["%1 (%2 Cr)",localize (getText(missionConfigFile >> "Licenses" >> "mDriver" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "mDriver" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"mDriver",1.5,false,false,"",' !license_med_mDriver && playerSide isEqualTo independent ',5];
this addAction[format ["%1 (%2 Cr)",localize (getText(missionConfigFile >> "Licenses" >> "mTrucking" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "mTrucking" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"mTrucking",1.5,false,false,"",' !license_med_mTrucking && playerSide isEqualTo independent ',5];
this addAction[format ["%1 (%2 Cr)",localize (getText(missionConfigFile >> "Licenses" >> "mBoat" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "mBoat" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"mBoat",1.5,false,false,"",' !license_med_mBoat && playerSide isEqualTo independent ',5];
this addAction[format ["%1 (%2 Cr)",localize (getText(missionConfigFile >> "Licenses" >> "mPilot" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "mPilot" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"mPilot",1.5,false,false,"",' !license_med_mPilot && playerSide isEqualTo independent ',5];
this addAction[localize"STR_Shops_Market",life_fnc_virt_menu,"med_market",1.5,false,false,"",' isNull objectParent player && playerSide isEqualTo independent ',5];
this addAction[localize "STR_Shops_C_Medic",life_fnc_clothingMenu,"med_clothing",1.5,true,true,"","true",5];
this addAction[localize "STR_MAR_EMS_Item_Shop",life_fnc_weaponShopMenu,"med_basic",1.5,true,true,"","true",5];
this addAction[localize "STR_MAR_W_E_Vehicle_Shop",life_fnc_vehicleShopMenu,["med_car",independent,"med_car_1","med","STR_MAR_Hospital"],1.5,true,true,"","true",5];
this addAction[localize "STR_MAR_Helicopter_Shop", life_fnc_vehicleShopMenu,["med_air",independent,"med_air_1","med","STR_MAR_Hospital"],1.5,true,true,"","true",5];
this addAction[localize "STR_MAR_W_Car_Garage", { if (life_HC_isActive) then { [getPlayerUID player,playerSide,"Car",player] remoteExecCall ["HC_fnc_getVehicles",HC_Life]; } else { [getPlayerUID player,playerSide,"Car",player] remoteExecCall ["TON_fnc_getVehicles",2];}; createDialog "Life_impound_menu"; disableSerialization; ctrlSetText[2802,"Recherche de véhicules..."]; life_garage_sp = "med_car_1"; life_garage_type = "Car"; },"",0,false,false,"",'playerSide isEqualTo independent',5];
this addAction[localize "STR_MAR_Helicopter_Garage", { if (life_HC_isActive) then { [getPlayerUID player,playerSide,"Air",player] remoteExecCall ["HC_fnc_getVehicles",HC_Life]; } else { [getPlayerUID player,playerSide,"Air",player] remoteExecCall ["TON_fnc_getVehicles",2];}; createDialog "Life_impound_menu"; disableSerialization; ctrlSetText[2802,"Recherche de véhicules..."]; life_garage_sp = "med_air_1"; life_garage_type = "Air"; },"",0,false,false,"",'playerSide isEqualTo independent',5];}

Marker : med_air_1

Je peux vous fournir ce dont vous avez besoin si nécessaire.
A savoir que les deux cas n'ont pas été traité par moi, donc je ne sais pas quoi chercher pour régler le problème.
En vous remerciant par avance.
 
Dernière édition par un modérateur:
Solution
Oui c'est ça le problème, dans ton Config_Vehicles.hpp la classname de ton shop est "med_air", c'est un nom qui est reservé au spawn sur le toit de l'hopîtal d'Altis.
Je suppose que tu n'en a pas besoin, il suffit de changer cette classname, par exemple :
Code:
   class shop_med_air {
      side = "med";
      conditions = "license_med_mPilot";
      vehicles[] = {
         { "MEOP_veh_aerocar_CivMed", "call life_mediclevel >= 1" }
      };
   };

Et de le modifier dans l'init de l'objet :
Code:
this addAction[localize "STR_MAR_Helicopter_Shop", life_fnc_vehicleShopMenu,["shop_med_air",independent,"med_air_1","med","STR_MAR_Hospital"],1.5,true,true,"","true",5];
Salut pour les helico medic , remplace seulement les nom du point de spawn d'hélicoptère ( j'ai aussi modif les nom des shop dans le Config_Vehicles.hpp) pour le ChopShop je ne peut pas aider car j'utilise le script License Plates
 
Dernière édition:
Bonjour, bonsoir !

Alors dans un premier temps pour le ChopShop :
Oui, ligne 613 du Config_Master.hpp
chopShop_vehicles[] = { "Car", "Ship", "Air" };

Ensuite pour le spawn Médic :
Si je remplace le nom du spawn, je dois tout modifier dans ce sens alors. Mais j'avais déjà tenté, sans résultat.
 
Pour le 1er problème, tu peux essayer de debug en ajoutant dans ton fn_chopShopMenu.sqf, sous cette ligne :
Code:
private _nearVehicles = nearestObjects [getMarkerPos (_this select 3),_chopable,25];
ceci :
Code:
systemChat format ["_chopable : %1",_chopable];
systemChat format ["marker : %1",(_this select 3)];
systemChat format ["markerPos : %1",getMarkerPos (_this select 3)];
systemChat format ["_nearVehicles : %1",_nearVehicles];
Tu peux envoyer une capture d'écran du chat après avoir testé en jeu



Pour le 2nd problème, est-ce que tu peux essayer de remplacer le nom du marqueur dans cet init par un autre marker qui fonctionne ? Par exemple "med_car_1"
 
Alors rebonjour,

Pour le premier test voici ce qui en ressort, je n'ai pas de véhicule volé, j'attends qu'un joueur me réponde et se connecte pour faire le test avec un véhicule volé.
20220325180348_1.jpg

Pour le second test, modification effectuée, même résultat, les véhicules terrestres apparaissent au bon endroit, le véhicule aérien n'apparaît juste pas.

EDIT : pour le chop_shop il est fonctionnel, je viens de le tester :
20220325182030_1.jpg
20220325182044_1.jpg
Je penses que les joueurs l'ayant signalé sont juste un peu "limités"......

Ne reste que le problème du spawn médic, si cela ne vient pas du marker de spawn, cela provient surement du véhicule ou quelque chose du genre ?
 
Dernière édition:
Le problème vient forcément du marqueur, soit il n'est pas bon dans l'init soit il n'a pas la bonne variable. Ou alors c'est un véhicule moddé et tu n'as pas le mod ?

Si tu veux debug la position tu peux ajouter en bas de ton fn_unimpound.sqf :
Code:
systemChat format ["_vid : %1",_vid];
systemChat format ["life_garage_sp : %1",life_garage_sp];
systemChat format ["getMarkerPos life_garage_sp : %1",getMarkerPos life_garage_sp];
systemChat format ["markerDir life_garage_sp : %1",markerDir life_garage_sp];

Tu peux également joindre tes logs serveur, si le véhicule n'existe pas il devrait y avoir un message
 
Bonjour,

J'ai ajouté :
Code:
systemChat format ["_vid : %1",_vid];
systemChat format ["life_garage_sp : %1",life_garage_sp];
systemChat format ["getMarkerPos life_garage_sp : %1",getMarkerPos life_garage_sp];
systemChat format ["markerDir life_garage_sp : %1",markerDir life_garage_sp];
tout en bas du fichier fn_unimpound.sqf dans mission>dialog>function
En sortant le véhicule je n'ai pas eus de message particulier, normal ?

Au niveau logs, voici ce qui est dit côté machine quand je sort le véhicule :
Code:
Obsolete class Animations defined in MEOP_veh_aerocar_CivMed
MEOP_veh_aerocar_CivMed: lamp1 - unknown animation source gyro
MEOP_veh_aerocar_CivMed: lamp2 - unknown animation source gyro
MEOP_veh_aerocar_CivMed: hideweapons - unknown animation source hideweapons
In Vehicle: meop_vehicles\aerocar\acarpolice.p3d missing cargo get in direction point
In Vehicle: meop_vehicles\aerocar\acarpolice.p3d missing gunner get in direction point
Bad uvSource None in meop_vehicles\aerocar\data\ac_glass_damage.rvmat stage 1 (Super, tex meop_vehicles\aerocar\data\destr_glass_plexi_full_nohq.paa)
Bad uvSource None in meop_vehicles\aerocar\data\ac_glass_damage.rvmat stage 2 (Super, tex meop_vehicles\aerocar\data\destr_glass_plexi_full_ca.paa)
Bad uvSource None in meop_vehicles\aerocar\data\ac_glass_damage.rvmat stage 3 (Super, tex meop_vehicles\aerocar\data\destr_glass_plexi_full_ca.paa)
"SO-2 5111 Scarab - 76561198078897304 a acheté le véhicule MEOP_veh_aerocar_CivMed pour 0 Cr. Cash 3,150 Cr Argent en banque : 435 Cr"
Client: Object 5:77 (type Type_95) not found.
Client: Object 5:77 (type Type_96) not found.
Client: Object 5:77 (type Type_461) not found.
MEOP_C_veh_LandVanAmb_Amb_F: glass7_destruct - unknown animation source hitglass7
MEOP_C_veh_LandVanAmb_Amb_F: glass8_destruct - unknown animation source hitglass8
MEOP_C_veh_LandVanAmb_Amb_F: glass9_destruct - unknown animation source hitglass9
"SO-2 5111 Scarab - 76561198078897304 a acheté le véhicule MEOP_C_veh_LandVanAmb_Amb_F pour 0 Cr. Cash 3,150 Cr Argent en banque : 435 Cr"
Bad simulation thingx, type Land_shipping_crate_lg_locked_cobb3 (class=house), optre_buildings\containers\shipping_crate_lg_locked_cobb3.p3d
Bad simulation thingx, type Land_shipping_crate_lg_locked_jot2 (class=house), optre_buildings\containers\shipping_crate_lg_locked_jot2.p3d
Bad simulation thingx, type Land_shipping_crate_lg_locked_trax3 (class=house), optre_buildings\containers\shipping_crate_lg_locked_trax3.p3d

et voici côté logs perso :

Code:
17:33:56 Obsolete class Animations defined in MEOP_veh_aerocar_CivMed
17:33:56 MEOP_veh_aerocar_CivMed: lamp1 - unknown animation source gyro
17:33:56 MEOP_veh_aerocar_CivMed: lamp2 - unknown animation source gyro
17:33:56 MEOP_veh_aerocar_CivMed: hideweapons - unknown animation source hideweapons
17:33:56 In Vehicle: meop_vehicles\aerocar\acarpolice.p3d missing cargo get in direction point
17:33:56 In Vehicle: meop_vehicles\aerocar\acarpolice.p3d missing gunner get in direction point
17:33:56 Bad uvSource None in meop_vehicles\aerocar\data\ac_glass_damage.rvmat stage 1 (Super, tex meop_vehicles\aerocar\data\destr_glass_plexi_full_nohq.paa)
17:33:56 Bad uvSource None in meop_vehicles\aerocar\data\ac_glass_damage.rvmat stage 2 (Super, tex meop_vehicles\aerocar\data\destr_glass_plexi_full_ca.paa)
17:33:56 Bad uvSource None in meop_vehicles\aerocar\data\ac_glass_damage.rvmat stage 3 (Super, tex meop_vehicles\aerocar\data\destr_glass_plexi_full_ca.paa)
17:33:58 Error in expression <2_F"],50] select 0;
_vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]);
sleep>
17:33:58   Error position: <_hs modelToWorld [-0.4,-4,12.65]);
sleep>
17:33:58   Error Variable indéfinie dans une expression: _hs
17:33:58 File mpmissions\__CUR_MP.optre_madrigal\core\shops\fn_vehicleShopBuy.sqf..., line 100
17:34:17 MEOP_C_veh_LandVanAmb_Amb_F: glass7_destruct - unknown animation source hitglass7
17:34:17 MEOP_C_veh_LandVanAmb_Amb_F: glass8_destruct - unknown animation source hitglass8
17:34:17 MEOP_C_veh_LandVanAmb_Amb_F: glass9_destruct - unknown animation source hitglass9

le fameux endroit dans fn_vehicleShopBuy.sqf :


Code:
private "_vehicle";

if ((life_veh_shop select 0) == "med_air") then {
    _vehicle = createVehicle [_className,[0,0,999],[], 0, "NONE"];
    waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait?
    _vehicle allowDamage false;
    _hs = nearestObjects[getMarkerPos _spawnPoint,["Land_Hospital_side2_F"],50] select 0;
    _vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]);
    sleep 0.6;
} else {
    _vehicle = createVehicle [_className, (getMarkerPos _spawnPoint), [], 0, "NONE"];
    waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait?
    _vehicle allowDamage false; //Temp disable damage handling..
    _vehicle setPos (getMarkerPos _spawnPoint);
    _vehicle setVectorUp (surfaceNormal (getMarkerPos _spawnPoint));
    _vehicle setDir (markerDir _spawnPoint);
};

_vehicle lock 2;

[_vehicle,_colorIndex] call life_fnc_colorVehicle;
[_vehicle] call life_fnc_clearVehicleAmmo;

_vehicle setVariable ["trunk_in_use",false,true];
_vehicle setVariable ["vehicle_info_owners",[[getPlayerUID player,profileName]],true];

_vehicle disableTIEquipment true;
 
20220326174557_1.jpg
J'ajoute que l'achat fonctionne, on retrouve bien le véhicule dans notre garage, mais il n'a pas été sortie.
Et j'ajoute que quand on tente de le sortir par le garage cela nous indique ce qu'il y a sur l'image :

_vid : 197
life_garage_sp : med_air_1
getMarkerPos life_garage sp : coordonnées
markerDir life_garage sp : 178 789

il n'ya pas de véhicule sur le point de spawn. Le cout de sortie du véhicule vous a été remboursé.
 
Alors en classname j'ai
dans Config_vItems.hpp
Code:
    class med_market {
        name = "STR_Shops_Market";
        side = "med";

Config_Vehicles.hpp
Code:
   class med_car {
      side = "med";
      conditions = "license_med_mDriver";
      vehicles[] = {
         { "MEOP_C_veh_LandVanAmb_Amb_F", "call life_mediclevel >= 1" }
      };
   };

Code:
   class med_air {
      side = "med";
      conditions = "license_med_mPilot";
      vehicles[] = {
         { "MEOP_veh_aerocar_CivMed", "call life_mediclevel >= 1" }
      };
   };

Config_Licenses.hpp
Code:
    class mDive {
        variable = "mDive";
        displayName = "STR_License_Diving";
        price = 0;
        illegal = false;
        side = "med";
    };

    class mGun {
        variable = "mGun";
        displayName = "STR_License_Firearm";
        price = 0;
        illegal = false;
        side = "med";
    };

    class mDriver {
        variable = "mDriver";
        displayName = "STR_License_Driver";
        price = 0;
        illegal = false;
        side = "med";
    };

    class mTrucking {
        variable = "mTrucking";
        displayName = "STR_License_Truck";
        price = 0;
        illegal = false;
        side = "med";
    };

    class mBoat {
        variable = "mBoat";
        displayName = "STR_License_Boat";
        price = 0;
        illegal = false;
        side = "med";
    };

    class mPilot {
        variable = "mPilot";
        displayName = "STR_License_Pilot";
        price = 0;
        illegal = false;
        side = "med";
    };

Et pour les init en jeux
console sans nom
Code:
call{ 
this addAction[format ["%1 (%2 Cr)",localize (getText(missionConfigFile >> "Licenses" >> "mDive" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "mDive" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"mDive",1.5,false,false,"",' !license_med_mDive && playerSide isEqualTo independent ',5];   
this addAction[format ["%1 (%2 Cr)",localize (getText(missionConfigFile >> "Licenses" >> "mGun" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "mGun" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"mGun",1.5,false,false,"",' !license_med_mGun && playerSide isEqualTo independent ',5]; 
this addAction[format ["%1 (%2 Cr)",localize (getText(missionConfigFile >> "Licenses" >> "mDriver" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "mDriver" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"mDriver",1.5,false,false,"",' !license_med_mDriver && playerSide isEqualTo independent ',5]; 
this addAction[format ["%1 (%2 Cr)",localize (getText(missionConfigFile >> "Licenses" >> "mTrucking" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "mTrucking" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"mTrucking",1.5,false,false,"",' !license_med_mTrucking && playerSide isEqualTo independent ',5]; 
this addAction[format ["%1 (%2 Cr)",localize (getText(missionConfigFile >> "Licenses" >> "mBoat" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "mBoat" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"mBoat",1.5,false,false,"",' !license_med_mBoat && playerSide isEqualTo independent ',5]; 
this addAction[format ["%1 (%2 Cr)",localize (getText(missionConfigFile >> "Licenses" >> "mPilot" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "mPilot" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"mPilot",1.5,false,false,"",' !license_med_mPilot && playerSide isEqualTo independent ',5]; 
this addAction[localize"STR_Shops_Market",life_fnc_virt_menu,"med_market",1.5,false,false,"",' isNull objectParent player && playerSide isEqualTo independent ',5]; 
this addAction[localize "STR_Shops_C_Medic",life_fnc_clothingMenu,"med_clothing",1.5,true,true,"","true",5]; 
this addAction[localize "STR_MAR_EMS_Item_Shop",life_fnc_weaponShopMenu,"med_basic",1.5,true,true,"","true",5]; 
this addAction[localize "STR_MAR_W_E_Vehicle_Shop",life_fnc_vehicleShopMenu,["med_car",independent,"med_car_1","med","STR_MAR_Hospital"],1.5,true,true,"","true",5]; 
this addAction[localize "STR_MAR_Helicopter_Shop", life_fnc_vehicleShopMenu,["med_air",independent,"med_car_1","med","STR_MAR_Hospital"],1.5,true,true,"","true",5]; 
this addAction[localize "STR_MAR_W_Car_Garage", { if (life_HC_isActive) then { [getPlayerUID player,playerSide,"Car",player] remoteExecCall ["HC_fnc_getVehicles",HC_Life]; } else { [getPlayerUID player,playerSide,"Car",player] remoteExecCall ["TON_fnc_getVehicles",2];}; createDialog "Life_impound_menu"; disableSerialization; ctrlSetText[2802,"Recherche de véhicules..."]; life_garage_sp = "med_car_1"; life_garage_type = "Car"; },"",0,false,false,"",'playerSide isEqualTo independent',5]; 
this addAction[localize "STR_MAR_Helicopter_Garage", { if (life_HC_isActive) then { [getPlayerUID player,playerSide,"Air",player] remoteExecCall ["HC_fnc_getVehicles",HC_Life]; } else { [getPlayerUID player,playerSide,"Air",player] remoteExecCall ["TON_fnc_getVehicles",2];}; createDialog "Life_impound_menu"; disableSerialization; ctrlSetText[2802,"Recherche de véhicules..."]; life_garage_sp = "med_air_1"; life_garage_type = "Air"; },"",0,false,false,"",'playerSide isEqualTo independent',5];}

Marker : med_car_1
Marker : med_air_1
Marker : medic_spawn_1
 
Oui c'est ça le problème, dans ton Config_Vehicles.hpp la classname de ton shop est "med_air", c'est un nom qui est reservé au spawn sur le toit de l'hopîtal d'Altis.
Je suppose que tu n'en a pas besoin, il suffit de changer cette classname, par exemple :
Code:
   class shop_med_air {
      side = "med";
      conditions = "license_med_mPilot";
      vehicles[] = {
         { "MEOP_veh_aerocar_CivMed", "call life_mediclevel >= 1" }
      };
   };

Et de le modifier dans l'init de l'objet :
Code:
this addAction[localize "STR_MAR_Helicopter_Shop", life_fnc_vehicleShopMenu,["shop_med_air",independent,"med_air_1","med","STR_MAR_Hospital"],1.5,true,true,"","true",5];
 
Solution