SAIL - Operacje na stringach + Prosty Zegar

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 - Operacje na stringach + Prosty Zegar

Post by zoNE »

Serpent wrote:String to jak powszechnie wiadomo zmienne przechowujące znaki (ciągi znaków).
Ciągi znaków w SAIL'u zapisujemy pomiędzy znakami ' '.

Przykład:

Code: Select all

'macmilan' 'jurij' 'masza' 'kasza'
Do wyświetlania tego typu zmiennych w grze służy funkcja display_strings.

Display_Strings

Code: Select all

Display_Strings := text;


Wyświetli nam w prawym górnym ekranie zmienna text. Jest to bardzo przydatne zwłaszcza podczas tworzenia skryptów do map, jeżeli chcemy zobaczyć co kryje się pod daną zmienną.


Przykładowo chcemy wyświetlać koordynaty danej jednostki:

Code: Select all

Every 0$0.1 do
begin
enable;
Display_Strings := ['X:', GetX(unit), 'Y:', GetY(unit)];
end;

Dodanie informacji do wyświetlenia w display_strings:
Spoiler:
Często zdarza się że chcemy coś wyświetlić gdy zawartość display_strings nie jest pusta, korzystamy wówczas ze znaku dołączania "^".

Przykład:

Code: Select all

Display_Strings := 'Kalafior'; // to mamy w display_strings
Display_Strings := Display_Strings ^ 'Bialy';
Spowoduje dodanie pod napisem "Kalafior" napisu "Bialy".

Można też użyć już gotowej funkcji napisanej przeze mnie:

Code: Select all

Export Function AddToDisplay(string);
begin
Display_Strings := Display_Strings ^ string;
End;

Czyszczenie display_strings:
Spoiler:
Jeżeli chcemy usunąć obecną zawartość display_strings i dodać coś innego to normalnie używamy display_strings.

Przykład:

Code: Select all

// Wyświetla nam napis: "Jest godzina 12:00"
// Chcemy wyświetlić napis "Jest godzina 13:00"
Display_Strings := 'Jest godzina 13:00';
Jeżeli natomiast chcemy całkowicie wyczyścić display_strings to piszemy:

Code: Select all

Display_Strings := '';
Spowoduje to że napis po prawej zniknie.
Dodanie prostego zegara:
Spoiler:
Zegar w grze jest bardzo przydatny, aby go uzyskać wystarczy tylko kilka linijek kodu.

Code: Select all

// chcemy żeby zegar podawał nam minuty i sekundy
Export time;
Every 1 do
time := 0$00;

Every 0$01 do
begin
enable; // zapętlamy zegar

time := time + 0$01; // co sekundę będzie dodawana sekunda do wyświetlacza

Display_Strings := [#timer, time];
End;
Teraz przechodzimy do pliku Counters.wri w Texts (UWAGA! Każda wersja językowa ma swój własny plik Counters.wri!).

Tam dodajemy następujący wpis:

Code: Select all

timer
  Czas: %t
To tyle, teraz czas powinien być wyświetlany w formie:

Code: Select all

Czas: minuta:sekunda

Dodawanie stringa do stringa:
Spoiler:
Czasami może zajść potrzeba połączenia dwóch zmiennych tego typu. Używamy wówczas następującej funkcji:

Code: Select all

Export Function AddToString(string1, string2);
begin
result := string1 & string2;
End;
Przykład:

Code: Select all

zm1 := 'Andy';
zm2 := ' Cornell';

Display_Strings := AddToString(zm1, zm2);

Wyświetli: Andy Cornell
Wyświetlanie długości stringa:
Spoiler:
Jeżeli chcemy sprawdzić długość zmiennej typu string (ilość znaków w łańcuchu) to używamy funkcji:

Code: Select all

Export Function SizeOfString(string);
begin
result := string - 0;
End;
I wyświetlamy:

Code: Select all

Display_Strings := SizeOfString('jurek'); // zwróci 5
Author: Serpent
Topic: https://forum.original-war.net/viewtopi ... =42&t=4466
Post Reply