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:
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ę.
Najpierw objaśnienie najważniejszych danych:
Teraz dwa kolejnne drzewka odpowiadają za podświetlenie:
Początek już za nami. Teraz część, w której będziemy dopisywać kolejne drzewka i modyfikować pozostałe:
Może odpocznijmy od teorii narazie. Zróbmy drugi ekran w hiwayu
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:
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:
Wklejamy to pod spodem. Jak to powinno wyglądać:
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
Jak to powinno wyglądać w grze:
[Obrazek: 8h6c.jpg]
Gotowy wyświetlacz:
Mam nadzieję, że choć trochę coś z tego zrozumieliście.
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ę.
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
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:
Mam nadzieję, że choć trochę coś z tego zrozumieliście.