Założenie kodu:
Po wybudowaniu 3 pojazdów, pojawia się trzech mechaników, którzy wsiadają do wozów i zabierają je gdzieś tam (z mapy). Gdy pojazdy zostaną zabrane, wszystko ma się powtórzyć.
Problem: gdy zaczyna się powtarzać, mechanicy już nie wsiadają do pojazdów. Kolejne pojazdy dostają kolejne ID Pojazd[4],[5],[6], zamiast znów [1],[2],[3].
Czy da się wymazać ID jednostek? Czy można zapętlić to jakoś inaczej?
Póżniej ta pętla zostaje przerwana i zamiast mechanicy wyjeżdzać z mapy, jadą tymi pojazdami do ataku, na co mam osoby blok every, ale tak samo nie działa z powodu nadawania kolejnych ID, a nie wiadomo w którym secie, będzie wykonany kod (zależy od szybkości gracza), więc nie mogę dać konkretnych ID do tego bloku.
Code: Select all
Every 0$1 trigger GetDistUnits(Am02work, Am02Rus9)<10 or GetDistUnits(Am02work, Am02Rus10)<10 MARKED 02 do
Begin
czolg1 = addcomconstruct(Am02work, ru_medium_wheeled, engine_combustion, control_manual, ru_heavy_machine_gun);
czolg2 = addcomconstruct(Am02work, ru_medium_wheeled, engine_combustion, control_manual, ru_heavy_machine_gun);
czolg3 = addcomconstruct(Am02work, ru_medium_wheeled, engine_combustion, control_manual, ru_heavy_machine_gun);
enable(05);
end;
Function PreparePojazd;
begin
Pojazd := [];
end;
var kierowca;
On VehicleConstructed(un,fab) do
Begin
if fab=Am02work then
Begin
kierowca=IsDrivenBy(un);
ComMoveToArea(kierowca, RusPark);
AddComExitVehicle(kierowca);
AddComEnterUnit(kierowca, Am02work);
end;
begin
if fab=Am02work then
if GetChassis(un)= ru_medium_wheeled then
if GetEngine(un)= engine_combustion then
if GetControl(un)= control_manual then
if GetWeapon(un)= ru_heavy_machine_gun then
begin
pojazd= pojazd ^ un;
end;
end;
end;
every 0$1 trigger FilterUnitsInArea(RusBaseMain,[[f_side, 3],[f_weapon, ru_heavy_machine_gun]])=3 Marked 05 do
begin
disable(02);
//wait(0$20); //do zmiany czas, po testach
PlaceUnitXY(Am02Rus11, 18, 29, false);
AddComEnterUnit(Am02Rus11, pojazd[1]);
PlaceUnitXY(Am02Rus12, 17, 30, false);
AddComEnterUnit(Am02Rus12, pojazd[2]);
PlaceUnitXY(Am02Rus13, 19, 30, false);
AddComEnterUnit(Am02Rus13, pojazd[3]);
enable(03);
AddComMoveToArea(Am02Rus11, Am02exit);
AddComMoveToArea(Am02Rus12, Am02exit);
AddComMoveToArea(Am02Rus13, Am02exit);
enable
end;
every 0$1 trigger IsInArea(pojazd[1], Am02exit) and IsInArea(pojazd[2], Am02exit) and IsInArea(pojazd[3], Am02exit) MARKED 03 do
begin
RemoveUnit(Am02Rus11);
RemoveUnit(Am02Rus12);
RemoveUnit(Am02Rus13);
RemoveUnit(pojazd[1]);
RemoveUnit(pojazd[2]);
RemoveUnit(pojazd[3]);
enable(02);
disable(05);
end;