[Résolu] Problème Useractions, textures


#1

Bonjour à tous,

Je rencontre avec un problème avec mes model 3D, niveau useraction, je m’explique, plus simplement j’aimerais faire en sorte de pouvoir ingame (si je peux prendre cette exemple là), changer ma texture style comme si je changeais de chaîne mais ingame (je met une photo de l’écran vidéo projecteur, et en faite ben quand déjà de base quand j’allume donc en faisant mon interaction “allumer” , j’ai même pas d’image que j’ai sélectionnée dans ma config que ce présente sur l’écran blanc (ci dessous) , j’ai même le camo qui n’ai plus visible qui est hide de mon model.



Voilà le config.cpp , la partie concernée.

	class ecranp_mur_pabo: PHT
	{
		displayName = "Ecran Mur Projecteur";
		descriptionShort = "Ecran mural";
		author = "PABOLEX";
		scopeCurator = 2;
		scope = 2;
		vehicleClass = "pabolex_hightech";
		picture = "\Pack_High_Tech_PABOLEX\ecrans_video_proj_pabo\textures\logo\lobol_ecranp_mur.paa";
		model = "\Pack_High_Tech_PABOLEX\ecrans_video_proj_pabo\ecran_mur_pabo";
		hiddenSelections[] = {"change_proj"};
		
		class AnimationSources 
		{ 
			class tabproj
			{ 
	        source  =  "user" ; 
	        initPhase  =  0 ; 
	        animPeriod  =  1 ; 
        	};
			
			class change_proj:tabproj {};
			class proj1:tabproj {};
			class proj2:tabproj {};
			class proj3:tabproj {};
			class proj4:tabproj {};
		};
		
		class UserActions
		{
			class open_ecranp
			{
				displayNameDefault = "<img image='\Pack_High_Tech_PABOLEX\ecrans_video_proj_pabo\textures\animation\ecranp_pabo.paa' size='3' shadow='true' />";
				onlyforplayer = 0;
				priority=1;
				position = "screenpint";
				showWindow = 1;
				radius = 2;
				condition = "this animationPhase ""screenp"" < 0.5";
				statement = "this animate [""screenp"",1],this animate [""screenb"",1]";
			};
			
			class close_ecranp
			{
				displayNameDefault = "<img image='\Pack_High_Tech_PABOLEX\ecrans_video_proj_pabo\textures\animation\ecranpopen_pabo.paa' size='3' shadow='true' />";
				onlyforplayer = 0;
				priority=1;
				position = "screenpint";
				showWindow = 1;
				radius = 2;
				condition = "this animationPhase ""screenp"" > 0.5";
				statement = "this animate [""screenp"",0],this animate [""screenb"",0]";
			};
			
			class on_proj
			{
				displayNameDefault="<img image='\Pack_High_Tech_PABOLEX\textures_pabo\animation\start_pabo.paa' size='3' shadow='true' />";
				onlyForPlayer=0;
				priority=2;
				position="screentext1";
				showWindow = 1;
				radius=2;
				condition = "this animationPhase ""change_proj"" < 0.5";
				statement="this animateSource [""change_proj"",1]";
				hiddenSelectionsTextures[]= {"\Pack_High_Tech_PABOLEX\ecrans_video_proj_pabo\textures\texture_proj_pabo.paa"};
			};
			class off_proj
			{
				displayNameDefault="<img image='\Pack_High_Tech_PABOLEX\textures_pabo\animation\stop_pabo.paa' size='3' shadow='true' />";
				onlyForPlayer=0;
				priority=2;
				position="screentext1";
				showWindow = 1;
				radius=2;
				condition = "this animationPhase ""change_proj"" > 0.5";
				statement="this animateSource [""change_proj"",0]";
			};
			class proj_1:on_proj
			{
				displayNameDefault="<img image='\Pack_High_Tech_PABOLEX\textures_pabo\animation\1_pabo.paa' size='3' shadow='true' />";
				condition = "this animationPhase ""proj1"" < 0.5";
				statement="this animateSource [""proj1"",1],this animateSource [""proj2"",0],this animateSource [""proj3"",0],this animateSource [""proj4"",0],this animateSource [""change_proj"",1]";
				hiddenSelectionsTextures[]= {"\Pack_High_Tech_PABOLEX\ecrans_video_proj_pabo\textures\texture_proj1_pabo.paa"};
			};
			class proj_2:on_proj
			{
				displayNameDefault="<img image='\Pack_High_Tech_PABOLEX\textures_pabo\animation\2_pabo.paa' size='3' shadow='true' />";
				condition = "this animationPhase ""proj2"" < 0.5";
				statement="this animateSource [""proj2"",1],this animateSource [""proj1"",0],this animateSource [""proj3"",0],this animateSource [""proj4"",0],this animateSource [""change_proj"",1]";
				hiddenSelectionsTextures[]= {"\Pack_High_Tech_PABOLEX\ecrans_video_proj_pabo\textures\texture_proj2_pabo.paa"};
			};
			class proj_3:on_proj
			{
				displayNameDefault="<img image='\Pack_High_Tech_PABOLEX\textures_pabo\animation\3_pabo.paa' size='3' shadow='true' />";
				condition = "this animationPhase ""proj3"" < 0.5";
				statement="this animateSource [""proj3"",1],this animateSource [""proj1"",0],this animateSource [""proj2"",0],this animateSource [""proj4"",0],this animateSource [""change_proj"",1]";
				hiddenSelectionsTextures[]= {"\Pack_High_Tech_PABOLEX\ecrans_video_proj_pabo\textures\texture_proj3_pabo.paa"};
			};
			class proj_4:on_proj
			{
				displayNameDefault="<img image='\Pack_High_Tech_PABOLEX\textures_pabo\animation\4_pabo.paa' size='3' shadow='true' />";
				condition = "this animationPhase ""proj4"" < 0.5";
				statement="this animateSource [""proj4"",1],this animateSource [""proj1"",0],this animateSource [""proj2"",0],this animateSource [""proj3"",0],this animateSource [""change_proj"",1]";
				hiddenSelectionsTextures[]= {"\Pack_High_Tech_PABOLEX\ecrans_video_proj_pabo\textures\texture_proj4_pabo.paa"};
			};
		};
	};

Le model.cfg, la partie concernée.

	class ecran_mur_pabo: InheritedFromSomething
    {    
		skeletonName = "ecranp_Skeleton";
        sectionsInherit = ""; 
        sections[]= {change_proj};
		
        class Animations: Animations
        {
			class screenp: Translation
            {
                type="hide";
                source="screenp";
                selection="screenp";
                axis="screenp_axis";
				memory = 1;
                minValue=0;
                maxValue=1;
                angle0=0;
                angle1=0;
            };
			
			class screenb: Translation
            {
                type="translationY";
                source="screenbar";
                selection="screenb";
                axis="screenb_axis";
				memory = 1;
                minValue=0;
                maxValue=0.88;
                angle0=0;
                angle1=0;
            };
			
			class change_proj
            {
                type="direct";
                source="change_proj";
                selection="change_proj";
                axis="screentext1";
				//sourceAddress = "clamp";
				memory = 1;
                minValue=0;
                maxValue=0;
				hidevalue=0;
				unHideValue = 1;
                angle0=0;
                angle1=0;
            };
			
			class proj1:change_proj
            {
                source="change_proj";
                selection="proj1";
            };
			class proj2:change_proj
            {
                source="change_proj";
                selection="proj2";
            };
			class proj3:change_proj
            {
                source="change_proj";
                selection="proj3";
            };
			class proj4:change_proj
            {
                source="change_proj";
                selection="proj4";
            };
        };
    };

Je pourrais mettre la config et model.cfg s’il faut.

Ce que je veux

J’aimerais pouvoir switch mes différentes texture ingame, comme si je zapper les chaêne de la télé, sauf que la c’est sur un écran de vidéo projecteur. :slight_smile:

Ce que j’obtiens

Y a aucune erreur, sauf que j’obtiens mon camo qui est masqué et aucune texture d’affiche et je ne pas switch.

Si vraiment quelqu’un pourrait me help ça serait super cool, par ce que sans vous mentir, ça fait plusieurs jours que je cherche que je test et cela ne change rien.
:wink:

Merci d’avance,
Bonne soirée.


#2

Le hiddenselection dans la source , j ai jamais vu …
https://community.bistudio.com/wiki/Model_Config

Je ne croix pas que cela soit possible. Il faut que dans ton statement tu execute un script et non tes animations.

Pour info, le hiddenselection sert a masquer les textures d un model de part le class cfgvehicles et le hiddenselectiontextures lui , indique la texture a appliquer au spawn de l objet. Donc ne s utilise pas dans les sources.

A toi de faire un p tit script:


#3

@brutalzic
Hello,

Merci j’essayerais ça.
Merci de ton aide.
Bonne journée.


#4

@PABOLEX enses à actualiser ton sujet et à nous dire ou ça en est.


#6

Pour tout vous dire tout fonctionne à merveille j’ai enfin trouvé et grâce à une personne qui m’a aidé. Merci bien.


#7

Parfait, pourrais-tu communiquer la solution que ça aide les prochains ?


#8

@Tiiix yes je la mettrais :wink:


#9

Excuse moi de te relancer, mais tu penses pouvoir partager la solution bientôt ?


#10

Bonjour voilà la réel solution :
Dans le fichier model.cfg

Dans cfgskeletons :

class nom_Skeleton
    {
	isDiscrete=1;
        skeletonInherit = "";
        skeletonBones[]=
        {
            "mapartiep3d"

        };
 };	

Plus bas dans cfgmodels :

class nomp3d
    {    
	skeletonName = "nom_Skeleton";
        sectionsInherit = ""; 
        sections[]= {"mapartiep3d"};
    };

Dans le fichier config.cpp

Partie cfgvehicules

class variable
{
       ...

	hiddenSelections[] = {"partiep3d"};
	hiddenSelectionsTextures[] = {"couleur d'origine de la partie"};
	class Attributes
	{
		class ObjectTextureCustom0 //(à modifier + pas obligatoire je pense) merci bohemia x-)
		{
			displayName = "Ce que tu veux";
			property = "ObjectTextureCustom0";
			control = "Edit";
			expression = "_this setObjectTextureGlobal [0,_value]";
			defaultValue = "getObjectTextures _this select 0";
		};
	};

	class EventHandlers 
	{
		init = "_this execVM 'le chemin de ton init_quelquechose.sqf'";
	};

	class UserActions
	{			
		class on
		{
			displayName = "Nom de l'action";
			onlyForPlayer=0;
			priority=2;
			position="screentext1";
			showWindow = 1;
			radius=2;
			condition = "this animationPhase ""nom partie p3d"" < 0.5";
			statement="[this] execVM 'chemindusqf concerné'";
		      }; 
                      };
                  };

C’est pas impossible que j’ai fait une erreur quelque part :wink:

Voiilà voilà

Ps : @Tiiix voilà la solution


#11

J’ai oublié init_quelquechose.sqf

[] execVM "le chemin du sqf texture";

Et le sqf texture quelquechose.sqf

(_this select 0) setObjectTextureGlobal [0, "le chemin de la texture"];


#12

Une bonne solution … perso je fais autrement mais le resultat revient au meme.