07.12.2013, 21:43 | #1 (permalink) |
Registriert seit: 24.11.2011
Ort: Wien
Alter: 51
Beiträge: 30
|
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]; ... 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 ). 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? ). Ein Code:
_objekt allowDamage true; 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! |
08.12.2013, 02:23 | #2 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
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; }; 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 Geändert von Drunken Officer (08.12.2013 um 02:33 Uhr). |
09.12.2013, 20:47 | #4 (permalink) |
Registriert seit: 24.11.2011
Ort: Wien
Alter: 51
Beiträge: 30
|
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! 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!"; _usbv zeigt auf das Objekt und das Objekt nimmt nun mal keinen Schaden, selbst wenn man mit einem MLRS darauf feuert. |
09.12.2013, 21:44 | #5 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
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 |
09.12.2013, 22:03 | #6 (permalink) |
Registriert seit: 24.11.2011
Ort: Wien
Alter: 51
Beiträge: 30
|
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... 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... Geändert von Troublemaker (09.12.2013 um 22:18 Uhr). |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Minecraft | burns | Sonstige Genres & Themen | 264 | 15.09.2014 15:19 |
Beta-Patch für OpA erschienen | det99 | Community | 1429 | 18.07.2014 17:51 |
BWMod - Neuigkeiten, Bilder, ... | TeRp | Mods & Addons | 939 | 25.02.2014 21:57 |
Hilfe bei config.cpp verändern | ST6_Predator | Editing & Scripting | 6 | 31.12.2010 00:14 |
Multiplayer PROBLEM!!! | Panzagrenadier | Multiplayer | 15 | 18.06.2010 15:12 |