Question bouton

#1

bonjour bonsoir ,
je vous contacte pour savoir comment ajouter un bouton close pour sortir un script ?
comment le relier a mon dossier menu de me script ?
class controls {
class Menu: Life_RscButtonMenu {
idc = -1;
text = “$STR_Global_Close”;
onButtonClick = “closeDialog 0;”;
x = 0.324687 * safezoneW + safezoneX;
y = 0.643 * safezoneH + safezoneY;
w = 0.061875 * safezoneW;
h = 0.022 * safezoneH;
};

0 Likes

#2

Pour moi ta question n’est vraiment pas claire donc je pourrais pas t’aider

0 Likes

#3

Salut @curtis12, tu pourrais envoyer le .hpp de ton dialog ? Tu vas voir c’est pas si compliqué

0 Likes

#4

https://mon-partage.fr/f/j28N9wxS/

0 Likes

#5

Pourrais tu etre plus claire car un closedialog sert a sortir d un menu/display et non d un script.

0 Likes

#6

Tout dépend de combien de boutons du as dans ton menu et leur placement, mais ce bout de code se place dans le fichier en .h ou .hpp situé dans don dossier dialog. A toi de le rajouter dans la class controls (ne met pas deux fois “class controls”, tu dois inscrire class Menu: … dans la class controls déjà existant

0 Likes

#7

ok je vais tester sa je vous tien au courant encore grand merci depuis j’ai fait mais premier script je suis a fond dedans :wink:

0 Likes

#8

en gros dans ce script quand je le lance je ne peux plus en sortir je voudrais faire une touche pour en sortir , https://www.youtube.com/watch?v=6ACpI_2GzyM sa a marché pour haut bas mais pas close ?

0 Likes

#9

ok … tu es donc sur un menu a fermer par sqf:
il te faudra :

disableSerialization =>https://community.bistudio.com/wiki/disableSerialization

creer ton bouton par script:

ctrlcreate => https://community.bistudio.com/wiki/ctrlCreate

ensuite un

buttonSetAction => https://community.bistudio.com/wiki/buttonSetAction

contenant le closedialog ou closedisplay.
https://community.bistudio.com/wiki/closeDialog
https://community.bistudio.com/wiki/closeDisplay

Perso, ce genre de menu je l aurais totalement realiser en sqf … apres chacun son truc

0 Likes

#10

Et pourquoi pas un eventHandler dans ton script ?
Un eventHandler qui récupère ta touche échap ou Y ou n’importe :smiley:

https://community.bistudio.com/wiki/Arma_3:_Event_Handlers

0 Likes

#11

Dans ce cas, autant utiliser le fn_keyhandler.sqf qui utilise deja cet evenhandler @Adonis_Johnson.

0 Likes

#12

Ouais au pire, Mais je pensais à un eventHandler privé au script (Je sais même pas si c’est possible xD)

Mais sinon oui, dans le KeyHandler tu ajoute un bouton avec des conditions qui check si ton script est lancé et si c’est le cas, alors ça ferme le script
Une idée après à toi de voir :smiley:

0 Likes

#13

ok je vais tester tout sa je vous tien au courent :wink: encore grand merci d’être présent pour nous apprendre le dev sa me motive chaque jours a évoluer :wink:

1 Like

#14

La modération attends d’être tenu au courant (pour faire son travail)

0 Likes

#15

@curtis12 merci de ne pas laisser ton sujet mourrir, et de le tenir à jour pour qu’on sache ou tu en es, si c’est réglé etc…

0 Likes

#16

oui dsl la en suis en plain déménagement pour le 27 comme je taf 14h20 fini a 22h00 mais je regarde sa vite promis

1 Like

#17

Pour répondre à ta question, pour quitter le menu grâce à une touche il faut que tout en haut de ton dialog, tu dois mettre :

onLoad = "CloseKeyEH = (_this select 0) displayAddEventHandler [""KeyDown"", ""if (((_this select 1) == 1)) then {closeDialog 0};""];";

En gros, tu dis que dans le menu où cette ligne se trouve ajoute un évènement lorsqu’une touche est pressé. Celle execute ton “if” qui te dit que si la touche “1” est pressé (qui est échap. (Celle après les “==”) Tu peux les retrouver tous ici : https://community.bistudio.com/wiki/DIK_KeyCodes (En bas dans French Key)) alors ca ferme le dialog.

De plus, si tu souhaite une solution pour relier ton dialog à des scripts facilement, il te suffit d’ajouter ceci en haut :

onLoad = "uiNamespace setVariable ['tonmenuvar', _this select 0];";
onUnload = "uiNamespace setVariable ['tonmenuvar', objNull];";
onDestroy = "uiNamespace setVariable ['tonmenuvar', objNull];";

Et une fois ceci fait, il te suffit de faire par exemple ceci :

((uiNamespace getVariable "tonmenuvar")displayCtrl TONIDC) ctrlEnable false;

On récupère l’id du menu et sur l’élement tatata (L’idc, par exemple 0001 dans l’exemple ci dessous) tu désactive l’interaction avec celui-ci. Tous les différents contrôle fonctionnant sur ce principe se trouve ici : https://community.bistudio.com/wiki/Category:Scripting_Commands_Arma_3
(Ceux commençant pour la plupart par “Ctrl”).

Au total, cela te donne ceci. Bonne continuation.

class tonmenu {
idd = 5152100;
movingEnable = 0;
enableSimulation = 1;
onLoad = "uiNamespace setVariable ['tonmenuvar', _this select 0]; CloseKeyEH = (_this select 0) displayAddEventHandler [""KeyDown"", ""if (((_this select 1) == 1)) then {closeDialog 0};""];";
onUnload = "uiNamespace setVariable ['tonmenuvar', objNull];";
onDestroy = "uiNamespace setVariable ['tonmenuvar', objNull];";

class controls {
	class BackgroundBlackMenuStart: Life_RscPicture {
        idc = 0001;
        text = "";
        x = 0 * safezoneW + safezoneX;
        y = 0 * safezoneH + safezoneY;
        w = 1 * safezoneW;
        h = 1 * safezoneH;
    };
0 Likes

#18

grand merci je vais tester cela :wink: je vous tient au courant

0 Likes