Vous utilisez un navigateur non à jour ou ancien. Il ne peut pas afficher ce site ou d'autres sites correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
J'aimerais créer une petite fonction qui permettrait de régénérer d'1 point de vie toutes les 2.5s ainsi qu'un maximum de 15 pv en + que ceux d'origine exemple :
J'ai 65pv et à la fin j'en ai 70.
Je n'ai tout simplement pas d'idée de comment le mettre en place ? Si quelqu'un en a c'est preneur!
Dans ton fn_useItem.sqf, en dessous de switch (_item) do { tu peux ajouter :
Code:
case "class_de_ton_item": {
if ([false,_item,1] call life_fnc_handleInv) then { // Enlève l'item de l'inventaire
hint "Regénération de votre santé en cours !";
[] spawn {
_curHealth = damage player;
while {(((_curHealth - (damage player)) < 0.15) && (damage player > 0))} do {
player setDamage ((damage player) - 0.01);
uiSleep 2.5;
};
};
};
};
Dans ton fn_useItem.sqf, en dessous de switch (_item) do { tu peux ajouter :
Code:
case "class_de_ton_item": {
if ([false,_item,1] call life_fnc_handleInv) then { // Enlève l'item de l'inventaire
hint "Regénération de votre santé en cours !";
[] spawn {
_curHealth = damage player;
while {(((_curHealth - (damage player)) < 0.15) && (damage player > 0))} do {
player setDamage ((damage player) - 0.01);
uiSleep 2.5;
};
};
};
};
1) Ouvrir le function.hpp et ajouter dans la class Actions {
[CODE title="Function.hpp"]class healself {};[/CODE]
2) Soit tu va utiliser un vItems déjà existant (Donc tu passe cette étape) ou alors tu en créer un dans le fichier config_vItems.hpp
3)Tu créer un fichier se nommant fn_healself.sqf dans le dossier Core\actions et tu copie colle :
[CODE title="fn_healself.hpp"]#include "..\..\script_macros.hpp"
/*
File: fn_healself.sqf
Author: Thomas SANCHET
Description:
Heal self with VIitems
*/
private ["_heal","_healself","_upp","_ui","_progress","_pgText","_cP","_previousState"];
life_interrupted = false;
_heal = getDammage player;
_healself = _heal - 0.15;
if (_heal == 0) exitWith {hint "Tu est en pleine forme"};
if (!([false,"medikit",1] call life_fnc_handleInv)) exitWith {};
life_action_inUse = true;
_upp = format [localize "STR_ISTR_heal_self"];
for "_i" from 0 to 1 step 0 do {
if (animationState player != "AinvPknlMstpSnonWnonDnon_medic_1") then {
[player,"AinvPknlMstpSnonWnonDnon_medic_1",true] remoteExecCall ["life_fnc_animSync",RCLIENT];
player switchMove "AinvPknlMstpSnonWnonDnon_medic_1";
player playMoveNow "AinvPknlMstpSnonWnonDnon_medic_1";
};
uiSleep 0.2;
if (isNull _ui) then {
"progressBar" cutRsc ["life_progress","PLAIN"];
_ui = uiNamespace getVariable "life_progress";
_progressBar = _ui displayCtrl 38201;
_titleText = _ui displayCtrl 38202;
};
_cP = _cP + 0.01;
_progress progressSetPosition _cP;
_pgText ctrlSetText format ["%3 (%1%2)...",round(_cP * 100),"%",_upp];
if (_cP >= 1) exitWith {};
if (!alive player) exitWith {};
if (life_interrupted) exitWith {};
};
life_action_inUse = false;
"progressBar" cutText ["","PLAIN"];
player playActionNow "stop";
if (!alive player) exitWith {};
if (life_interrupted) exitWith {life_interrupted = false; titleText[localize "STR_NOTF_ActionCancel","PLAIN"];};
switch (true) do {
player setDammage _healself;
};
titleText[format [localize "STR_ISTR_heal_self_Success",_displayName],"PLAIN"];[/CODE]
Attention : Tu soit mettre la class de ton item virtuel à place de "medikit" ligne 14
4) Créer les stringlables suivants :
Code:
STR_ISTR_heal_self //Texte qui va s'affiché dans ta barre de progression
STR_ISTR_heal_self_Success // Texte qui va s'affiché à la fin de l'action
5) Ouvrir le fichier fn_useItem.sqf dans le dossier Core\Pmenu et ajouter en dessous de switch (_item) do { :
[CODE title="fn_useItem.sqf"] case "medikit": {
[] spawn life_fnc_healself;
closeDialog 0;
};[/CODE]
J'ai tester de mon côté et cela est fonctionnel par contre tu n'a pas le côté x point de vie toutes les x secondes ...
Je me suis inspiré des items utilisables de bases telle que les jerrycan d'essence.
PS : C'est régler pour que la personne récupère 15% des points de vie et tu peux le modifier à la ligne 12 du fichier fn_healself.hpp ( 0= néant, 1= récupère la totalité de ça vie)