SAIL - Bloki Every i jednostka czasu

Gotowe kody SAIL'a, informacje na temat moddingu, itd.

Moderator: zoNE

Post Reply
User avatar
zoNE
The Great Uniter & Site Administrator
The Great Uniter & Site Administrator
Posts: 2059
Joined: Fri Feb 17, 2006 3:44 pm
Location: Poland
Contact:

SAIL - Bloki Every i jednostka czasu

Post by zoNE »

Serpent wrote:Bloki Every są bardzo pomocnym narzędziem gdyż ich najważniejszą cechą jest to że wywołują się po upływie danego czasu.

Budowa:

Code: Select all

Every CZAS do // nagłówek
begin // rozpoczyna blok
// Kod
end; // kończy blok

Przykład - Chcemy aby kod wykonał się w 10 sekundzie po rozpoczęciu gry:
Spoiler:

Code: Select all

Every 0$10 do
begin
// Kod
end;
Przykład - Chcemy aby Funkcja1 wywołała się w 75 sekundzie:
Spoiler:

Code: Select all

Every 1$15 do
begin
Funkcja1;
end;

Takie wywoływanie jest przydatne jednak często chcemy aby kod wykonał się dopiero po spełnieni jakiegoś warunku.
Spoiler:
Przykład - Chcemy aby kod wykonał się dopiero gdy warunek x = true:

Code: Select all

Every 0$01 trigger x = true do
begin
// Kod
end;
Można skrócić ten zapis:

Code: Select all

Every 0$01 trigger x do
begin
// Kod
end;
Oba zapisy oznaczają to samo.

Istnieje jeszcze drugi sposób na wywoływanie bloków Every, są to tzw. marked'y:
Spoiler:

Code: Select all

Przykład:
Every 0$01 marked 01 do
begin
// kod
End;
Kod wykona się jeżeli marked o numerze 01 jest ustawiony na Enable;
Spoiler:

Code: Select all

Przykład - Chcemy aby blok Every został zablokowany po 10 sekundach, następnie odblokowany po 20 sekundach:

Every 0$01 marked 01 do
begin
enable;
// Kod
end;

Every 0$10 do
begin
Disable(01); // blokuje every z markedem 01
end;

Every 0$20 do
begin
Enable(01); // ponownie odblokowywuje every z markedem 01
end;
Należy pamiętać że marked'y domyślnie są ustawione na Enable.


Dodatkowo bloki Every można zapętlić:
Spoiler:

Code: Select all

Every 0$01 trigger x do
begin
enable; 
// Kod
end;

Dodanie enable w bloku zapętla go - oznacza to że blok będzie wykonywał się w tym przypadku co sekundę.


Czas SAIL:
Jednostką czasu w Original War jest "tick".
35 tick'ów = 1 sekunda.

Przykład:

Code: Select all

Zapis "Every 0$01 do" jest równoważny "Every 35 do"
Author: Serpent
Topic: viewtopic.php?f=42&t=4334
Post Reply