SAIL Produkcja pojazdu, , wysiad kierowcy i powrot do fabryk

Wszystko o modach, patchach i błędach w OW oraz ogólnym programowaniu.
Post Reply
User avatar
Jeanks
Soldier level 6
Soldier level 6
Posts: 305
Joined: Fri Feb 16, 2007 1:34 pm
Location: Grudziądz

SAIL Produkcja pojazdu, , wysiad kierowcy i powrot do fabryk

Post by Jeanks »

Chcę wybudować dwie bryki a kierowca który w nim jest ma udać się w dany punkt wysiąść i wrócić do fabryki. Zrobiłem tak i kod zatrzymał się na produkcji a pojazdy stoją. Innym sposobem kierowca wysiadł tuż po wyjechaniu z fabryki zamiast dotrzeć do bazy wtedy wysiąść i wrócić.

1.

Code: Select all

Export czolg1,czolg2;
Export budowniczy;

Every 0$1 trigger GetDistUnits(fac1,abc)<10 or   GetDistUnits(fac1,abc1)<10 or GetDistUnits(fac1,abc2)<10 do
Begin
czolg1 = addcomconstruct(fac1, ru_heavy_tracked,engine_combustion,control_manual,ru_gatling_gun);
czolg2 = addcomconstruct(fac1, ru_medium_tracked,engine_combustion,control_manual,ru_gun);
end;

on VehicleConstructed(un, fab) do
Begin
   if fab = fac1 then if un= czolg2  then if budowniczy= FilterAllUnits([f_class,class_mechanic]) then
      AddComAgressiveMove([czolg1,czolg2],112,72);
      AddComExitVehicle(budowniczy);
      AddComEnterUnit(budowniczy,fac1);

end;
2.

Code: Select all

Export czolg1,czolg2;
Export budowniczy;

Every 0$1 trigger GetDistUnits(fac1,abc)<10 or   GetDistUnits(fac1,abc1)<10 or GetDistUnits(fac1,abc2)<10 do
Begin
czolg1 = addcomconstruct(fac1, ru_heavy_tracked,engine_combustion,control_manual,ru_gatling_gun);
czolg2 = addcomconstruct(fac1, ru_medium_tracked,engine_combustion,control_manual,ru_gun);
end;

on VehicleConstructed(un, fab) do
Begin
   if fab = fac1 then if un= czolg1 or czolg 2  then if budowniczy= FilterAllUnits([f_class,class_mechanic]) then
      AddComMoveToArea(un,arena);
      AddComExitVehicle(budowniczy);
      AddComEnterUnit(budowniczy,fac1);

end;

Próbowałem nawet prostszy kod

3.

Code: Select all

on VehicleConstructed(un, fab) do
Begin
  if fab = fac1 then  if un= czolg2   then
      ComAgressiveMove([czolg1,czolg2],112,72);

end;
I nic pojazdy wyjechały z fabryki i stoją ;/


Kombinuje i kombinuje i biorą mnie diabli. Pomocy. kod na "budowniczego" jest dobry bo jak mówię raz kierowca wysiadł z pojazdu w przypadki 2) o ile dobrze go napisałem bo mam sklere
Jeanks zgarnia wszystko ot co xD
User avatar
Moonstrider
Soldier level 4
Soldier level 4
Posts: 110
Joined: Fri Nov 09, 2007 11:10 pm
Contact:

Post by Moonstrider »

Imo po prostu nie próbujesz używać bardziej 'zaawansowanych' funkcji SAILa :P

Code: Select all

var kierowca;
On Vehicle Constructed(un,fab) do
Begin
 if fab=fac1 then
  Begin
   if un=czolg1 or un=czolg2 then
    Begin
     kierowca=IsDrivenBy(un);
     ComMoveXY(kierowca,xx,yy);
     AddComExitVehicle(kierowca);
     AddComEnterUnit(kierowca,fac1);
    end;
  end;
end;
Ewentualnie, jeśli IsDrivenBy(veh:id) nei będzie spełniać swojej roli użyjesz funkcji UnitsInside(id):

Code: Select all

var units, kieowca;
units=UnitsInside(un);
kierowca=units[1];
Seek your own truth. Always.
User avatar
Jeanks
Soldier level 6
Soldier level 6
Posts: 305
Joined: Fri Feb 16, 2007 1:34 pm
Location: Grudziądz

Post by Jeanks »

Moonstrider wrote:Imo po prostu nie próbujesz używać bardziej 'zaawansowanych' funkcji SAILa :P

Code: Select all

var kierowca;
On Vehicle Constructed(un,fab) do
Begin
 if fab=fac1 then
  Begin
   if un=czolg1 or un=czolg2 then
    Begin
     kierowca=IsDrivenBy(un);
     ComMoveXY(kierowca,xx,yy);
     AddComExitVehicle(kierowca);
     AddComEnterUnit(kierowca,fac1);
    end;
  end;
end;
Ewentualnie, jeśli IsDrivenBy(veh:id) nei będzie spełniać swojej roli użyjesz funkcji UnitsInside(id):

Code: Select all

var units, kieowca;
units=UnitsInside(un);
kierowca=units[1];
Taki zaawansowany kod ze neidziała w jednym ani drugim przypadku. Pewnie wiem dlaczego. Bo nie kompilowałeś i niesprawdziłeś czy działa. Kompilacja odrazu daję błędy wiec troche kdo przekabaciłem. A drugie czemu niedziała dałem kierowce jako

Code: Select all

budowniczy=FilterAllUnits([f_class,class_mechanic]);
W co raczej wątpie bo raz mi to zadziałało wiec jest to problem tego, ze coś połknołeś w kodzie albo przez niezrobienie kompilacji wypisałęś kod z głowy i niedziała pzdr a ja się męcze z tym dalej.

Całey kod "nasz" wyglądal tak

Code: Select all

Export czolg1,czolg2;
var units, budowniczy;

Every 0$1 trigger GetDistUnits(fac1,abc)<10 or   GetDistUnits(fac1,abc1)<10 or GetDistUnits(fac1,abc2)<10 do
Begin
czolg1 = addcomconstruct(fac1, ru_heavy_tracked,engine_combustion,control_manual,ru_gatling_gun);
czolg2 = addcomconstruct(fac1, ru_medium_tracked,engine_combustion,control_manual,ru_gun);
end;

On VehicleConstructed(un,fab) do
Begin
 if fab=fac1 then
  Begin
   if un=czolg1 or un=czolg2 then
    Begin
     if budowniczy=FilterAllUnits([f_class,class_mechanic]) then
      Begin
     units=UnitsInside(un);
budowniczy=units[1];
     ComMoveToArea(budowniczy,arena);
     AddComExitVehicle(budowniczy);
     AddComEnterUnit(budowniczy,fac1);
    end;
  end;
end;
end;
a za peirwszym razem tak jak dałeś w pryzkładzie ze zamiast UnitsInSide(un) dałem IsDrivedBy czy cos takiego ;p
Jeanks zgarnia wszystko ot co xD
User avatar
Moonstrider
Soldier level 4
Soldier level 4
Posts: 110
Joined: Fri Nov 09, 2007 11:10 pm
Contact:

Post by Moonstrider »

LOL! PO pierwsze to Cię zdziwię, bo oba kody mi się w edytorze kompilowały. Po drugie skoro zmieniasz podstawiony pod nos kod to nie miej do nikogo oprócz siebie pretensji, że nie działa... Wogle odechciało mi się już Ci pomagać, bo ciągle modyfikujesz podany kod, i bez przerwy jęczysz, że nadal nie działa, a wyjaśnić konkretnie już nie łaska...
Seek your own truth. Always.
User avatar
Jeanks
Soldier level 6
Soldier level 6
Posts: 305
Joined: Fri Feb 16, 2007 1:34 pm
Location: Grudziądz

Post by Jeanks »

ku**a ;] Dotrze to do Ciebie, że kod przy kompilowaniu Twój dawał błędy ? więc musiałem zrobić tak by nie dawał. Poza tym jak nie napisałeś zmiennej dla kierowcy to jakim cudem ma Ci ten kod dzialać ? :D. cHYBA, ŻE KIEROWCA To u Ciebie ID jakiegoś konkrenego ludzika z mapy (lub stworzonego w SAILU) to sorry ale wtedy nie zrozumiałeś mojego problemu ;] bo u mnie te ID ma się odnosić dla każdego jedngo mechanika ;] tak jak ID czolg1 dla kazdego pojazdu z gatlingiem pzdr
Jeanks zgarnia wszystko ot co xD
User avatar
Moonstrider
Soldier level 4
Soldier level 4
Posts: 110
Joined: Fri Nov 09, 2007 11:10 pm
Contact:

Post by Moonstrider »

Widzę, że z Tobą trzeba jak z dzieckiem. Dobze więc. Wklej następujący kod:

Code: Select all

Export czolg1,czolg2; 

Every 0$1 trigger GetDistUnits(fac1,abc)<10 or   GetDistUnits(fac1,abc1)<10 or GetDistUnits(fac1,abc2)<10 do 
Begin 
czolg1 = addcomconstruct(fac1, ru_heavy_tracked,engine_combustion,control_manual,ru_gatling_gun); 
czolg2 = addcomconstruct(fac1, ru_medium_tracked,engine_combustion,control_manual,ru_gun); 
end;

var kierowca; 
On VehicleConstructed(un,fab) do 
Begin 
 if fab=fac1 then 
  Begin 
   if un=czolg1 or un=czolg2 then 
    Begin 
     kierowca=IsDrivenBy(un); 
     ComMoveToArea(kierowca,arena); 
     AddComExitVehicle(kierowca); 
     AddComEnterUnit(kierowca,fac1); 
    end; 
  end; 
end;
a jeśli nie będzie działać:

Code: Select all

Export czolg1,czolg2; 

Every 0$1 trigger GetDistUnits(fac1,abc)<10 or   GetDistUnits(fac1,abc1)<10 or GetDistUnits(fac1,abc2)<10 do 
Begin 
czolg1 = addcomconstruct(fac1, ru_heavy_tracked,engine_combustion,control_manual,ru_gatling_gun); 
czolg2 = addcomconstruct(fac1, ru_medium_tracked,engine_combustion,control_manual,ru_gun); 
end;

var kierowca, units; 
On VehicleConstructed(un,fab) do 
Begin 
 if fab=fac1 then 
  Begin 
   if un=czolg1 or un=czolg2 then 
    Begin 
     units=UnitsInside(un); 
     kierowca=units[1];
     ComMoveToArea(kierowca,arena); 
     AddComExitVehicle(kierowca); 
     AddComEnterUnit(kierowca,fac1); 
    end; 
  end; 
end;
Jeśli oba nie będą działać to nic nie zmieniając zaraportuj treść błędów, bo u mnie kody kompilują się bez problemu; co to są te abc?!
Seek your own truth. Always.
User avatar
Jeanks
Soldier level 6
Soldier level 6
Posts: 305
Joined: Fri Feb 16, 2007 1:34 pm
Location: Grudziądz

Post by Jeanks »

abc to ID ludzików ;] zaraz sprawdzę kod. Tu niechodzi tylko o to zeby się skompilował ale jeżeli niebedzie znowu działać to dlatego, że gra niebędzie wiedziała ktoto jest "kierowca" pzdr zaraz EDIt BEDZIE


EDIT: tak jak mówiłem znów to samo. Błędu nie ma w kompilacji ale gra szuka ID "kierowca" i niemoże się go doszukać wiec po wyjechaniu czołgu z factory, czołg stoi jak wół ponieważ mechanik który jest w środku nie ma ID "kierowca" ;].

Zrozum mi chodzi żeby każdy jeden mechanik który wyjedzie tym czołgiem z factory (bo może to bym obojętnie kto) ma mieć przypisane ID "kierowca". Ty dałes mi kod tka jakby kierowca to był jeden ludek tylko czaisz ? Dlatego ten kod Twój co podałeś nie będzie działać dopóki nie będzie w pojeździe koleś z mapy o ID "kierowca" ale nie o to mi chodzi. Kierowca ma być przyporządkowany do 6 mechaników którzy są w factory ;]

Jednym słowem musi być filter na tych mechaników
Jeanks zgarnia wszystko ot co xD
User avatar
Moonstrider
Soldier level 4
Soldier level 4
Posts: 110
Joined: Fri Nov 09, 2007 11:10 pm
Contact:

Post by Moonstrider »

Code: Select all

     kierowca=IsDrivenBy(un);

Code: Select all

     units=UnitsInside(un); 
     kierowca=units[1];
To jest kierowca. W pierwszym przypadku jest to jednostka prowadząca pojazd, jeśli pojazd(un) został wyprodukowany w fac1 i ma id czolg1 lub czolg2. Teraz trzeba sprawdzić która konkretnie część kodu nie działa.

po paru minutach: Ha xD wyobraź sobie, że kod działa poprawnie bez jednego if (w obu przypadkach) xD

Code: Select all

Export czolg1,czolg2; 

Every 0$1 trigger GetDistUnits(fac1,abc)<10 or   GetDistUnits(fac1,abc1)<10 or GetDistUnits(fac1,abc2)<10 do 
Begin 
czolg1 = addcomconstruct(fac1, ru_heavy_tracked,engine_combustion,control_manual,ru_gatling_gun); 
czolg2 = addcomconstruct(fac1, ru_medium_tracked,engine_combustion,control_manual,ru_gun); 
end; 

var kierowca; 
On VehicleConstructed(un,fab) do 
Begin 
 if fab=fac1 then 
  Begin 
   //if un=czolg1 or un=czolg2 then 
    //Begin 
     kierowca=IsDrivenBy(un); 
     ComMoveToArea(kierowca,arena); 
     AddComExitVehicle(kierowca); 
     AddComEnterUnit(kierowca,fac1); 
    //end; 
  end; 
end;
Jeśli w fac1 nie produkujesz więcej pjazdów, to nie ma sensu siędalej bawić. A jeśli jednak to if jest Ci potrzebne, spróbuj zamienić pierwsze if:

Code: Select all

 if fab=fac1 and (un=czolg1 or un=czolg2) then 
Napisz jakie są wyniki :P
Seek your own truth. Always.
User avatar
Jeanks
Soldier level 6
Soldier level 6
Posts: 305
Joined: Fri Feb 16, 2007 1:34 pm
Location: Grudziądz

Post by Jeanks »

To jest genialne działa ;o;o ale jakim cudem xDD ?
Jeanks zgarnia wszystko ot co xD
User avatar
Moonstrider
Soldier level 4
Soldier level 4
Posts: 110
Joined: Fri Nov 09, 2007 11:10 pm
Contact:

Post by Moonstrider »

Ale który przypadek działa? ten z tą ostatnią linijką w moim poście czy bez?
A pozatym jak już kiedyś napisałem: SAIL jest zrobiony tak, że nie należy martwić się o extetykę czy prostotę kodu, ale o to żeby wogle działał xD
Seek your own truth. Always.
User avatar
Jeanks
Soldier level 6
Soldier level 6
Posts: 305
Joined: Fri Feb 16, 2007 1:34 pm
Location: Grudziądz

Post by Jeanks »

Ten pierwszy myslę że un nie może mieć przypisanych ID bo sam w kodzie VehicleConstructed oznacza każdy jeden pojazd prowadzony dlatego jak przypisało mu się ID to nie działał.
Jeanks zgarnia wszystko ot co xD
User avatar
Moonstrider
Soldier level 4
Soldier level 4
Posts: 110
Joined: Fri Nov 09, 2007 11:10 pm
Contact:

Post by Moonstrider »

Jeanks nie filozuj, albo chociaż wymyśl jakieś pożądne bzdury :P zobacz pierwsze if, fabryka przecież też oznacza każdą fabrykę w której konstruowany jest pojazd. Jeszcze poexperymentuję z tym kodem żeby wstawić ten warunek z id.
Seek your own truth. Always.
Post Reply