02.01.2009, 23:43 | #1 (permalink) |
Registriert seit: 01.12.2006
Beiträge: 157
|
Obj. zu geworfener Granate beamen
Hallo
Tut mir leid, dass mir kein besserer Titel für mein Problem eingefallen ist. Ich werd euch mal mein Anliegen schildern. Ich möchte, dass ein Helipad, nach dem Wurf einer Rauchgranate, auf die Position der abgeworfenen Rauchgranate gesetzt wird. Ich hab es über einen EH probiert, aber der liest mir die geworfene Granate nicht aus, lediglich die Einheit, welche geworfen hat. Danke im Voraus, hypercop |
03.01.2009, 16:00 | #2 (permalink) |
Servus
Siehe Anhang. Das Objekt musst du nur noch ändern! Ist derzeit D30, damit du auch was siehst. Bitte den Heli-Klassennamen is Skript eintragen. Viele Grüße Mr-Murray
__________________
MR-MURRAY presents ArmA Editing Guide Deluxe Edition - English Version Download ArmA Editing Guide Deluxe Edition - German Version Download Visit me at Facebook! Mapfact Murray |
|
04.01.2009, 17:12 | #5 (permalink) |
Registriert seit: 26.03.2008
Beiträge: 2.822
|
Mal eine Frage, hab das Skript so erweitert, dass dann auch ein Heli zu der Rauchgranate fliegt und landen soll. Aber mein Heli fliegt nicht 5 Meter vor das Ziel, sondern bleibt bei ungefähr 80 Meter Entfernung einfach in der Luft stehen und will nicht mehr weiterfliegen. Landet tut er auch nicht, da das erst bei einer Entfernung von weniger als 5 Metern passieren soll.
Kann mir da bitte einer helfen und mir sagen was ich jetzt schon wieder falsch gemacht hab? Code:
_heli = heli1; _dhh = 5; _Obj = nearestObject [vehicle(player), _this select 4]; ?! (_Obj isKindOf "SmokeshellGreen") : exit; ~4 _HeliH = "HeliHEmpty" createVehicle position _Obj; _distance = _helih distance _heli; hint format ["Distanz: %1", _distance]; While {_distance > _dhh} do {_heli domove position _helih}; If (_distance <= _dhh) then {_heli land "land"}; exit;
__________________
|
05.01.2009, 11:11 | #6 (permalink) |
Registriert seit: 01.12.2006
Beiträge: 157
|
Ich hab es bei mir über Wegpunkte im Editor gemacht:
Der Soldat hat einen EH "Fired". Kurz nachdem die Rauchgranate geworfen wurde, wird dank obigen Script Ein Helipad und die Wegpunkte des Soldaten, "Einsteigen" und der des Heli "Laden" auf das Helipad gesetzt. Ist natürlich nur ganz grob. Da kommen dann ncoh ein paar Funksprüche etc. hinzu. |
05.01.2009, 11:56 | #7 (permalink) |
Registriert seit: 26.11.2006
Ort: Kiel, S-H
Alter: 57
Beiträge: 3.013
|
Die 5m dürften den Heli für das Landmanöver nicht genügen und insofern sehr contraproduktiv sein.
Zudem erfolgt die Distanzmessung immer zwischen den Objektmittelpunkten, so das der Objektmittelpunkt nicht zwangsweise auch der Aufsetzpunkt sein muß/wird. Außerdem wird ein Bewegungsbefehl innerhalb einer bestimmten Entfernung (frag mich nicht wieviel das genau ist ) zudem überhaupt nicht mehr zur Kenntnis genommen.
__________________
Nur ein Beispiel das zeigt wie BI "support" definiert: https://feedback.bistudio.com/T75547 |
05.01.2009, 13:16 | #8 (permalink) |
Registriert seit: 13.04.2003
Ort: Monerica
Alter: 41
Beiträge: 32.968
|
Zwischen 3-15 Metern kannsde alles inne Tonne kloppen. Das variiert ganz gerne mal und nimmt immer die Form an die man grade nicht braucht *auf ArmA2´s zentimetergenau Waypoints gespannt sei* |
05.01.2009, 15:25 | #9 (permalink) |
Registriert seit: 26.03.2008
Beiträge: 2.822
|
Hm ... das ist doof. Der sollte eigentlich genau im Rauch landen ... egal. Ich hab das jetzt mit Wegpunkten gemacht und mit einem Mapclick verknüpft Problem is nur diese Zeile: Code:
onMapSingleClick "_heli move _pos; mapclick=false; ""HeliMoveP"" setMarkerPos _pos"; Aber wenn ich dort den Namen des helis (heli1) einsetzen muss, dann ist es ja nicht mehr von der Variabel _heli abhängig. Hier mal mein ganzes Skript: Code:
_heli = heli1; _man = p1; _heligrp = group _heli; _pgrp = group _man; _Obj = nearestObject [vehicle(_man), _this select 4]; ?! (_Obj isKindOf "SmokeshellGreen") : exit; ~4 _HeliH = "HeliHEmpty" createVehicle position _Obj; _wph = _heligrp addwaypoint [position _helih, 1]; [_heligrp, 1] setwaypointtype "LOAD"; _wpm = _pgrp addwaypoint [position _helih, 1]; [_pgrp, 1] setWaypointType "GETIN"; [_pgrp, 1] synchronizeWaypoint [[_heligrp, 1]]; @(_man in _heli); mapclick=true; titletext ["Klicke auf die Karte um den Zielort zu bestimmen!","plain down"]; onMapSingleClick "_heli move _pos; mapclick=false; ""HeliMoveP"" setMarkerPos _pos"; @!mapclick; onMapSingleClick ""; titleText ["","plain down"]; ~1 "HeliMoveP" setMarkerPos [0,0]; exit;
__________________
|
05.01.2009, 20:36 | #10 (permalink) |
Hmm... also ich habe schon mal Ähnliches nur ohne Rauch gemacht.
Dabei sollte ein Heli an eine Position fliegen und wenn er nah genug dran ist auf Höhe 2m fliegen und dort eine Gruppe absetzen. Hat auch gut funktioniert. Müsste mal schauen, wo das rumliegt und es nur mit dem Smoke verknüpfen.
__________________
MR-MURRAY presents ArmA Editing Guide Deluxe Edition - English Version Download ArmA Editing Guide Deluxe Edition - German Version Download Visit me at Facebook! Mapfact Murray |
|
24.01.2009, 17:17 | #12 (permalink) |
Richtig! Da war doch was. Lass mich mal schauen
__________________
MR-MURRAY presents ArmA Editing Guide Deluxe Edition - English Version Download ArmA Editing Guide Deluxe Edition - German Version Download Visit me at Facebook! Mapfact Murray |
|
25.01.2009, 01:58 | #13 (permalink) |
Registriert seit: 26.03.2008
Beiträge: 2.822
|
Hehe wäre nett, wenn du das für mich machen würdest
Ist in deinem Beispiel dann auch vorhanden, dass der Heli dann an dem Ort landet? Ich glaub ich bin zu blöd, denn ich kriege das nicht hin <.< Wieder einen Truppen Entladen Wegpunkt erstellen funzt nicht so wie ich will ^^ Ganzes Skript schaut so aus: Code:
; **************************************************************** ; Script file for Armed Assault ; Created by: Cyborg11 ; Smokeabfrage by: Mr-Murray ; **************************************************************** ; In Zeile 25 bei OnMapSingleClick den Namen heli1 bitte mit eurem ; Helinamen ersetzen ; Bei _heli bitte den Namen eures Helis einsetzen und bei _man den ; Namen von eurem Spieler / der Einheit, die den Transport anfordern ; kann ; Unbedingt in der Init.sqs folgendes eintragen: ; p1 addEventHandler ["FIRED", {_this exec "Smoke.sqf"}]; ; p1 ist hier der Name von eurer Einheit / eurem Spieler _heli = heli1; _man = p1; _heligrp = group _heli; _pgrp = group _man; _Obj = nearestObject [vehicle(_man), _this select 4]; ?! (_Obj isKindOf "SmokeshellGreen") : exit; ~4 _HeliH = "HeliHEmpty" createVehicle position _Obj; _wph = _heligrp addwaypoint [position _helih, 0]; [_heligrp, 1] setwaypointtype "LOAD"; _wpm = _pgrp addwaypoint [position _helih, 0]; [_pgrp, 1] setWaypointType "GETIN"; [_pgrp, 1] synchronizeWaypoint [[_heligrp, 1]]; @(_man in _heli); mapclick=true; titletext ["Klicke auf die Karte um den Zielort zu bestimmen!","plain down"]; onMapSingleClick "heli1 move _pos; mapclick=false; ""HeliMoveP"" setMarkerPos _pos; _HeliH2 = ""HeliHEmpty"" createVehicle position HeliMoveP;"; _wpu = _heligrp addwaypoint [position _helih2, 0]; _wpu setwaypointtype "TR UNLOAD"; ;onMapSingleClick "heli1 move _pos; mapclick=false; ""HeliMoveP"" setMarkerPos _pos"; @!mapclick; onMapSingleClick ""; titleText ["","plain down"]; ~1 Code:
@(_man in _heli); mapclick=true; titletext ["Klicke auf die Karte um den Zielort zu bestimmen!","plain down"]; onMapSingleClick "heli1 move _pos; mapclick=false; ""HeliMoveP"" setMarkerPos _pos; _HeliH2 = ""HeliHEmpty"" createVehicle position HeliMoveP;"; _wpu = _heligrp addwaypoint [position _helih2, 0]; _wpu setwaypointtype "TR UNLOAD"; @!mapclick; onMapSingleClick ""; titleText ["","plain down"]; ~1 Was ist denn da schon wieder falsch? Es wird doch eigentlich ein zweites Heliport nach dem Mapclick mit dem Namen _helih2 erstellt
__________________
|
25.01.2009, 15:50 | #14 (permalink) |
Registriert seit: 03.01.2008
Alter: 84
Beiträge: 6.552
|
Du benutzt die nicht initialisierte private Variable _helih2. Daher kommt die Fehlermeldung. Die ist schlicht und ergreifend nil, daher 0 Elemente. Steig um auf eine globale Variable, die Scriptübergreifend wirkt. Private lokale Variablen beginnen mit _ und sind nur im Scope des Scriptes wirksam (onMapSingleClick wird außerhalb des Scriptes ausgeführt), globale Variablen sind auf einem Client für ArmA überall sichtbar (wenn sie im MP per publicVariable verschickt werden sogar auch für andere Clients und den Server). Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels. |
26.01.2009, 17:31 | #15 (permalink) |
Registriert seit: 26.03.2008
Beiträge: 2.822
|
Ah ok danke für die Info Xeno! Also deswegen bewegt sich mein Heli auch nicht mehr,w enn ich das _heli bei onmapclick drinnen lasse. Ok, dann werde ich das einfach zu einer globalen Variable machen Danke nochmal! _________________________________ Hmpf ... klappt immer noch nicht : / Habs mal so ausprobiert, geht aber auch nicht. Irgendwie stehe ich grad aufm Schlauch <.< Code:
@(_man in _heli); mapclick=true; _heligrp = heligrp; titletext ["Klicke auf die Karte um den Zielort zu bestimmen!","plain down"]; onMapSingleClick "heli1 move _pos; mapclick=false; ""HeliMoveP"" setMarkerPos _pos;"; ;onMapSingleClick "heli1 move _pos; mapclick=false; ""HeliMoveP"" setMarkerPos _pos"; @!mapclick; helih2 = "HeliHEmpty" createVehicle (position helimovep); wpu = heligrp addwaypoint [position helih2, 2]; wpu setwaypointtype "UNLOAD"; onMapSingleClick ""; titleText ["","plain down"]; ~1 "HeliMoveP" setMarkerPos [0,0]; exit;
__________________
|
30.01.2009, 14:33 | #17 (permalink) |
Registriert seit: 03.01.2008
Alter: 84
Beiträge: 6.552
|
Was ist das helimovep in dem createVehicle Befehl (position helimovep) ?
Wenn es der Marker sein soll, dann musst Du markerPos "helimovep" benutzen um die Position des Markers abzufragen. Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels. |
30.01.2009, 15:46 | #18 (permalink) |
Registriert seit: 26.03.2008
Beiträge: 2.822
|
Ah ok danke. Ja war ein Marker. Sry, dass ichs nicht dazu geschrieben habe Skript schaut nun so aus (unterer Teil): Code:
@(_man in _heli); mapclick=true; heligrp = _heligrp; titletext ["Klicke auf die Karte um den Zielort zu bestimmen!","plain down"]; onMapSingleClick "mapclick=false; ""HeliMoveP"" setMarkerPos _pos"; ;onMapSingleClick "heli1 move _pos; mapclick=false; ""HeliMoveP"" setMarkerPos _pos"; @!mapclick; helih2 = "HeliHEmpty" createVehicle (markerpos helimovep); wpu = heligrp addwaypoint [position helih2, 2]; wpu setwaypointtype "MOVE"; onMapSingleClick ""; titleText ["","plain down"]; ~1 "HeliMoveP" setMarkerPos [0,0]; exit; Habe es dann mal mit dem ersten Heliport (helih) vergleichen. Code:
hint format ["Position helih2: %1\nhelih2: %2\nPosition helih1: %3\nhelih1: %4", position helih2, helih2, position _helih, _helih]; Hm ... kann man denn keinen Heliport an die Position eines Markers setzen?
__________________
|
30.01.2009, 16:09 | #19 (permalink) |
Registriert seit: 03.01.2008
Alter: 84
Beiträge: 6.552
|
Was auch immer Du da durcheinander gebracht hast, _helih2 ist nicht initialisiert. Daher kommt die Fehlermeldung.
Einmal benutzt Du die lokale Variable _helih2, einmal die globale helih2. Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels. |
30.01.2009, 17:29 | #20 (permalink) |
Registriert seit: 26.03.2008
Beiträge: 2.822
|
Was meinst du denn mit nicht initalisiert?
Ich benutze nur helih2, also globale Variable. Die Fehlermeldung war von oben eifnach nur kopiert :P Da steht eigentlich helih2 und nicht _helih2. Ich weiß nicht warum, aber mein Skript erstellt einfach keinen blöden Heliport auf dem Marker o.O Und wenn ich den Heliport zuerst createn lasse, dann auf die Position des Markers schiebe, dann setzt mir ArmA den auf die Koordinaten -1.25, -1.25, 5.68 o.O Neuer Heliport heißt jetzt h3. Code:
@(_man in _heli); mapclick=true; heligrp = _heligrp; titletext ["Klicke auf die Karte um den Zielort zu bestimmen!","plain down"]; onMapSingleClick "mapclick=false; ""HeliMoveP"" setMarkerPos _pos"; h3 = "HeliHEmpty" createVehicle [0,0,0]; h3 setpos getmarkerpos helimovep; @!mapclick; hint format ["Position helih2: %1\nhelih2: %2\nPosition helih1: %3\nhelih1: %4", position h3, h3, position _helih, _helih]; wpu = heligrp addwaypoint [position h3, 2]; wpu setwaypointtype "MOVE"; onMapSingleClick ""; titleText ["","plain down"]; ~5 "HeliMoveP" setMarkerPos [0,0]; exit;
__________________
Geändert von Cyborg11 (30.01.2009 um 17:44 Uhr). |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|