Zbieranie skrzyń z arei

Wszelkie pytania na temat SAIL'a i modowania OW.
Post Reply
Silent_Scream
Soldier level 4
Soldier level 4
Poland
Posts: 126
Joined: Thu Oct 08, 2009 1:48 pm

Zbieranie skrzyń z arei

Post by Silent_Scream »

Witam,
Mam problem. Mam zaznaczoną aree w której arabski ing ma zbierać z niej skrzynie.
Pojawiają się skrzynki i ing podchodzi do nich, bierze jedną i stoi. Nie nie niesie jej do składu tylko stio z tą skrzynką.
Wzorowałem się na kodzie z tego temtu: http://forum.original-war.net/viewtopic.php?f=18&t=1461

A to mój kod:
Spoiler:

Code: Select all

every 0$5 trigger GetListOfCratesInArea(arskrzynki) do
var clear_crates, crate_list;
begin
  enable;
  crate_list:=GetListOfCratesInArea(arskrzynki);

      if IsLive([ing1]) then
        ComCollect([ing1],crate_list[1],crate_list[2])
      else
        ComGet([ing1],crate_list[1],crate_list[2]);
        clear_crates:=false;
      repeat
        wait(0$1);
        until (not IsBusy([ing1])) OR clear_crates {OR NOT IsLive([ing1,])};
end;
Wcześniej dwoje ludzi miało zbierać skrzynie ale w raz to samo było.
User avatar
Nefarem
MODbase Moderator
Poland
Posts: 1115
Joined: Sat Jan 15, 2011 8:13 pm
Location: Noxus

Re: Zbieranie skrzyń z arei

Post by Nefarem »

Wykasuj te [...] i niech zostanie samo (ing1) .
Absolute Dominion
Spoiler:
Modyfikacja opowiadająca historię Ivana Bierezova, żołnierza armii Rosyjskiej , weterana wojny w Chinach który wziął udział w misji ochrony złóż Alaskitu.

Download from Dropbox
Original War Cooperation
Spoiler:
Modyfikacja umożliwiająca granie w mapach z kampanii OW i nie tylko ze znajomymi kontra AI.

Download from Steam

Download from Dropbox
Original War Dialog Editor
Spoiler:
Program ułatwiający tworzenie plików wri z dialogami, zadaniami etc do Original War .

Download
User avatar
Gothuk
Site Administrator
Site Administrator
Poland
Posts: 985
Joined: Tue Sep 04, 2007 6:10 pm
Location: Poland, Warsaw
Contact:

Re: Zbieranie skrzyń z arei

Post by Gothuk »

Rada nefarema na nic się zda.
Randy Orton, co ty chcesz osiągnąć? Przeczytaj sobie fragment:

Code: Select all

if IsLive([ing1]) then
 ComCollect([ing1],crate_list[1],crate_list[2])
 else
 ComGet([ing1],crate_list[1],crate_list[2]);
Jeżeli ing1 żyje to niech ing1 Collect materiały ze współrzędnej x = crate_list[1], y = crate_list[2], w przeciwnym przypadku ing1 Get materiały ze współrzędnej x = crate_list[1], y = crate_list[2].

To się kupy nie trzyma. Nie dość błąd w samej logice, to jeszcze błędy w przekazywanych parametrach.
ComCollect ( units : list, x : integer, y : integer )
ComGet ( units : list, x : integer, y : integer )
Od czego masz spis komend?

Code: Select all

every 0$5 trigger IsLive(ing1) and GetListOfCratesInArea(arskrzynki) > 0 do
var crates;
begin
	enable;
	crates := GetListOfCratesInArea(arskrzynki);

	x = 1;
	while x < crates do
	begin
		AddComCollect(ing1, crates[x], crates[x+1]);
		x = x + 2;
	end;
end;
Oprócz tego, co to za zmienna ing? Jak chcesz po angielsku to raczej eng (od engineer), albo po polsku inz (od inżynier).
Silent_Scream
Soldier level 4
Soldier level 4
Poland
Posts: 126
Joined: Thu Oct 08, 2009 1:48 pm

Re: Zbieranie skrzyń z arei

Post by Silent_Scream »

Ja chciałem osiągnąć żeby zbierano skrzynie z tanej arei. Co by nie było rada Nefarem'a była przydatna bo teraz "ing1" zbiera skrzynki jak należy.
Ja jestem zielony w tym wszystkim. Skoro to nie ma logiki to dlaczego jest to umieszczone w "Modding Archive"?
Oprócz tego, co to za zmienna ing? Jak chcesz po angielsku to raczej eng (od engineer), albo po polsku inz (od inżynier).
Mój wybór.
User avatar
Gothuk
Site Administrator
Site Administrator
Poland
Posts: 985
Joined: Tue Sep 04, 2007 6:10 pm
Location: Poland, Warsaw
Contact:

Re: Zbieranie skrzyń z arei

Post by Gothuk »

Może i działa, ale jak już pisałem w tamtym fragmencie nie ma sensu ten else (i to co jest pod nim). I część warunku w repeat.
Silent_Scream
Soldier level 4
Soldier level 4
Poland
Posts: 126
Joined: Thu Oct 08, 2009 1:48 pm

Re: Zbieranie skrzyń z arei

Post by Silent_Scream »

Zgadzam się barak logiki.
Korzystając z okazji i nie robiąc miliona tamatów napisze tutaj.
Problem polega na tym, że chce aby po uszkodzeniu budynku tj. laboratorium, naukowcy którzy wyjdą z niego zmienili kolor strony. Użyłem dwóch możliwości i po uszkodzeniu budynku naukowcy nie zmieniają koloru strony. Brak reakcji na polecenie jest.

Pierwszy kod:

Code: Select all

On UnitGoesFromRed(un) do 
 begin
  If (un=lab2) then       
   begin
     SetSide(6,arabdoc1);
     SetSide(6,arabdoc2);
   end;
 end;
Drugi kod:

Code: Select all

Every 0$0.1 do
 begin
  If GetLives(lab2)<200 then
   begin
    SetSide(6,arabdoc1);
    SedSide(6,arabdoc2);
   end;
 end;
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: Zbieranie skrzyń z arei

Post by Serpent »

Lab ma zły ident.

Spróbuj tak:

Code: Select all

Every 0$01 do
begin
enable;

If arabdoc1 in FilterAllUnits([f_not, [f_inside]]) then
SetSide(arabdoc1, 6);
SetSide(arabdoc2, 6);
disable;
end;
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
Silent_Scream
Soldier level 4
Soldier level 4
Poland
Posts: 126
Joined: Thu Oct 08, 2009 1:48 pm

Re: Zbieranie skrzyń z arei

Post by Silent_Scream »

Serpent wrote:
Spróbuj tak:

Code: Select all

Every 0$01 do
begin
enable;

If arabdoc1 in FilterAllUnits([f_not, [f_inside]]) then
SetSide(arabdoc1, 6);
SetSide(arabdoc2, 6);
disable;
end;
Przekombinowałem troche kod, bo ten co podałeś zmieniał tylko strone jednego naukowca.
Przekombinowany:

Code: Select all

Every 0$01 do
 begin
  enable;

   If arabdoc1 in FilterAllUnits([f_not, [f_inside]]) and arabdoc2 in FilterAllUnits([f_not,[f_inside]]) then
     SetSide(arabdoc1, 6);
     SetSide(arabdoc2, 6);
     disable;           
end;

Kiedy jest to "disable;" zmienia się strona jednego naukowca, ale kiedy już nie ma to zmienia się u dwóch ale nie można sprawdzić skillów bo sie zapętla przez "enable;"

EDIT:
Wcześniej było wszystko git tak jak pisałem wyżej. Wbiłem do ow_editor żeby sprawdzić to jeszcze raz i teraz w laboratorium arabskim był tylko jeden naukowiec. :?
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: Zbieranie skrzyń z arei

Post by Serpent »

Mój kod działa, ty tylko dodałeś niepotrzebnie jeden warunek.
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
Silent_Scream
Soldier level 4
Soldier level 4
Poland
Posts: 126
Joined: Thu Oct 08, 2009 1:48 pm

Re: Zbieranie skrzyń z arei

Post by Silent_Scream »

Działa zgadzam się ale z dwóch naukowców strone zmienił tylko jeden ale dodałem miedzy "setside" a "if blabla" "wait" i wszystko jest gites.
Dzięki za pomoc.
Silent_Scream
Soldier level 4
Soldier level 4
Poland
Posts: 126
Joined: Thu Oct 08, 2009 1:48 pm

Re: Zbieranie skrzyń z arei

Post by Silent_Scream »

Problem pojawił się znowu. Po starcie misji uruchamia się kod na zmiane strony naukowców i od razu idzie do wywołania dialogu na koniec misji. Nawet nie dało rady pierwszego ruchu wykonac bohaterem bo już właczył się dialog po zmianie strony naukowców.
Nie wiem jak to naprawić. HELP!
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: Zbieranie skrzyń z arei

Post by Serpent »

Pokaz kod lol.
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
Silent_Scream
Soldier level 4
Soldier level 4
Poland
Posts: 126
Joined: Thu Oct 08, 2009 1:48 pm

Re: Zbieranie skrzyń z arei

Post by Silent_Scream »

Spoiler:

Code: Select all

Every 0$01 marked 110 do
begin

If arabdoc1 in FilterAllUnits([f_not, [f_inside]]) then
wait(0$2);
setside(arabdoc1,6);
setside(arabdoc2,6);
enable(08);
disable(110);

end;



Spoiler:

Code: Select all

Every 0$1 marked 08 do
 begin
  DialogueOn;
  Say(arabdoc1,'mamy1');
  Say(arabdoc2,'mamy2');
  Say(vlodek,'mamyv1');
  Say(vlodek,'dogv1');
  SayRadio(gene,'dogd1');
  Say(vlodek,'dogdv2');
  SayRadio(gene,'dogd2');
  enable(100);
  DialogueOff;
end;
Spoiler:

Code: Select all

Every 0$0.1 trigger IsInArea(vlodek,widsyb1) or isinarea(piotr,widsyb1) or isinarea(ilia,widsyb1) or isinarea(aleksander,widsyb1) or isinarea(alex,widsyb1) or isinarea(sasha,widsyb1) do
 begin
 enable(110); // tutaj zminiłem zeby sie dopieo wtedy uruchomiło zmiana strony ale tak jest jak wczesniej pisalem, nie minie kilki sekund a od rezu pojawia sie dialog i koniec misji.
 DialogueOn;
 RevealFogArea(vlodek,sybwid);
 centeronxy(100,26);
 Say(vlodek,'sybv1');
 Say(doktorek,'syb1');
 Say(vlodek,'sybv2');
 Dialogueoff;
 end;
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: Zbieranie skrzyń z arei

Post by Serpent »

Jak ty blokujesz marked 110 w tym bloku:

Code: Select all

setside(arabdoc1,6);
setside(arabdoc2,6);
enable(08);
disable(110);
To się nie dziw :P

Zresztą możesz spróbowac użyć eventu:

Code: Select all

On LeaveBuilding(b, un) do
begin

If un = arabdoc1 or un = arabdoc2 then
begin
setside(arabdoc1,6);
setside(arabdoc2,6);
end;

end;
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