Français Not solved Problèmes de modification d'interaction avec ACE dans une mission

  • Auteur de la discussion Auteur de la discussion MrB
  • Date de début Date de début
  • Bonjour Visiteur ! Les sujets de cette catégorie sont clos. Si vous souhaitez réouvrir, merci de nous contacter en précisant le lien du post à réouvrir !

    Hello Visiteur ! The topics in this category are closed. If you wish to reopen, please contact us with the link of the post you wish to reopen !

MrB

User
2/8/21
54
3
4
450
Bonjour,
J'expose mon soucis après une journée entière à avoir fais des test comme un fou.
J'ai trouvé on va dire une solution à un problème qui peut s'exposer sur de la modification de ACE.
Sauf que tout ne fonctionne pas ! Eh ouais !
1652028069775.png
Donc la j'ai bien réussis à faire un ajout d'interaction uniquement en COP.
Vérifier l'assurance = ça ouvre bien le dialog (tout dépends ou je positionne mon appel au script)
Sortir les passagers = ça marche mais ça pas été 100% testé, car j'ai mis une condition qui permet donc de mettre un HINT s'il y a personne dans le véhicule.
Mise en fourrière = ça marche pas (ni loc ni achat)
Fouiller véhicule = marche pas sur des loc mais sur des véhicule acheté ça marche.
Contravention = sur des loc, ça ferme direct le dialog, mais achat ça marche ...

J'ai fais l'appel de mon script à ce niveau la.
[CODE lang="cpp" title="init.sqf"]#include "..\script_macros.hpp"
/*
File: init.sqf
Author: Bryan "Tonic" Boardwine
Description:
Master client initialization file
*/
diag_log "----------------------------------------------------------------------------------------------------";
diag_log "--------------------------------- Starting Altis Life Client Init ----------------------------------";
diag_log format["------------------------------------------ Version %1 -------------------------------------------",(LIFE_SETTINGS(getText,"framework_version"))];
diag_log "----------------------------------------------------------------------------------------------------";

0 cutText[localize "STR_Init_ClientSetup","BLACK FADED",99999999];
_timeStamp = diag_tickTime;

waitUntil {!isNull (findDisplay 46)};
[] call compile preprocessFileLineNumbers "core\clientValidator.sqf";
enableSentences false;

diag_log "[Life Client] Initialization Variables";
[] call compile preprocessFileLineNumbers "core\configuration.sqf";
diag_log "[Life Client] Variables initialized";

diag_log "[Life Client] Setting up Eventhandlers";
[] call life_fnc_setupEVH;
diag_log "[Life Client] Eventhandlers completed";

diag_log "[Life Client] Setting up user actions";
[] call life_fnc_setupActions;
diag_log "[Life Client] User actions completed";

diag_log "[Life Client] Waiting for the server to be ready...";
waitUntil {!isNil "life_server_isReady" && {!isNil "life_server_extDB_notLoaded"}};

if (life_server_extDB_notLoaded) exitWith {
0 cutText [localize "STR_Init_ExtdbFail","BLACK FADED",99999999];
};

waitUntil {life_server_isReady};
diag_log "[Life Client] Server loading completed ";
0 cutText [localize "STR_Init_ServerReady","BLACK FADED",99999999];

/WL/
/*diag_log "::Life Client:: Check if player is in whiteList.";
0 cutText ["Verification dans la WL","BLACK FADED"];
0 cutFadeOut 99999999;
whiteListCheck = false;
isInWL = false;
[getPlayerUID player,player] remoteExecCall ["DB_fnc_whiteList",RSERV];
waitUntil {whiteListCheck};
if(!isInWL)exitWith{
0 cutText ["Vous n'êtes pas Whitelist sur le serveur ! Veuillez vous référer à un membre du staff A3LL.","BLACK FADED"];
0 cutFadeOut 99999999;
["NotWhitelistedServer",false,true] call BIS_fnc_endMission;
};
isInWL= nil;
whiteListCheck = nil;*/
/WL/

/1ST SPAWN/
diag_log "Client - Check if player exist in DB.";
alreadyStSpawnCheck = false;
alreadyConnectedSt = false;
[getPlayerUID player,player] remoteExecCall ["DB_fnc_firstSpawnCo",RSERV];
waitUntil {alreadyStSpawnCheck};
if (!alreadyConnectedSt) then {
life_is_stSpawn = true;
}else{
life_is_stSpawn = false;
};
alreadyConnectedSt= nil;
alreadyStSpawnCheck = nil;
/1ST SPAWN/

/* [] call SOCK_fnc_dataQuery;

waitUntil {life_session_completed};
0 cutText[localize "STR_Init_ClientFinish","BLACK FADED",99999999];

[] spawn life_fnc_escInterupt; */

switch (playerSide) do {
case west: {
if (life_is_stSpawn) then {
["NotPoliceConnected",false,true] call BIS_fnc_endMission;
sleep 20;
}else{
[] call SOCK_fnc_dataQuery;
};

waitUntil {life_session_completed};
0 cutText[localize "STR_Init_ClientFinish","BLACK FADED",99999999];

[] spawn life_fnc_escInterupt;

life_paycheck = LIFE_SETTINGS(getNumber,"paycheck_cop");
[] call life_fnc_initCop;
};
case civilian: {
[] call SOCK_fnc_dataQuery;

waitUntil {life_session_completed};
0 cutText[localize "STR_Init_ClientFinish","BLACK FADED",99999999];

[] spawn life_fnc_escInterupt;

life_paycheck = LIFE_SETTINGS(getNumber,"paycheck_civ");
if (life_is_stSpawn) then {
[] call life_fnc_initCivSt;
life_is_stSpawn = false;
}else{
[] call life_fnc_initCiv;
};
};
case independent: {
if (life_is_stSpawn) then {
["NotPompierConnected",false,true] call BIS_fnc_endMission;
sleep 20;
}else{
[] call SOCK_fnc_dataQuery;
};

waitUntil {life_session_completed};
0 cutText[localize "STR_Init_ClientFinish","BLACK FADED",99999999];

[] spawn life_fnc_escInterupt;

life_paycheck = LIFE_SETTINGS(getNumber,"paycheck_med");
[] call life_fnc_initMedic;
};
};

/// Job System - TP
life_paycheck = compile (if (life_paycheck isEqualType "") then {life_paycheck} else {str(life_paycheck)});

player setVariable ["restrained", false, true];
player setVariable ["Escorting", false, true];
player setVariable ["transporting", false, true];
player setVariable ["playerSurrender", false, true];
player setVariable ["realname", profileName, true];

diag_log "[Life Client] Past Settings Init";
[] execFSM "core\fsm\client.fsm";
diag_log "[Life Client] Executing client.fsm";

/// ACE - Vehicule interactions
_curObject = cursorObject;
[_curObject] spawn life_fnc_copVehiculeInteraction;


(findDisplay 46) displayAddEventHandler ["KeyDown", "_this call life_fnc_keyHandler"];
[player, life_settings_enableSidechannel, playerSide] remoteExecCall ["TON_fnc_manageSC", RSERV];

[] spawn life_fnc_survival;

0 cutText ["","BLACK IN"];

[...]
[/CODE]

Quand je met les deux lignes après l'appel du keyHandler ça ne marche pas. Bon j'ai trouvé le bon endroit.
Mais quelqu'un peu m'éclaircir sur pourquoi, certaines fonction ne fonctionne pas, alors qu'en temps normal ça marche !
Sachant que j'ai essayé beaucoup de chose (inclusion dans le keyHandler, dans le vInteractionMenu, dans le actionKeyHandler), mais dans les fichiers la ça me fais de la dupli d'interaction, donc 1000 rond qui spawn de ACE. J'ai essayé plusieurs solution mais rien. Donc je suis partis sur l'appel dans l'init.
Je vous remercie.

J'enverrais mes fichiers en PV pour ceux qui m'aiderons.
 
Update : le contravention marche sur location après avoir fait un vehicule civil. Idem pour fouiller. Mais en revanche toujours pas de fourrière, fin c'est pas trop normal quand même ... et sur la location plus de menu vérifier assurance qui s'ouvre ...
 
Pour la plupart des actions, elles utilisent le véhicule en face de toi pour interagir avec via la variable life_vInact_curTarget, donc même si le menu d’interaction est ouvert, il faut bien que ton curseur vise le véhicule au moment de cliquer sur l'action que tu veux faire.
Mais normalement dans ACE il y a une variable _target qui permet d'éviter ce soucis, mais je sais pas si tu peux l'utiliser avec ace_interact_menu_fnc_createAction :unsure:
 
Hello
Visiblement ça a l'air de fonctionner ...
Donc y a juste fouiller sur des véhicules COP qui ne marche pas mais ça je crois c'est normal de base ?
Mais ça à l'air d'être bon !
Y a juste un truc c'est que quand on met en fourrière des véhicules de location, ça le fait disparaitre ? Ca me le faisait déjà avant le ACE, c'est normal ?
Aussi comment je pourrais faire pour que si le véhicule est détruit il n'y ai plus d'interaction possible ?
Je te remercie :)
 
Dernière édition:
Y a juste un truc c'est que quand on met en fourrière des véhicules de location, ça le fait disparaitre ? Ca me le faisait déjà avant le ACE, c'est normal ?
Oui c'est normal :)

Aussi comment je pourrais faire pour que si le véhicule est détruit il n'y ai plus d'interaction possible ?
Oui tu peux ajouter dans les conditions de ton interaction :
Code:
condition = "(alive _target)";
 
Oui c'est normal :)


Oui tu peux ajouter dans les conditions de ton interaction :
Code:
condition = "(alive _target)";
Hello
Je reviens car j'ai fais une petite pause. J'ai essayé, mais ça marche pas ... ou je suis nul.
En gros dans ma condition j'ai "true" et , _conditions
Marche pas, déjà la y a des bug, en civil pas moyen d'avoir l'interaction ni en police municipale sous condition de licence ...
1652710496653.png
 
Hello
Je reviens car j'ai fais une petite pause. J'ai essayé, mais ça marche pas ... ou je suis nul.
En gros dans ma condition j'ai "true" et , _conditions
Marche pas, déjà la y a des bug, en civil pas moyen d'avoir l'interaction ni en police municipale sous condition de licence ...
Voir la pièce jointe 3012
Salut,

Voici des exemples fonctionnels que j'ai trouvé ici : https://github.com/acemod/ACE3/issues/1232

Code:
myaction = ['TestAction 1','Test','',{hint 'test';},{true}] call ace_interact_menu_fnc_createAction;
[player, 1, ["ACE_SelfActions"], myaction] call ace_interact_menu_fnc_addActionToObject;

myaction = ['TestAction 2','Test 2','',{hint 'test 2';},{true}] call ace_interact_menu_fnc_createAction;
[player, 1, ["ACE_SelfActions", "TestAction 1"], myaction] call ace_interact_menu_fnc_addActionToObject;

Tu peux essayer de modifier ce code à ta convenance
 
Salut,

Voici des exemples fonctionnels que j'ai trouvé ici : https://github.com/acemod/ACE3/issues/1232

Code:
myaction = ['TestAction 1','Test','',{hint 'test';},{true}] call ace_interact_menu_fnc_createAction;
[player, 1, ["ACE_SelfActions"], myaction] call ace_interact_menu_fnc_addActionToObject;

myaction = ['TestAction 2','Test 2','',{hint 'test 2';},{true}] call ace_interact_menu_fnc_createAction;
[player, 1, ["ACE_SelfActions", "TestAction 1"], myaction] call ace_interact_menu_fnc_addActionToObject;

Tu peux essayer de modifier ce code à ta convenance
C'est exactement ce que j'ai fais :-)