Nie działająca pętla

Wszelkie pytania na temat SAIL'a i modowania OW.
Post Reply
User avatar
NexGaming27
Soldier level 3
Soldier level 3
Posts: 54
Joined: Sat Jun 01, 2013 4:47 pm
Location: Tam gdzie teraz jestem

Nie działająca pętla

Post by NexGaming27 »

Witam, mam problem z tym kodem, mam pętlę(chyba :P), ale jednostki po śmierci nie tworzą się, a powinny. Mam 2 kody, ten który jest(chyba) pętlą i taki który odpowiada za budowę pojazdów i atak na moją bazę. Pojazdy budują ci mechanicy, którzy są tworzeni w poniższym kodzie. Po śmierci powinni tworzyć się na nowo i znów budować pojazdy. Jednak tak się nie dzieje.
(Tak wiem, napisałem w kilku zdaniach to samo :p)

Kod na mechaników

Code: Select all

export usmech1,usmech2,usmech3,us_fabryka;
Export function PrepareAmerican2;
var i,un,l;
begin

     us_fabryka := FilterAllUnits([[f_side, 1], [f_btype, b_factory]]);

     for i in us_fabryka do
     begin

     l = 0;

        If IsInUnit(i) = 0 then
           begin
           repeat begin
           uc_side = 1;
           uc_nation = 1;
           Level=[1,2,3] [Difficulty];
           hc_gallery = '';  // galeria avatarow
           hc_name = ''; // imie
           hc_attr = [Rand(9,11), Rand(10, 12)];       //sila, szybkosc
           hc_skills = [Rand(0,2), Rand(0,2), level, Rand(0,1)];         // umiejetnosci
           hc_sex = Rand(sex_male, sex_female);   //plec
           hc_class = 3;  //klasa   1 - sold 2 - inzynier 3 - mechanik 4- naukowic

           usmech1 := CreateHuman;
           usmech2 := CreateHuman;
           usmech3 := CreateHuman;
           PlaceHumanInUnit(usmech1, i);
           l = l + 1;
           PlaceHumanInUnit(usmech2, i);
           l = l + 1;
           PlaceHumanInUnit(usmech3, i);
           l = l + 1;
           enable;
           end
           until l = 3;
           end;
    end;
Kod na atak pojazdami zbudowanymi przez mechaników:

Code: Select all

export USVehicle;
Export Function BuildingVehicle;
begin
     AddComConstruct(us_fabryka, 2, engine_combustion, control_manual, 4);
     AddComConstruct(us_fabryka, 2, engine_combustion, control_manual, 2);
     AddComConstruct(us_fabryka, 2, engine_combustion, control_manual, 2);
end;

Every 0$01 trigger FilterAllUnits([[f_side, 1], [f_type, unit_vehicle]]) = 0 marked 20 do
begin
     BuildingVehicle;
end;

Every 0$01 trigger FilterAllUnits([[f_side, 1], [f_type, unit_vehicle]]) = 3 marked 21 do
begin
     USVehicle = FilterAllUnits([[f_side, 1], [f_type, unit_vehicle]]);
     AddComAgressiveMove(USVehicle,102,11);
end;
https://www.g2a.com/r/originalwar - Original War - najtaniej w internecie. :)
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4175
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

Re: Nie działająca pętla

Post by Serpent »

Tak się nie robi pętli.

Przydałby się inny ident fabryki bo z tym może być problem, spróbuj taki kod:

Code: Select all

Export function PrepareFactory;
var i, un, l, level, usmech;
begin

     us_fabryka := FilterAllUnits([[f_side, 1], [f_btype, b_factory]]);
     Level := [1,2,3] [Difficulty];
     
     for i in us_fabryka[1] do
     begin

     l = 0;

        If IsInUnit(i) < 1 then
           begin
           
           repeat 
              begin
           uc_side = 1;
           uc_nation = 1;
           
           hc_gallery = ''; 
           hc_name = ''; 
           hc_attr = [Rand(9,11), Rand(10, 12)];      
           hc_skills = [Rand(0,2), Rand(0,2), level, Rand(0,1)];
           hc_sex = Rand(sex_male, sex_female);  
           hc_class = 3; 

           usmech := CreateHuman;
           PlaceHumanInUnit(usmech, us_fabryka[1]);
           l = l + 1;
           end until l = 3;
           end;
    End; 

END;

Co do reszty, użyj eventu na zniszczenie jednostek (dodaj tam licznik który po osiągnięciu danej wartości wyzeruje się i doda komendę produkcji nowych pojazdów).

Zobacz jak to zrobiłem w FWB.
Epickie teksty:
Marek1906: jak zrobic aby sail był zielony?
Kvantovy: Wszystko normalne, wszystko w koło było dziwne
Kvantovy:: To jest fajne, że to nie jest takie głupie
Kvantovy:: remove sos from kanapeczka
Kvantovy:: zdarzają się rzezy które sie filozofom nie śniły
Cenwen: problemem jest gejostwo
"Taki z niego fizyk jak ze mnie baletnica" - Profesor Scholtze o Kvantovym.
JAKBYŁ BYM CZECHEM TO BYM ROZŁOŻYŁ NAMIOT ~Kvanciak
User avatar
NexGaming27
Soldier level 3
Soldier level 3
Posts: 54
Joined: Sat Jun 01, 2013 4:47 pm
Location: Tam gdzie teraz jestem

Re: Nie działająca pętla

Post by NexGaming27 »

Dzięki, tylko pytanie, będzie się tworzyło 3 mechaników, w tym kodzie? Czy tylko 1?
Co do reszty, użyj eventu na zniszczenie jednostek (dodaj tam licznik który po osiągnięciu danej wartości wyzeruje się i doda komendę produkcji nowych pojazdów).

Zobacz jak to zrobiłem w FWB.
Mógłbyś mnie jakoś nakierować? Bo znaleźć tego nie mogę.
https://www.g2a.com/r/originalwar - Original War - najtaniej w internecie. :)
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4175
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

Re: Nie działająca pętla

Post by Serpent »

Jest pętla l = 3. Ty poprzednio dałeś 3 mechów zapętlonych 3 razy co dawałoby ci 9 mechów.
Mógłbyś mnie jakoś nakierować? Bo znaleźć tego nie mogę.
Moduł Events.
Epickie teksty:
Marek1906: jak zrobic aby sail był zielony?
Kvantovy: Wszystko normalne, wszystko w koło było dziwne
Kvantovy:: To jest fajne, że to nie jest takie głupie
Kvantovy:: remove sos from kanapeczka
Kvantovy:: zdarzają się rzezy które sie filozofom nie śniły
Cenwen: problemem jest gejostwo
"Taki z niego fizyk jak ze mnie baletnica" - Profesor Scholtze o Kvantovym.
JAKBYŁ BYM CZECHEM TO BYM ROZŁOŻYŁ NAMIOT ~Kvanciak
User avatar
NexGaming27
Soldier level 3
Soldier level 3
Posts: 54
Joined: Sat Jun 01, 2013 4:47 pm
Location: Tam gdzie teraz jestem

Re: Nie działająca pętla

Post by NexGaming27 »

EDIT:
Zmieniłem cały kod ataku. Jak ktoś chce to mogę go zapodać :)
https://www.g2a.com/r/originalwar - Original War - najtaniej w internecie. :)
Post Reply