HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-187/)
-   -   HealingAction innerhalb eines EH HandleHeal abbrechen (https://hx3.de/editing-scripting-187/healingaction-innerhalb-eh-handleheal-abbrechen-24245/)

Drunken Officer 06.09.2014 19:19

HealingAction innerhalb eines EH HandleHeal abbrechen
 
Ich habe für meine MP Mission einen EH genutzt, welcher ein Script ansteuert. Ziel ist es, dass Feldsoldaten nur bis 0.4 und Feldsanis nur bis 0.15 heilen können. Vollständig geht nur im Lazarett.

Es funktioniert auch soweit. Allerdings möchte ich, dass wenn der Wert erreicht ist, die Animation nicht durchgeführt wird und auch das MedPack nicht verbraucht wird. Das MedPack zu ersetzen wäre das kleinste Problem.

JEder Spieler hat den EH in der Init stehen:
EHT = this addEventHandler ["HandleHeal",{_this execVM "scripte\dof_feldheilung.sqf"}];

Das Script sieht so aus:
Code:

private ["_ziel", "_heiler", "_klasse"];
_ziel = (_this select 0);
_heiler = (_this select 1);
_klasse = typeof _heiler ;

_dam = getDammage _ziel;
if (_klasse == "BWA3_CombatLifeSaver_Fleck") then
    {
        if (_dam <= 0.15) then {_heiler action ["CancelAction", _heiler]; _heiler sideChat "Keine Feldheilung möglich. Volle Heilung nur im Lazarett"; };
        if (_dam > 0.15) then {_heiler sideChat "Heilung bis 85 Prozent vor Ort möglich. Volle Heilung nur im Lazarett möglich"; waituntil {(getDammage _ziel) == 0}; _ziel setDammage 0.15 };
   
    } ;

if (_klasse != "BWA3_CombatLifeSaver_Fleck") then
{
    if (_dam <= 0.4) then {_heiler action ["CancelAction", _heiler];_heiler sideChat "Keine Feldheilung möglich. Volle Heilung nur im Lazarett"; };
    if (_dam > 0.4) then {_heiler sideChat "Feldheilung bis 60 Prozent wird ausgeführt. Volle Heilung nur im Lazarett möglich"; waituntil {(getDammage _ziel) == 0.25};  _ziel setDammage 0.4; }; 
};

Der Befehl CancelAction wirft keine Fehler aus, wird aber ignoriert. Kann mir da einer weiterhelfen?

Vienna 08.09.2014 18:04

Vielleicht ist "CancelAction" bei vom System gesteuerten Animationen unwirksam?

Buliwyf 08.09.2014 18:27

Probiers mal damit:

Code:

if (_dam <= 0.15) then {[[[_heiler],"scripte\cancelAnim.sqf"],"BIS_fnc_execVM",true] spawn BIS_fnc_MP; _heiler sideChat "Keine Feldheilung möglich. Volle Heilung nur im Lazarett"; };
cancelAnim.sqf
Code:

if (!isServer) exitWith {};
_heiler = _this select 0;
_heiler action ["CancelAction", _heiler];

Nur mal so ins Blaue geraten... testen kostet fast nichts... ;)

Drunken Officer 10.09.2014 13:34

Nee funktioniert leider nicht.

Ich habe schon Onkel Goggle bemüht. Kennt einer einen Weg, wie ich ab einem gewissen Schadenswert den Addaction-Eintrag verschwinden lasse bzw. die ID dazu?

Bei einem normalen FirstAidKit besteht bis 0.25 der Eintrag. Aber 0.2499999 ist die Möglichkeit weg


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:44 Uhr.

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias


SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119