Einzelnen Beitrag anzeigen
Alt 19.06.2014, 20:06   #5 (permalink)
Vienna
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

Mit dieser Routine kann jeder LKW jedes Bergwerk und jedes Lager anfahren.

Ein Beispiel für jeweils 3 Objekte, die Anzal kann beliebieg geändert werden.
Code:
private ["_lkwName","_lkwLadung"];

TransportSchleife = true; //mit false wird das Skript beendet


//Initialisieren von Bergwerken, Lager und LKWs

 //in Array mehrdimensionales Array für jedes Bergwerk: [Bergwerk-Name,Inhalt]
 Bergwerke = [[Bergwerk_A,100],[Bergwerk_B,100],[Bergwerk_C,100]];
 //in Array mehrdimensionales Array für jedes Lager: [Lager-Name,Inhalt]
 Lager     = [[Lager_A,0],[Lager_B,0],[Lager_C,0]];
 //in Array mehrdimensionales Array für jeden LKW: [LKW-Name,Inhalt]
 LKWs      = [[LKW_A,0],[LKW_B,0],[LKW_C,0]];

while {TransportSchleif} do
 {
  //Abfrage ob LKW zum Laden bei einem Bergwerk oder zum Entladen in einem Lager ist
  for "_i" from 0 to count LKWs - 1 do //durchläuft alle LKWs
   {
    _lkwName   = (LKWs select _i)select 0;
    _lkwLadung = (LKWs select _i)select 1;
    if (_lkwLadung == 0) then //LKW leer auf dem Weg zu einem Bergwerk
     {
      {
       if(_lkwName distance _x select 0 < 20)exitWith //LKW bei einem Bergwerk eingetroffen?
        {
         if (_x select 1 > 0) then             //Bergwerk-Inalt > 0 ?
          {
           LKWs select _i set [1,1];           //LKW mit 1 beladen
           _x set [1,(_x select 1)-1] //Bergwerk-Inhalt -1
          }
        }
      }forEach Bergwerke; //durchläuft alle Bergwerke  
     }
    else //LKW ist beladen auf dem Weg zu einem Lager
     {
      {
       if(_lkwName distance _x select 0 < 20)exitWith //LKW bei einem Lager eingetroffen?
        {
         LKWs select _i set [1,0];           //LKW entladen
         _x set [1,(_x select 1)+1] //Lager-Inhalt +1
        }
      }forEach Lager; //durchläuft alle Lager  
     }
   }
 };
Ist nicht getestet, sollte aber so funktionieren.

Geändert von Vienna (28.06.2014 um 08:44 Uhr). Grund: _x select 1 set ... auf _x set ... berichtigt!
Vienna ist offline