HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-187/)
-   -   Item side "EMPTY" und destructable (https://hx3.de/editing-scripting-187/item-side-empty-destructable-23188/)

Troublemaker 07.12.2013 20:43

Item side "EMPTY" und destructable
 
Folgendes habe ich in Arbeit:

Zur Laufzeit werden Plastikkanister (Land_CanisterPlastic_F) an verschiedenen Orten erstellt. Diese sollen als IED-Sprengsätze fungieren. Dazu erstelle ich Eventhandler mit

Code:

...
TRied%1 setTriggerActivation["WEST","PRESENT",false];
...

die dann eben eine Explosion auslösen. Klappt im Prinzip wunderbar, solange das IED nur bei Einheiten mit side "WEST", "EAST" oder "GUER" auslösen soll.
Nun sollen aber Zivilisten auch das IED auslösen. Gibt man statt "WEST" dann aber "CIV" ein, so löst der Eventhandler sofort aus. Mittlerweile ist mir klar, dass es deshalb passiert, weil der Kanister selbst der side "CIV" zugeordnet ist (Danke Bohemia für diesen Schwachsinn :stupid:). Die Bedingung ist somit erfüllt und der Trigger löst aus *BUMM*.
Da man die side zwar in der mission.sqf ändern kann, offensichtlich aber nicht zur Laufzeit, stehe ich jetzt an!

Wie erstellt man ein IED, das auch bei "CIV" auslöst, ohne durch sich selbst ausgelöst zu werden?


Das andere Problem ist folgendes:
Beinahe alle items, inklusive des Kanisters) aus der Kategorie "Objekte (klein)" sind nicht zerstörbar. Der Wert damage bleibt immer auf 0, es sei denn, man ändert ihn scriptseitig. Somit löst auch ein "hit" Eventhandler in diesem Fall nicht aus (Hab ich mich bei Bohemia schon bedankt? :stupid:). Ein
Code:

_objekt allowDamage true;
funzt hier leider nicht.
Ich hätte gerne, dass das IED auch auslöst, wenn es zuviel Schaden genommen hat, oder von einer Kugel getroffen wird, gesprengt wird und ähnliches.

Gibt es eine Alternative zum Eventhandler "hit"?

Wäre für Vorschläge/Lösungsansätze sehr dankbar! :daumen:

Drunken Officer 08.12.2013 01:23

USBV OHNE Auslöser

woppi = [this, 5] execVM "dof_sprengsatz.sqf";
Code:

//********************************
//einfaches USBV Script ohne Seitenabfrage
//die Zahl steht für die Auslösedistanz
//********************************

private ["_usbv","_boom"];
_usbv = _this select 0;
_boom = _this select 1;
while {alive _usbv} do
{
_no = nearestObjects [_usbv, ["man","car","tank","motorcycle"], _boom];
_no1 = _no select 0;
    if (!isNull _no1) then
    {
    _granate = createVehicle ["r_80mm_he",[getPos _usbv select 0, getPos _usbv select 1,0],[], 0, 'FLY'];
deleteVehicle _usbv;
 
};
    sleep 1;
    };

Ich habe es noch nicht mit einer WaitUntil Funktion versucht. Probiere ich mal, wenn ich zu Hause am Rechner bin.
Zum Schaden einfach eine Schadensabfrage des _usbv machen und in die if Schleife eine OR Bedingung einbauen
http://community.bistudio.com/wiki/getDammage
http://community.bistudio.com/wiki/or

Troublemaker 08.12.2013 02:23

Danke für's Script. Werde mir das zu Gemüte führen und (hoffentlich Erfolg) vermelden! :)

Troublemaker 09.12.2013 19:47

So, bin jetzt dazu gekommen mir das anzuschauen.
Das Script funktioniert zwar, wirft aber eine Fehlermeldung aus. Die Variable _no1 verweist nämlich auf ein nicht existierendes Objekt (zumindest, solange sich kein Objekt in der Nähe des _usbv befindet).
Aber der Ansatz war genau, was ich gesucht habe!
:daumen:

Habe das Script umgeschrieben, so dass es auch ohne Fehlermeldung funzt:
Code:

_usbv = _this select 0;
_boom = _this select 1;
while {alive _usbv} do {
    scopename "loop";
    _no = nearestObjects [_usbv, ["man","car","tank","motorcycle"], _boom];
    if((count _no) > 0) then { breakOut "loop"; };
    sleep 1;
};
hint "BOOM!";

Allerdings löst das mein Problem mit der hit-Abfrage nicht. Man kann zwar die damage von _usbv abfragen, die bleibt aber immer 0!
_usbv zeigt auf das Objekt und das Objekt nimmt nun mal keinen Schaden, selbst wenn man mit einem MLRS darauf feuert. :cool:

Drunken Officer 09.12.2013 20:44

Weil manche Objekte einfach keine Schaden nehmen können.
Wenn in der Config steht destrType = "DestructNo";
dann kannst du machen was du willst.

Du müsstet dem Teil einen "Hit" Eventhandler anheften. Vorher die variabel Schaden = 0 setzen. Mit dem "Hit" Eventhandler ..., {schaden = schaden + 0.001}

Das wäre aber ziemliche sinnlos, weil du egal mit welcher Waffe immer nur 0.001 drauflegst. Oder du mußt richtig scriptintensiv das Projektil auslesen und und und

Troublemaker 09.12.2013 21:03

Hit-Eventhandler funzt nicht! :(

Der reagiert nur, wenn ein Objekt Schaden nimmt und sogar auch dann nur, wenn es WIRKLICH Schaden nimmt. Laut BI reagiert der Eventhandler z.B. auch nicht, wenn man mit einer Pistole auf einen Panzer schießt.
Boah... ich habe schon vermutet, dass nur ein eigenes Objekt als Addon die Lösung sein wird.
Naja... soviel zum Thema destructible environment. Nicht mal einen Kanister kann man kaputtschießen...
:motz::schlagen:
Nun, dann lasse ich mir eben was anderes einfallen...

Es gibt doch irgendwie eine Möglichkeit, dass man feststellt, ob eine Kugel in unmittelbarer Nähe einer Einheit vorbeifliegt. Wird ja verwendet bei den ganzen KI-suppresive fire Sachen.
Kann mich da jemand in die richtige Richtung stupsen, wie man das feststellt?

EDIT:
Ach, apropos scriptintensiv - das Ganze ist Teil eines Scriptes, dass die KI auf der ganzen Map rumfahren und IEDs neben den Straßen legen lässt. Wenn sie dabei von Zivilisten beobachtet werden, dann melden die das beim nächsten Posten und machen Angaben, wie viele und mit welchem Fahrzeug die da waren und in welche Richtung sie dann gefahren sind.
Scriptintensiv hat also schon lange seinen Schrecken verloren... :D


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