03.11.2013, 16:47 | #1 (permalink) |
Registriert seit: 05.10.2013
Ort: Erfurt
Alter: 47
Beiträge: 26
|
Verwundeter Pilot als Objekt
hi werte Arma-Gemeinde.
Ich hoffe eigtl., dass dieser Punkt nicht weiter problematisch ist. Leider komm ich aber nicht vorwärts. In einer PvP-Mission (angelehnt an die Map SF CSAR aus Americas Army 2) soll es neben der Zerstörung eines abgestützten Helis auch einen verwundeten Piloten als Objekt geben. D.h. ich möchte gern eine Figur auf „verletzt“ an einem bestimmten Ort platzieren. Da die Runde enden soll, wenn beide Objekte gemacht sind, braucht diese Figur nicht spielbar zu sein und muss an sich nicht einmal aufstehen. Leider kann ich aber auch mit dem =BTC= Revive Figuren nur tot oder lebendig angeben. Es gibt doch aber eine Art zwischenzustand. Die Figur soll also weder angeschossen rumlaufen, noch reglos am Boden liegen. In einigen Missionen online konnte ich schon sehen, dass es dieses "am Boden winden" gibt. Hat jemand eine Idee wie ich diesen einstellen kann? Besten Dank Paspertou PS: vielleicht noch eine weitere Frage: ich wollte gern einen Laptop auf den Tisch stellen. Leider fällt der aber immer durch. Selbst mit der entsprechenden Höhenangabe und auch dem Eintrag fällt er immer zu Boden, wie bekomme ich das teil schwebend? Geändert von Paspertou (03.11.2013 um 19:17 Uhr). Grund: Nachtrag |
03.11.2013, 21:14 | #2 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.110
|
Pilotenname: wasweißich
Init des Piloten: this setDammage 0.6 ( 0 = fit wie ein Turnschuhe; 1 = Ruhe sanft) Rufst du seinen Schaden wo anders auf: wasweißich setDammage 0.6; Darf der Pilot getötet werden? Falls nein: this allowDammage false; << unverwundbar das Winden ist eine Loop funktion in der immer wieder eine Animation abgespielt wird: http://community.bistudio.com/wiki/playAction Den loop erzeugst du mit while {true} do {...}; und einer sleep Funktion Statt true kannst du auch eine andere bedingung nehmen.# Du kannst ihn auch mit der Animation ablegen und dann "einfrieren"; Dann in die Init: Code:
this allowDammage false; this setDammage 0.7; this playerAction "PlayerProne"; this disableAI "anim"; unverwundbar setzt Schaden auf 0.7 (da sieht man definitv blut am körper) spielt eine Aktion ab, kA was Player Prone ist friert die Puppe ein zum Laptop: http://community.bistudio.com/wiki/attachTo Geändert von Drunken Officer (03.11.2013 um 21:22 Uhr). |
04.11.2013, 01:27 | #5 (permalink) |
Registriert seit: 05.10.2013
Ort: Erfurt
Alter: 47
Beiträge: 26
|
Besten Dank für die schnelle Hilfe!
Vieles hat schon wunderbar geklappt aber leider stell ich mich wohl doch etwas dumm an. "this allowDammage false;" (brauche ich tatsächlich) und "this setDammage 0.7;" funtionieren super. Ich habe der Figur noch alle Items weggenommen, weil sie sich sonst immer sofort selbst geheilt hat. Der Eintrag: "this playerAction "PlayerProne";" klappt so leider nicht. Kann es sein, dass es "playAction" heißen muss? Aber auch dann macht er leider nichts. Auf den Befehl "setUnitPos "down";" legt er sich zwar hin aber, wenn ich mir dann die gewünschte Animation raussuche und statt "down" einsetze (hier: "AinjPpneMstpSnonWnonDnon_injuredHealed") passiert leider nichts. Wie und wo ich den loop erzeuge habe ich wohl auch noch nicht verstanden. In der Init-Zeile oder als Bewegung klappen meine Einträge (z.B: "while {true} do {JumpOff};" jedenfalls nicht. Auch die Sache mit dem Laptop klingt zwar wie eine große Hilfe, leider tue ich mich aber schwer den Befehl "SuitcaseObject attachTo [FoldingTableObject, [0,0,0]];" auf meinen Fall zu übertragen. Wo trage ich das eigtl. ein und woher kenne ich die korrekten Namen für Laptop und Tisch? Im Konfig-Viewer hab ich mich schon wund gesucht. Sorry, wenn ich mich so anstelle aber falls ihr mir hier nochmal helfen könnt wäre das super. Danke. |
04.11.2013, 09:46 | #7 (permalink) |
Registriert seit: 08.08.2009
Ort: Niedersachsen
Alter: 59
Beiträge: 426
|
Dem Trigger für die Pilotenanimation schreibste z.B. das in die Aktivierungszeile:
Code:
Pilot setDamage 0.8; Pilot playMove "AinjPpneMstpSnonWrflDnon_rolltofront"; Pilot playMove "AinjPpneMstpSnonWrflDnon_rolltoback"; Pilot playMove "AinjPpneMstpSnonWnonDnon_injuredHealed"
__________________
Panzergrenadiere - Dran! Drauf! Drüber! |
04.11.2013, 10:52 | #9 (permalink) |
Registriert seit: 18.10.2013
Alter: 42
Beiträge: 64
|
Die Namen der Dinge findest am schnellsten und einfachsten, wenn du ihnen erstmal im Editor einen Namen gibst und sie dann in der mission.sqm suchst. Durch den gegebenen Namen findet man die Sachen recht zügig. Code:
class Vehicles { items=2; class Item0 { position[]={1670.2821,5.5,5566.4346}; azimut=100.378; id=1; side="EMPTY"; vehicle="Land_TableDesk_F"; skill=0.60000002; text="Tisch"; }; class Item1 { position[]={1670.3402,5.5,5566.4409}; azimut=99.940598; offsetY=2; id=2; side="EMPTY"; vehicle="Land_Laptop_unfolded_F"; skill=0.60000002; text="Laptop"; }; }; Und wie du sehen kannst gehören die beiden Sachen zu der Oberklasse Vehicles, also kannst Du sie jetzt auch im Konfigbrowser unter CfgVehicles finden. |
04.11.2013, 13:47 | #11 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.110
|
Ah, doch nicht so kompliziert. Du kannst den Objekten einen Namen geben und damit direkt ansprechen.
laptop = schleppi tisch = tisch Für attachto reicht der Name völlig aus, er will es doch nicht spawnen lassen, sondern setzt es bereits im Editor. schleppi Attachto [tisch,[x,y,z]] Mit 0 0 0 wird das Ding in die Geometrische Mitte des Objekts gesetzt und kann somit "unsichtbar" werden. Du mit mit den Zahlen spielen und dir deinen Laptop zurecht schieben. |
10.11.2013, 20:49 | #12 (permalink) |
Registriert seit: 05.10.2013
Ort: Erfurt
Alter: 47
Beiträge: 26
|
liebe Arma-Gemeinde,
besten Dank für die Hilfe. Dieses Problem ist somit gelöst. Nun ergeben sich noch Details: Der Pilot liegt nun rum und windet sich. Ich habe eine Action daruf gelegt und so kann der Pilot als Objekt "gemacht" werden. Allerdings ist er noch "heilbar". D.h. wenn ihn jemand mit einem Sanipack aufmuntert, läuft er einfach fröhlich los. Das würde ich gern verhindern: Frage 1: Kann ich die Heilung einer Figur deaktivieren? Zudem soll den Pilot nur eine der beiden Seiten "machen" können (genau wie ein anderes Objekt, dass zur Endauslösung führt). Frage 2: Wie kann ich definieren, dass nur Blue bzw. Red ein Objekt machen darf? Und zuletzt: ich habe als "Objekt machen" die Angaben geschrieben. Leider ist dazu aber "nur" ein kurzer Klick nötig. Frage 3: Kann ich eine Art Prozess (z.B.: halte die Leertaste 3 Sekunden) im Ideal mit einer Fortschrittsanzeige vergeben oder wenigstens eine Prozess (z.B. nach Druck auf die Leertaste beginnt ein sichtbarer Prozess von x Sekunden) starten? Vielleicht hat jemand von euch wieder so eine tolle Idee. Danke Pasper |
12.11.2013, 04:24 | #13 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.110
|
Frage 3:
Der Balken wäre ein Dialog. Viel Spaß dabei... Alternativ könntest du aber über Code:
cuttext [format ["Text %1 ",_variable],"PLAIN",1]; Die Variable mußt du natürlich vorher definieren. Rufe ein Script auf oder schreibe den Code in den addaction-befehl Code:
private ["_zeit"]; _zeit = 20; while {_zeit != 0} do {cuttext [format ["Ärztliche Versorgung daurt an. \n Warten sie %1 Sekunden",_zeit],"PLAIN",1]; _zeit = _zeit - 1; sleep 1;}; cutText ["Versorgung abgeschlossen","Plain Down",0.5]; Wie meinst du das mit Objekt machen darf? Ansonsten hänge einen Auslöser 4/4 über den Piloten. Ausgelöst durch Blau / Einmal. Bedingung: this Akt: pilot addaction ..... Frage 1: Das kann ich fir nicht benatworten. Ich wüßte nur, dass du den Wert wieder anders setzt. Aber das ist glaube ich nicht die saubere Lösung. Code:
while {alive pilot} do { _dam = getDammage Pilot; waitUntil {_dam < 0.1}; Pilot setDammage 0.7; }; Geändert von Drunken Officer (14.11.2013 um 20:49 Uhr). Grund: Fehler in der cuttext formatierung behoben |
12.11.2013, 21:49 | #14 (permalink) |
Registriert seit: 05.10.2013
Ort: Erfurt
Alter: 47
Beiträge: 26
|
Hi Drunken Officer,
vielen Dank für deine Hilfe. Noch habe ich ein paar Problem in der Umsetzung. Meine Bemühungen die Zeitangabe in den addAction-Befehl einzutragen sind bislang nicht erfolgreich gewesen. So sieht es aktuell bei mir aus: Dabei mache ich wohl aber was verkehrt. Zu meiner Frage zwei: Alle Funktionen die ich einbringe (also so wie der o.g. "rescue the pilot" sind ja zunächst nicht auf eine Seite begrenzt. Also praktisch könnte auch ein Spieler der Gegenseite das Objekt machen. Kann ich festlegen, das ein Objekt nur druch eine Seite "machbar" ist? Dein Tipp für meine Frage 1 ist erstmal ganz gut. Zwar verschwindet das Blut, aber das ist mir nicht so wichtig. Hauptsache der Gute bleibt liegen. Fall es mal hitzig wird, wäre es natürlich noch besser man könnte diese (Heilen)-Option aus dem Kontextmenü ganz entfernen. Lieben Dank Pasper |
12.11.2013, 22:01 | #15 (permalink) |
Registriert seit: 02.11.2010
Beiträge: 113
|
Code:
private ["_zeit"]; _zeit = 20; while {_zeit != 0} do { cutText [format["Ärztliche Versorgung daurt an. \n Warten sie %1 Sekunden","Plain Down",1],_varibable]; _zeit = _zeit - 1; sleep 1;}; cutText ["Versorgung abgeschlossen","Plain Down",0.5]; LG Jan |
13.11.2013, 08:17 | #16 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.110
|
Sorry, für den Fehler mit Variable und Zeit. Ich hatte mein Post abgeändert und vergessen diesen Wert zu ändern.
Aus dem BIS Forum: Code:
this addaction ["interact",{hint "Give me a ride"},0,0,true,true,"","(side _this == blufor)"]; mußt mal probieren |
13.11.2013, 10:02 | #17 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.110
|
Gerade getest:
Hänge das auf den Piloten drauf: Code:
tod = this addaction["gefunden",{ [15,2]spawn {_zeit = _this select 0; while {_zeit != 0} do {cuttext [format ["Ärztliche Versorgung daurt an. \n Warten sie %1 Sekunden",_zeit],"PLAIN",1]; sleep (_this select 1); _Zeit = _zeit - 1};cutText ["Versorgung abgeschlossen","PLAIN",0.5];};},"",0,true,true,"","(side _this == blufor)" ]; Der Actioneintrag ist nur für Blau sichtbar. Das mit der Distanze kleiner 5 ist egal, weil der Eintrag eh erst auf 5 Meter erscheint. Wäre nur interessant, wenn es kleiner 2 oder 1 Meter sein soll. |
14.11.2013, 15:27 | #18 (permalink) |
Registriert seit: 05.10.2013
Ort: Erfurt
Alter: 47
Beiträge: 26
|
Hi DrunkenOfficer,
super - das klappt toll soweit. Nun hab ich (dank meiner nicht vorhandenen Programmierungskünste) noch ein kleines Problem. Ich habe überall versucht in deinen Code den Hinweis für den Auslöser "{pil1=true}" einzufügen. leider aber ohne Erfolg. Entweder bleibt die Funktion ganz aus, zählt bis 1 und stoppt oder es passiert einfach nichts im Anschluss. Nach dem Prozess soll ja aber der Auslöser mit der Bedingung "pil1" aktiviert werden. Wo füge ich das innerhalb deines Codes den ein? Wäre super, wenn du mir damit nocheinmal behilflich sein kannst. Thx Pasper |
14.11.2013, 20:39 | #19 (permalink) |
Registriert seit: 02.11.2010
Beiträge: 113
|
Na ganz einfach:
Code:
tod = this addaction["gefunden",{ [15,2]spawn {_zeit = _this select 0; while {_zeit != 0} do {cuttext [format ["Ärztliche Versorgung daurt an. \n Warten sie %1 Sekunden",_zeit],"PLAIN",1]; sleep (_this select 1); _Zeit = _zeit - 1}; pil1=true; cutText ["Versorgung abgeschlossen","PLAIN",0.5];};},"",0,true,true,"","(side _this == blufor)"]; Jan |
14.11.2013, 20:43 | #20 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.110
|
Sobald der addAction Befehl aufgerufen wird, ist der wert true.
Code:
tod = this addaction["gefunden",{ [15,2]spawn {_zeit = _this select 0; pil1 = true; while {_zeit != 0} do {cuttext [format ["Ärztliche Versorgung daurt an. \n Warten sie %1 Sekunden",_zeit],"PLAIN",1]; sleep (_this select 1); _Zeit = _zeit - 1};cutText ["Versorgung abgeschlossen","PLAIN",0.5];};},"",0,true,true,"","(side _this == blufor)" ]; Code:
tod = this addaction["gefunden",{ [15,2]spawn {_zeit = _this select 0; while {_zeit != 0} do {cuttext [format ["Ärztliche Versorgung daurt an. \n Warten sie %1 Sekunden",_zeit],"PLAIN",1]; sleep (_this select 1); _Zeit = _zeit - 1};cutText ["Versorgung abgeschlossen","PLAIN",0.5]; pil1 = true};},"",0,true,true,"","(side _this == blufor)" ]; 15 Sekunden bis 0 2 Sekunden Pause tod ist einfach nur eine Varibale. Kannst auch Apfelkuchen nehmen. Setze den Wert Pil1 in der init.sqf auf pil1 = false; |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Fun Thread - alles was lustig ist hier rein! | Kompost | Offtopic | 5593 | 02.12.2021 13:27 |
Ein Objekt als Auslöser & Rundenmodus | Paspertou | Editing & Scripting | 2 | 06.10.2013 00:05 |
Objekt wird nicht gespawnt | MagicStyle | Editing & Scripting | 2 | 13.08.2013 15:33 |
Objekt im Inventar, Mission erfüllt | Marscl | Editing & Scripting | 16 | 11.04.2012 00:10 |
ActionMenue an ein Objekt hängen | Drunken Officer | Editing & Scripting | 2 | 10.03.2012 11:11 |