Français Solved Problème d'actualisation des données dans HUD

okin74

User
18/5/20
114
4
10
1 100
rhone alpes FRANCE
Bonjour, bonsoir,


==========
Je me permet de poster ici pour un petit soucis que je rencontre avec un HUD.
Au niveau de l'installation, aucun soucis, tout passe mais mon problème est l'actualisation des données indiqués.

Par exemple, il y a un affichage du poids du sac a dos, mais il ne s'actualise pas en temps réel et du coup rends la chose beaucoup moins interactive que prévu.
Je pense qu'il actualise a la vérification faim/soif ? ou surement a la vérification de la santé ? un timer ? ^^

Pourriez-vous m'aider s'il vous plaît à faire en sorte qu'il soit plus dynamique et surtout réactif ^^ ?
Je vous remercie d'avance
==========

Corrigé le 28/01 grâce à l'aide de BastienWolf BastienWolf
==========


Je vous transmet le tutoriel d'installation ci-dessous afin que vous puissiez profiter aussi de ce HUD.
(Je tiens à préciser qu'il n'est pas de moi et qu'il est libre de droits.)

107410_20210128033255_1.png

Téléchargez le fichier ci-dessous et déposez le dans votre dossier textures à la racine de votre mission
Lien du fichier .paa

Dans votre hud_stats.hpp (VotreMission/dialog) remplacer entièrement le fichier par :
Code:
class playerHUD

    {

    idd=-1;

    movingEnable=0;

        fadein=0;

    duration = 10e10;

        fadeout=0;

    name="playerHUD";

    onLoad="uiNamespace setVariable ['playerHUD',_this select 0]";

    objects[]={};



    class controlsBackground

    {

        class fondIcon : life_RscPicture

        {

            idc = -1;

            text = "textures\UI.paa";

            x = safeZoneX+safeZoneW-0.2;

            y = safeZoneY+safeZoneH-0.58;

            w = 0.21; h = 0.31;

        };

    };



    class controls

    {

        class foodtext

        {

            type=0;

            idc=23500;

            style=0;

            x=-1;

            y=-1;

            w=0.3;

            h=0.05;

            sizeEx=0.03;

            size=1;

            font="PuristaSemibold";

            colorBackground[]={0,0,0,0};

            colorText[] = { 1 , 1 , 1 , 1 };

            shadow=1;

            text="";

        };



        class watertext

        {

            type=0;

            idc=23510;

            style=0;

            x=-1;

            y=-1;

            w=0.3;

            h=0.05;

            sizeEx=0.03;

            size=1;

            font="PuristaSemibold";

            colorBackground[]={0,0,0,0};

            colorText[] = { 1 , 1 , 1 , 1 };

            shadow=1;

            text="";

        };



        class healthtext

        {

            type=0;

            idc=23515;

            style=0;

            x=-1;

            y=-1;

            w=0.3;

            h=0.05;

            sizeEx=0.03;

            size=1;

            font="PuristaSemibold";

            colorBackground[]={0,0,0,0};

            colorText[] = { 1 , 1 , 1 , 1 };

            shadow=1;

            text="";

        };



        class weighttext

        {

            type=0;

            idc=23520;

            style=0;

            x=-1;

            y=-1;

            w=0.3;

            h=0.05;

            sizeEx=0.03;

            size=1;

            font="PuristaSemibold";

            colorBackground[]={0,0,0,0};

            colorText[] = { 1 , 1 , 1 , 1 };

            shadow=1;

            text="";

        };



        class maxweighttext

        {

            type=0;

            idc=23569;

            style=0;

            x=-0.5;

            y=-1;

            w=0.3;

            h=0.05;

            sizeEx=0.03;

            size=1;

            font="PuristaSemibold";

            colorBackground[]={0,0,0,0};

            colorText[] = { 1 , 1 , 1 , 1 };

            shadow=1;

            text="";

        };



        class moneytext

        {

            type=0;

            idc=23525;

            style=0;

            x=-1;

            y=-1;

            w=0.3;

            h=0.05;

            sizeEx=0.03;

            size=1;

            font="PuristaSemibold";

            colorBackground[]={0,0,0,0};

            colorText[] = { 1 , 1 , 1 , 1 };

            shadow=1;

            text="";

        };



        class fatingtext

        {

            type=0;

            idc=23550;

            style=0;

            x=-1;

            y=-1;

            w=0.3;

            h=0.05;

            sizeEx=0.03;

            size=1;

            font="PuristaSemibold";

            colorBackground[]={0,0,0,0};

            colorText[] = { 1 , 1 , 1 , 1 };

            shadow=1;

            text="";

        };

    };

};


Ensuite,
Dans votre fn_hudSetup.sqf (VotreMission/core/fonctions) remplacez entièrement le fichier par :
Code:
#include "..\..\script_macros.hpp"

/*

    File: fn_hudSetup.sqf

Author: Bryan "Tonic" Boardwine



Description:

Setups the hud for the player?

*/

disableSerialization;



cutRsc ["playerHUD", "PLAIN", 2, false];

[] call life_fnc_hudUpdate;



[] spawn

{

    private ["_dam"];

    for "_i" from 0 to 1 step 0 do {

        _dam = damage player;

        waitUntil {!((damage player) isEqualTo _dam)};

        [] call life_fnc_hudUpdate;

    };

};

[] spawn

{

    private ["_fat"];

    for "_i" from 0 to 1 step 0 do {

        _fat = getFatigue player;

        waitUntil {!((getFatigue player) isEqualTo _fat)};

        [] call life_fnc_hudUpdate;

    };

};


Ensuite,
dans votre fn_hudUpdate.sqf (VotreMission/core/fonctions) remplacez entièrement le fichier par :
Code:
#include "..\..\script_macros.hpp"

private["_ui","_food","_water","_health","_weight","_maxweight","_money","_cash","_ctrlSta"];

disableSerialization;

_ui = uiNameSpace getVariable ["playerHUD",displayNull];

if(isNull _ui) then {[] call life_fnc_hudSetup;};

_food = _ui displayCtrl 23500;

_water = _ui displayCtrl 23510;

_health = _ui displayCtrl 23515;

_weight = _ui displayCtrl 23520;

_money = _ui displayCtrl 23525;

_ctrlSta = _ui displayCtrl 23550;

_cash = life_cash;

//Update food

_food ctrlSetPosition [safeZoneX+safeZoneW-0.090,safeZoneY+safeZoneH-0.581];

_food ctrlSetText format["%1", life_hunger];

_food ctrlCommit 0;

//Update Water

_water ctrlSetPosition [safeZoneX+safeZoneW-0.090,safeZoneY+safeZoneH-0.528];

_water ctrlSetText format["%1", life_thirst];

_water ctrlCommit 0;

//Update Health

_health ctrlSetPosition [safeZoneX+safeZoneW-0.090,safeZoneY+safeZoneH-0.478];

_health ctrlSetText format["%1", round((1 - (damage player)) * 100)];

_health ctrlCommit 0;

//Update weight

_weight ctrlSetPosition [safeZoneX+safeZoneW-0.090,safeZoneY+safeZoneH-0.426];

_weight ctrlSetText format["%1 / %2", life_carryWeight,life_maxWeight];

_weight ctrlCommit 0;

//Update Money

_money ctrlSetPosition [safeZoneX+safeZoneW-0.090,safeZoneY+safeZoneH-0.374];

//Update Stamina

_ctrlSta ctrlSetPosition [safeZoneX+safeZoneW-0.090,safeZoneY+safeZoneH-0.322];

_ctrlSta ctrlSetText format ["%1%2", round((1 - (getFatigue player)) * 100)];

_ctrlSta ctrlCommit 0;

//_money ctrlSetText format["%1", format["%1",[_cash] call life_fnc_numberText]];

if(_cash >= 1000000) then {

    _cash = round(_cash / 1000000);

    _money ctrlSetText format["%1", format["%1 M",[_cash] call life_fnc_numberText]];

} else {

    if(_cash >= 100000) then {

        _cash = round(_cash / 1000);

        _money ctrlSetText format["%1", format["%1 K",[_cash] call life_fnc_numberText]];

    } else {

         _cash = round _cash;

        _money ctrlSetText format["%1", format["%1",[_cash] call life_fnc_numberText]];



    };

};

_money ctrlCommit 0;

Afin que le HUD s'actualise par toutes conditions voici le code à ajouter à la fin de chacun des fichiers cités ci-dessous
(cela parait énorme mais c'est super rapide à faire)

Code:
[] call life_fnc_hudUpdate;

Dans les fichiers qui y correspondent.
Premièrement, à l'utilisation d'un items, dans à la fin de core/pmenu/fn_useitems.sqf tu l'ajoute.

Ensuite, quand tu farm avec windows et que tu ramasse un items , dans core/actions/fn_gather.sqf

Ensuite, quand tu drop un items au sol :
dans core/pmenu/fn_remoteItem

Puis quand tu achète un sac, la taille peut varier ? Donc dans core/shops/fn_buyclothes.sqf
 
Dernière édition:
  • Love
Les réactions: Joe Dalton
il faut que tu call ton life_fnc_hud_update; à l'achat d'un sac.
Et aussi dès que tu utilise un items, que tu ajoutes un items dans ton sac ect :D
 
  • Like
Les réactions: Maxence
j'ai fait quelques test dans mon life_server.pbo mais pour l'instant rien de convainquant ^^

J'ai pas envie de compléter mon tuto avec des fautes, j'essaie de voir si j'arrive pas a trouver des information sur le web (manque de connaissances perso^^)
 
Afin que le HUD s'actualise par toutes conditions voici le code à ajouter à la fin de chacun des fichiers cités ci-dessous
(cela parait énorme mais c'est super rapide à faire)

Comme il y a eu une édition de tuto (qui me sauve mon dev' au passage ! (y) )entre le temps où je l'ai lu une première fois et le temps de le faire, tu peux me confirmer que la liste des fichiers à modifier sont uniquement
fn_useitems.sqf, fn_gather.sqf, fn_remoteItem, fn_buyclothes.sqf ?
 
Comme il y a eu une édition de tuto (qui me sauve mon dev' au passage ! (y) )entre le temps où je l'ai lu une première fois et le temps de le faire, tu peux me confirmer que la liste des fichiers à modifier sont uniquement
fn_useitems.sqf, fn_gather.sqf, fn_remoteItem, fn_buyclothes.sqf ?
Oui je te confirme :)

Réellement on peut en ajouter d'autres encore pour que ce soit vraiment top, je prépare la mise a jour du tuto mais en attendant ça le fait !
 
  • Like
Les réactions: Joe Dalton