13.06.2013, 14:31
Kolejny krok przybliżający nas do opanowania skryptów OMSI to poznanie wbudowanych makr systemowych. Wersja dla niezarejestrowanych obejmuje wyłącznie makra dotyczące obiektów scenerii. Jeśli zauważyłeś błąd lub nieścisłość - napisz do mnie Prywatną Wiadomość w tej sprawie.
Obiekty scenerii
Dyrektywy zadeklarowane w pliku <folder OMSI>\program\callbacklist_scenobj.txt
GetArrBusLine
Wejściowa wartość stosu: Stack0 - indeks nadchodzącego pojazdu
Wyjściowa wartość stosu: Stringstack0 - aktualny numer linii tego pojazdu
Opis: Aby użyć tej funkcji, dany obiekt należy przypisać do przystanku (za pomocą Parent to). Zapisuje na wierzchołku stosu łańcuchowego numer linii następnego autobusu, według kolejności przyjazdów określonych przez indeks.
Przykład: 0 (M.V.GetArrBusLine) - zwraca numer linii następnego pojazdu, 1 (MVGetArrBusLine) - zwraca numer linii drugiego najbliższego wg. kolejności pojazdu
GetArrBusTerminus
Wejściowa wartość stosu: Stack0 - indeks nadchodzącego pojazdu
Wyjściowa wartość stosu: Stringstack0 - kierunek tego pojazdu
Opis: Działa na tej samej zasadzie jak GetArrBusLine, zwraca kierunek (końcowy przystanek) pojazdów
Przykład: 0 (M.V.GetArrBusTerminus) - zwraca kierunek następnego pojazdu, 1 (M.V.GetArrBusTerminus) - zwraca kierunek drugiego najbliższego wg. kolejności pojazdu
GetArrBusTimeDiff
Wejściowa wartość stosu: Stack0 - indeks nadchodzącego pojazdu
Wyjściowa wartość stosu: Stack0 - czas do przyjazdu tego pojazdu na przystanek
Opis: Działa na tej samej zasadzie jak GetArrBusLine, zwraca czas w sekundach do przyjazdu najbliższego pojazdu aż do osiągnięcia przez niego tego przystanku
Przykład: 0 (MVGetArrBusTimeDiff) - zwraca czas do przyjazdu najbliższego pojazdu na przystanek, 1 (M.V.GetArrBusTerminus) - zwraca tenże czas dla drugiego najbliższego wg. kolejności pojazdu
Pojazdy
Dyrektywy zadeklarowane w pliku <folder OMSI>\program\program\callbacklist_roadvehicle.txt
GetRouteIndex
Wejściowa wartość stosu: Stack0 - numer trasy (route) pojazdu
Wyjściowa wartość stosu: Stack0 - indeks trasy
Opis: Przeszukuje plik .HOF w celu znalezienia fragmentu kodu przynależącego do danego numeru trasy
GetBusstopString
Wejściowe wartości stosu: Stack1 - indeks przystanków oraz Stack0 - indeks łańcuchowy
Wyjściowa wartość stosu: Stringstack0 - nazwa przystanku
Opis: Dostarcza z pliku .HOF informacje dotyczące przystanku ustalanego za pomocą wyżej wymienionych danych wejściowych.
Przykład: 5 2 (MVGetBusstopString) zwraca nazwę szóstego przystanku (bo liczymy od zera) o trasie z indeksem 2.
GetTerminusString
Wejściowe wartości stosu: Stack1 - indeks kierunkowy oraz Stack0 - indeks łańcuchowy
Wyjściowa wartość stosu: Stringstack0 - nazwa kierunku
Opis: Dostarcza z pliku .HOF informacje dotyczące kierunku ustalanego za pomocą wyżej wymienionych danych wejściowych.
Przykład: 7 3 (M.V.GetBusstopString) zwraca nazwę ósmego kierunku (bo liczymy od zera) trasy z indeksem 3.
GetRouteTerminusIndex
Wejściowe wartości stosu: Stack0 - indeks trasy (licząc od zera)
Wyjściowa wartość stosu: Stack0 - indeks kierunku (licząc od zera)
Opis: Zwraca indeks domyślnego kierunku dla indeksu danej trasy.
GetTerminusIndex
Wejściowe wartości stosu: Stack0 - kod kierunku
Wyjściowa wartość stosu: Stack0 - indeks kierunku
Opis: Zwraca indeks kierunku biorąc pod uwagę aktualny jego kod.
GetTerminusCode
Wejściowe wartości stosu: Stack0 - indeks kierunku
Wyjściowa wartość stosu: Stack0 - kod kierunku
Opis: Działanie dokładnie odwrotne do GetTerminusIndex. Tutaj to kod kierunku ustalany jest za pomocą indeksu.
GetBusstopCount
Wejściowe wartości stosu: Stack0 - indeks trasy
Wyjściowa wartość stosu: Stack0 - liczba przystanków
Opis: Zwraca liczbę przystanków trasy o danym indeksie. Należy pamiętać, że ta wartość nie jest liczona od zera. Przykładowo, jeśli na trasie są dwa przystanki, wartość wyjściowa będzie wynosiła "2".
GiveChangeCoin
Wejściowe wartości stosu: Stack0 - indeks pieniężny
Wyjściowa wartość stosu: brak
Opis: Warunkuje, jaki pieniądz zostanie użyty np dla skryptów dotyczących automatów wydających resztę.
Przykład: 2 (M.V.GiveChangeCoin) oznacza użycie (np. wydanie) pieniądza o indeksie "2".
GetRouteBusstopIdent
Wejściowe wartości stosu: Stack1 - indeks trasy oraz Stack0 - przystankowy indeks trasy
Wyjściowa wartość stosu: Stringstack0 - identyfikator przystanku
Opis: Zwraca identyfikator przystanku (prawdopodobnie jest to po prostu jego nazwa lub skrócona nazwa) odpowiadający danym wejściowym.
Przykład: 3 6 (M.V.GetRouteBusstopIdent) zwraca identyfikator siódmego przystanku czwartej trasy (bo wskaźniki stosu liczone są tu od zera).
GetBusstopIndex
Wejściowe wartości stosu: Stringstack0 - identyfikator przystanku
Wyjściowa wartość stosu: Stack0 - indeks przystanku
Opis: Zwraca indeks przystanku w zależności od jego identyfikatora.
Przykład: "Reimerweg" (M.V.GetBusstopIndex) zwraca indeks przystanku o identyfikatorze Reimerweg.
GetTTBusstopCount
Wejściowe wartości stosu: brak
Wyjściowa wartość stosu: Stack0 - liczba przystanków
Opis: Zwraca liczbę przystanków dla bieżącego rozkładu jazdy.
GetTTBusstopIndex
Wejściowe wartości stosu: brak
Wyjściowa wartość stosu: Stack0 - indeks aktualnego przystanku
Opis: Zwraca indeks aktualnego przystanku dla bieżącego rozkładu jazdy.
GetTTTerminusIndex
Wejściowe wartości stosu: brak
Wyjściowa wartość stosu: Stack0 - indeks aktualnego kierunku
Opis: Zwraca indeks aktualnego kierunku dla bieżącego rozkładu jazdy.
GetTTLineString
Wejściowe wartości stosu: brak
Wyjściowa wartość stosu: Stringstack0 - numer linii
Opis: Zwraca numer linii dla bieżącego rozkładu jazdy.
GetTTDelay
Wejściowe wartości stosu: brak
Wyjściowa wartość stosu: Stack0 - spóźnienie w sekundach
Opis: Zwraca spóźnienie obliczane w sekundach dla bieżącego rozkładu jazdy.
GetTTBusstopName
Wejściowe wartości stosu: Stack0 - indeks aktualnego przystanku
Wyjściowa wartość stosu: Stringstack0 - nazwa aktualnego przystanku
Opis: Zwraca nazwę aktualnego przystanku biorąc pod uwagę zerową wartość stosu indeksu przystankowego.
GetTTBusstopDep
Wejściowe wartości stosu: Stack0 - indeks aktualnego przystanku
Wyjściowa wartość stosu: Stack0 - czas odjazdu z przystanku w sekundach
Opis: Zwraca rozkładowy czas odjazdu z przystanku w sekundach, na który to przystanek wskazuje zerowa wartość stosu indeksu przystankowego.
GetTTBusstopArr
Wejściowe wartości stosu: Stack0 - indeks aktualnego przystanku
Wyjściowa wartość stosu: Stack0 - czas przyjazdu na przystanek w sekundach
Opis: Zwraca rozkładowy czas przyjazdu na przystanek w sekundach, na który to przystanek wskazuje zerowa wartość stosu indeksu przystankowego.
GetTicketName
Wejściowe wartości stosu: Stack0 - indeks biletowy
Wyjściowa wartość stosu: Stringstack0 - nazwa biletu
Opis: Zwraca nazwę biletu w zależności od jego indeksu.
GetTicketValue
Wejściowe wartości stosu: Stack0 - indeks biletowy
Wyjściowa wartość stosu: Stringstack0 - cena biletu
Opis: Zwraca cenę biletu w zależności od jego indeksu.
GetHumanCountOnPathLink (od OMSI w wersji 1.03)
Wejściowe wartości stosu: Stack0 - indeks ścieżki (Pathlink)
Wyjściowa wartość stosu: Stack0 - liczba pasażerów
Opis: Zwraca aktualną liczbę pasażerów na konkretnej ścieżce.
NrSpecRandom (od OMSI 2)
Wejściowe wartości stosu: Stack0 - wartość początkowa ("Seed")
Wyjściowa wartość stosu: Stack0 - pseudolosowa wartość
Opis: Zwraca specyficzny, losowy numer związany z pojazdem. Sztuczka tutaj polega na tym, że kombinacja "Seed" i numeru taborowego pojazdu zawsze daje ten sam ostateczny numer losowy. Aby otrzymywać inne numery losowe dla jednego pojazdu, wystarczy zmienić wspomniany "Seed".
GetHeightAbovePoint (od OMSI 2)
Wejściowe wartości stosu: Stack2: - X , Stack1: - Y , Stack0: - Z
Wyjściowa wartość stosu: Stack0 - wysokość nad ziemią
Opis: Zwraca wysokość nad poziomem gruntu, mierzonej wzdłuż odwróconej osi Z związanej z pojazdem i określanej przez punkty X, Y, Z.
GetDepotStringGlobal (od OMSI 2)
Wejściowe wartości stosu: Stack0: - indeks łańcuchowy
Wyjściowa wartość stosu: Stack0 - globalstring pliku .hof
Opis: Zwraca łańcuch zawierający informacje spod słowa [global_strings] aktualnie używanego pliku .hof . Indeks łańcuchowy jest adekwatny do zerowej pozycji tej listy.
Tekstury skryptowe (Script-Texturen)
Tylko w OMSI 2, używane w skryptach dotyczących zarówno obiektów scenerii jak i pojazdów. Dyrektywy zadeklarowane w pliku <folder OMSI>\program\callbacklist_scripttex.txt
STNewTex
Wejściowa wartość stosu: Stack0 - indeks tekstury (kolejność z pliku .cfg pojazdu)
Wyjściowa wartość stosu: brak
Opis: Inicjalizacja tekstury skryptowej.
STLock
Wejściowa wartość stosu: Stack0 - indeks tekstury
Wyjściowa wartość stosu: brak
Opis: Blokowanie tekstury, oznaczające możliwość dostępu do odczytu i zapisu.
STUnlock
Wejściowa wartość stosu: Stack0 - indeks tekstury
Wyjściowa wartość stosu: brak
Opis: Odblokowanie tekstury, czyli anulowanie możliwości dostępu do odczytu i zapisu i przygotowanie do wyświetlenia.
STFilter
Wejściowa wartość stosu: Stack0 - indeks tekstury
Wyjściowa wartość stosu: brak
Opis: Generowanie mipmap, czyli wariantów tekstur wyświetlanych na większych odległościach. Proces ten odbywa się po odblokowaniu tekstury, ale nie w czasie jej odblokowywania. Zapobiega migotaniu i artefaktom tekstur widzianych z pewnego dystansu.
STSetColor
Wejściowe wartości stosu: Stack4 - indeks tekstury, Stack3 - alfa, Stack2 - składowa czerwona, Stack1 - składowa zielona, Stack0 - składowa niebieska
Wyjściowa wartość stosu: brak
Opis: Ustawia kolor dla wykonywanych operacji.
STDrawPixel
Wejściowe wartości stosu: Stack2 - indeks tekstury, Stack1 - X, Stack0 - Y
Wyjściowa wartość stosu: brak
Opis: Zmienia kolor (koloruje wcześniej podaną barwą) konkretny piksel o współrzędnych X, Y .
STDrawRect
Wejściowe wartości stosu: Stack4 - indeks tekstury, Stack3 - X1, Stack2 - Y1, Stack1 - X2, Stack0 - Y2
Wyjściowa wartość stosu: brak
Opis: Rysuje wypełniony prostokąt między podanymi współrzędnymi X1-Y1, X2-Y2 .
STTextOut
Wejściowe wartości stosu: Stack5 - indeks tekstury, Stack4 - X1, Stack3 - Y1, Stack2 - indeks czcionki, Stack1 - pełny kolor (lub nie), Stack0 - tracking (automatyczne regulowanie odstępów między znakami), StringStack0 - wypisywany tekst
Wyjściowa wartość stosu: brak
Opis: Wypisuje tekst na teksturze. Indeks czcionki może być zwrócony przez GetFontIndex , wartość "pełny kolor" wskazuje na to, czy ustawiać kolor zadeklarowany poprzez makro STSetColor, czy pobierać go z właściwości czcionki.
GetFontIndex
Wejściowe wartości stosu: StringStack0 - nazwa czcionki
Wyjściowa wartość stosu: Stack0 - indeks czcionki
Opis: Zwraca indeks czcionki dla makra STTextOut
TextLength
Wejściowe wartości stosu: Stack0 - indeks czcionki, StringStack0 - wypisywany tekst
Wyjściowa wartość stosu: Stack0 - długość tekstu w pikselach
Opis: Oblicza i zwraca długość danego tekstu wypisywanego wskazaną czcionką.
STReadPixel
Wejściowe wartości stosu: StringStack2 - indeks tekstury, StringStack1 - X, StringStack0 - Y
Wyjściowa wartość stosu: brak
Opis: Ustawia kolor na taki, jaki posiada wskazany piksel (nie jestem pewny, czy Autorzy nie pomylili się przy wskazaniu stosów, moim zdaniem na wejściu będzie zwykły stos a nie stos łańcuchowy).
STCopyColor
Wejściowe wartości stosu: Stack1 - indeks pierwszej tekstury, StringStack0 - indeks drugiej tekstury
Wyjściowa wartość stosu: brak
Opis: Kolor drugiej tekstury jest ustawiany na kolor, który posiada pierwsza tekstura (również tutaj nie jestem pewny, czy na drugim wejściu podawany jest stos łańcuchowy).
STLoadTex
Wejściowe wartości stosu: Stack0 - indeks tekstury, StringStack0 - nazwa tekstury
Wyjściowa wartość stosu: brak
Opis: Rysuje teksturę o określonej nazwie.
STGetR / G / B / A
Wejściowe wartości stosu: Stack0 - indeks tekstury
Wyjściowa wartość stosu: wartość koloru (składowych koloru)
Opis: Zwraca wartość koloru (poszczególnych składowych) danej tekstury.
Wszystkie indeksy są liczone od zera, chyba, że napisane jest inaczej. Nie pytajcie mnie jak to dokładnie działa, bo sam nie do końca wiem. Niestety Autorzy gry nie opisali w sposób dokładny wszystkich mechanizmów. Daję pewną podstawę do tego, by samemu kombinować - wiecie już, które makro za co jest mniej więcej odpowiedzialne. Starałem się jak najlepiej przetłumaczyć informacje, jednakże zdaje sobie sprawę, że dla niektórych nadal będzie to czarna magia. Co do makr - polecam przejrzenie sobie ich od początku do końca, wtedy stanie się jasne, że większość z nich "zazębia" się. Aby działały jedne, muszę zadziałać wcześniej inne. Po takim przestudiowaniu powyższych opisów, zrozumienie stanie się łatwiejsze
Legenda:
StackX - odpowiada X-owej komórce stosu, przykładowo Stack0 odpowiada zerowej komórce stosu;
StringstackX odpowiada X-owej komórce stosu łańcuchowego, przykładowo Stringstack0 odpowiada zerowej komórce tego stosu.
Poradnik został napisany wyłącznie dla Forum http://strefa-omsi.pl i nie może być rozpowszechniany we fragmentach lub w całości na innych stronach bez zezwolenia głównego Autora.
Obiekty scenerii
Dyrektywy zadeklarowane w pliku <folder OMSI>\program\callbacklist_scenobj.txt
GetArrBusLine
Wejściowa wartość stosu: Stack0 - indeks nadchodzącego pojazdu
Wyjściowa wartość stosu: Stringstack0 - aktualny numer linii tego pojazdu
Opis: Aby użyć tej funkcji, dany obiekt należy przypisać do przystanku (za pomocą Parent to). Zapisuje na wierzchołku stosu łańcuchowego numer linii następnego autobusu, według kolejności przyjazdów określonych przez indeks.
Przykład: 0 (M.V.GetArrBusLine) - zwraca numer linii następnego pojazdu, 1 (MVGetArrBusLine) - zwraca numer linii drugiego najbliższego wg. kolejności pojazdu
GetArrBusTerminus
Wejściowa wartość stosu: Stack0 - indeks nadchodzącego pojazdu
Wyjściowa wartość stosu: Stringstack0 - kierunek tego pojazdu
Opis: Działa na tej samej zasadzie jak GetArrBusLine, zwraca kierunek (końcowy przystanek) pojazdów
Przykład: 0 (M.V.GetArrBusTerminus) - zwraca kierunek następnego pojazdu, 1 (M.V.GetArrBusTerminus) - zwraca kierunek drugiego najbliższego wg. kolejności pojazdu
GetArrBusTimeDiff
Wejściowa wartość stosu: Stack0 - indeks nadchodzącego pojazdu
Wyjściowa wartość stosu: Stack0 - czas do przyjazdu tego pojazdu na przystanek
Opis: Działa na tej samej zasadzie jak GetArrBusLine, zwraca czas w sekundach do przyjazdu najbliższego pojazdu aż do osiągnięcia przez niego tego przystanku
Przykład: 0 (MVGetArrBusTimeDiff) - zwraca czas do przyjazdu najbliższego pojazdu na przystanek, 1 (M.V.GetArrBusTerminus) - zwraca tenże czas dla drugiego najbliższego wg. kolejności pojazdu
Pojazdy
Dyrektywy zadeklarowane w pliku <folder OMSI>\program\program\callbacklist_roadvehicle.txt
GetRouteIndex
Wejściowa wartość stosu: Stack0 - numer trasy (route) pojazdu
Wyjściowa wartość stosu: Stack0 - indeks trasy
Opis: Przeszukuje plik .HOF w celu znalezienia fragmentu kodu przynależącego do danego numeru trasy
GetBusstopString
Wejściowe wartości stosu: Stack1 - indeks przystanków oraz Stack0 - indeks łańcuchowy
Wyjściowa wartość stosu: Stringstack0 - nazwa przystanku
Opis: Dostarcza z pliku .HOF informacje dotyczące przystanku ustalanego za pomocą wyżej wymienionych danych wejściowych.
Przykład: 5 2 (MVGetBusstopString) zwraca nazwę szóstego przystanku (bo liczymy od zera) o trasie z indeksem 2.
GetTerminusString
Wejściowe wartości stosu: Stack1 - indeks kierunkowy oraz Stack0 - indeks łańcuchowy
Wyjściowa wartość stosu: Stringstack0 - nazwa kierunku
Opis: Dostarcza z pliku .HOF informacje dotyczące kierunku ustalanego za pomocą wyżej wymienionych danych wejściowych.
Przykład: 7 3 (M.V.GetBusstopString) zwraca nazwę ósmego kierunku (bo liczymy od zera) trasy z indeksem 3.
GetRouteTerminusIndex
Wejściowe wartości stosu: Stack0 - indeks trasy (licząc od zera)
Wyjściowa wartość stosu: Stack0 - indeks kierunku (licząc od zera)
Opis: Zwraca indeks domyślnego kierunku dla indeksu danej trasy.
GetTerminusIndex
Wejściowe wartości stosu: Stack0 - kod kierunku
Wyjściowa wartość stosu: Stack0 - indeks kierunku
Opis: Zwraca indeks kierunku biorąc pod uwagę aktualny jego kod.
GetTerminusCode
Wejściowe wartości stosu: Stack0 - indeks kierunku
Wyjściowa wartość stosu: Stack0 - kod kierunku
Opis: Działanie dokładnie odwrotne do GetTerminusIndex. Tutaj to kod kierunku ustalany jest za pomocą indeksu.
GetBusstopCount
Wejściowe wartości stosu: Stack0 - indeks trasy
Wyjściowa wartość stosu: Stack0 - liczba przystanków
Opis: Zwraca liczbę przystanków trasy o danym indeksie. Należy pamiętać, że ta wartość nie jest liczona od zera. Przykładowo, jeśli na trasie są dwa przystanki, wartość wyjściowa będzie wynosiła "2".
GiveChangeCoin
Wejściowe wartości stosu: Stack0 - indeks pieniężny
Wyjściowa wartość stosu: brak
Opis: Warunkuje, jaki pieniądz zostanie użyty np dla skryptów dotyczących automatów wydających resztę.
Przykład: 2 (M.V.GiveChangeCoin) oznacza użycie (np. wydanie) pieniądza o indeksie "2".
GetRouteBusstopIdent
Wejściowe wartości stosu: Stack1 - indeks trasy oraz Stack0 - przystankowy indeks trasy
Wyjściowa wartość stosu: Stringstack0 - identyfikator przystanku
Opis: Zwraca identyfikator przystanku (prawdopodobnie jest to po prostu jego nazwa lub skrócona nazwa) odpowiadający danym wejściowym.
Przykład: 3 6 (M.V.GetRouteBusstopIdent) zwraca identyfikator siódmego przystanku czwartej trasy (bo wskaźniki stosu liczone są tu od zera).
GetBusstopIndex
Wejściowe wartości stosu: Stringstack0 - identyfikator przystanku
Wyjściowa wartość stosu: Stack0 - indeks przystanku
Opis: Zwraca indeks przystanku w zależności od jego identyfikatora.
Przykład: "Reimerweg" (M.V.GetBusstopIndex) zwraca indeks przystanku o identyfikatorze Reimerweg.
GetTTBusstopCount
Wejściowe wartości stosu: brak
Wyjściowa wartość stosu: Stack0 - liczba przystanków
Opis: Zwraca liczbę przystanków dla bieżącego rozkładu jazdy.
GetTTBusstopIndex
Wejściowe wartości stosu: brak
Wyjściowa wartość stosu: Stack0 - indeks aktualnego przystanku
Opis: Zwraca indeks aktualnego przystanku dla bieżącego rozkładu jazdy.
GetTTTerminusIndex
Wejściowe wartości stosu: brak
Wyjściowa wartość stosu: Stack0 - indeks aktualnego kierunku
Opis: Zwraca indeks aktualnego kierunku dla bieżącego rozkładu jazdy.
GetTTLineString
Wejściowe wartości stosu: brak
Wyjściowa wartość stosu: Stringstack0 - numer linii
Opis: Zwraca numer linii dla bieżącego rozkładu jazdy.
GetTTDelay
Wejściowe wartości stosu: brak
Wyjściowa wartość stosu: Stack0 - spóźnienie w sekundach
Opis: Zwraca spóźnienie obliczane w sekundach dla bieżącego rozkładu jazdy.
GetTTBusstopName
Wejściowe wartości stosu: Stack0 - indeks aktualnego przystanku
Wyjściowa wartość stosu: Stringstack0 - nazwa aktualnego przystanku
Opis: Zwraca nazwę aktualnego przystanku biorąc pod uwagę zerową wartość stosu indeksu przystankowego.
GetTTBusstopDep
Wejściowe wartości stosu: Stack0 - indeks aktualnego przystanku
Wyjściowa wartość stosu: Stack0 - czas odjazdu z przystanku w sekundach
Opis: Zwraca rozkładowy czas odjazdu z przystanku w sekundach, na który to przystanek wskazuje zerowa wartość stosu indeksu przystankowego.
GetTTBusstopArr
Wejściowe wartości stosu: Stack0 - indeks aktualnego przystanku
Wyjściowa wartość stosu: Stack0 - czas przyjazdu na przystanek w sekundach
Opis: Zwraca rozkładowy czas przyjazdu na przystanek w sekundach, na który to przystanek wskazuje zerowa wartość stosu indeksu przystankowego.
GetTicketName
Wejściowe wartości stosu: Stack0 - indeks biletowy
Wyjściowa wartość stosu: Stringstack0 - nazwa biletu
Opis: Zwraca nazwę biletu w zależności od jego indeksu.
GetTicketValue
Wejściowe wartości stosu: Stack0 - indeks biletowy
Wyjściowa wartość stosu: Stringstack0 - cena biletu
Opis: Zwraca cenę biletu w zależności od jego indeksu.
GetHumanCountOnPathLink (od OMSI w wersji 1.03)
Wejściowe wartości stosu: Stack0 - indeks ścieżki (Pathlink)
Wyjściowa wartość stosu: Stack0 - liczba pasażerów
Opis: Zwraca aktualną liczbę pasażerów na konkretnej ścieżce.
NrSpecRandom (od OMSI 2)
Wejściowe wartości stosu: Stack0 - wartość początkowa ("Seed")
Wyjściowa wartość stosu: Stack0 - pseudolosowa wartość
Opis: Zwraca specyficzny, losowy numer związany z pojazdem. Sztuczka tutaj polega na tym, że kombinacja "Seed" i numeru taborowego pojazdu zawsze daje ten sam ostateczny numer losowy. Aby otrzymywać inne numery losowe dla jednego pojazdu, wystarczy zmienić wspomniany "Seed".
GetHeightAbovePoint (od OMSI 2)
Wejściowe wartości stosu: Stack2: - X , Stack1: - Y , Stack0: - Z
Wyjściowa wartość stosu: Stack0 - wysokość nad ziemią
Opis: Zwraca wysokość nad poziomem gruntu, mierzonej wzdłuż odwróconej osi Z związanej z pojazdem i określanej przez punkty X, Y, Z.
GetDepotStringGlobal (od OMSI 2)
Wejściowe wartości stosu: Stack0: - indeks łańcuchowy
Wyjściowa wartość stosu: Stack0 - globalstring pliku .hof
Opis: Zwraca łańcuch zawierający informacje spod słowa [global_strings] aktualnie używanego pliku .hof . Indeks łańcuchowy jest adekwatny do zerowej pozycji tej listy.
Tekstury skryptowe (Script-Texturen)
Tylko w OMSI 2, używane w skryptach dotyczących zarówno obiektów scenerii jak i pojazdów. Dyrektywy zadeklarowane w pliku <folder OMSI>\program\callbacklist_scripttex.txt
STNewTex
Wejściowa wartość stosu: Stack0 - indeks tekstury (kolejność z pliku .cfg pojazdu)
Wyjściowa wartość stosu: brak
Opis: Inicjalizacja tekstury skryptowej.
STLock
Wejściowa wartość stosu: Stack0 - indeks tekstury
Wyjściowa wartość stosu: brak
Opis: Blokowanie tekstury, oznaczające możliwość dostępu do odczytu i zapisu.
STUnlock
Wejściowa wartość stosu: Stack0 - indeks tekstury
Wyjściowa wartość stosu: brak
Opis: Odblokowanie tekstury, czyli anulowanie możliwości dostępu do odczytu i zapisu i przygotowanie do wyświetlenia.
STFilter
Wejściowa wartość stosu: Stack0 - indeks tekstury
Wyjściowa wartość stosu: brak
Opis: Generowanie mipmap, czyli wariantów tekstur wyświetlanych na większych odległościach. Proces ten odbywa się po odblokowaniu tekstury, ale nie w czasie jej odblokowywania. Zapobiega migotaniu i artefaktom tekstur widzianych z pewnego dystansu.
STSetColor
Wejściowe wartości stosu: Stack4 - indeks tekstury, Stack3 - alfa, Stack2 - składowa czerwona, Stack1 - składowa zielona, Stack0 - składowa niebieska
Wyjściowa wartość stosu: brak
Opis: Ustawia kolor dla wykonywanych operacji.
STDrawPixel
Wejściowe wartości stosu: Stack2 - indeks tekstury, Stack1 - X, Stack0 - Y
Wyjściowa wartość stosu: brak
Opis: Zmienia kolor (koloruje wcześniej podaną barwą) konkretny piksel o współrzędnych X, Y .
STDrawRect
Wejściowe wartości stosu: Stack4 - indeks tekstury, Stack3 - X1, Stack2 - Y1, Stack1 - X2, Stack0 - Y2
Wyjściowa wartość stosu: brak
Opis: Rysuje wypełniony prostokąt między podanymi współrzędnymi X1-Y1, X2-Y2 .
STTextOut
Wejściowe wartości stosu: Stack5 - indeks tekstury, Stack4 - X1, Stack3 - Y1, Stack2 - indeks czcionki, Stack1 - pełny kolor (lub nie), Stack0 - tracking (automatyczne regulowanie odstępów między znakami), StringStack0 - wypisywany tekst
Wyjściowa wartość stosu: brak
Opis: Wypisuje tekst na teksturze. Indeks czcionki może być zwrócony przez GetFontIndex , wartość "pełny kolor" wskazuje na to, czy ustawiać kolor zadeklarowany poprzez makro STSetColor, czy pobierać go z właściwości czcionki.
GetFontIndex
Wejściowe wartości stosu: StringStack0 - nazwa czcionki
Wyjściowa wartość stosu: Stack0 - indeks czcionki
Opis: Zwraca indeks czcionki dla makra STTextOut
TextLength
Wejściowe wartości stosu: Stack0 - indeks czcionki, StringStack0 - wypisywany tekst
Wyjściowa wartość stosu: Stack0 - długość tekstu w pikselach
Opis: Oblicza i zwraca długość danego tekstu wypisywanego wskazaną czcionką.
STReadPixel
Wejściowe wartości stosu: StringStack2 - indeks tekstury, StringStack1 - X, StringStack0 - Y
Wyjściowa wartość stosu: brak
Opis: Ustawia kolor na taki, jaki posiada wskazany piksel (nie jestem pewny, czy Autorzy nie pomylili się przy wskazaniu stosów, moim zdaniem na wejściu będzie zwykły stos a nie stos łańcuchowy).
STCopyColor
Wejściowe wartości stosu: Stack1 - indeks pierwszej tekstury, StringStack0 - indeks drugiej tekstury
Wyjściowa wartość stosu: brak
Opis: Kolor drugiej tekstury jest ustawiany na kolor, który posiada pierwsza tekstura (również tutaj nie jestem pewny, czy na drugim wejściu podawany jest stos łańcuchowy).
STLoadTex
Wejściowe wartości stosu: Stack0 - indeks tekstury, StringStack0 - nazwa tekstury
Wyjściowa wartość stosu: brak
Opis: Rysuje teksturę o określonej nazwie.
STGetR / G / B / A
Wejściowe wartości stosu: Stack0 - indeks tekstury
Wyjściowa wartość stosu: wartość koloru (składowych koloru)
Opis: Zwraca wartość koloru (poszczególnych składowych) danej tekstury.
Wszystkie indeksy są liczone od zera, chyba, że napisane jest inaczej. Nie pytajcie mnie jak to dokładnie działa, bo sam nie do końca wiem. Niestety Autorzy gry nie opisali w sposób dokładny wszystkich mechanizmów. Daję pewną podstawę do tego, by samemu kombinować - wiecie już, które makro za co jest mniej więcej odpowiedzialne. Starałem się jak najlepiej przetłumaczyć informacje, jednakże zdaje sobie sprawę, że dla niektórych nadal będzie to czarna magia. Co do makr - polecam przejrzenie sobie ich od początku do końca, wtedy stanie się jasne, że większość z nich "zazębia" się. Aby działały jedne, muszę zadziałać wcześniej inne. Po takim przestudiowaniu powyższych opisów, zrozumienie stanie się łatwiejsze

Legenda:
StackX - odpowiada X-owej komórce stosu, przykładowo Stack0 odpowiada zerowej komórce stosu;
StringstackX odpowiada X-owej komórce stosu łańcuchowego, przykładowo Stringstack0 odpowiada zerowej komórce tego stosu.
Poradnik został napisany wyłącznie dla Forum http://strefa-omsi.pl i nie może być rozpowszechniany we fragmentach lub w całości na innych stronach bez zezwolenia głównego Autora.