[OMSI 1 & 2] Makra systemowe OMSI |
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.
♪ "Nie pytaj mnie, wiem tyle co i ty" ♪
Zanim cokolwiek napiszesz, przeczytaj koniecznie REGULAMIN Jeśli masz problem techniczny, zapoznaj się z ZASADAMI DZIAŁÓW TECHNICZNYCH Jeśli chcesz podzielić się dodatkiem, zapoznaj się z REGULAMINEM DZIAŁU POBIERALNIA |
Użytkownicy przeglądający ten wątek: |
2 gości |