SAIL - Operacje na stringach + Prosty Zegar

Wszelkie pytania na temat SAIL'a i modowania OW.
Post Reply
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:

SAIL - Operacje na stringach + Prosty Zegar

Post by Serpent »

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

Post by Serpent »

Taki zegar też zadziała:
Spoiler:

Code: Select all

Every 0$01 do
begin
enable;
Display_Strings := ['#time', tick];
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