Mengenal Script Map Definition (DEF) ETS2 : Country Data

Definisi (DEF) ETS2 #1 : Country Data (Negara)

Diperbarui pada : Januari 2023
Alasan : Revisi

Salam! Postingan ini akan menjelaskan khusus bagian, fungsi, dan deskripsi masing-masing teks/script yang tertulis di setiap file yang berformat .sii pada folder “def”. Sekarang saatnya pengenalan!

Hal yang akan saya bahas disini ialah definisi data country (nama negara). Bagi yang ingin membuat negara baru (pun dengan nama baru atau file terpisah, seperti data negara Indonesia), perlu memperhatikan script atau definisi(def) baru ini.

File yang diperlukan dalam menambah negara baru ialah country.sii dan semua file yang terdapat pada folder “country”.

Oh iya, kalau masih belum menemukan atau bingung dimana file script yang satu ini, kalian harus meng-ekstrak file def.sii yang ada di dalam folder lokasi game ETS2 masing-masing. Silahkan baca Map Editor Tutorial ETS2 (Part2).

Oh iya, ka simbol atau syntax seperti @, #, [], {}, dll. mengingatkan kita yang sedang belajar pemrograman (seperti saya). Fungsinya kurang lebih sama. Jadi script def ini seakan-akan merupakan salah satu kode dalam suatu program. 

File country.sii

Sekarang buka file country.sii yang berada langsung dalam folder ‘def’. Boleh menggunakan Notepad, Notepad++, atau WordPad.

Bagian atas selalu diawali dengan tulisan SiiNunit sebagai teks pembuka suatu file. 

Di bawahnya tertera tulisan dalam bahasa Inggris yang selalu diawali dengan karakter # di setiap baris. Intinya hanya memberi penjelasan terkait pemberian imbuhan pada nama file .sii tersebut. Jangan pakai nama yang sama persis dengan yang sudah ada di bawaan (ori) game. 

Misal kalau ingin nambah data country tidak boleh langsung di file country.sii melainkan bikin file baru dengan nama beda (misal : country.map_jowo.sii)

Di bawahnya lagi, tertulis lengkap daftar script negara yang tersedia atau dipakai di game atau mod map/peta. Setiap daftar tersebut tertulis sebagai berikut.

@include “country/<nama_negara>.sii”

Maksudnya, setiap negara (country) yang akan dimasukan (include) akan memuat definisi lain yang tertulis pada file country/<nama_negara>.sii

Contoh : @include “country/uk.sii” 

(maknanya ada file “uk.sii” yang juga dimuat dalam folder “country”)

Lalu, apa maksud dari daftar negara lain beserta angkanya di paling bawah? Nah, ternyata sudah dijelaskan kalimat di sana yang tertulis.

“Recommended country identifiers for currently unused countries. Using those indices is not required however it improves compatibility with future DLCs or with other mods utilizing indices from this table.”

Intinya, semua itu adalah daftar Country ID (Identifiers) yang disarankan dari SCS untuk negara lain yang tidak tersedia atau dibuat di game atau peta/map DLC. Ini dipakai khusus untuk modder atau mapper yang ingin membuat negara baru, seperti Indonesia. Dengan begitu, diharapkan masing-masing mod map/peta menggunakan kode/angka Country ID yang sama sesuai yang tertulis dalam daftar tersebut.

Terus kalau untuk mod map/peta imajinasi (fantasy map) bagaimana? 

Membuat negara baru dengan nama sesuka hati, lalu country ID-nya ditulis angka berapa? 

Sebenarnya terserah mau ditulis berapa angka. Kalau terakhir angkanya tertulis sampai 202, maka selebihnya (203, 204, 300, dst.) juga boleh. Tetapi kalau kalian membuatnya pada standalone map, masalah country ID tersebut diabaikan saja.

Folder / "country" / <nama_negara>.sii /

Sekarang masuk ke folder ‘country’ itu sendiri. Di dalamnya ada berbagai folder dan file .sii (atau .sui kalau di ETS2 versi baru) yang tertulis nama negara yang ada di game. 

Jadi jika ingin buat map/peta Indonesia, maka di dalam folder country ini isinya adalah satu folder bernama ‘indonesia’ dan satu file script atau definisi berformat .sii juga dengan nama indonesia.sii atau indonesia.sui.

Misalnya saya buka file script (definisi) uk.sii.

Catatan : Dari ETS2 versi 1.33, 1.36, 1.40 keatas

Bedanya, disini tidak diawali dengan SiiNunit. Kalau ditulis ulang di bawah ini maksud script tersebut adalah sebagai berikut.

country_data: country.data.<nama_negara>
{
     country_id: <nomor_ID_negara>

     name: "@@<nama_negara>@@"
     country_code: "<kode_negara>"

     pos:(<sumbu x; 0; sumbu y>)

     fuel_price: <harga_BBM(Bensin)_dalam_angka> # dalam mata uang Euro

     lights_mandatory: <true/false> # pilih salah satu
     imperial_units: <true/false> # pilih salah satu
     leftside_traffic: <true/false> # pilih salah satu
     trailer_standalone: <true/false> # pilih salah satu
     driving_tired_offence: <true/false> # pilih salah satu

     time_zone: <angka_dalam_menit>    # <+/-angka> jam dlm satuan menit
     time_zone_name: "<kode_zona_waktu_internsional>"
}

Berikut rincian dan fungsi setiap script diatas.

  • country_data: country.data.<nama_negara> : Data script negara (country) pada suatu file .sii. ‘Nama_negara’ yang tertulis pada kalimat tersebut harus sesuai dengan judul/nama file .sii.
  • country_id: <nomor_ID> : Kode Country ID (country identifiers) untuk nama_negara yang telah ditulis, seperti yang saya jelaskan tadi di atas.
  • name: "@@<nama_negara>@@" : Nama negara yang akan dibuat.
  • country_code: "<kode_negara>" : Kode negara yang akan dibuat. (catatan : kode tersebut harus sesuai dengan kode negara Internasional resmi)
  • pos: (<sumbu x, 0, sumbu y>) : Posisi judul atau nama negara yang akan muncul/dimuat di UI Map (saat membuka Quick Job atau Freight Market). Karena bentuknya dua dimensi (bangun datar), maka yang bisa diubah hanya sumbu x dan sumbu y. Angka atau jumlah kedua sumbu ini hanya bisa dilihat pada Map Editor.
  • fuel_price: <harga_BBM> : Rata-rata harga Bahan Bakar Minyak (BBM) atau bensin untuk suatu negara. Terkadang setiap daerah dalam satu negara memiliki harga BBM yang berbeda. Karena kendaraan utama di game ini adalah truk (Truck Simulator), maka gunakan harga BBM jenis diesel (umumnya di Indonesia memakai BBM jenis Solar). Harga tersebut harus ditulis dalam mata uang Euro. Jadi kalau mata uangnya Rupiah, maka harus di-konversi dulu ke mata uang Euro.

“Nasib baik negara kita memiliki bensin/BBM harga (lumayan...) murah. Kalau dilihat dari script country disini, di Eropa harganya cukup selangit untuk satu liter. Eh….”

  • lights_mandatory: <true/false> : Menentukan apakah di negara tersebut wajib atau selalu menyalakan lampu di jalanan baik siang atau malam. Untuk negara Indonesia, lights_mandatory harus aktif (true).
  • imperial_units: <true/false> : Menentukan apakah di negara tersebut menggunakan satuan imperial (mil per jam). Untuk negara Indonesia, imperial_units harus non-aktif (false) atau bisa menghapus script tersebut (karena negara kita memakai satuan km/jam).
  • trailer_standalone:<true/false> : Menentukan apakah negara tersebut memperbolehkan / memunculkan jenis trailer standalone/terpisah (saya kurang paham, mungkin tidak terlalu penting).
  • leftside_traffic: <true/false> : Menentukan apakah di negara tersebut berlalu-lintas (traffic) lajur kiri jalan atau setir kanan. Untuk negara Indonesia tentu saja harus aktif (true).
  • driving_tired_offence: <true/false> : Menentukan apakah ada sanksi/denda akibat berkendara dalam kondisi mengantuk. (kalau salah tolong dikoreksi)
  • time_zone: <angka_dalam_menit> : Menentukan lingkup/zona waktu negara tersebut. Untuk time_zone, zona waktu GMT ditulis angka 60 (dengan satuan menit, karena 1 jam = 60 menit), waktu UTC+1 ditulis angka 120, waktu UTC+2 ditulis angka 180, dan seterusnya (kelipatan 60). Kalau Indonesia berapa? Umm... yang WIB (UTC+7) jadinya 7 x 60 = 420 menit (?)
  • time_zone_name: "<kode_zona_waktu_internsional>"Menentukan nama dari time_zone tersebut (BST, CEST, EEST, dll.). Untuk Indonesia bisa menggunakan WIB, WITA, atau WIT (kalau dalam versi bahasa Inggris saya kurang tahu xD). “Hmm… apa bisa membagi tiga zona waktu dalam satu negara? Entahlah…”

Tambahan (1)

Sejak ETS2 versi 1.32, ada tambahan script sebagai berikut:

mass_limit_per_axle_count[]: 18000      # 2-axle vehicle
mass_limit_per_axle_count[]: 44000      # 6 and more-axle vehicle

Maksudnya yang satu ini mendefinisikan batas massa GWV (gross vehicle weight) maksimum yang diizinkan (dalam kilogram) dari seluruh set (truk + trailer + kargo) dengan jumlah axle yang diberikan (total truk + trailer) di suatu negara. Bila kosong berarti nilainya tak terbatas.

Baris atau entri pertama mengatur batas massa (beban?) kendaraan dengan 2 axles/gandar, 3 axles, dll. Jika memiliki lebih dari batas massa yang ditentukan, baris atau entri terakhir yang akan digunakan.

Tambahan (2)

Sejak versi 1.33 ada perubahan script sebagai berikut:

name: "<nama_negara>"
     name_localized: "@@<kode_negara>@@"
     country_code: "<kode_negara>"

Script ini disusun demikian sejak mod diperbolehkan untuk di-lokalisasi (diterjemahkan dalam bahasa negara yang tersedia pada ETS2). Untuk kode negara tersebut masih harus sesuai dengan kode negara Internasional resmi sesuai penjelasan diatas.

Tambahan (3)

Sejak versi 1.44 ada tambahan script sebagai berikut:

     iso_country_code: "<kode_ISO_negara>"

Yang jelas menentukan kode ISO dari suatu negara, versi huruf bukan yang angka. Kurang paham kenapa ada pembedaan negara berdasarkan kode ISO. Kalau Indonesia kode ISO nya... IDN.

Masih ada lagi.

  secondary_time_zone_area[]: (<titik 1>, <titik 2>, <titik 3>, <titik 4>)
  secondary_time_zone[]: <angka> # jam dalam satuan menit
  secondary_time_zone_name[]: "@@<nama_zona_waktu>@@"

Ini diperlukan jika suatu negara punya dua zona waktu yang berbeda. Contoh di Rusia yang pasti luas dan terbagi dalam zona waktu yang beda-beda. Satu kasusnya ialah kota Kaliningrad yang lokasinya paling mencar sendiri dari wilayah utamanya, pun masuk zona waktu yang beda. Sebab itu diperlukan definisi "secondary_time_zone" berarti zona waktu sekunder/kedua.

Bentar, kalau Indonesia gimana yang punya 3 zona waktu? Pertama (primer) pasti WIB, Secondary (sekunder)... hmm... WITA (mungkin). Kalau yang WIT berarti ketiga--eh, bahasa Inggrisnya apa jadinya... tertiery atau tersier(?) Terus kalau keempat, kelima, keenam...?

Udah bang... udah.... jangan bang...

......

Sekarang masuk ke folder nama negara yang tersedia, misalnya saya buka folder ‘uk’.

Ternyata di dalam folder tersebut ada tiga file .sii lainnya, yaitu license_plate, speed_limit, dan traffic.

Folder / country / <nama_negara> / license_plate.sii /

File license_plate memuat script tentang plat nomor kendaraan beserta susunan huruf, nomor, maupun gambar. Masing-masing negara memiliki script yang berbeda. Berikut contoh yang bisa dibandingkan setiap negara.

Secara umum bentuk script tersebut adalah sebagai berikut.

license_plate_data : .lp.<jenis_kendaraan>
{
     type: <jenis_kendaraan>

     templates[]:"<susunan_def<angka>>"

     def<angka> []:"<huruf/angka/gambar>"
     def<angka> []:"<huruf/angka/gambar>"
    
     def<angka> []:"<huruf/angka/gambar>"
     def<angka> []:"<huruf/angka/gambar>"

     def<angka> []:"<huruf/angka/gambar>"
     def<angka> []:"<huruf/angka/gambar>"
}

  • license_plate_data : .lp.<jenis_kendaraan> : data jenis kendaraan yang akan dibuat pada suatu plat kendaraan. Jenis tersebut hanya meliputi car (mobil), trailer (muatan barang/kontainer), truck (truk), police (mobil polisi), dan bus (bis).
  • type: <jenis_kendaraan> : jenis kendaraan yang akan dibuat pada suatu plat kendaraan. Jenis tersebut hanya meliputi car (mobil), trailer (muatan barang/kontainer), truck (truk), police (mobil polisi), dan bus (bis).
  • templates[]:"<susunan_def<angka>>" : Bentuk atau variasi susunan kode huruf, angka, maupun gambar pada suatu plat. Setiap negara pasti memiliki kode plat kendaraan yang berbeda-beda. Susunan tersebut akan disesuaikan dengan def<angka> di bawahnya.
  • def<angka> []:"<huruf/angka/gambar>" : Kode huruf, angka, maupun gambar yang dimuat secara acak pada setiap def<angka>. Hal ini disesuaikan dengan susunan templates[]:"<susunan_def<angka>>" diatas.

Cara kerjanya gimana? Simak di bawah ini (mari kita belajar program matematika, duh...)

Dibuatkan sebuah template[] (anggap aja itu isinya slot kotak kosong yang akan diisi lagi berupa huruf dan angka). 

Misalkan ada 4 buat slot kotak dalam setiap template tadi dan diberi label atau kode menjadi : template[] : 0 1 2 3 (slot pertama kodenya 0, slot kedua kodenya 1, slot ketiga kodenya 2, slot keempat kodenya 4) 

Lantas, tiap slot diisi huruf dan angka apa saja?

  • Slot 0 inginnya berupa huruf dari A sampai Z, jadi didefinisikan dulu (buatkan kelompok) huruf A sampai Z agar hanya masuk di slot 0 (pertama). Caranya tiap baris diketik def0 [] : (huruf). Artinya pada slot (def) kode-0 dimasukkan sebuah huruf.

Contoh : 

        def0[] : A
        def0[] : B
        def0[] : C
        dst.

  • Slot 1 inginnya berupa angka satuan dari 0, 1 sampai 9, jadi didefinisikan lagi (buatkan kelompok) angka 0 - 9 itu agar hanya masuk di slot 1 (kedua). Caranya tiap baris diketik def1 [] : (angka). Artinya pada slot (def) kode-1 dimasukkan sebuah angka.

Contoh : 

        def1[] : 0
        def1[] : 1
        def1[] : 2
        dst.
  • Slot 2 inginnya berupa angka lagi satuan dari 0, 1 sampai 9, jadi didefinisikan lagi (buatkan kelompok) angka 0 - 9 itu agar hanya masuk di slot 2 (ketiga). Caranya tiap baris diketik def2 [] : (angka). Artinya pada slot (def) kode-2 dimasukkan sebuah angka. Contoh sama diatas.
  • Slot 3 inginnya berupa huruf dari A sampai Z lagi, jadi didefinisikan lagi (buatkan kelompok) huruf A sampai Z agar hanya masuk di slot 3 (keempat). Caranya tiap baris diketik def4 [] : (huruf). Artinya pada slot (def) kode-3 dimasukkan sebuah huruf. Contoh seperti yang pertama diatas tadi.
  • Dan .... seterusnya.

Folder / country / <nama_negara> / speed_limit.sii /

Berikutnya adalah speed_limit. Sesuai namanya, script ini memuat tentang data batas kecepatan rata-rata untuk setiap jenis kendaraan. Pastinya setiap negara memuat batas kecepatan yang berbeda-beda, tergantung pada kondisi infrasturktur jalan, jenis kendaraan tersebut, maupun kebijakan masing-masing negara. 

Berikut contoh file speed_limit.sii untuk negara Inggris (UK).

Secara umum bentuk script tersebut adalah sebagai berikut.

country_speed_limit : .speed_limit.<jenis_kendaraan> {

     vehicle_speed_class:    <jenis_kendaraan>

     lane_speed_class[]: local_road
     limit[]:      <angka>
     urban_limit[]:     <angka>

     lane_speed_class[]:     expressway
     limit[]:      <angka>
     urban_limit[]:     <angka>

     lane_speed_class[]:     motorway
     limit[]:      <angka>
     urban_limit[]:     <angka>
}

  • country_speed_limit : .speed_limit.<jenis_kendaraan> : batas kendaraan suatu negara untuk jenis kendaraan tertentu. Kendaraan tersebut adalah mobil (car), truk (truck), dan bis (bus).
  • vehicle_speed_class: <jenis_kendaraan> : jenis kendaraan yang akan diterapkan. Harus sama dengan jenis kendaraan yang tertulis diatasnya.
  • lane_speed_class[]: <jenis jalan> : jenis/tipe jalanan yang akan diatur batas kecepatannya. Tipe tersebut meliputi local_road (jalan biasa atau jalan kecil), expressway (jalan raya utama, lebih dikenal sebagai jalur Arteri atau jalan penghubung antar kota/kabupaten), dan motorway (jalan bebas hambatan atau jalan tol)
  • limit[]: <angka> : batas kecepatan maksimal di semua jalan secara umum.
  • urban_limit[]: <angka> : batas kecepatan maksimal di jalan perkotaan/pedesaan.

Saya kurang tahu pasti berapa batas kecepatan maksimal untuk negara Indonesia sendiri. Kalau sering lihat rambu-rambu di jalan tol. Biasanya kecepatan maksimal 100-120 km/jam. Kalau di perkotaan dominan 40 km/jam.

Kalau dilihat di speed_limit.sii pada masing-masing negara, ternyata orang-orang disana suka ngebut (dengan kecepatan tinggi). Lihat saja untuk jenis motorway (jalan bebas hambatan/tol) batas kecepatannya saja bisa 130 km/jam. Bahkan di jalan biasa (local road) rata-rata bisa 80-90 km/jam untuk mobil. Mungkin karena disana masih sepi penduduk, atau karena mulusnya jalan raya disana, atau justru mental dan nyali mereka yang kuat.

Folder / country / <nama_negara> / traffic.sii /

Terakhir adalah traffic.sii. Isinya memuat script berbagai jenis AI Traffic (Lalu-lintas kendaraan AI) yang akan muncul di jalanan. Mungkin, dalam satu negara hanya dilewati beberapa mobil yang bentuknya itu-itu saja. Pastinya jenis/merek mobil yang sering terlihat dan melintas di jalanan Indonesia tidak selalu sama dengan mobil yang kerap dilintasi di negara lain. Karena semua itu diatur dalam file ini.

Berikut contoh file traffic.sii untuk negara Inggris (UK).

Secara umum bentuk script tersebut adalah sebagai berikut.

country_traffic_info : .country.info.<jenis_kendaraan> {
     object: <jenis_kendaraan>
     spawn_frequency: <angka>
}

  • country_traffic_info : .country.info.<jenis_kendaraan> : kode informasi kendaraan AI pada suatu negara.
  • object: <jenis_kendaraan> : jenis/merek kendaraan yang akan dimunculkan dengan nama harus sama sesuai script country info diatas.
  • spawn_frequency: <angka> : frekuensi jumlah kendaraan yang akan dimunculkan di jalanan suatu negara. Untuk membuat suatu kendaraan tidak dimunculkan di jalan, tulis angka 0.00

Untuk definisi atau script ini hanya berfungsi untuk kendaraan mobil (car) dan mobil polisi (police). Untuk kendaraan lain seperti bus dan truk ada script tersendiri di folder def/vehicle.



Terkadang setiap pembaruan versi ETS2, script/definisi yang ada pun bisa berubah sewaktu-waktu. Jadi post/artikel ini akan terus diperbarui setiap waktu. 

Itu saja untuk saat ini. Masih banyak hal yang harus dipelajari pada folder def yang ada sekian banyak file .sii. Semoga ini bisa bermanfaat dan bisa menjadi panduan yang baik, sehingga dapat memperkecil error yang sering mengganggu saat membuat mod. Tunggu kelanjutannya di Pejindo Blogs!

Sekian dari saya, Wassalam!

0 Komentar:

Post a Comment