HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-167/)
-   -   Fragen zum Editor (https://hx3.de/editing-scripting-167/fragen-editor-16312/)

AHTNTEPPOP 29.09.2012 22:26

Zitat:

Zitat von Buliwyf (Beitrag 430598)
Es kann nie Schaden bevor man sich auf etwas stürzt, ein paar Basics zu lernen... ;o)

Ansonsten kann man aber auch gerne hier im Forum danach fragen. :)

Q_W_E_R 29.09.2012 23:36

Trigger durch Rauch auslösen
 
Hallo,

Hat jemand eine Idee wie man einen Trigger befiehlt erst auszulösen wenn man Rauch in diesen Bereich wirft? denn ich will einen Heli per grünen Rauch rufen (Farbe des Rauchs ist egal ;) ) und Landen lassen. Doch ich hab keine Ahnung wie man einen Trigger durch Geschosse und co. auslösen kann oder ob das überhaupt möglich ist?

Buliwyf 29.09.2012 23:46

Ich glaub VIENNA hat da mal was gebastelt: http://hx3.de/385848-beitrag47.html

Q_W_E_R 30.09.2012 00:00

hmm,
wenn ich das richtig sehe wird der rauch dort erzeugt wo der heli landen soll aber das durch ein MapKlick. Ich will eigentlich das der Spieler eine RauchGranate wirft und sobald er sie geworfen hat ein heli kommt und ihn dann holt.

Moerderhoschi 30.09.2012 00:40

Zitat:

Zitat von Q_W_E_R (Beitrag 430616)
Hat jemand eine Idee wie man einen Trigger befiehlt erst auszulösen wenn man Rauch in diesen Bereich wirft?

Eine Idee habe ich dazu.

1. Kopiere folgenden Code in die Initzeile irgend einer Einheit auf der Karte und passe die rote stelle noch an, je nach deinem wunsch was dann passieren soll.

Code:

checksmoke={

_p1 = _this select 0;
_p2 = _this select 1;

_a=[
"SmokeShell",
"SmokeShellRed",
"SmokeShellGreen",
"SmokeShellYellow",
"SmokeShellPurple",
"SmokeShellBlue",
"SmokeShellOrange"
];

_l1 = nearestObjects [_p1, [], _p2];
_l2 = [];
{_l2 = _l2 + [typeof _x]} foreach _l1;

{if (_x in _l2) then {HIER DER CODE DER AUSGEFUEHRT WERDEN SOLL WENN EINE SMOKEGRENADE IM BEREICH IST}} foreach _a};

Wobei sich im anpassenden Bereich anbietet eine Variable auf True zu setzen wie Abholung=True und mit einem zwoten Trigger der diese Variable abfragt dann die Abholung mit dem Heli zu realisieren.

2. Erstelle einen Trigger auf der Karte und schreibe in die Condition Zeile (die erste von den dreien) folgendes

Code:

[thistrigger,50] call checksmoke
Wobei die Zahl 50 hier fuer den Radius steht, musst du dann eben je nach Wunsch anpassen.

Vielleicht gibt es einfacherer Methoden dies zu realisieren aber um halb eins morgens faellt mir grad nur das ein.

gruß
hoschi

Vienna 30.09.2012 09:09

Das geht recht einfach mit einem EventHandler z.B in der Initzeile des Spielers.


Einen Trigger kann man durch das Setzen einer Schaltvariablen aktivieren (hier TriggerEin):

Code:

this addEventHandler ["Fired", "if(_this select 4 == 'smokeShell') then {TriggerEin = true}"]
Der Name der gewünschten Rauchgranate ist anzupassen.


Will man ein Skript aufrufen, welches die Position der Rauchgranate enthält, dann sieht das so aus:

Code:

this addEventHandler ["Fired", "if(_this select 4 == 'smokeShell') then {[_this select 6] execVM 'Rauchgranate.sqf'}"]
Dieses Skript wird nach dem Abwurf der Rauchgranate vom EventHandler aufgerufen:

Rauchgranate.sqf
Code:

sleep 5;  //Abwarten bis Granate ruhig liegt

_pos = position (_this select 0);

player groupChat format["Position der Granate: %1", _pos];


Q_W_E_R 30.09.2012 14:13

Danke es klappt

Ich hab das von Moerderhoschi ausprobiert und das klappt wunderbar. :daumen:
Aber das von Vienna geht bei mir irgendwie nicht oder ich hab was total falsch gemacht, aber egal Hauptsache es funktioniert, Danke.

Vienna 01.10.2012 10:43

Meine Lösung reagiert nicht auf die "Anwesenheit" einer Rauchgranate in einem Auslöserbereich, sondern auf das Werfen einer Rauchgranate mit bestimmter Farbe durch den Spieler.

Der erste Code schaltet einen Auslöser, ohne Rücksicht auf dessen Bereich. Der zweite aktiviert ein Skript.

Q_W_E_R 02.10.2012 18:21

Mehr InventarPlatz für Fahrzeuge
 
Hallo

Ich mal wieder :p. Ich bin grad an ner mission dran wo einheiten zuerst in einem Flieger sitzen und sich dort ausrüsten sollen, doch der fleiger hat anscheinend erstaunlich wenig waffenslots (nur 3 m1911) und auch so wenig slots (20 Mags für M1911) kann man mit nem Script o ä. das Volumen für das Inventar eines Fahrzeuges erhöhen?.

Danke schonmal für Antworten.

Vienna 03.10.2012 15:00

Versuche es einmal in der Initialisierungszeile des Fliegers mit

this unitName addMagazine "magazineName";

Voraussetzung ist natürlich, das es eine "Waffe" für dieses Magazin gibt.

Wenn es klappt, dann kann die Zeile wiederholt werden.

Q_W_E_R 04.10.2012 22:52

Hi,

habe mal angefangen nicht nur im editor rumzuscripten und hab mir mal gedacht ien einfaches Script zu erstellen das zählt wie viele Einheiten in einem bestimmten Bereich noch sind, und habe dazu 2 Trigger erstellt: Trigger 1 Name Stadt, OPFOR, Reapeat. Trigger 2 BLUFOR, Reapet Act.: pruf = 1; und Deak.: pruf = 2; un natürl hab ich das script eingebunden: this exec "test.sqs";

So das is mein Script: Name: test.sqs
Code:

pruf = 2;

num1 = WEST countSide list Stadt;

#Start;
~1;
if (pruf == 1) then (hint format ["noch %1", num1]);
goto “Start”;

mein problem ist es funktioniert nicht egal was ich mache es kommt dauernd nur "noch scalar" ! weis jemand was ich falsch gemacht habe?

Danke schon mal und nen schönen Abend

Buliwyf 04.10.2012 23:14

Als erstes sei gesagt: "Komm bloß weg vom SQS und nutze SQF!". Herzlich willkommen im Jahr 2012... ;)

Dein Problem werden die falschen Klammer sein. So sieht ein If () Then {} aus.

Und wenn ich das noch richtig in Erinnerung habe, dann brauchst Du bei SQS kein Semikolon am Zeilenende setzen. Das aber nur am Rande, weil Du ja nie wieder SQS nutzt... ;)

Vienna 05.10.2012 00:51

Wie Buliwyf sagte, solltest du im SQF-Code programmieren. Auch gehört die Zeile mit der Abfrage der Anzahl von WEST in die Schleife rein.

Im SQF-Code sieht das Skript so aus:
Code:

pruf = 2;
while {true} do
 {
  if (pruf == 1) then
  {
    hint format ["noch %1", WEST countSide list Stadt];
    sleep 1
  }
 }


Q_W_E_R 05.10.2012 15:28

hmm was ist sqs? habe ich ja noch nie gehört xD. Ok werd ich nich mehr verwenden ;). Aber bei mir steht jetzt immer noch "von scalar" und das auch bevor ich den trigger auslöse! trotz dem schönem script :(. weis jemand was arma mit scalar meint? Oder habt ihr ne Idee warum es trotzdem nicht funktioniert?

Moerderhoschi 05.10.2012 15:47

.sqs oder .sqf ist das Dateiformat fuer deine Scripte. .sqs wurde 2001 in Operation Flashpoint benutzt ist jedoch seit langem obsolet und wurde durch .sqf ersetzt.

Um ab zu fragen wieviele einheiten in einem Trigger sind musst du mit den Befehlen count & list arbeiten.

Platziere einen Trigger auf der Karte, gib ihn einen namen z.b. liste1 und Stelle ein welche Seite er zaehlen soll (west,ost, civ, alle). Platziere einen zwoten trigger auf die karte mit alpha aktivierung und schreibe folgendes in die onactication zeile:

Code:

hint format ["%1",count list liste1]
jetzt ingame einfach den trigger ausfuehren ueber das funkmenu 0-0-1.


Wenn du moechtest das eine Nachricht ausgegeben wird wenn nur noch eine einheit im gebiet ist dann erstelle einfach einen Trigger in dem Gebiet, stelle die Seite ein und schreibe in die condition zeile:

Code:

count thislist == 1
onactivation zeile:
Code:

titletext["Noch eine Einheit im Gebiet","PLAIN"]
gruß
hoschi

Q_W_E_R 05.10.2012 17:07

das funktioniert nur brauch ich das als script sonst hab ich nachher ca. 50 trigger mit jeweils
Code:

cond.: count thislist == 1 act.: titletext["Noch eine Einheit im Gebiet","PLAIN"]
Code:

cond.: count thislist == 2 act.: titletext["Noch 2 Einheiten im Gebiet","PLAIN"]
Code:

...
Code:

... 50 ... 50

Q_W_E_R 05.10.2012 17:57

hab jetzt irgendwie kein bock mehr auf scripts die nerven mich :motz:.
hab jetzt was getestet und zwar: Trigger:Stadt: Blufor
Code:

activ.: this exec "ein.sqf"
und: "ein.sqf":
Code:

hint format ["noch %1", count list Stadt]
wenn ich jetzt in den trigger laufe passiert natürlich nix :stupid:.
Ich verstehe es einfach nicht :confused:.

Vienna 05.10.2012 18:11

Installier dir einfach das "Radar" aus diesem Beispiel: http://hx3.de/editing-scripting-167/...20/#post358530

Lade die dort angehängte Datei und kopier dir das Skript raus. Aufgerufen wird es so in einem Auslöser:
temp = [player,2000,true] execVM "RadarAll.sqf"

Dann siehst du auf der Karte wie viele Einheiten noch in dem Bereich sind. (Ein Flugzeug wird dazu nicht benötigt, wie der Titel des Links vermuten lässt.) Den Radarbereich kannst du reduzieren, in dem du den Wert 2000 runtersetzt. Der Mittelpunkt des Radars ist der Spieler.

Togo 29.10.2012 08:13

3d zu 2d Converter Problem
 
Hallo zusammen,

ich befasse mich gerade mit dem 3D Editor und habe ein Problem mit dem Konvertieren in 2D. Alle Objekte die auf andere Objekte platziert sind fallen nach dem Konvertieren nach 2D auf die gleiche Höhe wie das Objekt auf dem es vorher platziert war. Hat jemand eine Idee wie ich das verhindere? Zum Konvertieren nehme ich diesen Konverter: ArmA2 3D map to 2D map - Tools - Armaholic. Was anderes habe ich nicht gefunden……





Gruß Togo

Vienna 29.10.2012 09:13

Das zeigt nur wieder, dass man den 3D-Editor nicht verwenden sollte.

Ich kann dir nur sagen wie du Objekte im 2D-Editor auf eine Höhe über dem Boden versetzen kannst:

In die Initialisierungszeile des Objekts folgendes reinschreiben (kopieren):

Code:

this setPos [position this select 0, position this select 1, 5];
Im letzten Parameter steht 5, dass ist die Höhe in der das Objekt über dem Boden aufgestellt wird.

Bewegliche Objekte (wie Soldaten oder Fahrzeuge) fallen so weit runter, bis sie auf einen tragfähigen Untergrund fallen (z.B. Hausdach).


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