02.04.2016, 16:21 | #1 (permalink) |
Registriert seit: 22.01.2016
Beiträge: 21
|
Objekte mit einem Script löschen.
Hallo,
ich habe ein Script gemacht mit dem ich ein paar Wracks, Müll etc in den Städten spawnen lasse. PHP-Code:
PHP-Code:
PHP-Code:
Ich lasse manche gespawnte Einheiten mit folgenden Befehl löschen: PHP-Code:
Könnt ihr mir einen Tipp geben wie ich es anstellen kann die Teile wieder zu löschen? Viele Grüße Duke |
02.04.2016, 16:42 | #2 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
probiere es mal mit call compile formt
zb. Veh_namedestriggers
__________________
Bewegende Momente bei ArmA 3 |
02.04.2016, 20:49 | #4 (permalink) |
Registriert seit: 10.10.2006
Beiträge: 263
|
Poste mal gerne ein Beispiel was du versucht hast.
Was Drunken vorgeschlagen hat war schon gut das müsste ungefähr so aussehen geht aber leider nicht so einfach da Trigger mit leerzeichen sind und Arma das nicht verkraftet. Code:
if (({isPlayer _x} count thisList) <= 1) then { [thisTrigger] call { _spawnpos = [player, 30, (random 360)] call BIS_fnc_relPos; _veh = createVehicle ["Land_Wreck_Car2_F", _spawnpos,[], 0, "NONE"]; _veh setdir 80; call compile (format["veh_%1=%2",_this,_veh]); } }; Sag gerne noch mal was du genau vor hast damit. |
03.04.2016, 00:25 | #5 (permalink) |
Registriert seit: 22.01.2016
Beiträge: 21
|
Ich lasse mit einem Script einige Objekte willkürlich in einer Stadt spawnen, z.B.: Wracks, Mülltonnen usw. Das Script wird über einen Trigger aktiviert, wenn der Spieler den Trigger verlässt sollten aber alle gespawnten Objekte auch wieder verschwinden damit die Map nicht zugemüllt wird. Ich hab die Schnipsel nicht gespeichert weil sie nicht funktioniert haben aber meine Lösung war von deiner Meilen weit entfernt Bin leider noch keine große Leuchte was das Scripten angeht, bei mir steckt das alles noch in den Kinderschuhen. |
03.04.2016, 07:49 | #6 (permalink) |
Registriert seit: 10.10.2006
Beiträge: 263
|
macht ja schon mal nix alle müssen mal irgendwo anfangen. Ein weg der nicht funktioniert ist auch ein erfolg Trigger Code:
params [["_bool",false,[true]],"_trigger","_thislist"]; if (_bool) then { //erstellen und Speichern _var = _trigger getvariable ["muell",""]; if !(typename _var isequalto typename "") exitwith {}; private _save = []; for "_i" from 1 to 1 do { // Eins wird jetzt erstellt erhöhen für mehr objekte _muell = ["Land_Wreck_Car2_F","Land_Wreck_Car_F","Land_Wreck_Car3_F"]; _veh = createVehicle [selectrandom _muell, getpos player,[], 50, "NONE"]; _veh setdir random 360; _save pushback _veh; }; _trigger setvariable ["muell",_save]; //in MP mission _trigger setvariable ["muell",_save,true]; } else { //löschen und speicherung löschen if (({isPlayer _x} count _thisList) > 0) exitwith {}; _var = _trigger getvariable ["muell",""]; if (typename _var isequalto typename "") exitwith {}; {deletevehicle _x}foreach _var; _trigger setvariable ["muell",nil]; //in MP mission _trigger setvariable ["muell",nil,true]; }; //mpmission nur wenn nicht jeder spieler selber sein müll nutzen soll So wird der müll nur einmal erstellt und gelöscht wenn alle weg sind |
03.04.2016, 12:53 | #7 (permalink) |
Registriert seit: 22.01.2016
Beiträge: 21
|
Danke für die Mühe die du dir gemacht hast, ich habe echt viel herum probiert aber die Lösung wäre mir etwas zu hoch gewesen, das hätte ich sie nicht hinbekommen
Ich musste das Script noch um folgende Zeile ergänzen: PHP-Code:
Ich habe aber was den Trigger betrifft noch eine Frage. Ich kann bei der Bedingung einstellen wie der Trigger ausgelöst werden soll. Mit: this && (vehicle player) in thislist Löst er mit dem Spieler aus und auch wenn der Spieler in einem Fahrzeug sitzt. Gibt es die Möglichkeit z.B. das der Trigger nur von Bodeneinheiten ausgelöst wird und Spieler in Helis und Flugzeugen ignoriert werden? Geändert von Duke_87 (03.04.2016 um 13:18 Uhr). |
03.04.2016, 18:54 | #9 (permalink) |
Registriert seit: 22.01.2016
Beiträge: 21
|
Das ist gut zu wissen :-) Ich dachte man muss es noch genauer definieren.
Ich weiss das es mittlerweile etwas off Topic ist aber eine vorerst letzte Frage habe ich noch. Ich lasse momentan die KI um dem Spieler herum spawnen und patrollieren: PHP-Code:
|
03.04.2016, 20:47 | #10 (permalink) |
Registriert seit: 10.10.2006
Beiträge: 263
|
kenne mich jetzt so genau damit nicht aus. Du willst aber das die KI nur innerhalb des Triggers bleibt? Auch wenn der Trigger sich bewegt? Oder Löst du es mit einen Trigger aus und du benötigst den mittelpunkt des Triggers damit die da Rumlaufen?
|
03.04.2016, 21:00 | #11 (permalink) |
Registriert seit: 22.01.2016
Beiträge: 21
|
Ich habe auf Altis über jeder Stadt einen Trigger sitzen der bei Aktivierung dann Einheiten um den Spieler Spawnen lässt. Im Singleplayer funktioniert das Super, im Multiplayer werden aber bei allen Spielern dann die Einheiten gespawnt und das ist... naja problematisch ;-)
Wenn ein Spieler z.B. bei Kavala den Trigger auslöst soll die KI nur in dem Trigger spawnen und nicht auch bei dem Spieler der am anderen Ende der Insel ist. Ich weis das diese Zeile die Ursache ist: _spawnpos = [player, 300+(random 100), (random 360)] call BIS_fnc_relPos; Ich könnte einen Marker setzen und umschreiben: _spawnpos = [getMarkerPos "mark1", 50+(random 50), (random 360)] call BIS_fnc_relPos; aber dann müsste ich für jeden Trigger ein eigenes Script machen.. glaube ich zumindest. |
04.04.2016, 16:17 | #12 (permalink) |
Registriert seit: 10.10.2006
Beiträge: 263
|
Das problem ist das jeder einen trigger bekommt. Also der wird von jeden ausgelöst.
Du hast 2 möglichkeiten du erstellst per Script den Trigger Local bei jeden Spieler. https://community.bistudio.com/wiki/createTrigger dazu bei makeglobal false. Oder im Trigger abfragen ob die Person welche es auslöst auch drine ist. Code:
if (player in thislist) then {_spawnpos = [player, 300+(random 100), (random 360)] call BIS_fnc_relPos; GroupOne_Inf1 = [_spawnpos , EAST, ["O_soldierU_AAR_F","O_soldierU_AR_F","O_soldierU_F","O_soldierU_AT_F","O_soldierU_medic_F"]] call BIS_fnc_spawnGroup; [GroupOne_Inf1, getPos player, 150] call bis_fnc_taskPatrol;} |
04.04.2016, 16:47 | #13 (permalink) |
Registriert seit: 22.01.2016
Beiträge: 21
|
Die erste Methode muss ich mir noch einmal genauer durchlesen, da steige ich noch nicht ganz durch wie ich es umsetzen kann das ein Script den Trigger an verschiedenen Orten erstellen kann.
Dazu müsste ich doch einen Trigger platzieren der das Trigger Script ausführt das dann einen Trigger spawnen lässt welcher dann das Spawnscript ausführt. Aber kommt es dann am Ende nicht aufs selbe heraus wie es momentan schon ist oder denke ich da grade quer? Bei der zweiten Methode ist es doch so das ich das spawnen nicht mehr über ein Script durchführe sondern den Code direkt in den Trigger packe oder? |
04.04.2016, 17:35 | #14 (permalink) |
Registriert seit: 10.10.2006
Beiträge: 263
|
Also du brauchst kein Trigger ZB die datei init.sqf wird von allen geladen Server und Client beim Start der map bzw connecten.
Da kanste dinge erstellen lassen die zum mapstart da sein sollen wie zb trigger. ja entweder du führst es direkt aus oder du übergibst thislist in den script. Wie Rufste jetzt den Script auf? alternativ kanst du auch überprüfen in bedingung ob der player welches es auslöst local ist damit löst nur der aus welcher da drine ist. |
04.04.2016, 18:05 | #15 (permalink) |
Registriert seit: 22.01.2016
Beiträge: 21
|
Ich rufe das Script über Trigger auf.
Auslöser Aktivierung: Typ: Keine Aktivierung: Bluefor Aktivierungstyp: Vorhanden Wiederholbar: ja Bedingung: ({isPlayer _x && alive _x}count thisList) >= 1; Bei Aktivierung: if (({isPlayer _x} count thisList) <= 1) then {execVM "inf_med.sqf"}; Bei Deaktivierung: { if (count units _x>0 and side _x==East) then {_Eastgroups=_Eastgroups+[_x]; deleteVehicle _x}} forEach nearestObjects [player,[],2000]; |
04.04.2016, 23:56 | #17 (permalink) |
Registriert seit: 22.01.2016
Beiträge: 21
|
Wenn ich den Spawn direkt über den Trigger ausführe funktioniert es traumhaft. Jetzt habe ich aber ein weiteres kleines Problem.
Ein Spieler zu Fuß löst den Spawn aus, fährt man mit einem Fahrzeug hinein passiert leider nichts. Ich vermute es liegt daran das hier: Code:
if (player in thislist) then {......}; Ich habe es wie folgt geändert aber der Erfolg blieb aus: Code:
if (vehicle player == player) then {......}; HTML-Code:
this && (vehicle player) in thislist && (vehicle player) == player War das falsch was ich versucht habe oder liegt der Fehler wo anders? |
05.04.2016, 17:41 | #18 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
Du mußt schon lesen, was Nokman dir schrieb...
this && (vehicle player) in this list
__________________
Bewegende Momente bei ArmA 3 |
05.04.2016, 19:02 | #19 (permalink) |
Registriert seit: 10.10.2006
Beiträge: 263
|
Code:
this && (vehicle player) in thislist && (vehicle player) == player (vehicle player) in thislist - Also das Fahrzeug wo der Spieler drine ist ggf der Spieler ist das Fahrzeug ist in der liste. (vehicle player) == player -- Überprüft ob der Spieler in eien Fahrzeug sitzt wenn nicht sind beide gleich. alle 3 müssen wahr sein um es auszuführen Wie du jetzt schon sagtest du sitzt in einen Fahrzeug also wird das 3 nicht wahr sein und somit nicht auslösen. wenn es auslösen soll wenn ein spieler zu fuss oder in einen auto drine sein soll. Code:
this && (vehicle player) in thislist && (vehicle player) == player |
05.04.2016, 19:03 | #20 (permalink) |
Registriert seit: 22.01.2016
Beiträge: 21
|
Es ist nicht so als würde ich das was geschrieben wurde überlesen aber so habe ich es auch versucht und es funktioniert nicht so wie ich es mache. Aktuell startet der Trigger wie folgt: Bedingung: ({local _x && isPlayer _x && alive _x}count thisList) >= 1; Bei Aktivierung: if (player in thislist) then {...} Bei Deaktivierung: { if (count units _x>0 and side _x==Civilian) then {_Civiliangroups=_Civiliangroups+[_x]; deleteVehicle _x}} forEach nearestObjects [Triggername,[],2000]; Es soll ja verhindert werden das mehrere Personen den selben Trigger auslösen und bezwecken das der Trigger aktiv bleibt solange ein Spieler in ihm ist. Wenn ich es mit this && (vehicle player) in thislist versuche klappt der spawn überhaupt nicht mehr. Ich hab schon versucht auf diverse Arten das einzubauen werde aber dann mit Fehlermeldungen zugepflastert oder der Spawn funktioniert weder zu Fuß noch mit einem Fahrzeug. |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Beta-Patch für OpA erschienen | det99 | Community | 1429 | 18.07.2014 17:51 |
T8 Units - Einheiten Spawn Script | T-800a | Editing & Scripting | 2 | 07.03.2014 21:46 |
Einheiten spawnen/ löschen script | sandmanGER | Editing & Scripting | 16 | 07.02.2013 08:45 |
Objekte auf Inseln löschen | Buliwyf | Editing & Scripting | 2 | 24.11.2012 19:00 |
marker über script erzeugen | hypercop | Editing & Scripting | 2 | 28.08.2010 23:40 |