[SAIL]Drobna pomoc?

Wszelkie pytania na temat SAIL'a i modowania OW.
Avatar de l’utilisateur
Xero Rozbójca
Soldier level 6
Soldier level 6
Messages : 391
Inscription : dim. mars 08, 2009 5:13 pm
Localisation : Szukaj w kioskach...

[SAIL]Drobna pomoc?

Message par Xero Rozbójca »

Witam was z powrotem po długiej przerwie.
Od razu śmiem prosić kogoś ogarniętego o sprawdzenie tego, co napisałem poniżej:

Code : Tout sélectionner

// eng1, eng2 są na mapie.

every 0$1 trigger FilterAllUnits([[f_side, 4], [f_type, unit_building]])>0 do
var uszkodzony, i;
begin
uszkodzony:=GetLives(FilterAllUnits([[f_side, 4], [f_type, unit_building]]))<1000;
AddComRepairBuilding(eng1, uszkodzony[1]);
If uszkodzony>1 then begin
for i in uszkodzony do
begin
AddComRepairBuilding([eng1, eng2], uszkodzony[i]);
end;
end;
enable;
end;
Ma to działać na zasadzie, że za każdym razem, gdy jakiś budynek ze strony 4 zostanie uszkodzony, to dwóch inżynierów ma za zadanie go naprawić.

Jeśli jakieś błędy są, to proszę o nakierowanie.
"Osoby, stawiające więcej niż trzy znaki interpunkcyjne obok siebie, mają problemy ze zdrowiem psychicznym."

Image
Avatar de l’utilisateur
Serpent
Soldier level 10
Soldier level 10
Estonia
Messages : 4169
Inscription : mar. juil. 07, 2009 9:13 pm
Localisation : Polska - EuroStan ZSRE
Contact :

Re: [SAIL]Drobna pomoc?

Message par Serpent »

Ekhm, łap:

Code : Tout sélectionner

// Naprawa
Every 0$01 do
var i, b_list, b;
begin
enable;

b_list = FilterAllUnits([[f_side, strona], [f_type, unit_building]]);

for b in b_list do
begin

      If GetLives(b) < 1000 then
      begin
      
      repeat
      begin
      AddComRepairBuilding([eng1, eng2], b);
      Wait(0$0.3);
      end until GetLives(b) = 1000;
      
      end;

end;
end;
Oczywiście to najprostszy kod naprawy, nie uwzględnia ucieczki engów przed ostrzałem ani ich leczenia.
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
Avatar de l’utilisateur
Xero Rozbójca
Soldier level 6
Soldier level 6
Messages : 391
Inscription : dim. mars 08, 2009 5:13 pm
Localisation : Szukaj w kioskach...

Re: [SAIL]Drobna pomoc?

Message par Xero Rozbójca »

Dzięki.

Ale niby wszystko pięknie i ładnie, a tu jeden mały szkopuł...

Code : Tout sélectionner

Every 0$01 do
var i, uszkodzony, b, side;
begin
enable;

uszkodzony := FilterAllUnits([[f_side, 4], [f_type, unit_building]]);

 for b in uszkodzony do
 begin

   If GetLives(b) < 1000 then
   begin
   repeat
   ComExitBuilding([eng1, eng2]); // --------------------------------
   begin
   ComRepairBuilding([eng1, eng2], b);
   end until GetLives(b) = 1000;
   ComEnterUnit([eng1, eng2], am_sklad);
   end;

 end;
end;
Ludziki nie chcą wychodzić z budynku. Dostają komendę, ale nie wychodzą. Nawet na ten czas znaczki "?" przy ich portretach znikają i znowu pojawiają.
"Osoby, stawiające więcej niż trzy znaki interpunkcyjne obok siebie, mają problemy ze zdrowiem psychicznym."

Image
Avatar de l’utilisateur
Xero Rozbójca
Soldier level 6
Soldier level 6
Messages : 391
Inscription : dim. mars 08, 2009 5:13 pm
Localisation : Szukaj w kioskach...

Re: [SAIL]Drobna pomoc?

Message par Xero Rozbójca »

Uwaga, o dziwo testując kod w edytorze wszystko działa jak należy oprócz wchodzenia do budynku, ale jak tylko włączam misję w grze, to gra się zawiesza i zużycie pamięci dochodzi nawet do 1 GB. Trololo ?
"Osoby, stawiające więcej niż trzy znaki interpunkcyjne obok siebie, mają problemy ze zdrowiem psychicznym."

Image
Avatar de l’utilisateur
Serpent
Soldier level 10
Soldier level 10
Estonia
Messages : 4169
Inscription : mar. juil. 07, 2009 9:13 pm
Localisation : Polska - EuroStan ZSRE
Contact :

Re: [SAIL]Drobna pomoc?

Message par Serpent »

Xero Rozbójca a écrit :Uwaga, o dziwo testując kod w edytorze wszystko działa jak należy oprócz wchodzenia do budynku, ale jak tylko włączam misję w grze, to gra się zawiesza i zużycie pamięci dochodzi nawet do 1 GB. Trololo ?
Coś się wiesza przez pętle. Pewnie w pętli nie dałeś Wait.
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
Avatar de l’utilisateur
Xero Rozbójca
Soldier level 6
Soldier level 6
Messages : 391
Inscription : dim. mars 08, 2009 5:13 pm
Localisation : Szukaj w kioskach...

Re: [SAIL]Drobna pomoc?

Message par Xero Rozbójca »

Ogarnia ktoś może tablice, czy jak mam to nazwać...
Oto kod:
Spoiler:

Code : Tout sélectionner

Every 0$01 do
var j, v_list, r, mechanicy, mech;
begin
enable;

v_list = FilterAllUnits([[f_side, 4],[f_type, unit_vehicle]]);
mechanicy = FilterAllUnits([[f_side, 4],[f_type, unit_human],[f_class,class_mechanic]]);
for r in v_list and mech in mechanicy do
begin

      If GetLives(r) < 1000 and isIdle(r) then
      begin
      ComExitVehicle(mech);
      repeat
      begin
      AddComRepairVehicle(mech, r);
      Wait(0$0.3);
      end until GetLives(r) = 1000;
      AddComEnterUnit(mech, r);
      end;

end;
end;
Mam dwa pojazdy z mechanikiem w każdym. Chodzi o to, żeby każdy z nich naprawiał swój wóz, niezależnie od ilości mechaników i samochodzików. Nie wiem, co i gdzie wpisać:)


*** EDIT #1 ***
Spoiler:

Code : Tout sélectionner

Every 0$01 do
var j,i, driver, v_list, r, mechanicy, mech;
begin
enable;

v_list = FilterAllUnits([[f_side, 4],[f_type, unit_vehicle]]);
mechanicy = FilterAllUnits([[f_side, 4],[f_type, unit_human],[f_class,class_mechanic]]);
j=1;
for r in v_list do
begin
 for mech in mechanicy do
 begin
      If GetLives(r[j]) < 1000 and isIdle(r[j]) then
      begin
      ComExitVehicle(mech[j]);
      repeat
            begin
                  AddComRepairVehicle(mech[j], r[j]);
                  Wait(0$0.3);
            end until GetLives(r[j]) = 1000;
                  AddComEnterUnit(mech[j], r[j]);
                  end;
            while j<v_list do
            j=j+1;
            end;
end;
end;
Próbowałem nawet takie cuda...
"Osoby, stawiające więcej niż trzy znaki interpunkcyjne obok siebie, mają problemy ze zdrowiem psychicznym."

Image
Avatar de l’utilisateur
Xero Rozbójca
Soldier level 6
Soldier level 6
Messages : 391
Inscription : dim. mars 08, 2009 5:13 pm
Localisation : Szukaj w kioskach...

Re: [SAIL]Drobna pomoc?

Message par Xero Rozbójca »

***Post odświeżający***

Na prawdę, proszę o pomoc. Bez tego nigdzie nie ruszę...
"Osoby, stawiające więcej niż trzy znaki interpunkcyjne obok siebie, mają problemy ze zdrowiem psychicznym."

Image
Radzio
Site Administrator
Site Administrator
Poland
Messages : 2898
Inscription : ven. juil. 28, 2006 10:58 am
Localisation : Bialystok, Poland

Re: [SAIL]Drobna pomoc?

Message par Radzio »

Wszystko źle. :P

Code : Tout sélectionner

every 0$1 do
var
  vehs, veh, mech;
begin
  vehs := FilterAllUnits([[f_side, 4], [f_type, unit_vehicle]]);

  for veh in vehs do
  begin
    mech := IsDrivenBy(veh); // swoją drogą tragiczna nazwa funkcji :P
    if mech and IsIdle(veh) and GetLives(veh) < 1000 then
    begin
      ComExitVehicle(mech);
      AddComRepairVehicle(mech, veh);
      AddComEnterUnit(mech, veh);
    end;
  end;

  enable;
end;
Avatar de l’utilisateur
Xero Rozbójca
Soldier level 6
Soldier level 6
Messages : 391
Inscription : dim. mars 08, 2009 5:13 pm
Localisation : Szukaj w kioskach...

Re: [SAIL]Drobna pomoc?

Message par Xero Rozbójca »

A z tablicami... inaczej, czy ze 'znakami' mech[j] można by coś takiego zrobić ?
Nie znam zasady działania tej sfery tego języka i myślę, że przez to mógłbym lekko ją poznać:)
"Osoby, stawiające więcej niż trzy znaki interpunkcyjne obok siebie, mają problemy ze zdrowiem psychicznym."

Image
Radzio
Site Administrator
Site Administrator
Poland
Messages : 2898
Inscription : ven. juil. 28, 2006 10:58 am
Localisation : Bialystok, Poland

Re: [SAIL]Drobna pomoc?

Message par Radzio »

No przecież masz tablice :P Indeksy nie są Ci potrzebne, więc od razu wyjmujemy wartości. :D

Można to zrobić też od strony mechaników oczywiście.
Avatar de l’utilisateur
Xero Rozbójca
Soldier level 6
Soldier level 6
Messages : 391
Inscription : dim. mars 08, 2009 5:13 pm
Localisation : Szukaj w kioskach...

Re: [SAIL]Drobna pomoc?

Message par Xero Rozbójca »

W takim razie wielkie dzięki, ale mimo warunku isIdle(veh) gdy rozpoczyna się atak, oni wychodzą z pojazdu, przez co giną, bo chcą reperować...

*** Ot co, nawet nie wchodzą do pojazdu po skończeniu naprawy.
"Osoby, stawiające więcej niż trzy znaki interpunkcyjne obok siebie, mają problemy ze zdrowiem psychicznym."

Image
Avatar de l’utilisateur
pomek
Soldier level 7
Soldier level 7
Poland
Messages : 656
Inscription : lun. mai 03, 2010 9:05 pm

Re: [SAIL]Drobna pomoc?

Message par pomek »

to sprawdz recznie, czy pojazd ma 100% hp - jesli tak, to niech ten kierowca co wysiadl z powrotem wskoczy do kokpitu :D
Avatar de l’utilisateur
Xero Rozbójca
Soldier level 6
Soldier level 6
Messages : 391
Inscription : dim. mars 08, 2009 5:13 pm
Localisation : Szukaj w kioskach...

Re: [SAIL]Drobna pomoc?

Message par Xero Rozbójca »

Przecież w tym problem... :ruwtf:

Gdy atak się rozpoczyna: wysiadają z pojazdu.
*** Naprawiłem:
Spoiler:

Code : Tout sélectionner

    if GetLives(veh) < 1000 then
    if mech and (not InBattle(4)) then // !!!
    begin
      AddComExitVehicle(mech);
      AddComRepairVehicle(mech, veh);
    If GetLives(veh) = 1000 then
    begin
      ComEnterUnit(mech, veh);
Gdy kończą naprawę: nie wchodzą do środka.

*** -____________-
"Osoby, stawiające więcej niż trzy znaki interpunkcyjne obok siebie, mają problemy ze zdrowiem psychicznym."

Image
Avatar de l’utilisateur
Serpent
Soldier level 10
Soldier level 10
Estonia
Messages : 4169
Inscription : mar. juil. 07, 2009 9:13 pm
Localisation : Polska - EuroStan ZSRE
Contact :

Re: [SAIL]Drobna pomoc?

Message par Serpent »

Może tak?

AddComRepairVehicle(mech, veh);
AddComEnterUnit(mech, veh);
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
Avatar de l’utilisateur
Xero Rozbójca
Soldier level 6
Soldier level 6
Messages : 391
Inscription : dim. mars 08, 2009 5:13 pm
Localisation : Szukaj w kioskach...

Re: [SAIL]Drobna pomoc?

Message par Xero Rozbójca »

Używam tego cały czas. Ni chu chu efektu.
"Osoby, stawiające więcej niż trzy znaki interpunkcyjne obok siebie, mają problemy ze zdrowiem psychicznym."

Image
Répondre