Ich habe da nur ein Beispiel aus Arma1. Eine Kanone feuert in Richtung Ziel, danach wird der "Einschlag" erzeugt.
Code:
//Funktion Schussabgabe für ArtillerieHQ.sqf ArmA ab 1.05 Vienna 03.01.2007
//
//Parameter: [<Objekt-Kanone>,[<Zielposition X,Y>],"<Munitionsname>",<Schussanzahl>,<MunitionsNummer(1-2)>]
Private ["_Kanone","_Muni","_anzahl","_xz","_yz","_s","_r"];
//Verzögerung des 1. Schusses
Sleep random 10 + 3;
_Kanone = _this select 0;
_Muni = _this select 2;
//Schuß abfeuern. Dauer eines Schusses (Zielen, Feuern und Nachladen): 24 Sekunden.
_s=0;
while {_s < _this select 3}do
{
//Streuung if:MuniNr=1? then:40m bei Panzer HE. else:100m bei Zeitbombe.
if(_this select 4 == 1)then
{
_xz = ((_this select 1) select 0)-20+Random 40;
_yz = ((_this select 1) select 1)-20+Random 40
}
else
{
_xz = ((_this select 1) select 0)-50+Random 100;
_yz = ((_this select 1) select 1)-50+Random 100
};
_anzahl = _Kanone Ammo _Muni;
//if: Munition vorhanden? then: Schuss. else: Defekt oder keine Munition.
if(_anzahl > 0)then
{
_Kanone DoWatch [_xz,_yz,1000];
sleep 3;
_Kanone fire _Muni;
//Explosion: warten bis Geschütz abgefeuert (max. 15 sekunden)
_r=0;while{_r < 15}do{if(_anzahl > _Kanone Ammo _Muni)then{_r=30}else{_r=_r+1};sleep 1};
if(_r == 30)then
{
sleep 4;
//if:MuniNr=1? then:Panzer HE. else:Zeitbombe.
if(_this select 4 == 1)then
{
_Granate = "Sh_122_HE" CreateVehicle [_xz,_yz];
sleep 1;
deleteVehicle _Granate
}
else
{
_Granate = "bomb" createVehicle [_xz,_yz];
_Granate setDamage 1;
sleep 1;
deleteVehicle _Granate
}
}
}
else
{
titleText["Artillerie defekt oder keine Munition!","Plain down"]
};
_s=_s+1;
sleep 14 //Nachladezeit, wichtig für korrekte Animation!!
};