Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 12.12.2012, 20:32   #1 (permalink)
Newbie
 
Registriert seit: 12.12.2012
Beiträge: 20
Standard Im Heli als Passagier einsteigen

Hallo Leute

Ich möchte das der Spieler egal was für eine Position er auswählt, immer als Passagier einsteigt.

z.B. Er wählt den Pilotensitz aus, stitzt dann aber als Passagier im Heli

Das müsste doch mit "moveInCargo" funktionieren oder bin ich da am Holzweg?


Das hab ich gefunden geht aber nicht:
if (player == driver vehicle player) then {player moveInCargo vehicle player};
Maddog_aut ist offline   Mit Zitat antworten
Alt 12.12.2012, 21:08   #2 (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

Code:
if (player != vehicle player) then
 {
  _f = vehicle player;
  player setPos [0,0];
  player moveInCargo _f
 };
Vienna ist offline   Mit Zitat antworten
Alt 13.12.2012, 05:36   #3 (permalink)
Newbie
 
Registriert seit: 12.12.2012
Beiträge: 20
Icon14

Danke Vienna

So lange hab ich probiert nichts hat funktioniert und du schüttelst die Lösung gleich so aus dem Ärmel.

Ich Danke dir. Respekt
Maddog_aut ist offline   Mit Zitat antworten
Alt 13.12.2012, 06:06   #4 (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

Vienna scriptet auch schon etwa ?11? Jahre für OFP/ArmA!?! Wie lange bist Du dabei?

__________________
Buliwyf ist offline   Mit Zitat antworten
Alt 13.12.2012, 09:27   #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

Dass man mit vehicle player die ID eines Fahrzeuges auslesen kann, wenn der Spieler im Fahrzeug ist, wusste ich bis gestern auch nicht. Auch nichts von der Unmöglichkeit mit moveIn im Fahrzeug befindliche Objekte umzusetzen.

Was ich weiß (aus unzähligen Erfahrungen mit OFP und Arma), ist wie man derartige Probleme austesten kann. So bin ich auch in diesem Fall auf die Lösung gekommen. War nicht gleich so aus dem Ärmel geschüttelt.
Vienna ist offline   Mit Zitat antworten
Alt 13.12.2012, 11:22   #6 (permalink)
Newbie
 
Registriert seit: 12.12.2012
Beiträge: 20
Standard

Ich beschäftige mich erst seit 3 Wochen mit Scripten. Finde es super wenn ich wo anstehe das mir geholfen wird. Danke schön
Wenn es geht bin ich auf bereit zu helfen.
Maddog_aut ist offline   Mit Zitat antworten
Alt 13.12.2012, 11:25   #7 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von TeRp
 
Registriert seit: 02.04.2003
Ort: San Francisco
Beiträge: 1.919
Standard

Besser als so Schleifen-Abfragen sind da eher die Befehle lock, lockDriver, lockCargo, usw.
__________________

TeRp ist offline   Mit Zitat antworten
Alt 13.12.2012, 14:17   #8 (permalink)
Newbie
 
Registriert seit: 12.12.2012
Beiträge: 20
Standard

Ich möchte das Offiziere und Piloten den Heli fliegen können. Der Rest ab in den Laderaum

ich hab das mal so umgesetzt:

Code:
_vehicleType = "Pane";
_planeCrew =  ["USMC_Soldier_Officer", USMC_Soldier_Pilot];

 
if (typeof player != _planeCrew) then {
    private "_v";
    while {alive player} do {
      waituntil {vehicle player != player};
      _v = vehicle player;
      if (_v iskindof _vehicleType ) then {
        if (driver _v == player) then {_f = vehicle player;player setPos [0,0];player moveInCargo _f;};
      };
    };
  };
Läuft aber nicht so wie ich mir es ausgedacht habe. Denke mal der Fehler liegt am rotem Text. Aufgerufen wird das Ganze in der init.sqf
Maddog_aut ist offline   Mit Zitat antworten
Alt 13.12.2012, 14:38   #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

Zitat von TeRp Beitrag anzeigen

Besser als so Schleifen-Abfragen sind da eher die Befehle lock, lockDriver, lockCargo, usw.

Kommt darauf an was man will. Will man verhindern, dass alle Spieler in ein bestimmtes Objekt nicht als Driver einsteigen dürfen, dass ist lockDriver als Sperre für dieses Fahrzeug die Lösung. Aber besteht im Objekt die Möglichkeit auf den Fahrersitz zu wechseln, dann ist das möglich.

Soll das Verhindern für alle Fahrzeuge und auch beim internen Wechseln wirksam sein, so geht das leicht mit folgendem Auslöser.

Aktivierung: Keine / Mehrfach
Bedingung: player != vehicle player and player == driver vehicle player
Bei Akt.: F = vehicle player; moveOut player; player moveInCargo F


Man kann mit so einem Auslöser nur einem bestimmten Spieler erlauben Driver zu sein. Dafür muss die Bedingung dann so aussehen:

player != S1 and player != vehicle player and player == driver vehicle player

Nun darf der Spieler S1 Driver sein, die übrigen nicht.

Soll es mehreren Spielern erlaubt sein, dann mit dieser Bedingung:

player != S1 and Player != S2 and player != vehicle player and player == driver vehicle player

Nun dürfen der Spieler S1 und S2 Driver sein, die übrigen nicht.


Die Sperre ist auch nur für ein bestimmtes Objket möglich. Soll die Sperre des Auslösers z.B. nur für das Objekt Fahrzeug1 sein, dann muss die Bedingung so lauten:

vehicle player == Fahrzeug1 and player == driver vehicle player

Geändert von Vienna (13.12.2012 um 14:57 Uhr).
Vienna ist offline   Mit Zitat antworten
Alt 13.12.2012, 14:44   #10 (permalink)
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 77
Beiträge: 6.547
Standard

*deleted*

Xeno

Geändert von Xeno (08.12.2013 um 16:22 Uhr).
Xeno ist offline   Mit Zitat antworten
Alt 13.12.2012, 14:47   #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

Zitat von Maddog_aut Beitrag anzeigen


...

Läuft aber nicht so wie ich mir es ausgedacht habe. Denke mal der Fehler liegt am rotem Text. Aufgerufen wird das Ganze in der init.sqf

Versuche das einmal mit: http://community.bistudio.com/wiki/countType
Vienna ist offline   Mit Zitat antworten
Alt 13.12.2012, 14:55   #12 (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 Xeno Beitrag anzeigen

*deleted*

Stimmt! Anstelle von setPos ist moveOut möglich. Da gibt es dann auch keine Probleme mit einem Panzer.

Somit Bei Akt.: F = vehicle player; moveOut player; player moveInCargo F

Ich werde das in obigem Post korrigieren.

Geändert von Xeno (08.12.2013 um 16:23 Uhr).
Vienna ist offline   Mit Zitat antworten
Alt 14.12.2012, 07:37   #13 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Wolkenbeisser
 
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 294
Standard

Zitat von Maddog_aut Beitrag anzeigen

Ich möchte das Offiziere und Piloten den Heli fliegen können. Der Rest ab in den Laderaum

ich hab das mal so umgesetzt:

Code:
_vehicleType = "Pane";
_planeCrew =  ["USMC_Soldier_Officer", USMC_Soldier_Pilot];
 
 
if (typeof player != _planeCrew) then {
    private "_v";
    while {alive player} do {
      waituntil {vehicle player != player};
      _v = vehicle player;
      if (_v iskindof _vehicleType ) then {
        if (driver _v == player) then {_f = vehicle player;player setPos [0,0];player moveInCargo _f;};
      };
    };
  };
Läuft aber nicht so wie ich mir es ausgedacht habe. Denke mal der Fehler liegt am rotem Text. Aufgerufen wird das Ganze in der init.sqf
Bin kein Scripter (noch nicht). Sehe aber in der ersten Zeile Deines Scripts, dass da ein 'l' fehlt. Da steht 'pane' statt 'plane'. Absicht?
Wolkenbeisser ist offline   Mit Zitat antworten
Alt 14.12.2012, 09:38   #14 (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, Pane ist keine Klasse, sondern Plane.

In dieser Zeile: _planeCrew = ["USMC_Soldier_Officer", USMC_Soldier_Pilot]; fehlen bei der 2. Klasse die Anführungszeichen.

Weiters würde ich es anstelle von if (typeof player != _planeCrew) then {...

mit if (typeOf player countType _planeCrew > 0) then {... versuchen, wie bereits erwähnt.

Damit die Init.sqf nicht blockiert wird, als Unterprogramm mit Spawn anlegen. Insgesamt so:

Code:
//Verhindert unbefugte Spieler als Driver in steuerbaren Objekten
// Parameter:
//  1. Klasse der verbotenen Objekte
//  2. Array mit Klassen der befugten Driver
//
//Die while-Schleife wird nur für Unbefugte aktiviert 

["Plane", ["USMC_Soldier_Officer", "USMC_Soldier_Pilot"]] spawn
 {
  private ["_vehicleType","_planeCrew","_f"];

  _vehicleType = _this select 0;
  _planeCrew   = _this select 1;

  if (typeOf player countType _planeCrew == 0) then
   {
    while {true} do
     {
      waituntil {player != vehicle player and player == driver vehicle player};
      _f = vehicle player;
      if (_f isKindOf _vehicleType) then
       {
        moveOut player;
        player moveInCargo _f
       };     
      sleep 1
     }
   }
 };
Ist nicht getestet!
Vienna ist offline   Mit Zitat antworten
Alt 14.12.2012, 14:39   #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

Ich habe die Routine jetzt getestet und festgestellt, dass der Befehl countType nicht funktioniert.

Ersatzweise wird {_x == typeOf player} count _planeCrew verwendet.

Folgende Routine läuft jetzt. Auch habe ich "Plane" durch "Helicopter" ersetzt.

Code:
//Verhindert unbefugte Spieler als Driver in steuerbaren Objekten
// Parameter:
//  1. Klasse der verbotenen Objekte
//  2. Array mit Klassen der befugten Driver
//
//Die while-Schleife wird nur für Unbefugte aktiviert 

temp = ["Helicopter", ["USMC_Soldier_Officer", "USMC_Soldier_Pilot"]] spawn
 {
  private ["_vehicleType","_planeCrew","_f"];

  _vehicleType = _this select 0;
  _planeCrew   = _this select 1;

  if ({_x == typeOf player} count _planeCrew == 0) then
   {
    while {true} do
     {
      waituntil {player != vehicle player and player == driver vehicle player};
      _f = vehicle player;
      if (_f isKindOf _vehicleType) then
       {
        moveOut player;
        player moveInCargo _f
       };     
      sleep 1
     }
   }
 };
Vienna ist offline   Mit Zitat antworten
Alt 22.12.2012, 07:06   #16 (permalink)
Newbie
 
Registriert seit: 12.12.2012
Beiträge: 20
Standard

{_x == typeOf player} count _planeCrew

wie kommt man auf so eine Lösung?
Maddog_aut ist offline   Mit Zitat antworten
Alt 22.12.2012, 11:54   #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

Das ist eine Eigenschaft von count: http://community.bistudio.com/wiki/count

Hier eine bessere Version zum Verhindern als Dirver, die auch berücksichtigt wenn ein vorhandener Driver zwischenzeitlich entfernt wurde: Missionserstellung Tipps&Tricks
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
Heli Wegpunkt zuweisen Rubbermen Editing & Scripting 1 06.10.2012 22:41
Heli schießt nicht auf Infantrie tramu Editing & Scripting 2 30.07.2012 18:58
Medvac Heli anfordern... Bowi Editing & Scripting 4 18.01.2011 16:34
jeep am Heli oder Falschirm Lotos Editing & Scripting 3 10.12.2010 22:12
Lösung Heli landung/abholung missionsende OF2000_editingfreak Editing & Scripting 2 12.11.2010 13:02


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