HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-187/)
-   -   Erschöpfungsskript (https://hx3.de/editing-scripting-187/erschoepfungsskript-25470/)

romans 18.07.2016 21:45

Erschöpfungsskript
 
Hab ein Skript geschrieben, welches dem Erschöpfungszustand noch eins draufsetzen soll, um Packesel ein wenig einzubremsen. Nach festgelegter Zeit fängt die Spielerfigur an zu stöhnen und wenn man dann nicht langsamer macht, wird man ohnmächtig und muss warten, bis man wieder Puste hat. :D

Das Skript funktioniert so weit, aber man kann das Ding sicherlich noch optimieren. Wäre für Tipps sehr dankbar.

[]execVM "fatigue.sqf";

Code:

_time = 5;
_unit = player;
_snd = ["A3\sounds_f\characters\human-sfx\Person0\P0_moan_10.wss","A3\sounds_f\characters\human-sfx\other\vzkriseni_02.wss"];
_txt = "Nimm Streichhölzer, wenn dir das Sturmfeuerzeug zu schwer ist!";
 
while {alive _unit} do

 
        {
            waitUntil {sleep 1; getFatigue _unit == 1};
            sleep _time;
            playsound3d [_snd select 0,_unit];
            sleep _time;
           
            if (getFatigue _unit == 1) then
       
                    {
                        sleep _time /2;
                        _unit setUnconscious true;
                        _unit allowDamage false;
                        titleCut ["","BLACK OUT",1];
                        sleep 2*_time;
                        [_txt] call bis_fnc_dynamictext;
                        titleCut ["", "BLACK IN",10];
                        sleep _time /2;
                        _unit setFatigue 0.5;
                        _unit setUnconscious false;
                        playsound3d [_snd select 1,_unit];
                        _unit allowDamage true;
                    };   
       
        };


Drunken Officer 19.07.2016 08:48

Bremse den Waituntil aus.
Waituntil checkt pro Frame. Brauchst du die Abfrage 50x pro Sekunde?

waitUntil {sleep 1; getFatigue _unit == 1};

Jetzt fragt er einmal pro Sekunde den Erschöpfungszustand ab.
Dein Script wird beendet, wenn die Person tot ist. Respawn beachtet?

romans 19.07.2016 13:15

@ Drunken Officer

Vielen Dank! Deinen Tipp mit dem sleep nach waitUntil hab ich schon mal in einem deiner Beiträge gelesen, aber wieder vergessen. Jetzt sitzt das Ding aber. :)

Respawn hab ich über OnPlayerRespawn.sqf bedacht.

Sarogahtyp 22.07.2016 07:31

du kannst dir das ganze durch 2 geteile sparen wenn du dir ne _halftime variable machst. dann wird aus

sleep _time /2;

das:

sleep _halftime;

spart nen paar rechenoperat8onen, ist 9n deinem script aber nur ne kleine optimierung und kein echter performance-gewinn.

romans 22.07.2016 13:46

@ Sarogahtyp

Vielen Dank für den Tipp.

Sarogahtyp 22.07.2016 13:52

für
sleep _time * 2;
kannst du dasselbe machen, habe ich vorhin nur übersehen. spart auch wieder ne rechenoperation in der schleife.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:28 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