Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 23.09.2011, 18:33   #1 (permalink)
500 Beiträge
 
Benutzerbild von Virility92
 
Registriert seit: 22.05.2008
Beiträge: 552
Icon5 bestimmte einheiten feindlich machen

hi, ich bastel gerade eine MP mission, es soll ne PVP missi werden und die civs, sobald sie ne waffe in der hand haben von West KI's als feind erkannt werden. ich weiß das man dabei jede waffe abfragen muss was etwas umständlich is, aber mein gott so ist es halt.

mein problem ist, wie mache ich einzelne bestimmte einheiten feindlich?? ich will ja nicht die ganzen civ KI's feindlich machen^^

achja und da ich keine ahnung vom scripten habe mache ich das ganze mit auslösern^^ dabei kann ich so wie's aussieht aber nur ganze seiten miteinander verfeinden. is wohl ziemlich umständlich so oder? aber ich kanns eben nich anderst

... zu der mission, es soll eine sehr dynamische terroristen vs US armee werden, wobei ich das zivilisten modul benutze und ein paar spielbare civs die dann den terroristen part übernehmen. auf der ganzen map sind 5 ammo caches verteilt die mit einer gewissen warscheinlichkeit spawnen. dort bekommen die terrors ihre waffen her (ja sie spawnen unbewaffnet). als map habe ich zargabad gewählt. schöne große map, aber nicht allzu groß, und eine relativ große stadt^^ habe schon in arma 1 versucht sowas auf die beine zu stellen (mit der avgani map) aber leider erfolglos wegen zeitmangel... und vor allem zu wenig ahnung

MFG
Virility92 ist offline   Mit Zitat antworten
Alt 23.09.2011, 19:12   #2 (permalink)
500 Beiträge
 
Benutzerbild von Anemia
 
Registriert seit: 20.05.2009
Beiträge: 605
Standard

das mit den feindlichen Civs wurde hier schonmal behandelt .... vielleicht hift es ja weiter ...

Zivilisten schießen auf Soldaten (und umgekehrt)
Anemia ist offline   Mit Zitat antworten
Alt 23.09.2011, 19:30   #3 (permalink)
500 Beiträge
 
Benutzerbild von Virility92
 
Registriert seit: 22.05.2008
Beiträge: 552
Standard

ohhh ok... also wenn ich das richtig verstanden habe gibt es die möglichkeit die spielbaren civs in meiner mission mit einer opfor einheit (mit anwesenheit 0) in die gruppe zu setzen, dann setcaptive true und sobald einheit0815 waffe xy in die hand nimmt wird setcaptive false gesetzt richtig? =)
ohje das gibt dann wieder einige auslöser auf die map^^
Virility92 ist offline   Mit Zitat antworten
Alt 23.09.2011, 19:41   #4 (permalink)
500 Beiträge
 
Benutzerbild von Virility92
 
Registriert seit: 22.05.2008
Beiträge: 552
Standard

juhuuu es funzt!! hab in den auslöser bei aktivierung: Name1 setcaptive false; und bei deaktivierung: Name1 setcaptive true; reingeschrieben.
das heißt sobald der civ die waffe weglegt ist er auch wieder freundlich.
so jetzt muss ich nur noch die ganzen anderen civs und die ganzen waffenmöglichkeiten hinzufügen^^

//edit: ich glaub ich frage nicht mehr die waffe ab, sondern einfach nur allgemeint nach munition, weil wer ne waffe hat hat auch muni, im normalfall^^ bei der waffe müsste ich jede einzelne waffe abfragen.
//edit2: ok die möglichkeit ist schlecht, da die civs schon als feind erkannt werden wenn sie nur n medipack mit sich rumtragen^^

//edit3: hab jetzt eine sehr gute lösung gefunden, auslöser platzieren, bedingung: (primaryweapon NAME != "");
bei akt.: NAME setcaptive false;
(optional) bei deakt.: NAME setcaptive true;

Geändert von Virility92 (23.09.2011 um 21:15 Uhr).
Virility92 ist offline   Mit Zitat antworten
Alt 25.09.2011, 12:57   #5 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

Du solltest aber auch die secondaryWeapon abfragen, denn sonst kann ein Zivilist eine Pistole oder Raketenwerfer tragen ohne als Feind erkannt zu werden.
Rucksäcke müsstest du dann aber bei dieser Abfrage ausschließen, da diese auch als secondaryWeapon gehandhabt werden. ^^
Cyborg11 ist offline   Mit Zitat antworten
Alt 25.09.2011, 14:04   #6 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 01.06.2009
Beiträge: 103
Standard

Zitat von Cyborg11 Beitrag anzeigen

Du solltest aber auch die secondaryWeapon abfragen, denn sonst kann ein Zivilist eine Pistole oder Raketenwerfer tragen ohne als Feind erkannt zu werden.
Rucksäcke müsstest du dann aber bei dieser Abfrage ausschließen, da diese auch als secondaryWeapon gehandhabt werden. ^^

Der Befehl
Code:
secondaryWeapon unit
gibt weder Pistolen noch Rucksäcke zurück.
Pistolen wären quasi die dritte potenzielle Waffe, welche aber nicht ganz so einfach wie die primäre und sekundäre Waffe abgefragt werden können. Am sinnvollsten ist es dafür die Waffen in der cfgWeapons nach dem passenden "type" (= 2 für Waffen auf dem "Pistolen- Slot") abzufragen.

Ruchsäcke müssten mit
Code:
unitBackPack unit
abgefragt werden, spielen ja aber in dieser Angelegenheit keine Rolle, da es ja keine Waffen sind und auch nicht als solche von den Befehlen "primaryweapon" und "secondaryweapon" behandelt werden.
Asso-Loki ist offline   Mit Zitat antworten
Alt 26.09.2011, 00:11   #7 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

Na dann hab ich mich vertan, mein Fehler.
Habe schon lange nichts mehr für ArmA gemacht und hatte es falsch in Erinnerung.

Trotzdem sollte Virility92 den Befehl benutzen, um auf Raketenwerfer zu überprüfen.
Cyborg11 ist offline   Mit Zitat antworten
Alt 29.09.2011, 20:53   #8 (permalink)
500 Beiträge
 
Benutzerbild von Virility92
 
Registriert seit: 22.05.2008
Beiträge: 552
Standard

naja ok, das mit den rucksäcken ist erstmal egal wenn die als feindlich erkannt werden.
um primaryweapon auch noch abzufragen muss ich noch einmal für jeden spielbaren civ nen auslöser machen oder was??
und wie genau muss ich das für die pistolen schreiben? blick da nich so ganz durch...
kannst du mir vielleicht ein beispiel mit der M9 schreiben?
Virility92 ist offline   Mit Zitat antworten
Alt 29.09.2011, 23:13   #9 (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

Wenn du wissen willst ob eine Einheit bewaffnet ist, dann frage die Magazine oder Waffen ab:

Für Magazine: count magazines Einheit > 0

Zum Testen der gesamten Ausrüstung erstelle einen Auslöser mit folgender Ausgabe:
Code:
hint format["Waffen-Anzahl: %1:\n%2\n\nMagazine-Anzahl: %3\n%4",count weapons player, weapons player, count magazines player, magazines player]
Die Waffen abfragen ist problematischer, weil da auch Ausrüstung wie die Uhr dabei ist. Wenn du die Abfrage mit Skript machst, dann könntest du bei der Waffenabfrage die erlaubten Dinge ausnehmen.

Magazinabfrage sollte aber reichen, weil ein Zivilist oder Gefangener braucht z.B. keine Rauchgranate.

Eine Einheit entwaffnen geht mit: removeAllWeapons Einheit

Ausrüstung wie die Uhr ist davon nicht betroffen.
Vienna ist offline   Mit Zitat antworten
Alt 30.09.2011, 18:00   #10 (permalink)
500 Beiträge
 
Benutzerbild von Virility92
 
Registriert seit: 22.05.2008
Beiträge: 552
Standard

das blöde ist, wenn ich die magazine abfrage zählen auch die verbandpäckchen dazu, die jeder von ACE standartmäßig hat.
dann mach ich es besser per script... aber ich hab echt kein plan vom scripten

habe mal im editing guide nachgeschaut um mal einen ansatz zu bekommen.

Code:
#Start;
If(count weapons T1 > 0 \NVGoogles, ItemGPS, ItemMap, ItemCompass, ItemWatch, Binocular)Then{T1 setcaptive false}
Else{T1 setcaptive true;exit};
goto “Start”;
die gegenstände die man haben darf, hab einfach mal das "ohne" zeichen aus der matemathik davor gesetzt, könnte ja richtig sein

T1 ist dabei einer der spielbaren civs (insgesamt 21 davon).
Virility92 ist offline   Mit Zitat antworten
Alt 30.09.2011, 20:11   #11 (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

Dafür ist eine eigene Funktion eine gute Lösung. Diese wird in einem Skript einmalig in eine globale Variable "initialisiert", um sie dann mit call aufzurufen. Die Funktion steht dann im Editor und in anderen Skripts zur Verfügung. Das "Funktions-Skript" muss natürlich vor anderen Skripts einmalig aufgerufen werden.

Die Funktion selbst wird dann so aufgerufen: Unitname call WaffeVorhanden

Die Rückgabe der Funktion ist logisch: true oder false


Funktion_WaffeVorhanden.sqf
Code:
// Funktion für Abfrage ob eine Einheit Waffen hat  [Vienna  30.09.2011]
//
// Aufruf der Funktion  : Unit call WaffeVorhanden;
//
// Rückgabe der Funktion: true/false
//
// In Variable _a sind erlaubte Gegenstände gelistet.
// 
// Die Auflistung der Gegenstände kann erweitert werden.
//  Achtung! Trennung durch Beistrich! 
//           Beim letzten Gegenstand kein Beistrich!

WaffeVorhanden = 
 {
  private ["_a","_w"];
  _a=
   [
    "ItemGPS", 
    "ItemMap", 
    "ItemCompass", 
    "ItemWatch", 
    "NVGoogles",
    "ItemRadio", 
    "Binocular"
   ]; 
  _w=false;
  {if (NOT(_x in _a)) then {_w=true}} forEach weapons _this;
  _w
 }
Im Anhang auch eine Beispielmission zum Testen der Funktion.
Angehängte Dateien
Dateityp: zip WaffeVorhanden_Funktion-utes.zip (1,7 KB, 42x aufgerufen)
Vienna ist offline   Mit Zitat antworten
Alt 01.10.2011, 19:43   #12 (permalink)
500 Beiträge
 
Benutzerbild von Virility92
 
Registriert seit: 22.05.2008
Beiträge: 552
Standard

cool danke für die hilfe!

aber irgendwie bin ich echt zu blöd um das gebacken zu kriegen

wie soll ich das in einen auslöser reinschreiben??
bei bedingung: zivilist1 waffevorhanden = true

und dann kommt:

bei akt.: zivilist1 setcaptive false
bei deakt.: zivilist1 setcaptive true
Virility92 ist offline   Mit Zitat antworten
Alt 01.10.2011, 21:51   #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

Eigene Befehle (Funktionen) sind mit call aufzurufen. Die Gleich-Abfrage besteht in Arma aus zwei ==

Bedingung: zivilist1 call waffevorhanden == true

Logische Abfragen gehen auch ohne == true Also nur:

Bedingung: zivilist1 call waffevorhanden
Vienna ist offline   Mit Zitat antworten
Alt 02.10.2011, 12:33   #14 (permalink)
500 Beiträge
 
Benutzerbild von Virility92
 
Registriert seit: 22.05.2008
Beiträge: 552
Standard

Zitat von Vienna Beitrag anzeigen

Bedingung: zivilist1 call waffevorhanden == true

wenn ich das so eingebe und enter drücke kommt eine fehlermeldung
Zitat:

==: typ jede erwartet zahl, zeichenfolge, objekt, seite, gruppe, text, config etc

dann hab ich anstatt true einfach 1 eingegeben, dann gings, aber im spiel kam dann der gleiche error^^

ich kann das ja nicht ohne true/false machen, weil die einheit soll ja nur bei true auf setcaptive false gesetzt werden. der auslöser muss ja wissen ob er bei true oder bei false aktiviert werden soll.
Virility92 ist offline   Mit Zitat antworten
Alt 02.10.2011, 13:13   #15 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Buliwyf
 
Registriert seit: 11.03.2005
Ort: HH
Alter: 46
Beiträge: 1.927
Standard

Wenn die Funktion nur true oder false auswirft, dann muss im Auslöser auch nur zivilist1 call waffevorhanden stehen. Nichts mit ...==true oder ...==1

So verstehe ich es zumindest..

__________________
Buliwyf ist offline   Mit Zitat antworten
Alt 02.10.2011, 14:03   #16 (permalink)
500 Beiträge
 
Benutzerbild von Virility92
 
Registriert seit: 22.05.2008
Beiträge: 552
Standard

jetzt hab ich es hinbekommen! hehe sorry das ich mich so blöd angestellt hab^^
funktioniert mir zivilist1 call waffevorhanden wie du gesagt hast =)

danke für die hilfe!!
Virility92 ist offline   Mit Zitat antworten
Alt 18.04.2012, 22:10   #17 (permalink)
50 Beiträge
 
Benutzerbild von spreewälder
 
Registriert seit: 21.10.2008
Beiträge: 54
Standard

Hoffe mir kann man helfen.

Ich möchte "waffevorhanden" (---> Panzerfaust) als Bedingung für einen Trigger haben der erst bei Betreten des Triggers ausgelöst wird und mir dann meine Aktion freigibt
PHP-Code:
myAct player addAction ["Panzer in Querfahrt""scripts\panzerquerfahrt.sqf"]; 
... bin schon ewig am probieren und weiß nicht weiter...
spreewälder ist offline   Mit Zitat antworten
Alt 19.04.2012, 08:10   #18 (permalink)
50 Beiträge
 
Benutzerbild von spreewälder
 
Registriert seit: 21.10.2008
Beiträge: 54
Standard Hat sicher erledigt.

Lösung gefunden.

condition:

Code:
this and player hasWeapon "BwMod_PzF";
on act:
Code:
myAct = player addAction ["Panzer in Querfahrt", "scripts\panzerquerfahrt.sqf"];
spreewälder 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
Einheiten in Gruppe löschen Brubaker Editing 6 26.05.2011 17:44
Einheiten aus den alternativen Schützenplätzen werfen! GER_CJ-187 Editing & Scripting 7 17.11.2010 15:29
Einheiten springen gleichzeitig aus Helikopter bei Bodenberührung ca$hflow Editing & Scripting 24 25.09.2010 18:41
Heal/Repair Script / Einheiten in einem Radius zufällig generieren lassen Noobfire Editing & Scripting 8 06.08.2010 15:22
Script-Problem: Einheiten löschen Kampfmöhre Editing & Scripting 5 31.05.2010 12:37


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