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.