Armed-Assault.de Twitter
 
 
Themen-Optionen Ansicht
Alt 05.03.2012, 22:00   #1 (permalink)
50 Beiträge
 
Benutzerbild von spreewälder
 
Registriert seit: 21.10.2008
Beiträge: 54
Standard Player vom Count ausschliessen

Hi,

hier eine "Rundumsicherung" die nach Anlandung eines Helis erfolgt.

Funktioniert bei einer Gruppe AI. Aber sobald man selbst als Player drin ist dann nicht. Ich weiß nicht wie ich den Player (welcher Leader der Gruppe ist) von der "Rundumsicherung" also des Zählvoganges auschliesse...

Weil das Problem ist das wenn ich als Player die Gruppe zurück zur Formation rufe.. sie dann Nummer 2 folgen und bei mir noch "Bewegen" steht...

PHP-Code:
_grp     _this select 0;
_lz    _this select 1;

_target_pos     getPos _lz;

center "HeliHEmpty" createVehicle _target_pos;
center setPos _target_pos;

_ang 0;
_rad 15
_unitcount count units _grp
_inc 360/_unitcount;

sleep 0.1;
{
doStop _x;} forEach units _grp;

for 
"_x" from 0 to _unitcount do
{
    
_a = (_target_pos select 0)+(sin(_ang)*_rad);
    
_b = (_target_pos select 1)+(cos(_ang)*_rad);

    
_pos = [_a,_b,_target_pos select 2];
    
_unit units _grp select _x;

    [
_unit_pos_angspawn     {
                    
_u _this select 0;
                    
_p _this select 1;
                    
_a _this select 2;
                    
_u doMove _p;
                    
waituntil{getPos _u distance _p 2};
                    
_u setDir _a;
                    
_u setPos getPos _u;
                    
_u setUnitPos "MIDDLE";
                    
_u disableAI "move";
                    };
    
_ang _ang _inc;

};
sleep 15;
hint "Landezone gesichert";
sleep 0.1;
{
_x EnableAI 'move'_x setUnitPos "Auto";_x setFormation "LINE"} forEach units _grp;


if (
trueexitwith {}; 
spreewälder ist offline  
Alt 05.03.2012, 23:00   #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

Lass dir einmal den Leader am Ende des Skripts (vor der exitwith Zeile) anzeigen:

player groupChat format["Leader: %1",leader _grp];


Ausschließen könntest du den player indem du ihn am Beginn aus der Gruppe entfernst und am Ende wieder als Leader hinzufügst.

Geändert von Vienna (05.03.2012 um 23:09 Uhr).
Vienna ist offline  
Alt 05.03.2012, 23:16   #3 (permalink)
50 Beiträge
 
Benutzerbild von spreewälder
 
Registriert seit: 21.10.2008
Beiträge: 54
Standard

ich habs so gelöst:
PHP-Code:
_grp    _this select 0;
_lz        _this select 1;

_target_pos    getPos _lz;

center "HeliHEmpty" createVehicle _target_pos;
center setPos _target_pos;

_ang 0;
_rad 15
_unitcount count units _grp
_inc 360/_unitcount;

sleep 0.1;
{
doStopAI;} forEach units _grp;

If (
local playerthen {
    for 
"_x" from 1 to _unitcount do {
    
_a = (_target_pos select 0)+(sin(_ang)*_rad);
    
_b = (_target_pos select 1)+(cos(_ang)*_rad);

    
_pos = [_a,_b,_target_pos select 2];
    
_unit units _grp select _x;

    [
_unit_pos_angspawn     {
                    
_u _this select 0;
                    
_p _this select 1;
                    
_a _this select 2;
                    
_u doMove _p;
                    
waituntil{getPos _u distance _p 2};
                    
_u setDir _a;
                    
_u setPos getPos _u;
                    
_u setUnitPos "MIDDLE";
                    
_u disableAI "move";
                    };
    
_ang _ang _inc;
    };
}
else{
    for 
"_x" from 0 to _unitcount do {
    
_a = (_target_pos select 0)+(sin(_ang)*_rad);
    
_b = (_target_pos select 1)+(cos(_ang)*_rad);

    
_pos = [_a,_b,_target_pos select 2];
    
_unit units _grp select _x;

    [
_unit_pos_angspawn     {
                    
_u _this select 0;
                    
_p _this select 1;
                    
_a _this select 2;
                    
_u doMove _p;
                    
waituntil{getPos _u distance _p 2};
                    
_u setDir _a;
                    
_u setPos getPos _u;
                    
_u setUnitPos "MIDDLE";
                    
_u disableAI "move";
                    };
    
_ang _ang _inc;
    };
};
sleep 15;
//hint "Landezone gesichert";
sleep 0.1;
{
_x EnableAI 'move'_x setUnitPos "Auto"_x doFollow leader _grp} forEach units _grp;

    
if (
trueexitwith {}; 
Bin mir beim "local player" nicht sicher ob es dann auch bei meheren Helis funtioniert die das selbe Script nutzen.
Kann man ansonsten etwas am Script verbessern?
Danke für die Hilfe!
spreewälder ist offline  
Alt 06.03.2012, 11:43   #4 (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 hätte die Abfrage wie folgend in der for-Schleife gemacht. Das beseitigt den doppelten spawn-Teil.

Code:
...
...
{doStopAI;} forEach units _grp;

for "_x" from 0 to _unitcount do
 {
  _a = (_target_pos select 0)+(sin(_ang)*_rad);
  _b = (_target_pos select 1)+(cos(_ang)*_rad);
  
  _pos = [_a,_b,_target_pos select 2];
  _unit = units _grp select _x;
  
  if (! _unit == player) then
   {
    [_unit, _pos, _ang] spawn
     {
      _u = _this select 0;
      _p = _this select 1;
      _a = _this select 2;
      _u doMove _p;
      waituntil{getPos _u distance _p < 2};
      _u setDir _a;
      _u setPos getPos _u;
      _u setUnitPos "MIDDLE";
      _u disableAI "move";
     };
     _ang = _ang + _inc;
   };
 
 };

sleep 15;
...
...
Auch ist das so für eine Gruppe verwendbar, in der nicht der Spieler dabei ist.

"local player" hingegen hat auch Auswirkungen, wenn der Spieler nicht in der Gruppe ist.

"local player" bedeutet, dass an diesem PC ein Spieler sitzt, nicht ob er in einer Gruppe dabei ist.
Vienna ist offline  
Alt 06.03.2012, 19:44   #5 (permalink)
50 Beiträge
 
Benutzerbild von spreewälder
 
Registriert seit: 21.10.2008
Beiträge: 54
Standard

VIENNA!

Genau das hab ich gewollt! Ich bin beim scripten noch ein Neuling und daher für jede Hilfe dankbar! Auch wenn es für viele vielleicht banale Sachen sind...
Denn jeder fängt mal klein an und macht das programmieren nicht hauptberuflich

Ich finde es gut das es dieses deutschsprachige Forum gibt und es Leute gibt die einem "unter die Arme greifen" und helfen. Somit hat die Community Nachwuchs
spreewälder ist offline  
Alt 06.03.2012, 20:05   #6 (permalink)
50 Beiträge
 
Benutzerbild von spreewälder
 
Registriert seit: 21.10.2008
Beiträge: 54
Standard kleiner Fehler bei Viennas Scriptvorschlag

2 Klammern vergessen.. so ist es richtig:

Code:
if (! (_unit == player)) then
spreewälder ist offline  
Alt 07.03.2012, 09:39   #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

Für einen Neuling machst du es aber schon recht gut.

Wo in Arma Klammern zu setzen sind, ist manchmal verwirrend. Ich versuche immer keine unnötigen zu verwenden. "Verlangsamt" ja sonst den Programmablauf. Man merkt Fehler dann sowieso beim Testen (was ich hier nicht getan habe). Aber in diesem Fall hätte es eigentlich klar sein sollen.

Ich hoffe es hat dich nicht zu lange aufgehalten den Fehler zu finden. Um Skriptfehler direkt angezeigt zu bekommen, ist eine entsprechende Einstellung beim Programmaufruf erforderlich:

....\ArmA 2\arma2.exe" -nosplash -showscripterrors
Vienna ist offline  
 


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
Fragen zum Editor chris2110 Editing & Scripting 1014 26.08.2014 00:25
Rucksack CptMike Editing & Scripting 21 28.10.2011 00:35
Hilfe bei config.cpp verändern ST6_Predator Editing & Scripting 6 31.12.2010 00:14
Problem mit Briefing im MP Clawhammer Editing & Scripting 13 17.09.2010 18:29
Heal/Repair Script / Einheiten in einem Radius zufällig generieren lassen Noobfire Editing & Scripting 8 06.08.2010 16:22


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 117 118 119