Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 28.01.2013, 01:21   #1 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.104
Standard Fragen zum Missionsbau

So nachdem ich meine Grundkenntisse im scripten durch das Addon-Bauen gewonnen habe und hier lese, was im Missionsbau so möglich ist, reizt mich der Missionsbau.
Dazu habe ich schonmal die erste Frage.

Ich will einen Auftragskill machen. 5 SUV fahren von a nach b. Die Zielperson soll in einem der SUV sitzen. Aber per Zufallprinzip.
Person: Opfer
SUV heißen: car_suv_1 (-5)
Code:
opfer moveincargo ???
es wäre möglich mit random eine Zahl zwischen 1 - 5 zu erstellen und jeder Zahl ein Auto zuzuwiesen. Aber ich denke das geht auch einfacher, oder?
Drunken Officer ist offline   Mit Zitat antworten
Alt 28.01.2013, 08:16   #2 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Wolkenbeisser
 
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 294
Standard

Ich als 'Nicht-so-gut-skripter' würde das wie folgt lösen:

1. Opfer abseits an den Kartenrand stellen
2. 4 Marker in der Nähe des Opfers platzieren
3. Die Marker mit dem Opfer Gruppieren (F2)

--> Resultat: Bei jedem Missionsstart ist das Opfer - zufällig - entweder an der Startposition, oder bei einem der Marker.

4. Um jeden Marker und um die Originalstartposition des Opfers einen Auslöser (= total 5 Auslöser):

Aktivierung: Jeder
Radius: ca. 6m
Zeitverzögerung: 2 Sek.
Bedingung: this and Opfer in thislist
Aktivierung: Opfer moveInCargo car_suv_1

5. In der Aktivierungszeile eines jeden Auslösers jeweils einen anderen SUV als Ziel angeben (siehe fettgedruckte Zahl oben).

Ich weiss, es geht eleganter. Das wäre einfach mal die 'kommt mir als Erstes in den Sinn' Variante ohne Script.

Geändert von Wolkenbeisser (28.01.2013 um 08:18 Uhr). Grund: Die üblichen Fehlerlein
Wolkenbeisser ist offline   Mit Zitat antworten
Alt 28.01.2013, 10:17   #3 (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

In die Initialisierungszeile des Opfers schreibst du folgendes rein:

this moveInCargo([car1,car2,car3,car4,car5]select(floor(random 5)));

Anstelle von car1 - car5 nimmst du die Namen deiner Fahrzeuge.
Vienna ist offline   Mit Zitat antworten
Alt 28.01.2013, 10:30   #4 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Rockhount
 
Registriert seit: 16.07.2010
Beiträge: 305
Standard

oder, wenn man es ein wenig dynamischer haben möchte:


In die Initzeile des mittleren SUV's:
Code:
temp = [this,Opfer,50] execVM "MoveInSUV.sqf";
Opfer = Name des Opfers
50 = Entfernung vom mittleren SUV bis zum entferntesten SUV


MoveInSUV.sqf:
Code:
private ["_this","_suv","_opfer","_radius","_suvs"];

_suv = _this select 0;
_opfer = _this select 1;
_radius = _this select 2;

if (isServer) then
{
	_suvs = nearestObjects [getPos _suv, typeOf _suv, _radius];
	_suv = _suvs select (floor (random (count _suvs)));
	_opfer moveInCargo _suv;
	_opfer assignAsCargo _suv;
};
Edit:
Zitat von Vienna Beitrag anzeigen

this moveInCargo([car1,car2,car3,car4,car5]select(floor(random 5)));

Du darfst die Lokalität nicht vergessen. Bei deinem Beispiel würde das Opfer bei 10 Spieler auch 11 mal umplaziert werden, da moveInCargo global wirkt.
__________________

Geändert von Rockhount (28.01.2013 um 11:38 Uhr).
Rockhount ist offline   Mit Zitat antworten
Alt 28.01.2013, 12:35   #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

Richtig Rockhount, für MP muss dass in der Initzeile dann so aussehen: if (local this) then {....}

Das ist auch ein gutes Beispiel um aufzuzeigen wie man das mit einem spawn-Skript lösen kann. Dabei soll es auch möglich sein anstelle von "moveInCargo" auch "moveInDriver" oder "moveInGunner" zu verwenden.

Das Beispiel zeigt gleichzeitig auf, wie mit dem Befehl "format" ein Code zusammengestellt wird, welcher dann mit "call compile" auszuführen ist.

Der Code der Routine könnte stark verkürzt werden. Er ist aber zur besseren Verständlichkeit umfangreicher gestaltet. Die Textausgabe des Befehls dient nur der Information.


Paramter: [UnitName,"Befehl",[Array mit Fahrzeugnamen]]
Code:
temp = [Opfer,"moveInCargo",[car1,car2,car3,car4,car5]] spawn
 {
  private ["_unit","_befehl","_vehicleListe","_i"];
  _unit         = _this select 0;
  _befehl       = _this select 1;
  _vehicleListe = _this select 2;
  if (! local _unit) exitWith {};
  moveOut _unit;
  _i = count _vehicleListe;
  _i = floor (random _i);
  _befehl = format
   [
    "%1 %2 %3",
    _unit,
    _befehl,
    _vehicleListe select _i
   ];
  call compile _befehl;
  player groupChat "Befehl: " + _befehl
 };
Diese Routine ist in einen Auslöser oder in ein Skript einfügbar. Die Unit kann sich auch bereits in einem Fahrzeug befinden (aussteigen mit: moveOut _unit), aber es muss der gewünschte Platz frei sein. Ist MP tauglich (if (! local _unit) exitWith {}).
Vienna ist offline   Mit Zitat antworten
Alt 30.01.2013, 06:16   #6 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.104
Standard

1. Ich habe mir vom Moerderhoschi die TUT-Mission runtergeladen. (Super Ding zum lernen )Er arbeitet mit einem Funktionsmanger für die Random-Patrol.
Ich möchte zivilisten ebenfalls per Zufall durch die Stadt laufen lassen. Muß ich da einen neuen Funktionsmanger einfügen? So richtig habe ich das noch nicht geschnackelt.

2. Gibt es ne Möglichkeit sich die Koordinaten für Positionen im Editor anzeigen zu lassen.

z.B. soll ein Marker gelöscht werden (bekomme ich hin) und ein 2. soll gesetzt werden (neue Zielzone). Ich arbeite momentan ohne Missionseinträge, da ich mich erstmal einfuchsen muß.
Erreichen würde ich dies mit setMarker so wie in der Anleitung vom Mr-Murry. Aber ich bekomme nur die genaue Position, wenn ich da was platziere -> rein in die Mission .sqm -> copy&paste -> und zurück.
Gibt es da einen einfacheren Weg um an die Koordinaten zu kommen?
Drunken Officer ist offline   Mit Zitat antworten
Alt 30.01.2013, 10:23   #7 (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

Zu 2.

copyToClipboard format["%1",position player]; z.B. über einen Funkauslöser aufrufen.

Du kannst jetzt die Position im Editor z.B. in den Code eines Auslösers mit Tasten Strg+V einfügen oder mit Tasten Alt+Esc raus aus Arma und die Position z.B. in ein Skript einfügen.
Vienna ist offline   Mit Zitat antworten
Alt 30.01.2013, 18:58   #8 (permalink)
Armed-Assault.de Team10 Jahre hx3
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Moerderhoschi
 
Registriert seit: 01.07.2006
Ort: Kabul
Alter: 32
Beiträge: 2.662
Standard

@Drunken Officer

Das Funktionsmanager Modul muss nur einmal erstellt werden. Wenn du moechtest das auch Zivilisten mit dem ArmA eigenen Random Waypoint System durch die Gegend marschieren musst Du ihnen einen Waypoint geben mit
Code:
0=[group this, position this, 50] call BIS_fnc_taskPatrol;
wie bei den OPFOR Einheiten in der Beispielmission.

€dit:

wobei die letze Angabe, in diesem Beispiel 50, die Distanz zwischen den Random Waypoints festlegt.

gruß
hoschi
__________________



Geändert von Moerderhoschi (30.01.2013 um 19:19 Uhr).
Moerderhoschi ist offline   Mit Zitat antworten
Alt 03.02.2013, 13:06   #9 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.104
Standard

Mal ne generelle Frage.

Meine Mission soll wie so viele Andere auch nach dem Motto: "rein - zuschlagen - raus" aussehen. Ist glaube ich das Beste zum lernen.

Nun wäre es ja Quatsch, die ganze Karte mit Einheiten zu übersähen.
Wie machen es die "alten Hasen"? Einheiten setzen, postion speichern, löschen und später abrufen? Oder innerhalb eines definierten Bereich setzen, wenn die Zeit gekommen ist?
Ich frage deshalb, weil
Ziel 1: ist die Störung der Funkverbindung (Türme wegsprengen gekomme ich hin)

Ziel 2: Strand von MG-Nestern beräumen

Allerdings laufe ich Gefahr das die MG-Nester zuflällig im 1 Durchlauf entdeckt würden und es alles net mehr hinhaut.
Drunken Officer ist offline   Mit Zitat antworten
Alt 06.02.2013, 19:18   #10 (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

Das wurde erst kürzlich behandelt: Einheiten spawnen/ löschen script
Vienna ist offline   Mit Zitat antworten
Alt 06.02.2013, 19:48   #11 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.104
Standard

Puh, da bin ich noch meilen weit von entfernt...

Ich würde es vlt erstmal so probieren, dass ich einen Marker für das nächste Zielgebiet erstelle. Dies kann ich ja über den Auslöser machen, wenn das 1. ziel erreicht wurde.

Kannst du mir verraten, wie der Code aussieht, wenn ich dann in dem Bereich zufällig Einheiten haben will.
Das Problem ist, dass ich zwar die Befehle kenne (createUnit, creategroup, createMarker usw.) aber ich tue mich schwer diese richtig zu verpacken.
das erstllen würde ich vielleicht irgendwann mal hinbekommen, aber wie hänge ich z.B. der Einheit den Wegpunkt an, wo ich die Einheiten mit dem scriptbeispiel von Moerderhoschi laufen lasse.
Drunken Officer ist offline   Mit Zitat antworten
Alt 06.02.2013, 20:02   #12 (permalink)
Imperator fori nocturni - This sucks more than anything that has ever sucked before 10 Jahre hx3
20.000 Beiträge
 
Benutzerbild von burns
 
Registriert seit: 13.04.2003
Ort: Monerica
Alter: 35
Beiträge: 32.183
Standard

Zitat von Drunken Officer Beitrag anzeigen

Kannst du mir verraten, wie der Code aussieht, wenn ich dann in dem Bereich zufällig Einheiten haben will.

Dynamic-AI-Creator (DAC) V3.0 released
__________________

burns ist offline   Mit Zitat antworten
Alt 07.02.2013, 07:56   #13 (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

Puh, da bin ich noch meilen weit von entfernt...

Ich würde es vlt erstmal so probieren, dass ich einen Marker für das nächste Zielgebiet erstelle. Dies kann ich ja über den Auslöser machen, wenn das 1. ziel erreicht wurde.

Kannst du mir verraten, wie der Code aussieht, wenn ich dann in dem Bereich zufällig Einheiten haben will.
Das Problem ist, dass ich zwar die Befehle kenne (createUnit, creategroup, createMarker usw.) aber ich tue mich schwer diese richtig zu verpacken.
das erstllen würde ich vielleicht irgendwann mal hinbekommen, aber wie hänge ich z.B. der Einheit den Wegpunkt an, wo ich die Einheiten mit dem scriptbeispiel von Moerderhoschi laufen lasse.

Mein Skript betrifft nur Objekte (Autos, Panzer usw.). Hier ein neues Beispiel wie das mit Auslösern zu verwirklichen ist: Einheiten spawnen/ löschen script - HX3 Foren

Für Soldaten verwende das von Burns vorgeschlagene Programm.
Vienna ist offline   Mit Zitat antworten
Alt 16.02.2013, 19:18   #14 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.104
Standard

Ich möchte über die Parameter den Skill-Wert der feindlichen Einheiten festlegen.

Mein setskill.sqf sieht so aus
Code:
//{_x setSkill (paramsArray select 4)} forEach units east;
{
if (side _x == east) then { _x setSkill (paramsArray select 4)};
 } forEach allUnits;
Sowohl die eine als auch die andere Variante führen nicht zum Erfolg. Auch dann nicht, wenn ich statt dem paramsArray den Wert direkt festlege.
Ich rufe den Wert via Funkauslöser von "Testkeule" >> (sk= skill testkeule; hint format ["%1", sk]; << hab.
Ich starte des Script in der Init.sqf mittels execVM "scripte\setskill.sqf";

***
Mal angenommen, ich mache es komlpett quer-feld-ein, ohne Parameter denne, müßte es heißen
{_x setSkill (random 1)}; forEach allUnits?

Gruß
Drunken Officer ist offline   Mit Zitat antworten
Alt 16.02.2013, 21:22   #15 (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

Einfachstes Beispiel: {if (side _x == EAST) then {_x setSkill 0}} forEach allUnits;

Hier gibt es Genaueres: Stärke der KI-Einheiten

Geändert von Vienna (17.02.2013 um 09:11 Uhr).
Vienna ist offline   Mit Zitat antworten
Alt 17.02.2013, 08:18   #16 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.104
Standard

Hm, dein Code ist identisch zu meinem, außer das du ein ; weniger hast.

Also müßte es eigentlich funktionieren!? Muß ich beim setzen der Einheiten den Schieber auf null stellen?
Ich werde es ebenfalls mal mit einem Auslöser probieren, so wie in deinem Thread. Nur Ein Auslöser ruft das Script auf. Wenn das script in der Init.sqf aufgerufen, wird es doch auch aufgerufen
Drunken Officer ist offline   Mit Zitat antworten
Alt 17.02.2013, 09:15   #17 (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

Der Code bei setSkill war in meinen Beispiel falsch! Ich habe das jetzt ausgebessert (fett hervorgehoben).

Auf Spieler wirkt der Befehl nicht, nur auf KI. Mit hint str skill UnitName kannst du dir den Wert anzeigen lassen (natürlich von einer KI der richtigen Seite).
Vienna ist offline   Mit Zitat antworten
Alt 20.02.2013, 08:54   #18 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.104
Standard

Problem.
Ich habe ein kleines Zeltlager. 4 Zelte, eine Feuerstelle. Damit das Lager nicht jedesmal an der gleichen Stelle ist, habe ich 3 Marker.
Wenn ich die Objekte jetzt mit dem Marker verbinde, macht Arma2 das, was es machen soll. Jedem Objekt wird zufällig eine Postion an den 3 Markern gegeben.
Wie also kann ich die Objekte als "Gruppe" behandeln, damit das gesamte Zeltlager zufällig an einem der 3 Marker spawnt?
Mit F2 kann man keine Objekte verbinden. f5 bringt auch keinen Erfolg
Drunken Officer ist offline   Mit Zitat antworten
Alt 20.02.2013, 11:34   #19 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 31
Beiträge: 1.724
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

Benutze Kompositionen, dann ist es einfacher.
https://community.bistudio.com/wiki/...t_Compositions
__________________
Niemand hat die Absicht eine Tüte zu bauen!
Pfandgiraffe ist offline   Mit Zitat antworten
Alt 20.02.2013, 13:51   #20 (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

Hier findest du ein Beispiel, wie man eine Gruppe von Objekten an eine andere Position verlegen kann. Die Aufstellung der Objekte zueinander wird beibehalten.

Camps an zufälliger Position
Vienna 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
Scripting - viele Fragen Drunken Officer Editing & Scripting 83 22.10.2013 07:35
2 Fragen zum Little Bird "MH-6J" Sol.LrMartyn Editing & Scripting 6 30.01.2013 16:42
Anfänger hat Fragen für den Multiplayer funky-destroy Multiplayer 7 23.11.2010 16:39
Diverse Fragen.... Mafmaf Editing & Scripting 52 21.11.2010 20:29
Einige Fragen gedanke. Editing & Scripting 4 31.08.2010 18:53


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