Problem z stworzeniem i skasowaniem konwoju

Wszelkie pytania na temat SAIL'a i modowania OW.
Post Reply
JRF
Soldier level 1
Soldier level 1
Posts: 25
Joined: Sat Jan 07, 2012 1:40 pm

Problem z stworzeniem i skasowaniem konwoju

Post by JRF »

Nie mogę pojąć czemu wycinek kodu nie działa w misji, ale jak wyodrębnię go do nowej mapy działa...
Nie mam zielonego pojęcia, co i jak to może wywoływać.

Oto tenże urywek kodu(dokładnie to funkcja resources i triggery 800,801,802, reszta jest po to by kod samodzielnie działał)
(nie będę dodawać komentarzy, bo chyba wszystko jest jasne, w przeciwnym razie piszcie)
(kropki są zamiast odstępów, bo quotation je ignoruje)

var dri1, dri2, dri3, cargo1, cargo2, cargo3, sol, al1,al2,al3,al11,al12,al13,al14,al21,al22,al23,al24,al31,al32,al33,al34,al41,al42,al43,al44;

export function resources;
begin
..uc_side:=5;
..uc_nation:=nation_arabian;
..vc_chassis:=ar_half_tracked;
..vc_engine:=engine_combustion;
..vc_control:=control_manual;

..cargo1:=vehicle(ar_cargo_bay);
..SetCargo(cargo1, mat_cans, 100);
..sol:=soldier(1,1,1,1);
..PlaceHumanInUnit(sol,cargo1);
..PlaceUnitArea(cargo1,EnterArea,false);
..ComMoveToArea(cargo1,UnArea);
..AddComUnload(cargo1);
..dri1:=sol;
..cargo2:=vehicle(ar_cargo_bay);
..SetCargo(cargo2, mat_cans, 100);
..sol:=soldier(1,1,1,1);
..PlaceHumanInUnit(sol,cargo2);
..PlaceUnitArea(cargo2,EnterArea,false);
..ComMoveToArea(cargo2,UnArea);
..AddComUnload(cargo2);
..dri2:=sol;
..cargo3:=vehicle(ar_cargo_bay);
..SetCargo(cargo3, mat_oil, 100);
..sol:=soldier(1,1,1,1);
..PlaceHumanInUnit(sol,cargo3);
..PlaceUnitArea(cargo3,EnterArea,false);
..ComMoveToArea(cargo3,UnArea);
..AddComUnload(cargo3);
..dri3:=sol;
..AddComMoveXY(cargo1,39,77);
..AddComMoveXY(cargo2,39,77);
..AddComMoveXY(cargo3,39,77);
..while(GetCargo(cargo1,mat_cans) or GetCargo(cargo2,mat_cans) or GetCargo(cargo3,mat_oil)) do wait(0$0.1);
..SetCargo(cargo1, mat_cans, 10);
..ComMoveXY(cargo1,40,2);
..SetCargo(cargo2, mat_cans, 10);
..ComMoveXY(cargo2,42,2);
..SetCargo(cargo3, mat_cans, 10);
..ComMoveXY(cargo3,44,2);
..enable(800);
..enable(801);
..enable(802);
..al1:=true;
..al2:=true;
..al3:=true;
..while(al1 or al2 or al3) do
..begin
....if al1 then al11:=GetX(cargo1);
....if al2 then al21:=GetX(cargo2);
....if al3 then al31:=GetX(cargo3);
....if al1 then al12:=GetY(cargo1);
....if al2 then al22:=GetY(cargo2);
....if al3 then al32:=GetY(cargo3);
....wait(0$2);
....if al1 then al13:=GetX(cargo1);
....if al2 then al23:=GetX(cargo2);
....if al3 then al33:=GetX(cargo3);
....if al1 then al14:=GetY(cargo1);
....if al2 then al24:=GetY(cargo2);
....if al3 then al34:=GetY(cargo3);
....if al11=al13 and al12=al14 then
....begin
......SetCargo(cargo1, mat_cans, 0);
......al1:=false;
....end;
....if al21=al23 and al22=al24 then
....begin
......SetCargo(cargo2, mat_cans, 0);
......al2:=false;
....end;
....if al31=al33 and al32=al34 then
....begin
......SetCargo(cargo3, mat_cans, 0);
......al3:=false;
....end;
..end;
end;


every 0$0.1 trigger not GetCargo(cargo1,mat_cans) marked 800 do RemoveUnit(cargo1);
every 0$0.1 trigger not GetCargo(cargo2,mat_cans) marked 801 do RemoveUnit(cargo2);
every 0$0.1 trigger not GetCargo(cargo3,mat_cans) marked 802 do RemoveUnit(cargo3);


export function human(classname, sksol, skeng, skmec, sksci);
begin
..hc_name:='';
..hc_skills:=[sksol, skeng, skmec, sksci];
..hc_class:=classname;
..result:=CreateHuman;
end;

export function soldier(sksol, skeng, skmec, sksci);
begin
..result:=human(class_soldier, sksol, skeng, skmec, sksci);
end;

export function engineer(sksol, skeng, skmec, sksci);
begin
..result:=human(class_engineer, sksol, skeng, skmec, sksci);
end;

export function mechanic(sksol, skeng, skmec, sksci);
begin
..result:=human(class_mechanic, sksol, skeng, skmec, sksci);
end;

export function scientist(sksol, skeng, skmec, sksci);
begin
..result:=human(class_scientistic, sksol, skeng, skmec, sksci);
end;

export function vehicle(gun);
begin
..vc_weapon:=gun;
..result:=CreateVehicle;
end;

starting
begin
..wait(0$2);
..resources;
end;

---
ty,
JRF
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: Problem z stworzeniem i skasowaniem konwoju

Post by Serpent »

Nie żebym się czepiał:

Code: Select all

export function soldier(sksol, skeng, skmec, sksci);
begin
..result:=human(class_soldier, sksol, skeng, skmec, sksci);
end;
Masz soldier(blebleble);

A w kodzie sol = blebleble; wg. mnie powinno być

Code: Select all

sol(1,1,1,1);
Dalej:

Code: Select all

dri1:=sol;
Kolejna bzdura, używasz jednego identu do trzech jednostek + do przypisania trzech jednostek do tego identu.

Cały kod mógłby być krótszy, zamiast 3x klepać te same komendy możesz użyć pętli, te funkcje jak dla mnie dziwnie wyglądają i nie jestem pewny czy w 100% działają.
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
JRF
Soldier level 1
Soldier level 1
Posts: 25
Joined: Sat Jan 07, 2012 1:40 pm

Re: Problem z stworzeniem i skasowaniem konwoju

Post by JRF »

wiem, wiem...
ale jest to kod, który robiłem jakiś rok temu i zawiesiłem swój projekt z powodu mojego lenistwa, a teraz z tego samego powodu nie chce mi się tego proprawiać : P
trochę takich rzeczy jest, bo jestem chaotyczny i jak widzę błąd wole dodać kawałek kodu niż przerabiać go całego...

a tego pierwszego nie za bardzo rozumiem o co Ci chodzi...
niby czemu powinno być sol(1,1,1,1)?
funkcja jest soldier(), chyba, że chodzi znów o "optymalizację wzrokową"...

---
ty,
JRF
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: Problem z stworzeniem i skasowaniem konwoju

Post by Serpent »

Napisałem taką funkcję, jest krótsza i wygląda lepiej dla oka.
Może się przyda.

Code: Select all

Export Function PrepareConvoy(side, num0, num1, num2, area);
var l, un, cargo, cargos;            // strona, ilość pojazdów, rodzaj/ilość materiału, area
begin

uc_side    := side;
uc_nation := nation_arabian;
cargos     := [];

// Pojazdy typu Komora 

  l = 0;
  
  repeat
  begin
    vc_chassis := ar_half_tracked;
    vc_engine := engine_combustion;
    vc_control := control_manual;
    vc_weapon := ar_cargo_bay;
    
    cargo := CreateVehicle;
    PlaceUnitArea(cargo, area, false);
   

// Kierowca
    hc_sex := Rand(sex_male, sex_female);
    hc_gallery := '';
    hc_name := '';
    hc_class := 3;
    
    un := CreateHuman;
    PlaceHumanInUnit(un, cargo);
    
    cargos := cargos ^ un;

    SetCargo(cargo, num1, num2);
    
    l = l + 1
    end until l = num0;

{rozkazy dla ciężarówek np.
ComMoveXY(cargos[1], 155, 89);
}

end;
Potem wczytujesz, np:

Code: Select all

PrepareConvoy(2, 10, mat_cans, 100, Baza);
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
Adam_1993
Soldier level 2
Soldier level 2
Posts: 37
Joined: Sat May 24, 2014 6:09 pm
Location: Irlandia Limerick

Re: Problem z stworzeniem i skasowaniem konwoju

Post by Adam_1993 »

Serpent wrote:Napisałem taką funkcję, jest krótsza i wygląda lepiej dla oka.
Może się przyda.

Code: Select all

Export Function PrepareConvoy(side, num0, num1, num2, area);
var l, un, cargo, cargos;            // strona, ilość pojazdów, rodzaj/ilość materiału, area
begin

uc_side    := side;
uc_nation := nation_arabian;
cargos     := [];

// Pojazdy typu Komora 

  l = 0;
  
  repeat
  begin
    vc_chassis := ar_half_tracked;
    vc_engine := engine_combustion;
    vc_control := control_manual;
    vc_weapon := ar_cargo_bay;
    
    cargo := CreateVehicle;
    PlaceUnitArea(cargo, area, false);
   

// Kierowca
    hc_sex := Rand(sex_male, sex_female);
    hc_gallery := '';
    hc_name := '';
    hc_class := 3;
    
    un := CreateHuman;
    PlaceHumanInUnit(un, cargo);
    
    cargos := cargos ^ un;

    SetCargo(cargo, num1, num2);
    
    l = l + 1
    end until l = num0;

{rozkazy dla ciężarówek np.
ComMoveXY(cargos[1], 155, 89);
}

end;
Potem wczytujesz, np:

Code: Select all

PrepareConvoy(2, 10, mat_cans, 100, Baza);


mi nie dziala wszystko odpala ale konwoj sie nie pojawia
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: Problem z stworzeniem i skasowaniem konwoju

Post by Serpent »

Możesz napisać nowy kod wzorując się na tym, tak zawsze lepiej się człowiek uczy niż samo sklepanie ctrl+c/v.

Z tego co pamiętam ten kod działał.
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
Post Reply