Jak wiadomo SAIL em mozna postawić minę dowolnym żołnierzem dowolnej nacji...
dzieje sie tak z kodu:
Kod: Zaznacz cały
ComPlaceRemoteCharge(identyfikator_postaci,x,y,0);
Wartości x i y to współrzędne ładunku, a 0 (zero) to obrót.
Kod: Zaznacz cały
ComPlaceRemoteCharge(identyfikator_postaci,x,y,0);
Wartości x i y to współrzędne ładunku, a 0 (zero) to obrót.
Kod: Zaznacz cały
MineExplosion(x, y, f);
Kod: Zaznacz cały
Przykład:
Mamy na mapie aree pole_minowe, w której po wejściu jakiegoś ludzika nastąpi wybuch
Export mina;
Every 0$1 do
begin
mina = false;
end;
Every 0$01 trigger mina = false do
var enemy_units, un;
begin
enable;
enemy_units = FilterUnitsInArea(pole_minowe, [f_side, {strona_jednostek które mają aktywować wybuch np.} 1);
If enemy_units > 0 then
for un in enemy_units do
begin
MineExplosion(GetX(un), GetY(un), 1);
mina = true;
end;
end; // kod powinien działać, niestety nie mam teraz pod ręką edytora żeby go sprawdzić
Kod: Zaznacz cały
Every 0$01 trigger IsInArea(Burlak, Base3) do
begin
MineExplosion(GetX(Burlak), GetY(Burlak), 1);
end;
Kod: Zaznacz cały
MineExplosion(GetX(un), GetY(un), 1);
Kod: Zaznacz cały
MineExplosion(GetX(un), GetY(un), 1);
Kod: Zaznacz cały
enemy_units = FilterUnitsInArea(pole_minowe, [f_side, 1]);
Kod: Zaznacz cały
MineExplosion(GetX(un), GetY(un), 1);
Kod: Zaznacz cały
Export mina;
Every 0$1 do
begin
mina = false;
end;
Every 0$01 trigger mina = false do
var enemy_units, un;
begin
enable;
enemy_units = FilterUnitsInArea(pole_minowe, [f_side, {strona_jednostek które mają aktywować wybuch np.} 1);
If enemy_units > 0 then
for un in enemy_units do
begin
MineExplosion(GetX(un), GetY(un), 1);
mina = true;
end;
end;
Kod: Zaznacz cały
Every 0$01 trigger mina = false do
var enemy_units, un;
begin
enable;
enemy_units = FilterUnitsInArea(pole_minowe, [f_side, {strona_jednostek które mają aktywować wybuch np.} 1);
If enemy_units > 0 then
for un in enemy_units do
begin
MineExplosion(GetX(un[1]), GetY(un[1]), 1);
mina = true;
If enemy_units > 1 then
MineExplosion(GetX(un[2]), GetY(un[2]), 1);
If enemy_units > 2 then
MineExplosion(GetX(un[3]), GetY(un[3]), 1);
If enemy_units > 3 then
MineExplosion(GetX(un[4]), GetY(un[4]), 1);
end;
end;
Kod: Zaznacz cały
Function init_miny;
Var M;
Begin
If Difficulty = 1 then Miny = []
else Begin
Miny = [[62,14],[64,17],[66,17],[65,12],[68,15],[64,14],[60,5],[60,15],[59,18],[56,16],[49,15],[33,18],[42,42],[112,42]];
For M in Miny do PlaceMine (M [1], M [2], side_Ar, 0);
End;
End;
Function testuj_minu (X, Y);
Var Jednotky;
Begin
// Mina bouchne, pokud je v blízkosti Rusák.
Jednotky = FilterAllUnits ([[F_SIDE, side_Ru], [F_DISTXY, X, Y, 2]]);
If Jednotky then
Begin
LaunchMineAtPos (X, Y, side_Ar);
Result = true;
End else Result = false;
End;
Every 0$1.1+0$0.7 do
Var M, Bouchlo;
Begin
// Otestovat, zda nemá bouchnout nějaká mina.
If not Miny then Exit;
Bouchlo = [];
For M in Miny do
If testuj_minu (M [1], M [2]) then
Bouchlo = Bouchlo ^ [M];
If Bouchlo then Miny = Miny diff Bouchlo;
If Miny then Enable;
End;
Kod: Zaznacz cały
Miny = [[62,14], ...];
Kod: Zaznacz cały
Export miny;
Kod: Zaznacz cały
For M in Miny do PlaceMine (M [1], M [2], side_Ar, 0);
Kod: Zaznacz cały
Every 0$1 do
init_miny;
Function init_miny;
Begin
Miny = [[62,14],[64,17],[66,17],[65,12],[68,15],[64,14],[60,5],[60,15],[59,18],[56,16],[49,15],[33,18],[42,42],[112,42]];
End;
Function testuj_minu(X, Y);
Var Jednotky;
Begin
Jednotky = FilterAllUnits ([[F_SIDE, side_Ru], [F_DISTXY, X, Y, 2]]);
If Jednotky then
Begin
MineExplosion(X, Y, 1);
Result = true;
End else Result = false;
End;
Every 0$02 do
Var M, Bouchlo;
Begin
If not Miny then Exit;
Bouchlo = [];
For M in Miny do
If testuj_minu(M [1], M [2]) then
Bouchlo = Bouchlo ^ [M];
If Bouchlo then
Miny = Miny diff Bouchlo;
If Miny then Enable;
End;