Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 19.10.2014, 15:31   #1 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.107
Standard Variablen hochzählen und Feuer löschen funktioniert nicht

Mojnsen.

Ich habe eine Problem (es aller Wahrscheinlichkeit nach mal wieder eine falsche Anwendung vom Call Compile Befehl)

Ich habe eine Barrikade (reihe_1 bis reihe_13). Diese werden entzündet.
Bis dahin funktioniert alles. Die Feuer entstehen an der richtigen Stellen.

Allerdings kann man diese Objekte in ArmA 3 nicht einfach so löschen.

Mein Problem besteht darain, dass ich mal wieder keine Variablen zuweisen kann.

Hier mein Code

Code:
// Wird direkt am Objekt ausgeführt. WaitUntil Scleife spart Trigger
if (!isServer) exitWith {};
waitUntil {sleep 2; (west countSide (nearestObjects [(getPos reihe_7), ["Man", "Car", "tank"], 15]) > 0 ) };
private ["_feuer", "_feuerarray", "_emitterArray", "_emitter"];
_emitterArray = [];
_feuerarray = [];
for "_i" from 1 to 13 do
{
_feuerstelle = createVehicle ["test_EmptyObjectForFireBIG", position (call compile format ["reihe_%1", _i]), [], 0, "can_collide"]; //erstellt das Feuer an der richtigen Barrikade
call compile format [" _feuer%1 = _feuerstelle", _i]; //jetzt sollte eigentlich die Varibale _feuer1 erstellt werden und mit Feuerstelle gleichgesetzt werden
if (isNil "_feuer1") then {player sideChat "Feuer1 gibt es nicht" } else { player groupChat "es gibt feuer"}; //gibt aktuell aus, es gibt Feuer1 nicht
sleep 1;
_feuerarray = _feuerarray + [call compile format [" _feuer%1", _i] ];
hint format ["Feuer: \n %1", _feuerarray ];
sleep 1;

call compile format ["_emitter%1 = _feuer%2 getVariable 'effects' ", _i, _i];
_emitterArray = _emitterArray + [call compile format ["_emitter%1", _i] ];
hint format ["Emitter: \n %1", _emitterArray];
sleep 1;
};
sleep 4;
player sideChat "Gelöscht";
for "_i" from 0 to 13 do { _feuerstelle = missionNamespace getVariable ("emitter" + str _i); deleteVehicle _feuerstelle }; //sollte eigentlich alle Feuer
{deleteVehicle _x} forEach _feuerarray;
sleep 1;
hint str _emitterArray;
Warum der Umweg mit diesen Getveriablen "effects": Delete Fire Effect - Page 2

Oder ich habe es komplett falsch verstanden.
__________________
Bewegende Momente bei ArmA 3

Geändert von Drunken Officer (19.10.2014 um 15:34 Uhr).
Drunken Officer ist offline   Mit Zitat antworten
Alt 19.10.2014, 21:51   #2 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Du willst ein Array mit den IDs der Feuerstellen fürs Löschen?

_feuerstelle = createVehicle [....;
_feuerarray = _feuerarray + [_feuerstelle];
Vienna ist offline   Mit Zitat antworten
Alt 20.10.2014, 13:32   #3 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.107
Standard

hatte ich schon probiert, dann löscht er die Feuer nicht.

Wieso kreeiert man als Programmierer ein Feuer, welches man nicht löschen kann?
__________________
Bewegende Momente bei ArmA 3
Drunken Officer ist offline   Mit Zitat antworten
Alt 20.10.2014, 15:06   #4 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Tajin
 
Registriert seit: 17.01.2008
Beiträge: 267
Standard

Ich versteh nicht warum du so viel mit call compile format herumzauberst, anstatt die Objekte einfach in arrays zu speichern.

Dann liest sich auch der code vieeeel angenehmer.


Generell ist der code unnötig kompliziert aufgebaut. Da hast du wohl nen Knoten im Kopf gehabt


Im prinzip müsste dashier ausreichen:
PHP-Code:
if (!isServerexitWith {};
waitUntil {
    
sleep 2
    (
west countSide (nearestObjects [(getPos reihe_7), ["Man""Car""tank"], 15]) > 
};

private [
"_feuerArray""_feuerstelle""_reihen""_effects"];
_feuerArray = [];
_reihen _this;

{
    
_feuerstelle createVehicle ["test_EmptyObjectForFireBIG"position _x, [], 0"can_collide"];
    
_feuerArray pushBack _feuerstelle;

    
sleep 2;
} forEach 
_reihen;

sleep 4;
player sideChat "Gelöscht";

fnc_killFire = {
    { 
deleteVehicle _x; } forEach (_x getVariable "effects");
};
publicVariable "fnc_killFire";

{
    [
_x,"fnc_killFire",true,truecall BIS_fnc_MP;
    
deleteVehicle _x;
} forEach 
_feuerArray
Einziger Unterschied in der Handhabung: Du übergibst die Objekte die angezündet werden per Parameter an das Script.

z.b. so [reihe_1,reihe_2,reihe_3,reihe_4] execVM "scriptdatei.sqf";
__________________

Geändert von Tajin (20.10.2014 um 15:24 Uhr). Grund: grad noch was bemerkt wegen der MP-kompatibilität
Tajin ist offline   Mit Zitat antworten
Alt 20.10.2014, 18:56   #5 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Zitat von Drunken Officer Beitrag anzeigen

Wieso kreeiert man als Programmierer ein Feuer, welches man nicht löschen kann?

Anscheinend besteht ein solches Feuer lokal aus mehreren Objekten, von denen jedes einzeln lokal gelöscht werden muss.
Vienna ist offline   Mit Zitat antworten
Alt 20.10.2014, 20:11   #6 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.107
Standard

Ich war der irrigen Annahme den Dingern einen Varibalennamen verpassen zu müssen. Mit dem Laden in den Array und diesen dann löschen, hat nicht funktioniert.

z.Z. sieht es so aus. Funktioniert allerdings nur lokal. Da muss ich mal weiter basteln.

Code:
// Wird direkt am Objekt ausgeführt. WaitUntil  spart Trigger
if (!isServer) exitWith {};
waitUntil {sleep 2; (west countSide (nearestObjects [(getPos reihe_7), ["Man", "Car", "tank"], 15]) > 0 ) };
private ["_feuer"];
for "_i" from 1 to 13 do
{
_feuer = createVehicle ["test_EmptyObjectForFireBIG", position (call compile format ["reihe_%1", _i]), [], 0, "can_collide"]; //erstellt das Feuer an der richtigen Barrikade
};
sleep 4;
{ //open foreach loop
   if (typeof _x == "#particlesource") then { //if current item is particle object then do
      deletevehicle _x;              //delete particle object
   };
} foreach ((getPos reihe_7) nearObjects 20);
Aber Tajin, ich werde mal deine Variante testen
__________________
Bewegende Momente bei ArmA 3

Geändert von Drunken Officer (20.10.2014 um 20:14 Uhr).
Drunken Officer ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Arma - ständiger Absturz ( Funktioniert nicht mehr ) Dominik97 Technische Fragen & Probleme 1 14.04.2014 21:57
Script funktioniert nicht auf Dedicated Server. Grollig Editing & Scripting 2 28.11.2013 23:41
Missions Voting funktioniert nicht? Skandal Multiplayer 2 01.10.2012 12:49
Voip funktioniert nicht! St3ve Technische Fragen & Probleme 8 29.06.2011 16:40
Server Parameter...? MaSch0815 Multiplayer 5 07.04.2011 08:14


Kontakt - HX3.de - Archiv - Nach oben

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