Modscenter • Centrum modyfikacji do gier
[Poradnik] Tworzenie wyświetlaczy do ciężarówek (aktualizacja 15.02.2014) - przeniesiono przez GrzesiekPL - Wersja do druku

+- Modscenter • Centrum modyfikacji do gier (https://modscenter.pl)
+-- Dział: Kosz (https://modscenter.pl/forum_kosz_339)
+--- Dział: Kosz (https://modscenter.pl/forum_kosz_340)
+--- Wątek: [Poradnik] Tworzenie wyświetlaczy do ciężarówek (aktualizacja 15.02.2014) - przeniesiono przez GrzesiekPL (/thread_poradnik-tworzenie-wy%C5%9Bwietlaczy-do-ci%C4%99%C5%BCar%C3%B3wek-aktualizacja-15-02-2014-przeniesiono-przez-grzesiekpl_23944)



[Poradnik] Tworzenie wyświetlaczy do ciężarówek (aktualizacja 15.02.2014) - przeniesiono przez GrzesiekPL - kuba141 - 14-02-2014

Poradnik tworzenia wyświetlaczy do ETS2 itp.
14.02.2014
- wprowadzenie i podstawy; jak dodawać kolejne ekrany/pozycje w wyświetlaczu

Potrzebne będą programy np.
Notepad++ itp. Sam używałem notatnika na samym początku, ale trudne było znalezienie w ogóle czegoś, więc nie polecam go.
Jeżeli będziecie chcieli dodać jakiś "obrazek" do wyświetlacza to będzie potrzebny program graficzny (polecam gimpa) oraz konwerter DXTbmp.

Zatem zaczynajmy.
Plik odpowiedzialny za wyświetlacze znajduję się w katalogu z grą w:
Kod:
base.scs\ui\dashboard\nazwa_ciężarówki.sii

Otwórzmy dla przykładu plik "iveco_hiway.sii" np. Notepadem++. Na początku dla wielu z was będzie to niezrozumiałe, ale nie martwcie się. Wink (IPB)
Kod:
SiiNunit
{
ui::window : 0245367f0 {
clip_children: true
window_handler: null
keep_aspect: none
fitting: false
my_children: 4
my_children[0]: 0245367f1
my_children[1]: 0245367f2
my_children[2]: 0245367f3
my_children[3]: 0245367f1d
name: ""
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 0
area_r: 1000
area_t: 999
area_b: -1
id: 0
layer: 0
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: null
}

Najpierw objaśnienie najważniejszych danych:
Kod:
SiiNunit
{ <-każde "drzewko" rozpoczyna się i kończy takimi klamrami {}
ui::window : 0245367f0 { <- jest to nazwa "całego wyświetlacza", do tej nazwy będziemy przyporządkowywać wszystkie wyświetlane pozycje
clip_children: true
window_handler: null
keep_aspect: none
fitting: false
my_children: 4 <- ilość wszystkich wyświetlanych pozycji, w hiway jest tylko jedna pozycja, ale tak naprawdę jest ich "więcej"
my_children[0]: 0245367f1 <- dotarliśmy do jednej z najważniejszych linijek, jest to właśnie nazwa jakieś wyświetlanej pozycji, co to jest to dowiemy się nieco później.
my_children[1]: 0245367f2 <- kolejna nazwa jakieś pozycji....
my_children[2]: 0245367f3 <- i kolejna....
my_children[3]: 0245367f1d <- i wkońcu jakaś ostatnia... takich pozycji może być dużo
name: "" <- jakaś nazwa, może być pomocna przy odnajdywaniu za co może odpowiadać dane drzewko(wyświetlacz,wskaźnik poziomu paliwa, średnie spalanie itd.), w tym przypadku nic nie pisze, więc się nie przejmujemy
coords_l: 0 <- jakieś współrzędne, nimi się nie przejmujemy
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 0 <- też jedna z najważniejszych linijek, są to współrzędne, w tym przypadku jest to maksymalne położenie z lewej strony
area_r: 1000 <- to samo, prawa granica
area_t: 999 <- górna granica
area_b: -1 <- dolna granica
id: 0 <- jedna z najważniejszych linijek, jest to "odwołanie" do silnika gry co to drzewko ma robić, jeżeli jest to zwykły tekst, obrazek dajemy wtedy wartość "0", jeżeli ma być to pierwszy ekran w wyświetlaczu dajemy wartość "100", wszystkie te wartości opiszę później
layer: 0 <- warstwa
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: null
} <- koniec drzewka

Teraz dwa kolejnne drzewka odpowiadają za podświetlenie:
Kod:
ui::text : 0245367f1 { <- nazwa drzewka/pozycji, ta nazwa jest przyporządkowana do drzewka o nazwie "0245367f0", które nazwaliśmy "całym wyświetlaczem". Jest ona pierwszym drzewkiem/pozycją w "całym wyświetlaczu" (my_children[0]: 0245367f1)
text: "<img src=/material/ui/white.mat xscale=stretch yscale=stretch color=10eea15f>\r\n" <- wyświetla to co znajduje się między cudzysłowami "", <img src=> , to powinniście znać z lekcji informatyki :) Jest to obrazek, który znajduje się w podanej ścieżce: "/material/ui/white.mat". Natomiast te dane: "xscale=stretch yscale=stretch" decydują o tym, czy obrazek ma być rozściągnięty Xscale- oś iksów-poziomo, Yscale-pionowo, zalecam, aby zawsze dodawać do odwołań te formuły. "color=10eea15f" -poprostu kolor podświetlenia
name: BackgroundUnlit <- po tej nazwie dowiadujemy się, że jest to podświetlenie wyświetlacza przy wyłączonych światłach
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 1
area_r: 0
area_t: 0
area_b: 1
id: 10 <- numer, który odpowiada za podświetlenie przy wył. światłach
layer: 12 <- dwunasta warstwa, czyli podświetlenie jest priorytetem(im wyższe wartości tym wyższe warstwy). Musi być ono zawsze widoczne i nic go nie może zakryć
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f0 <- bardzo ważna linijka, jest to przyporządkowanie drzewka do "całego wyświetlacza"
}

ui::text : 0245367f2 {
text: "<img src=/material/ui/white.mat xscale=stretch yscale=stretch color=50eea15f>\r\n" <- dlatego jest obrazek białego tła, bo mu najłatwiej nadać jakiś kolor, spróbujcie nadać czarnej kartce papieru kredkami jakiś kolor :)
name: BackgroundLit <- nazwa, dzięki której wiemy, że to drzewko decyduje o podświetleniu przy włączonych światłach
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 1
area_r: 0
area_t: 0
area_b: 1
id: 20 <- tak samo jak wyżej, silnik gry wie co ma robić z tym drzewkiem
layer: 13 <- no popatrzcie.. jednak ważniejsze jest podświetlenie przy włączonych światłach. No tak, spróbujcie sobie w domu wziąść dwie kartki i jedną zakryć drugą, będzie widać tą, która jest bliżej nas - czyli ma wyższy numer warstwy :)
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f0 <- i znowu przyporządkowanie do "całego wyświetlacza"
}

Początek już za nami. Teraz część, w której będziemy dopisywać kolejne drzewka i modyfikować pozostałe:
Kod:
ui::group : 0245367f3 { <- nazwa kolejnego drzewka/pozycji. Jest to trzecie drewko w "całym wyświetlaczu". Zazwyczaj od trzeciego drzewka zaczynają się pozycje w wyświetlaczu w grze. Z racji tego, że jest to hiway jest tylko jeden ekran.
fitting: false
my_children: 11 <- ilość wszystkich drzewek przyporządkowanych tej pozycji
my_children[0]: 0245367fa <- jakaś nazwa drzewka, możemy popatrzeć o drzewko niżej i zobaczyć, że drzewko z taką nazwą nazywa się "CruiseControl" , czyli jest to tempomat
my_children[1]: 0245367f1e <- można też skopiować "0245367f1e" i wyszukać za pomocą funkcji szukaj
my_children[2]: 024970fa0
my_children[3]: 024974710
my_children[4]: 024974a90
my_children[5]: 024975bd0
my_children[6]: 024977a60
my_children[7]: 024977600
my_children[8]: 024d0d2c0
my_children[9]: 024d1c450
my_children[10]: 024d25af0
name: Display0 <- to jest nazwa, która mówi, że jest to główny ekran, pierwsza pozycja wyświetlacza w grze(w hiway jest jedna pozycja, więc dlatego napisałem, że jest to główny ekran)
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 0
area_r: 1000
area_t: 999
area_b: -1
id: 100 <- bardzo ważne odwołanie, wartość "100" silnik gry odczytuje jako pierwszy ekran, "200" - drugi ekran "300" - trzeci itd. "800"- ostatni ósmy ekran, gra nie pozwala na więcej, W patchu bodajże 1.4 twórcy dodali możliwość dodawania więcej niż trzy ekrany
layer: 14 <- jednak żeby było widać wszystkie informacje na wyświetlaczu tu musi być wyższa wartość warstwy
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f0 <- odwołanie do "całego wyświetlacza", wszystkie "my_children[0]: 0245367f1; my_children[1]: 0245367f2; my_children[2]: 0245367f3; my_children[3]: 0245367f1d" będą miały odwołanie do tego naszego "całego wyświetlacza", zaś kolejne drzewka, które są w tej pozycji wyświetlacza/tym drzewku o nazwie "0245367f3" będą miały do niego przypisanie.
}

Może odpocznijmy od teorii narazie. Zróbmy drugi ekran w hiwayu! (GG) Big Grin (IPB)
Najpierw wymyślmy jakąś nazwę dla naszego ekranu. Niech to będzie "0245367fx" Może być dowolna nazwa byle, żeby nie miała więcej znaków jak 9(lub 10, lepiej dać 9, żeby się nie pomylić bo gra nie będzie czytała nazw z 11 znakami, i będzie czarny ekran i błędy w logu)
Dopiszmy do "całego wyświetlacza" kolejne drzewko/pozycję wyświetlacza: "my_children[4]: 0245367fx"
Będzie to wyglądać tak:
Kod:
SiiNunit
{
ui::window : 0245367f0 {
clip_children: true
window_handler: null
keep_aspect: none
fitting: false
my_children: 5 <- zmieniamy dla świętego spokoju liczbę drzewek przyporządkowanych do "całego wyświetlacza"
my_children[0]: 0245367f1
my_children[1]: 0245367f2
my_children[2]: 0245367f3
my_children[3]: 0245367f1d
my_children[4]: 0245367fx <- tu dodajemy kolejną/drugą pozycję wyświetlacza
name: ""
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 0
area_r: 1000
area_t: 999
area_b: -1
id: 0
layer: 0
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: null
}

Niestety tak dobrze nie ma, żeby zadziałało. Musimy stworzyć całe drzewko, które będzie drugą pozycją w wyświetlaczu.
Zatem skopiujmy sobie ten pierwszy ekran/drzewko i przeróbmy:
Kod:
ui::group : 0245367f3 { <- zmieniamy nazwę drzewka
fitting: false
my_children: 11 <tu dajemy wartość zero, bo narazie chcemy aby się pojawił drugi ekran
my_children[0]: 0245367fa <- tu usuwamy wszystkie drzewka przyporządkowane tej pozycji/drzewku
my_children[1]: 0245367f1e
my_children[2]: 024970fa0
my_children[3]: 024974710
my_children[4]: 024974a90
my_children[5]: 024975bd0
my_children[6]: 024977a60
my_children[7]: 024977600
my_children[8]: 024d0d2c0
my_children[9]: 024d1c450
my_children[10]: 024d25af0
name: Display0 <- zmieniamy na Display1
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 0
area_r: 1000
area_t: 999
area_b: -1
id: 100 <- zmieniamy wartość na "200" , bo gra to będzie czytała jako druga pozycja
layer: 14 <- warstwę zostawiamy w spokoju
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f0 <- tu też zostawiamy, bo jest ta pozycja/drzewko przyporządkowana "całemu wyświetlaczu"
}

Wklejamy to pod spodem. Jak to powinno wyglądać:
Kod:
SiiNunit
{
ui::window : 0245367f0 {
clip_children: true
window_handler: null
keep_aspect: none
fitting: false
my_children: 5
my_children[0]: 0245367f1
my_children[1]: 0245367f2
my_children[2]: 0245367f3
my_children[3]: 0245367f1d
my_children[4]: 0245367fx
name: ""
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 0
area_r: 1000
area_t: 999
area_b: -1
id: 0
layer: 0
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: null
}

ui::text : 0245367f1 {
text: "<img src=/material/ui/white.mat xscale=stretch yscale=stretch color=10eea15f>\r\n"
name: BackgroundUnlit
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 1
area_r: 0
area_t: 0
area_b: 1
id: 10
layer: 12
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f0
}

ui::text : 0245367f2 {
text: "<img src=/material/ui/white.mat xscale=stretch yscale=stretch color=50eea15f>\r\n"
name: BackgroundLit
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 1
area_r: 0
area_t: 0
area_b: 1
id: 20
layer: 13
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f0
}

ui::group : 0245367f3 {
fitting: false
my_children: 11
my_children[0]: 0245367fa
my_children[1]: 0245367f1e
my_children[2]: 024970fa0
my_children[3]: 024974710
my_children[4]: 024974a90
my_children[5]: 024975bd0
my_children[6]: 024977a60
my_children[7]: 024977600
my_children[8]: 024d0d2c0
my_children[9]: 024d1c450
my_children[10]: 024d25af0
name: Display0
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 0
area_r: 1000
area_t: 999
area_b: -1
id: 100
layer: 14
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f0
}

ui::group : 0245367fx { <- to jak powinno wyglądać nasz drugi ekran w hiway
fitting: false
my_children: 0
name: Display1
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 0
area_r: 1000
area_t: 999
area_b: -1
id: 200
layer: 14
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f0
}
<- pamiętamy o zachowaniu odstępów
ui::text_common : 0245367fa {
value: "199|km/h"
look_template: txt.hiway.speed_small
text: ""
name: CruiseCo....

Zapisujemy plik jako "wszystkie typy plików" w formacie *sii i wsadzamy go odpowiednio w "nasz wyswietlacz.scs" zachowując odpowiednią ścieżkę gdzie wkładamy nasz przerobiony plik wyświetlacza.sii
Kod:
wyswietlacz.scs\ui\dashboard\iveco_hiway.sii

Jak to powinno wyglądać w grze:
[Obrazek: 8h6c.jpg]


Gotowy wyświetlacz:
www21.zippyshare.com/v/60694344/file.html




Mam nadzieję, że choć trochę coś z tego zrozumieliście. Wink (IPB)


RE: [Poradnik] Tworzenie wyświetlaczy do ciężarówek (aktualizacja 14.02.2014) - kuba141 - 15-02-2014

15.02.2014 - podstawy - część II; spis funkcji; wygląd tekstu; spalanie w hiwayu

Umiemy już dodawać kolejne ekrany w wyświetlaczu. Teraz nauczmy się rozgryźć kolejne drzewka:

Kod:
ui::text_common : 0245367fa { <-nazwa drzewka, sądząc po tym co pisze linijkę niżej może to być prędkość lub tempomat
value: "199|km/h" <- podana wartość "199" oraz jednostka - twórcy trochę zaszaleli z taką prędkością :) Ten tekst nie wyświetla się w grze, więc można tu zostawić wolne pole, ale łatwiej jest się połapać gdy tu damy jednostkę
look_template: txt.hiway.speed_small <- bardzo ważna linijka, odpowiada ona za wygląd wyświetlanej informacji, wielkość, kolor itp. - napiszę potem gdzie można znaleźć wszystkie style tekstu
text: ""
name: CruiseControl <- teraz wiemy, że jest to na pewno tempomat
coords_l: -16
coords_r: 146
coords_t: 879
coords_b: 737
area_l: 1
area_r: 0
area_t: 0
area_b: 1
id: 1100 <- wartość "1100" odpowiada za wyświetlanie prędkości ustalonej przez tempomat, potem podam jakie są wszystkie funkcje
layer: 8 <- jakbyśmy tu dali wartość "0" to pewnie nie byłoby widać na wyświetlaczu w grze tempomatu - tak samo jak pisałem z przykładem z dwoma kartkami
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f3 <- przypominam - przyporządkowanie do pierwszego ekranu
}

ui::text_common : 0245367f1e { <- analogicznie, tak jak wyżej
value: "D16\r\n\r\n" <- wiemy z doświadczenia, że jest to wyświetlanie aktualnego biegu
look_template: txt.hiway.text1 <- styl tekstu - w grze jest to duży tekst
text: ""
name: Gear <- czyli bieg
coords_l: 812
coords_r: 986
coords_t: 949
coords_b: 799
area_l: 1
area_r: 0
area_t: 0
area_b: 1
id: 1040 <- silnik gry wie, że ma wyświetlać aktualny bieg
layer: 8
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f3 <- przyporządkowanie, każde drzewko ma przyporządkowanie do swojego "drzewka/ekranu"
}

ui::text : 024970fa0 {
text: "<img src=/material/ui/white.mat xscale=stretch yscale=stretch color=FFaaff60>" <- coś nowego, jest to pasek ciśnienia oleju w danym kolorze
name: "oil pressure bar" <- stąd wiem, że jest to ten wskaźnik
coords_l: 270 <- wszystkie 8 linijek są to współrzędne. W tych wszystkich granicach będzie widoczny pasek
coords_r: 856
coords_t: 624
coords_b: 573
area_l: 270
area_r: 856
area_t: 434 <- dlaczego tu jest inna wartość, a nie "624"? - sam tego nie wiem
area_b: 383
id: 1110 <- analogicznie, wartość, którą czyta silnik gry
layer: 9
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f3
}

ui::group : 024974710 { <- tu coś nowego, ale tak naprawdę nie wiele się to różni od zwykłych drzewek
fitting: false
my_children: 0
name: "oil pressure bar max" <- zapewne jest to maksymalna granica, do której dochodzi wskaźnik
coords_l: 270
coords_r: 856
coords_t: 624
coords_b: 573
area_l: 270
area_r: 856
area_t: 624
area_b: 573
id: 1115 <- wcześniejsze drzewko miało wartość "1100", a to jest o 5 większe - te dwa drzewka są ze sobą powiązane, wszystkie wskaźniki typu "paski" mają tak
layer: 9
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f3
}

Już umiemy rozgryźć większość drzewek, do czego one służą i jakie pełnią zadanie.
Dodajmy zatem spalanie do naszego drugiego ekranu w hiway. Skopiujmy drzewko odpowiedzialne za tempomat i przeróbmy je:
Kod:
ui::text_common : 0245367fa { <- zmieńmy nazwę, żeby nie powtarzała się ona - np. "67fxspal" - wziąłem 4 znaki z drugiego naszego dodanego drzewka/ekranu i dopisałem 4 pierwsze litery słowa spalanie, możemy oczywiście dać inną nazwę
value: "199|km/h" <- możemy zmienić, ale też nie musimy - to nie wpływa na działanie
look_template: txt.hiway.speed_small <- na razie zostawmy
text: ""
name: CruiseControl <- możemy zostawić, albo możemy zmienić na spalanie ;)
coords_l: -16 <- zostawiamy na razie
coords_r: 146
coords_t: 879
coords_b: 737
area_l: 1 <- tego nie zmieniamy, przy zwykłych informacjach wyświetlanych jako liczby (np. 50km/h) to pozostaje niezmienne, jeżeli informacja pojawia się jako wskaźnik typu "pasek" (np. ciśnienie powietrza) tu zmieniamy wartości współrzędnych
area_r: 0
area_t: 0
area_b: 1
id: 1100 <- musimy tu dać wartość, która odpowiada za spalanie, na razie nie wiecie jaka to jest, ale jak otworzymy wyświetlacz innego pojazdu i znajdziemy drzewko ze spalaniem możemy przekopiować tą wartość, ja ją podam od razu i na końcu napisze wszystkie jakie są dostępne w grze. wartość "1160" odpowiada za spalanie chwilowe
layer: 8
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f3 <- zmieniamy tak, aby to drzewko było przyporządkowane do drugiego ekranu/drzewka - czyli "0245367fx"
}

Po modyfikacjach powinno wyglądać to tak:
Kod:
ui::text_common : 67fxspal {
value: "199|l/h"
look_template: txt.hiway.speed_small
text: ""
name: spalanie
coords_l: -16
coords_r: 146
coords_t: 879
coords_b: 737
area_l: 1
area_r: 0
area_t: 0
area_b: 1
id: 1160
layer: 8
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367fx
}

Musimy pamiętać, żeby dopisać to drzewko odpowiedzialne za spalanie do drugiego drzewka/ekranu:
Kod:
ui::group : 0245367fx {
fitting: false
my_children: 1
my_children[0]: 67fxspal
name: Display1
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 0
area_r: 1000
area_t: 999
area_b: -1
id: 200
layer: 14
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f0
}

Początek powinien wyglądać tak:
Kod:
SiiNunit
{
ui::window : 0245367f0 {
clip_children: true
window_handler: null
keep_aspect: none
fitting: false
my_children: 5
my_children[0]: 0245367f1
my_children[1]: 0245367f2
my_children[2]: 0245367f3
my_children[3]: 0245367f1d
my_children[4]: 0245367fx
name: ""
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 0
area_r: 1000
area_t: 999
area_b: -1
id: 0
layer: 0
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: null
}

ui::text : 0245367f1 {
text: "<img src=/material/ui/white.mat xscale=stretch yscale=stretch color=10eea15f>\r\n"
name: BackgroundUnlit
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 1
area_r: 0
area_t: 0
area_b: 1
id: 10
layer: 12
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f0
}

ui::text : 0245367f2 {
text: "<img src=/material/ui/white.mat xscale=stretch yscale=stretch color=50eea15f>\r\n"
name: BackgroundLit
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 1
area_r: 0
area_t: 0
area_b: 1
id: 20
layer: 13
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f0
}

ui::group : 0245367f3 {
fitting: false
my_children: 11
my_children[0]: 0245367fa
my_children[1]: 0245367f1e
my_children[2]: 024970fa0
my_children[3]: 024974710
my_children[4]: 024974a90
my_children[5]: 024975bd0
my_children[6]: 024977a60
my_children[7]: 024977600
my_children[8]: 024d0d2c0
my_children[9]: 024d1c450
my_children[10]: 024d25af0
name: Display0
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 0
area_r: 1000
area_t: 999
area_b: -1
id: 100
layer: 14
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f0
}

ui::group : 0245367fx {
fitting: false
my_children: 1
my_children[0]: 67fxspal
name: Display1
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 0
area_r: 1000
area_t: 999
area_b: -1
id: 200
layer: 14
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f0
}

ui::text_common : 67fxspal {
value: "199|l/h"
look_template: txt.hiway.speed_small
text: ""
name: spalanie
coords_l: -16
coords_r: 146
coords_t: 879
coords_b: 737
area_l: 1
area_r: 0
area_t: 0
area_b: 1
id: 1160
layer: 8
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367fx
}

ui::text_common : 0245367fa {
value: "199|km/h"
look_template: txt.hiway.speed_small
text: ""
name: Crui....

W grze powinno wyglądać tak:
[Obrazek: kjdp.jpg]

Trochę dziwnie to wygląda, nie ma przecinka (powinno być 2,4 l/g). Winny jest: "look_template: txt.hiway.speed_small" Zatem poszukajmy rozwiązania.
Kod:
/ui/template/dashboard_text.sii
Tu są zapisane wszystkie czcionki jakich można użyć w wyświetlaczu.
Nas interesuje na razie hiway:
Kod:
#
#Hiway
#

ui::text_template : txt.hiway.text0 {
    name: "zDB  Iveco Hiway Numbers"
    text: "<align hstyle=center><font face=/font/number.font xscale=1.5 yscale=4>%0</font></align>"
}
ui::text_template : txt.hiway.text1 {
    name: "zDB  Iveco Hiway Nubers Blue"
    text: "<align hstyle=center><color value=FF302020><font face=/font/number.font xscale=4 yscale=7>%0</font></align>"
}
ui::text_template : txt.hiway.text2 { <- użyjmy tego, może pojawi nam się przecinek i jednostka "l/h", a raczej "l/g" kopiujemy nazwę "txt.hiway.text2"
    name: "zDB  Hiway Numbers black digit"
    text: "<align hstyle=right><color value=FF000000><font face=/font/lcd_number.font xscale=2.4 yscale=3.5>%0</font></align><ret><offset vshift=130><align hstyle=right><color value=FF000000><font face=/font/number.font xscale=2.4 yscale=2.8>%1</font></align>"
}
ui::text_template : txt.hiway.clock {
    name: "zDB  Hiway Clock"
    text: "<align hstyle=center><color value=FF000000><font face=/font/lcd_number.font xscale=3 yscale=3>%0</font></align>"
}
ui::text_template : txt.hiway.speed_small {
    name: "zDB  Hiway Speed Small"
    text: "<align hstyle=right right=120><color value=FFFFFFFF><font face=/font/number.font xscale=2.3 yscale=3>%0</font></align><br offset=75><align hstyle=center><font face=/font/number.font xscale=1.5 yscale=3>%1</font></align>"
}
Wklejamy tą nazwę w:
Kod:
look_template: txt.hiway.speed_small
co da nam:
Kod:
look_template: txt.hiway.text2
W grze wygląda teraz tak:
[Obrazek: m703.jpg]
Przecinek jest - to bardzo dobrze, ale jednostki nie ma. Mamy dwa rozwiązania - dopiszemy za pomocą drzewka tekst "l/h" albo weźmiemy czcionkę z innej ciężarówki, żeby działała. Ja wezmę tą pierwszą opcję.

Na początek pasuje to jakoś umieścić w innym miejscu na wyświetlaczu spalanie. Musimy zająć się współrzędnymi. Na początku trudno jest wyczuć to, co się stanie jak zwiększę o 100 jednostek wartość, to jak się to przesunie.
Kod:
coords_l: -16 <- zwiększmy może wartość do 300, żeby wyśrodkować spalanie
coords_r: 146 <- zwiększamy o ok. +300, ale dajmy tu trochę więcej - może 500
coords_t: 879 <- jest wysoko umiejscowione, więc obniżmy do 480
coords_b: 737 <- tu o tyle samo, nawet więcej obniżmy do 300

Powinno wyglądać to tak:
Kod:
ui::text_common : 67fxspal {
value: "199|l/h"
look_template: txt.hiway.text2
text: ""
name: spalanie
coords_l: 300
coords_r: 500
coords_t: 480
coords_b: 300
area_l: 1
area_r: 0
area_t: 0
area_b: 1
id: 1160
layer: 8
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367fx
}
W grze wygląda to tak:
[Obrazek: llvr.jpg]
Ukazała nam się jednostka "l/" można to ukryć zawyżając dolną granicę tak, aby ona zakryła to. Jak widzicie jest to najnudniejsza robota. Ale jak już się dobierze odpowiednie wartości efekt jest zadowalający.
Trzeba podnieść nieco do góry tak z ok 80 jednostek.

Po wielu próbach i błędach dojdziemy do tych wartości:
Kod:
coords_t: 535
coords_b: 405
[Obrazek: 65ii.jpg]

Żeby było ładniej dodamy jeszcze jednostkę.
Skopiujmy to nasze drzewko i przeróbmy:
Kod:
ui::text_common : 67fxspal { <- dajemy inną nazwę
value: "199|l/h" <- tu piszemy co ma być wyświetlane na ekranie (w tym przypadku jednostka)
look_template: txt.hiway.text2 <- wiemy, że ta "czcionka" nie ma litery "h", więc musimy dorwać czcionkę która taką literę ma. Weźmy np. z starszego Iveco czcionkę; "txt.iveco.text2"
text: ""
name: spalanie <- wedle uznania, ja zmienię na spalanie_text
coords_l: 300 <- tutaj wystarczy, że przesuniemy w prawo całość, tak np. z 250
coords_r: 500 <- tutaj więcej, żeby się zmieścił cały tekst przesuńmy o 350
coords_t: 480 <- wysokość może być OK, więc nie ruszamy
coords_b: 300
area_l: 1
area_r: 0
area_t: 0
area_b: 1
id: 1160 <- tu zmieniamy wartość na "0" , silnik gry czyta to jako zwykły wyświetlany tekst znajdujący się w linijce "value: "l/h"
layer: 8
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367fx <- zostawiamy, bo jest przyporządkowany do dobrego "drzewka/ekranu" - PAMIĘTAMY O DOPISANIU TEGO DRZEWKA DO DRZEWKA/EKRANU!!
}

Powinno wyglądać tak:
Kod:
[code]
ui::text_common : 67fxtext {
value: "l/h"
look_template: txt.iveco.text2
text: ""
name: spalanie_text
coords_l: 550
coords_r: 850
coords_t: 480
coords_b: 300
area_l: 1
area_r: 0
area_t: 0
area_b: 1
id: 0
layer: 8
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367fx
}

Początek wygląda tak:
Kod:
SiiNunit
{
ui::window : 0245367f0 {
clip_children: true
window_handler: null
keep_aspect: none
fitting: false
my_children: 5
my_children[0]: 0245367f1
my_children[1]: 0245367f2
my_children[2]: 0245367f3
my_children[3]: 0245367f1d
my_children[4]: 0245367fx
name: ""
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 0
area_r: 1000
area_t: 999
area_b: -1
id: 0
layer: 0
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: null
}

ui::text : 0245367f1 {
text: "<img src=/material/ui/white.mat xscale=stretch yscale=stretch color=10eea15f>\r\n"
name: BackgroundUnlit
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 1
area_r: 0
area_t: 0
area_b: 1
id: 10
layer: 12
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f0
}

ui::text : 0245367f2 {
text: "<img src=/material/ui/white.mat xscale=stretch yscale=stretch color=50eea15f>\r\n"
name: BackgroundLit
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 1
area_r: 0
area_t: 0
area_b: 1
id: 20
layer: 13
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f0
}

ui::group : 0245367f3 {
fitting: false
my_children: 11
my_children[0]: 0245367fa
my_children[1]: 0245367f1e
my_children[2]: 024970fa0
my_children[3]: 024974710
my_children[4]: 024974a90
my_children[5]: 024975bd0
my_children[6]: 024977a60
my_children[7]: 024977600
my_children[8]: 024d0d2c0
my_children[9]: 024d1c450
my_children[10]: 024d25af0
name: Display0
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 0
area_r: 1000
area_t: 999
area_b: -1
id: 100
layer: 14
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f0
}

ui::group : 0245367fx {
fitting: false
my_children: 2
my_children[0]: 67fxspal
my_children[1]: 67fxtext
name: Display1
coords_l: 0
coords_r: 1000
coords_t: 999
coords_b: -1
area_l: 0
area_r: 1000
area_t: 999
area_b: -1
id: 200
layer: 14
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367f0
}

ui::text_common : 67fxspal {
value: "199|l/h"
look_template: txt.hiway.text2
text: ""
name: spalanie
coords_l: 300
coords_r: 500
coords_t: 535
coords_b: 405
area_l: 1
area_r: 0
area_t: 0
area_b: 1
id: 1160
layer: 8
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367fx
}

ui::text_common : 67fxtext {
value: "l/h"
look_template: txt.iveco.text2
text: ""
name: spalanie_text
coords_l: 550
coords_r: 850
coords_t: 480
coords_b: 300
area_l: 1
area_r: 0
area_t: 0
area_b: 1
id: 0
layer: 8
tab: -1
p2p_pml: false
tooltip: ""
pointer: -1
apparent_depth: 0
my_parent: 0245367fx
}

ui::text_com.....

W grze:
[Obrazek: nkqb.jpg]

Zatem już umiemy dość sporo. Poniżej jest spis wszystkich funkcji, które są dostępne w grze. Numery wpisujemy w drzewko w linijkę "id: XXX".


Spis funkcji:
0 - zwykły tekst
10 i 20 - podświetlenie z wył. i wł. światłami
100, 200, 300, ..., 800 - numery wyświetlanych ekranów (max. 8 ekranów)
950 - stały wyświetlacz (name: ShareDisplay) (który nie zmienia się przy przełączaniu klawiszem "I", najczęściej w tym jest przebieg, godzina, temperatura)
1000 - temperatura w powietrzu
1010 - temperatura oleju
1020 - aktualna prędkość
1030 - przebieg
1040 - bieg
1050 - godzina
1060 - ilość paliwa
1080 - dystans na jaki starczy paliwa
1090 - temperatura wody
1100 - tempomat
1160 - spalanie aktualne
1170 - średnie spalanie

Informacje typu "paski" (do drugiego drzewka dodajemy o 5 wartości więcej):
1070 - ilość paliwa
1110 - ciśnienie oleju
1120 - ciśnienie powietrza

Raczej o niczym nie zapomniałem. Wink (IPB)




Pozdrawiam.


RE: [Poradnik] Tworzenie wyświetlaczy do ciężarówek (aktualizacja 15.02.2014) - GrzesiekPL - 10-09-2017

Proszę poprawić całość postu aby to wyglądało schludnie. Dopracować podane obrazki oraz dodać aktualny link. Chwilowo temat zamykam proszę się ze mną kontaktować. Jeżeli autor do 2 tygodni się ze mną nie skontaktuje to post zostanie przeniesiony do kosza.


RE: [Poradnik] Tworzenie wyświetlaczy do ciężarówek (aktualizacja 15.02.2014) - GrzesiekPL - 17-09-2017

Brak nowego linku w wyznaczonym terminie. Przenoszę do kosza.