Bonjour aujourd'hui je release un script que j'ai fait cette nuit car je n'avais rien de mieux a faire
Crédits : Moi (Daniels Morris)
Difficulté d'installation : Ez (facile)
A quoi ressemble le script ?
Pret ? C'est parti !
Etape 1 :
Dans le fichier config_master.hpp du dossier config rajoutez cette ligne à la fin du fichier :
[CODE title="Master"]#include "Config_camera.hpp"[/CODE]
gyazo.com
Puis créez un fichier dans le dosser config que vous nommerez Config_camera.hpp
Et rajoutez ces lignes dans le fichier que vous venez de créer
[CODE lang="http" title="Config_camera.hpp"]/*
Fichier: Config_camera.hpp
Auteur : Daniels Morris
Description :
Permet d'ajouter des caméras
*/
/*
class Exemple { //Iici met un nom pour te repérer
Nom = "Place de Kavala"; // Le nom qui apparaitra dans la listbox
icon = "\A3\ui_f\data\IGUI\cfg\simpleTasks\letters\k_ca.paa"; //L'icon que tu veux mettre
pos[] = {{3612.12,13149.1,10}, {3648.66,13108.1,0.00144291}};//Array 1 = Endroit ou spawn la caméra , Array 2 = Endroit ou la caméra doit regarder
};
*/
class CameraTarget {
class PlaceKavala {
Nom = "Place de Kavala";
icon = "\A3\ui_f\data\IGUI\cfg\simpleTasks\letters\k_ca.paa";
pos[] = {{3612.12,13149.1,10}, {3648.66,13108.1,0.00144291}};
};
class PlaceAthira {
Nom = "Place d'Athira";
icon = "\A3\ui_f\data\IGUI\cfg\simpleTasks\letters\a_ca.paa";
pos[] = {{14007.9,18718.9,20.7253}, {14050.1,18753.4,0.00148582}};
};
class Aeroport {
Nom = "Aéroport";
icon = "\A3\ui_f\data\IGUI\cfg\simpleTasks\letters\a_ca.paa";
pos[] = {{14603.4,16788,17.7987}, {14528.1,16854.2,0.00144768}};
};
};[/CODE]
Etape 2:
Rendez vous dans le core/configuration.sqf et ajoutez à la fin du fichier (comme sur l'image) :
[CODE title="Configuration.sqf"]life_camManager = objNull;
[/CODE]
https://gyazo.com/6a2055f39cdbee3926793ae2c7b0f715
Etape 3:
Dans le dialog/MasterHandler.hpp ajoutez à la fin cette ligne :
[CODE title="Dialog"]#include "CameraManager.hpp"[/CODE]
Une fois fait, créez le fichier CameraManager.hpp dans le dossier dialog et mettez ceci à l'intérieur :
[CODE lang="php" title="Dialog"]/*
Fichier: CameraManager.hpp
Auteur : Daniels Morris
*/
/* Positions */
#define Xd_PositionX(X) #((((X * (getResolution select 0)) / 1920) * safeZoneW) / (getResolution select 0) + safeZoneX)
#define Xd_PositionY(Y) #((((Y * (getResolution select 1)) / 1080) * safeZoneH) / (getResolution select 1) + safeZoneY)
#define Xd_PositionW(W) #((((W * (getResolution select 0)) / 1920) * safeZoneW) / (getResolution select 0))
#define Xd_PositionH(H) #((((H * (getResolution select 1)) / 1080) * safeZoneH) / (getResolution select 1))
#define Xd_PositionXGroup(X) #((((X * (getResolution select 0)) / 1920) * safeZoneW) / (getResolution select 0))
#define Xd_PositionYGroup(Y) #((((Y * (getResolution select 1)) / 1080) * safeZoneH) / (getResolution select 1))
#define Xd_FontSize(H) #(((H * 0.00222222) * (getResolution select 1)) / 1080)
/* Colors */
#define Xd_toColor_RGBA(R,G,B,A) { R / 255, G / 255, B / 255, A / 255 }
#define Xd_Color_ffffff Xd_toColor_RGBA(255,255,255,255)
/* IDXs */
#define Xd_IdBaseline 18981
#define Xd_IdControl_Web_1920___1_Background Xd_IdBaseline + 1
#define Xd_IdControl_Web_1920___1_Image Xd_IdBaseline + 2
#define Xd_IdControl_Web_1920___1_ListBox Xd_IdBaseline + 3
#define Xd_IdControl_Web_1920___1_Titre Xd_IdBaseline + 4
class CameraManager {
idd = 6676;
name= "CameraManager";
movingEnable = 0;
enableSimulation = 1;
class Controls {
class Background: IGUIBack {
idc = -1;
x = Xd_PositionX(691);
y = Xd_PositionY(295);
w = Xd_PositionW(538);
h = Xd_PositionH(490);
colorBackground[] = {0,0,0,0.7};
};
class Image: life_RscPicture {
idc = 6677;
x = Xd_PositionX(705);
y = Xd_PositionY(311);
w = Xd_PositionW(511);
h = Xd_PositionH(395);
text = "";
};
class ListBox: life_RscXListBox {
idc = 6678;
x = Xd_PositionX(754);
y = Xd_PositionY(720);
w = Xd_PositionW(413);
h = Xd_PositionH(44);
colorBackground[] = {0,0,0,0.7};
sizeEx = 0.035;
tooltip = "Clique ici pour changer de caméra";
onLBSelChanged = "[]spawn life_fnc_cameraPos;";
};
class Titre: Life_RscTitle {
idc = -1;
x = Xd_PositionX(691);
y = Xd_PositionY(265);
w = Xd_PositionW(538);
h = Xd_PositionH(25);
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"};
text = "Management des caméras";
};
class Credits: Life_RscTitle {
idc = -1;
x = Xd_PositionX(949);
y = Xd_PositionY(794);
w = Xd_PositionW(280);
h = Xd_PositionH(31);
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"};
text = "Crée par : Daniels Morris"
};
};
};
[/CODE]
Etape 4:
On y est presque !
Dans votre dossier core, créez un dossier camera_manager
Dans ce dossier mettez ces 2 fichiers :
[CODE lang="php" title="fn_cameraChange.sqf"]/*
Fichier: fn_cameraChange.sqf
Auteur : Daniels Morris
Description :
Permet de load les caméra depuis la config
*/
disableSerialization;
createDialog "CameraManager";
private _dialog = findDisplay 6676;
private _listbox = _dialog displayCtrl 6678;
private _config = missionConfigFile >> "CameraTarget";
private _config = "true" configClasses (missionConfigFile >> "CameraTarget");
{
private _index = _listbox lbAdd format ["%1",getText(_x >> "Nom")];
private _pos = getArray(_x >> "pos");
_listbox lbSetPicture [_index,getText(_x >> "icon")];
_listbox lbSetData [_index,str (_pos)];
}forEach _config;
_listbox lbSetCurSel 0;
[/CODE]
[CODE lang="cpp" title="fn_cameraPos.sqf"]/*
Fichier: fn_cameraPos.sqf
Auteur : Daniels Morris
Description :
Permet le switch des cameras
*/
private _dialog = findDisplay 6676;
private _picture = _dialog displayCtrl 6677;
private _listbox = _dialog displayCtrl 6678;
private _index = lbCurSel _listbox;
private _data = _listbox lbData _index;
private _parse = parseSimpleArray _data;
if !(isPipEnabled) exitWith {hint "Vous devez activer le 'Picture in Picture' (PiP) dans vos paramètres vidéo pour utilser ceci !"};
if (_index isEqualTo -1) exitWith {};
private _poscreate = (_parse #0);
private _rotate = (_parse #1);
if !(life_camManager isEqualTo objNull) then {
life_camManager cameraEffect ["terminate","back"];
camDestroy life_camManager;
life_camManager = objNull;
};
_picture ctrlSetText "";
_picture ctrlSetText "#(argb,512,512,1)r2t(rtt1,1.0)";
life_camManager = "camera" camCreate _poscreate;
life_camManager setPos _poscreate;
life_camManager camSetTarget _rotate;
life_camManager camSetFov 0.5;
life_camManager cameraEffect ["Internal", "Back", "rtt1"];
if (daytime >= 20 && daytime >= 5) then {
"rtt1" setPiPEffect [1];
} else {
"rtt1" setPiPEffect [0];
};
life_camManager camCommit 0;[/CODE]
Etape 5:
En fin , allez dans votre functions.hpp et déclarez comme ceci vos nouveaux fichiers en rajoutant ces lignes en dessous de
[CODE lang="csharp" title="Functions.hpp"] class camera_manager {
file = "core\camera_manager";
class cameraChange {};
class cameraPos {};
};[/CODE]
Tips : Si vous souhaitez activer le menu à partir d'un panneau utilisez :
[CODE lang="csharp" title="addaction"]this addAction["<t color='#ff0000'>Caméras</t>",life_fnc_cameraChange,"",0,false,false,"",'vehicle player == player && player distance _target < 4 '];
[/CODE]
Tips 2 : Si vous souhaitez activiter le menu à partir d'un bouton utilisez :
Voila le tuto est fini, si vous avez des questions , n'hésitez pas.
Merci de laisser les crédits !
Crédits : Moi (Daniels Morris)
Difficulté d'installation : Ez (facile)
A quoi ressemble le script ?
Pret ? C'est parti !
Etape 1 :
Dans le fichier config_master.hpp du dossier config rajoutez cette ligne à la fin du fichier :
[CODE title="Master"]#include "Config_camera.hpp"[/CODE]

Gyazo
Puis créez un fichier dans le dosser config que vous nommerez Config_camera.hpp
Et rajoutez ces lignes dans le fichier que vous venez de créer
[CODE lang="http" title="Config_camera.hpp"]/*
Fichier: Config_camera.hpp
Auteur : Daniels Morris
Description :
Permet d'ajouter des caméras
*/
/*
class Exemple { //Iici met un nom pour te repérer
Nom = "Place de Kavala"; // Le nom qui apparaitra dans la listbox
icon = "\A3\ui_f\data\IGUI\cfg\simpleTasks\letters\k_ca.paa"; //L'icon que tu veux mettre
pos[] = {{3612.12,13149.1,10}, {3648.66,13108.1,0.00144291}};//Array 1 = Endroit ou spawn la caméra , Array 2 = Endroit ou la caméra doit regarder
};
*/
class CameraTarget {
class PlaceKavala {
Nom = "Place de Kavala";
icon = "\A3\ui_f\data\IGUI\cfg\simpleTasks\letters\k_ca.paa";
pos[] = {{3612.12,13149.1,10}, {3648.66,13108.1,0.00144291}};
};
class PlaceAthira {
Nom = "Place d'Athira";
icon = "\A3\ui_f\data\IGUI\cfg\simpleTasks\letters\a_ca.paa";
pos[] = {{14007.9,18718.9,20.7253}, {14050.1,18753.4,0.00148582}};
};
class Aeroport {
Nom = "Aéroport";
icon = "\A3\ui_f\data\IGUI\cfg\simpleTasks\letters\a_ca.paa";
pos[] = {{14603.4,16788,17.7987}, {14528.1,16854.2,0.00144768}};
};
};[/CODE]
Etape 2:
Rendez vous dans le core/configuration.sqf et ajoutez à la fin du fichier (comme sur l'image) :
[CODE title="Configuration.sqf"]life_camManager = objNull;
[/CODE]

https://gyazo.com/6a2055f39cdbee3926793ae2c7b0f715
Etape 3:
Dans le dialog/MasterHandler.hpp ajoutez à la fin cette ligne :
[CODE title="Dialog"]#include "CameraManager.hpp"[/CODE]
Une fois fait, créez le fichier CameraManager.hpp dans le dossier dialog et mettez ceci à l'intérieur :
[CODE lang="php" title="Dialog"]/*
Fichier: CameraManager.hpp
Auteur : Daniels Morris
*/
/* Positions */
#define Xd_PositionX(X) #((((X * (getResolution select 0)) / 1920) * safeZoneW) / (getResolution select 0) + safeZoneX)
#define Xd_PositionY(Y) #((((Y * (getResolution select 1)) / 1080) * safeZoneH) / (getResolution select 1) + safeZoneY)
#define Xd_PositionW(W) #((((W * (getResolution select 0)) / 1920) * safeZoneW) / (getResolution select 0))
#define Xd_PositionH(H) #((((H * (getResolution select 1)) / 1080) * safeZoneH) / (getResolution select 1))
#define Xd_PositionXGroup(X) #((((X * (getResolution select 0)) / 1920) * safeZoneW) / (getResolution select 0))
#define Xd_PositionYGroup(Y) #((((Y * (getResolution select 1)) / 1080) * safeZoneH) / (getResolution select 1))
#define Xd_FontSize(H) #(((H * 0.00222222) * (getResolution select 1)) / 1080)
/* Colors */
#define Xd_toColor_RGBA(R,G,B,A) { R / 255, G / 255, B / 255, A / 255 }
#define Xd_Color_ffffff Xd_toColor_RGBA(255,255,255,255)
/* IDXs */
#define Xd_IdBaseline 18981
#define Xd_IdControl_Web_1920___1_Background Xd_IdBaseline + 1
#define Xd_IdControl_Web_1920___1_Image Xd_IdBaseline + 2
#define Xd_IdControl_Web_1920___1_ListBox Xd_IdBaseline + 3
#define Xd_IdControl_Web_1920___1_Titre Xd_IdBaseline + 4
class CameraManager {
idd = 6676;
name= "CameraManager";
movingEnable = 0;
enableSimulation = 1;
class Controls {
class Background: IGUIBack {
idc = -1;
x = Xd_PositionX(691);
y = Xd_PositionY(295);
w = Xd_PositionW(538);
h = Xd_PositionH(490);
colorBackground[] = {0,0,0,0.7};
};
class Image: life_RscPicture {
idc = 6677;
x = Xd_PositionX(705);
y = Xd_PositionY(311);
w = Xd_PositionW(511);
h = Xd_PositionH(395);
text = "";
};
class ListBox: life_RscXListBox {
idc = 6678;
x = Xd_PositionX(754);
y = Xd_PositionY(720);
w = Xd_PositionW(413);
h = Xd_PositionH(44);
colorBackground[] = {0,0,0,0.7};
sizeEx = 0.035;
tooltip = "Clique ici pour changer de caméra";
onLBSelChanged = "[]spawn life_fnc_cameraPos;";
};
class Titre: Life_RscTitle {
idc = -1;
x = Xd_PositionX(691);
y = Xd_PositionY(265);
w = Xd_PositionW(538);
h = Xd_PositionH(25);
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"};
text = "Management des caméras";
};
class Credits: Life_RscTitle {
idc = -1;
x = Xd_PositionX(949);
y = Xd_PositionY(794);
w = Xd_PositionW(280);
h = Xd_PositionH(31);
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"};
text = "Crée par : Daniels Morris"
};
};
};
[/CODE]
Etape 4:
On y est presque !
Dans votre dossier core, créez un dossier camera_manager
Dans ce dossier mettez ces 2 fichiers :
[CODE lang="php" title="fn_cameraChange.sqf"]/*
Fichier: fn_cameraChange.sqf
Auteur : Daniels Morris
Description :
Permet de load les caméra depuis la config
*/
disableSerialization;
createDialog "CameraManager";
private _dialog = findDisplay 6676;
private _listbox = _dialog displayCtrl 6678;
private _config = missionConfigFile >> "CameraTarget";
private _config = "true" configClasses (missionConfigFile >> "CameraTarget");
{
private _index = _listbox lbAdd format ["%1",getText(_x >> "Nom")];
private _pos = getArray(_x >> "pos");
_listbox lbSetPicture [_index,getText(_x >> "icon")];
_listbox lbSetData [_index,str (_pos)];
}forEach _config;
_listbox lbSetCurSel 0;
[/CODE]
[CODE lang="cpp" title="fn_cameraPos.sqf"]/*
Fichier: fn_cameraPos.sqf
Auteur : Daniels Morris
Description :
Permet le switch des cameras
*/
private _dialog = findDisplay 6676;
private _picture = _dialog displayCtrl 6677;
private _listbox = _dialog displayCtrl 6678;
private _index = lbCurSel _listbox;
private _data = _listbox lbData _index;
private _parse = parseSimpleArray _data;
if !(isPipEnabled) exitWith {hint "Vous devez activer le 'Picture in Picture' (PiP) dans vos paramètres vidéo pour utilser ceci !"};
if (_index isEqualTo -1) exitWith {};
private _poscreate = (_parse #0);
private _rotate = (_parse #1);
if !(life_camManager isEqualTo objNull) then {
life_camManager cameraEffect ["terminate","back"];
camDestroy life_camManager;
life_camManager = objNull;
};
_picture ctrlSetText "";
_picture ctrlSetText "#(argb,512,512,1)r2t(rtt1,1.0)";
life_camManager = "camera" camCreate _poscreate;
life_camManager setPos _poscreate;
life_camManager camSetTarget _rotate;
life_camManager camSetFov 0.5;
life_camManager cameraEffect ["Internal", "Back", "rtt1"];
if (daytime >= 20 && daytime >= 5) then {
"rtt1" setPiPEffect [1];
} else {
"rtt1" setPiPEffect [0];
};
life_camManager camCommit 0;[/CODE]
Etape 5:
En fin , allez dans votre functions.hpp et déclarez comme ceci vos nouveaux fichiers en rajoutant ces lignes en dessous de
Code:
tag = "life";
[CODE lang="csharp" title="Functions.hpp"] class camera_manager {
file = "core\camera_manager";
class cameraChange {};
class cameraPos {};
};[/CODE]
Tips : Si vous souhaitez activer le menu à partir d'un panneau utilisez :
[CODE lang="csharp" title="addaction"]this addAction["<t color='#ff0000'>Caméras</t>",life_fnc_cameraChange,"",0,false,false,"",'vehicle player == player && player distance _target < 4 '];
[/CODE]
Tips 2 : Si vous souhaitez activiter le menu à partir d'un bouton utilisez :
Code:
onButtonClick = "call life_fnc_cameraChange";
Voila le tuto est fini, si vous avez des questions , n'hésitez pas.
Merci de laisser les crédits !
Dernière édition: