HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-167/)
-   -   Operation Frenchpoint Wracks löschen (https://hx3.de/editing-scripting-167/operation-frenchpoint-wracks-loeschen-24691/)

Drunken Judge 10.03.2015 17:36

Operation Frenchpoint Wracks löschen
 
Tach zusammen

Hat jemand ein Cleanup Script parat oder ne Idee wie man Die Fahrzeugwracks vom OFrP Mod köschen kann?

Wenn da Fahrzeuge Respawnen bleiben die Wracks trotzdem immer erhalten, was den Server auf dauer nicht gut tut.

Ein Standart Skript wie das von Günter Seveloh oder die fsm aus der Evolution von Psy bekommen den mist leider nicht gelöscht.

Für ne Lösung wäre ich euch sehr Dankbar =)

Gruß Judge :daumen:

Drunken Officer 10.03.2015 17:53

EHKilled anhängen

in die Init:
if (isServer) then { ehtotundwech = this addeventhandler ["killed", {_this execVM "wechdamit.sqf" }]; };

wechdamit.sqf
Code:

private ["_schrott"];
_Schrott = _this select 0;
sleep (5*60);
deleteVehicle _schrott;


Drunken Judge 10.03.2015 17:59

Ja das müsste ich ja dann quasi in jeder Fahrzeuginit ausführen?!

Das wird dann umständlich bei gespawnten Fahrzeugen.
Hab eher an was gedacht was in der init gestartet wird und das dann via while schleife abfragt ob Patient _x zb Zerstört wurde.

Zitat:

sleep 20;
{
if (not isNull _x) then {
if (_x isKindOf "Air" or _x isKindOf "LandVehicle" or _x isKindOf "Car" or _x isKindOf "Tank" or _x isKindOf "Wheeled_APC") then {
_crew = nearestObjects [_x, ["Man"], 20];
_crew = _crew + crew _x;
deleteVehicle _x;
{
if (not alive _x) then {deleteVehicle _x};
} forEach _crew;
} else {
deleteVehicle _x;
};
};
} forEach _this;
};
So ist der Stand jetz.
Aber das is dem Wrack mal sowas von wurscht ^^

Drunken Officer 10.03.2015 18:04

Wenn du es spawnst geht es genau so.

Wieso eine Schleife. EH wurden extra dafür gemacht.

du läßt spawnen

Code:


bla bla bla

_karre = "meineverdammtePanzerKlasse" createVehicle ....;
_karre setPos getpos irgendwo;
ehtotundwech = _karre addeventhandler ["killed", {_this execVM "wechdamit.sqf" }];

Das ifServer lasse ich da weg. Ich gehe stark davon aus, dass du KI serverseitig erstellen läßt.

Das läßt sich jetzt auch auf die KI-Crew der Karre übertragen.
{ _x addeventhandler ["killed", {_this execVM "wechdamit.sqf" }]; } forEach crew _karre;

P.S:
Es genügt ein normler EHKilled. Der wird zwar local ausgeführt, aber das Ergebnis von deleteVehicle wird über das Netzwerk geschossen.

Drunken Judge 10.03.2015 18:11

Ja geht dann primär um die Fahrzeuge die durch ein respawn skript wieder spawnen.
Na ich werd mal noch bissl rum fummeln. mal sehen ob was funzt.
Danke Dir schonmal. :daumen:

Drunken Officer 10.03.2015 19:20

Funktioniert definitiv. Habe ich auch erst verwendet. Bei ArmA 3 braucht man es aber nicht mehr auf diesem Weg zu machen.

Drunken Judge 10.03.2015 19:28

Ja es werden alle Wracks gelöscht. nur nicht die aus dem OFrP Mod..
Das stinkt doch.. :stupid::confused:

Drunken Officer 11.03.2015 17:56

Ach Judge, das kann so nicht sein.

Bei einem Spawn, musst du natürlich sagen, bei welcher Panzerklasse es passieren soll.
Code:

_karre = "meineverdammtePanzerKlasse" createVehicle ..
if (_karre isKindof "bla" || _karre isKindof "blub" || _karre isKindof "blablub") then {ehtotundwech = _karre addeventhandler ["killed", {_this execVM "wechdamit.sqf" }]; };

Desweiteren soll ja auch bestimmt beim Missionstart geprüft werden. Deswegen in die INIT

Code:

if (isServer) then {
{ if (_x isKindof "bla" || _x isKindof "blub" || _x isKindof "blablub") then
{
ehID = _x addeventhandler ["killed", {_this execVM "wechdamit.sqf" }];
} forEAch vehicles; }

Letztes prüft alle Fahrzeuge, ob sie der Klasse xyz angehören und hängt bei bedarf ein EHKilled an.

In Arma2 kann man aucn noch mit setVehicleInit arbeiten. Der Befehl soll aber für SkriptKidis gut sein, deswegen gibts den in A3 nicht mehr.

Damit wir uns nicht im Kreis drehen.
a) für welche Fahrzeug soll es sein?
b) soll es von Anfang sein
c) bist du sicher das du die Klassen richtig ausgelesen hast?

u.U. kannst du zum Testen in der Konsole eingeben: hint str (typeof (cursorTarget)) --> vorher natürlich anvisieren oder mit player sideChat format ["%1", typeof (nearestObjects [player, [],5])] arbeiten


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