Page 1 of 1

Enable

Posted: Mon Apr 27, 2009 7:18 pm
by Pablo Abruzzi
Mam problem z funkcją enable, otóż chciałbym, aby atak był co dziesięć minut, ale tylko 3 razy, próbowałem różnych kombinacji:

Code: Select all

....
enable(3);
....


....
enable;
Wait(10$0);
disable;
Ale nie podziałało. Proszę o pomoc.

I tak przy okazji to jak zrobić, aby jednostki wroga (ludzie) mieli poziomy losowe, albo, np: minimum:2, maximum:10???

Posted: Mon Apr 27, 2009 7:27 pm
by Birkart
ja bym to zrobił tak

gdzies tam w tym bloku

Code: Select all

every12$34 marked numer do
  if jakas_zmienna<3 the
    begin
      enable
        if jakas_zmienna>3 then
          begin
            jakas_zmienna=jakas_zmienna+1;
          end;
       if jakas_zmienna=3 then
          begin
            Disable(numer);
          end;
      cos_tam;
      kod_na_atak;
    end;
osobiscie tego nie probowalem ale powinno dzialac jak wstawisz zmienne i komendy

Posted: Mon Apr 27, 2009 9:45 pm
by Moonstrider
Ja zrobiłbym to nieco inaczej :)

Code: Select all

export counter;
Export Function atakx3;
Begin
 for counter <= 3 do
  Begin
  counter += 1  { nie wiem czy  '+=' zadziała w SAILu... jeśli nie zmienisz to na
  counter = counter +1 }
  // kod ataku
  Wait(10$0);
  end;
end;
i gdzieś po Starting lub jakimś warunku:

Code: Select all

counter = 1;
atakx3;
A co do losowych poziomów żołnierzy, to jeśli chcesz ich robić masowo to robisz to funkcją:

Code: Select all

Export Function hcreation(name);
Begin
hc_sex=Rand(1,2);
hc_attr=[Rand(10,12),Rand(10,12)];
hc_skills=[Rand(2,10),0,0,0];
name=CreateHuman;
end;
no i tworzysz ludzi:

Code: Select all

hcreation(soldat1);
a jeśli to pojedyńcze ludki to określając odpowiednie wartości wstawiasz Rand(a,b)... nie zapomnij dać na początku Randomize; i RandomizeAll; zaraz po Starting tak na wzelki wypadek :)

Posted: Sun Jun 14, 2009 9:10 am
by tex
Można by tak jeszcze zrobić

Code: Select all

For i:= 1 to 3 do
Begin
//kod ataku
Wait(10$0);
End;

Posted: Sun Jun 14, 2009 12:58 pm
by Jeanks

Code: Select all

 

starting 
begin
disable(01):
disable(02):
disable(03):  / wyłączasz wszystkie marked te poniżej


Gdzieś w kodzie np w dialogu OD którego ma się zacząć liczyć czas do PIERWSZEGO  ATAKU dajesz.
np.
Every 10$0 do
begin
//jakis dialog
Enable(01);
Enable(02);
Enable(03);


........
Every 0$0.1 MARKED 01 do
begin
wait(10$0);
//kod ataku
end;

Every 0$0.1 MARKED 02 do
begin
wait(20$0);
//kod ataku
end;

Every 0$0.1 MARKED 03 do
begin
wait(30$0);
//kod ataku
end;


SPRAWDZILEM DZIALA

Posted: Mon Jun 15, 2009 7:30 pm
by Birkart
a jak chcesz 5 ataków?
albo 7?
to co wiecej bloków every dasz?
nawet na dobrych kompach mod sie potrafi przerazliwie ciac jak jest tak upchany zbednymi blokami....

co do losowych poziomów to

Code: Select all

  begin
    PrepareSoldier(0,rand(min_level,max_level);
    sol=CreateHuman;
  end;

na losowego żolnierza :p

Posted: Tue Jun 16, 2009 7:50 am
by Jeanks
Kompa nie ma prawa zmulić bo bloki będą się uruchamiać jeden na 10minut. A siedem raczej by niestosował bo nikt by 70min niechciał się męczyć z jednym zadaniem typu "Odeprzyj falę ruskich czołgów" pzdr dla kumatych :]

Posted: Tue Jun 16, 2009 11:34 am
by YuriStriatov
Jeanks jak raz na 10 minut jak blok sie uruchamia co 1 sekunde i potem czeka 10 minut, czyli ogolnie po 10 minutach ci sie ten blok zacznie uruchamiac co sekunde. Dlaczego?

Code: Select all

Every 0$0.1 MARKED 01 do 
begin 
wait(10$0); 
//kod ataku 
end;
Powinno byc

Code: Select all

Every 10$0 MARKED 01 do 
begin 
//kod ataku 
end;
I wtedy bedzie faktycznie co 10 minut...

Posted: Tue Jun 16, 2009 1:25 pm
by Jeanks
No faktycznie zapomniałem nie ten wait tylko w MARKEDZIE ustawic 10, 02 itp