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 !
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.
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 !
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.
- Vos logs serveur | Your server logs
- https://drive.google.com/file/d/1ncYGzCTutblKGk0ovdzgWyQAKHUqwo49/view?usp=sharing
- Vos logs client | Your client logs
- https://drive.google.com/file/d/1r8FtcqeBztwJQt7dkLtt00XS73_wbXgs/view?usp=sharing